Kilka miesięcy temu popełniłem wpis na temat wielostronicowych formularzy, zaprezentowałem tam m. in. mój plugin do symfony, który tą funkcjonalność automatyzuje. Udostępniłem go niedawno w zbiorze pluginów symfony, znajduje się on tutaj. Między czasie został on zrefaktorowany i zostały dodane nowe klasy.
Wielostronicowe formularze 2 17.07.2010
Wielkie sprzątanie - refaktoring 18.04.2010
Niedawno w ofercie wydawnictwa helion pojawiła się ciekawa książka - Czyty Kod (ang. "Clean code", autor Robert C. Martin). Książka ta opisuje techniki oraz zasady pisania czystego, czytelnego oraz modyfikowalnego kodu. Kilka zasad z tej książki w mojej opinii jest dosyć kontrowersyjnych, ale książka sama w sobie porusza bardzo ważną kwestię, a przede wszystkim jest ona naprawdę dobra.
czytaj całość, komentarzy: 9
Wzorce w praktyce: krótko o MVC 31.03.2010
Dla odmiany przykład zastosowania tytułowego wzorca projektowego omówię na przykładzie innego języka niż PHP. Przedstawię koncepcję warstwy kontrolerów (bynajmniej nie całego MVC) niezależnych od widoku na podstawie aplikacji desktopowej w Javie.
Podstawowe pojęcia wzorca MVC w gwoli przypomnienia:
Model - dane na których operuje program. Prezentuje go widok, a kontroler wykonuje na nim operacje (zmiana danych). Model powiadamia widok o dokonanych w nim zmianach, które dokonał kontroler.
Widok - jest to warstwa prezentacji, zazwyczaj interfejs konsolowy/graficzny użytkownika, prezentuje model oraz ewentualnie pod niektóre elementy widoku może być podpięty kontroler (np. przycisk który uruchamia słuchacza, który z kolei uruchamia kontroler).
Kontroler - wykonuje operacje na modelu, aktualizuje go, przekazuje do widoku model.
czytaj całość, komentarzy: 2
JTree, a JPopupMenu 26.03.2010
JTree jest komponentem drzewka z Javy, jak każda klasa dziedzicząca po JComponent może mieć podręczne menu.
Jednak w przypadku drzewka takie rozwiązanie nie spisuje się dobrze, zazwyczaj chcemy pokazać różne podręczne menu w zależności od klikniętego węzła. Przykładem może być netbeans, z lewej strony znajduje się drzewko projektów, w zależności od klikniętego elementu drzewka (projekt, folder, plik) otwiera się inne menu kontekstowe.
Wzorce w praktyce: Koordynator 29.01.2010
Dziś pora na trzeci artykuł z serii "wzorce w praktyce". Tym razem postanowiłem omówić praktyczne zastosowanie mniej znanego i stosowanego (w programowaniu w php) wzorca.
Każdy z Was zapewne wie co to jest transakcja bazodanowa. Jeśli jednak nie, to przypomnę, że transakcja w systemach baz danych polega na tym, że określony zbiór zapytań wykona się poprawnie w całości lub wogóle żadne zapytanie nie zostanie wykonane (de facto "nie wykona się" jest błędnym określeniem, raczej "nie zostanie zatwierdzone"). Więcej na ten temat znajdziecie na wikipedii. Transakcja jest implementacją wzorca projektowego koordynator, a raczej rozbudowanej specjalizacji tego wzorca o nazwie "Zatwierdzanie trój-fazowe" (Three-Phase Commit).
czytaj całość, komentarzy: 2
Wielostronicowe formularze 23.01.2010
Nie raz spotkałem się z problemem implementacji wielostronicowych formularzy w projektach w których uczestniczyłem, zazwyczaj były to formularze rejestracji, które składały się z 2-4 kroków. Podstawowe problemy które należy rozwiązać przy wykonywaniu formularza tego typu:
1. możliwie jak najprostszy, spójny i elastyczny sposób przetwarzania formularza, aby ewentualne dodanie nowego pola lub całego formularza kosztowało jak najmniej nakładu pracy
2. napisanie kodu, który będzie można również wykorzystać w przyszłości w innym projekcie
czytaj całość, komentarzy: 3
Asynchroniczny upload plików 01.01.2010
Asynchroniczne żądania są elementem, który upodabnia witryny www do aplikacji desktopowych, dzięki nim użytkownik ma wrażenie większej interaktywności. Jednakże, ze względów bezpieczeństwa, nie każdy rodzaj danych można przesyłać poprzez ajaxowe wywołanie, przykładem takich danych są pliki. To w jaki sposób asynchronicznie (bez przeładowania strony) wysłać plik na serwer www? Jest na to sporo sposobów. Trzy z nich które omówię to: technika "ukrytej ramki" (javascript), wykorzystanie flasha wraz z javascript (swfupload) oraz wykorzystanie apletu javy.
