Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: l3l0, dodany: 18.03.2011 23:07, tagi: php, symfony

Instalacja “Standard Symfony2″ ddistribution. Więcej informacji o instalacji na stronie symfony.com Teraz powinniśmy skonfigurować baze danych, możesz to sprawdzić na doctrine configuration

Konfiguracja naszego bundla

php app/console init:bundle "l3l0\BackendBundle" src

rejestrujemy “namespace” naszego “bundle” w app/autoload.php

$loader->registerNamespace(array(
...
    'l3l0' => __DIR__ . '/../src',
...
);

oraz rejestrujemy nasz “bundle” w app/AppKernel.php

public registerBundles()
{
    $bundles = array(
      ...
      new l3l0\BackendBundle\l3l0BackendBundle()
    );

    return $bundles;
}

BDD Przy projekcie chcę używać BDD, chcę więc zainstalować Behata, żeby to zrobić starczy zainstalować BehatBundle. Opis instalacji na githubie https://github.com/Behat/BehatBundle/blob/master/README.md

Inicializacja Behata dla naszego bundla

php app/console behat:test:bundle --init l3l0\\BackendBundle

Implementacja historyjki użytkownika “Jako magazynier chcę logować się do systemu.”

Powiedzmy że musimy zaimpelementować taką funkcionalność.

Zaczniemy od pliku “feature” który jest odpowiednikiem testu w TDD może on wyglądać tak (eng) src/l3l0/BackendBundle/Tests/Features/login_to_system.feature

Feature: Login to system
  As a Guest I want to
  login to system.

  Background:
    Given user "l3l0" with password "password" is in database
    And I am on /login

  Scenario: Signin into system with valid login and password
    Given I fill in "loginForm[login]" with "l3l0"
    And I fill in "loginForm[password]" with "password"
    When I press "Login" in loginForm form
    Then I am logged in system
    And I should see "You are logged as l3l0"

  Scenario: Signin with invalid login
    Given I fill in "loginForm[login]" with "l3l01"
    And I fill in "loginForm[password]" with "password"
    When I press "Login" in loginForm form
    Then I am not logged in system
    And I should see "Your login or password is invalid"

  Scenario: Signin with invalid password
    Given I fill in "loginForm[login]" with "l3l0"
    And I fill in "loginForm[password]" with "password1"
    When I press "Login" in loginForm form
    Then I am not logged in system
    And I should see "Your login or password is invalid"

  Scenario: Signin with invalid login and password
    Given I fill in "loginForm[login]" with "l3l01"
    And I fill in "loginForm[password]" with "password1"
    When I press "Login" in loginForm form
    Then I am not logged in system
    And I should see "Your login or password is invalid"

Po uruchomienu feature zobaczymy że nie mamy zdefinowanych trzech kroków, aby je zdefinować musimy dodać do src/l3l0/BackendBundle/Tests/Features/steps/steps.php linijki:

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

Autor wpisu: batman, dodany: 18.03.2011 12:00, tagi: javascript, jquery

jStat to kolejna interesująca biblioteka stworzona na bazie jQuery. Dzięki niej możemy wykonywać obliczenia statystyczne bez konieczności korzystania z takich narzędzi jak na przykład MATLAB. Ile jest w tym prawdy niestety nie wiem, ponieważ statystyką ostatni raz zajmowałem się na studiach.

Do poprawnego działa jStat wymaga jQuery, jQuery UI oraz flot. To ostatnie to plugin do jQuery pozwalający na generowanie wykresów. Biblioteka poprawnie działa na wszystkich nowoczesnych przeglądarkach oraz IE7 i IE8, dzięki czemu bez obaw możemy z niej korzystać w naszych projektach.

Bibliotekę znajdziecie pod adresem http://www.jstat.org/

Autor wpisu: JoShiMa, dodany: 18.03.2011 11:45, tagi: framework, usability

Kiedyś, ale wcale nie w tak odległej przeszłości, w czasach, które można nazwać „przedgooglowymi, nikt nie zawracał sobie głowy wyglądem linków. Przekazywanie parametrów w linkach Powodowało, że miały one następujący format: http://mojadomena.pl/index.php?p=1&id=12324&parametr=aqq Niezbyt ładnie prawda? W pewnym momencie nadeszła era Google a z nią SEO i takie linki zaczęły być passe. Teraz wszyscy chcą mieć [...]

Autor wpisu: matipl, dodany: 18.03.2011 09:33, tagi: php

php-logoWczoraj zespół developerów wydał PHP w wersji 5.3.6. W głównej mierze dopracowano stabilność poprawiając ponad 60 błędów, w tym kilka bezpieczeństwa. Przypominam, że linia PHP 5.2  nie jest już rozwijana, ani wspierana i każdy powinien zaktualizować swoje środowisko do branchu 5.3.

Najważniejsze zmiany w PHP 5.3.6:

  • poprawienie bezpieczeństwa w protokole fastcgi z FPM (problem z parsowaniem)
  • poprawienie błędu bezpieczeństwa  w parsowaniu w Phar
  • poprawienie błędu związanego z przepełnieniem buforu dla wysokich wartości precyzji w konfiguracji ini
  • zmieniono domyślną wartość serialize_precision ze 100 na 17
  • aktualizacja wbudowanego Sqlite 3 do wersji 3.4.7
  • aktualizacja PCRE do wersji 8.11
  • dodano możliwość łączenia się HTTPS przez proxy z wykorzystaniem basic auth (stream_context/http/header/Proxy-Authorization)
  • poprawienie błędu związanego z isset() i empty(), w pewnych wypadkach działanie kończyło się Runtime Error

Poprawki pojawiły się łącznie w  ponad 20 modułach. Jest to pierwszy w tym roku tak duży zestaw poprawek.

Źródło: PHP

Autor wpisu: batman, dodany: 18.03.2011 08:00, tagi: internet

W czasach, w których prawie każdy z nas nosi w kieszeni minikomputer, na popularności zyskują API pozwalające korzystać z najpopularniejszych aplikacji w prawie każdej sytuacji. Wystarczy wspomnieć o klientach Facebooka lub Twittera, które dostępne są na wszystkich znaczących platformach. Tworzenie klienckich aplikacji sprowadza się do wywoływania metod dostępnych w dostarczonych z daną usługą API.

Z pomocą w tworzeniu tego typu aplikacji przychodzi serwis apigee.com, oferujący międzyinnymi konsolę pozwalającą na testowanie komunikacji z wybranym API. Do dyspozycji mamy API takich serwisów jak Twitter, Facebook, Linkedin, czy PayPal.

Testowanie API to nie jedyna funkcjonalność jaką oferuje apigee. Serwis może udostępnić nasze API na świat zapewniając jego niezawodność oraz dostarczając statyki użycia.

Do poczytania/przetestowania:

Autor wpisu: Kamil, dodany: 18.03.2011 03:01, tagi: javascript

Już trochę czasu minęło od publikacji ostatniego kompendium wiedzy dla programisty, więc czas na nową dawkę dobrych i wartych poznania materiałów mogących pomóc w nauce programowania / webdeveloperki. Dzisiejszym tematem przewodnim będzie JavaScript, o którym coraz to więcej się mówi, choć nie tylko JavaScript. JS Libs Deconstructed Naprawdę świetna strona prezentująca w przyjemnej do przeglądania [...]

Autor wpisu: batman, dodany: 17.03.2011 08:00, tagi: php, zend_framework

Praca nad jednym z ostatnich projektów była swojego rodzaju powrotem do przeszłości. Wszystko za sprawą jedynego możliwego sposobu przeniesienia plików na serwer – kopiowanie z dysku lokalnego na serwer. Tak się złożyło, iż projekt ten stworzyłem w Zend Frameworku, który składa się z kilku tysięcy plików. Czas wgrywania plików – dobre kilkanaście minut. Jeśli dołożymy do tego zrywanie połączenia z serwerem do kilkaset plików okazuje się, że pół godziny marnuje się na “pilnowanie uploadu”. Zdeprymowany postępem uploadu zacząłem zastanawiać się nad lepszym rozwiązaniem i wpadłem na pomysł “skompilowania” aplikacji do pojedynczego pliku.

Dosyć szybko okazało, iż zadanie jakie przed sobą postawiłem, jest bardziej niż proste i sprowadza się do napisania trzech wierszy kodu PHP oraz niewielkiej modyfikacji struktury projektu.

Opisane poniżej rozwiązanie jest pomysłem, który wymaga dokładnego przetestowania. Dlatego też nie zalecam jego stosowania w środowiskach produkcyjnych.

Struktura katalogów

Struktura katalogów spakowanego projektu ogranicza się do katalogu public, na który wskazuje domena. Pozostałe katalogi projektu zostaną spakowane do archiwum phar i dołączone w pliku index.php. W zależności od konfiguracji serwera, archiwum phar będzie znajdować się w tym samym katalogu do plik index.php lub katalog wyżej (brak dostępu z poziomu przeglądarki).

dirs

Skrypt pakujący

Skrypt pakujący projekt do archiwum phar wygląda następująco.

$phar = new Phar('/sciezka/zapisu/phar_project.phar', null, 'phar_project.phar');
$phar->buildFromDirectory('/sciezka/do/projektu');
$phar->setStub(
	$phar->createDefaultStub('stub.php', 'stub.php')
);

Te trzy wiersze kodu wystarczą do spakowania projektu. W pierwszym wierszu tworzymy obiekt pakujący. Jako pierwszy argument podajemy nazwę archiwum, drugim są flagi przekazane do klasy rodzica (RecursiveDirectoryIterator), ostatnim alias jakim będziemy się posługiwać podczas odwoływania się do archiwum.

W drugim wierszu wskazujemy katalog (projekt ZF), na podstawie którego utworzone zostanie archiwum. Metoda ta przyjmuje drugi parametr, będący wyrażeniem regularnym ograniczającym pliki dołączone do archiwum. Parametr ten jest opcjonalny.

Ostatni wiersz definiuje główny skrypt archiwum. Skrypt ten zostanie uruchomiony w momencie dołączenia pliku phar do skryptu. Pierwszym argumentem jest skrypt uruchamiany podczas korzystania a pliku phar w wierszu poleceń, drugim skrypt dla aplikacji webowej. Nic nie stoi na przeszkodzie aby był to ten sam plik.

index.php i stub.php

Ostatnia zmiana jaką należy wprowadzić wiąże się bezpośrednio ze zmianą struktury katalogów. Musimy wskazać w pliku index.php, że będziemy korzystać z archiwum phar.

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.