Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: batman, dodany: 08.10.2015 10:00, tagi: css, javascript

Odkąd kupiłem pierwszy „mądry” telefon, czas jaki spędzam przeglądając strony internetowe na urządzeniach mobilnych, mniej więcej dorównuje czasowi przeglądania sieci na komputerze. I już pierwszego dnia zauważyłem, że przeglądanie to jest dalekie od wygodnego. Pomijając fakt, że wiele serwisów nie potrafi/nie chce dostosować swoich stron do urządzeń mobilnych, małe komputerki po prostu nie radzą sobie ze skomplikowanymi stronami, upakowanymi licznymi skryptami, obrazkami i wideo. Problem ten dostrzegło Google i przygotowało Accelerated Mobile Pages. AMP jest nowym frameworkiem... [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Autor wpisu: zleek, dodany: 07.10.2015 14:09, tagi: css

If you have a dynamic content on your page, sometimes is the case to align this content vertically in the div container. As you know, this could be painful. However with this short CSS styling you can reach this goal

Autor wpisu: matipl, dodany: 06.10.2015 18:35, tagi: php

5 dni temu Sebastian Bergmann opublikował nową wersję PHPUnit – 5.0.0.

Dlaczego Wam o tym piszę, a nie wspominałem o poprzednich wydaniach? Ponieważ wraz z wersją PHPUnit 5 zostaje całkowicie usunięte wsparcie dla PHP 5.3, PHP 5.4, i PHP 5.5. To naprawdę poważna zmiana, ponieważ dopiero co skończyło się oficjalne wsparcie bug fixów w PHP 5.4 (wrzesień 2015), a już poszczególne biblioteki/rozwiązania przestają wspierać tą wersję.

Zmianą w pełni pozytywną jest przestawienie się w modelu dystrybucji PHPUnit na archiwa PHAR (w 1 pliku mamy wszystko czego wymaga PHPUnit do poprawnego działania). To powinno ułatwić pracę z testami jednostkowymi, jak również w przyszłości pozwoli na równoległe testowanie na różnych wersjach PHPUnit. Wsparcie dla PHPUnit 5 (łatanie błędów) jest zapewnione do 4 sierpnia 2017 roku.

I to nie koniec poważnych zmian. Sebastian oświadczył także, że kolejna wersja PHPUnit 6, której wydanie planowane jest na 5 sierpnia 20152016 zupełnie zostanie pozbawiana wsparcia PHP w linii 5.* (czyli pół roku po wydaniu PHP 7).

Artykuł PHPUnit 5.0.0 pochodzi z serwisu Mateusz matipl Kamiński.

Autor wpisu: batman, dodany: 06.10.2015 12:00, tagi: php

Laravel, jak przystało na nowoczesny framework, pozwala na instalowanie paczek, które znacząco podnoszą komfort korzystania z frameworka oraz bardzo upraszczają tworzenie aplikacji. Czasami nie chcemy aby jakaś paczka trafiła na produkcyjny serwer i dodajemy ją w composerze do require-dev. Teoretycznie wszystko jest w porządku, poza jednym drobnym szczegółem. W pliku konfiguracyjnym nadal wisi provider, który w bardzo ładny sposób położy całą aplikację i wyświetli komunikat o braku plików. Jak temu zaradzić? Rozwiązań problemu jest kilka. Jednym z bardziej popularnych jest trzymanie różnych... [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Autor wpisu: matipl, dodany: 01.10.2015 12:52, tagi: php, framework, symfony

Londyn - Big Ben & London Eye W tym roku udało mi się wybrać na konfernecję Symfony Live London 2015, która odbyła się 18 września (+ warsztaty dzień wcześniej) dzięki przychylności losu… Całe spotkanie odbywało się w Queen Elizabeth II Conference Centre, czyli w samym centrum Londynu. Pod nosem metro (Westminster), jak i moc atrakcji turystycznych (Big Ben, London Eye, pałac w Westminter itd.). Mocno na plus, szczególnie, że cena dla Anglików nie była wygórowana (£210.00).

Lasery i algorytmy

Prelekcją otwierającą była „Getting artistic with code”, którą zaprezentował Seb Lee-Delisle. Prezentacja była zupełnie inna niż wszystkie, do których się przyzwyczaiłem na konferencjach technicznych. Na początku zapowiadał się niesamowity gniot, po tym jak Seb pokazał kawałek JavaScript’u z OnMouseOver – od razu pomyślałem, sobie że to przecież kod sprzed 15 lat… Ale Seb chciał pokazać w jaki sposób można tworzyć sztukę, być Artystą używając do tego czystego języku (JavaScript) i zmyślnych algorytmów. Można tworzyć – bawiąc się. Ostateczny efekt był piorunujący i uważam, że każda konferencja powinna rozpoczynać się podobnym wystąpieniem – niby nie związany z tematem, a jednak… Seb Lee-Delisle specjalizuje się obecnie w pokazach laserowych. Poniżej jego algorytmy podczas Smashing Conference w 2014 roku – połączenie algorytmów i laserów:

Później już było konkretnie. Podczas prelekcji „Building a Pyramid: Symfony Testing Strategies” Ciaran McNulty za pomocą piramidy potrzeb Maslowa zaprezentował jak ważne są testy jednostkowe, a dopiero później znaczące są testy integracje i UI. Mam nadzieję, że niedługo pojawią się nagrania z konferencji.

Doctrine 2

Dużym zaskoczeniem były natomiast słowa Benjamina Eberlei podczas „Doctrine 2: To Use Or Not To Use”. Powiedział, że Doctrine jest tworzony zgodnie z zasadą Pareto (80/20), czyli dla 80% przypadków użycia. W ramach tych 80% przypadków Benjamin wymienił CRUD, Symphony Validator + Forms, natywny SQL i dla tych zastosowań Doctrine to wręcz idealne rozwiązanie. Niestety Doctrine nadal nie radzi sobie z dużą ilością zapisów, ma problemy z wydajnością i złożonymi zapytaniami (raporty itp.). Jak również powinniśmy unikać ORM dla batching processing.

Jak również przypomniał, że wywołanie flush() niszczy wiązania w entity / $query->iterate(), przez to powoduje spore obciążenia serwera gdy robimy flushowanie w pętlach etc. Dlatego pamiętajmy, aby wykonywać tą operację tylko po zakończeniu wszystkich operacji.

Pamiętajmy również, że kompleksowe zapytania DQL z duża ilością wiązań (JOINs) są bardzo wolne i należy ich unikać. W takich wypadkach lepiej zrobić dedykowany model View/Read, który operuje tylko na wybranych polach ze wszystkich JOINs.

Very Good: CRUD (& Symphony Validator + Forms) Good: DDD Lite with coupling to Doctrine/DB Okies: DDD (decoupling requires works) Bad: high write throughput

Summary 80%: CRUD, Lazy, Native SQL Risk: Performance Problems, Unsolvable Edge Class, High Coupling, Complexity

Symfony 3.0

Prelekcję końcową wygłosił Fabien Potencier. Po auto-reklamie produktów Blackfire.io, przedstawił małe podsumowanie prac nad Symfony 3.0 (praktycznie to 2.8, która zostanie podbita do 3.0). Fabien podkreślił, że coraz więcej projektów tworzonych jest na komponentach Symfony i to bardzo go cieszy. Niedługo zobaczymy oparte na Symfony:

  • Drupal 8
  • phpBB
  • prestaShop

Wspomniał również, że obiecanie kompatybilności wstecznej w całej linii Symfony 2.x było wielką pomyłką jego i zespołu. Dużo prac ich to kosztowało przez co nie mogli iść do przodu z nowościami. W wersji 3.0 również było sporo takich problemów, dlatego teraz będzie fixowanie w x.y.(z+1), a nie jak wcześniej w x.y .

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

Autor wpisu: Śpiechu, dodany: 21.09.2015 22:45, tagi: symfony, php

It passed about half year since I scratched Symfony2 Framework surface. Basics are behind me, now it’s time for middle-level stuff. I’m excited to start a whole new Symfony related blog post series. I didn’t wanted to copy typical tutorial topics. It would be waste of your time and my work. I thought it would be nice to show some code related to Symfony Dependency Injection Container.

Tutorials usually show typical container services definition. Boring stuff. I’m going to show you dynamic collection of services passed into processor service. The idea is that collection doesn’t know its elements, so every bundle can define its own services to be added to collection. The secret is tags. To add some spice, tagged service can be defined with priority. And we can specify that this processor should be run at the beginning, and that at the end.

We’ll start with defining common processor interface and some basic implementations.

Now it’s time for a service that processes given argument with all the processors one by one.

We could define typical container definitions and pass processors right into processing service, but remember about requirement that external bundles can define their own processors. We’ll use tags.

Now the key part: compiler pass definition.

Usage:

At the first sight you may think that it’s a lot of logic to run to define stupid processor. What about performance? No worries. Remember, the compilation outcome is dumped into cache file on prod environment. All these foreach loops and priority queues are being run only once. Solution is pretty generic, you can easily adapt to your own needs. Of course code is on MIT license, so grab it and use in your own (even commercial) projects!

Happy PHP container compiling :-)

Autor wpisu: batman, dodany: 10.09.2015 19:48, tagi: php

W ostatnim projekcie, nad którym mi przyszło pracować, potrzebowałem parsować oraz zapisywać pliki CSV. Pierwsze co zrobiłem, to przeszukałem packagist.org i mimo znalezienia co najmniej kilkunastu paczek, nie byłem z nich zadowolony. Wszystkie znalezione paczki można określić jednym słowem – toporne. Ja potrzebowałem czegoś prostego, co można dodać do projektu i korzystać bez zagłębiania się w dokumentację. I tak narodził się pomysł napisania prostej paczki do zapisywania i odczytywania plików CSV. Aby skorzystać z paczki, należy ją wpierw zainstalować. W tym celu skorzystamy z... [[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.