Podejrzewam, że nie wszyscy wiedzą, że Firebug ma małą pomocną funkcjonalność “poboczną”, którą niedawno przypadkiem odkryłem. Jak wiadomo, gdyby nie Firebug to debugowanie zapytań ajaxowych byłoby w ogóle masakrą. Dzięki FB jakoś dajemy radę. Można sobie w funkcji zrobić var_dump’a, albo print_r’a i w konsoli FB wyłuskać wynik. Ale ze względu na wyświetlenie w konsoli html’a jako tekstu, var_dump praktycznie odpadał. Ale jeżeli ktoś czuje się bardziej związany emocjonalnie z var_dump’em ;) to w końcu dochodzimy do tego co znalazłem - jeżeli w odpowiedzi na zapytanie w konsoli FB mamy wysyp kodu html, można na nim kliknąć MMB/wałkiem, a Firefox otworzy nam go w nowej karcie, zinterpretowanego i pokolorowanego :)
That’s all, folks :) Mała rzecz, a cieszy ;)
ps. Tylko że nie zawsze to działa… ;P
W naszych serwisach bardzo często pojawia się zarządzanie cenami różnych produktów (wyliczanie cen, stawek VAT oraz innych skomplikowanych obliczeń). W większości przypadków podstawą jest cena netto, natomiast problem pojawia się, kiedy klient zażyczy aby podstawą była cena brutto!
Continue reading “Wykorzystanie ceny brutto w rachunkach aplikacji”
Dzisiaj z rana znaleźliśmy fajny sposób na debugowanie kodu w php. Instaluje się jako dodatek do firebuga, dzięki czemu można wyświetlić zawartość zmiennej czy tablicy bez ingerencji w układ strony i otwierania popupów. Bibliotekę można znaleźć na
http://www.firephp.org.
Składa się ona z 2 modułów:
- wtyczki do firefoxa, integrującej się z
firebugiem,
- funkcji / klasy napisanej w php którą trzeba podłączyć do swojego kodu php
potem wystarczy już tylko:
i już w zakładce console wyświetli się odpowiedni string :)
dokładny opis i możliwości znajdziecie bezpośrednio na
stronie wtyczki
Ponad tydzień temu 6 czerwca w stolicy gościliśmy pracowników Adobe, którzy przybyli do Nas szerzyć swoją “nową, rewolucyjną” technologię. Miałem przyjemność uczestniczenia w tej konferencji, którą oceniam jako na prawdę udaną!
Przede wszystkim należy docenić Ewangelistów z Adobe, którzy wkładają w to co robią bardzo dużo serca. Byli świetnie przygotowani, potrafili przedstawić prezentowany temat w bardzo przystępny, nie rzadko zabawny sposób. Po każdej z 2 - 3 prezentacji odbywała się krótka przerwa podczas której można było wrzucić coś do żołądka, wchłonąć trochę kofeiny z redbulla, pograć na Xboxie lub Wii, czy też co uważam za najcenniejsze porozmawiać z prelegentami z Adobe na osobności.
I tak dzięki temu udało mi się wyciągnąć nieco informacji:
- jeszcze w tym roku powinniśmy spodziewać się wersji stabilnej środowiska w wersji dla Linuxa,
- podobnie możemy oczekiwać aktualizacji używanej w środowisku wersji Webkita,
- developerzy usilnie myślą nad możliwością uruchamiania innych programów z poziomu aplikacji AIR
Każdy do którego się zwróciłem starał się pomóc. Jeżeli nie znał odpowiedzi na zadane pytanie, wskazywał odpowiednią osobę do której mogłem się zwrócić.
Osobiście najbardziej zainteresował mnie sam Flex. Postanowiłem sobie że poznam go bliżej, co powinno być łatwiejsze dzięki gadżetom który otrzymał każdy z przybyłych. W których znalazła się między innymi ściągawka z API Flexowego. Każdy miał również możliwość wygrania Flex Builder 3 Professional i innych cennych fantów. Mi niestety zabrakło szczęścia :)
Każdy z ewangelistów posiada swojego bloga. Myślę że warto je na bieżąco śledzić. Ich adresy można znaleźć na stronach
onAIR. Dokładny zapis wideo, ma być dostępny na
http://onair.adobe.com/ w ciągu 2 tygodni. Za to już teraz można oglądać
zdjęcia umieszczone przez Mike’a Chambersa.
dokładną relację z konferencji można przeczytać na blogu
http://adobers.org/spotkania/adobe-on-air-tour-warsaw-2008
Wszyscy znamy sql’owy SET jako np. określenie zestawu danych wrzucanych w odpowiednie kolumny. Ale SET jako typ kolumny, okazuje się nie wszystkim jest znany. Najprościej mówiąc jest to “trochę inny ENUM” :) A czym się różni i do czego go stosować możecie przeczytać dalej…
Continue reading “MySQL i kolumny typu SET”
Jak dobrze wiemy transakcje czasami się przydają. Wprawdzie używamy ich rzadko ale niekiedy są idealnym rozwiązaniem służącym głównie upraszczaniu kodu (nie musimy stosować wielu warunków) i zapewnienia integralności zapisywanych do bazy danych.
Kilkukrotnie jednak mieliśmy problem ze stwierdzeniem co dzieje się jeśli program zakończy swoje działanie po wykonaniu SQLa BEGIN (czy też START TRANSACTION). Przeprowadziłem mały inwestygejszyn i chciałbym to tutaj raz na zawsze wyjaśnić :)
Wygląda to tak, że dopóki nie wykonamy SQLa COMMIT dopóty zmiany nie zostaną zachowane w bazie. W praktyce nie trzeba nawet robić ROLLBACK - jeśli do końca danego połączenia nie wykonamy komita, to dane się nie zapiszą.
Poniżej przykład:
Wykonanie tego przykładu i zakończenie połączenia nie spowoduje wstawienia rekordu do tabeli sessions.
natomiast to jak najbardziej zadziała :) Być może są jakieś wyjątki od tych reguł - ja ich nie znalazłem.
Uwaga! W ramach tego samego połączenia - jeśli nie zrobimy ROLLBACK to dane będą “dostępne” czyli wykonanie:
spowoduje zwrócenie wstawionego wcześniej rekordu! Żeby tego uniknąć należy wykonać ROLLBACK (np. w przypadku kiedy jednak nie chcemy aby dane te zostały zapisane do bazy)
Uwaga! Zakończenie połączenia następuje również wtedy kiedy pojawi się jakiś błąd SQL (nasz framework w takim momencie kończy działanie z błędem lub pokazuje stosowny komunikat) więc w przypadku błędu SQL dane pomiędzy BEGIN…COMMIT nie zostaną zapisane (bo zabraknie COMMIT)
Niedawno Adobe wypuściło wersję środowiska programistycznego swojego autorstwa również
w wersji na linuxa, co sprawiło że stwierdziłem że nadszedł już czas aby poważnie zainteresować się tematem.
Mam już za sobą pierwsze testy. Póki co jest to wersja Alfa, ale generalnie wszystko prezentuje się w taki sam sposób jak na innych platformach,
z paroma wyjątkami które Adobe skrzętnie postarało się opisać.
Nieco wyżej znalazła się lista featuresów które udało się zaimplementować do tej pory.
Gdy zobaczyłem “Basic transparency” pomyślałem: “WOW w końcu udało im się opanować przeźroczystość pod linuxem!”… Godzinę walki później postanowiłem zmienić system na Windowsa i sprawdzić czy to ja nie rozumiem dokumentacji, czy jednak przeźroczystość nie jest obsługiwana. Okazało się że Adobe ma inne znaczenie słowa BASIC niż moje i tworzenie przeźroczystych okienek nie jest możliwe.
Wkrótce powstanie programik do obsługi muzyki w naszym biurze z dowolnego komputera. Zdobytymi doświadczeniami na pewno się podzielę :)

W poszukiwaniu internetowych przygód natrafiłem na parę perełek wspomagających moją prace w Zend Studio. Zawsze irytowało mnie to, że jak pisałem coś wewnątrz klasy to się wszystkie bloki od tego miejsca “otwierały” co utrudniało mi trochę wyszukiwanie. A o to parę przydatnych “short-cutów”:
Ostatnio internet przysłał do nas link do strony, na której znajdowała się oferta (jedna z tych nie do odmówienia) skryptu powiększającego pewne miejsce na obrazku - i wszystko to dla jednorazowego wykorzystania za jedyne 25 funtów! (
http://www.magictoolbox.com/magiczoom) Jako, że nie miałem drobnych w kieszeni a potrzebowałem podobnego efektu, zamknąłem przeglądarkę i odbyłem niesamowitą przygodę po ciemnej stronie kodu - JavaScript z MooTools. Efektem tego był taki kod
ImageZoom.js.
Continue reading “ImageZoom - fajny sposób prezentacji zdjęć”
Zapewne większość wie, że MySQL posiada wbudowany mechanizm cacheowania SQLi. Sprawdza się w miarę dobrze i w większości przypadków jego wyłączenie nie jest zalecane.
My programiści, potrzebujemy jednak do testów prędkości wykonywania SQLi (szczególnie tych operujących na większej liczbie danych) realnych prędkości.
Continue reading “Testowanie szybkości wykonywania SQLi”