Archive for the ‘praca’ Category
PHP – nie ucz się tego, na miłość…
Siedząc na blipie zauważyłem, że wciąż bardzo wiele osób zaczyna swoją przygodę z programowaniem od języka PHP. Przerażające przy tym, jak wielu z nich (jeśli nie wszyscy) nie lubi dokumentacji; zadają masę pytań, których rozwiązanie można znaleźć po jednym rzucie oka na definicję funkcji. Podobnie z googlem – przerażająca ilość przyszłych “developerów” zamiast spytać wielkiego brata, truje dupę innym tym samym pytaniem, które wcześniej zadano miliony razy i 10 razy tyle padło odpowiedzi.
Jeśli już jednak, drogi czytelniku, postanowiłeś zacząć naukę PHP, oto garść rad ode mnie:
- Nie ucz się programowania w ogóle. Serio. Nie będzie z ciebie żaden programista, co najwyżej masę kwiatków światu po sobie zostawisz.
- Sięgnij po Pythona, albo Ruby’ego. Są łatwiejsze (serio!), przyjemniejsze (o wiele!), doskonalsze (o co nietrudno), a co najważniejsze łatwiej się w nich nauczyć dobrych praktyk i ominąć te złe.
- PHP ma chorą składnię, jest zacofany (nie ratują go nawet nowości w 5.3, którego jeszcze nikt nie używa), a swoją pobłażliwością zachęca początkujących do popełniania błędów. Znam odważnych, którzy uważają, że “warningi” to nic złego, wystarczy wyłączyć ich wyświetlanie. PHP jest też wolne. Straaasznie wolne.
- Jeśli wciąż nie zrezygnowałeś to przedstawię zalety: gigantyczna ilość materiałów w sieci oraz dostępność na serwerach, która też działa w drugą stronę, tj. “serwer uruchamia php, więc nauczę się php.” Tylko po co się cofać? Dzisiaj naprawdę można znaleźć dość tanie serwery obsługujące Pythona i/lub Ruby’ego.
- Wciąż chcesz się uczyć PHP? Zacznij więc z grubej rury – od Symfony. Przejdź adventa od deski do deski. Nauczysz się przy tym (jak szczęście dopomoże) jako-tako organizacji kodu, popełnisz tysiące błędów i napotkasz drugie tyle problemów, które i tak prędzej czy później byś spotkał. Jak ogarniesz tę lekcję i wciąż nie zmądrzejesz to naucz się Zend Frameworka. Zend wymusza od programisty by zrobił więcej i więcej wiedział.
- Za dwa lata, kiedy świat w końcu zrozumie, że może żyć bez PHP, Ty drogi użytkowniku powinieneś być już całkiem sprawnym programistą tego języka, modlącym się o więcej zmian w wersji 6.0.
- Czytaj mądrzejszych od siebie: Fabien Potencier, Burak, Akra, Matthew Weier, Jari Hartikainen.
- A najlepiej przemyśl jeszcze raz, czy programowanie w PHP to aby na pewno dobry pomysł.
I tak do zajebania
Żyjemy w czasach, kiedy ludzie nie mają czasu, więc sobie ułatwiają i tworzą skróty. Zamiast pamiętać adresy tysięcy stron tworzą zakładki składowane w chmurze i aktualizowane na naszych komputerach w domu, pracy, laptopie i telefonie 6286582 generacji (btw – mam chrapkę na motorolkę).
Zamiast śledzić tysiące portali niułsowych wymyślono rss-a, agregatory, zarówno jako aplikacje desktopowe, jak i webowe, na wypadek jakbyśmy korzystali z komputera w domu, pracy, laptopa i telefonu 847365834658 generacji.
Ponieważ nie mamy już czasu na pisanie blogów powstały mikroblogi. Ponieważ nie mamy czasu śledzić i pamiętać tysięcy mikroblogów powstały agregatory…
To wszystko sprawia, że mamy codzienną dawkę tysięcy rzeczy “nie-do-przeoczenia”, na które nie mamy czasu, bo i tak nie mamy czasu na inne ważne rzeczy (pracę, rodzinę, naukę, rozrywkę).
Szykuje mi się semestr zapierdolu od 7:30 do 20 codziennie, od poniedziałku do piątku.
W google readerze mam 462 nieprzeczytane artykuły.
Jest środa, 30. września, jutro początek nowego roku akademickiego.
Jebać PWr, PZPN, PZKOSZ i PLK.
Tak, to post o niczym.
Nie, nie ulżyło mi.
Na półce czeka wciąż nieprzeczytane The End A War oraz klasyka informatyki. I Fallout 3. I Mass Effect (a niedługo mafia 2, mass effect 2…).
Ble.
Komiczny bug
Step 1: odpalić firefoxa.
Step 2: odpalić np. try it editor.
Step 3: wrzucić taki kod:
<html>
<body>
<script type=”text/javascript”>
document.write(“00 = ” + parseInt(“00″)+ “<br />”);
document.write(“01 = ” + parseInt(“01″) + “<br />”);
document.write(“02 = ” + parseInt(“02″) + “<br />”);
document.write(“03 = ” + parseInt(“03″) + “<br />”);
document.write(“04 = ” + parseInt(“04″) + “<br />”);
document.write(“05 = ” + parseInt(“05″) + “<br />”);
document.write(“06 = ” + parseInt(“06″) + “<br />”);
document.write(“07 = ” + parseInt(“07″) + “<br />”);
document.write(“08 = ” + parseInt(“08″)+ “<br />”);
document.write(“09 = ” + parseInt(“09″)+ “<br />”);
document.write(“10 = ” + parseInt(“10″)+ “<br />”);
document.write(“8 = ” + parseInt(“8″)+ “<br />”);
document.write(“9 = ” + parseInt(“9″)+ “<br />”);
</script>
</body>
</html>
i przetestować.
Step 4: Nie parać się webdeveloperką.
PHPTAL rządzi!!1!1!oneoneone
S(z)marty wyrobiły we mnie odrazę do systemu szablonów – po stokroć wolałem wbudowane we frameworki pseudo systemy, które polegają na wymieszaniu prościutkiego do bólu php1 z htmlem. Niby mamy zupę, ale w zasadzie oddzielamy prezentację od treści – w szablonach jedynie wyświetlamy dynamiczne wartości, zero obróbki2.
Wiedziałem jednak, że takie rozwiązanie ma swoje wady i są lepsze, ale jakoś nie potrafiłem się zmotywować, żeby w końcu wypróbować PHPTAL. W końcu jednak nadeszło nie ma zmiłuj się i wypróbowałem. Powiem krótko: mniam!!
- błyskawicznie można się tego nauczyć – trzy, cztery godzinki i trzaskasz szablony, jakbyś od małego tego używał
- banalna integracja
- kooooooooooooooooooooooooooooooooooooooooooooood!!!
Gotowe szablony można odpalić na lokalu w przeglądarce. Bez wykorzystania php (!!). Specyficzna konstrukcja tagów sprawia, że możemy wewnątrz szablonów przygotowywać od razu przykładowe dane, które wyświetlą się tylko i wyłącznie, gdy szablon nie zostanie przepuszczony przez interpreter PHPTALa. Sam kod jest tak samo czytelny jak czysty XHTML – zero spaghetti! Jedyne co mamy nadmiarowe w stosunku do czystego HTMLa to dodatkowe atrybuty tu i ówdzie. Polecam!
Wady? Przydałoby się coś w rodzaju frameworkowych action(‘akcja’, array(‘zmienna1′, ‘zmienna2′…)) – trzeba się nieco nagłowić, żeby się tak odwoływać. Dla Zenda najprostsze rozwiązanie jakie mi do tej pory przyszło na myśl to:
<div tal:content="structure php:
this.action('akcja',
'kontroler',
'moduł',
array('zmienna1' => 'wartość1'))">
Tu będzie jakaś treść podmieniona przez naszą akcję
</div>
Chociaż oczywiście może istnieć jakieś ładniejsze rozwiązanie
XAMPP, a VirtualHost-y
Ktoś biegły w administrowaniu Apachem pewnie zdziwi się takimi poradami, ale to nie dla nich
Od kiedy tylko pamiętam miałem zawsze problem, by tak skonfigurować vhosty, by te nie “nakryły” localhosta. Inaczej mówiąc – po dodaniu nowego vhosta (np. “projekt”) strona http://localhost/ wskazywała właśnie na niego, zamiast na stronę z konfiguracją serwera; że to jednak mało upierdliwy problem, a ja z natury jestem leniwy, to nie wysilałem się zbytnio, by wyguglać rozwiązanie problemu.
Rozwiązanie okazuje się banalne – choć z drugiej strony mam wrażenie, że kiedyś stosowałem podobne i nie działało
W każdym bądź razie…
- edytujemy c:\windows\system32\drivers\etc\hosts i dodajemy jakiś adres (np. 127.0.0.1 projekt)
- otwieramy c:\xampp\apache\conf\httpd i odkomentowujemy linijkę:
LoadModule rewrite_module modules/mod_rewrite.so - otwieramy c:\xampp\apache\conf\httpd\extra\httpd-vhosts i dodajemy takie oto wpisy:
NameVirtualHost *:80 <virtualhost *:80> DocumentRoot "C:/xampp/htdocs" ServerName localhost <directory "C:/xampp/htdocs"> Options Indexes FollowSymLinks MultiViews Includes ExecCGI AllowOverride All Order allow,deny Allow from all </directory> </virtualhost> <virtualhost *:80> ServerName projekt DocumentRoot "C:/xampp/htdocs/projekt" <directory "C:/xampp/htdocs/projekt"> Options FollowSymLinks AllowOverride All </directory> </virtualhost> - Restartujemy serwer
Oczywiście nic nie stoi na przeszkodzie, by projekt znajdował się w zupełnie innym katalogu niż sam serwer, a także, by w ramach projektu DocumentRoot wskazywał na jakiś wew. katalog1.
- jest to nawet zalecane ze względów bezpieczeństwa, ale to temat na dłuższą gadkę [↩]
