Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: matipl, dodany: 29.12.2010 10:55, tagi: php

4Developers 2011Chwilę przed świętami ruszyła rejestracja na kolejną edycję (trzecią) 4Developers. Tym razem odbędzie się ona w Warszawie w dniu 4. kwietnia 2011.

Wzorem z poprzednich lat „pierwszy nabór” jest całkowicie w ciemno (brak agendy, prelegentów itp.), w zamian jeśli zarejestrujemy się do 1 stycznia 2011 roku zapłacimy za udział tylko 170 zł. Co w zamian? Wyłącznie marka PROIDEA, która wcześniej organizowała 4Developers czy JDD.

Konferencja 4Developers 2011 podzielona jest na 4 sesje:

  • Java
  • Zarządzanie projektami IT
  • Wydajność i skalowalność
  • PHP

W tym momencie zapisów nie musimy decydować się na konkretną sesję. Ja najchętniej poczekam do opublikowania całej agendy. Agenda PHP w zeszłym roku nie powalała, ale czego można oczekiwać od 8-godzinnej konferencji z 45 minutowymi prelekcjami. Natomiast cieszy mnie fakt oficjalnego zniknięcia z sesji „.Net & C#” (bez urazy), a wprowadzenie „Wydajność i skalowalność„.

Jeśli ktoś nie potrafi się zdecydować bez agendy, dodam że styczniowa cena nie jest już tak miła dla oka – 270 zł, ale na pewno w tym czasie pojawią się pierwsze informacje o tematach edycji 2011. Później będzie tylko gorzej:

  • 382.00 PLN do 27 Lutego 2011
  • 490.00 PLN do 27 Marca 2011
  • 790.00 PLN Last MINUTE – do 4 Kwietnia 2011

Dlatego radziłbym decydować się jeszcze przed Sylwestrem. Ja już się zapisałem, 170 zł to nie majątek, a bardzo mnie cieszy że w tym roku 4Developers odbędzie się w Warszawie.

Rejestracja na 4Developers 2011

Autor wpisu: batman, dodany: 29.12.2010 09:22, tagi: javascript, jquery

Nie wiedzieć czemu koniec roku obfituje w wysyp pluginów do jQuery. Nie tak dawno, bo zaledwie wczoraj pisałem o Contained Sticky Scroll, a już natknąłem się na kolejny plugin, który ułatwi nam pracę. Jquery Custom Content Scroller, bo o nim mowa, wprowadza funkcjonalność scrollbara, którą można dodać do dowolnego elementu na stronie.

Plugin zależny jest od sporej ilości bibliotek – jquery-ui.min.js, jquery.easing.1.3.js, jquery.mousewheel.min.js. Autor skorzystał z nich wszystkich i stworzył fajnie działający plugin, którego wygląd można dowolnie modyfikować.

Plugin możecie pobrać ze strony autora. Autor przygotował również demo, które prezentuje jego możliwości.

Autor wpisu: batman, dodany: 29.12.2010 08:54, tagi: jquery, javascript

Ekipa odpowiedzialna za jQuery ciężko pracuje nad kolejnymi wersjami tej najpopularniejszej biblioteki Javascript. Na horyzoncie pojawiła się wersja 1.5, która wprowadza szereg zmian do biblioteki, zwiększa jej wydajność oraz uniwersalność. Największe zmiany zajdą w komponencie $.ajax, który został przepisany od nowa i zyskał szereg nowych funkcjonalności.

Pierwsze co rzuca się w oczy, jest zmiana sygnatury, która wyglądać będzie następująco:

jQuery.ajax( [ url ] , [ options ])

Kolejną wprowadzoną zmianą jest dodanie obsługi do timeoutu oraz przerwania (abort) do każdego żądania. Co więcej, obiekt XmlHttpRequest (XHR) zostanie ukryty przed programistą i zamiast niego udostępniony zostanie jXHR (nazwa robocza) dostarczający getery i setery dla nagłówków, możliwość przerywania żądania oraz możliwość przeglądania takich danych jak viewState, responseXML oraz responseText. Wprowadzony obiekt będzie również cechował się zachowaniem znanym z Promise. Oznacza to, że będzie można dodawać callbacki success, error oraz complete do żądań, które już się zakończyły, na przykład

jQuery.getJSON( url ).error( errorCallback )

Z nowości jakie pojawią się w komponencie $.ajax nie można pominąć nowej architektury, która będzie pozwalała na tworzenie własnych typów danych (dataType) oraz własnych transportów.

Ostatnią z większych zmian jest wprowadzenie usprawnień w już istniejących funkcjonalnościach. Jako callback do metod success, complete oraz error będzie można podać tablicę funkcji.

Jeśli macie ochotę sprawdzić w praktyce opisane powyżej zmiany, możecie pobrać deweloperską wersję biblioteki (nie do użytku produkcyjnego).

źródło: blog.jquery.com

Autor wpisu: batman, dodany: 28.12.2010 09:48, tagi: jquery, javascript

Mam dla was kolejny ciekawy plugin jQuery, znaleziony w zakamarkach Internetu. Tym razem jest to Contained Sticky Scroll, czyli coś, co doda na stronie element reagujący na przewijanie tejże strony. Co w nim takiego ciekawego? To, że przewijana treść nie opuści pojemnika, w którym się znajduje oraz to, że przewijanie można w dowolnym momencie wyłączyć. Jeśli nadal nie wiecie o co chodzi, koniecznie obejrzyjcie demo. Na stronie znajdziecie również dokumentację tego pluginu. Niestety autor nie dostarczył linka do pobrania, więc należy go wyciągnąć ze strony samemu - http://blog.echoenduring.com/wp-content/uploads/demos/echo_ContainedStickyScroll/jquery-contained-sticky-scroll.js.

Autor wpisu: sokzzuka, dodany: 27.12.2010 08:11, tagi: php

Kilka dni temu, Mathias Grimm, zgłosił na grupie php.internals propozycję dodania makr preprocesora do PHP. Miały by działać one analogicznie jak te w C, z wyjątkiem tego, że były by deklarowane za pomocą funkcji MACRO(‘nazwa_makra’,'jakas_tresc_makra’). Propozycja nie spotkała się raczej z entuzjastycznym przyjęciem. Oponenci argumentowali, że z racji na dynamiczną naturę języka dodanie makr nie wnosi żadnej nowej jakości i tylko zaciemnia kod dla osób nie zaznajomionych z nim. Wobec tego propozycja raczej nie przejdzie, chociaż widzę, że dyskusja się dość rozwinęła. Przy okazji tej dyskusji wyszło kilka ciekawych rzeczy, np. że jest rozszerzenie o nazwie „prep„, które tą obsługę wprowadza natywnie, oraz również mająca podobną funkcjonalność implementacja w czystym php. Z innych wartych odnotowania spraw, dowiedzieć się można, że używa się też gcc do takich rzeczy w formie:

<?php
#define PF private function
#define SCOPE_CLASS(x) class MyProject_ ## x

class UseMacro
{
     PF preSave($object)
     {
        //...
     }

}

SCOPE_CLASS(Internal)
{

}
?>

taki kod następnie należy przepuścić przez gcc komendą:

gcc -Mcpp -E - - < in.php > out.php

Widać kreatywność ludzka nie zna granic. Tak czy inaczej, ja osobiście uważam, że makra w php są zbędne, natomiast sądzę, że zamiast nich przydało by się wsparcie api dla rzeczy, które w tej chwili wykonuje się przy pomocy evala, np. anonimowe klasy, czy dynamiczne proxy.

Ciekaw jestem, jakie jest Wasze zdanie na ten temat ?

Autor wpisu: Śpiechu, dodany: 26.12.2010 00:27, tagi: zend_framework, php

Mamy święta i dużo wolnego czasu, dlatego dzisiaj będziemy zajmować się modułem Zend Framework odpowiedzialnym za czas – Zend_Date. Proponuję przeczytać moje gryzmoły zamiast objadać się nadmiernie karpiem czy co tam macie. Dodatkowo zahaczymy o Zend_Config w postaci odczytu, modyfikacji i zapisu nowych danych do pliku .ini.

Będziemy robić moduł odpowiedzialny za automatyczne usuwanie dawno otwartych (a zatem niepotrzebnych) jakichś plików na serwerze. Mogłyby to być pliki miniaturek obrazków, które kiedyś nam system wygenerował i są już niepotrzebne.

Domyślnie każda aplikacja w ZF ma plik konfiguracyjny application.ini zapisany w /application/configs/. Dla naszych celów założymy sobie plik thumbs.ini, który będziemy mordować czytaj: ciągle nadpisywać. W pliku zapiszemy sobie 4 linijki:

[production]
cleanafter = "Dec 25, 2010 6:26:09 PM"
checkinterval = "5"
intervalunit = "MINUTE"

Wyraz w nawiasie oznacza środowisko, w którym pracujemy, cleanafter to data zapisana w formacie DATETIME. Checkinterval i intervalunit to zmienne służące nam do wygenerowania nowej daty cleanafter.

Kod, który podam poniżej można sobie zapisać w jakimś kontrolerze albo jako plugin.

// ważne jest ustawienie opcji 'allowModifications' na true,
// bo inaczej konfiguracja będzie w trybie tylko do odczytu
$config = new Zend_Config_Ini(ROOT_DIR.'/application/configs/thumbs.ini','production',
   array('allowModifications' => true));
// konstruujemy obiekt Zend_Date na podstawie danych z
// konfiguracji i podajemy format, w jakim dostarczymy dane nt. daty
$cleanAfter = new Zend_Date($config->cleanafter, Zend_Date::DATETIME);
// jeżeli nic nie podamy to Zend weźmie sobie datę i czas obecny
$currentDate = new Zend_Date();
// bardzo fajna funkcja isEarlier() porównująca daty
if ($cleanAfter->isEarlier($currentDate)) {
   echo 'coś robię';
   // wyznaczamy nową datę do wpisania do konfiguracji;
   // myślę, że sklonowanie obiektu daty powoduje trochę mniejszy
   // narzut zasobów niż tworzenie od nowa obiektu
   $newCleanDate = clone $currentDate;
   // dodajemy datę; funkcja add() ma 2 argumenty: ile dodać i co dodać;
   $newCleanDate->add(
      $config->checkinterval,
      constant('Zend_Date::' . $config->intervalunit)
      );
   // przypisujemy do configa datę w formacie DATETIME
   $config->cleanafter = $newCleanDate->get(Zend_Date::DATETIME);
   // tworzymy obiekt służący do zapisu configów
   $writer = new Zend_Config_Writer_Ini();
   $writer->setConfig($config);
   $writer->setFilename(ROOT_DIR.'/application/configs/thumbs.ini');
   $writer->write();
 
   // przygotowujemy obiekt daty, z którym będziemy
   // porównywać czas ostatniego otwarcia plików
   $deleteOlderThan = clone $currentDate;
   // add() dodawało, sub() odejmuje; my odejmiemy 1 tydzień
   $deleteOlderThan->sub(1, Zend_Date::WEEK);
   // tworzymy iterator podając katalog z miniaturkami do sprawdzenia
   $dirIterator = new DirectoryIterator(APPLICATION_PATH  . '/../public/thumbs');
   foreach ($dirIterator as $file) {
      // $getATime() podaje czas ostatniego otwarcia pliku
      // w formacie TIMESTAMP, z którego skonstruujemy datę
      $fileOpenDate = new Zend_Date($file->getATime(), Zend_Date::TIMESTAMP);
      // jeżeli data ostatniego otwarcia jest wcześniejsza
      // niż przyjęty przez nas limit 1 tygodnia to wywalamy plik
      // wygłuszając ewentualne komunikaty poprzez @
      if ($fileOpenDate->isEarlier($deleteOlderThan)) {
         @unlink($file->getRealPath());
      }
   }
}

Polecam zwrócić uwagę na constant(), który w locie na podstawie nazwy odwoła się do stałej obiektu. Konstrukcja typu ${'jakas' . $zmienna} prawidłowa dla zmiennych nie jest dostępna dla stałych i należy użyć funkcji constant().

A poza tym to Wesołych Świąt :-D

Autor wpisu: Kamil, dodany: 25.12.2010 17:13, tagi: javascript

Od czasu do czasu potrzebujemy użyć niestandardowych czcionek w tworzonym projekcie. Nie musimy już przy tym wykorzystywać grafiki w zastępstwie dla tekstu, jak to robiono kiedyś, powodując tym samym niepotrzebny wzrost liczby zapytań do serwera. Dzisiaj mamy biblioteki pokroju sIFR, FLIR czy cufón, a także Web Fonts. W niniejszym wpisie kilka moich przemyśleń nad poszczególnymi [...]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.