Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Marcin MySZ Sztolcman, dodany: 28.11.2007 01:36, tagi: php5

Co prawda, od około roku nie używam za dużo PHP, ale generalnie śledzę co się w tym języku dzieje. Podobają mi się nawet zmiany zaplanowane na wersję 5.3:

  • dodanie obsługi przestrzeni nazw (namespaces)
  • usunięcie w końcu safe_mode, register_globals i magic_quotes - szczególnie tych ostatnich nie trawię…
  • dodanie poziomu raportowania błędów E_DEPRECATED - będą tym, jak się domyślam, oznaczane funkcje/moduły/klasy mające być wycofane w niedługim czasie z core języka (jak np. moduł ereg)
  • nowa magiczna metoda: _callStatic, wywoływana w momencie gdy zostanie użyta metoda statyczna nie istniejąca w danej klasie

To nie są jeszcze końcowe ustalenia, wszystko może się jeszcze zmienić, ale to co powyżej prawdopodobnie zostanie wdrożone.

Jednak ja, jak i spore stadko innych osób używających PHP, oczekuje jednej, bardzo ważnej zmiany: uporządkowania w końcu core języka: ujednolicenie nazewnictwa funkcji, nauczenie funkcji wbudowanych wyjątków etc. To jest rzecz najbardziej potrzebna na tą chwilę, gdyż sądzę że bez tego przyszłość “pehapa” pójdzie elegancko po równi pochyłej w dół…

Autor wpisu: Athlan, dodany: 26.11.2007 21:17, tagi: internet

Grzebiąc dziś rano w Internecie natknąłem się na linka Michalczewski: obiję mu ten głupi łeb, żeby zmądrzał. Zauważyłem, że Michalczewski jest w miarę podobny do Ragniego - administratora fotka.pl. Aby się upewnić wszedłem w jego profil. Patrzę i OWNED : D. Zdjęcie adekwatne do tytułu dzisiejszego artykułu na sport.onet.pl.

Kliknij na zdjęcie, aby powiększyć.

Autor wpisu: Marcin MySZ Sztolcman, dodany: 20.11.2007 00:36, tagi: php, php5

Jakiś czas temu zacząłem się bawić Blip!em. Wstawiłem sobie nawet na główną stronę myGeeBloga wklejkę z ostatnim statusem ;) Ichnich wklejki sa jak dla mnie kiepskie (flasha nie lubię, a wersja jsowa pozwala na pobranie tylko ostatniego statusu), więc pomyślałem o pluginie do WordPressa. Żeby móc to urzeczywistnić, potrzeba mi jakiejś klasy do obsługi tego - a z pomocą udostępnionego API zrobiłem sobie taką. Na razie wersja pre-alpha ;)

do podejrzenia:
repo.urzenia.net/files/blipapi.phps
do pobrania:
http://repo.urzenia.net/files/get.php?f=blipapi.php

O feedback poproszę za pomoca formularza: urzenia.net/email lub na liście blip-api: groups.google.com/group/blip-devel/browse_thread/thread/3096e1724d036f55.

UPDATE: wprowadziłem kilka zmian w klasie blipapi, częściowo kosmetycznych, częściowo optymalizacyjnych. Do pobrania pod wymienionymi wyżej adresami :)

Autor wpisu: Jaroslaw Mężyk, dodany: 13.11.2007 19:45, tagi: php

Ostatnie miesiące to przede wszystkim wytężona praca nad nowym projektem, który wczoraj miał swoją premierę. Ten projekt to połączenie oprogramowania CRM z Contact Center w modelu ASP (Application Service Provider). Ten projekt to serwisowa.pl. serwisowa.pl to nie tylko oprogramowanie pozwalające zarządzać bazą danych klientów i ich sprzętu, ale także system wychodzący poza internet i integrujący w [...]

Autor wpisu: Athlan, dodany: 13.11.2007 17:22, tagi: internet

Ostatnio wykopałem w sieci ciekawy artykuł:

Australijski naukowiec opracował technologię, która 100-krotnie przyspieszy prędkość przesyłania danych za pośrednictwem Sieci. John Papandriopoulos w swojej pracy doktorskiej opisał algorytm, który pozwoli na zredukowanie interferencji sygnału w łączach DSL.

Redukcja interferencji oznaczałaby, że przepustowość takich łączy zwiększyłaby się z obecnych 1-10 Mbps do 100-250 Mbps. To z kolei może w ciągu kilku najbliższych lat zrewolucjonizować Internet. Pierwsze układy, w których zostanie zastosowany nowy algorytm powinny trafić na rynek w ciągu 2-3 lat.

Problem interferencji pojawia się w momencie, gdy próbujemy wycisnąć większą przepustowość z miedzianych łączy telefonicznych. Interferencje zakłócają przepływ danych i zmniejszają w ten sposób przepustowość łącza - wyjaśnia Papandriopoulos.

Jeżeli to prawda, poczekamy około 5-10 lat na implementacje rozwiązania we wszystkich sieciach.

Autor wpisu: Splatch, dodany: 09.11.2007 00:52, tagi: php

Integracja między językami czy też platformami to kwestia poruszana nie od dzisiaj. Na poziomie platform funkcjonuje od dłuższego czasu CORBA i Web Services z trio SOAP + WSDL + XML Schema na czele. Integracja systemów napisanych w tym samym języku sprowadza się zwykle do wykorzystania serializacji, która jest najszybsza i najwygodniejsza. Gorzej jeśli idzie o połączenie dwóch języków - w moim przypadku PHP i Javy.
Zend ma swój mostek, który umożliwia na zintegrowanie Javy i PHP, jest też dodatkowe rozszerzenie do PHP, które pozwala na wykorzystanie Javy w PHP, jednakże moje oczekiwania nie był aż tak wielkie. Potrzebowałem po prostu odczytać dane specyficzne dla PHP - powiedzmy informacje o jakiejś klasie. Standardowo taka operacja wymagała stworzenia parsera, co jest zadaniem powiedzmy, nie na moje siły i umiejętności.. stąd też postanowiłem sobie nieco uprościć pracę. :)

Wspólny, najwygodniejszy format (zarówno w odczycie i zapisie danych) z jednej i drugiej strony to oczywiście XML. Problem w tym, jaki format ma być wykorzystany. Nie da się przecież bezpośrednio odwzorować obiektu z PHP do Javy głównie z racji na dynamikę. Jeśli w PHP ktoś dorzuci pole do obiektu, poprzez proste $someUser->city = 'Białystok' to Java bazująca tylko na statycznych, zadeklarowanych polach w klasie nie odczyta tej informacji. Serializacja w postaci specyficznej dla PHP również wiąże się ze stworzeniem parsera po stronie Javy by to wszystko obsługiwać i dodatkowo coś co by później mapowało obiekty z Javy do XMLa w postaci przyjaznej dla PHP. Wyjściem z całej sytuacji okazały się funkcje wddx_*. Po prostu strzał w dziesiątkę. WDDX to standard może nie najnowszy, ale dosyć spójny, i co najważniejsze umożliwiający przesyłanie złożonych obiektów bez zbytniej walki. Po chwili poszukiwań znalazłem DTD, zatem ze strony Javy wystarczy odpalić JAXB i jesteśmy na miejscu.

Przykładowy skrypt PHP, który uzyskuje informacje o konfiguracji Agavi:

PHP:
  1. <?php
  2. include_once 'E:/htdocs/shop/agavi/agavi.php';
  3. $value = wddx_serialize_value(AgaviConfig::export());
  4.  
  5. $value = "<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE wddxPacket SYSTEM 'wddx.dtd'>\n" . $value;
  6.  
  7. echo $value;

A teraz część wyniku, który PHP wyświetla w konsoli:

XML:
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE wddxPacket SYSTEM 'wddx.dtd'>
  3. <wddxpacket version='1.0'>
  4.     <header />
  5.     <data>
  6.         <struct>
  7.             <var name='core.minimum_php_version'>
  8.                 <string>5.1.0</string>
  9.             </var>
  10.             <var name='core.agavi_dir'>
  11.                 <string>E:\htdocs\shop\agavi</string>
  12.             </var>
  13.             <!-- i tak dalej -->
  14.         </struct>
  15.     </data>
  16. </wddxpacket>

Teraz kod Javy, który odczytuje sobie informacje.. (nawiasy kwadratowe przy listach podyktowane błędami w skrypcie, który koloruje składnię)

JAVA:
  1. // odpalamy interpreter PHP
  2.         Runtime runtime = Runtime.getRuntime();
  3.         Process exec = runtime.exec("php -q E:/agavi-ide/org.codehouse.bridge/src/org/codehouse/bridge/test2.php");
  4.  
  5.         // podnosimy kontekst JAXB
  6.         JAXBContext context = JAXBContext.newInstance( ObjectFactory.class);
  7.         // deserializujemy XML wygenerowany przez PHP
  8.         WddxPacket object = (WddxPacket) context.createUnmarshaller().unmarshal(exec.getInputStream());
  9.  
  10.         // odczytujemy informacje
  11.         for ( Object stc : object.getData().getWDDXData()) {
  12.             // spodziewamy się informacji o typie złożonym
  13.             if (stc instanceof Struct) {
  14.                 List[generated.Var] vara = (( Struct) stc).getVar();
  15.                 for (Var value : vara) {
  16.                     // pozostaje nam tylko odczytanie zserializowanej wartości
  17.                     List[ Object] configurationValue = value.getWDDXData();
  18.                     System.out.println(value.getName() + ": " + ((generated. String) configurationValue.get(0)).getvalue());
  19.                 }
  20.             }
  21.         }

Wynik działania poniższego kodu to:

CODE:
  1. core.minimum_php_version: 5.1.0
  2. core.agavi_dir: E:\htdocs\shop\agavi
  3. exception.default_template: E:\htdocs\shop\agavi/exception/templates/shiny.php
  4. agavi.name: Agavi
  5. agavi.major_version: 0
  6. agavi.minor_version: 11
  7. agavi.micro_version: 0
  8. agavi.status: DEV
  9. agavi.branch: trunk
  10. agavi.version: 0.11.0-DEV
  11. agavi.release: Agavi 0.11.0-DEV
  12. agavi.url: http://www.agavi.org
  13. agavi_info: Agavi 0.11.0-DEV (http://www.agavi.org)

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

Autor wpisu: normanos, dodany: 08.11.2007 12:40, tagi: php, framework, php5

No i wykrakałem wczorajszym wpisem Jest oficjalna wersja 2.0, jest i nowa strona www. Ciekawie został rozwiązany dział download. Można pobrać dwie wersje: Tiny Flower (Minimal) – zawiera biblioteki: Session, Validation, oraz helpery: array, cookie, form, html, security, url, validation. Naked Babe (Standard) – dodatkowe biblioteki: Archive, Database, Encryption, Pagination, Profiler. Dodatkowe helpery: date, download, [...]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.