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 ;]
Konfiguracja Postgresql
Huh udało się, zapisuje ku potomności, taka pierdółka a zajęła kilka godzin grzebania w sieci i plikach konfiguracyjnych. Ad rem, co chce osiągnąć
- postgres z użytkownikiem teodor, hasłem haslo
- dostęp do serwera z zewnętrznego hosta po tcp
Sprawa jest banalnie prosta, tylko trzeba wszystko skonfigurować właściwie. Instalujemy odpowiednie pakiety
apt-get install postgresql-8.1 postgresql-client-8.1następnie edytujemy plik /etc/postgresql/8.1/main/postgresql.conf w moim przypadku chciałem, żeby postgres był dostępny z zewnątrz pod adresem ip 192.168.20.100
listen_address = 'localhost,192.168.20.100'port domyślnie ustawiony jest na 5433, zmieniamy na 5432
port = 5432wsio wszystko w tym pliku, teraz umożliwimy dostęp do serwera z hostów w podsieci 192.168.20.0/24 w tym celu edytujemy plik /etc/postgresql/8.1/main/pg_hba.conf dodajmy takową linie
host all all 192.168.20.0/24 md5
- ostatnia kolumna sprawia, że wymagamy podczas połączenie podania hasła. wpisanie trust spowoduje uwierzytelnienie bez hasła
- w drugiej kolumnie podajemy listę baz które będą dostępne, podanie all daję dostęp do wszystkich baz
- w trzeciej kolumnie podajmy listę użytkowników (oddzielone przecinkiem), grupy użytkowników, możemy również podać plik w którym będą się takowe rzeczy znajdować @nazwa_pliku
Mamy wszystko prócz użytkowników. Logujemy się na konto administratora
su -c - 'psql template'tworzymy użytkownika teodor z hasłem haslo który będzie mógł tworzyć bazy
create user teodor with encrypted password 'haslo' createdb;
Dodatek, jeśli chce się móc korzystać w triggerach z języka plpgsql musimy odpowiednio skonfigurować bazę
createlang plpgsql -h HOST -d BAZA
Brak personalizacji, dokąd to zmierza
Kiedy dzisiaj rano, po raz kolejny w moim komunikatorze ustawiałem opis, że mnie nie ma, jestem na uczelni w głowie zapaliła się czerwona lampka. Zaraz zaraz, robie to codziennie o różnych godzinach, zależnie od planu i dnia tygodnia. Dlaczego ja mam ciągle wybierać ten sam opis, status. Czy program nie mógłby mi zaproponować czegoś, tak żebym tylko musiał potwierdzić zapewne słuszny wybór.
Prosta statystyka załatwiłaby sprawę. Tymczasem personalizacja programów jest żenująco niska. Dlaczego program do odtwarzania muzyki nie obserwuje moich zachować, nie rejestruje jakich utworów (o jakich genre) słucham w danych godzinach, przy danym ciśnieniu atmosferycznym i nasłonecznieniu (jestem po trosze meteopatą). Mógłby mi przecież proponować utwory, bazując na tych obserwacjach. Dlaczego ja muszę myśleć nad wyborem statusu, nad wyborem utworów etc... idąc dalej.
Działamy nad wyraz schematycznie, wstajemy zazwyczaj każdego dnia o tej samej godzinie, dlaczego komputer nie czeka już na mnie włączony z programami jakie uruchamiam danego dnia zazwyczaj rano, a potem posłusznie nie proponuje wyłączenia o godzinie, o której jest zazwyczaj wyłączany. Mógłby przecież nawet przewidywać, że danego dnia zasypiam o tej godzinie i wyłączać się sam jeśli jest idle przez jakiś czas po tej godzinie.
Proste sprawy, ale my kurcze wolimy optymalizować kod na poziomie prototypów, pisać programy do zarządzania firmami a nie ułatwiać życia zwykłym śmiertelnikom..... bo się nie opłaca.
Myślę, że to jest jeden z kierunków w jakim powinno podążać oprogramowanie. Powinno ono obserwować użytkownika, rejestrować zachowania, analizować i podpowiadać najbardziej prawdopodobne działania.
Thermal zone w HP 6710s
Tak się zastanawiałem co to są za thermal zone w tym moim lapsusie. Aż 5 ich tu siedzi zupełnie nieopisanych. W końcu je rozpoznałem, także jakby ktoś nie wiedział to oto rozpiska
- T0 speed wiatraka, dziwna sprawa ale to siedzi w thermal zone
- T1 temperatura dysku
- T3 temperatura w środku lapsusa, moze na chipsecie czy gdzieś jest czujka
- T4 i T5 temperatura na rdzeniach
Mądrości około śniadaniowe
(źródło)
Tymczasem u mnie na uczelni MASM ma się całkiem dobrze.
Trudnawo się mówi, suma summarum i tak assembler. Zacząłem na niego właśnie patrzeć, z czysto uczelnianych powodów. I wcale mnie do niego nie ciągnie, nic a nic.
uprzedzając zarzut, wcale nie chce go zbojkotować ;)
Thunderbird i gmail via IMAP, problem z załącznikami
Od jakiegoś czasu zacząłem używać Thunderbirda do IMAPowskiej skrzynki gmaila. Wszystko całkiem ładnie się sprawowało do momentu kiedy chciałem pobrać załącznik. Najczęściej dostawałem uszkodzone pliki, dotyczyło to głównie formatów .doc, .odt, co ciekawe .jpg/png działały poprawnie.
Wrzutka pamięci
Kostka 1gb pamięci zawitała na pokład mojego lapsusa. Niech służy dzielnie
Swoją drogą, nie tak dawno kupowałem 512mb do komputera co by mieć 1gb. Teraz kupowałem lapsusa już z 1gb. Odstęp czasowy jakiś 5mc. Zmiany zmiany, teraz mi brakuje matrycy z większą rozdzielczością. Nie mogę uruchamiać swobodnie na wirtualkach środowiska graficznego w rozdzielczości >800x600 co mi trochę utrudnia życie. W sumie pamięć też przez fakt uruchamiania kilku wirutalek została zakupiona.
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.
Skąd oni to wiedzą
Wszedłem sobie jakiś czas temu na gmaila, moim oczom ukazał się dość dziwnie wyglądający komunikat:
Gmail poinformował mnie, że mam włączonego Firebuga i że może to spowodować spowolnienie działania aplikacji.
Pytanie jest, skąd aplikacja webowa wie o tym, że mam rozszerzenie firebug i w dodatku jest ono aktywne. Od razu pojawiło się podejrzenie, że Google nas inwigiluje. Nie jest to wykluczone, trudno zaudytowane cały kod Firefoxa. Natomiast zaciekawił mnie sam sposób wykrywania tego czy Firebug działa czy nie. Kiedyś tam zauważyłem, że gdy korzystam z console.log() to wypluwa mi błędy kiedy nie mam włączonego Firebuga. Także możliwe, że jest to klucz do rozwiązania zagadki. Prosty kod w Js po troszę to potwierdza