Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: matiit, dodany: 30.05.2013 20:49, tagi: php

Na sam początek muszę przeprosić za tygodniowy dwutygodniowy poślizg w publikacji tej części, aczkolwiek – nie mówiłem, która sobota (jednak czwartek), mam nadzieję, że nikt nie stracił chęci do nauki frameworka php laravel, a jeśli stracił, to może odzyska (dziwne zdanie wyszło).

Bez zbędnych słów

W poprzedniej części pozostawiłem Cię z zadaniem napisania widoków do naszej aplikacji. Oczywiście możliwości ich napisania jest nieskończenie wiele, przedstawię tylko te, które ja przygotowałem – jeśli masz trochę inne – nie szkodzi, nie ma najlepszej wersji. Pliki widoku - Laravel Nie zwracaj proszę uwagi na poprawność html itd, nie o tym jest ten wpis. Tak wyglądają 2 pliki widoku dla naszej aplikacji w Laravel. Ja te pliki nazwałem (od lewej) wynik.blade.php i skroc.blade.php. Ponownie – pomijam, że powinno się trzymać angielskiego nazewnictwa – wpis jest po polsku i w tym samym języku są pliki. Na początek zajmijmy się plikiem skroc.blade.php. Ten plik będzie odpowiedzialny, za przyjęcie od użytkownika linka do skrócenia. Mamy tam element input ale tak na prawdę jest to bez sensu ponieważ nie mamy żadnego formularza. Pokażę Ci teraz przekształcony plik z użyciem klasy Form z Laravel 4. Możesz przez chwilę się porozpływać nad pięknem Laravelowego kodu :)

Budowanie prostego formularza w Laravel 4

Budowanie prostego formularza w Laravel 4

Dodałem też kod routingu. Jedyne co robi – to wyświetla nasz widok. Należy się kilka słów wyjaśnienia co do nowego kodu (kod to php mieszany z blade – tak się nazywa system szablonów z Laravel).


{{ Form::open() }}

{{ Form::text('link') }}

{{ Form::submit('Skróć') }}

{{ Form::close() }}

Kod jest tak przejrzysty, że nie ma za bardzo czego tłumaczyć. Może jedynie Form::text. Jest to skrót do inputa o typie text. Parametr jest nazwą tego inputa. Tak wygląda kod wygenerowany przez ten widok:

Kod wygenerowany przez Laravel

Należy się wyjaśnienie przy tym długim ciągu znaków. Jest to ukryty element formularza generowany przez Laravel dla zapobiegania przed atakiem typu CSRF (do wygooglania, to też nie jest tematem tego artykułu, chciałbym tłumaczyć jak najdokładniej, ale na prawdę się nie da :) ). Co do formularza. Zauważ, ze metodą jest POST (możemy to zmienić przekazując odpowiedni parametr do metody open() ). Spróbuj kliknąć w Skróć. Powinieneś dostać bardzo ładny error :) Powinien wyglądać mniej więcej tak: Ładny błąd :)

Widzimy najważniejsze czyli „MethodNotAllowedHttpException”. Dzieje się tak dlatego, że dla obecnego adresu URI nie zdefiniowaliśmy routingu dla metody POST (w routes.php mamy tylko wpis dla / dla GET. Naprawmy ten błąd! Wystarczy takie 3 linijki.

Routing: POST

Dzięki temu – po kliknięciu w skróć zobaczymy wygenerowany plik skroc.blade.php. Fajnie, prawda?

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

Autor wpisu: matipl, dodany: 29.05.2013 18:25, tagi: php

phpMyAdmin - logoWychodzi mała hipokryzja – zawsze odradzam korzystanie z phpMyAdmin i z podobnych narzędzi. Jeśli już musicie korzystać to polecałem ostatnio Adminera. Ale warto nadmienić, że kolejny kamień milowy został osiągnięty w phpMyAdmin.

Nowa wersja phpMyAdmin oznaczona jako 4.0 to przede wszystkim nowy interfejs, który został przepisany. Mówiąc dobitniej zaczęto korzystać z Javascript zamiast korzystać z HTML-owych ramek. Poprawiono również import/export plików oraz połatano sporo błędów.

System zapewne nadal jest dziurawy i jeśli nie będziecie aktualizować phpMyAdmin to pewnego dnia ktoś to wykorzysta. Jeśli mimo wszystko jesteście ciekawi jak prezentuje się nowy manager, twórcy udostępnili wersję demo. Polecam również pełny changelog.

Autor wpisu: Kamil Adryjanek, dodany: 23.05.2013 13:42, tagi: php, symfony, symfony2

W czwartek 6 czerwca 2013 o 16:15 na Uniwersytecie Marii CurieSkłodowskiej, już po raz drugi będę miał przyjemność poprowadzić wykład w ramach projektu: „Zdobądź wiedzę z Performance Media”. Temat mojegowykładu nie uległ zmianie, wprowadziłem jedynie drobne zmiany / poprawki w samej prezentacji: „Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony2″.

Dla przypomnienia poniżej znajduje się krótka agenda:

  • Ewolucja PHP. Krótka historia, ekosystem, co nowego w PHP?
  • Dlaczego Symfony2? Przegląd najważniejszych i najciekawszych możliwości frameworka;
  • Symfony2 w praktyce. Mini przegląd popularnych Bundli + CMS w 5 minut.

Wszystkich zainteresowanych tematem PHP / Symfony2 serdecznie zapraszam!

Więcej informacji na temat samych wykładów można znaleźć na stronie: Wykłady Performance Media

zp8497586rq

Autor wpisu: singles, dodany: 16.05.2013 21:09, tagi: internet

Pamiętam, jak całkiem niedawno rozmawiałem ze znajomym na temat konferencji, i mówiliśmy, że fajnie byłoby mieć w Polsce dużą (bo w Szczecinie jest jeszcze WebClusters, aczkolwiek cytuję: „Nie taka skala działalności” :) konferencję poświęconą stricte zagadnieniom skalowalności i wydajności. Kilka miesięcy później od organizatora – Fundacji ProIdea – dowiedziałem się, że w Poznaniu odbędzie się pierwsza edycja Atmosphere Conference, gdzie na głównej stronie widnieje wielkimi literami: PERFORMANCE & SCALABILTY. Niestety, budżet konferencyjny wyglądał słabo, tak więc musiałem obejść się ze smakiem, licząc na streaming online.

Jednak na 3 dni przed konferencją spotkała mnie miła niespodzianka – otrzymałem wejściówkę od Marcina Majchrzaka z Allegro, tak więc w poniedziałek rano wyruszyłem w “daleką” (czyli 15 minut tramwajem) podróż na miejsce konferencji, mając nadzieję że moje “modły” zostały wysłuchane. Czy się udało? Nie jestem w 100% zadowolony, ale to nie znaczy też że jestem niezadowolony. Zapraszam do relacji.

Atmosphere Conference 2013

PS. Żeby nie było – nie jestem niewdzięczny na zasadzie: “dostał wejściówkę i jeszcze narzeka”. Daleko mi do tego. Wierzę po prostu, że konstruktywny feedback to jest coś, czego oczekuje każdy organizator jakiegoś wydarzenia – niezależnie od jego wielkości.

Prelekcje

Bardzo krótko opiszę prezentacje które widziałem (z jednym wyjątkiem) w całości:

Scalling Agile@Allegro

Było o skalowalności, ale tej innej, mianowicie Krzysztof Dąbrowski opowiadał o tym, jak wprowadzali metodyki scrumowe w Allegro, oraz o tym, jakie błędy popełnili. Nie było „mięsa”, ale mimo wszystko prezentację uważam za całkiem ciekawą.

Infrastrcute for Startups

Dobrze poprowadzona prelekcja na temat tego, na czym skupiać się robiąc startup. W skrócie, najdrożsi są ludzie. Paul Hammond zwracał dużą uwagę na to, aby na początku istnienia startupu skupiać się na samym produkcie, a nie na takich rzeczach jak infrastruktura. Na własną serwerownię czas przyjdzie potem, kiedy już odniesie się sukces. Z tego co widzę, jest to dość popularne ostatnio podejście, z którym raczej się zgadzam. Dodatkowo padły nazwy kilku narzędzi, których Paul razem z kolegami używa w projekcie TypeKit. Slajdy znajdziecie tutaj.

Your CSS is a Mess

Prelegentem był Jonathan Snook, autor dość znanej w środowisku frontendowym ksiażki pt. SMACSS. Odniosłem wrażenie, że cała prezentacja była jako tako reklamówką tej pozycji, tym bardziej, że prawie w całości omówiony został rozdział „Core” z ww. pozycji.

Charity Platform Architecture

Jaka sama nazwa mówi, prezentacja skupiła się na opisie charytatywnej części Allegro. Ominął mnie początek, ponieważ zacząłem w drugiej sali, ale tamta prezentacja mnie nie wciągnęła, to też szybko przeszedłem tutaj.

Jeśli chodzi o merytoryczną zawartość prezentacji było OK, natomiast jeśli chodzi o prelegentów (co ważne, dwóch) – Marka Gawińskiego i Kamila Benedykcińskiego tutaj mam zastrzeżenia.

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

Autor wpisu: Kamil, dodany: 16.05.2013 20:38, tagi: javascript

Sprawdź co musisz zrobić, by nawet 10-krotnie przyśpieszyć Internet Explorer i tym samym ułatwić życie użytkownikom odwiedzającym Twoją stronę. …oczywiście to prowokacja. Internet Explorer w starszych wersjach to twór, który nie stał obok przeglądarki i nic tego nie zmieni. Jedynym rozsądnym wyjściem jest zainstalowanie nowoczesnej przeglądarki. Jak ułatwić życie posiadaczom Internet Explorera w starszych wersjach? [...]

Autor wpisu: matiit, dodany: 15.05.2013 18:29, tagi: php

Nawigacja

Laravel, widoki

Witaj w kolejnej części kursu Laravel. W ostatnim wpisie pokazałem Ci podstawy routingu oraz starałem się wytłumaczyć co to w ogóle jest ten routing. W dzisiejszej części wytłumaczę czym są widoki, dlaczego powinieneś ich używać oraz jakie dają Ci korzyści. Pokaże to na przykładzie małej aplikacji, którą napiszę w trakcie przedstawiania kolejnych części frameworka Laravel. Jaką aplikację przedstawię? Niestety nie wprowadziłem jeszcze chociażby bazy danych więc pole do popisu jest zawężone. Pomyślałem, że napiszę aplikację pozwalającą na szybkie skrócenie adresu URL. Przy okazji pokażę też jak zainstalować dodatkowe pakiety przez composer. Zaczynajmy!

Czysty projekt

Na początek będziemy potrzebować utworzyć nowy projekt. Jeśli nie pamiętasz jak to zrobić, wróć po prostu do jednego z poprzednich plików. Ja już to zrobiłem i mój projekt leży w katalogu ~/Documents/secondProject. Na razie jest całkowicie defaultowy. Jeśli i Ty już masz czysty projekt: przejdźmy do zastanowienia się jak będzie wyglądał nasz skracacz linków.

Projektowanie aplikacji

Nazwa nagłówka jest trochę na wyrost, ale nieważne. Zacznijmy od zaprojektowania interfejsu naszej nowej aplikacji, potem będziemy się martwić implementacją. Podaję przykładowy projekt interfejsu. Widać, że jest tylko jedna funkcja, która ma działać. Projekt interfejsu 0 Projekt interfejsu 1 Będziemy używać widoków, a więc na początek pokrótce napiszę czym są widoki. Widoki to nic innego jak pliki .php, które składają się głównie z kodu html. Na szczęście do tych plików można dodawać zmienne, pętle itd. W Laravel istnieje silnik szablonów nazywający się Blade. Posiada on bardzo prostą składnie:


// Wyświetlenie zmiennej

{{ $zmienna }}

// Wyświetlenie zmiennej escape'ując (??;D) znaki specjalne

{{{ $zmienna }}}

// Wyświetlenie zmiennej jeśli jest ustawiona, jeśli nie, tekst alternatywny

@if (isset($zmienna))

{{$zmienna}}

@else
Zmienna nie jest ustawiona
@endif

// Pętla foreach, analogicznie while i for

@foreach ($zmienna as $i)

{{$i}}

@endforeach

// Wczytanie innego szablonu

@include('nazwaszablonu')

System szablonów Blade posiada jeszcze kilka bardzo fajnych opcji, o których powiem potem. Na początek warto wiedzieć, że pliki z szablonami zapisujemy w katalogu app/views/. Stwórzmy sobie przykładowy widok:

<meta charset="utf-8" />Nauka widoków</pre>
<h1>Mój pierwszy szablon</h1>
<pre>

Zapisz taki plik w katalogu app/views pod nazwą na przykład index.blade.php (to jest wymagane rozszerzenie, blade.php. Teraz przypomnij sobie lekcję o route’ach, zrobimy tak, aby dla strony głównej wyrenderował (wyświetlił) się nasz nowo utworzony widok. Do tego istnieje konstrukcja return View::make(‚nazwa_widoku’).


Route::get('/', function(){

return View::make('index'); // jeśli plik się nazywa index.blade.php

});

Nie podajemy rozszerzenia! Poza tym jeśli mielibyśmy w views podkatalog, to rozłączamy podkatalogi kropką. Na przykład jeśli ścieżka do pliku widoku byłaby: app/views/blog/index.blade.php – to podajemy w kodzie:


return View::make('blog.index');

To na prawdę proste i intuicyjne, szybko przywykniesz. Wyrenderuj więc nasz pierwszy widok. Powinieneś zobaczyć po prostu ten kod HTML (wyrenderowany przez przeglądarkę). Oczywiście zrobisz to poprzez wejście w przeglądarce na katalog główny projektu.

Kolejną ważną rzeczą jaką warto wiedzieć o widokach są parametry do nich przekazywane. Spójrz na poniższy kod:


// app/route.php

Route::get('/', function(){

$some_var = "blablabla";

return View::make('index', ['name' => $some_var ]);

});

// app/views/index.blade.php</pre>
<h1>{{ $name }}</h1>
<pre>

Nie jest zbyt trudno odgadnąć co robi dany kod. Po prostu przekazujemy do widoku zmienną (której to zmiennej możemy zmienić nazwę). Zasada jest taka, że w tablicy jako klucz występuje nazwa, pod jaką będzie widziana zmienna w widoku, a jako wartość -> ta właśnie zmienna. Możemy przekazywać więcej niż jedną zmienną po prostu dodając do tablicy kolejne pary klucz->wartość.

Masz teraz podstawowe pojęcie o widokach. Kończę teraz pierwszą część tego wpisu, zostawiając Cię z zadaniem zaprojektowania widoków dla aplikacji, której projekt podałem na screenshotach. W części drugiej dodamy do aplikacji silnik! Serdecznie zapraszam w sobotę!

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

Autor wpisu: singles, dodany: 14.05.2013 21:34, tagi: javascript

Kolejną książką, którą otrzymałem do zrecenzowania od Wydawnictwa Helion, jest pozycja o tytule HTML5 Zaawansowane programowanie. Prawda, jest taka, że jeszcze się nie otrząsnąłem po traumie związanej z pozycją o CSS3, tak więc potrzebowałem kolejnej dobrej książki żeby zatrzeć złe wrażenie. A recenzowana dzisiaj pozycja jak najbardziej na miano książki dobrej w moim odczuciu zasługuje.

Uprzedzając – czy jest to artykuł sponsorowany? W jakiś sposób tak – książka zostanie u mnie i zostanie przeznaczona na nagrodę na następnym meet.php. Czy moje opinie są sponsorowane? Zdecydowanie nie.

HTML5 Zaawansowane prpgramowanie

HTML5 Zaawansowane programowanie

Tematyka

Sprawa z HTML5 jest ciekawa – „wszyscy” o tym mówią, a i wtedy używając tego określenia mając na myśli coś innego. Książka ta dość dokładnie opisuje nowości wprowadzone w ramach szeroko pojętego HTML5 i omawia je dość dokładnie.

Możemy poczytać na temat:

  • Canvas API (aczkolwiek, z powodów oczywistych nie poświęcono temu zagadnieniu tyle miejsca co w przypadku poprzednio recenzowanej przeze mnie pozycji)
  • SVG
  • tagów <video> i <audio> oraz ich obsługi z poziomu JS
  • GeolocationAPI
  • Cross Document Messaging (postMessage) oraz XHR2
  • WebSockets
  • nowych typach elementów formularzy i API z nimi związnych
  • drag & drop
  • WebWorkerów
  • WebStorage (localStorage, sessionStorage, trochę o WebSQL)
  • localCache

Jak widzicie, zakres poruszonego materiału jest całkiem spory i nie przychodzi mi do głowy nic, czego mogłoby brakować, tym bardziej że zagadnienia potraktowane są naprawdę nieźle, jak na wprowadzenie do danego tematu.

Treść

Screenshoty występują tam gdzie to potrzebne – nie ma ich dużo, ale obrazków pokazujących jak dodać plik z dysku całe szczęście nie znajdziecie;) Jak zwykle, przyczepiam się do tego, że [obrazki] pozycjonowane są do lewej, a nie do środka, ale to kwestia gustu.

Jakość wydania

Książka wydana jest w miękkiej oprawie, na grubym białym papierze (żadne EKO). Kod jest drukowany czcionką o stałej szerokości (jednakże komentarze w nim już nie), czcionka normalnego tekstu jest czytelna, aczkolwiek obawiam się, że dla niektórych może być zbyt „gęsto”.

Tłumaczenie

Do tłumaczenia nie mam zarzutów, prawie żadnych. Komentarze do kodu są po polsku, jednak wszelakie nazwy zmiennych czy też funkcji są w „jedynym słusznym języku”.

Poza jednym wyjątkiem, który rzucił mi się w oczy – w dziale o geolokalizacji mamy przykład kodu, w którym zdefiniowano funkcję updateStatus po to, aby później w tym samym fragmencie dumnie używać aktualizujStatus ;)

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.