Posts

Showing posts from 2008

Umiem po arabsku - jedno słowo

Ostatnio się dowiedziałem, że się nie znam, a jako że arabski bardzo fajny język: Słowo "kochanie" wyraża się następująco: do kobiety sie mowi: habibatido mężczyzny: habibi człowiek się uczy całe życie ;). Mi się mylnie wydawało, że mówi się "habibti" ;). Nawet tłumacz Google coś wymyślił zacytuje:

حبي

ale jak to mam przeczytać?

Perl i UTF + Locale

Czasami ja nie rozumiem jak działa Perl, dziś jest jeden z takich dni:
Oba kody robią to samo, jeden z localami drugi bez:
Code 1 - test.pl
#!/usr/bin/perl use utf8; use warnings; use strict; use locale; #use POSIX q(setlocale); #setlocale(&POSIX::LC_ALL, "pl"); # Uzywamy funkcji do kodowania/dekodowania # utf8::encode($string); # utf8::decode($string); die "$0 testfile.txt" if scalar @ARGV <= 0; # pobieram caly plik open( FH, '<', $ARGV[0] ) or die "Error: usage $0 file\n\n"; my $txt = do { local ($/); }; close(FH); utf8::decode($txt); my @words = $txt =~ m/\w+/g; map { utf8::encode($_) } @words; print join(", ", @words)."\n";
Code 2 - test2.pl #!/usr/bin/perl use utf8; use strict; use warnings; #use locale; #use POSIX q(setlocale); #setlocale(&POSIX::LC_ALL, "pl"); use open ':encoding(utf8)'; #use open ':locale'; die "$0 testfile.txt" if scalar @ARGV <= 0; # …

Sun Java JRE/JDK 1.6u10 on Debian

Wszystko co robisz, robisz na własną odpowiedzialność - u mnie to zadziałało: Niedawno pojawiła się wersja 10 JDK 1.6 Suna, w Debianie nie mogę się doczekać paczki. A nowości w Javie są fajne: interfejs Nimbus, przepisany plugin do przeglądarki.
Chciałem zbudować Javę normalnym narzędziem, czyli fakeroot + make-jpgk w przypadku Javy, ale się nie udało bo to update 10 a nie 0-9. Nie dając za wygraną rozwiązałem problem, oto solucja: apt-get install fakeroot java-package Następnie, trzeba edytować pliki: /usr/share/java-package/sun-j2sdk.sh/usr/share/java-package/sun-j2re.sh dodając do nich:
w przypadku pliku: /usr/share/java-package/sun-j2sdk.sh ## To odnajdujemy: "jdk-6u"[0-9]"-linux-i586.bin") # SUPPORTED j2se_version=1.6.0+update${archive_name:6:1}${revision} j2se_expected_min_size=130 found=true ;; ## A to dodajemy: "jdk-6u"[0-9][0-9]"-linux-i586.bin") # SUPPORTED …

Intel 945 - Direct Rendering Howto

Na początek zainstalowałem parę pakietów: apt-get install libgl1-mesa-dri\ libgl1-mesa-dev\ libgl1-mesa-glx\ mesa-utils\ xserver-xorg-video-intel Uaktualniłem config serwera X (/etc/X11/xorg.conf): Wpierw próbowałem skorzystać z nowszych sterowników "eksperymentalnych" Intela: Section "Device" Identifier "Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller" Driver "intel" BusID "PCI:0:2:0" EndSection Section "Screen" Identifier "Default Screen" Device "Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller" Monitor "Generic Monitor" DefaultDepth 24 SubSection "Display" Modes "1280x800" EndSubSection EndSection U mnie te sterowniki nie działały, ale jak masz c…

Ecartis, Gmail and UTF

Jakiś czas temu kolega (pozdrawiam Cię Skrobul) założył listę mailingową bo mieliśmy wspólny projekt na studiach - osób było 12, wszystkim wszystko działało, ale oczywiście nie mi. Ecartis nie dekodował mojego tekstu, wciąż on pozostawał jako Base64 (czyli był scrambled). Po dłuższej walce z plikami konfiguracyjnymi zostałem poinformowany, że już wszystko działa :D. Oczywiście jako, że jestem ciekawską duszą to chciałem się dowiedzieć jakie ustawienie było za to odpowiedzialne: I sie dowiedziałem: # humanize-mime # Should the server strip out non-text MIME attachments. # Example: humanize-mime = true # humanize-mime = false

Windows disable write to USB stick

Jakieś dwa lata temu zapisałem się na listę dystrybucyjną newslettera Microsoftu - AcademicFlash. W ostatnim z nich znalazłem fajnego tipa, jak zablokować zapis na kluczach USB w Windows XP (przydatne jeśli wiemy, że mamy szkodnika a nie chcemy by się rozpowszechniał).
Oto solucja jaka została przedstawiona w tym newsletterze:
Aby zablokować możliwość zapisu na kluczach USB należy: Uruchomić edytor rejestru (Start > Uruchom, wpisz regedit i kliknij OK.Znajdź klucz HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Wybierz wartość StorageDevicePolicies i stwórz w niej wartość DWORD (Nowy > Wartość DWORD) o nazwie WriteProtectKliknij na nowo stworzonej wartości prawym klawiszem myszy i wybierz ModyfikujW polu wartość wpisz 1Uruchom ponownie system.

Eclipse IDE

Wybór odpowiedniego środowiska programistycznego nie jest rzeczą łatwą, w przeciągu ostatniego roku IDE (Integrated Developement Enviroment) powstało bardzo wiele, jednym z ciekawszych jest Eclipse.Projekt ten powstał już parę lat temu pod auspicjami firmy IBM. W chwili obecnej najnowsza wersja Eclipse to 3.40.0 nosi kodowa nazwę Ganymede. Środowisko to jest o tyle ciekawe, że posiada relatywnie lekki rdzeń, do którego są włączane komponenty (pluginy). W chwili obecnej korzystam z Eclipsa do pisania programów w Javie (domyślnie instalowane), Perlu (Epic), Pythonie(PyDev), LaTeX(TeXclipse) i planuję zainstalować dodatek ułatwiający tworzenie skryptów shellowych. Różnorodność wspieranych języków nie jest jedyną zaletą tego projektu, dzięki elastycznemu systemowi pluginów można, korzystać bezpośrednio z systemu kontrolowania wersji takiego jak CVS, SVN i zapewne paru innych systemów wersjonowania oprogramowania, a także do modelowania baz danych (ERD), oraz modelowania w języku UML.Dzięk…

GPG error: public key is not available

Chyba nigdy nie zapamiętam co z tym zrobić :). Wszystkie operacje przedstawione w tym tekście wykonujemy z konta administratora, lub poprzedzamy sudo (dla tych co mają ubuntu i sobie nie zrobili konta roota). W: GPG error: http://.... testing Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY KEY_ID Instalujemy z repozytorium pakiet debian-keyring (GnuPG (and obsolete PGP) keys of Debian Developers). A następnie pobieramy klucze GPG z serwerów: gpg --keyserver wwwkeys.eu.pgp.net --recv-keys KEY_ID gpg --armor --export KEY_ID | apt-key add - i w końcu nie ma tego ostrzeżenia ;). Jeśli na wybranym key serwerze nie było kluczy to należy poszukać innego. Oto lista serwerów kluczy: wwwkeys.eu.pgp.netwwwkeys.pgp.netkeyring.debian.org/search.keyserver.netpgp.ai.mit.edu Jeśli klucz nie może zostać z pobrany na podstawie tych serwerów, można spróbować odnaleźć na stronie repozytorium sygnaturę do GPG, jak ma to miejsce przypad…

Perl File::Basename dlaczego używać?

Często pisząc skrypty w Perlu, wymagam od użytkownika podania pliku wejściowego do przetworzenia i nazwy pliku wyjściowego/katalogu w którym mają powstać wyniki.

Ta druga wartość bardzo często może zostać wygenerowana na podstawie informacji o nazwie pliku, który należy przetworzyć. Można to zrobić na wiele sposobów, oto niektóre z nich (od siebei dodam, że wszystkich 3 używałem, ale najlepszy wydaje mi się sposób 3).
Oto kod: #!/usr/bin/perl # Purpose: Why we should use libraries in Perl? use strict; use warnings; use File::Basename; my $inputFilePath = "/home/johny/projects/someSampleFile.txt"; my $outDirName ; # -- print "# version without additional modules\n"; my $ipf1 = $inputFilePath; $ipf1 =~ /(.*\/+?)?(.*)$/; $ipf1 = $2; $ipf1 =~ s/\.\w{0,3}$//g; $outDirName = $ipf1; print $outDirName."\n\n"; # -- # -- print "# version with File::Basename::basename\n"; my $ipf2 = File::Basename::basename($inputFilePath); $ipf2 =~ s/\.[a-zA-Z]+$…

rsync / scp resume

Czasami każdy z nas zmuszony jest przesłać po zawodnym połączeniu dużą ilość danych (czy to w MB, czy w ilości plików) w sposób bezpieczny, ale jak to zrobić kiedy "Charyzjusze" sniffują hasła z ftp? Jednym ze sposobów jest wykorzystanie standardowych narzędzi systemu Linux: rsyncssh(d) Rozwiązaniem problemu jest następująca komenda: rsync -avzP --rsh=ssh uname_remote_srv@addr_remote:~/dir_to_get . Jeśli demon ssh rezyduje na innym porcie niż standardowy (22), można zrobić to tak: rsync -avzP --rsh="ssh -p port" uname_remote_srv@addr_remote:~/dir_to_get . Co robią te opcje?: -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X) -v, --verbose increase verbosity -z, --compress compress file data during the transfer -P same as --partial --progress Po dokładniejsze opcje zapraszam do zapoznania się z manualem rsynca (man rsync). By wysłać dane na jakiś serwe…

Co z tym Gentoo

Taki artykuł znalazłem w nowym Linux+ Co z tym Gentoo? Kryzys tej dystrybucji można było zauważyć gołym okiem już od dawna. Środowisko developerów coraz to bardziej dzieliło się, panował ogólny marazm i brak konkretnego celu w rozwoju. Świetnym przykładem są polskie serwisy poświęcone Gentoo. Mimo nie najgorszego zaangażowania użytkowników, coś na nich kuleje. Poza tym sytuacja, w której przez kilka miesięcy niedostępna jest lista repozytoriów, świadczyć może o zbliżaniu się nieubłaganego końca. Szkoda by było, bowiem Gentoo jest jedną z najbardziej wyrazistych i mających wiernych fanów dystrybucji. Wydaje się, że organizacja czuwająca nad rozwojem dystrybucji sama przeżywa poważne problemy. Jej strona nie była przez wiele miesięcy aktualizowana, odwołano nawet statut, nie uchwalając nowego. Na ratunek wyruszył twórca dystrybucji Daniel Robbins, który przez wiele lat pełnił również stanowisko Chief Architect w Gentoo Foundation. Popularny niegdyś Robbins zaproponował poszukiwanie św…

Gadu-Padu kradzież numerka

Żyję w Polsce, kraju wyjątków i paradoksów - chciałbym aby to było wiadome od razu na początku. Do niedawna byłem posiadaczem "elitarnego", "błyszczącego" czterocyfrowego numeru Gadu-Dudu, niestety pewnego pięknego dnia, a właściwie nocy ktoś mi zmienił hasło. Nie było by w tym nic dziwnego, jeśli nie to, że hasło miało 9 znaków. Co lepsze mogło być wygenerowane słownikowo. Każdy czytający powie "sam sobie jesteś winien". Po części się zgodzę z tym stwierdzeniem, ale chciałbym zauważyć że Operator Sieci Gadu-Gadu nie narzuca w żaden sposób polityki dobrych haseł! Co więcej nie ma limitu zapytań o hasło dla IP (TAAK!!! nie ma!!! niech żyją słowniki i brute-force), co więcej użytkownik którego konto może być atakowane metodą słownikową / bruteforce nie dostaje o tym żadnego monitu!!!. No ale to właściwie nie jest ważne ... przejdźmy do sedna, czyli kontaktu z HelpDeskiem ;).
Po odkryciu, że moje hasło nie działa postanowiłem spróbować opcji przypomnij hasł…

I o co chodzi?

Ciekawe: Feb 1 15:15:11 batnet named[13863]: client 213.227.72.1#56997: query (cache) 'ghs.google.com/A/IN' denied Feb 1 15:15:48 batnet named[13863]: client 217.17.45.156#35226: query (cache) 'ghs.google.com/A/IN' denied Feb 1 15:17:03 batnet named[13863]: client 62.129.253.16#57693: query (cache) 'ghs.google.com/A/IN' denied Feb 1 15:25:12 batnet named[25471]: client 81.219.231.66#32768: query (cache) 'ghs.google.com/AAAA/IN' denied Feb 1 15:32:23 batnet named[25471]: client 194.204.152.11#32768: query (cache) 'ghs.google.com/A/IN' denied ha! mam wytlumaczenie: 11:50:18 < koleś X wysyła do serwera Y zapytanie o wpis A na blog.0x1fff.com 11:50:46 < serwer Y wysyła do NSa dla 0x1fff.com zapytanie o wpis blog... 11:51:04 < NS(batnet) odpowiada, że a i owszem ma taki wpis, ale jest CNAME na 11:51:04 domene ghs.google.com 11:51:43 < no to automagicznie serwer Y odpytuje NSa o rozwiązanie tej nazwy 11:51:43 CNAMEowej, ponie…

Linux - system troubleshooting

Pracując zdalnie na systemach komputerowych, nie sposób jest uniknąć awarii. Awaria może być typowo hardwarowa - z tym nie za bardzo możemy cos zrobić zdalnie, trzeba wpakować sie do jakiegoś środku lokomocji i zając sie tym osobiście.

Inaczej sprawa się ma z awaria softwarowa, taka jakiś czas temu mi sie przytrafiła ... system plików na / uległ uszkodzeniu. Niewiele mogłem wtedy zrobić, wiec tez musiałem sie zając tym nie zdalnie, teraz bogatszy o doświadczenia tamtych dni mogę sobie napisać parę rad.
No to rady sa juz tu:Mieć obraz systemu na dysku hdd, z możliwością zamontowania go przez gruba / lilo. Cos jak płytka startowa, tylko ze z hdd.Zostawić niewielka pusta(!!) partycję na korą możemy wypakować powyższy obraz, lub ściągnąć któraś z wielu maleńkich dystrybucji Linuxa. Rozmiar partycji to max 700MB najlepiej jakby była na partycji podstawowej. Od biedy jeśli mamy sporo ramu można na chwilkę zamazać SWAP.Jeśli spodziewamy sie ze uszkodzeniu uległ system plików, a używamy Linu…

Mysql - Fast index creation

Pisząc nawet niewielkie aplikacje webowe w miarę wypełniania ich danymi zachodzi potrzeba dodania nowych indeksów to tablic w bazie MySQL, zadanie to nie jest szybkie jeśli nasza tablica ma juz w okolicach miliona rekordów, ponieważ zwyczajne: ALTER TABLE tbl_name ADD KEY col_name; ALTER TABLE tbl_name ADD KEY key_name ( tbl_name, tbl_name, ... ); Trwa bardzo długo, trzeba było wymyślić inny sposób zrobienia takiego zadania. Okazało sie, ze jeden z moich znajomych miał również taki problem, wiec polecił mi (wymagany jest dostęp do zapisu do plików bazy danych), domyślnie na serwerach wirtualnych czegoś takiego sie nie udostępnia, natomiast jeśli mamy serwer dedykowany i konto roota to jesteśmy w stanie bez problemu to przeprowadzić: UWAGA: Ten sposób został sprawdzony wyłącznie na tabelach typu MyISAM!!!Tworzymy tabele o takim samym schemacie, ale o nowej nazwie czyli, mamy tablice x stworzymy sobie: CREATE TABLE x_new ( ... ) ; -- odpowiednio to uzupełniającModyfikujemy odpow…