Zend/PHP: Dlaczego stosowanie view modeli jest dobre

Chcialbym w tym wpisie pokazac, co zrobic, aby kod kontrolerow i plikow widoku byl przyjemniejszy w czytaniu i prostszy w utrzymaniu. Dodatkowo, za darmo uda sie nam zyskac duzo prostszy do testowania kod! Na co czekac? Zaczynajmy!

Na poczatek warto wiedziec:

  • Podstawy PHP,
  • Swiadomosc istnienia MVC,
  • Posiadanie zdrowego rozsadku i instynktu samozachowawczego.

Czytaj dalej Zend/PHP: Dlaczego stosowanie view modeli jest dobre

Ksiazka: Wzorzec MVC w PHP dla profesjonalistów

Wzorzec MVC w PHP dla profesjonalistówWzorzec MVC w PHP dla profesjonalistów

Wzorzec MVC na dobre zagoscil we wszelakich projektach informatycznych. Pozwala na rozsadny podzial na warstwy i oddzielenie logiki od danych, a takze kodu robiacego cokolwiek „na serwerze” od kodu wyswietlajacego np. strone internetowa.

Chris Pitt bardzo starannie opisuje kolejno, co trzeba napisac (i w tracie ksiazki sam pisze pokazujac czytelnikowi wszystkie kroki), aby stworzyc wlasny framework PHP implementujacy wzorzec MVC.

Czytaj dalej Ksiazka: Wzorzec MVC w PHP dla profesjonalistów

Drugi meet.js w Gdańsku

Kolejne spotkanie z cyklu meet.js miało wczoraj miejsce „tradycyjnie” w Inkubatorze Starter w Gdańsku. Po raz kolejny trójmiejscy front-endowcy pokazali, że są chętni dzielenia sie wiedzą dotyczącą JavaScript. Na widowni zasiadło znowu ponad 100 osób (dokładnych statystyk nie znam, ale chyba było odrobinę mniej osób niż zeszłym razem).

Jeśli chodzi o prezentacje to myślę, że także można być usatysfakcjonowanym – Node.js, MongoDB, łańcuchy prototypów oraz asm.js. Z pewnością dało to niezły obraz aktualnych trendów w JS i technologiach pobocznych.

Moim zdaniem najciekawsze było wystąpienie Błażeja Krysiaka – „MongoDB – NoSQL’owa baza danych w JS”. Prezentacja niezwykle przejrzysta, techniczna, ale z doskonale zachowaną proporcją między kodem, a poziomem abstracji pozwalającym wynieść wiele osobom, które pierwszy raz słyszały o nierelacyjnych bazach danych. Brawo!

Ponoć przez wakacje czeka nas przerwa w spotkaniach meet.js. Mam nadzieję, że po letniej przerwie wracamy z nowymi, ciekawymi prelekcjami.

Specyficzność selektorów CSS

Każda większa strona internetowa posiada duży (lub bardzo duży) zbiór reguł CSS, czasem umieszczonych w kilku plikach. Do tego nierzadko znaleźć można dodatkowe reguły wklejone w znaczniku <style />, a także wstrzyknięte inline definicje przez atrybut `style’ znaczników HTML (styl wewnętrzny).

Nie jest niczym dziwnym, że do jednego elementu w takich ogromie kodu zostanie przypasowana więcej niż jedna reguła. Może się zdarzyć, że reguły będą definiować te same właściwości wyglądu elementu w różny sposób. Jak w takiej sytuacji dojść do tego jak powinien wyglądać dany element? Odpowiedzią jest specyficzność (ang. specificity) każdego z selektorów. Można się także spotkać z określeniem „precyzja selektorów”. W przypadku kilku deklaracji będących ze sobą w konflikcie (np. 3-krotnej definicji koloru tekstu) wybrana zostaje ta definicja tego selektora, który ma najwyższą specyficzność. Czytaj dalej Specyficzność selektorów CSS

Książka: „Scrum. O zwinnym zarządzaniu projektami”

Scrum. O zwinnym zarządzaniu projektamiScrum. O zwinnym zarządzaniu projektami

Scrum jest najpopularniejszą zwinną metodyką zarządzania projektem, a także jedną z najdynamiczniej wdrażanych w różnych firmach.

Mariusz Chrapko przedstawia się w książce jako doświadczony scrumowiec, który chętnie podzieli się z czytelnikiem częścią swojej wiedzy. Sądzę, że z książki „Scrum. O zwinnym …” można się naprawdę wiele nauczyć. Autor używa przyjemnego i zrozumiałego języka, okraszając swoją opowieść licznymi anegdotami (nie tylko „z życia IT”).

Ze słowem „scrum” zawsze kojarzyły mi się dwa inne „serum” i „sacrum”. W opisywanej pozycji Scrum jest uznawany za „serum”. Warto jednak nadmienić, że w kilku miejscach autor przyznaje, że w konkretnych sytuacjach, konkretni ludzie lub całe organizacje niezbyt potrafili pracować zgodnie ze scrumem. Mówiąc szczerze zdziwiłbym się, gdyby w takiej książce nie uznawano opisywanej metodyki jako „serum”. Oceniam jednak, że autor całkiem zgrabnie wplótł pewne ostrzeżenia przed ryzykiem związanym z nowym podejściem. W przypadku drugiego słowa też początkowo odnosiłem wrażenie, że wszystko jest naciągane pod scruma, co jest prawdą tylko częściowo.  W dalszej części lektury przekonałem się, iż to jednak scrum ma służyć ludziom, a nie ludzie scrumowi (choćby duża elastyczność związana z codziennymi spotkaniami zespołów zdalnych). Czytaj dalej Książka: „Scrum. O zwinnym zarządzaniu projektami”

Require.js – AMD w praktyce

Już kilkukrotnie poruszałem temat tworzenia modułów (czasem nawet „klas”) w JavaScripcie. Tym razem coś nowego – asynchroniczne definiowanie modułów. W skrócie AMD (ang. asynchronous module definition). Coraz więcej znanych frameworków i bibliotek wykorzystuje właśnie to podejście (choćby Dojo i jQuery).

W tym wpisie spróbuję pokazać dlaczego powstało takie rozwiązanie oraz przedstawić kilka prostych zastosowań.

Na początek warto:

REST – ciekawszy sposób na komunikację client-server

REST (ang. Representational State Transfer) jest wzorcem narzucającym dobre praktyki tworzenia architektury aplikacji rozproszonych. RESTful Webservices (inaczej RESTful web API) jest usługą sieciową zaimplementowaną na bazie protokołu HTTP i głównych zasad wzorca REST. W tym wpisie postaram się pokazać (bardzo) podstawowe założenia.

Ważnym założeniem REST jest istnienie zasobów (ang. resources) jako źródeł danych a także żądana akcja. Ale może po kolei…

Zapomniane metody HTTP w Ajaksie

Komunikując się z serwerem najczęściej korzysta się z dwóch metod:

  • GET
  • POST

Co więcej, często wykorzystuje się je nieprzemyślany sposób (aby nie powiedzieć losowy). Nigdy nie wiadomo, czy żądanie doda, usunie, nadpisze czy tylko pobierze dane z serwera. A szkoda, bo przecież o ile ładniej jest patrzeć w konsole Firebuga i po samym rodzaju metody odczytywać jakiego rodzaju operacja została wywołana.

Tytułowe „zapomniane” metody to (jest ich więcej, ale nie są potrzebne dla tego wpisu):

Książka: „The Smashing Book #2. Edycja polska”

The Smashing Book #2. Edycja polskaThe Smashing Book #2. Edycja polska

Popularnego bloga www.smashingmagazine.com prawdopodobnie większości nie trzeba przedstawiać. Dla tych, którzy jeszcze go nie znają jest to jeden z najbardziej poważanych blogów dla web developerów i web designerów.

Autorom piszącym na blogu widocznie nie wystarczyła już tamta forma i zabrali się za stworzenie książki. Dziesięciu autorów stworzyło książkę (z 10 rozdziałami), która w sposób bardzo przekrojowy mówi o całym procesie projektowania, tworzenia (w tym lekko zahaczając o programowanie), promocji i utrzymania strony. Choć nie tylko o stronach jest tu mowa. Właściwie niektóre tematy zaskoczyły mnie całkowicie, choćby rozdział o typografii (w dużym skrócie czcionki)
pokazał mi jak rozległy to temat i jak niewiele w tej kwestii wiem.

Ciekawym jest to, że każdy rozdział jest napisany przez kogoś innego. Trudno oczekiwać, że jedna osoba miałaby tak rozległą wiedzę popartą doświadczeniem i jeszcze umiałaby to opisać w zjadliwy sposób. Czytaj dalej Książka: „The Smashing Book #2. Edycja polska”

Uruchamianie funkcji w odpowiednim kontekście

Ostatnio kolega (zapraszam na jego blog) zapytał mnie jak uruchomić funkcję obsługi zdarzenia (ang. event handler) w odpowiednim kontekście – słowem: jak sterować kontekstem funkcji w JavaScript:

[javascript]domNode.addEventListener("click", function() {
console.log(this === window, this === domNode);
} , false);[/javascript]

Idąc tropem opisanym we wpisie o operatorze `this’ zaproponowałem wykorzystanie metody `apply’ bądź `call’:

[javascript]function handler()
{
console.log(this === window, this); // this === Number (obiekt liczby = 1)
}
domNode.addEventListener("click", function() { handler.apply(1); } , false);[/javascript]

Działa to tak jak oczekiwano – starczy podać jako parametr metody `apply’ odpowiedni kontekst. Nie musi to wcale być jakiś skomplikowany obiekt. Powyżej przekazałem po prostu wartość `1′, która została zrzutowana do obiektu Number. Czytaj dalej Uruchamianie funkcji w odpowiednim kontekście

Tilt 3D – nowa jakość webinspekcji

Każdy z nas na pewno uwielbia firebuga. Część pewnie używa także innych dostępnych wtyczek pozwalających na podejrzenie wnętrza strony.

Niedawno na blogu mozilli znalazłem ciekawy wpis o wtyczce Tilt 3D pozwalającej podejrzeć stronę w 3D!

Sam zainstalowałem już tę wtyczkę (można ją znaleźć w bibliotece wtyczek ff, po zainstalowaniu dostępna z menu „narzędzia->dla programistów->Tilt” lub Ctrl+Shift+M).

Enjoy! 🙂