Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu php Kanał ATOM (tag: php)

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! ]]

Autor wpisu: Łukasz Socha, dodany: 26.08.2015 13:30, tagi: php

Rozwijając swój firmowy CRM napotkaliśmy na ciekawy problem. W jaki sposób sprawdzić, czy aktualny dzień jest dniem pracującym, czy wolnym od pracy? W tym wpisie pokażę jak rozwiązać ten problem. Dni wolne od pracy Zgodnie z obowiązującymi przepisami aktualnie jest 13 świąt wolnych od pracy (pełna lista na 20115 rok do sprawdzenia tutaj).Do tego dochodzą […]

Autor wpisu: Piotr Pasich, dodany: 18.08.2015 08:34, tagi: php, symfony2, symfony

Heading_Batch-deployment-in-Elastic-Beanstalk

Continuous deployment environment with Docker, AWS EB and Codeship In the last two episodes we have configured the Docker environment and automated deployment with Elastic Beanstalk, but still the process requires some manual actions and I personally would like to avoid any unnecessary interference in the process. So, today I will walk you through combining […]

The post Putting all pieces together and shipping with Codeship (part III) appeared first on Piotr Pasich.

Autor wpisu: Piotr Pasich, dodany: 07.08.2015 07:00, tagi: php, symfony2, symfony

Nuvem_1920

Continuous deployment environment with Docker, AWS EB and Codeship In the previous part we set up a dedicated Symfony application on Docker virtual containers and prepared environments that may be transferred between developers during project cycle. The next step is to prepare the application for pushing into the cloud. There are many options available on […]

The post Automated deployment with AWS Elastic Beanstalk (EB) – Part II appeared first on Piotr Pasich.

Autor wpisu: stormfly, dodany: 29.07.2015 00:46, tagi: php

Moja 7-8 miesięczna przygoda z Joomla dobiega właśnie końca. W tym czasie zrealizowałem dwie strony na tym systemie i chciałbym Wam przedstawić kilka moich uwag odnośnie tego CMS. Po wejściu do panelu administracyjnego wiele osób nie wie gdzie ma kliknąć, przeraża duża liczba...
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.