Antoni Orfin

Software Architect / Symfony Consultant

Wypowiedzi

  • Antoni Orfin
    Wpis na grupie Symfony 2.0 w temacie Nowy wpis - Handling 1 Billion requests a week with Symfony2
    22.07.2014, 16:20

    Hej,

    zapraszam do przeczytania naszego nowego wpisu, tym razem opisujemy architekturę aplikacji REST API obsługującej ponad 1.000.000.000 żądań tygodniowo.

    Architektura bazuje na HAProxy, Varnish, PHP (Symfony2), Redis i MySQL, z trzema warstwami cache'u :-)

    * 700 req/s na jednej instancji Symfony2
    * ponad 150.000.000 rekordów w Redisie (wykorzystywany jako główna baza danych)

    Handling 1 Billion requests a week with Symfony2Ten post został edytowany przez Autora dnia 22.07.14 o godzinie 16:21

  • Antoni Orfin
    Wpis na grupie Symfony 2.0 w temacie Mastering Symfony2 Performance - Optymalizacja Symfony2...
    4.04.2014, 15:38

    Zapraszam do czytania kolejnego wpisu z serii.
    Tym razem bardziej skupiony na "podstawach" Symfony2, które mogą zadecydować o wydajności aplikacji jako całości.

    Mastering Symfony2 Performance – Internals

  • Antoni Orfin
    Wpis na grupie Symfony 2.0 w temacie Mastering Symfony2 Performance - Optymalizacja Symfony2...
    23.03.2014, 13:31

    Hej,
    Na bazie doświadczeń z projektowaniem systemów bazujących na Symfony2 nastawionych na duży ruch (+500 req/s z jednej instancji ;-) ) zaczeliśmy serię wpisów na blogu związanych z kwestiami optymalizacji.

    Pierwszy opisuje 6 prostych kroków, które poprawią problemy wydajnościowe związane z wykorzystaniem Doctrine ORM. Podstawowe, często spotykane problemy, które mocno obciążają aplikację a są łatwe do naprawienia.

    http://labs.octivi.com/mastering-symfony2-performance-...

    Kolejny planowany wpis będzie dotyczył optymalizacji Symfony2 leżących "u podstaw" - czyli wydajność VS twig, adnotacje, EventListener'y

    Zapraszamy do czytania i dyskusji - jakie Wy macie spostrzeżenia na ten temat?
    Ile Wam udało się wyciągnąć z Symfony2? :-)
    Jakie macie praktyki, rady dla optymalizacji aplikacji na S2?Ten post został edytowany przez Autora dnia 23.03.14 o godzinie 13:31

  • Antoni Orfin
    Wpis na grupie Symfony 2.0 w temacie Ciągła integracja - narzędzia
    10.03.2014, 22:42

    My do wszystkich projektów używamy self-hosted Jenkins'a.

    Nie chcieliśmy używać SaaS'owego Travis'a ze względu na bezpieczeństwo kodu. W końcu w czasie builda tworzą się artefakty => wynikowy kod jest przechowywany na ich serwerze. Dla wielu projektów jest to niedopuszczalne.

    Do Jenkinsa mamy opracowany własny template dla projektów S2, gotowe XMLe z konfiguracja standardów kodowania, stylu kodu. Po opracowaniu takiej własnej struktury, gotowców, wpięcie kolejnego projektu to kwestia minut. Btw. polecam mieć spisane tego typu procedury - przydaje się dla kolejnych developerów :-)

    Dodatkowo wpięliśmy też do tego fajne narzędzie wydane przez Sensio, wchodzące w skład "Continuous Security" - http://labs.octivi.com/continuous-integrate-your-secur...

    Jest trochę masakra ze wstępną konfiguracją/integracją Jenkinsa do innych mechanizmów firmy ale jak się przeskoczy ten w miarę wysoki próg wejścia to potem już z górki ;-)

  • Antoni Orfin
    Wpis na grupie Projekty start-up w temacie Proste rady, które poprawią jakość IT Twojego Start-up'a

    Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Projekty start-up

  • Antoni Orfin
    Wpis na tablicy
    Spisaliśmy nasze best-practices - jak dbać o jakość prac swojego działu IT
    http://labs.octivi.com/maximizing-quality-of-your-it-d...
    • 5.02.2014, 21:02
  • Antoni Orfin
    Wpis na grupie IT Professionals w temacie Quality Assurance - Jak dbacie o jakość prac swoich...

    Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy IT Professionals

  • Antoni Orfin
    Wpis na grupie Business IT w temacie Quality Assurance - Jak dbacie o jakość prac swoich...
    5.02.2014, 20:51

    Na bazie doświadczeń przy pomocy innym firmom związanym z IT/rozwojem oprogramowania spisaliśmy nasze best-practices dla Quality Assurance - http://labs.octivi.com/maximizing-quality-of-your-it-d...

    Czy też tworzycie w swojej firmie bazę wiedzy - spisujecie powtarzalne procedury, standardy programistyczne?
    Co o tym myślicie, czy po wprowadzeniu analogicznych praktyk zauważyliście poprawę jakości wykonywanej pracy?

    Zapraszam do dyskusji :-)Ten post został edytowany przez Autora dnia 05.02.14 o godzinie 20:52

  • Antoni Orfin
    Wpis na grupie Symfony 2.0 w temacie Strona w środowisku prod nie działa
    3.03.2013, 23:59

    Cache warmup na localu jest bezsensowne, bo właśnie jak na przykładzie widać będzie niezgodność ścieżek.
    Usuń przez ftp po prostu cały folder cache/prod z serwera i tyle...

  • Antoni Orfin
    Wpis na grupie Business IT w temacie Java czy .NET w dużym projekcie internetowym
    16.02.2013, 08:48

    Jakiego rodzaju jest to system? Musisz napisz, chociażby ogólnie, co to jest, ponieważ od tego tez może zależeć wybór ;-) Jaki ruch miałoby "to coś" obsługiwać?

    Czy z jakiegoś powodu tylko Microsoft Azure będziecie mogli użyć? Czy podałeś to tylko jako przykład?

    Czy inne technologie odpadają z jakichś wyższych pobudek?

  • Antoni Orfin
    Wpis na grupie Projekty start-up w temacie Talky.pl

    Aby mieć możliwość przeczytania tego posta musisz być członkiem grupy Projekty start-up

  • Antoni Orfin
    Wpis na grupie Business IT w temacie Kilka rad dla początkującego z branży informatycznej
    5.01.2013, 14:13

    Goldenline - biznesowa fotka.pl? ;-)

    Ale @Mateuszu (Kurleto) - musisz przyznać, że dobrze, że na świecie jest właśnie większość osób pokroju tych 2óch jegomościów. To dzięki nim mamy przecież fajną pracę! :D

  • Antoni Orfin
    Wpis na grupie Symfony 2.0 w temacie Symfony 2.1 na serwerze home.pl
    24.10.2012, 21:18

    Stawianie projektu S2 na wirtualce to raczej samobójstwo ;p

    S2 ma plik do sprawdzania kompatybilności z serwerem - odpal go i sam się przekonaj czy Ci pójdzie na home.pl (bodajże app/check.php). Albo możesz wyciagnąć bezpośrednio z jego źródła wymagania jakie ma spełniac serwer.

    I bez APC nawet nie myśl o s2.

  • Antoni Orfin
    Wpis na grupie Symfony w temacie [Symfony2] Admin Generator
    24.10.2012, 21:13

    Niezapomnij wspomnieć, że sam kod Sonaty to niezłe spaghetti.
    Ogólnie - nie polecam bundli z tej "stajni" - ich kod jest masakryczny...

  • Antoni Orfin
    Wpis na grupie Symfony 2.0 w temacie Symfony 2.1
    7.08.2012, 20:17

    Dawid D.:
    Najtrudniejszą dla mnie rzeczą do przeskoczenia w Symfony 2.1 jest:
    - scentralizowana obsługa firewall (security), trochę mnie to niepokoi i zastanawia, jak ten plik by wyglądał dla większych projektów. Nie zawsze wszystko dla admina musi się zaczynać się adresem admin/, dla moderatora moderator/ itp. Wypisanie wszystkich opcji routingu w tym pliku jest po prostu słabe. Mogli wprowadzić anotacje dla routingu, to czemu nie mogli przenieść tam obsługi firewall. No chyba, że jeszcze nie wiem, że można.

    1. Nie musisz całego security konfigurować w JEDNYM pliku konfiguracyjnym (np yml) - można rozdzielić na wiele,
    2. Zabezpieczanie za pomocą adnotacji: http://symfony.com/doc/current/book/security.html#secu...
    Potęgą jest ten bundle: http://jmsyst.com/bundles/JMSSecurityExtraBundle , umożliwia min. korzystanie z języka wyrażeń do sprawdzania uprawnień. Oczywiście wszystko jest cacheowane, więc wydajność jest na rozsądnym poziomie.

    Przykładowe użycie featureów Symfony:
    Edycja komentarzy na stronie możliwa tylko dla ich autorów.

    /**
    * @Route("/comment")
    */
    class CommentController extends Controller {
    /**
    * @Route("/{id}/edit", requirements={"id" = "\d+"})
    * @PreAuthorize("#comment.getAuthor().equals(#currentUser)")
    *
    * @param Comment $comment
    * @param User $currentUser
    */
    public function editAction(Comment $comment, User $currentUser) {


    [ładniej by to było zrobić ACLem ale nie miałem chwilowo innego pomysłu jak pokazać możliwości wyrażeń SecurityExtraBundle ;) ]

  • Antoni Orfin
    Wpis na grupie Symfony w temacie [sf2] odpowiednik sfPLValidatorsPlugin
    28.06.2012, 20:24

    To jest aż przerażające... Na prawdę od 28 maja się męczysz z napisaniem tych walidatorów?!

    let me help you...
    najprościej ale najmniej przenośnie jest użyć constrain Regex z regexpem na NIP/regon:
    http://symfony.com/doc/current/reference/constraints/R...

    Najlepiej i również BAAARDZO prosto jest napisać własne constrainy:
    http://symfony.com/doc/current/cookbook/validation/cus...
    1. Bierzesz przykładowe kodziki stąd
    2. Zmieniasz nazwę klasy "ContainsAlphanumeric" na Pesel/Nip
    3. Nazwa: ContainsAlphanumericValidator na PeselValidator
    4. W tymże PeselValidator podmieniasz jedynie regexpa:
    /^[a-zA-Za0-9]+$/

    na taki, który jest odpowiedni dla peselu. (OK peselu nie sprawdza się samym regexpem, ale myślę, że dasz sobie radę z wklejeniem kodu sprawdzającego poprawność peselu, którego to jest MNÓÓÓÓÓÓÓSTWO w sieci...)

    I tyle. Ciężko?

  • Antoni Orfin
    Wpis na grupie PHP w temacie Kwota słownie
    3.06.2012, 14:34

    Adam Piotrowski:
    Spróbuj skorzystać z naszej klasy.
    ...

    [/code]

    No nie chcę nic mówić, ale to na pewno Wasz kod? ... http://4programmers.net/PHP/FAQ/Jak_zamienić_liczbę_...

  • Antoni Orfin
    Wpis na grupie PHP w temacie Kwota słownie
    3.06.2012, 14:29

    Niezły overkill, żeby dla jednej klasy tworzyć całą stronę :o

    Co do czystej oceny kodu:
    1.

    setCasualMode

    ładniej by było stworzyć stałe typu
    const CASUAL_MODE_TEXT = 'text';

    2.

    public function setCurrency($aPrimary, $aSecondary)
    {
    $this->aComponents['currency'] = $aPrimary;
    $this->aComponents['currency_rest'] = $aSecondary;
    return true;
    }//end of setCurrency()


    zamiast w każdym setterze zwracać bezsensowne true, mógłbys zwracać $this, (implementacja method chaining'u - http://en.wikipedia.org/wiki/Method_chaining)
    3.
    public function convertPrice($iPrice)

    $iPrice nie jest integerem. Wg dalszego kodu (str_replace/number_format) jest stringiem.
    Może w ogóle nie rób
    $iPrice = str_replace(',', '.', $iPrice);

    a przyjmuj <wg Twojej konwencji nazewnictwa> $fPrice - typu float. I wymagaj, żeby to był float. Jak ktoś wrzuci "534,54" to wywalaj InvalidArgumentException. Trzeba uczyć programistów dobrego kodu ;p
    4.

    private function _convertVariety($iPrice, $sType)

    $sType też prosi się jako stałe.

    Poza tym całkiem ładny kodzik ;P [aha nie testowałem tego, więc co do działania to się nie odniosę]

  • Antoni Orfin
    Wpis na grupie PHP w temacie Szkolenia z Symfony 2 dla początkujących
    3.06.2012, 14:15

    800PLN za podstawy podstaw, które lepiej jest szansa się nauczyć z oficjalnej dokumentacji. Nieźle się cenisz ;)
    A masz coś, potwierdzającego Twoją wiedzę o tym fw? Konto na Githubie z własnymi projektami, cokolwiek?

    btw. te tłumaczenia "Symfonia" "Wzorniki" powalają ;]

  • Antoni Orfin
    Wpis na grupie Symfony w temacie [sf2] odpowiednik sfPLValidatorsPlugin
    28.05.2012, 16:40

    Nie, ale co za problem 'podpatrzeć' kod tamtego pluginu (a wlasciwie to tylko regexpy dla tych nip'ów i regon'ów) i napisać własne validatory? ;p

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do