Apr 30 2008

MySQL i kolumny typu SET

Tag: MySQLbuka @ 11:25

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”


Apr 23 2008

Commit MySQLowych transakcji

Tag: MySQLdooshek @ 12:54

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)


Apr 17 2008

Adobe AIR for Linux

Tag: Adobe Airskowron @ 03:26

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ę :)

air


Apr 10 2008

Przydatne skróty w Zend Studio

Tag: Programybirkin @ 03:01

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”:


Apr 03 2008

ImageZoom - fajny sposób prezentacji zdjęć

Tag: JavaScriptbirkin @ 03:33

lupa.jpgOstatnio 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ęć”


Apr 02 2008

Testowanie szybkości wykonywania SQLi

Tag: MySQLdooshek @ 09:12

MySQLZapewne 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”


Apr 02 2008

CSS media=”__” i @media

Tag: Przeglądarki, HTMLbuka @ 11:49

Ot ciekawostka, choć przydatna.

Wszyscy wiedzą, że przy ładowaniu arkusza stylów można (a raczej “należy”) podać atrybut media=”all/screen/print/jeszcze_parę_innych”. Pewnie wiele osób, ale może już nie wszyscy, wiedzą że wewnątrz arkusza można też używać deklaracji “@media all/screen/print/itp”. Ciekawostką może być połączenie obu metod - np. mamy arkusz css do wydruków ukrywający nawigację, ale chcemy mieć popup’a z “podglądem” wydruku.

Robimy więc sobie dwa arkusze stylów, jeden standardowy, drugi do wydruku - ukrywający niepotrzebne elementy (nagłówek, nawigację, reklamy itp) lub czyszczący obrazki z tła. Do dokumentu dołączamy oba w sekcji , np:

Teraz bardzo prosto możemy wyświetlić coś, co można traktować jako prosty podgląd wydruku (bez podziału na strony, czy marginesów) - np. dodać do strony link do podglądu kierujący na obecną stronę plus parametr GET’em np ‘?preview=1′. Wystarczy sprawdzać ten parametr przy dodawaniu stylów i kiedy jest on ustawiony zmieniać “media” drugiego arkusza - np. w php:

No dobra, mamy podgląd, to przydałoby się jeszcze móc od razu wydrukować co widzimy. Więc w stronę wrzucamy button “Drukuj” (’onclick=”window.print();return false;”‘) z id=”PrintIt”, standardowo go ukrywamy (w pierwszym arkuszu css #PrintIt{display: none;}), a nasz arkusz css, który miał nam czyścić stronę z tego, co niepotrzebne do wydruku, tym razem powinien nam dodać tego buttona, ale tylko na podglądzie, a nie na samym wydruku. Więc wstukujemy do niego:

No i mamy jedną stronę, podstawowy podgląd wydruku, z dodatkowym buttonem do drukowania widocznym tylko na podglądzie, nie na “standardowej” stronie, czy samym wydruku :)

printcss


Apr 01 2008

Wykrywanie nie wyczyszczonych CSS::float

Tag: JavaScriptskowron @ 10:57

Wczoraj na
Ajaxianie pojawiła się krótka notka o sposobie na szybkie sprawdzenie który z elementów nie jest odpowiednio “wyclearowany”. Feature wydaje się być o tyle fajny, że pod IE6 czasem ciężko stwierdzić dlaczego layout się rozjeżdża, a Developer Toolbar przy zainstalowanym Multiple Ie działa tylko w IE7…

Jako że w naszej pracy głównie używamy biblioteki
mootools, postanowiłem nieco zmienić przedstawioną wersję tak by z współpracowała z nią a nie z
jQuery. A oto rezultat:

Bookmarklet - wystarczy wejść na stronę i wkleić tę linie do pasku adresu po czym kliknąć enter, lub jak sama nazwa wskazuje dodać do zakładek :)