Uwaga, blog przeniesiony

Posty na tym blogu już nie będą się pojawiać. Zapraszam gorąco pod nowy adres: blog.grzegorzpawlik.com



Subskrybuj ten blog...

środa, 27 sierpnia 2008

firePHP zbawieniem twym (w przypadku nieprzejednanych klientów)

Jeśli nigdy nie musiałeś wprowadzać poprawek na systemie w wersji produkcyjnej - jesteś prawdziwym szczęściarzem.
Często jednak bywa tak, że musisz poprawić kilka "pierdół", więc robisz to bezpośrednio. Jednak jeśli Twój klient nie może zaakceptować informacji z debugowania na stronie, a Ty bez nich nie możesz efektywnie pracować - FirePHP przyjdzie Ci z pomocą.

FirePHP to rozszerzenie, do Firebug - rozszerzenia do Firefoxa :)
Pozwoli Ci wyświetlać debug z kodu PHP w konsoli firebuga właśnie. Jak go zintegrować z Cake (1.2) jest opisane na http://bakery.cakephp.org/articles/view/baking-cakes-with-firephp.

Poniżej efekt:


Przy wykorzystaniu tych narzędzi twój debug jest widoczny tylko dla Ciebie (no i jeszcze tych co mają zainstalowany ten dodatek... na 99% Twój klient nie ma).

Życzę Wam i sobie więcej takich narzędzi, które pojawiają się zanim uświadomimy sobie ich potrzebę.

ps. Radzę raczej użyć firebuga w wersji beta 7, gdyż w nowszych pojawia się błąd, w którym aby zobaczyć informacje w konsoli - trzeba najpierw przełączyć się na inną zakładkę, a później do niej wrócić. Zatem jeśli nie potrzebujesz poprawek z wersji beta 15 (taka była najnowsza w momencie pisania tego tekstu) - wybierz 7.

wtorek, 26 sierpnia 2008

Grzechy główne twórców stron

Dlaczego zdarza się, że strony budowane po to by zarabiać, nie zarabiają?

Otóż po pierwsze strona internetowa to nie rower - ten wystarczy złożyć go, pomalować i napompować koła, żeby zaczął jeździć. Ludzie, którzy mają małe pojęcie o działaniu internetu i marketingu internetowego, ale za to mający pieniądze i chcący je pomnażać myślą o stronie jak o takim rowerze. Pokutuje w ich głowach mit super-zarabiających stron, które jakby wyłoniły się pewnego razu pod jakąś domeną.

Dlatego zamawiąjąc na przykład katalog firm, który miałbym konkurować z taką panoramą firm, już cieszą się na krociowe zyski od firm, które tylko czekają na to, żeby zapłacić za kolejne miejsce w internecie w którym się pojawią.

Nawet nie przyszło im do głowy, żeby w jakiś sposób stać się lepszym niż chociażby główny konkurent w segmencie. Czasem wpadają na to, żeby się pozycjonować. Raczej nie myślą o tym, że siłą takiego katalogu jest ilość wpisów (kiedy trafię do ninego przez google - zacznę używać ich wyszukiwarki) i podcinają sobie gałąź na której siedzą wymagając, żeby najprostsze wpisy były płatne. Nie wiedzą co to znaczy zarabianie na bezpłatnych usługach.


Druga sprawa to oszukiwanie już zdobytych klientów na przykład poprzez umieszczanie w top searches arbitralnie wyznaczonych elementów, lub nawet reklam bez informowania o tym użytkowników. Jest to w pewnym stopniu przeciwieństwo poprzedniego podejścia (ale zamiast odchodzenia od komercjalizacji niemal każdego znaku na stronie, raczej ukrywanie tej komercjalizacji).

W tym wypadku przyszły właściciel strony jest już świadomy, że coś co nie jest za darmo nie jest mile widziane, jednak nie zastanowił się dlaczego internauci nie porzucili google za to, że wyświetla sponsorowane wyniki wyszukiwania (nawet wyraźnie o tym informując).

Otóż elementy komercyjne elementy (pojawiąjące się w danym miejscu bezpośrednio za sprawą pieniędzy, w przeciwieństwie do tych "naturalnych" manifestacji sieci ), jeśli nie liczyć migających banerów, nie są tak na prawdę opluwane przez każdego internautę bez wyjątku.

Chodzi o to, że link sponsorowany, jeśli jest wyraźnie oznaczony jako sponsorowany niesie ze sobą ważną informację, że ta firma naprawdę podejmuje działania marketingowe. Poważnie podchodzi do zdobywania klientów (i skoro wydaje forsę na ich zdobywanie, to pewnie poważnie będzie podchodzić do ich obsługi, żeby ta forsa nie była wyrzucona w błoto) i zależy jej na tym, żebyś poznał jej ofertę.

Zatem jeśli znajdę się w katalogu firm i wejdę w kategorię >przeprowadzki< raczej wejdę w kilka wykupionych pozycji na pierwszej stronie, żeby wiedzieć jaką ofertę mają firmy, które rzeczywiście zapłaciły za bycie na tej stronie (w odróżnieniu od tych, co mają darmowy wpis bo "jak za darmo, to czemu nie").
Ukrywając więc komercyjne treści tracimy ten efekt, do tego strona, które "nie ma" treści komercyjnych jest podejrzana - nikt za swoje nie będzie utrzymywał serwera, serwisu i pewnie pracowników... więc może wszystko jest sponsorowane, a właściciel żongluje sobie danymi jak chce... wracam do google ;)


Zatem istnieją dwa ekstrema:
- zbyt silne przywiązanie do pieniądza i próba wyciśnięcia go z każdego miejsca strony (przypomina próbę wyciskania cytryny, zanim ta dojrzeje)
- zbyt wielki strach przed byciem posądzonym o należenie do poprzedniego ekstremum i wstydliwe ukrywanie tego objawów.


Jak zawsze istnieje reguła złotego środka - znajdź go. Jeśli masz być właścicielem takiej strony - weź to sobie do serca. Jeśli taką stronę masz zaprojektować i zbudować - uświadom swojego klienta o co tak na prawdę chodzi.

poniedziałek, 4 sierpnia 2008

HttpSocket z cake 1.2 w cake 1.1.x

Jeśli potrzebujesz funkcjonalności zapewnianej przez HttpSocket(na przykład musisz pracować na danych w xml-u dostarczanych choćby przez kanał rss), a z jakichś powodów nie możesz korzystać/migrować na CakePhp1.2, zastosuj poniższą sztuczkę:

Z biblioteki CakePhp1.2 (cake/libs/) do katalogu vendors w Twojej aplikacji (1.1.x) skopiuj pliki
- socket.php
- http_socket.php

W pliku socket.php gdzieś na początku, przed definicją klasy jest linia
uses('validation');
zakomentuj ją (lub usuń) .
Z kolei w pliku http_socket.php linię
uses( 'socket', 'set');
Zamień na
vendor('socket');
uses('set');

Sposób działający pomiedzy wersją 1.2.0.6311 beta a 1.1.16.5421.
Powodzenia

czwartek, 19 czerwca 2008

Jak korzystać z requestAction w CakePHP

Ta bardzo przydatna funkcja nie jest zbyt dobrze opisana w dokumentacji, dlatego pozwolę sobie ją tu opisać.

Object::requestAction(string $url, array $extra);
Służy do łatwego wywoływania funkcji z jednego kontrolera w innym kontrolerze. Sprawa jest prosta, jeżeli wywoływana funkcja potrzebuje jedynie parametrów, które możemy przekazać w url-u (/posts/show/1).
Jednak sprawa komplikuje się, kiedy potrzebna metoda korzysta z danych przesłanych w formularzu. Komplikuje się o tyle, że w wyniku ubogiej dokumentacji, trudno odgadnąć czy jest to możliwe.
Jednak m.in. po to jest parametr $extra. Jeśli wasz kontroler czeka na dane z formularza ['User']['username'] i ['User']['password'], to można je "wcisnąć" do kontrolera poprzez requestAction w następujący sposób:

$data['data'][['User'] = array('username'=> 'ala', 'password' => 'makota');
$this->requestAction('/users/login', $data);

Dzięki tej sztuczce uda Ci się ominąć kilka sytuacji, w których wcześniej pisalibyście osobną funkcję.

Ps. Cake jest pełen takich nieudokumentowanych niespodzianek, które czekają na odkrycie - zachęcam do eksperymentów.
Pps. Szczególnie przydatność requestAction odczujesz, kiedy zaczniesz intensywniej korzystać z pluginów w CakePhp.

piątek, 13 czerwca 2008

Czy każdy może być programistą?

Właśnie teraz, w przerwie w pracy nad komponentem, który miałby automatycznie generować menu w panelu administracyjnym w zależności od zdefiniowanych (w bazie) uprawnień przypomniały mi się słowa jednego z wykładowców UO.
Próbował on odróżnić programistów od normalnych ludzi(sic!). Powiedział, że normalny człowiek, mając za zadanie wykopać 100 metrowy rów weźmie łopatę, tydzień będzie kopał i wykopie. Programista z kolei tydzień będzie myślał, aż wymyśli metodę. Drugi tydzień będzie tą metodę implementował. I po dwóch tygodniach rów będzie wykopany.
W tym momencie na sali zapanowała cisza, może nawet konsternacja, a po chwili doktor dodał "Ha! Ale my teraz takich rowów możemy wykopać 50!".

Kim zatem jest programista? Przede wszystkim jest leniem. Śpieszę dodać: leniem w dobrym tego słowa znaczeniu. Leniem, który nie znosi powtarzać zadania. Leń ów wie do czego służą maszyny, a w szczególności komputery. Jeśli jest coś co poddaje się algorytmizacji - leń-programista nie zrobi tego sam. Leń programista widzi, że wykopanie rowu to:
1. wbić łopatę
2. podnieść łopatę z ziemią
3. odrzucić ziemię w bok
4. sprawdzić, czy już 100 metrów
4a. jeśli nie - powtórz,
4b. jeśli tak - idź po wypłatę

Dlatego śmiem twierdzić, że im bardziej boi się pracy (w sensie "roboty") programista, tym lepiej to o nim świadczy. No i może to nieskromnie zabrzmi, ale drugi dzień pracuję nad tym dynamicznym menu, choć mógłbym w godzinę zrobić to "na sztywno"... i dobrze mi z tym (również dlatego, że przyjdzie następny projekt i nie będzie trzeba tego robić).

Uwaga! blog przeniesiony

Posty na tym blogu już nie będą się pojawiać. Zapraszam gorąco pod nowy adres: blog.grzegorzpawlik.com
Komentowanie artykułów możliwe jest pod nowym adresem.