Blog
Godzinami przed komputerem
11.07.2008 - Piątek - 21:23
Sesja się skończyła (nawiasem mówiąc średnia 4,75 jest rekordowo wysoka ;-)), wakacje się zaczęły i Krzysiek zaczął przesiadywać około osiemnastu godzin przed komputerem. Oczywiście Krzysztof nie gra, nie siedzi na czatach, nie podrywa różowych nastolatek. Krzysztof pracuje. Zasuwa jak tylko się da, klepiąc setki linii kodu w PHP licząc, że będzie działać jak należy...
Jeden z projektów jest już właściwie na ukończeniu i niedługo ujrzy światło dzienne. Ten projekt jest mały, ma jakieś 2300 linii kodu klas i jakiś 1000 linii poza klasami. Ale wystarczył, żeby mnie zmęczyć...
Teraz myślę o sobie jako o $this. Chcąc się podrapać wywołuję w głowę $this->_scratch($head), a lustro, kiedy do niego podchodzę klonuje mnie za pomocą mojej metody __clone(). Teraz już nie jest dobrze, a co dopiero będzie później, jeśli co najmniej do października jestem zawalony robotą w PHP...
Słowa kluczowe: programowanie krzysiek php
(Praktycznie) po sesji
04.07.2008 - Piątek - 17:40
W tej sesji żadnego więcej zaliczenia już nie napiszę, żadnego więcej egzaminu też nie będzie dane mi zdawać, bo sesja się skończyła. Mam czystą sytuację, z wyjątkiem jednego przedmiotu, z którego wyniki egzaminu poznam najpewniej w poniedziałek. Ale jeśli tylko uda mi się go zaliczyć, to kończę semestr z rekordową średnią 4,5! Oczywiście średnia może być jeszcze wyższa ;-) Oznacza to, że teraz nie walczę już o posiadanie stypendium na przyszły rok, ale o jego wartość (pierwszy lub drugi próg) ;-)
Poza tym... Po prawie czeterech latach zrezygnowałem z pracy w Centrum Techniki Biurowej w Skierniewicach. Fajnie było, ale stawki warszawskie są znacznie bardziej kuszące i tamte projekty wymuszają na mnie ciągły rozwój, doczytywanie o pewnych rozwiązaniach i śledzenie nowinek, a jak wiadomo praca programisty (szczególnie serwisów internetowych - nie, nie stron WWW) musi się wiązać z pozostawaniem na czasie, bo w innym przypadku po prostu wypada się z rynku. Mój, już były, szef pewnie znajdzie kogoś na moje miejsce i będę mógł przekazać swoje "dzieło" ;-)
Ale nie pozostaję bezrobotny, nie, nie ;-) Dwie umowy o dzieło nadal nade mną "wiszą" i praktycznie każdą chwilę, kiedy tylko nie śpię, siedzę nad setkami linii kodu w PHP 5.2 i stukam i stukam...
Rzeczy się prostują...
24.06.2008 - Wtorek - 15:05
Semestr się prawie skończył. Zostało jeszcze kilka zaliczeń i egzaminów, ale to nic strasznego. Można powiedzieć, że wakacje tuż, tuż. Od października zaczynam piąty rok studiów. Ostatni... Czas niesamowicie szybko minął i już najwyższy czas myśleć o projekcie dyplomowym i samej pracy dyplomowej. Ale przede mną jeszcze trzy miesiące leżenia bykiem ;-)
No dobra, z tym leżeniem bykiem to solidnie przesadziłem. Wakacje w tym roku będą znacznie bardziej pracowite niż zeszłoroczne. W tamtym roku całe wakacje pracowałem na po południu w call center (do dziś z tej traumy nie mogę się wyleczyć ;-)), a nocami i wczesnymi porankami klepałem projekt w PHP (oczywiście za marne pieniądze). W tym roku nie idę do call center (nigdy więcej!), za to w sierpniu mam miesięczne praktyki w Instytucie Łączności (cywilnym) w Miedzeszynie. Niezorientowanym wyjaśnię, że Miedzeszyn jest częścią Warszawy położoną po prawej stronie Wisły, w dzielnicy Wawer, praktycznie na samym jej końcu. Pociągiem z dworca Zachodniego jedzie się 37 minut, autobusem minimum godzinę. Krótko mówiąc szykuje się niezła zabawa z dojazdami... Ale sam chciałem ;-) A na praktykach będę klepał w... PHP.
W lipcu i pod koniec czerwca również nie będę miał wolnego. Mam dwa projekty do zrealizowania. Oczywiście w PHP ;-) Jeden jest sporym serwisem i trochę czasu na niego trzeba poświęcić, a pieniądze będą niespecjalne, a drugi jest znacznie mniejszym serwisem programu partnerskiego jednej ze znanych międzynarodowych firm z branży petrochemicznej, będzie do wykonania w około trzy tygodnie, a pieniądze za niego będą naprawdę ciekawe ;-) Zatem, jak widać, nie będę mógł sobie próżnować... No może odrobinę we wrześniu ;-) Ale wtedy pewnie trafię do wariatkowa od ciągłego powtarzania $this ;-)
Ale skończmy gadać o pracy. Ważniejsza jest rzecz do obgadania! Ukończenie pierwszego etapu remontu linii Łódź - Warszawa! Wreszcie rozkład na dłużej niż miesiąc! Wreszcie koniec makabrycznych spóźnień (z wyjątkiem 16.06, kiedy to nastąpiło wykolejenie niedaleko Radziwiłłowa Mazowieckiego) i koniec postojów w Pruszkowie! No i mamy jakiś takt i łatwiej spamiętać godziny...
Dopowiem jeszcze, że byłem znowu na Pikniku Naukowym w tym roku, od rana do wieczora, nagadałem się, zmęczyłem, ale i sporo się nauczyłem. I to wszystko...
Praca
17.05.2008 - Sobota - 22:17
A jednak! Jednak Krzysiek skusił się na pracę. A może to praca skusiła się na Krzyśka? Ciężko powiedzieć ;-)
Nie mogę na razie zbyt wiele powiedzieć, a właściwie zdradzić, na temat tej pracy. Ogólnie chodzi o to, że będę musiał napisać w PHP sporej wielkości serwis, którego podstawą będzie jedna z ogólnodostępnych baz danych. Jaka baza? A to na razie nie jest dla Was ważne ;-) Powiem tylko, że baza jest dystrybuowana w postaci plików Excela i ma bardzo nieprzemyślaną strukturę. Ale, tym będę się martwił za kilka dni jak zacznę ją gryźć. Póki co gryzę się z koncepcją realizacji technicznej niektórych zagadnień, aktualnie logowanie i bezpieczeństwo oraz co nieco już klepię w Vimie ;-)
Życzcie powodzenia ;-)
Thinclient
08.07.2007 - Niedziela - 18:04
Na początku tygodnia Krzysiek dostał z pracy (nie, nie z call center ;-)) dziwną rzecz do rozpracowania. Mianowicie był to terminal HP Compaq Thinclient T5720, czyli bardzo mały komputer (nieco ponad kilogram wagi, porównywalny z kartką A4 i całkowicie bezgłośny) z Windowsem XP Embedded na pokładzie. Problem polegał na tym, że zainstalowana zapora sieciowa nie pozwalała żadnemu programowi, który nie był standardowo zainstalowany na podłączenie do sieci. Poza tym komputer w ogóle nie zapamiętywał ustawień i po każdym restarcie startował z domyślnymi ustawieniami.
I Krzysztof zabrał się za rozpracowywanie tego cuda dopiero dzisiaj, bo dotychczas nie miał czasu. Spędził trzy godziny, ale zrobił...
Na początek musiałem skonfigurować sieć w tym cudzie, tak żebym mógł tym preinstalowanym IE jakoś sobie pomóc. I skonfigurowałem. I nawet czasami udawało się połączyć z jakąś stroną... Nie wiem czemu, być może ja mam po prostu jakieś złe podejście, ale pod tym Windowsem strony ładowały się jak mucha w smole. Pod moim Linuksem chodziły bezproblemowo ;-) Oczywiście po restarcie wszystko trzeba było od nowa konfigurować, bo ja DHCP u siebie nie posiadam ;-)
Musiałem więc ściągnąć jakiś program, który będzie potrzebował dostępu do sieci. Dzika myśl powiedziała mi, że może Gadu-gadu. Więc ściągnąłem. Okazało się, że 16MB ramdysku to dla niego za mało, więc zainstalowałem na zmapowanym sieciowym dysku z katalogu udostępnionego przez Sambę. Uruchamiam... I Sygate (firewall) od razu go zablokował. Niestety żadnych możliwości dodania go do listy programów dozwolonych nie ma. Nawiasem mówiąc prawy przycisk prawie w ogóle do niczego nie jest wykorzystywany. Googluję więc...
Trafiam gdzieś na opis logowania się jako administrator. O! Trzeba się wylogować, ale żeby nie zostać ponownie zalogowanym należy trzymać Shift. Zalogowałem się. Więcej opcji. Nawet mam dostęp do dysku C:, a nie tylko ramdysku Z:. Ściągnąłem PuTTY, bo mniejszy i bardziej przydatny. Oczywiście również jest blokowany. Ale teraz już mam możliwość dodania go do aplikacji dozwolonych. Działa!
Restart... Po restarcie okazało się, że PuTTY zniknął, a z nim wszystkie ustawienia. Również pozwolenie na łączenie się z siecią... No jak nic nie zapisał na tej 512MB karcie pamięci zmian. Widzę opcję Synchronize w eksploratorze. Pewnie odpowiednik sync z Linuksa. Klikam. Restart. Wciąż to samo... Wkurzyłem się, ale i zawziąłem. Albo ona mnie albo ja ją!
Googluję dalej. Na stronie HP znajduję coś o EWF, czyli Enhanced Write Filter. To jest ustrojstwo programowe, które nie dopuszcza na zapis w pamięci stałej i wciąż operuje na ulotnej kopii danych. Przydałoby się wyłączyć. Robię restart. Oczywiście po każdym restarcie muszę wszystko ustawiać od nowa, ale już się przyzwyczaiłem ;-) Faktycznie! Pojawiła się czerwona otwarta kłódka. Filtr jest wyłączony. Zapisuję znowu PuTTY na dysku C:. Restartuję. Jest! Konfiguracja też się zapisała! Dodaję PuTTY do dozwolonych programów, dorzucam jego skrót dla użytkownika i ponownie zakładam blokadę. Po restarcie wszystko śmiga aż miło. Czyli po sprawie ;-)
A teraz kilka moich bardzo subiektywnych słów na temat tego sprzętu. Na pierwszy rzut oka fajny. Ale na drugi już nie. Najbardziej denerwuje powolność działania. Niby jest tam Ahtlon 1GHz i 512 MB DDR, ale mój komputer z takim samym procesorem i mniejszą i wolniejszą pamięcią działa o wiele szybciej. Po drugie ten Windows. Strasznie ograniczony. Nawet Painta nie ma i dlatego nie mogłem zrobić żadnego zrzutu ekranu ;-) I jedyne do czego się ten komputer nadaje to do kawiarenki internetowej. Wystarczy podłączyć klawiaturę, mysz i monitor ustawić sieć i działa. Fakt, że na IE, ale żaden wirus wiele nie narobi szkód, bo będzie infekował ramdysk, no chyba, że obejdzie jakoś filtr zapisu. Na stronie HP ten komputer kosztuje bagatela 2600 złotych. Ja osobiście nie dałbym za niego więcej niż 250, może 300 złotych. Nie warto. Nawet jeśli będzie miał tylko jedno, niezbyt skomplikowane zadanie. Wolę normalny, nawet szumiąco-buczący komputer. Ciekaw jestem tylko wersji z Linuksem, bo takie też są dostępne.
Słowa kluczowe: komputer hp thinclient
Wpis przechwalająco - promujący
10.04.2007 - Wtorek - 00:12
Dzisiaj oddaliśmy dla szerszej publiczności sklep internetowy z wagami i kasami fiskalnymi. Wiem, że i tak większość z Was nie będzie tym zainteresowana, ale muszę tutaj napisać, żeby wyszukiwarki nieco lepiej wypozycjonowały ten sklep ;-) Aktualny PageRank jest śmieszny ;-)
A mechanizm sklepu napisałem sam, osobiście. Wykorzystałem PHP5 i MySQL-a. Był to mój drugi projekt wykorzystujący obiektowość PHP5, ale wciąż zauważam, że naprawdę wiele praktyki potrzeba, żeby wszystko dobrze obmyśleć. Całkowite odizolowanie HTML-a od wewnętrznych metod klas niestety mi się nie udało i można znaleźć w niektórych klasach wyświetlanie elementów strony. Ale starałem się tego unikać i w niektórych miejscach zastosowałem dość interesujące rozwiązania. Ale ich nie zdradzę ;-)
Jestem niezadowolony jeszcze z kilku rzeczy, ale to raczej niezadowolenie wynikające z nadmiernych ambicji niż nieprawidłowości działania. Po prostu wiem, że można było lepiej ;-)
A teraz pewnie się okaże, że o czymś zapomniałem ;-)
Bezpieczeństwo sprawą "najważniejszą"
13.02.2007 - Wtorek - 19:28
Trafiła mi się, całkiem przypadkiem, okazja zrobienia prostego sklepu internetowego. Aktualnie mam czas, więc przynajmniej nie będę się nudził. Sklep ma być rozszerzeniem już istniejącego serwisu. Wybaczcie, że nie podam Wam adresu serwisu, bo robiła go "profesjonalna" firma. Serwis ten hostuje Netlook.pl. I to proszę sobie zapamiętać. Żebyście później unikali kontaktu z tą firmą.
Zobaczyłem w ofercie, że jest dostępne PHP5. Ostatnio tę wersję PHP polubiłem i chciałbym teraz z niej skorzystać. No to wrzuciłem prosty pliczek z rozszerzeniem php5 i zawartością <?php phpinfo(); ?>, żeby zorientować się co mam do dyspozycji. Uruchamiam ten skrypt i widzę, że się nie wykonał, a serwer po prostu wyświetlił zawartość pliku. "Hmm... - pomyślałem - pewnie inaczej skonfigurowano serwer i wymagane jest inne rozszerzenie." Jakkolwiek byłoby to głupie posunięcie to jednak jest możliwe. Zacząłem więc szukać informacji na temat PHP5 na Netlooku. Okazało się, że skrypt powinien normalnie działać. Przynajmniej FAQ tak twierdzi. "Hmm... - zamruczałem - Czyżby konto nie udostępniało tej możliwości?" Napisałem maila z pytaniem. Dostałem odpowiedź po trzech minutach. Ale to, co przeczytałem, z pewnością zniwelowało miłe zaskoczenie spowodowane szybkością odpowiedzi:
PHP5 jest obecnie aktualizowane (i stad - wylaczone z dostepu). PHP 5 bedzie dostepne w ciagu najblizszych 7 dni. BOK netlook.pl
Opadła mi szczęka... Jak można aktualizować PHP przez siedem dni? Oraz, co gorsze, jak można wyłączyć PHP na tak długi czas? Przecież wtedy wszyscy odwiedzający stronę zobaczą jej kod, w którym mogą być zapisane hasła (chociażby do baz danych). Ja wiem, że PHP5 wciąż jest "egzotyczne", ale takich numerów to się klientom nie robi. Oj, nie robi!
Słowa kluczowe: internet webmastering PHP
Wynajdywanie koła
01.10.2006 - Niedziela - 00:06
Od dwóch dni siedzę przed komputerem i wynajduję ponownie koło. Konkretnie piszę system zarządzania treścią (CMS), który byłby podobny w użytkowaniu jak Wiki, ale mniej skomplikowany i zorientowany na moje wymagania. A wymagania są konkretne: CMS ma zostać zastosowany na stronie firmowej, na której będzie wpisywana aktualna oferta, opisy produktów, ich ewentualna możliwość zamówienia (taki mini sklep internetowy) i temu podobne rzeczy. Ważne jest, żeby CMS nie ograniczał się tylko do gromadzenia treści w bazie danych, ale umożliwiał również wrzucenie jakiegoś pliku ze skryptem PHP w miejsce standardowej strony wygenerowanej z zawartości bazy danych.
Mam już obręcz, czyli zarys działania i budowy systemu. Mam też już dosyć bogatą klasę (piszę obiektowo w PHP 5), ale większość metod wciąż jest pusta i wymaga implementacji. Szprychy wciąż do zrobienia...
Na razie nie zaimplementowałem kodu metody zamieniającej pseudokod (coś w stylu WikiML) na kod XML, ale czuję, że jak się za to wezmę, to trochę będzie grzebania. Wyrażenia regularne mogą wszystkiego nie załatwić. Szczególnie zastanawiam się na sposobem jakiegoś prostego (w zapisie i w sposobie przetworzenia) opisu tabel z danymi. Potem ładowanie i wstawianie obrazków. No i jakieś makra typowo sklepowe: {{cena}}. {{dostępność}}, {{zamów}} itp.
Pozostaje jeszcze problem odwrotnego przekształcenia, czyli przejścia z XML-a (XHTML-a) na wewnętrzny pseudokod. Może to być sporym kłopotem, więc póki co chyba będę robił przekształcenia tylko w jedną stronę, i obie wersje (pseudokod i XML) zapisywał do bazy. Dość nieeleganckie, ale trudno. Nie jest to priorytetem.
Póki co staram się utrzymywać jako taki porządek w kodzie i stosować się jakiejś konkretnej konwencji zapisu, ale jak znam siebie, to za jakiś czas będzie taki burdel, że sam nie będę wiedział co jest gdzie...
P.S. Wczoraj strzeliły mi 0x16|H lata ;-)
Słowa kluczowe: komputer PHP programowanie
PHP Solutions 5/2006: Własne Google Video, czyli video streaming w PHP
16.09.2006 - Sobota - 23:13
Macromedia Flash (właściwie teraz już Adobe) - technologia już prawie wszechobecna. I tym bardziej nie lubiana przeze mnie. Nie lubiana, bo powoduje zejście sposobu prezentacji informacji do rynsztoka. Liczy się tam forma, a nie treść. Ale w niektórych przypadkach Flash jest jednak jak najbardziej na miejscu.
Jedną z tych sytuacji jest streaming video i dźwięku. Popularne serwisy, takie jak YouTube czy Google Video bazują właśnie na tej technologii. Każdy film jest tam odtwarzany przy pomocy małego playera stworzonego w technologii Flash. A jak takie coś zrobić? O tym właśnie mówi artykuł Rafała Malinowskiego.
Na początku krótkie wprowadzenie w sposób działania streamingu i Flasha. Zaraz potem prosty przykład na stworzenie własnego filmu i playera, ale tylko pod Windowsem i tylko korzystając z komercyjnego oprogramowania (przynajmniej w wersji 30-dniowej).
Po tych kilku słowach niezupełnie związanych z PHP pojawia się wreszcie coś konkretnego - FFMPEG i MING - biblioteka służąca do konwersji plików wideo oraz biblioteka do tworzenia plików SWF.
Artykuł prosto i rzeczowo opisuje sposób na stworzenie w pełni zautomatyzowanej galerii plików wideo. Jest sporo interesujących listingów, które, bez większego problemu można zrozumieć. Całkiem ciekawy artykuł. Polecam.
Słowa kluczowe: phpsolmag
PHP Solutions 5/2006: Zaawansowane ataki SQL Injection
04.09.2006 - Poniedziałek - 16:02
Obszerny artykuł Mike'a Shemy opisuje nie tyle ataki, co kładzie nacisk na odpowiednie spojrzenie na problem wstrzykiwania kodu SQL podczas zabezpieczania swoich skryptów. Na początku autor wymienia krótko kilka różnych typów wstrzyknięć kodu, a zaraz potem obala mit, według którego wystarczy zabezpieczyć się tylko przed apostrofami.
W artykule przedstawione są trzy typy ataków: na składnię zapytania, na składnię języka i na logikę zapytania przytaczając sporo przykładów. Ale jest to typowa wędka, a nie rybka. W artykule nie znajdziemy żadnego gotowego rozwiązania zabezpieczającego przed wstrzykiwaniem kodu SQL.
Artykuł ciekawie wprowadza w problem nieco bardziej skomplikowanych ataków typu SQL Injection.
Słowa kluczowe: phpsolmag
PHP Solutions 5/2006: Freelancing - zostań wolnym strzelcem
03.09.2006 - Niedziela - 17:13
Artykuł Krzysztofa Trynkiewicza opisuje działanie serwisów dla programistycznych "wolnych strzelców", zarówno od strony zleceniodawcy jak i od strony zleceniobiorcy.
Treść opiera się na sposobach działania zagranicznych serwisów tego typu, ponieważ autor zauważa tylko jeden godny uwagi (ale niepozbawiony wad) taki serwis w Polsce. Omawiane są sposoby unikania kłopotów i nieporozumień, wyboru właściwego zleceniobiorcy i tworzenia własnego wizerunku. Krótko opisywane są również charakterystyczne cechy poszczególnych serwisów. Artykuł ciekawy i przyjemny w odbiorze.
Słowa kluczowe: phpsolmag
PHP Solutions 5/2006: XML i PHP w praktyce
03.09.2006 - Niedziela - 12:02
XML jest coraz popularniejszy dzięki swojej prostocie, intuicyjności i łatwości w użyciu. Jest to jedna z dwóch rzeczy, które możemy zawdzięczać Microsoftowi (Microsoft wniósł spory wkład w tworzenie XML) - drugą są myszki z rolkami do przewijania. I nawet pomimo tego, że 90% webmasterów ma mgliste pojęcie o możliwościach XML-a, to w PHP już od dawna jest wsparcie dla tego języka.
Artykuł Guillaume'a Ponçona właśnie traktuje o wsparciu PHP dla języka XML. Autor opisuje trzy interfejsy: SAX, DOM-XML i SimpleXML, przy czym SAX jest potraktowany powierzchownie, DOM-XML nieco głębiej, ale najwięcej poświęcone jest SimpleXML - obiektowemu sposobowi odczytu (i zapisu) dokumentów XML.
Stopień trudności artykułu to 2/3, ale ja się nie mogę zgodzić. Jest to wyjątkowo przejrzyście i prosto napisany tekst. Wydaje mi się, że nie powinien sprawić trudności nikomu. Wystarczy tylko odrobina wiedzy o XML-u i programowaniu obiektowym w PHP 5.
Artykuł jest naszpikowany przykładami i listingami. Na początku odczytywany jest prosty dokument XML przy pomocy SAX, a następnie odczytywany i modyfikowany przy pomocy DOM-XML. SimpleXML posłużyło autorowi do odczytu przykładowego kanału RSS i modyfikacji wykresu Gantta stworzonego przez program Ganttproject. Artykuł zwieńczony jest interesującym przykładem odczytu i modyfikacji dokumentu OpenOffice'a (OpenDocument).
Bardzo spodobał mi się ten artykuł, a ponieważ nigdy nie mogłem zebrać się do przeczytania w dokumentacji PHP o funkcjach obsługi XML, to teraz miałem okazję w ciekawy sposób zapoznać się z ich działaniem.
Słowa kluczowe: phpsolmag
PHP Solutions 4/2006: Kryptografia w PHP
23.07.2006 - Niedziela - 13:35
Tytuł tego artykułu jest wyróżniony na głównej stronie numeru. Mogłoby się wydawać, że jest to temat przewodni całego wydania, ale tak nie jest. W rzeczywistości jest tylko jeden artykuł poruszający kwestię kryptografii w PHP. Trochę mylące...
Autorami artykułu są Łukasz Lach i Michał Stanowski. Nawiasem mówiąc, ten pierwszy jest studentem Wydziału Cybernetyki Wojskowej Akademii Technicznej ;-) Artykuł jest napisany przystępnym językiem i posiada ciekawe i proste do analizy przykłady zastosowania opisanych funkcji.
Na początku autorzy skupili się na funkcjach haszujących, czyli tych, dzięki którym można uzyskać pewien ciąg znaków, którego, teoretycznie, nie da się odkodować. Przy pomocy algorytmu MD5 oraz HMAC-MD5 (jego implementacja w PHP jest przedstawiona w artykule) stworzyli prosty i bezpieczny system logowania, który do serwera nie przesyła hasła w postaci jawnej dzięki JavaScriptowi. Interesujące rozwiązanie.
Następnie omówiono możliwości szyfrowania przy pomocy funkcji crypt(), korzystając z algorytmu DES oraz Blowfish. Jako przykład pokazany jest kolejny skrypt bezpiecznego logowania.
Na końcu artykułu jest opisana bardzo ciekawa rzecz - aplikacja przechowująca pliki w postaci zaszyfrowanej. Autorzy wykorzystują tu moduł MCrypt i jego właściwości. Użytkownik wysyła do serwera plik oraz klucz, a serwer to koduje. Żeby odkodować plik należy podać hasło, którym został on zakodowany. Proste w działaniu, proste w napisaniu. Wręcz banalne ;-)
Muszę przyznać, że pod wpływem artykułu zacząłem trochę "grzebać" w Sieci w poszukiwaniu informacji o kryptografii.
Słowa kluczowe: phpsolmag
PHP Solutions 4/2006: IRCBot
17.07.2006 - Poniedziałek - 20:07
Na tapetę teraz wezmę artykuł Marcina Staniszczaka: "Programowanie obiektowe w PHP na przykładzie IRCBota".
Mówimy programowanie obiektowe w PHP myślimy PHP 5, więc artykuł będzie przydatny w szczególności dla osób, które nie "czują" jeszcze programowania obiektowego w PHP. Przyznać się muszę, że sam jeszcze nie próbowałem programowania obiektowego w PHP, chociażby dlatego, że korzystałem dotychczas z wersji 4, gdzie obiektowość "kulała". Po przeczytaniu tego artykułu, zobaczyłem, że wcale wiele się nie zmieni w moich projektach i zainstalowałem PHP 5 na domowym serwerze (przez chwilę chciałem zainstalować PHP 5 jako CGI, a PHP 4 wciąż trzymać jako moduł Apache'a, ale stwierdziłem, że nie ma to sensu). Podjąłem też postanowienie, że projekt, który muszę zrealizować w najbliższej przyszłości będzie napisany w obiektowym PHP 5 (przy okazji dodam, że przejdę też na Unikod).
Artykuł jest obszerny, zajmuje jedenaście stron, ale ogromną jego część stanowią listingi kodu. Kod, dla skrócenia i dla zachowania jego czytelności, został pozbawiony części odpowiedzialnych za funkcje związane z połączeniem z serwerem IRC. Pozostał sam kod obiektowy, który ma za zadanie wprowadzić czytelnika w kulisy programowania obiektowego.
Na samym początku autor tłumaczy czytelnikowi ideę programowania obiektowego. Wyjaśnia czym jest klasa, metoda i dziedziczenie. Zwraca również uwagę na semantykę metody konstruktora i destruktora obiektu oraz kilka innych rzeczy nie występujących w programowaniu proceduralnym. Wszystkie te informacje nie miałyby żadnej wartości, gdyby nie zostały podparte przykładami. A tych jest sporo. IRCBot składa się z kilku współpracujących ze sobą obiektów, których znaczenie tłumaczy artykuł (przy okazji demonstrując czytelnikowi właściwy tok myślenia podczas projektowania aplikacji obiektowej). Niektóre metody w przykładach są puste. Autor postanowił, że nie ma sensu umieszczać w listingach kodu, który nie jest bezpośrednio związany z tematem artykułu. Pełny kod aplikacji można znaleźć na stronie magazynu. Reszta artykułu omawia dokładnie kod aplikacji i wyjaśnia wszelkie napotkane własności i słowa kluczowe.
Artykuł jest całkiem interesujący i napisany dość przystępnym językiem, a to, w przypadku programowania obiektowego ma kluczowe znaczenie.
Słowa kluczowe: phpsolmag
PHP Solutions: Live CD
12.07.2006 - Środa - 18:09
Tak, dotarł do mnie kolejny numer PHP Solutions do recenzji. Idąc śladem Piotra Koniecznego postanowiłem, że recenzje będę zamieszczał na swoim blogu - wpisy z odpowiednim tytułem i opisane słowem kluczowym phpsolmag. A ponieważ Wy - czytelnicy, nie macie nic do powiedzenia, pozostaje Wam tylko czytać ;-)
Na pierwszy ogień pójdzie płyta dołączona do numeru, a właściwie dystrybucja Linuksa PHP Solutions Live. Co to za cudo? Jest to zmodyfikowana wersja Auroksa, która uruchamia się z płyty i zawiera w sobie środowisko LAMP, czyli minimum narzędzi każdego webmastera programującego z wykorzystaniem PHP i MySQL.
Wszystko uruchamia się w miarę szybko i po dwóch minutach pojawia się pulpit KDE. I tu pierwsza rzecz, która mi się nie podoba - KDE jest pamięciożerne, a w przypadku dystrybucji Live to nie jest dobre rozwiązanie. Jakaś wielka tapeta, masa powłączanych bajerów... Wyłączyłem to czym prędzej i widać niewielką poprawę działania. Ponoć wcześniej domyślnym menedżerem był Fluxbox. Z pewnością jest on dużo lżejszy...
Zaraz po wystartowaniu KDE uruchamia się Firefox (w wersji 1.0.7) i pojawia się spis zawartości płyty. Niestety, nie znalazłem tam ani słowa o samej dystrybucji PHP Solutions Live. A szkoda... Bo trzeba się wykazać odrobiną inicjatywy, żeby skorzystać z dóbr tej dystrybucji.
W menu zauważyłem, że jest dostępny Konqueror (no, w końcu to KDE ;-)). Daaawno nie miałem z nim do czynienia. Szybko go uruchomiłem i sprawdziłem jak prezentuje się Antylameriada w tej przeglądarce. No! Jest dobrze ;-)
Ale wróćmy do zasadniczego tematu tej notki. W dystrybucji dostępne są Apache 2.0.54, MySQL 4.1.16 oraz PHP 5.0.4. Całkiem interesujący zestaw. Na jednej ze stron papierowego magazynu było napisane, że dystrybucja ta ma służyć do testowania dowolnych skryptów bez instalacji. To chyba małe niedomówienie ;-) Jeśli skrypt wymaga instalacji, to trzeba go zainstalować. Nie instalujemy tylko systemu, bo dostajemy gotowca ;-)
Jednym z hitów numeru jest pełna wersja skryptu CaRP Koi, który służy do analizy i wyświetlania kanałów RSS na stronach. Skrypt ten umieszczony jest w domyślnym katalogu serwera WWW: /var/www/html/. Otwieram w przeglądarce adres: http://live/carp/. Widzę plik carpsetup.php. Uruchamiam go... I nic. Wyskoczył jakiś błąd, że nie może odpytać DNS-a o domenę www.geckotribe.com. Dziwne... Nie mam DHCP na routerze, więc kartę sieciową skonfigurowałem ręcznie, ale DNS-y wpisałem poprawne. W konsoli:
$ host www.geckotribe.com www.geckotribe.com is an alias for geckotribe.com. geckotribe.com has address 216.194.115.244 www.geckotribe.com is an alias for geckotribe.com. www.geckotribe.com is an alias for geckotribe.com. geckotribe.com mail is handled by 10 mail.geckotribe.com.
Wygląda na to, że jest ok. Ale na wszelki wypadek, w konsoli administratora (na konto root logujemy się bez hasła):
# echo "216.194.115.244 www.geckotribe.com" >> /etc/hosts
Uruchamiam skrypt instalacyjny jeszcze raz. Już nie wyskoczył żaden błąd, ale też nic szczególnego się nie stało (żadne pliki się nie zainstalowały, skrypt o nic nie pytał, zero akcji). Hmm... A może coś z prawami dostępu... Sprawdzam. Tak! /var/www/html/ ma prawa rwxr-xr-x. Dobra, uzupełniłem prawa w tym katalogu i we wszystkich katalogach wewnątrz. Uruchamiam ponownie. O! Działa. Skrypt spytał się jaki sposób instalacji wybieram. Wybrałem manualny i po kilku kliknięciach wszystko było w porządku. Potem jeszcze tylko sprawdziłem jak działa ten skrypt i, w tym temacie, to mi wystarczyło ;-)
Wziąłem na tapetę serwer MySQL. Hmm... Zazwyczaj potrzeba loginu i hasła, a nigdzie takie informacje nie zostały podane. Więc kombinuję. Wywołanie połączenia z serwerem z konta roota: nie, nie działa. Wywołanie połączenia z konta domyślnego (aurox): oooo! Chyba dobrze. Nawet jedna baza już jest, ho, ho ;-)
[aurox@live aurox]$ mysql -u aurox Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 3 to server version: 4.1.16 Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql> show databases; +----------+ | Database | +----------+ | test | +----------+ 1 row in set (0.74 sec) mysql> use test; Database changed mysql> show tables; Empty set (0.00 sec) mysql>
A co jeszcze na płycie? Na pulpicie są wyróżnione ikony:
- Nvu
- Quanta
- Bluefish
- Eclipse
- gmplayer (na płycie jest jakiś tutorial w pliku wideo)
Oczywiście, jak to w dystrybucjach Live, straaasznie wolno wszystko się uruchamia. Ale widać, że twórcy tej dystrybucji chcieli zapewnić bogaty (bo jednak sporo tego jest) zestaw narzędzi do testowania swoich (i nie tylko) skryptów. Niestety eclipse chyba się "zaćmił" na płycie, bo pojawia się splash, ale potem już raczej nie widać żadnych efektów... Wróć! O! Jednak coś widać! Poprosił mnie o wskazanie katalogu domowego. Teraz pojawił się jakiś pasek postępu. Muszę jeszcze czekać...
Czekam...
Czekam...
Czekam...
Już pojawiło się jakieś okno, ale wciąż nie wyrysowały się żadne kontrolki... Chyba dam sobie z tym spokój.
Podsumowując: w tej dystrybucji jest na plus:
- Interesujący pomysł: Linux, Apache, MySQL i PHP w dystrybucji Live
- PHP 5
- Szybki start
- Sporo oprogramowania związanego z PHP
- Montowanie znalezionych partycji na dyskach twardych
A na minus:
- KDE z wodotryskami
- Wynikające z tego obciążenie pamięci i bardzo powolne działanie oprogramowania po starcie
- Brak chociażby najmniejszego pliku pomocy przydatnego dla osób, które nie znają Apache'a i MySQL-a, a chciałyby przetestować dystrybucję
- Brak możliwości wyjęcia nośnika z czytnika przed wyłączeniem komputera
Ale ogólnie to nawet mi się podoba ;-)
Spóźniony prezent świąteczny
29.12.2005 - Czwartek - 18:54
Huh... Dawno nic nie pisałem. Musiałem się wreszcie zmobilizować i coś stworzyć. Nie miałem żadnego konkretnego pomysłu, więc po prostu napisałem o innym rozwiązaniu już rozwiązanego problemu ;-)
Widzę, że bardzo często w wyszukiwarkach pojawia się pytanie o liczniki na stronę. Na mojej stronie od dawna jest artykuł o tworzeniu skryptu licznika w PHP, który operuje na plikach tekstowych. Ale w dobie baz danych to jest rozwiązanie passé. No to napisałem to tak, żeby wykorzystywało to bazę MySQL. Wydaje mi się, że jest to proste, ale wykorzystałem rozwiązania o których przeciętny użytkownik MySQL-a, który uczył się z jakiegoś marnego kursu on-line raczej nie będzie wiedział. Czyli ten "prosty" w nazwie to tak tylko dla zachęcenia ;-) No dobrze, a teraz link: prosty licznik w PHP i MySQL. Czytajcie z przyjemnością ;-)
Słowa kluczowe: webmaster antylameriada php mysql


