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
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.
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
Migracja na jabster.pl
Jako, że podobno serwer jabber.autocom.pl stał się deprected zmigrowałem dzisiaj na jabster.pl. Generalnie to z autocom jest zadowolony, rzadko kiedy zdarzały się awarie. Oby nowy-stary serwer jabster.pl był taki sam. W sumie to ta sama firma, Ci sami admini. Najciekawszą funkcją jaką ten serwer (jabber.autocom.pl zresztą też) ma to archiwum rozmów trzymane na serwerze. Już mi się kilkanaście razy przydało, wygodnie się z tego korzysta. Szkoda tylko, że nie można przenieść archiwum z autocom na jabster. Cóż trudno, pozostaje eksport i trzymanie u siebie.
Sama migracja przebiegła bardzo prosto. Kontakty (niewiele ich) jabberowe nie wymagały żadnych dodatkowych czynności. Te z gg trzeba było poprawić, tak żeby jid był w formacie numer@gadu-gadu.jabster.pl i tyle.
Procedura sprowadzała się do pobrania rostera narzędziem JRU, hurtowej zmiany kontaktów gg prostym wyrażeniem regularnym:
szukamy: ^\+(.*)@gg.jabber.autocom.pl(.*)$
zamieniamy na: -$1@gg.jabber.autocom.pl$2\n+$1@gadu-gadu.jabster.pl$2
Edytor jEdit sobie z tym świetnie poradził.
Potem wystarczyło już tylko za pomocą JRU zapakować zmieniony roster na serwer i gotowe. Jeszcze tylko musiałem potwierdzić masę nowych zapytań o autoryzacje od kontaktów. Do tego celu przydał się ekg2 którego właściwie na co dzień używam. Proste polecenie for -u * auth -a %2 i problem z autoryzacjami załatwiony.
Adres teodor@jabber.autocom.pl będzie sobie aktywny tak długo jak serwer będzie jeszcze działał. Natomiast nie jako oficjalnym adresem od dzisiaj stał się teodor@jabster.pl.
Pamiętaj Firebid
Na przyszłość standardowe hasło i login do Firebirda
- login: sysdba
- hasło: masterkey
Prawie jak w domu
Prawie jak w domu. Kompozycje sponsoruje tutorial, Tango Desktop Project i ClearLooks for WindowsXP. Wynik taki oto
Bootowanie ostatnio uruchomionego systemu
grub posiada ciekawą funkcjonalność. Otóż pozwala na domyślne bootowanie ostatnio uruchomionego systemu. Opcja przydatna gdy ma się dwa systemy, i chce się po kilku godzinach snu wrócić ponownie do tego samego systemu. Nic nie musimy wybierać w bootmenu, wystarczy włączyć i pójść po kawę. Po przyjściu będzie na nas czekał ten sam system który wczoraj zamykaliśmy. Cóż trzeba zrobić.
Pijąc sok, dlaczego można się ochlapać zawartością kartonu
Takie przemyślenia (może i herezje fizyczne) podczas picia kolejnej porcji soku. Oczywiście ubrudziłem się jak zwykle.
Sok im gęstszy tym mniej chlapie otoczenie przy nalewaniu. Zdecydowanie najbezpieczniejszym sposobem jest przelanie go do jakiegoś otwartego pojemnika, ale komu by się chciało. Można też wyciąć otwór z drugiej strony. Skuteczne jeśli będziemy pamiętali o takim wyciętym otworze z drugiej strony. Komu by się chciało pamiętać.
Sok nie chlapie gdy średnica strumienia soku jest mniejsza od otworu. Jeśli będzie taka sama (większa z oczywistych względów być nie może) nastąpi chlupnięcie. Wydaje się iż ma to związek z ciśnieniem panującym w kartonie i tym zewnętrznym. Podczas nalewania ciśnienie cieczy w kartonie maleje. W celu jego wyrównania, do kartonu dociera powietrze (tudzież może być substancja inna w której zanurzony jest karton). Jak jednak dociera. Otwór przecież jest zablokowany przez strumień cieczy. Tak sobie wymyśliłem, że w pewnym momencie różnica ciśnienia między otoczeniem a kartonem jest na tyle duża, że ciecz zostaje wepchnięta do kartonu. Jako, że ciśnienie zostało wyrównane wypływa kolejna porcja soku, powietrze sobie czeka w kartonie na kolejnych braci, a my zostajemy ochlapani gwałtownym wypływem soku, który uderza o powierzchnie soku w szklance.
Zmiana hasła via ssh
Jednak się da. Mam ustawioną zmianę hasła co 31 dni. Pech chciał, że nie dawno hasło wygasło akurat wtedy gdy nie miałem dostępu fizycznego do komputera. Zmiana hasła via ssh nie bardzo była możliwa. Wczoraj wygooglałem rozwiązanie tego problemu.