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

Autor wpisu: Zyx, dodany: 23.09.2010 20:55, tagi: php

W dzisiejszym wpisie zajmiemy się tematyką kontroli uprawnień w aplikacjach, ale od nieco innej strony. Podczas gdy inne artykuły przedstawiają konkretne techniki realizacji list uprawnień i algorytmy ich sprawdzania, ja zajmę się zagadnieniem bagatelizowanym, a nawet wręcz nieistniejącym w świadomości programistów. Spróbuję przedstawić ideę działania oraz sposób implementacji ogólnego mechanizmu kontroli uprawnień, całkowicie oderwanego od takich konkretnych technik i zdolnego obsłużyć każdą z nich.

Autor wpisu: sokzzuka, dodany: 23.09.2010 10:15, tagi: php

Sprawa adnotacji wywołała dość duże poruszenie na liście php.internals. Uformowały się trzy grupy dyskutantów – jedna popierająca adnotacje, druga uważająca, że jest to zupełnie nie potrzebne i komplikuje język i trzecia która stara się znaleźć kompromis. W wyniku dość długiej dyskusji, skrystalizowało się kilka wniosków – po pierwsze adnotacje nie powinny wprowadzać żadnej nowej składni ponad zaznaczenie, że dana część kodu jest adnotacją, czyli coś w rodzaju [kod php] gdzie „[" i "]” oznaczają początek i koniec adnotacji, natomiast jej treść jest poprawnym kodem php. Drugi wniosek jest taki, że grupa nr trzy stwierdziła, że skoro nie można dość do kompromisu w sprawie adnotacji, to może po prostu najlepiej by było wbudować parser phpDoc do mechanizmów refleksji. Trzeci wniosek, jest taki, że pewna część deweloperów nie widzi zastosowania dla adnotacji, co więcej nie wie nawet czym one są i dlatego uważa, że nie należy ich wprowadzać. Z innych ciekawych rzeczy, zauważyłem, że jest grupka deweloperów, którzy mają jakieś doświadczenie z Pythonem i chcieli by zmienić trochę PHP w jego stronę tj. wszystko jest obiektem (klasy, funkcje etc). Wtedy adnotacje mogły by być zastąpione przez Pythonowe dekoratory.

Ogólnie to zauważam dwa albo nawet trzy trendy a właściwie rodzaje ludzi którzy wypowiadają się na liście „internals”. Pierwszy z nich to ludzie, którzy przyszli z środowiska języka C i są raczej dość konserwatywni i nie chcą zbytnio zmieniać formy języka, mają podejście bardziej proceduralne. Drugą grupą są ludzie, którzy mają doświadczenia w Java’ie i C# i próbują przenieść niektóre cechy a nawet całą składnię z tych języków ich podejście to babilońska obiektówka w stylu EJB, czasami nawet dosłownie cytują jakieś dokumenty JSR Java’y. Trzecia grupa, to ludzie pochodzący z języków typu Ruby czy Python oraz języków funkcyjnych. Jest to chyba najmniejsza grupa, ich poglądy uważane są chyba za najbardziej kontrowersyjne wśród pozostałych dwóch grup i raczej niechętnie akceptowane.

Pytaniem na dziś jest więc, po pierwsze, co widzielibyście w przyszłości w PHP – adnotacje, czy wbudowany parser phpDoc, a może żadną z tych rzeczy ? Po drugie, w jakim kierunku powinien ewoluować język – w stronę Python’ową (wszystko jest obiektem, więcej cech języków funkcyjnych) czy może Java/C# ?

Autor wpisu: matipl, dodany: 20.09.2010 11:37, tagi: php

php-logoCoraz więcej mam do czynienia z cudzym kodem napisanym w PHP. Zauważyłem, że w wielu miejscach, nie wiem czy przez przypadek czy umyślnie, są tagi zamykające: ?> chociaż być nie powinny.

Tag zamykający powinniśmy używać wyłącznie w sytuacji, gdy poza PHP spodziewamy się czegoś innego, np. są to pliki widoku, w którym zagnieżdżamy wywołania, np.:

<h2><?php echo $page->name ?></h2>
<php echo $page->content ?>
<p>Tagi:
    <ul>
        <?php foreach($tags as $tag) : ??>
            <li><?php echo $tag->name ?></li>
        <?php endforeach ?>
    </ul>
</p>

Dlaczego? Powód jest jeden: błędy. Za tagiem zamykającym może zakraść nam się spacja, znak nowej linii lub inne białe znaki. A to automatycznie powoduje błąd Cannot modify header information – headers already sent, jeśli w kolejnych plikach operujemy na nagłówku strony (header(), setcookie()).

Gdy nasz projekt jest duży, a ktoś zostawi ?> ze spacją lub innym cudem możemy mieć spory problem w szukaniu błędu i stracić sporo czasu. Poza tym interpreter nie musi zastanawiać się co i jak, gdzie kod PHP się zaczyna, a gdzie kończy.

Dlatego dla wszystkich plików, które zawierają tylko PHP zalecam niestosowanie tagu zamykającego ?>, który przez PHP jest niewymagany.

Polecam Wam również zaznajomienie się z Zend Framework Coding Standard.

Autor wpisu: matipl, dodany: 14.09.2010 15:32, tagi: php

RAD Studio XEKto sądzi z Was, że takiego tworu jak Delphi nie ma już na rynku bardzo się myli. Z języka Delphi nadal się korzysta. W 2009 roku Delphi był na 11. pozycji w najpopularniejszych językach programowania, a na dodatek środowiska programistyczne dla Delphi wciąż się rozwijają.

Firma Embarcadero, która w 2008 roku kupiła pakiet CodeGear od firmy Borland wydała właśnie nowe środowisko RAD m.in. dla języka DelphiRAD Studio XE.

RAD Studio XE oprócz środowisk Delphi XE i C++ Builder XE zawiera także nowe środowisko IDE dla PHPRadPHP™XE oraz nową wersję Delphi Prism™ XE, do programowania .NET oraz Mono. A oto nowości w RAD Studio:

  • SVN
  • W pełni zintegrowane IDE do zespołowego zarządzania kodem źródłowym
  • FinalBuilder Embarcadero Edition
  • Audyty, metryki, formatowanie i generowanie dokumentacji bezpośrednio z linii wiersza poleceń. Automatyzacja procesu tworzenia buildów
  • AQTime Standard
  • Narzędzie do optymalizowania wydajności aplikacji
  • Beyond Compare Text Compare
  • Rozszerzenia w edytorze kodu: wyszukiwanie, formatowanie i nawigowanie po kodzie
  • CodeSite Express
  • Tworzenie wysokiej jakości aplikacji z logowaniem i rozbudowanymi opcjami debugowania

Dodatkowo nowe środowisko posiada nowe komponenty dla Microsoft Windows Azure data types, łatwiejsze wdrażanie „w chmurze” na Amazon EC2 oraz nowe właściwości DataSnap do tworzenia aplikacji wielowarstwowych.

Z okazji premiery nowego środowiska dla Delphi zaplanowano również 3-godzinne konferencje w 5 miastach Polski:

DATA KONFERENCJI MIASTO HOTEL
15 września 2010 Warszawa Gromada Centrum
21 września 2010 Poznań Novotel Malta
22 września 2010 Gdańsk Novotel Marina
28 września 2010 Wrocław Mercure Panorama
29 września 2010 Kraków Orbis Cracovia

Jak widać po coraz większym wsparciu konkurencyjnych języków/rozwiązań firma Embarcadero zdaje sobie sprawę, że lata świetności Delphi ma za sobą. Od siebie dodam, że Delphi bardzo dobrze spełnia swoją rolę jako gruby klient. Nadal szybko tworzy/rozwija się w nim aplikacje i posiada integrację z przeróżnymi stworami (np. FirebirdSQL) przez co nie ma dużego „ciśnienia” aby już działające aplikacje korporacyjne zmieniać na inne technologie.

Autor wpisu: Kamil, dodany: 12.09.2010 17:49, tagi: php

Czasem zachodzi konieczność, że potrzebujemy pobrać wszystkie adresy URL z zewnętrznej strony. Piszemy crawler, który przechodzi na wybrany przez nas adres, pobiera wszystkie adresy z elementów A, przechodzi na pobrane adresy i tak dalej, do skutku. We wpisie tym przyjrzymy się dwóm metodom pobierania odnośników z zewnętrznej strony (czy jakiegokolwiek zbitka kodu HTML). Poznamy sposób [...]

Autor wpisu: Zyx, dodany: 11.09.2010 10:41, tagi: php

Symfony to nie tylko framework, ale też zbiór dodatkowych, samodzielnych bibliotek do realizacji konkretnych zadań. Ich użycie umożliwia lepszą współpracę kodu pochodzącego od różnych dostawców, a także podniesienie niezawodności, jako że wszystko jest dobrze przetestowane. Jednym z komponentów jest EventDispatcher zajmujący się realizacją paradygmatu programowania zdarzeniowego. W tym wpisie przyjrzymy się, jak można wykorzystać go w swoich projektach.

Autor wpisu: m1chu, dodany: 10.09.2010 11:57, tagi: php

brak pluginu Flash

Po niespełna dwóch latach pora na kontynuację zabawy. Tym razem poziom wyżej i mieszanka: jedno zadanie dotyczące języka kompilowanego, a drugie skryptowego. A przed tym, rozwiązanie poprzedniej zagadki…

CodeTwister (#1) – rozwiązanie

W listopadzie 2008 roku zamieściłem prosty quiz dotyczący kodu XHTML, CSS i JavaScript. Rozwiązanie opierało się na poprawieniu czterech błędów:

  1. W przypadku użycia negatywnego komentarza warunkowego strona przestaje być prawidłowym dokumentem XHTML. Tym bardziej wewnątrz arkusza stylów. Style przeznaczone dla Internet Explorera powinny więc być umieszczone w ukrytych komentarzach warunkowych lub za pomocą odpowiednich haków.
    <![if !IE]>
    div#container p {
        color: #ccc;
    }
    <![endif]>
  2. Znacznik comment nie jest elementem XHTML.
    <comment>Nie używasz</comment>
  3. Nie można w poniższy sposób dodać elementu z zawartością do jakiegokolwiek potomka body ponieważ kod JavaScript wykonywany jest przed załadowaniem dokumentu XHTML. W celu rozwiązania problemu można wykorzystać m.in. możliwości frameworków, elementu onload albo zdarzeń DOMContentLoaded lub window.onload.
    <script type="text/javascript">
    <!--
    if ( navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.indexOf("MSIE 7") > -1 )
    {
        var p = document.createElement('p');
        p.appendChild(document.createTextNode("Wersja silnika IE: " + navigator.appVersion));
        document.body.firstChild.appendChild(p);
    }
    -->
    </script>
  4. Brak wymaganego znacznika title.

Najbliżej rozwiązania był więc gruch4. Gratulacje!

A w nowym pakiecie…

Zadanie 1 w PHP: problem ze zwracanym wynikiem

Wykonujemy poniższy kod PHP:

$zmienna_poczatkowa = 10;
$zmienna_wynikowa = ((~$zmienna_poczatkowa)^(1+8)) << 2;
var_dump($zmienna_poczatkowa, $zmienna_wynikowa);

Dlaczego poniższy kod w wyniku zwraca wartość ujemną (int(10) int(-16))? Jak powinna wygląda poprawnie skonstruowana składnia? Jaki będzie wtedy wynik?

Zadanie 2 w C/C++: błędny kod

Znajdź błędy w poniższym kodzie C/C++. Czego w nim brakuje?

#include <stdio.h>
#include <windows.h> 

#define SIZE 200 

int main()
{
    int *m = malloc(SIZE*sizeof(int)), i;
    char small = 'x', large = 'y';

    for (i = 0; i < SIZE; ++i) {
        if ( !(i % 2) )
            printf("%s: %d\n", small, (*(m + i) = i * i));
        else
            printf("%s: %d\n", large, (*(m + i) = i * i));
    }

    free(m);

    return 0;
}

Życzę wszystkim powodzenia! :]

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.