Programowanie (PHP, Java...) »

[29 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

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

Osobiste, szkoła etc. »

[24 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

Tak zwany orginalny tekst życzeń:

Wesołych Świąt i szczęśliwego Nowego Roku.

GUI (Gnome, KDE, Gtk...), Jogger i Jabber »

[21 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

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

Programowanie (PHP, Java...) »

[13 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

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ć:

  1. class A {
  2.         function B($x) {
  3.                 foreach($x as $y) {
  4.                         if($y instanceof A) {
  5.                                 throw new SomeException();
  6.                         }
  7.                 }
  8.                 return 1;
  9.         }
  10. }
Dla przykładu w Javie:
  1. class A {
  2.         public int B(A[] x) {
  3.                 return 1;
  4.         }
  5. }
W C++ jest podobnie, w C(chodzi o GObject z -Wall -Werror :) ) raczej nie zajmie nam to tyle miejsca[1](a nawet jeśli to jest to znacznie czytleniejsze)

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 :)

Programowanie (PHP, Java...) »

[12 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

Trochę głupio sie przyznać, ale ostatni post nie zawiera prawdy - zapomniałem o ! ;) .

Programowanie (PHP, Java...) »

[11 grudnia, 2005 | 4 komentarze | Poziom: 0 ]

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?

Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...) »

[10 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

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

  1. <?php
  2. include_once('StdHeader.php');
  3.  
  4. $suite = new PHPUnit2_Framework_TestSuite();
  5. $result = new PHPUnit2_Framework_TestResult();
  6. $result->addListener(new PHPUnit2_Util_TestDox_ResultPrinter_HTML());
  7. $suite->addTest(new SomeTestCase());
  8. $suite->run($result);
  9.  
  10. ?>
Nie do końca działa...

GUI (Gnome, KDE, Gtk...), Programowanie (IDE, UML, Wzorce...) »

[09 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

Zapomniałem wczoraj dodać wpis.

Udało mi się zrobić diagram UML w dia

GUI (Gnome, KDE, Gtk...), Programowanie (IDE, UML, Wzorce...) »

[07 grudnia, 2005 | 8 komentarzy | Poziom: 0 ]

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.

Programowanie (PHP, Java...) »

[06 grudnia, 2005 | 3 komentarze | Poziom: 0 ]

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))->id
albo
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ą.

Programowanie (PHP, Java...) »

[05 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

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):

  1. class singleton:
  2.     __single = None
  3.     def __init__(self):
  4.         if Singleton.__single:
  5.             raise Singleton.__single
  6.         Singleton.__single = self
  7. try:
  8.     x = new Singleton
  9. except Singleton, s:
  10.     x = s

W javie mamy taki kod (kod z tej strony[1] z modyfikacjami)

  1. public class Singleton {
  2.         private static Singleton instance = NULL;
  3.         private Singleton() {}
  4.         public static Singleton getInstance() {
  5.                 if(instance == NULL)
  6.                         instance = new Singleton();
  7.                 return instance;
  8.         }
  9.         static void Main(String[] args) {
  10.                 Singleton s = Singleton.getInstance();
  11.         }
  12. }

Natomiast w PHP(5, bo w 4 zabezpieczenie nie jest możliwe):

  1. class Singleton {
  2.         private $instance;
  3.         private __construct() {}
  4.         private __clone() {}
  5.         public getInstance() {
  6.                 if(!isset(self::$instance))
  7.                         self::$instance = new Singleton();
  8.                 return self::$instance;
  9.         }
  10. }

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::$instance
zgodnie 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:

  1. Singleton nie jest wyjątkiem
  2. var_dump staje się nieczytelne

[1] Czy w Javie metoda Object.Clone nie jest domyślnie protected?

Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...) »

[04 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

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?

Technologie W3C (XHTML, CSS...) »

[03 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

Jest strona o programowaniu Typo (to 'o' czy '0'?).

Kłopot w tym, że nagłówki się dziwnie wyświetlają. Niektóre.

Uruchomiłem Firefoxa,ale nie poprawiło to sytłacji:

O co chodzi?

Poczta (POP3, IMAP, SMTP...) »

[02 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

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...

Programowanie (PHP, Java...) »

[01 grudnia, 2005 | Dodaj komentarz | Poziom: 0 ]

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...