zapisy i głosowanie na agendę PHPCon Poland

Z początkiem lipca br. ruszyły zapisy na trzecią już edycję konferencji programistów i sympatyków języka PHP, PHPCon Poland 2012. Spotkanie odbędzie się w ostatni weekend września w pobliżu Kielc.

Gośćmi specjalnymi konferencji będą tym razem: Wim Godden, który ma w swoim dorobku pracę dla takich projektów jak choćby PHPAdsNew, a w tej chwili zajmuje się skalowalnością i HA; Thijs Feryn – organizator konferencji PHPBenelux oraz ewangelista odpowiedzialny za kontakty społecznościowe z belgijskiego Combella – firmy hostującej m.in. joind.in, a także Jam McGuire – drupalista duszą i ciałem, pracujący dla niemieckiej firmy Aquia i reprezentujący Drupala, gdy tylko nadarzy się okazja.

W tym roku uczestnicy mają po raz pierwszy realny wpływ na to, kogo i z czym będzie można usłyszeć podczas konferencji. Na stronie www.phpcon.pl/agenda trwa głosowanie na propozycje agendowe. Spośród prawie trzydziestu propozycji w programie spotkania ma szansę pojawić się kilkanaście, przy czym pewne miejsce mają tylko goście specjalni oraz sponsorzy. Pozostałe prelekcje zostaną dobrane na podstawie liczby oddanych głosów w rankingu. Znajdzie się też miejsce dla lighning talks, czyli błyskawicznych, nie zapowiedzianych wystąpień osób spośród słuchaczy, chcących poinformować o ciekawych projektach czy wydarzeniach.

PHPCon Poland to prelekcje, dyskusje panelowe, warsztaty, spotkania towarzyskie oraz elementy rozrywkowe. Jak co roku wszystkich uczestników obowiązuje wcześniejsza rejestracja. Konferencja rozpocznie się o prawie miesiąc wcześniej niż ostatnio, dlatego grill na wolnym powietrzu ma szansę odbyć się w nieco cieplejszej atmosferze. Będzie też można, tak jak poprzednio, bez dodatkowych opłat korzystać z krytego basenu oraz internetu.

PHPCon PL 2012 objęła już sponsoringiem firma MegiTeam, swój wkład potwierdzili też Microsoft oraz Mentax. Impreza pod medialnym patronatem serwisów php.pl, OSWorld, OSNews, 7thguard.net oraz webhosting.pl, odbędzie się w dniach 28-30 września br. Podobnie jak w ubiegłym roku, uczestnicy spotkają się w Górach Świętokrzyskich w hotelu Przedwiośnie w Mąchocicach koło Kielc.

Bieżące informacje oraz zapisy on-line dostępne są na stronie imprezy pod adresem: www.phpcon.pl. Zapisy zakończą się na około dwa tygodnie przed konferencją albo po wyczerpaniu liczby miejsc. Warto jednak pomyśleć o udziale i rejestracji już teraz, bo zniżki jak zwykle będą malały w miarę upływu czasu.

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

18 odpowiedzi na „zapisy i głosowanie na agendę PHPCon Poland”
  1. Awatar _kj_
    _kj_

    Takie pytanie dla entuzjastów tego języka, nie wkurza was czasami szukanie takich błędów:
    <?php
    $wynik = 34;
    if ($wynk == 34)
    {
    echo "OK";
    }
    else
    {
    echo "NIE OK";
    }?>
    ?

    Tak jeszcze dodam dla porównania kod w Pythonie:

    wynik = 34
    if wynk == 34:
    print('OK')
    else:
    print('NIE OK')

    P.S. Nie chcę nikogo obrazić ani wywoływać wojny, tylko zastanawia mnie ile czasu zajmuje Wam znalezienie takiej kretyńskiej literówki, która może się przydarzyć najlepszemu programiście.
    A, no i mam nadzieję, że mi tego komentarza WordPress nie sponiewiera ;-).

    1. Awatar _kj_
      _kj_

      Ach, sponiewierało. Tutaj wersja kodu pythona 'Wordpress-friendly':
      wynik = 34
      if wynk == 34: print('OK')
      else: print('NIE OK')

    2. Awatar Colin
      Colin

      Gdy coś nie działa, dodaję:
      error_reporting(E_ALL);
      co włącza m.in. komunikaty o użyciu niezdefiniowanych zmiennych.

      1. Awatar _kj_
        _kj_

        Ten przełącznik powoduje zatrzymanie programu na tej linijce z niezdefiniowaną zmienną, czy tylko krzyczy?

      2. Awatar _kj_
        _kj_

        Ah, to error_reporting(E_ALL) nie działa jak należy:
        <?php
        $c=$c;
        ?>
        bla bla bla
        <?php
        error_reporting(E_ALL);
        $wynik = 34;
        if ($wynk == 34)
        {
        echo "OK";
        }
        else
        {
        echo "NIE OK";
        }
        ?>
        Nie przyczepił się do "c".

    3. Awatar MikolajS
      MikolajS

      Idąc dalej tym tropem, można by zapytać dlaczego ktokolwiek używa języka dynamicznego skoro kompilator potrafi wyłowić cala masę błędów 🙂
      Gdyby zaczynać wszystko od podstaw Python byłby lepszym wyborem, niż PHP,, ale zobacz chociażby takigo WordPressa, czy znajdziesz w Pythonie taki CMS?

      1. Awatar _kj_
        _kj_

        Pomyliłeś rodzaje błędów. Dynamizm typów nie pozwala na używanie niezadeklarowanych zmiennych. To raz. Dwa: owszem, języków statycznie typowanych często używa się tam, gdzie takie "wyłapywanie" błędów jest konieczną koniecznością. Patrz: sektor bankowy z wszechobecną Javą.

        Poza tym powyższy błąd jest swego rodzaju kompilacją dwóch błędów:
        – niezadeklarowania zmiennej
        – niezainicjalizowania zmiennej
        Pierwsze jest błędem syntaktycznym i każdy kompilator/interpreter po nadzianiu się na coś takiego powinien zgłosić błąd. Drugie jest błędem semantycznym i też powinno być potraktowane solidnym ostrzeżeniem. Kompilatory C tak robią. W pythonie nie masz możliwości utworzenia zmiennej bez zdefiniowanej zawartości, co jest akurat potężną _zaletą_ tego języka.

        A wracając do PHP i powyższego błędu jestem głęboko przekonany, że gdyby takie małe cudo znalazło się w jakimś większym programie (>10000 LOC), to przeciętny programista miałby potężny problem w znalezieniu tego.

        [offtop]
        "Gdyby zaczynać wszystko od podstaw Python byłby lepszym wyborem, niż PHP,, ale zobacz chociażby takigo WordPressa, czy znajdziesz w Pythonie taki CMS? "
        Widzisz, dlatego trzeba ludzi przede wszystkim _uświadamiać_, co jest nie tak w PHP i pokazywać że istnieją lepsze alternatywy. Doskonale rozumiem, że jest masa rzeczy, gdzie PHP został wprowadzony i się sprawdza, ale może dla nowych rzeczy należy wdrażać już coś innego.

        1. Awatar mikolajs
          mikolajs

          "Dynamizm typów nie pozwala na używanie niezadeklarowanych zmiennych."
          Tego nie rozumiem. 🙂 Może miałeś na myśli statyczne typowanie?

          Python jest nieźle zaprojektowany, a jego inne zachowanie co do Perla i PHP wynika, z faktu, że jest silnie typowany (jak raz przypiszesz do niego jakiś typ to nie możesz go zmienić). Zapewne w tego typu języku łatwiej wyłapać tego typu błędy. W Perlu nie musisz deklarować co będzie w zmiennej (pewni PHP też), a zmienna może mieć różny typ, więc nie każdy interpreter uzna to za błąd. To daje pewne możliwości ale może być źródłem błędów. Chodzi mi o to, że im większe narzucamy restrykcje na pisanie programu tym mniejsza szansa popełnienia błędu, którego nie wyłapie interpreter lub kompilator. Więc użycie języka statycznie typowanego pozwala uniknąć jeszcze większej ilości błędów.

          "języków statycznie typowanych często używa się tam, gdzie takie "wyłapywanie" błędów jest konieczną koniecznością. Patrz: sektor bankowy z wszechobecną Javą. " &
          "A wracając do PHP i powyższego błędu jestem głęboko przekonany, że gdyby takie małe cudo znalazło się w jakimś większym programie (>10000 LOC), to przeciętny programista miałby potężny problem w znalezieniu tego. "

          Z tego właśnie powodu w na prawdę dużych programach warto używać języków statycznie typowanych. I to nie tylko dla sektora bankowego.

          1. Awatar _kj_
            _kj_

            Wiesz na czym polega dynamiczne typowanie? Generalnie na dwóch rzeczach:
            1) nie deklarujemy jawnie typu zmiennej
            2) typ nie jest na stałe przypisany do zmiennej (można do zmiennej na nowo przypisać wartość innego typu)

            Ad 1: jak sobie w Pythonie napiszesz:
            a = "ala"
            to Python domyślni się typu zmiennej (na podstawie wartości) i nie musisz mu z góry mówić "a ma być typu string".

            Ad 2: jeśli Ci się ubzdura 100 linijek niżej napisać
            a = 2
            to Python automatycznie stwierdzi: ok, od teraz "a" jest typu całkowitoliczbowego i zmieni jej typ.

            I teraz: zarówno Perl, PHP jak i Python są dynamicznie typowane. Dynamiczne typowanie _wymaga_ (tak _wymaga_) aby zmienna była zadeklarowana w momencie jej użycia. Tyle tylko, że Python gdy nie zna zmiennej to w momencie jej użycia rzuca błąd, a PHP/Perl po prostu ją deklarują arbitralnie nadając jej odgórnie wymyśloną wartość i zaczynają jej normalnie używać. Podejście (2) jest _fatalne_ w skutkach, bo nie dość, że nic nie daje, to jeszcze jest źródłem potencjalnie bardzo groźnych błędów, które (jak przypadku PHP) ciężko znaleźć.

          2. Awatar mikolajs
            mikolajs

            "Ad 1: jak sobie w Pythonie napiszesz:
            a = "ala"
            to Python domyślni się typu zmiennej (na podstawie wartości) i nie musisz mu z góry mówić "a ma być typu string".

            Ad 2: jeśli Ci się ubzdura 100 linijek niżej napisać
            a = 2
            to Python automatycznie stwierdzi: ok, od teraz "a" jest typu całkowitoliczbowego i zmieni jej typ. "

            Dawno nie pisałem w Pythonie, ale wydaje mi się że we wcześniejszych wersjach Pythona nie było możliwe nadawanie dwóch różnych typów dla jednej zmiennej w danym zakresie, albo pomyliło mi się z innym językiem 🙂 Obecnie łatwo o przypadek, zapisania innego typu do istniejącej zmiennej.

          3. Awatar _kj_
            _kj_

            Mogło Ci się pomylić ze Static Single Assignment Form. Ale to też jeszcze coś innego. SSAF występuje głównie w językach czysto funkcyjnych (np. Erlang) i chodzi o to, że jak podstawisz coś pod zmienną to już potem tego nie zmienisz. Ale to jest raczej kwestia sposobu działania instrukcji przypisania, niż systemu typów.

          4. Awatar wladca_kodu
            wladca_kodu

            "Wiesz na czym polega dynamiczne typowanie? Generalnie na dwóch rzeczach:
            1) nie deklarujemy jawnie typu zmiennej
            2) typ nie jest na stałe przypisany do zmiennej (można do zmiennej na nowo przypisać wartość innego typu) "

            Eee tam. Na tej zasadzie to Scala jest językiem dynamicznym (punkt pierwszy jest spełniony z automatu, punkt drugi można uzyskać używając wszędzie typu "Any"). Rozróżnienie jest proste: języki dynamiczne to te, które zgodność typów sprawdzają w czasie działania programu, a nie w czasie kompilacji. A to, czy typy muszą być jawnie deklarowane i czy można je zmieniać nie ma nic do rzeczy.

          5. Awatar _kj_
            _kj_

            "Python jest nieźle zaprojektowany, a jego inne zachowanie co do Perla i PHP wynika, z faktu, że jest silnie typowany (jak raz przypiszesz do niego jakiś typ to nie możesz go zmienić)"
            Silna typizacja oznacza tyle, że Python w przeciwieństwie do JavaScriptu nie zrobi czegoś takiego:
            'ala'+1 => 'ala1'.
            Python po prostu wysypie błąd. Oczywiście coś powyższego jak najbardziej da się zrobić, np. tak:
            'ala'+str(1) => 'ala1'
            Ale tutaj poszła jawna konwersja jedynki do typu str. Jawna, czyli programista _chciał_ tak zrobić, a nie zrobiło mu się to samo ;).

            " (jak raz przypiszesz do niego jakiś typ to nie możesz go zmienić)"
            Bzdura, wpisz do Pythona dwie linijki:
            a = "ala"
            a = 2
            przeszło, co nie?
            Chodziło Ci raczej o to, że typ "sam" się niejako nie zmieni. Tzn. to co powyżej: jedynka nagle nie stanie się łańcuchem znaków i odwrotnie. Akurat tutaj "uroki" PHP nie znają granic (sprawdźcie, co PHP zrobi z tym):
            "31.23" == 31.23

            "Z tego właśnie powodu w na prawdę dużych programach warto używać języków statycznie typowanych."
            Niekoniecznie. Python też jest używany do bardzo dużych projektów. Plusem statycznego typowania jest walidacja danych. Da się to zrobić w językach dynamicznie typowanych, ale wtedy pisania jest trochę więcej. W pythonie na przykład mogę zagwarantować, że pole jakiejś klasy ma być typu str i na pewno klasa będzie tego pilnowała. Jest do tego takie coś zwane 'property'. Tyle tylko, że w Javie takie coś jest out of the box, a w Pythonie będę musiał napisać trochę kodu ekstra.

            Teraz ważna uwaga: języki, które nie mają silnego typowania _nie nadają się_ do niczego więcej niż proste parsowanie tekstu. A używanie ich tam, gdzie potrzebne są mechanizmy bezpieczeństwa (uwierzytelnianie, sprawdzanie hasła etc.) jest już wyszukaną formą samobójstwa.

          6. Awatar mikolajs
            mikolajs

            "'ala'+1 => 'ala1' " a w Scali kod zadziała 🙂 Tam masz automatyczną konwersję do toString (a sam literał 1 w momencie kompilacji staje się obiektem typu Int)

            "W pythonie na przykład mogę zagwarantować, że pole jakiejś klasy ma być typu str i na pewno klasa będzie tego pilnowała."
            Ale zapewne działa to runtime, więc nie jest zbyt wydajne. Możesz też zapomnieć sprawdzić wszędzie typy, a żeby to wszystko było bezbłędne napiszesz kilka razy więcej testów i cała szybkość pisania się zmarnuje.

            "A używanie ich tam, gdzie potrzebne są mechanizmy bezpieczeństwa (uwierzytelnianie, sprawdzanie hasła etc.) jest już wyszukaną formą samobójstwa. "
            Chyba nieco przesadzasz, powiedz to Zuckerbergowi 🙂 Przy Pythonie choć trudniej się pomylić to również można.

            "Python też jest używany do bardzo dużych projektów."
            Może przykłady? W dużym projekcie webowym się nada, gdzie każda stronka ma własny kod. Natomiast w projekcie gdzie różne elementy kodu są ze sobą mocno powiązane, statyczne typowanie bardzo ułatwia pracę.
            Do tego zapewne Aptana, czy inne IDE nie da Ci takich podpowiedzi jak Eclipse dla kodu w Java?

          7. Awatar _kj_
            _kj_

            W Pythonie niemal wszystko dzieje się w runtime. Co do Twoich uwag: no jasne, dlatego nikt tak nie pisze.

            Zuckergerg doskonale o tym wie. Zaczęli od tego, że przepisali interpreter PHP.
            Z tym uwierzytelnianiem chodzi o to, że w PHP operator porównania potrafi sprawić kwiatki (chyba po to zresztą mają tam teraz dwa różne operatory porównania – '==' oraz '===').

            Ja nie wiem, co wy tak z tymi projektami webowymi. Coś tak potężnego jak Twisted jest napisane w Pythonie.

        2. Awatar solokazama
          solokazama

          to moze niech ten przecietny programista uzywa jakiegos (darmowego!) IDE, ktore realtime podswietla taka niezadeklarowana zmienna. nie wiem w czym problem, to nie rok 2002, ale 2012.

    4. Awatar solokazama
      solokazama

      raczej nie, bo od wielu lat Eclipse od razu podswietla Ci niezadeklarowana zmienna. polecam

  2. Awatar Bastian
    Bastian

    _kj_ : jak sie uzywa dobrego IDE taki błąd cieżko popełnić. a pozatym w debugu bedziesz miał linie, więc w sumie niewiele czasu zajmuje znalezienie takego błędu

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *