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


Mar 26 2008

Mootools 1.2 BETA - problemy z kompatybilnością

Tag: JavaScriptskowron @ 04:58

Mootools LogoDeweloperzy
Mootools - bardzo wydajnego i efektywnego frameworka JavaScript od ponad pół roku w pocie czoła pracują nad nową wersją 1.2. Już przed wypuszczeniem pierwszej wersji beta było wiadomo że

Some parts of MooTools 1.2 aren’t immediately compatible with those found in MooTools 1.1

Od poprzedniej wersji zostały wprowadzone zmiany dość niskopoziomowe takie jak tworzenie klas czy ich dziedziczenie.

Aby jednak umożliwić osobom wykorzystującym obecną wersję stabilną korzystanie z dobrodziejstw nowej, ulepszonej postanowiono udostępnić również wersję która będzie zapewniała zgodność z wersją 1.11.

Ostatnio postanowiliśmy sprawdzić jak nasze aplikacje działają z nową wersją MooTools. Jako, że serwis
baltic4you.pl jest ściśle powiązany z JavaScriptem (oparty jest w sporej części na tym frameworku) to testy zostały przeprowadzone właśnie na nim. Dodatkowo został sprawdzony DeForm - nasz system do tworzenia formularzy.

Na pierwszy ogień poszła wersja bez kompatybilności i… zgodnie z oczekiwaniami stworzona wcześniej aplikacja wysypała się zanim cokolwiek zdążyło się wykonać. Kolejna próba to test z wersją zapewniającą zgodność. Jednak jak się okazało “zgodność” to nie do końca odpowiednie słowo :).

Generalnie większość funkcjonalności działa poprawnie jednak niektóre generują błędy tak więc zmiana wersji okazuje się na dzień dzisiejszy nieco kłopotliwa. Stwierdziliśmy. że z problemem zmierzymy się dopiero gdy zostanie opublikowany Mootools 1.2 stable, by mieć pewność, że generowane błędy nie powstają z winy frameworka.

Na pewno możecie oczekiwać relacji z tego wydarzenia ;) A będzie się działo…


Mar 18 2008

Drukowanie z poziomu skryptu PHP w systemie Windows

Tag: PHPskowron @ 01:46

Część osób nie wie że istnieje możliwość dodania do PHP rozszerzenia pozwalającego na otwarcie połączenia z dowolną drukarką zainstalowana wcześniej w systemie operacyjnym i zmuszenia jej do wyplucia czego tylko zapragniemy. Aby tego dokonać należy:

  1. Pobrać odpowiednią bibliotekę (najlepiej ze strony
    pecl4win).
  2. Skopiować plik php_printer.dll dokatalogu ext w folderze gdzie zainstalowany jest PHP (np C:\Program Files\PHP\ext)
  3. Edytować plik php.ini (najczęściej znajduje się w C:\WINDOWS) i dodać w częsci z rozszerzeniami (Windows Extensions) linijkę extension=php_printer.dll

Aby przekonać sie czy całość działa spróbuj uruchomić następujący kod:

Ten i więcej przykładów znajdziecie bezpośrednio na
http://pl.php.net/printer.

Część osób pewnie zapyta o zastosowanie tego typu rozwiązania. My wykorzystaliśmy tę funkcjonalność podczas drukowania kodów kreskowych. W rezultacie sprzedawca chcąc dodać nowy produkt, klika “wygeneruj nowy kod kreskowy” a drukarka automatycznie rozpoczyna drukowanie uprzednio wygenerowanego w php kodu.

Ograniczeniem może być brak odpowiednika dla systemu spoza rodziny Windows. A może zna ktoś takowy?


« Previous PageNext Page »