2007-08-29

Core PHP i MySQL

Ostatnie tygodnie spędzam nad tworzeniem zrębów strony www wraz z bardzo prymitywnym narzędziem CMS. Pomaga mi w tym książka, o której nie wspomniałem w poprzednich wpisach, ale która okazała się jedynym dostępnym źródłem wiedzy o PHP.

PHP i MySQL. Tworzenie aplikacji WWW - gdyż o niej mowa - prezentuje się dość okazale. ponad 800 stron opisujących wszystko co potrzebne do rozpoczęcia swojej przygody z PHP i wypłynięcia na szerokie wody Internetu... przynajmniej w teorii. W praktyce - przyznaję, że się nie zawiodłem. Pierwsze rozdziały przystępnie opisują składnię i zasady języka PHP, kolejne wprowadzają w bazy danych (choć w tytule widnieje "MySQL", to wszystko zawarte w książce może być równie dobrze wykorzystane w każdej bazie obsługującej ANSI-SQL), następnie... jeszcze nie wiem, ale czytam z zapamiętaniem.

Zapewniam, iż w niedalekiej przyszłości zdam relację z moich bojów z:
  • językiem PHP i jego różnymi odnogami,
  • z bazami danych stworzonymi w "płaskich" plikach (za długo by opowiadać jak na jeden wpis),
  • z jednym z głównych polskich serwisów hostingowych, którego z grzecznosci tutaj nie wymienię.


Link na deser:
Freelance Switch - zbitek ludzi, którzy poświęcili uporządkowane życie zawodowe na rzecz małej fatamorgany, która czasem majaczy na dalekim horyzoncie również i mnie.

($.$)

2007-08-12

Trzecia książka

Dzisiaj trochę o języku o którym bardzo wiele słychać i, jak wieść gminna niesie, jest obecny wszędzie (choć jakoś go nie widać): Ruby.

Natknąłem się na niego przeglądając Slashdot-a. Z początku była to kolejna nowinka - język programowania z Japonii... Zainteresowałem się nim bliżej po znalezieniu (przypadkiem) w Internecie książki Why's (Poignant) Guide to Ruby.

O samej książce można pisać wiele. Autor popisuje się naprawdę absurdalnym poczuciem humoru, które pomaga nawiązać dialog z czytającym. Dodatkowo nastrój absurdalności nasilają mini-komiksy umieszczone jako ilustracje/przerywniki w treści (mnie najbardziej przypadły do gustu dwa lisy z trzeciego rozdziału). Co najważniejsze - książka dostępna jest w formie elektronicznej, no i niestety nie jest jeszcze kompletna.

"Wzruszający przewodnik po Ruby" nie nauczy Cię programować. Jest to raczej przewodnik po zakamarkach języka Ruby i głowy autora. Polecam wszystkim, którzy planują rozpocząć przygodę z tym językiem i mają niezachwianą wiarę w swą znajomość j. angielskiego.

Link na deser - zjedzony.
(*^_^*)

2007-06-28

Dwie książki

Dzisiaj, po długiej przerwie, będzie krótko o dwóch książkach:

Core Perl (Reuven M. Lerner) - Bardzo dobrze skonstruowana książka, z przejrzystymi przykładami, które łatwo zrozumieć i przyswoić. Krótko i zwięźle - książka z którą uczyłem się Perl-a - polecam.

Core PHP Programming (Leon Atkinson, Zeev Suraski) - Książka z tej samej serii, bardzo wiele obiecująca, lecz za to w cenie blisko 100 zł. Mam zamiar zaznajomić się z nią (tak - to oznacza, że będę tutaj pisał też trochę o przygodach z PHP), a może być i tak, że stanę się jej dumnym posiadaczem...

Link na deser:
PHP - wszystko czego programista PHP potrzebuje, podane często tak nieczytelnie, że po lekturze potrzebuje jeszcze więcej.

/(^.^)\

2007-04-16

GRE - tak czy nie?

Dzisiaj napiszę kilka słów o Generic Routing Encapsulation, gdyż Zabbix'em nie miałem okazji się zająć.
Bez teoretycznych wstępów (jeśli ktoś tego potrzebuje, to proponuję zacząć od linka w tytule wpisu) krótko opiszę sensy i bez-sensy tunelowania w routerach Cisco i AT.

1. Sensy.
GRE, jak sama nazwa wskazuje, przeprowadza enkapsulację, dzięki czemu można zanurzyć jeden ruch w drugim. Jeżeli by się uprzeć, to udałoby się zrobić IPv4 w IPSEC, w L2TP, w GRE, w FR - ale po co? GRE ma to do siebie, że jest funkcjonalny, a przez to lubiany i wspierany.
Jako dziecko Cisco, na routerach tejże firmy GRE traktowane jest bardzo przyjaźnie - otrzymuje własny interfejs i łatwą obsługę. Czemu wspominam o interfejsie? Bo z pozoru mało ważny, ale jednak wiele ułatwia...
2. Bezsensy.
No to się zacznie... GRE określany jest jako 'stateless'. Z tego co zdążyłem zauważyć nie zaznacza w żaden sposób czy komunikacja jest możliwa, czy po drugiej stronie tunelu jakieś urządzenie odbiera transmisję. Routing po takim tunelu (w przypadku Cisco) może być niebezpieczny. W przypadku routerów AT jest nie lepiej, a wręcz gorzej. Pakiety do GRE wpadają już przy wchodzeniu do routera (interfejs LAN), samo GRE nie ma wydzielonego interfejsu... zabawa zaczyna się więc i kończy na interfejsach LANu, na końcówkach uczestniczących w transakcji. Na routerze AT można GRE zanurzyć w jakimś innym medium, ale na tym zabawa się kończy. GRE jest i musi pozostać głównym pośrednikiem, gdyż nie ma sposobu na postawienie czegokolwiek przed nim (no chyba, że innego routera).

Sama enkapsulacja nic nie daje. To co decyduje o jej przydatności, to łatwość użycia i możliwość dostosowania do konkretnych potrzeb. Niestety Cisco na tym polu wygrywa z moim faworytem (AT), który potraktował GRE po macoszemu.

Powyższe przemyślenia (może i płytkie) oparłem na swojej wiedzy i znajomości sprzętu obu firm. Nie jestem żadnym autorytetem, więc rezerwuję sobie prawo do omylności i liczę na sprostowanie ewentualnych błędów.

Na deser nie będzie linku, jedynie
[`]

(-_-)

2007-04-06

Same old, same old...

Cóż mogę powiedzieć... godzę wtyczki Qpsmtpd ze sobą, termin wdrożenia rozwiązania dawno już minął... W tym momencie wdrożenie można uznać za wpół-udane - spora część wiadomości została zaraz po uruchomieniu potraktowana prawidłowo, a w przeciągu dwóch dni wyłapaliśmy z kolegą z firmy klienta większość dziur i niedociągnięć (razem około pięciu załatanych - aktualnie pozostaje jedna, której jeszcze nie wyśledziłem w kodzie, lecz na szczęście nie wpływa na widoczne formatowanie wiadomości).

Niestety moje dziecko, rodzone w takich bólach, nadal nie może rozwinąć skrzydeł i działa tylko w środowisku testowym. Sprawdzamy, czy aby napewno nie zajdą jakies nieprzewidziane okoliczności (i im dłużej sprawdzamy, tym bardziej prawdopodobne, że takie okoliczności zajdą - wg prawa Murphy'ego).

Pozostaje mieć nadzieję, że cały mój wysiłek nie pójdzie na marne.

A w następnym odcinku - moje boje z Zabbix'em (lub tunelami GRE - w zależności co będzie bardziej dla mnie bolesne).

Link na deser:
Życzę udanych Świąt!
#(^_^)#

2007-03-11

Osobowość programisty

Nadal Perl i nadal Qpsmtpd. W tym tygodniu stanę przed nie lada wyzwaniem - pogodzić 3 wtyczki, z których każda chce robić coś innego na tym samym pliku/treści... ale to się da.

Wpadł mi w ręce ciekawy, choć krótki, test (8 pytań raptem) - zlinkowany w tytule tego wpisu. Wynik poniżej... i w zasadzie większość się zgadza.

" Your programmer personality type is:

DHSC

You're a Doer.
You are very quick at getting tasks done. You believe the outcome is the most important part of a task and the faster you can reach that outcome the better. After all, time is money.

You like coding at a High level.
The world is made up of objects and components, you should create your programs in the same way.

You work best in a Solo situation.
The best way to program is by yourself. There's no communication problems, you know every part of the code allowing you to write the best programs possible.

You are a Conservative programmer.
The less code you write, the less chance there is of it containing a bug. You write short and to the point code that gets the job done efficiently."

Link na deser:
Doolwind's Game Coding Journal - blog na którym znalazłem w/w test. Z ciekawszych wpisów polecam ten z 2 listopada 2006.
(`.`)

2007-03-01

Qpsmtpd - bojów ciąg dalszy

Już narzekałem, że cały czas siedzę nad wtyczkami do Qpsmtpd pisanymi w Perl-u. Dzisiaj, wyjątkowo, chciałem się podzielić pewnym dość śmiesznym kawałkiem kodu, który spreparowałem ucząc się jak potężnym poleceniem jest "s///".

W dużym skrócie - należało z korespondencji w formacie text/html zrobić text/plain (wiem, że tak nie powinno się czynić... i nic na to nie poradzę). Część podmiany polegała na zamianie wszystkim znanego:
<a href="http://abc.pl">abc</a>
na:
abc[http://abc.pl]

Z pomocą przyszło oczywiście wspomniane polecenie "s///", a konkretniej:
$wiersz =~
s/<[Aa][\W\w\n]*?[Hh][Rr][Ee][Ff]="(.*?)"
[^>]*>([\W\w\n]*?)<\/a>/$2\[$1\]/g;
(niestety całość się nie mieści w linijce w jakiś kulturalny sposób...)
Takim to "prostym" zabiegiem (bardzo wg mnie nieeleganckim, który pewnie ktoś już gdzieś napisał lepiej i czytelniej) otrzymujemy pożądany efekt. Jeżeli byłoby to potrzebne - chętnie służę komentarzem.

Link na deser:
HTML::Entities - biblioteka Perl-a bardzo przydatna przy walce z wiatrakami... znaczy się, chciałem powiedzieć, z korespondencją formatowaną w HTML-u.
(#_-)

2007-02-28

Trochę polityki

Dzisiaj trochę nie na temat (choć to jednak są "okolice"... tyle że szeroko pojęte).

Dolina Rospudy - w obronie autostrady

No i to wszystko co mam do powiedzenia...

PS. nadal siedzę i piszę w Perl-u - już mi to bokiem wychodzi
(~_~);;

2007-02-23

Perły i perełki

Jak siedziałem w Perl-u, tak w Perl-u siedzę. Kolejne wtyczki nabierają kształtu i powoli uczę się nowych sztuczek programowania w tym języku. Niestety - "prawdziwym" programistą chyba nigdy nie będę, a to z tego prostego powodu, że piszę wolno. Każda nowa lub zmieniona linijka musi być przetestowana, bo w efekcie końcowym wg mnie nie ma miejsca na najmniejszy błąd. Wynik jest taki, że jednego dnia rzadko piszę więcej niż 100 linijek kodu (nowego - nie liczę poprawek). Z drugiej strony moja praca nie kończy się na pisaniu w Perl-u... i całe szczęście!

W tytule wpisu zlinkowany jest CPAN (Comprehensive Perl Archive Network). Polecam każdemu rzucającemu się na głębokie wody. Przydatny wg mnie najbardziej w analizie czyjegoś kodu. Gdy już się podchwyci schemat działania jakiegoś modułu, to zwykle potem idzie z górki i sprawdza się tylko argumenty, albo "dlaczego ta funkcja zwraca pusty obiekt?" itp.

Link na deser został zjedzony.
[o_o]

2007-02-20

Perłowe wtyczki pocztowe

Pisałem o chęci poznania C++, ale wygląda na to, że na razie utknąłem w Perl-u. Muszę przyznać jednak, że jest on bardzo przydatny i przyjemny w użyciu (w naszej firmie popularnością może ustępować jedynie php który, o zgrozo, jest używany nie w konstrukcji stron, lecz przy konstrukcji skryptów).

Temat tego wpisu jest zlinkowany ze stroną programu Qpsmtpd - bardzo elastycznym demonem SMTP. Heca polega na tym, iż elastyczność jest osiągnięta poprzez rozbudowany system wtyczek (plugin-ów) pisanych w Perl-u właśnie (które to wtyczki ostatnio tworzę).
Swoje własne (po)twory wtyczko-podobne można zacząć pisać już po zapoznaniu się z dołączonymi na starcie wtyczkami (są np. wtyczki sprawdzające częstotliwość połączeń, lub pośredniczące w wywołaniach antywirusa) oraz z bibliotekami programu (no chyba że ktoś jest wybitnie utalentowany - nie tak jak ja). Jeśli jakiś czytający wykaże zainteresowanie, to mogę zamieścić tutaj jakiegoś mojego potworka razem z krótkim objaśnieniem co i po co.
Hmm... może warto byłoby opisać Qpsmtpd dla strony "Debian Package a Day"? Pomyślimy...

Link na deser:
Zabbix - narzędzie do monitorowania różnorakich zasobów poprzez SMTP i/lub osobny program kliencki. Opiszę go dokładniej w niedalekiej przyszłości.
^(O.O)^

2007-02-17

Xen

Jakiś rok temu zwróciłem uwagę na pewien, wtedy jeszcze dość niepozorny, projekt (no, może nie niepozorny, ale mało znany) - Xen. Jak to mam w zwyczaju poczytałem trochę, pomyślałem, i przeszedłem nad nim do porządku dziennego.
Jakieś dwa miesiące temu klient zażyczył sobie serwer z maszyną wirtualną - Xen (pierwotnie VMware, ale jako gorliwi wyznawcy Open Source sprawiliśmy, aby chciał jedynie słusznego rozwiązania). I co? Jak to jest w zwyczaju kolejny ciekawy projekt przeszedł koło mojego nosa.

Piszę to wszystko nie dlatego, aby się żalić. Jest to efekt uboczny przemyśliwań odnośnie mojej dalszej ścieżki rozwoju (ale to zabrzmiało...). Po dłuższej debacie z samym sobą doszedłem do wniosku, że zajmę się programowaniem na poważnie (no - powiedzmy, że "na poważniej" niż to robię teraz) i/lub wirtualizacją (cel krótkookresowy, ale bardzo interesujący). Zobaczymy.
Jutro mam zamiar poczytać "Thinking in C++" Bruce'a Eckel'a. Mam nadzieję, że nie zrezygnuję po 10ciu stronach.

Link na deser:
Jak zainstalować Xen-a na Debianie Sarge'u - dość przystępnie napisany artykulik dotyczący tego co widać, umieszczony na stronie, na której jest sporo innych ciekawych i przydatnych artykułów.
(*.*)

2007-02-16

Łącza, złącza i złączątka

Takie jedno łącze do Internetu - niby nic, fajnie jak chodzi. Jak okaże się, że jednak nie chodzi, to się zaczyna robić mniej ciekawie - szczególnie dla administratorów. Bieganie, szarpanie kolegów za rękawy, pytania typu "pamiętasz gdzie ten router stoi?" i tak dalej - chleb niepowszedni, ale powszechnie znany.
Gdy juz jest po wszystkim, łącze chodzi, zgłoszenia awarii zamyka się z ulgą... i zapomina się, że fajnie byłoby nie powtarzać podobnych sytuacji w przyszłości i podłączyć tę linię backupową, o której sie już tyle czasu myślało (głównie podczas awarii).
Człowiek to ciekawa istota, a Polak i po szkodzie głupi.
(-_-)]

2007-02-15

Potrzeba chętnych

Od jakiegoś czasu zaglądam na stronę "Debian Package a Day". Muszę przyznać, że autorzy strony zgrabnie i ciekawie przedstawiają kolejne interesujące pakiety - nie wdając się za bardzo w szczegóły i akurat na tyle, aby wiedzieć na co i po co to komu... i może skorzystać.
Niestety ze strony "... a day" prawdopodobnie zrobi się "... a week" z powodu braku chętnych do współtworzenia treści.

Ty możesz to zmienić! Na pewno korzystasz z nietypowych pakietów - odnalazłeś perełkę, którą używasz z chęcią i umiejętnością - dlaczego się tym nie podzielić?

Link na deser:
Lundehund (lub Norwegian Puffin Dog) - bardzo interesująca, aczkolwiek rzadka, rasa psa. Polecam wielbicielom czworonogów!

Źródło: blog etbe - pisze ciekawie o "podnoszeniu" - więcej informacji na zlinkowanym wpisie (tutaj).
\(^_^)

2007-02-14

Hello World! (albo coś w tym stylu)

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut vulputate sollicitudin ante. Quisque in leo. Etiam non quam vel metus scelerisque convallis. Vestibulum sapien. Aenean nisl. Etiam elit quam, facilisis sed, tincidunt nec, aliquet sed, justo. Maecenas fringilla egestas ante. Ut id tortor ut mauris pharetra gravida. Donec sed erat non velit semper semper. Donec rutrum auctor ligula.

Donec aliquam tellus at est. Pellentesque eget metus eget orci facilisis aliquam. Nullam odio. Nunc massa. Cras non leo. Nam id dolor in ipsum ultrices vehicula. Fusce dui orci, ornare non, tincidunt ut, cursus eu, purus. Duis egestas, lectus ac egestas volutpat, est nulla dictum justo, ut molestie nisi urna quis odio. Sed nisi dui, posuere eget, feugiat ac, dapibus sed, nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla gravida mi eu enim.

Maecenas consectetuer lorem nec felis. Vestibulum urna urna, euismod a, mollis sed, fermentum a, orci. Integer est metus, placerat eget, venenatis et, hendrerit ac, ipsum. Curabitur vel purus. Integer ligula erat, condimentum nec, egestas eu, ultricies porttitor, augue. Vivamus a quam sed mauris mattis condimentum. Nulla facilisi. Curabitur ut arcu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean posuere libero et mauris. Praesent id est. Fusce eu nunc in arcu scelerisque commodo. Ut nonummy, dui non suscipit tempus, ante dui posuere ante, quis rutrum arcu lectus in pede. Quisque non eros quis massa lobortis rhoncus.

Aenean cursus urna vitae mi. Nulla vitae ante. Donec a risus. In velit urna, convallis at, sagittis ut, porttitor quis, arcu. Duis ut orci. Aenean malesuada nibh id sem. Duis malesuada ipsum id magna. Nulla vel tortor eget nisl faucibus eleifend. Morbi et justo sed erat tempus nonummy. Suspendisse lobortis libero sit amet sapien. Sed cursus, magna ac pellentesque placerat, libero orci blandit ipsum, sit amet nonummy felis nunc eget enim. Ut consectetuer consectetuer dui. Mauris quis risus. Duis a orci. Nullam velit nisl, lobortis nec, molestie et, pretium sed, turpis.

Curabitur adipiscing, justo vitae blandit convallis, tortor massa gravida nibh, elementum elementum pede nulla in nisi. Aliquam a ligula sed diam mattis sollicitudin. Etiam dui orci, varius sed, ultrices ut, cursus sit amet, urna. Donec at felis sed velit viverra scelerisque. Nullam bibendum velit at enim. Nullam tempus tristique felis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nam vitae odio. Aliquam egestas, lacus vel tempor imperdiet, leo justo mollis turpis, ut dapibus urna massa vel turpis. Integer vel ipsum.

\(^o^)/