Кът на програмиста...
Moderator: Moridin
- The Dragon
- Elder God
- Posts: 9062
- Joined: Wed Jan 14, 2004 9:03 pm
Някой пробвал ли е да наследява DBI?
Гърми ми по следния начин:package Test::TMYDBI;
our @ISA = qw(DBI);
use base 'DBI';
И си ползва дедото като се опитвам да правя нещо...DBI subclasses 'Test::TMYDBI::db' and ::st are not setup, RootClass ignored at scripts/ttestdbi.pl line 9
I like rusty spoons....
I like to touch them...
It's almost orgasmic...
I like to touch them...
It's almost orgasmic...
- Roamer
- Ascendent
- Posts: 4895
- Joined: Wed Jan 03, 2007 5:25 pm
- Location: Hier ist hier und jetzt ist jetzt doch jetzt ist jetzt schon nicht mehr da...
- Contact:
Всъщност това с Microsoft и пускането на сорса на парчета от .NET Framework изглежда добре, макар че не е твърде ново, а и поне засега не е ясно точно какво значи.
Не е твърде ново, защото те направиха същото още с първата версия на .NET Framework - сорсовете на нещо, наречено "Rotor", бяха пуснати за Windows и за FreeBSD под Microsoft Shared-Source License; тогава все още имаха само едно Shared-Source License, сега са малко повече. Основният проблем тогава беше именно с условията на лицензиране - тогавашната версия на Shared-Source License беше формулирана много забавно, де факто казваше "виж к'во, ето ти го, гледай го, ако ще пипаш, пипаш само за вътрешна употреба, ама ако те хванем, че ползваш някакви парчета код от това в твои програми, ще ни плащаш лицензни такси". Това доведе до изключително забавна ситуация - хората направиха FreeBSD пакет (добре де, port, но разликата е само за хората, които се занимават с FreeBSD
) на това нещо, само че... само че то се компилираше само на FreeBSD 4.x, на 5.x не щеше заради елементарна грешка, и никой не смееше да я оправи! Компилаторът казваше каква е грешката, на всеки, който разбира поне малко от C, му беше ясно как *трябва* да бъде поправена, само че на всички ни беше ясно, че ха сме пипнали да я поправим, ха сме оставили ясни доказателства, че сме гледали сорсовете - и после ходи доказвай, че не си крал оттам
Така че FreeBSD port-ът на Rotor бавно и тихичко си умря, защото Microsoft така и не пуснаха оправена версия, никой от разработчиците на FreeBSD не смееше да оправи тази, а междувременно се появиха други хубави нещица като Mono и dotGNU, които общо-взето работеха (сега вече на практика съвсем работят).
Та така. Разликата между Rotor и сегашното им изпълнение е основно в лицензната политика. Сега казват, че ще го пуснат под Microsoft Reference License (MS-RL), което изглежда малко по-различно - най-малкото изрично пише "read-only" - само четеш, дори за вътрешни нужди не можеш да го променяш, а да взимаш оттам неща и да ги слагаш в твои продукти пък хептен. Това е интересно - и още не е ясно точно как ще протекат нещата - не е ясно дали Microsoft ще се опитат да преследват някого за това, че е чел сорсовете им, или просто ще държат това като дамоклев меч - да е ясно, че теоретично биха могли да го ползват, ама нали са добрички, няма
Забавният момент в случая е, че Microsoft дадоха Microsoft Reference License и другото, Microsoft Public License, за одобрение от OSI (The Open Source Initiative, хората, които държат copyright върху термина "open source") - и получиха одобрението. OSI каза, че тези две лицензни споразумения отговарят на условията за "open source" - http://opensource.org/node/207 - пък нататък ще видим.
Все пак... нали е ясно, че между open-source софтуер, софтуер с отворен код и свободен софтуер има разлика?
И мжу другото, за паралел със Sun все още е рано - повечето от нещата, които Sun пускат, са под условията на CDDL - Common Development and Distribution License - още в името на което я има основната огромна разлика с MS-RL - думичката "distribution". За повечето от нещата, които Sun пускат, хората имат право да променят и дори да разпространяват промените си; ако Microsoft наистина пуснат .NET Framework под MS-RL, за промени и дума не може да става, па камо ли за разпространение на промените 
Но... поживем-увидим... може пък наистина в Microsoft да са се появили младоци с големи идеи, които дори да успеят да ги прокарат полека-лека. Това все пак е стъпка в правилната посока.
Добавено: грррр, побъркал съм се напоследък нещо! Бях разшифровал OSI като Open Systems Initiative... побъркал съм се с тоя POSIX и SUS и какво ли не още!
Не е твърде ново, защото те направиха същото още с първата версия на .NET Framework - сорсовете на нещо, наречено "Rotor", бяха пуснати за Windows и за FreeBSD под Microsoft Shared-Source License; тогава все още имаха само едно Shared-Source License, сега са малко повече. Основният проблем тогава беше именно с условията на лицензиране - тогавашната версия на Shared-Source License беше формулирана много забавно, де факто казваше "виж к'во, ето ти го, гледай го, ако ще пипаш, пипаш само за вътрешна употреба, ама ако те хванем, че ползваш някакви парчета код от това в твои програми, ще ни плащаш лицензни такси". Това доведе до изключително забавна ситуация - хората направиха FreeBSD пакет (добре де, port, но разликата е само за хората, които се занимават с FreeBSD


Та така. Разликата между Rotor и сегашното им изпълнение е основно в лицензната политика. Сега казват, че ще го пуснат под Microsoft Reference License (MS-RL), което изглежда малко по-различно - най-малкото изрично пише "read-only" - само четеш, дори за вътрешни нужди не можеш да го променяш, а да взимаш оттам неща и да ги слагаш в твои продукти пък хептен. Това е интересно - и още не е ясно точно как ще протекат нещата - не е ясно дали Microsoft ще се опитат да преследват някого за това, че е чел сорсовете им, или просто ще държат това като дамоклев меч - да е ясно, че теоретично биха могли да го ползват, ама нали са добрички, няма

Забавният момент в случая е, че Microsoft дадоха Microsoft Reference License и другото, Microsoft Public License, за одобрение от OSI (The Open Source Initiative, хората, които държат copyright върху термина "open source") - и получиха одобрението. OSI каза, че тези две лицензни споразумения отговарят на условията за "open source" - http://opensource.org/node/207 - пък нататък ще видим.
Все пак... нали е ясно, че между open-source софтуер, софтуер с отворен код и свободен софтуер има разлика?


Но... поживем-увидим... може пък наистина в Microsoft да са се появили младоци с големи идеи, които дори да успеят да ги прокарат полека-лека. Това все пак е стъпка в правилната посока.
Добавено: грррр, побъркал съм се напоследък нещо! Бях разшифровал OSI като Open Systems Initiative... побъркал съм се с тоя POSIX и SUS и какво ли не още!
Eric: I use my sword to detect good on it.
Ed: It's not good, Eric. It's a gazebo.
Ed: It's not good, Eric. It's a gazebo.
- Roamer
- Ascendent
- Posts: 4895
- Joined: Wed Jan 03, 2007 5:25 pm
- Location: Hier ist hier und jetzt ist jetzt doch jetzt ist jetzt schon nicht mehr da...
- Contact:
Хммм, а сигурен ли си, че трябва да наследяваш самото DBI? В докиментацията му (perldoc DBI) си има една секцийка "Subclassing the DBI", в която се споменават подкласове *::db и *::st - и в кода на форума, който Георги Пенков беше написал навремето за курса по Perl (http://perl.phreedom.org/, ама самият форум в момента малко се е поошашкал) той си прави едно класче DBI::QueryCache, което се обявява за наследник именно на DBI::db и дефинира connect() и други подобни именно защото наследява DBI::db.Corwin wrote:Някой пробвал ли е да наследява DBI?Гърми ми по следния начин:package Test::TMYDBI;
our @ISA = qw(DBI);
use base 'DBI';И си ползва дедото като се опитвам да правя нещо...DBI subclasses 'Test::TMYDBI::db' and ::st are not setup, RootClass ignored at scripts/ttestdbi.pl line 9
Ако искаш, може да ти дам сорса специално на DBI::QueryCache, макар че то е съвсем мъничко и простичко и нищо не прави, ама общо-взето работи; а може и да погледнеш сорсовете на разни други DBI::* и DBD::* модули, да видиш там как става


Eric: I use my sword to detect good on it.
Ed: It's not good, Eric. It's a gazebo.
Ed: It's not good, Eric. It's a gazebo.
- The Dragon
- Elder God
- Posts: 9062
- Joined: Wed Jan 14, 2004 9:03 pm
Roamer wrote:Всъщност това с Microsoft и пускането на сорса на парчета от .NET Framework изглежда добре, макар че не е твърде ново, а и поне засега не е ясно точно какво значи.
Не е твърде ново, защото те направиха същото още с първата версия на .NET Framework - сорсовете на нещо, наречено "Rotor", бяха пуснати за Windows и за FreeBSD под Microsoft Shared-Source License; тогава все още имаха само едно Shared-Source License, сега са малко повече. Основният проблем тогава беше именно с условията на лицензиране - тогавашната версия на Shared-Source License беше формулирана много забавно, де факто казваше "виж к'во, ето ти го, гледай го, ако ще пипаш, пипаш само за вътрешна употреба, ама ако те хванем, че ползваш някакви парчета код от това в твои програми, ще ни плащаш лицензни такси". Това доведе до изключително забавна ситуация - хората направиха FreeBSD пакет (добре де, port, но разликата е само за хората, които се занимават с FreeBSD) на това нещо, само че... само че то се компилираше само на FreeBSD 4.x, на 5.x не щеше заради елементарна грешка, и никой не смееше да я оправи! Компилаторът казваше каква е грешката, на всеки, който разбира поне малко от C, му беше ясно как *трябва* да бъде поправена, само че на всички ни беше ясно, че ха сме пипнали да я поправим, ха сме оставили ясни доказателства, че сме гледали сорсовете - и после ходи доказвай, че не си крал оттам
Така че FreeBSD port-ът на Rotor бавно и тихичко си умря, защото Microsoft така и не пуснаха оправена версия, никой от разработчиците на FreeBSD не смееше да оправи тази, а междувременно се появиха други хубави нещица като Mono и dotGNU, които общо-взето работеха (сега вече на практика съвсем работят).
Та така. Разликата между Rotor и сегашното им изпълнение е основно в лицензната политика. Сега казват, че ще го пуснат под Microsoft Reference License (MS-RL), което изглежда малко по-различно - най-малкото изрично пише "read-only" - само четеш, дори за вътрешни нужди не можеш да го променяш, а да взимаш оттам неща и да ги слагаш в твои продукти пък хептен. Това е интересно - и още не е ясно точно как ще протекат нещата - не е ясно дали Microsoft ще се опитат да преследват някого за това, че е чел сорсовете им, или просто ще държат това като дамоклев меч - да е ясно, че теоретично биха могли да го ползват, ама нали са добрички, няма
Забавният момент в случая е, че Microsoft дадоха Microsoft Reference License и другото, Microsoft Public License, за одобрение от OSI (The Open Source Initiative, хората, които държат copyright върху термина "open source") - и получиха одобрението. OSI каза, че тези две лицензни споразумения отговарят на условията за "open source" - http://opensource.org/node/207 - пък нататък ще видим.
Все пак... нали е ясно, че между open-source софтуер, софтуер с отворен код и свободен софтуер има разлика?И мжу другото, за паралел със Sun все още е рано - повечето от нещата, които Sun пускат, са под условията на CDDL - Common Development and Distribution License - още в името на което я има основната огромна разлика с MS-RL - думичката "distribution". За повечето от нещата, които Sun пускат, хората имат право да променят и дори да разпространяват промените си; ако Microsoft наистина пуснат .NET Framework под MS-RL, за промени и дума не може да става, па камо ли за разпространение на промените
Но... поживем-увидим... може пък наистина в Microsoft да са се появили младоци с големи идеи, които дори да успеят да ги прокарат полека-лека. Това все пак е стъпка в правилната посока.
Добавено: грррр, побъркал съм се напоследък нещо! Бях разшифровал OSI като Open Systems Initiative... побъркал съм се с тоя POSIX и SUS и какво ли не още!
Сегаааа - тука става малко сложно. Всякакъв лиценз който позволява промени в системните библиотеки на .NET носи значително повече вреда отколкото полза - и за крайните клиени и за майкрософт. За разлика от Java .NET е доста по-дълбоко закопан в регистри-то и API-тата. Съответно някакъв твой custom runtime макар и бъгфикснат би могъл да се оплете злобно с други програми. От друга страна програмистите които биха желали да бъркат много надълбоко там не са много - а те благодарение на Emit i Reflect така или иначе знаят какво има там. От друга страна кода е най-ценен като reference - да видиш как е направено и да можеш да направиш workaround или просто да си tune-неш код-а. Овен това така или иначе отварянето на кода е огромен бъмп за mono/dotGNU - и двете имат много трески за дялане и ще помогне да бъде полиран behavior-a на класовете за да емулира напълно този на .NET.
А принципно за вътрешна употреба дали краднеш код оттам и как го ползваш си е непроследимо.
А естествено следствие на патентните споразумение между Microsoft i Novell е че догодина нищо чудно за си имаме .NET за Сусе доставен от Майкрософт.
The sinking of the Titanic was a miracle to the lobsters in the ship's kitchen.
- The Dragon
- Elder God
- Posts: 9062
- Joined: Wed Jan 14, 2004 9:03 pm
RTFM you stupid bastard!Roamer wrote:Хммм, а сигурен ли си, че трябва да наследяваш самото DBI? В докиментацията му (perldoc DBI) си има една секцийка "Subclassing the DBI", в която се споменават подкласове *::db и *::st - и в кода на форума, който Георги Пенков беше написал навремето за курса по Perl (http://perl.phreedom.org/, ама самият форум в момента малко се е поошашкал) той си прави едно класче DBI::QueryCache, което се обявява за наследник именно на DBI::db и дефинира connect() и други подобни именно защото наследява DBI::db.Corwin wrote:Някой пробвал ли е да наследява DBI?Гърми ми по следния начин:package Test::TMYDBI;
our @ISA = qw(DBI);
use base 'DBI';И си ползва дедото като се опитвам да правя нещо...DBI subclasses 'Test::TMYDBI::db' and ::st are not setup, RootClass ignored at scripts/ttestdbi.pl line 9
Ако искаш, може да ти дам сорса специално на DBI::QueryCache, макар че то е съвсем мъничко и простичко и нищо не прави, ама общо-взето работи; а може и да погледнеш сорсовете на разни други DBI::* и DBD::* модули, да видиш там как става(точно в момента нямам такива жувотни подръка, а и ще ходя да ям, та после
)
10x.By default $dbh = DBI->connect(...) returns a $dbh blessed into the DBI::db class. And the $dbh->prepare method returns an $sth blessed into the DBI::st class (actually it simply changes the last four characters of the calling handle class to be ::st).
The leading 'DBI' is known as the 'root class' and the extra '::db' or '::st' are the 'handle type suffixes'. If you want to subclass the DBI you'll need to put your overriding methods into the appropriate classes. For example, if you want to use a root class of MySubDBI and override the do(), prepare() and execute() methods, then your do() and prepare() methods should be in the MySubDBI::db class and the execute() method should be in the MySubDBI::st class.

I like rusty spoons....
I like to touch them...
It's almost orgasmic...
I like to touch them...
It's almost orgasmic...
Една дискусия на програмни езици... Струва си да се прочетат и коментарите
http://davidrupp.blogspot.com/2007/10/l ... lling.html

http://davidrupp.blogspot.com/2007/10/l ... lling.html
Elves dig rocket launchers.
- Daggerstab
- Arcanist
- Posts: 860
- Joined: Wed Feb 04, 2004 6:31 pm
- Contact:
коментарите

Just like politics! The most promising candidate (Python) is left out.
Python: "Yeah, definitely spaces. Four spaces, yeah. No tabs. Tabs are good. One tab or two tabs. Yeah."
Java: Python, what are you talking about, come over here.
Python: NO! I can't move from this column. Yeah, have to stay in this column. Can't move, compiler says I have to stay in this column.
Perl: Mrghh(!*$)hg498;++[[x(][][
Everyone: Whoa man, watch the language, Perl.
Perl: $s!\*(%10}[[]]
Ruby: Yeah, I get what you're saying now!
Everyone: Wha?
Scalpel. Sponge. Magic Wand!
Задава се втори Уеб 2.0 БарКамп в София
- Spoiler: show
„Ние можещите, водени от незнаещите, вършим невъзможното за кефа на неблагодарните. И сме направили толкова много, с толкова малко, за толкова кратко време, че можем да правим всичко от нищо. ... За мен най-лошото в България е чудесното наслаждение, което тук имат хората да се преследват един друг и да развалят един другиму работата.”
Who is online
Users browsing this forum: No registered users and 1 guest