Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: sokzzuka, dodany: 16.10.2010 23:01, tagi: php

Jeżeli śledzicie dzone.com. Pewnie zauważyliście, że od pewnego czasu na blogach osób związanych z Java’ą przetaczają się dwa związane ze sobą tematy. Pierwszym z nich jest kwestia uczynienia Java’y wolną (udostępnienie jej na wolnej licencji, uniezależnienie od Oracle) a drugim z nich jest kwestia zmian w języku. Kilka osób poddało pomysł aby zrobić fork Java’y wydany na jednej z licencji open-source’owych. Co do zmian w języku to część osób rozczarowana tym jaki kształt ma w tej chwili język oraz powolnym wprowadzaniem nowości do niego doszła również do wniosku, że najlepiej było by stworzyć nową wersję Java’y niekompatybilną wstecznie (Backward Incompatibile) Java. Znalazło się jak to zwykle bywa sporo osób, które stwierdziły ze oba pomysły jak najbardziej idą ze sobą w parze i proponują stworzenie „wolnego” fork’a Javy i rozwijanie go w sposób niekompatybilny wstecznie. Mnie nasuwa się jedynie pytanie, czy taki fork dalej będzie (i będzie można go nazywać) Java’ą ?

Postanowiłem odnieść tą sytuację do własnego podwórka i zastanowić się co by było gdyby stworzyć fork interpretera PHP. Jakie zmiany ja przeprowadziłbym w języku i dlaczego oraz czy po tych zmianach ten fork można by nazwać jeszcze PHP. Zachęcam też wszystkich do zabawy i wpisywania własnych propozycji. Jedną z pierwszych rzeczy jaką był zmienił, to usunięcie przestarzałych rzeczy typu register globals, short open tag, magic quotes, safe mode, allow call time pass by reference.

Drugą rzeczą było by przejrzenie pliku php.ini i usunięcie wszystkich opcji, które w jakikolwiek sposób niejawnie wpływają na wykonywanie skryptów – banowanie klas, funkcji etc. Domyślam się, że po tej operacji, zostały by tylko opcje związane z włączaniem/wyłączaniem rozszerzeń oraz limit czasu i pamięci.

Trzecią rzeczą było by zastąpienie wszystkich error’ów wyjątkami (z wyjątkiem parse_error i compile_error z wiadomych względów).

Zmiany omówione jak narazie w zasadzie nie zmieniają samej istoty języka a tylko sposób działania interpretera. Dalsze rzeczy jednak już jak nabardziej.

Po czwarte usuną bym słowa kluczowe i mechanizmy: global i goto. Są to pozostałości po językach bardziej niskopoziomowych i zwykle po prostu zaciemniają kod. Co więcej, pisząc w sposób obiektowy, nie ma w ogóle potrzeby ich wykorzystywania.

Po piąte – biblioteka standardowa. Zamiast jednej globalnej przestrzeni nazw przesunął bym funkcje z różnorakich rozszerzeń do własnych namespace’ów.

Po szóste – typy proste. Typy proste zamieniłbym na obiekty, które dziedziczą z klasy ‘Value’. Obiekty których klasy dziedziczą z klasy ‘Value’ były by nie zmienialne (immutable) oraz przekazywane przez kopię. Obiekty użytkownika, które dziedziczyły by z abstrakcyjnej klasy Value mogły by też same obsługiwać rzutowanie (funkcja typu __cast).

Po siódme zmiana orientacji języka na bardziej funkcjonalno-obiektowy niż proceduralno-obiektowy. Usunięcie możliwości przekazywania przez referencje typów prostych – konsekwencja punktu szóstego.

Po ósme – anonimowe klasy i obiekty oraz obiekty typu singleton jak w Scala’i oraz usunięcie możliwości deklaracji statycznych metod i pól klasy.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 16.10.2010 15:30, tagi: jquery, javascript

Kilka godzin temu napisałem o wydaniu pierwszej alfy jQuery Mobile, a tutaj programiści pracujący nad podstawową wersją biblioteki wydali jQuery 1.4.3. Obok usunięcia kilku błędów i wprowadzeniu ogólnych usprawnień, w bibliotece pojawiły się nowe interesujące funkcjonalności. Są to między innymi:

  • przepisanie całego modułu odpowiedzialnego za CSS. Od wersji 1.4.3 można tworzyć własne pluginy, które mogą korzystać z funkcji css i/lub animate. Jako przykład można podać plugin jQuery Rotate.
    $('#myDiv').css('rotate', 90);
    $('#myDiv').animate({rotate: 180});
  • znaczna poprawa wydajności metod odpowiedzialnych za przeszukiwanie drzewa DOM.
  • prosta, aczkolwiek bardzo potrzebna rozbudowa zdarzenia click, którego wynikiem powinno być zablokowanie domyślnej akcji
    $("a").bind("click", false)
  • jQuery.type – funkcja pozwalająca określić typ (wewnętrzną klasę Javascript) wskazanej wartości
  • jQuery.fx.interval – właściwość pozwalająca na określenie ilości klatek na sekundę dla uruchamianej animacji. Dzięki temu przeglądarki, które korzystają z akceleracji sprzętowej, będą w stanie wyświetlać bardziej płynne animacje.
  • jQuery.isWindow – prosta metoda pozwalająca na określenie, czy wskazany obiekt jest oknem (window).
  • szereg usprawnień w module data, m.in. wsparcie dla atrybutów data- w HTML5.

Autor wpisu: batman, dodany: 16.10.2010 12:57, tagi: jquery, javascript

Nie tak dawno, bo zaledwie dwa miesiące temu, ekipa odpowiedzialna za jQuery ogłosiła rozpoczęcie prac nad mobilną wersją biblioteki. Dzisiaj programiści otrzymali w swoje ręce pierwszą wersję alfa jQuery Mobile.

W wydanej właśnie wersji mamy do dyspozycji takie komponenty jak:

  • zarządzanie wyglądem (Theming)
  • kontrolki formularza
  • okna dialogowe
  • widoki list
  • zdarzenia
  • efekty przejścia

Biblioteka jQuery Mobile została napisana w taki sposób, aby była jak najbardziej przyjazna dla użytkownika. Udało się to uzyskać poprzez zastosowanie szeregu dobrych praktyk. Są to między innymi:

  • Progressive Enhancement – progresywne rozszerzanie funkcjonalności. Nowa biblioteka skupia się na dodawaniu funkcjonalności do już istniejącej treści. Dzięki takiemu podejściu, przeglądarki nieobsługujące Javascript będą w stanie poprawnie wyświetlić stronę.
  • Graceful Degradation – stopniowe zmniejszanie jakości prezentowanych treści w zależności od funkcjonalności obsługiwanych przez przeglądarkę. Dzięki temu eliminuje się zero jedynkowe podejście do problemu, czyli działa – nie działa. Oznacza to tyle, że w przypadku braku obsługi jakichś właściwości CSS, przeglądarka wyświetli standardowy element, np. przycisk pozbawiony gradientów, cienia, itp.
  • konfiguracja oparta o język znaczników – jQuery Mobile nie wymaga do konfiguracji ani jednego wiersza Javascript. Wszystko odbywa się w kodzie HTML poprzez odpowiednie atrybuty.
  • niewielki rozmiar – w przypadku urządzeń mobilnych, rozmiar ma znaczenie. Cały kod Javascript “waży” zaledwie 12KB, a CSS 6KB.

Skąd pobrać?

Niestety w chwili powstawania tego wpisu, wszystkie linki prowadzące do dokumentacji oraz do plików źródłowych były niepoprawne. Dlatego też odsyłam was na oficjalną stronę projektu, gdzie w niedługim czasie powinny się pojawić poprawione linki.

Autor wpisu: matipl, dodany: 15.10.2010 12:13, tagi: php

Zend FrameworkKto by przypuszczał, że Zend Framework 1.11 wniesie tyle świeżości.

Wczoraj została udostępniona jako wersja BETA1 i robi spore wrażenie.

Wsparcie dla wersji mobilnych (Mobile Support)

Prawdziwa rewolucja. Zend Framework 1.11 posiada wsparcie dla urządzeń mobilnych. Wszystko za sprawą Raphael Carles (CTO Interakting), który napisał Zend_Http_UserAgent. Nowy komponent ma za zadanie wykryć User-Agent’a oraz na tej podstawie sprawdzić możliwości urządzenia mobilnego. W łatwy sposób można dopisać backendy dla kolejnych urządzeń.

Dzięki wtyczce dla Zend_Application oraz Zend_View_Helper_UserAgent w łatwy sposób możemy dostosować generowane dane wyjściowe z uwzględnieniem urządzenia, dla którego serwujemy tą treść (różne layouty, obrazki itp.).

Zend_Cloud: SimpleCloud API

Podczas ZendCon 2009 ogłoszono prototyp SimpleCloud API. W tej wersji mamy pierwsze oficjalne wsparcie od strony Zend Frameworka zawarte w Zend_Cloud. Dzięki temu możemy w chmurze korzystać z:

  • Document Services (Amazon SimpleDB i Windows Azure’s Table Storage)
  • Queue Services (Amazon Simple Queue Service, Windows Azure’s Queue Service, Zend_Queue)
  • Storage Services (S3, Windows Azure’s Blog Storage, Nirvanix, lokalny system plików).

W ten prosty sposób możemy przenośić swoje dane pomiedzy różnymi adapterami. W ciągu kilku miesięcy powinny pojawić się kolejne adaptery.

Podziękowania dla: Wil Sinclair and Stas Malyshev, którzy zainicjowali Zend_Cloud

SimpleDB Support

Od teraz ZF ma wsparcie dla Simple Storage Service (S3), Simple Queue Service (SQS), oraz Elastic Cloud Compute (EC2). Jest wprowadzona obsługa wszystkich operacji na SimpleDB poprzez Zend_Service_Amazon_SimpleDb.

Podziękowania dla: Wil Sinclair

eBay Findings API Support

eBay od dawna posiada rozbudowane REST API pozwalające programistom tworzenie interakcyjnych aplikacji z dużą ilością danych. Nowy Zend Framework (1.11) zawiera Zend_Service_Ebay_Findings, które w pełni obsługuje eBay Findings API. Pozwala to na tworzenie zapytań przez programistów dot. szczegółów aukcji eBay z uwzględnieniem kategorii i słów kluczowych.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 15.10.2010 08:10, tagi: zend_framework

Wydawać by się mogło, iż ekipa odpowiedzialna za Zend Framework skupi się na drugiej wersji tego frameworka, a do wersji pierwszej będzie wydawać jedynie poprawki. Nic bardziej mylnego. Dziś ukazała się wersja beta frameworka oznaczona numerem 1.11. Wydanie to oferuje szereg nowych funkcjonalności, między innymi:

  • Zend_Http_UserAgent – wykrywanie urządzeń mobilnych. Od tego wydania znacznie prościej będzie tworzyć aplikacje oparte o Zend Framework na urządzenia mobilne
  • Zend_Cloud – implementacja SimpleCloud API.
  • obsługa SimpleDB, nierelacyjnej bazy danych dostarczanej przez firmę Amazon.
  • Zend_Service_Ebay – dzięki tym klasom programiści zyskają możliwość pobierania informacji na temat aukcji, kategorii oraz wyszukiwać po słowach kluczowych
  • nowe formaty konfiguracji frameworka – od wersji 1.11 będzie można korzystać z plików konfiguracyjnych w formacie JSON oraz YAML.
  • Zend_Service_ShortUrl – dzięki tej funkcjonalności będzie można korzystać z popularnych “skracaczy” linków
  • nowe helpery widoku:
    • Zend_View_Helper_UserAgent – wykorzystujący Zend_Http_UserAgent
    • Zend_View_Helper_TinySrc – helper pozwalający w zależności od urządzenia, na którym wyświetlana jest strona, na podmianę grafik
    • Zend_View_Helper_Gravatar – implementacja Gravatar API, pozwalająca na korzystanie z usługi Gravarat
  • poprawa bezpieczeństwa

Najnowszą wersję frameworka znajdziecie pod adresem: framework.zend.com/download/latest

Autor wpisu: batman, dodany: 14.10.2010 08:00, tagi: jquery, javascript

Na początku miesiąca napisałem recenzję książki jQuery. Poradnik programisty. Od tego czasu przeczytałem ją jeszcze raz i z czystym sumieniem oddam ją komuś, kto jako pierwszy odpowie na następujące pytanie.

Co to za miejsce i gdzie się ono znajduje?

DSC09105

Jakiś czas temu pisałem o tym miejscu, więc wystarczy poszukać w archiwum. Odpowiedzieć można w komentarzu pod postem lub wysyłając wiadomość przy pomocy formularza kontaktowego. Powodzenia!

Autor wpisu: batman, dodany: 12.10.2010 08:00, tagi: php, symfony

Programistę aplikacji internetowych, którzy nie korzysta z żadnego frameworka, można porównać do stolarza, który produkuje meble przy pomocy młotka i gwoździ. Niby się da, ale efekt końcowy jest zawsze taki sam – opłakany. Taka właśnie myśl przyświecała mi podczas poznawania frameworków PHP. Ostatecznie mój wybór padł na Zend Frameworka i nie żałuję tej decyzji. Jakiś czas temu przeczytałem wpis Zyxa na temat EventDispatchera, który można zleźć w Symfony 2 i postanowiłem sprawdzić o co tyle szumu. Od razu zaznaczę, iż wszystkie moje wnioski dotyczą nieukończonej jeszcze wersji 2 (celowo nie zaglądałem do aktualnej wersji – 1.4), a co za tym idzie coś, co teraz nie działa, może być naprawione w stabilnej wersji. Co więcej, moje podejście do frameworków PHP jest nieco wypaczone ze względu na ZF, więc zanim zaczniecie po mnie jeździć jak po łysej kobyle, weźcie to pod uwagę.

Instalacja

Na ten temat zbyt dużo nie da się napisać. Ściągamy gotowy sandbox, rozpakowujemy na serwerze i uruchamiany testową stronę. Proste jak konstrukcja cepa.

Pierwsze kroki

Jak to zwykle bywa w przypadku nauki czegoś nowego, staramy się oprzeć na zdobytych wcześniej doświadczeniach. Nie inaczej było tym razem. Dzięki temu, że dobrze znam ZF oraz mam jakieś pojęcie o ASP.NET MVC, stosunkowo łatwo było mi się odnaleźć w strukturze projektu i aplikacji. Wprawdzie po przeczytaniu The Big Picture pojawiło się więcej pytań niż odpowiedzi, byłem jednak pozytywnie zaskoczony prostotą, jaką oferuje Symfony 2. Jedyne co mi się nie podobało to fakt, iż osoby nie mające pojęcia o frameworkach, rozbiją się o ścianę swojej niewiedzy, co może skutecznie ich zniechęcić do dalszej nauki.

Widoki

Na samym początku opisu natknąłem się na informację o szablonach Twig. Nie należę do zwolenników szablonów w PHP, więc nieco mnie zmartwiło, że framework ma takie coś wbudowane. Na szczęście można korzystać z czystego PHP.

Po tym niewielkim zgrzycie, zagłębiłem się w lekturę dalszej części przewodnika, w której opisane zostały szablony (Templates) oraz sloty (Slots). Generalnie, założenia nie odbiegają znacząco od tego, co poznałem w ZF. Zend_Layout, Zend_View oraz helpery widoku dobrze mnie przygotowały do tego, co zobaczyłem w Symfony 2.

Kontroler

Ta część była nieco enigmatyczna. Bez żadnego łagodnego wprowadzenia, od razy skok na głęboką wodę. Kolejny raz doświadczenie zdobyte podczas pracy z ZF zaowocowało. Opisane w tej części przewodnika formaty są niczym innym jak kontekstami znanymi z Zend Frameworka. Nieco inaczej się je definiuje, ale zasada działania jest identyczna.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.