Ostatnio odkryłem hibernate. Pomyśleć, że próbowałem wykonać to sam (okrężną droga i w dodatku w PHP). Na szczęście już takiej pomyłki nie popełnię.
Jeszcze cos takiego dla GObject i będę szczęśliwy
Tak zwany orginalny tekst życzeń:
Wesołych Świąt i szczęśliwego Nowego Roku.
Dzisiaj chciałem załatwic sobie dostęp do gg. Kadu odpadło od razu ze powodu oparcie się o QT/KDE[1]. Przyjrzałem się także GnuGadu, ale całkowicie zniecheciła mnie 'iknonka', czy jak to się nazywa, stale umieszczona w lewym górnym rogu.
Istnieją oczywiscie transporty, ale nie udało mi sie nic tą drogą uzyskać. Jak się po 3 godzinach okazało z powodu niedoskonałości gajima.
Tutaj jest opis(nie mój), jak to zrobić
[1] Nie neguje użyteczności QT/KDE tylko o wkomponowywanie się w GTK/GNOME i szybkość uruchamiania się(jako jedyna aplikacja oparta na QT/KDE
Jedną z rzeczy brakujących mi w PHP(tutaj zresztą(niestety) podobnie jest z pythonem) jest bezpieczeństwo typów.
Jeszcze da się wytrzymać sprawdzanie przez np. is_string, ale is_array niewiele mówi. Trzeba by coś takiego zrobić:
Piszę teraz klasę do obsługi takich tablic, ale jeśli byłaby już taka napisana, to oszczędziłoby mi to wiele pisania, debugowania i wynajdywania kwadratowego koła
[1] Chodzi o sprawdzanie typów. Sam taki kod jest obszerniejszy, ale (moim zdanie) bardziej jawny :)
Trochę głupio sie przyznać, ale ostatni post nie zawiera prawdy - zapomniałem o ! ;) .
W PHP klasa nie ma plików nagłówkowych, a klasa musi być umieszczona w pliku wywołanym przez include/require.
Powoduje to trudności gdy chcę napisać klasę automatyzującą pewne czynności. Mam na przykład metodę statyczną isA($var, $type), która sprawdza czy $var jest $type lub wyrzucać odpowiedni wyjątek(w skrócie).
Testuje to za pomocą PHPUnit2. Sprawdzam czy $this jest MojaKlasaUnitCase. Okazuje się, że nie ma takiej klasy, gdyż klasa wyjątków jest require'owana przez ten plik więc jest przed definicją klasy. Z koleji gdyby to było na końcu to klasa wyjątków byłaby niezadeklarowana. Zadam prostę pytanie. Skoro python, java czy .net(mono lub dotgnu jeśli ktoś woli) jakoś to rozwiązują, a nawet C/C++ (pliki nagłówkowe), to dlaczego PHP nie może?
Miłe narzędzie do testów. Niestety ma nienajlepszą dokumentacje. Np. jaki powinien być index.php, żeby wykonywał określone testy i wyświetlał ładny wynik w HTML'u
Zapomniałem wczoraj dodać wpis.
Udało mi się zrobić diagram UML w dia
Zacząłem szukać edytora UMLpod GNOME. Znalazłem jednakże tylko MonoUML(Poza opartymi na JVM).
Binaria nie chciały się uruchomić, gdyż były złe wersje bibliotek gtk-sharp(2.6 a nie 2.4 czy cos takiego :) ), a kompilacja źródeł zakończyła się błędem.
Dla odmiany ponarzekam na PHP. Nie narzekam na jego twórców, gdyż pewnie mało kto tego uzywa w PHP, ale nie ma pewnych ułatwień składniowych choćby z... C
Mamy taki kod
($this->x = x($x))->idalbo
cos($x)[0]. Oczywiście w PHP powodują one błędy składniowe :) . W Javie (z odpowienimi modyfikacjami typu bez $ czy z .) obie przynajmniej się kompilują.
Ostatnio jak wsponiałem zajmuję się trochę php. Nie przepadam za tym językiem.
W pythonie mamy taką łatwą konstrukcję(przykład z www.python.org):
W javie mamy taki kod (kod z tej strony[1] z modyfikacjami)
Natomiast w PHP(5, bo w 4 zabezpieczenie nie jest możliwe):
W Pythonie mamy ładną konstrukcję opartą o wyjątki. W Javie mamy ostrzerzenie przed pojawiającymi się ni z tąd ni z owąd zmiennymi. A w PHP? Wystarczy, że napiszę
$instance zamiast self::$instancezgodnie z przyzwyczajeń z C++/Java ect.(do których PHP jest podobny składniowo i możnaby oczekiwać, że podobnie działa) i nieszczęście gotowe.
Swoją drogą to ciekawa rzeczy - w językach gdzie jest wielodziedziczenie(C++/Python) można wyżucic cokolwiek, a w jednobazowych(PHP/Java) tylko pochodną Exception(którą można by zastosować tutaj, ale:
var_dump staje się nieczytelne[1] Czy w Javie metoda Object.Clone nie jest domyślnie protected?
Ostatnio trochę się zajmuje PHP(inny 'projekt' niż ten w mod_pythonie
Większość rzeczy(połączenie z bazą danych, klasa/moduł odpowiedzialna za ... ect.) jest tworzona jednokrotnie, więc chyba powinna być singletonem. Z drugiej strony słyszałem, żeby nie nadużywać Singletonów, jako że są to ładniej zapakowane moduły
W niektórych miejscach korzystam z klas, gdyż 'muszę' (używam PEAR i czasami potrzebne jest przeładowanie metod czegoś), a w innych korzystać z Singletonów, klas, które są tworzone raz, czy modułów?
Udało mi się zmusić fetchmaila i procmaila do współpracy.
Jakby ktoś chciał przejrzeć:
% cat .fetchmailrc
poll ... with proto POP3
user "..." password "..." is ... here
mda "/usr/bin/procmail"
poll ... with proto POP3
user "..." password "..." ssl
is ... here mda "/usr/bin/procmail"
poll ... with proto POP3
user "..." password "..." is ... here
mda "/usr/bin/procmail"
poll ... with proto POP3
user "..." password "..." is ... here
mda "/usr/bin/procmail"
% cat .procmailrc
MAILDIR=$HOME/.maildir
LOGFILE=$HOME/.procmail/log
VERBOSE=on
:0
* To:.*boolang@googlegroups\.com\.*
$MAILDIR/.mailing\ lists.boo/
:0
* To:.*check-users@lists\.sourceforge\.net.*
$MAILDIR/.mailing\ lists.check/
:0
* To:.*gnome-db-list@gnome\.org.*
$MAILDIR/.mailing\ lists.gnome-db/
:0
* To:.*gtk-app-devel-list@gnome\.org.*
$MAILDIR/.mailing\ lists.gtk/
Wiem, że w zasadzie powinno być ^ przed To, ale były problemy z gtk-app-devel-list :) .
Pozostaje mi znaleść lekkiego klienta pod GNOME, który obsługuje takie foldery.
Balsa nie wyświetla nic, a Sylpheed-Clawstylko folder główny :)
Pozostaje mi Evolution, który jest wpaniały, ale do lekkich nie należy...
Wpis dodany raczej na utrzymanie tempa :)
Ciągle nie udało mi sie znaleść czasu na Tomcat - może w weekend?
Trzeba by coś zrobić z tematem strony...