Zend Framework 1.6
Ot i mamy, jest świeży ZF w wersji 1.6 do pobrania. Dodano kilkanaście nowych składników. Z ciekawszych nowości to integracja z framework'iem Dojo Toolkit co zapewne ułatwi tworzenie aplikacji opartych w większym stopniu na JavaScript. Poza tym wbudowana biblioteka do paginacji stron, ReCaptchy, Captcha i kilka innych nowości. Jak donosi rozwiązano 287 zgłoszeń co tylko framework'owi wyjdzie na dobre. Teraz tylko zrobić upgrade własnych projektów.
Netbeans, JSP, JPA, postgresql
Huh jakby się ktoś mordował tak jak ja z dostępem do bazy przez jakiegoś front controllera. Realizuje sobie tutorial Using Java Persistence API Within a Visual Web Application, wszystko pięknie ładnie. Front controller sam z siebie działa, ma dostęp do bazy. Natomiast uruchomiony webapp na GlassFish nie, szperałem po sieci i nic nie wyszperałem, na konsoli GlassFish wyświetlił się radosna informacja
Local Exception Stack: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0 (Build b58g-fcs (09/07/2007))): oracle.toplink.essentials.exceptions.DatabaseException Internal Exception: java.sql.SQLException: No suitable driver found for jdbc:postgresql://ldap.krajniak.test/lastvideo Error Code: 0 (...)rozwiązanie w istocie jest banalne, do classpath glassfisha trzeba dodać ścieżkę do drivera postgresql. Logujemy się więc do konsoli GlassFisha (prawy na GlassFish w zakładce Services w NetBeansach), potem Application Server zakładka JVM Service -> JVM Settings -> Path Settings, wpisujemy w pole classpath ścieżkę do pliku .jar. Restart serwera, tutorial śmiga i można dalej robić projekt na bazy ;]
Baza do utf8 w mysql
Paskudny problem, mamy dane w bazie, teoretycznie zakodowane w latin1, chociaż cholera wie co tam leży właściwie. iconv z dumpem bazy sobie kompletnie nie radzi. Wygląda, że dane jakie zrzuca mysqldump mają już coś nie tak z kodowaniem. Na szczęście ktoś już to opanował, oto działający sposób:
- mysqldump --user=username --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql
- sed -i "s/latin1/utf8/g;" dump.sql
- mysql --user=username --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;"
- mysql --user=username --password=password --default-character-set=utf8 dbname < dump.sql
Tak w ogóle to było mi to potrzebne przy uaktualnianiu mantisbt do wersji 1.1.0rc2
java #0 i taki OT....
Pierwsza rzecz, która zaczęła mi się podobać. Muszę obsłużyć wszystkie wyjątki z danej klasy. Klasy standardowe generują wyjątki i się ich nie boją. Może to jest na początku uciążliwe, ale wygląda, że poprawia jakość tworzonego kodu i zwiększa szybkość debuggingu.
W porównaniu do takiego C++, czy też paskudnego PHP jest o wiele przyjemniej. Po tych kilku miesiącach grzebania w PHP mam dość, nastąpi taki moment że powiem nigdy więcej tego nie dotknę, niech się bawią tym tabuny innych programistów. Jam programistą nie jestem ;)
Zrobił mi się z tego taki OT, ale tak jeszcze ze spostrzeżeń. Na fizyce uczą nas posługiwać się pakietem LabView. I ile można byłoby mówić, z perspektywy informatyka, że to jest idiotyczne, że rysowanie programów etc. Tylko patrząc z perspektywy fizyka, który potrzebuje komputera jako wspomagacza umysłu a nie jako zabawki samej w sobie. My często o tym zapominam, że komputer to nic innego jak wspomagacz umysłu. Fizyk ma przeprowadzić eksperyment, ma o tym myśleć a nie zastanawiać się dlaczego mu się program sypie i wypisuje Memory fault. Teraz stwierdzam, że krytykowanie ludzi, którzy chcą sobie narysować program jest pozbawione racjonalnego sensu. Ważne jest, co dzięki temu kawałkowi softu uda się osiągnąć w innych dziedzinach.
Zakładki w dotProject
Zapamiętać. Zakładki w widokach modułów dla dotProject robi się bardzo prosto. Jeśli moduł foobar1 ma dostarczyć zakładki do modułu foobar2, to w katalogu modułu foobar1 tworzymy plik foobar2_tab.nazwa.php gdzie nazwa to tekst wyświetlany na zakładce. Prawda, że banalne. Ciekawskich odsyłam do classes/ui.class.php:1043 i index.php:285.
Jak ja to lubię...
Siedziałem dzisiaj i medytowałem na kawałkiem kodu, który zachowywał się czasami dość dziwnie. Po czym doszedłem do tego, że w PHP takie coś jest jak najbardziej poprawne, nie sypie żadnym runtime errorem:
$p = array('a'=>'ewa','b'=>'celina','c'=>'kozica');
foreach($p as $k)
echo $k['nieistniejacy'];
To działa, wypisuje eck. Bardzo lubię php, myślałem że szlag mnie trafi, wyjdę z siebie i stanę obok.
#n
CSS nic nie zmienił, teraz wszystko jest position:absolute; taki wniosek po dzisiejszym dniu. Semantyczność to bzdura, a najważniejsze żeby to wyglądało, mimo że w środku zupa htmlowego gówna.
Z bitów do czegoś normalniejszego
W celach zachowawczych, co by w późniejszym czasie nie szukać. Prosty kawałek kodu, ma za zadanie zwracać typ int z ciągu znaków reprezentujących zapis binarny. Niby nic wielkiego, a ostatnimi czasy podczas pisania kompresora takie cuś było potrzebne.
def conv(s):
ret = 0x0
for i in s:
if i == '1':
ret = (ret << 1) | 1
else:
ret = (ret << 1) | 0
return ret
MWPZ
MWPZ można uznać za zakończone. Były śmieszne zawody z równie zabawnymi zadania. Nawet kilka udało się w niebywałych okolicznościach zrobić. Dziwne rzeczy się działy z naszym kodem i naszymi umysłami, ale jakoś jakoś "sprawdzarka" powoli przyjmowała rozwiązania. Jedyna okazja w roku, żeby się helu napić, choć po wypiciu całego balonu dziwnie się czułem. Czy już wspominałem, że świetną zabawą są takie zawody... :D a no i gdb z konieczności opanowałem w stopniu podstawowym.
Co prawda to prawda, Michał słusznie napisał. Klawiatura z jaką dzisiaj obcowałem była straszna, ten delete i brak insert to jedno wielkie nieporozumienie. Okazało się, że można było mieć swoją klawiaturę, jakoś reszta team mi tego nie przekazała, a mi się wczoraj nie chciało być na próbnych zawodach.
Drukarki zaczęła działać 2h przed końcem zawodów, hm takie spojrzenie na wydrukowany kod czasami pomaga... czasami [;
Kostka Rubika przydaje się do urządzenia mistrzostw rzucania tym co po niej pozostało. Stoi sobie taka banda algorytmiarzy przed ścianą i próbuje rzucić kawałkiem kostki tak żeby kawałek znalazł się jak najbliżej ściany ale jej nie dotknął/odbił się o nią. Wygrywa oczywiście partie ten kto ma takie element najbliżej. Nie chwaląc się zostałem pierwszym i jak na razie jedynym mistrzem tej dyscypliny :D Zadanie z kostką Rubika pozostawię bez komentarza [;
Teraz można czekać na następne, z nową porcją helu (;
wyjde z siebie i stane obok [marudze]
Noż po prostu nie wyrabiam, przekopany internet, zastosowane pomysły i nic. Cały czas wydajność rysowania tego cholernego świata jest tak wolna, że zdążę pójść zrobić sobie kawę i przyjść. Wszystko było dobrze do czasu, aż świat nie postanowił być bardziej realny i mniej jednorodny. 64 elementowy zbiór stanów świata plus obserwator lokalny wykończył cały program. Krowa paskudna. Przestaje lubić c#. Jak rysowanie całej bitmapy za jednym zamachem nie pomoże to będzie źle...