Gdy historia przeglądania została usunięta…

Czerwiec 7th, 2010

… można i tak zobaczyć jakie domeny ostatnio były w użyciu.

Jak zapytacie?

Wszystko dzięki pamięci podręcznej systemu przechowującej ostatnie zapytania do serwerów dns. Aby je obejrzeć wystarczy skorzystać z ipconfig:


ipconfig /displaydns

I już ostatnio przeglądane domeny są widoczne :D

Gdy konfiguracja apache nie pozwala na „php_flag magic_quotes_gpc Off”

Maj 19th, 2010

Na niektórych hostingach bywa tak,  że z pewnych względów poniższy kod nie zadziała, a wskutek tego np ckeditor też poprawnie nie będzie interpretowała tworzonych linków.


php_flag magic_quotes_gpc Off

Rozwiązanie problemu okazało się banalne:


SetEnv MAGIC_QUOTES 0

„ORA-06553: PLS-382: expression is of wrong type” i tablica dual

Maj 5th, 2010

Kilka dni temu zacząłem się trochę więcej bawić z bazą danych Oracle i od razu napotkałem klika niespodzianek ;) Oto jedna z nich. Pisałem funkcje składowaną, która po wykonaniu jakiś zapytań na bazie i sprawdzeniu kilku warunków miała zwrócić true lube false, a z racji że PL/SQL udostępnia cudowny typ BOOLEAN to zapragnąłem własnie z niego skorzystać.


create or replace function czy_spelnione_wymagania(
 pesel IN varchar2,
 temat IN varchar2)
 return boolean
 is

....

Funkcja się skompilowała poprawnie, więc cały szczęśliwy chciałem ją przetestować korzystając z zabawnej tablicy DUAL.


SELECT czy_spelnione_wymagania('8089123243','Oaza Nowego Zycia 1') FROM DUAL;

I tu mnie spotkało niemiłe zaskoczenie:


ORA-06552: PL/SQL: Statement ignored
ORA-06553: PLS-382: expression is of wrong type

Zasięgnąłem informacji o błędzie i byłem dość  zaskoczony tym co było przyczyną. A mianowicie poczciwy SQL nie obsługuje udostępnianego przez PL/SQL typu BOOLEAN! Więc trzeba to obejść jakoś ładnie i poniżej przedstawiam moją propozycje rozwiązania tego problemu za pomocą bloku PL/SQL.


DECLARE
VAR_BOOL BOOLEAN;
BEGIN
VAR_BOOL :=czy_spelnione_wymagania();
IF( VAR_BOOL = TRUE ) THEN
DBMS_OUTPUT.PUT_LINE( ‘TRUE’ );
END IF;
END;

Tak więc nie jesteśmy zmuszeniu do modyfikacji formatu zwracanych danych przez naszą funkcje składowaną, ale oczywiście jak ktoś bardzo lubi to może sobie przyjąć, że będzie zwracał int, gdzie FALSE = 0 a TRUE = 1.

System dla maszyny z 128MB ramu.

Marzec 24th, 2010

Maszyna ma dobrego procka i będzie potrzebna do testów projektów na przedmiot „Obliczenia równoległe na klastrach”, lecz mała ilość  pamięci ram uniemożliwia instalacje standardowych dystrybucji Linuxa.

W pierwszej kolejności pomyślałem o jakieś bardziej odchudzonej wersji Ubuntu. Szybko trafiłem na Xbuntu, które jak twierdzą twórcy u mnie powinno zadziałać:

You need 192 MB RAM to run the Live CD or 192 MB RAM to install. The Alternate Install CD only requires you to have 64 MB RAM at install time.

Tak więc pobrałem najnowszą stabilną kompilacje (obecnie 9.10) i wypaliłem ją szybciutko na CD. Niestety proces instalacji na mojej maszynie w pewnym momencie się przerywał i już nie chciał za żadne skarby posunąć się dalej. Tak więc spróbowałem wcześniejszej kompilacji z przed roku (8.10), lecz niestety ta próba zakończyła się podobnie.

Poszukałem jeszcze dokładniej i znalazłem modyfikacje Ubuntu o jeszcze mniejszej złożoności.

Flexbuntu jest ekstremalnie okrojoną dystrybucją wymagającą do działania zaledwie 64MB ramu :) Jednak nie było dane jej prawidłowo bootować się na tym komputerze, z niewiadomych mi do tej pory powodów… Więc szukałem dalej…

Następnie spróbowałem ArchLinux który charakteryzuje się dużą wydajnością i małą ilością procesów standardowo włączonych do dystrybucji. W procesie instalacji kierowałem się bardzo dobrze napisaną instrukcją.

Po przejściu procesu instalacyjnego, który nie okazał się tak strasznym jak go malują, komputer się zrestartował i początkowo wszystko szło pięknie … do czasu … moim oczom ukazał się taki ekran:

The superblock could not be read or does not describe a correct ext4
filesystem. If the device is valid and it really contains an ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

******************* FILESYSTEM CHECK FAILED *************
* Please repair manually and reboot. Note that the root *
* filesystem is currently mounted read-only. To remount *
* it read-write type: mount -n -o remount,rw /          *
* When you exit the mantenance shel the system will     *
* reboot automatically.                                 *
*********************************************************

Give root password for mantenance

Okazało się że dystrybucja losowo przydziela nazwy partycjom przy każdym uruchomieniu, więc trzeba było je bardziej jednoznacznie wyspecyfikować w pliku konfiguracyjnym. Na szczęście każda partycja ma niezmienny UUID, który można podejrzeć wydając polecenie ‘blkid’ w konsoli. Ostatecznie tak musiałem zmodyfikować plik /etc/fstb aby udało się poprawnie uruchomić system.

UUID=b30cadc0-5e0f-4766-98e9-2ae97d53d930 /boot ext2 defaults 0 1
UUID=f61ed654-d7d3-41e0-b301-ce8d60fe910e swap swap defaults 0 0
UUID=c1263d23-c359-42aa-bca0-f518d9963e89 / ext2 defaults 0 1
UUID=57cde885-b368-4575-9434-3db28f2c5c2a /home ext2 defaults 0 1

Tu można trochę więcej poczytać o źródle problemu: http://wiki.archlinux.org/index.php/Persistent_block_device_naming#by-label

Wypalanie plików iso w Windows 7.

Marzec 16th, 2010

Człowiek czasem może się bardzo zdziwić, gdy przestał spodziewa się podstawowej funkcjonalności od produktów firmy Microsoft, jakim np. jest wypalanie obrazów płyt. Ja właśnie miałem przyjemność odczuć to na sobie, gdy na świeżo zainstalowanej „siódemce” dwu krotnie kliknąłem na plik z rozszerzeniem .iso. Moim oczom ukazał się obraz małego programiku o wdzięcznej nazwie „Windows Disc Image Burn” ;)

program do wypalania plików iso pod windows 7

Postanowiłem od razu go wypróbować, lecz niestety pierwsza próba zakończyła się niepowodzeniem, bo jak podejrzewam proces uTorrenta spróbował w trakcie nagrywania odczytać plik. Ale nie poddałem się i dałem narzędziu Microsoftu do wypalania plików iso jeszcze jedną szanse… tym razem się udało :)