Posted: Thu Oct 18, 2007 12:32 am

Гърми ми по следния начин: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? В докиментацията му (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
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 и какво ли не още!
За кво ти е па тваMoridin wrote:Издирвам си Ефектив Ц++, third edition обаче. На някой да му се намира?
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.
bash: kill -9 self
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?