środa, 12 listopada 2008

Zend_View_Helper_HeadScript->appendFile() psuje integrację z Google Maps API

Zend Framework umożliwia specjalizację finalnego widoku(layoutu) dla każdej z akcji poprzez tzw. helpery("pomocniki") widoku. Jak to się dzieje odsyłam do podręcznika.

Wszystko działało idealnie do dnia gdy nadeszła chwila integracji stronki z Google Maps API.
W widoku akcji korzystam z wymiotnego w temacie pomocnika:

$this->headScript()
->appendFile('http://maps.google.com/maps?file=api&v=2&key='.$this->apiKey);


nagłówek strony produkuje mi coś takiego:

<script src="http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;key=ABQIAAAAnCqO9l1WMOgTCJlg9kVlMRREqxHjot-MVdGv4W7rNtdAWxNh4hS2-gRBnLrWFzhAC8SpBzYmGVYZgA" type="text/javascript"/>


a powinien

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAnCqO9l1WMOgTCJlg9kVlMRREqxHjot-MVdGv4W7rNtdAWxNh4hS2-gRBnLrWFzhAC8SpBzYmGVYZgA" type="text/javascript"></script>


jak łatwo zauważyć problem leży w &amp; -> &.
Inicjowanie map googla tej zmiany nie lubi. Problem tkwi w funkcji htmlspecialchars, użytej w Zend_View_Helper_HeadScript::append() itd.
Żeby nie ingerować w kod w/w klasy można zastosować funkcję htmlspecialchars_decode w szablonie w następujący sposób...

// &amp; -> & becouse gmaps crash!
print htmlspecialchars_decode($this->headScript());


.. i wszystko działa, tak jak powinno od samego początku.

(Zastanawiam się czy ZF nie jest aż nad to ostrożny w wszystkim [ma to plusy .. i minusy])

Pozdrawiam.

wtorek, 4 listopada 2008

Pełen ekran - gry się sypią - Ubuntu 8.10 64bit ATI HD3200

Problem grania na pełnym ekranie? paski, szumy? Jak zwykle rozwiązanie jest banalne (:
Kombinacja klawiszy Ctrl + Enter, zmienia nam możliwość gry w "fullscrean" na "window".

A jak grać bez tego "hacka" na pełnym ekranie?
Dyskusja trwa na ubuntuforums.org
link bezpośredni:http://ubuntuforums.org/showthread.php?t=958400&highlight=HD+3200

Monitoruję ten wątek, zobaczę czy zostanie rozwikłany ten problem, na chwilę obecną wygląda na to że wina leży po stronie x.org i jedyne rozwiązanie to granie w opcji "window".

Touchpad z scrollerm w Ubuntu 8.10 na HP 6735s

By cieszyć się możliwością przewijania tekstu za pomocą touchpada wystarczy dodać wpis w pliku: /etc/X11/xorg.conf.

Otwieramy plik do edycji poleceniem w terminalu:
sudo gedit /etc/X11/xorg.conf

Jeżeli nie ma w nim sekcji "Section "InputDevice"" to wklejamy poniższy kod,
w przeciwnym wypadku ostrożnie i na własną odpowiedzialność tą sekcje modyfikujemy.


Section "InputDevice"
Driver "synaptics"
Identifier "TouchPad"
Option "Device" "/dev/input/mouse1"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.09"
Option "MaxSpeed" "0.18"
Option "AccelFactor" "0.0015"
Option "SHMConfig" "on"
EndSection

Wszystko pięknie działa na Ubuntu 8.10 64bit i HP 6735s (:

niedziela, 19 października 2008

Instalacja OpenOffice3 w Ubuntu 8.10 64bit

Na chwilę obecną nie ma gotowej paczki OpenOffice3 na 64bit Ubuntu, aby to obejść należy postępować dokładnie jak opisano w tej instrukcji instalacji OpenOffice3.
Jedyna zmiana jaka nas czeka to modyfikacja polecenia:

sudo dpkg -i *.deb
na:
sudo dpkg --force-architecture -i *.deb

Została zastosowana flaga --force-architecture, która wymusza przetworzenie pakietów dla innej architektury.

piątek, 17 października 2008

Eclipse Ganymede + PDT2.0 na ubuntu 64bit

PHP Development Tools w wersji 2.0 ujrzy światło dzienne 29 grudnia 2008 roku, ale to mi nie przeszkadza by pracować na wersji rozwojowej (:.
Poniżej przedstawiam przetłumaczony poradnik instalacji PDT2.0 na najnowszej wersji mojego ulubionego IDE Eclipse.

Pobieramy i rozpakowujemy Eclipse IDE for Java EE Developers (162 MB) do wybranego katalogu.
Do pełni szczęścia brakuje nam jeszcze trzech paczek.

  1. DLTK (Integration) link bezpośredni do paczki
  2. PDT2.0 (2.0.0 Integration Builds) link bezpośredni
  3. WTP (tą paczkę sugeruję pominąć, bo w Java EE już jest!)
Powyższe paczki rozpakowujemy i dodajemy do managera pakietów
  1. Help > Software Updates... > Available Software
  2. Add Site... > Local > dodajemy katalog rozpakowanego pakietu DLTK
  3. Add Site... > Local > dodajemy katalog rozpakowanego pakietu PDT2.0
  4. Add Site... > Local > dodajemy katalog rozpakowanego pakietu WTP
  5. Gdy odświeżenie listy pakietów nie wykona się automatycznie - wciskamy "Refresh"
  6. Zaznaczamy pakiet the "Dynamic Languages Toolkit - Core Frameworks .."
  7. Zaznaczamy pakiet "PDT Feature"
  8. Zaznaczamy "WTP Feature" (jeżeli jeszcze nie jest jest zainstalowany)
  9. Klikamy "Install"
Gdy wszystko przebiegnie pomyślnie uruchamiamy ponownie Eclipse i mamy PHP Development Tools w wersji 2.0 :). Teraz tylko New PHP Project i zabawa się zaczyna (:.

Uwaga na koniec, w Eclipse Ganymede w okienku "Software Updates" jest możliwość wpisywania nazw pakietów należy w tym polu wpisywać pełne nazwy pakietów do instalacji a nie ich akronimy tj. zamiast DLTK należy wpisać Dynamic Languages Toolkit

czwartek, 16 października 2008

Ubuntu 64bit i HP 6735s

Nowy nabytek laptop HP 6735s i nowe Ubuntu 8.10 w drodze.
Jako że laptop jest wyposażony w procesor AMD Puma z wsparciem 64bit instalacja Ubuntu będzie również dla tej architektury procesora.

Grafika ATI 3200:
Sterownik został zainstalowany automatycznie, a jako całość działa szybko i stabilnie.

WiFi
Jeszcze nie testowałem.

Bluetooth
Łączenie z Samsung L760 i wymiana plików bezproblemowo.

Dźwięk
Na starcie dźwięku z głośników nie usłyszymy. Usłyszymy je za to z podłączonych słuchawek (dlaczego? uwielbiam zagadki)!
Rozwiązanie tego problemu ogranicza się do następujących kroków:

Edytujemy plik /etc/modprobe.d/alsa-base
sudo gedit /etc/modprobe.d/alsa-base

na koncu pliku dodajemy
options snd-hda-intel model=laptop

zapisujemy zmiany.

Edytujemy plik /boot/grub/menu.lst
sudo gedit /boot/grub/menu.lst
i dodajemy wpis
nolapic iommu=off noirqdebug
u mnie wygląda to tak:
title Ubuntu intrepid (development branch), kernel 2.6.27-7-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.27-7-generic root=UUID=4212f199-d346-40e2-8d77-deee73d92d5c ro quiet splash nolapic iommu=off noirqdebug
initrd /boot/initrd.img-2.6.27-7-generic
quiet

Edit: Zauważyłem że zastosowanie parametru nolapic powoduje wykrycie procesora zamiast dwu-rdzeniowego jako jednego-rdzeniowego.

Ponowne uruchomienie komputera i znajome odgłosy dochodzą do naszych małżowin usznych (:

Pierwsze wrażenia
Generalnie laptop jest niesłyszalny, głośność pracy wentylatora zaczyna być odczuwalna gdy pracujemy na pełnej mocy. Wydajność jest zadowalająca. Operacja kopiowanie pliku z dysku na dysk utrzymuje się na średnim poziomie 18Mb/s co w porównaniu do poprzedniego laptopa ASUS A6R-B002 odbywa się 2x szybciej.
Długości pracy na baterii jeszcze nie miałem przyjemności sprawdzić.

PS.
Notebook HP 6735s zakupiłem w sklepie primakomp.pl. Jest to mój drugi laptop kupiony w tym sklepie. Poleciłem nabycie, drogą kupna, laptopa w tym sklepie już sześciu osobą, z efektem pozytywnym! Jeżeli dokonuje się zakupu w salonie a nie poprzez stronę internetową online można liczyć na rabacik - zaoszczędziłem ok. 40zl!!.

piątek, 19 września 2008

Eclipse SVN vs. NetBeans SVN

Kilka projektów WWW na głowie, przeskakiwanie z jednego do drugiego i kontrolowanie zmian wprowadzonych w każdym z nich.
Nic prostego SVN!
Google umożliwia hosting SVN OpenSource'owych projektów.

W utrzymaniu wszystkiego pod kontrolą pomoże nam NetBeans 6.5 z wsparciem dla PHP lub plugin do Eclipse Subversive.

Pomijam proces instalacji SVN na komputerze i inne programy wspierające jak np. RapidSVN gdyż zależy mi wyłącznie na integracji SVN z IDE.

NetBeans 6.5 jest w wersji deweloperskiej ale obsługa SVN jest nadzwyczajnie przyjemna!

  • automatyczne wykrywanie katalogów SVN w projekcie i oznaczanie odpowiednią wizualizacją zakładek, plików, katalogów


    kolory
    • zielony - nowy plik
    • niebieski - plik zmodyfikowany różny od wersji SVN

  • wizualizacja katalogów podpiętych pod SVN

    Jak można zuwazyć na załączonym obrazku, nie koniecznie cały projekt (np.: "kontorx-cms") musi być podpięty do repozytorium SVN jako całość (np.: "widmogrod.info") jest możliwość wyselekcjonowania pojedynczego katalogu w projekcie (np. "KontorX" czy "application") poddanego kontroli wersji.
  • szybka analiza zmian (można sprawdzić określoną gałąź projektu np.: wybrany plik lub katalog)
  • wizualizacja różnic wersji lokalnej i na serwerze, IDEALNA!


Eclipse Subversive
  • wizualizacja projektu jako SVN
    W przeciwieństwie do NetBeans brak możliwości posiadania kilku oddzielnych repozytoriów SVN w jednym projekcie.
  • Analiza zawartości zdalnego repozytorium SVN

  • Nie znalazłem wizualizacji różnic pomiędzy wersją lokalną a serwerową
    brak diff .. chyba że jestem ślepy ..

Głownem kryterium, na którym bazuje jest możliwość posiadania w projekcie kilku oddzielnych bibliotek, które są wsparte obsługa SVN.
Ponadto brak kontroli różnic lokalnych i zdalnych w Eclipse dyskwalifikuje je całkowicie.

Wygrywa NetBeans 6.5 z wczesnym wsparciem dla PHP!

Dla zainteresowanych konfiguracją Subversive na Eclipse źródła, z których korzystałem.

czwartek, 21 sierpnia 2008

Zend_View_Helper_Action jako aplet + Zend_View_Helper_Url = niespodzianka

Wykorzystując Zend_View_Helper_Action w layout-cie (jako aplet w layout)


$this->action('list','index','calendar', array('rowCount' => 5));


dostałem wyjątek

Zend_Controller_Router_Exception: module is not specified in ..


O co chodzi?
Na początku anializy myślałem że jest błąd w tym helperze i dispachowaniu akcji ale naszczęście się myliłem. Rozwiązanie problemu okazało się dużo bardziej trywialne jak i zaskakujące!

Wykorzystując pomocnik widoku Zend_View_Helper_Url w pliku widoku dla wywoływanej akcji (czyli list.phtml) nie można korzystać z "skróconej" wersji generowani url!

tj. zamiast

$this->url(array('action' => 'display','id' => $row->id),'frontend')

należy stosować pełny zapis

$this->url(array('module' => 'calendar','controller' => 'index','action' => 'display','id' => $row->id),'frontend')


EDIT:
Można stosować skróconą wersję pomocnika widoku dla akcji tylko 2gi parametr określający url w/w przykładzie nie może być 'frontend' tylko musi być domyślnym tj. musi zostać pominięty

dixi.

poniedziałek, 18 sierpnia 2008

mktime - w przyładach

Jak ugryźć funkcję php mktime?

W poniższych przykładach zmienna $time posiada postać.

$time = time();


Początek dnia
np.: 2008-08-18 00:00:00

$startDay = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time), date('Y',$time)));


Koniec dnia
np.: 2008-08-18 00:00:00

$endDay = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time)+1, date('Y',$time)));


Początek tygodnia
np.: 2008-08-18 00:00:00

$startWeek = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time), date('Y',$time)));


Koniec tygodnia
np.: 2008-08-25 00:00:00

$endWeek = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time)+1, date('Y',$time)));



Pierwszy dzień miesiąca
np.: 2008-08-01 00:00:00

$firstDayInMonth = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), 1, date('Y',$time)));


Ostatni dzień miesiąca
np.: 2008-08-29 00:00:00

$lastDayInMonth = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time)+1, -1, date('Y',$time)));


Gdzie zastosować?
System statystyk. Wyłowienie z bazy danych rekordów z danego dnia, tygodnia, miesiąca.

SELECT * FROM stats WHERE time BETWEEN '$startDay' AND '$endDay'


Jedno pytanie mnie nurtuje. Czy 00:00:00 tj. północ - jest traktowana jako początek czy koniec dnia? wydaje mi się ze to jest ostatnia godzina danego dnia.

piątek, 1 sierpnia 2008

Backend - jak wygląda twoje zaplecze?

Na początku mojej przygody z PHP i tworzeniem paneli administracyjnych towarzyszył mi mały niedosyt. Zawsze byłem ciekaw jak wyglądają zaplecza, zarządzające, profesjonalne serwisy internetowe. Jakie rozwiązania stosują? w jakim stopniu są to rozwiązania innowacyjne a w jakim stare sprawdzone, użyteczne wzorce. Czy mój PA nie jest za skąpy czy zbyt lamerski.
Teraz mamy możliwość zaobserwowania jak prezentują się różnego rodzaju rozwiązania w wielu otwartych systemach zarządzania treścią. Weźmy pierwsze z brzegu


Teraz troszeczkę zmieniłem podejście do tworzenia backendów. Od czasu do czasu gdy nie mam natchnienia przeglądam już istniejące rozwiązania i szukam drogi środka - by wszystko bez nadmiaru niosło ze sobą intuicyjność i wygodę pracy.

Przegląd paneli administracyjnych jakie stworzyłem w roku 2008.

KontorX GWT - wszystko szło rewelacyjnie GWT zawładnęło moim sercem ale sam fakt płynącego czasu i ograniczeń EXT GWT i zachcianek klięta spowodował że ..
  • Strona głowna

  • Zarządzanie stronami
  • Dodanie nowego produktu
  • Zarządzanie produktami


.. powstał panel ..

KonotrX HTML
  • Zaraz po zalogowaniu wita nas mały dashbord

  • Kategorie w sklepie

  • Zarządzanie produktami
  • Załanczanie grafiki do produktu




WiDooM - prostota przeźroczystość to jest to!
  • Logujemy się

  • Strona głowna panelu administracyjnego
  • Zarządzanie treścią na stronie

A jak wygląda Twoje zaplecze?

piątek, 30 maja 2008

jQuery + Zend_Form = Form generator

Form generator demo

Wykorzystane biblioteki: Zend_Form od Zend Framework i jQuery

v0.3 - pierwsze publiczne wydanie (prezentacja)

Jest to nowy projekt, który wykonuję w ramach zlecenia.
Podstawową cechą tej aplikacji ma być (i mam nadzieje że jest ;)) intuicyjna możliwości tworzenia ankiet/formularzy, oczywiście bez wymaganej znajomości HTML przez użytkownika. Tak stworzony formularz ma być oddany w ręce potencjalnego klienta w celu wypełnienia i wysłania go na zdefiniowany adres e-mail.

Po raz kolejny w wykonaniu projektu posłużyłem się biblioteką jQuery. Pierwszą opublikowaną na tym blogu aplikacją, w której również została użyta w/w biblioteka jest jQuery ankieter.
Generowaniem formularzy zajmuje się świetny komponent od zend'a Zend_Form.

Kolejnym zastosowaniem tego skryptu, które nota bene wynika z jego charakteru jest przyśpieszenie tworzenia projektu z ZF.

środa, 28 maja 2008

Firebug - uzależnienie


Przymusowy format komputera i nowe Ubuntu 8.04 na pokładzie z Firefox3b4. Wszystko fajnie .. ale gdzie jest mój firebug!? Poprzez addons.mozilla.org/ nie mogę zainstalować .. nieeeee!!

.. w tym momencie zdałem sobie sprawę że jestem od niego uzależniony ..

W tej, jakże krótkiej chwili, zainstalowałem Opera dragonfly. Stwierdzam że to jeszcze nie to .. może .. jak będzie wersja stabilna to wtedy spróbuję. Obecnie firefox + firebug królują w webdeweloperce

.. a firebuga do "każdej" wersji firefoxa można pobrac z strony http://getfirebug.com/releases/index.html i po panice ;]

czwartek, 8 maja 2008

Trochę historii - www i ja

Internet ... co to było! pierwszy rok studiów stałe łącze, nieograniczone możliwości surfowania po sieci ... ach .. miło się to wspomina :)

Pierwszy raz (...) yhym .. ;) pierwsza strona WWW powstała w okresie Szkoły podstawowej - ślad po niej zaginął.

Pierwsza strona, od której zabawa zaczeła się na dobre to:
http://x100help.za.pl (jeszcze działa! ach te darmowe hostingi ;])
wykonana w: HTML



Następnie kontynuacją były jej modyfikacje
http://sghx100.za.pl - już wzobagacona w proste skryty PHP
wykonana w: HTML, CSS, PHP(wstawki)



Co to jest CMS? - też to chcę mieć! - zaczeło się powstała kolejna odsłona strony o samsung x100

http://www.widoom-cms.freehost.pl/x100/ - oparta na prostym CMS-ie
wykonana w: HTML, CSS, PHP(CMS WiDooM v1)




który napędzał też stronę:
http://www.widoom-cms.freehost.pl/
wykonana w: HTML, CSS, PHP(CMS WiDooM v1)




.. w międzyczasie
http://testament.za.pl/
wykonana w: HTML, CSS, PHP(wstawki)



miała być to strona o zespole TestAmenT .. wyszła strona z ogłoszeniami dla mojego kierunku .. hehe zabawne :P ..

Z serii stron dla ZiIP powstały jeszcze:

http://www.widoom-cms.freehost.pl/ziip/
wykonana w: HTML, CSS, PHP(CMS WiDooM v1)


http://www.widoom-cms.freehost.pl/ziip2/
wykonana w: HTML, CSS, PHP(CMS WiDooM v2)



http://samsung.ovh.org/ziip3/
wykonana w: HTML, CSS, PHP(CMS WiDooM v3)



Dwie powyższe strony zostały oparte na txtdb v1 - tekstowej bazie danych, wersja 1 obslugowala proste zapytania SQL, w puźniejszych z tego zrezygonowałem (nie działało to optymalnie wersja 3.1 dorobiła się jojnowania, sortowania, obsługi struktury hierarhicznej i wielu wielu bajerów :)

Teraz kolej na strony pod tytułem "dla innych" ;) nie zawsze za $

maszyny-jaro.prv.pl - strona wykonana w połączeniu PHP i MySQL, miała być katalogiem produktów sprzedawanych przez firmę Jaro - umarł projekt
wykonana w: HTML, CSS, PHP, MySQL


wpktuning.pl
wykonana w: HTML, CSS, PHP, txtdb v3.1



firmawpk.pl
wykonana w: HTML, CSS (blueprint - jak widać ;])



krzysztofzaba.pl -niedziala - ktoś czegoś nie opłacił ..
wykonana w: HTML, CSS, PHP

(znaleść screanshot ^^)

Dla promotor.krakow.pl

dietetyka.krakow.pl
wykonana w: HTML, CSS, jQuery, PHP(CMS Light v1)



psychodynamika.pl
wykonana w: HTML, CSS, jQuery, PHP(CMS Light v1.2)



http://www.eu1.pl/
wykonana w: HTML, CSS, jQuery, PHP(Light Framework)


http://krakkable.pl/
wykonana w: HTML, CSS, PHP
wkład: nie szablon :P


http://kalendarze.kr.com.pl/
wykonana w: HTML, CSS


kcp.krakow.pl
wykonana w: HTML, CSS, jQuery, PHP(CMS Light v1.5)


Dla kreatywni.net.pl

ramy-verso.pl
wykonana w: HTML, CSS, jQuery, PHP(CMS Light v1.3)
wkład: oparcie na CMS



fotorowecki.pl
wykonana w: HTML, CSS, jQuery, PHP(CMS Light v1.3)
wkład: oparcie na CMS


http://optotechmedical.pl/
wykonana w: HTML, CSS, PHP(CMS KontorX), Light Framework (czyli domowa produkcja ;)), jQuery
wkład: kodowanie od A-Z, cięcie szablonu


salonagd.com
wykonana w: HTML, CSS, PHP(CMS KontorX), Zend Framework, jQuery
wkład: kodowanie od A-Z, cięcie szablonu


Z tego projetu jestem zadowolony, nauczyłem się przy nim ZF + panel administracyjny w wersji pierwotnej był wykonany za pomocą GWT + EXT jednak z powodu - brak rąk do pomocy - zrezygnowałem z GWT i postawiłem na HTML + biblioteję jQuery

Wyciągłem z niego jeszcze jedną mądrą naukę, własne framework-i są ok, ale co jest dziełem tak ogromnej społeczność wychodzi poza wymiar ok!

Jest już kilka innych tytułów w drodze, nieomieszkam ich nie opisać.

wtorek, 11 marca 2008

Ankiety w jQuery

Niedawno odwiedził mnie znajomy z prośbą o pomoc w napisaniu skryptu do sprawdzania poprawność wypełnianych ankiet.

demo + souce

Jakie są założenia:

  • można uruchomić z CD
  • nieograniczona liczba pytań w ankiecie
  • kilka ankiet na jednej stronie
  • stany ankiety:
    • wszystkie odpowiedzi prawidłowe
    • prawie wszystkie odpowiedzi prawidłowe
    • ankieta wypełniona nieprawidłowo
    • nie zaznaczono odpowiedzi
  • możliwość dodania objaśnienia do odpowiedzi ankiety ale tylko po wypełnieniu ankiety
  • każda ankieta traktowana indywidualnie
  • sumowanie wyników - brak ;]

Jako że ankiety mają być na CD, pomyślełem JavaScript
wybrałem jQuery - już wcześniej dobrze mi się pracowało z ta biblioteka i tym razem też tak było.

Skrypt ankiet jest udokumentowany zatem podgląd źródła i wszystko wiemy!.

Top geekowych cytatów ..

Dostałem dzisiaj newsletter z wykop.pl i tak sobie go przeglądam, patrze
Top 60 geekowych cytatów - będzie ciekawe ..

.. a oto moi wybrańcy ;)

  • Na świecie jest 10 typów ludzi: ci, którzy rozumieją system binarny i ci którzy nie
  • 3sL1 p0tr4f15z t0 PrZ3cZyt4c pRzYd4l08y c1 5i3 tR0cH3 53k5u
  • Szklanka nie jest ani w połowie pusta ani w połowie pełna: jest dwa razy za duża
  • Hej! To się kompiluje! Sprzedawaj!
  • W moich programach nie ma błędów – są tylko losowe funkcjonalności
  • It’s not a bug, it’s a feature
  • Kiedy życie zadaje ci pytanie… Google zna odpowiedź
  • Dziewczyny są jak nazwy domen. Najlepsze już zajęte
  • Dowodem na to, że w kosmosie jest inteligencja jest to, że się z nami nie kontaktują
  • I see fragged people

Zachęcam do przeczytania wszystkich są naprawdę przezabawne ;]

Edit: jak już o rozrywce czy zawużyłeś to grając w Mario Bros?

sobota, 1 marca 2008

GWT: Prezentacja opularnych projektów

Zapraszam do obejrzenia filmu z konferencji The Voices That Matter na której, twórcy co popularniejszych projektów dla GWT wypowiedzieli o nich słówko :)

Oto niektóre z nich:


Warto się z nimi zapoznać przy projektowaniu swojej aplikacji :)

niedziela, 24 lutego 2008

HTTPRequest.asyncPost

Nie myślałem że trzeba się tak natrudzić by wysłać dane POST z poprawnymi nagłówkami.

Dokumentacja mówi:

asyncPost(java.lang.String url, java.lang.String postData, ResponseTextHandler handler)

Makes an asynchronous HTTP POST to a remote server.
Zastosowanie trywialne ..
HTTPRequest.asyncPost("http://example.pl","id=2",new MyResponseTextHandler());
..prawie, bo żadne dane nie zostały przesłane.

Firebug pokazuję jakie dane POST zostały wysłane (nie do w/w przykładu):

a powinny one wyglądać mniej więcej tak:

Pomyślałem że 2gi parametr postData powinien być jako JSON ale - też nie :/.
Nie ma tego złego bo nauczyłem się generować JSON w GWT :)

Google.pl pomogły znaleźć rozwiązanie - link
wystarczy dodać w kodzie php takie 2 linie kodu i wszystko działa :)

$postData = array();
parse_str(file_get_contents('php://input'), $postData);