jQuery Cluetip – opóźnienia żądań ajaxowych

W ostatnim czasie pracowałem nad modułem ewidencji czasu pracy w systemie kadrowo-płacowym. System intranetowy, ograniczona ilość użytkowników. Z tych, a nie innych względów na panelu miesięcznym pracowników został wykorzystany jQuery Cluetip do wyświetlania w dymku informacji o danym dniu pobieranych ajaxem.

Tak to mniej więcej wyglądało:

Czytaj dalej

Styczeń zawsze bywa pracowity

Nie wiedzieć czemu, styczeń co roku jest miesiącem, w którym mam najmniej wolnego czasu. Przez ostatnie dwa tygodnie rzadko kiedy wracałem do domu przed godziną dwudziestą pierwszą, jednocześnie wyjeżdżając do pracy o godzinie ósmej rano. Na to wszystko złożyły się: nadgodziny w pracy, treningi na siłowni, a ostatnio zapisałem się na Krav Magę dwa razy w tygodniu po półtorej godziny. A jako że jeszcze zaczytałem się Panem Mercedesem Stephena Kinga zabrakło czasu na mini projekt rozwojowy z którym mógłbym się podzielić w tym miejscu.

Filip – pamiętam o zauważonym przez Ciebie problemie z polską czcionką, jeszcze raz dzięki za informację (poszukam jakiejś zastępczej w zbliżającym się tygodniu).

Dziś dorzucam do bloga listę pozycji na mojej półce przeczytanych książek (od momentu powstania tej strony).

Wzorce projektowe – fabryki

Factory_1Za każdym razem gdy używamy w kodzie operatora new, uzależniamy się od konkretnej implementacji zamiast od interfejsu. Jedna z zasad programowania obiektowego (reguła odwracania zależności / dependency inversion principle) mówi:

 

Uzależniaj kod od abstrakcji, a nie od klas rzeczywistych.

Zapewne każdy programista spotkał się ze składnią:

Wcześniej czy później z pewnością zmienią się wymagania i zajdzie konieczność rozbudowy programu. Nie obejdzie się bez modyfikacji istniejącego kodu. Wtedy zostanie złamana zasada open/closed:

System powinien być otwarty na rozbudowę, ale zamknięty na modyfikacje.

Można zauaważyć że fragmentem kodu mogącym ulegać zmianom będzie instrukcja warunkowa if/else zwracająca konkretny produkt w zależności od przekazywanego parametru. Ten fragment kodu nie jest zamknięty na zmiany, ponieważ gdy zajdzie konieczność dodania nowego produktu lub usunięcie istniejącego będziemy musieli wrócić do tego miejsca i wykonać aktualizację.

Czytaj dalej