Blog webdeveloperski Patryk yarpo Jar

Progressive enhancement – tworzenie stron dla kazdego odbiorcy

Autor wiadomości Listopad 16, 2014

Kazdy z nas lubi tworzyc cos bardzo nowoczesnego i przyjaznego programiscie. Pewnie nikt z nas (procz 3 osob ciagle odwiedzajacych te strone za pomoca IE 6) nie znosi tworzyc czegos dla starych i wrednych srodowisk.

Niestety, czasem nie wszystko zalezy od nas. Musimy pojsc na kompromisy i zapewnic takze starym, zgrzybialym srodowiskom podstawowe wsparcie. Istnieje kilka sposob na tworzenie takich stron. W ponizszej prezentacji glownie chcialbym sie skupic nad progressive enhancement (progresywne ulepszanie) oraz wspomniec o kilku innych, np. graceful degradation.

Cache’owanie danych w PHP

Autor wiadomości Listopad 14, 2014

Prezentacja dotyczaca podstaw cache'owania danych.

Zend/PHP: Dlaczego stosowanie view modeli jest dobre

Autor wiadomości Październik 23, 2014

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.
Tagged as: , , , , Czytaj dalej

Ksiazka: Wzorzec MVC w PHP dla profesjonalistów

Autor wiadomości Luty 13, 2014

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.

Require.js – AMD w praktyce

Autor wiadomości Grudzień 16, 2012

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:

  • mieć jakieś podstawy JavaScript
  • zarezerwować 5 minut

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

Autor wiadomości Lipiec 29, 2012

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):

  • PUT
  • DELETE

Uruchamianie funkcji w odpowiednim kontekście

Autor wiadomości Grudzień 14, 2011

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:

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

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

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

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.

Książka: “Programowanie obiektowe w PHP 5”

Autor wiadomości Czerwiec 11, 2011

Okładka Programowanie obiektowe w PHP 5

PHP jest bardzo przyjaznym i popularnym językiem. Jego popularność bierze się w głównej mierze z prostoty. Właśnie - prostoty, a nie prostactwa.

PHP, szczególnie w wersji 5, jest naprawdę pełnoprawnym językiem programowania, pozwalającym na tworzenie dużych i skomplikowanych projektów. Książka Hasina Haydera próbuje pokazać możliwości piątej odsłony języka w zakresie OOP (programowania zorientowanego obiektowo).

W książce spodobał mi się układ. Czytając miałem wrażenie, że tworzy ona całość. Tematy jakby wynikały jeden z drugiego. Pozycja nie jest zbyt obszerna (treści < 250 stron) i czyta się ją szybko i sprawnie. Tekst okraszony został sporą ilością kodu prezentującego aktuanie omawiane aspekty, co także przemawia na korzyść książki.

Ucieszyło mnie także, że jeden rozdział został poświęcony testom jednostkowym, co uważam za bardzo poprawne w nauczaniu "nowego pokolenia" programistów.

[JavaScript] Pseudo MVC na jQuery

Autor wiadomości Maj 5, 2011

Kod HTML coraz częściej naszpikowany jest wieloma artybutami pomocnymi przy wdrażaniu kodu JS do projektu. Czy nie da się z tym czegoś zrobić? Dodatkowo bardzo często kod JS jest "brudny" przez mieszanie wartw: danych, prezentacji i logiki. W małym projekcie to znośne, ale w dużych zaczyna być nie do ogarnięcia. Spróbuję pokazać co można zmienić w tej kwestii.

Strona "spaghetti"

Dawniej stosowało się określenia "spaghetti HTML", mając na myśli kod HTML naszpikowany atrybutami nadającym stronie wygląd. Aby temu zapobiegać zaczęto stosować CSS. W przypadku JS także można zostawić kod HTML czystym od wszelkim artybutów "zdarzeniowych" (`onclick', `onmouseover' itp.). Najpierw kod, gdzie tego nie zrobię i atrybuty będą zaszyte w kodzie HTML:

Tagged as: , , Czytaj dalej

Gettery i settery w PHP

Autor wiadomości Kwiecień 20, 2011

Najpopularniejszym paradygmatem programowania jest programowanie zorientowane obiektowo. Obiekt posiada jakieś właściwości, które [IMO] najczęściej powinny być prywatne. Warto by było móc się do nich jakoś odwoływać, czy to podczas zapisywania danych, czy też w celu odczytu. Do tego bardzo przydatne okazać się mogą funkcje popularnie zwane getter ("akcesor" - pobierająca dane) bądź setter ("mutator" - ustawiająca).

W tym wpisie postaram się pokazać kilka możliwych podejść do tego zagadnienia.