Archiwum

Archive for Marzec 2011

Błędy związane z czasem

20/03/2011 Dodaj komentarz

Nazbierało mi się ostatnio trochę ciekawych przypadków/błędów związanych z czasem. Są one trochę inne niż te które zazwyczaj spotykam. Mają one tą szczególną cechę że pojawiają się naglę, mimo że nic się w strukturze kodu nie zmieniło; lub występują, a potem znikają (duch).
Przytoczone tu przypadki są związane z bazą danych (może lista się rozszerzy z czasem, a może ktoś podrzuci inne przykłady). Są to błędy związane raczej z danymi, stąd może dlatego częściej pojawiają się właśnie przy bazie.

Przypadek przeterminowania się danych
Objawy: Coś nagle przestało działać, a nic nie było ruszane.
Przykład: Sprawdzenie czy dziś nie mija jakaś data. Warunek ten może być zaszyty w jakimś zapytaniu, widoku czy procedurze. Wszystko jest dobrze na początku, gdy owa graniczna data jest odległa w czasie, powiedzmy za rok. Kiedy jednak to nadchodzi, może być zdziwienie, chwila zamieszania i długotrwałe przeszukiwanie całego kodu, a baza często stoi jako jeden z ostatnich etapów tego szukania.
Nie chodzi tu tylko o przypadek zaszycia sprawdzenia czasu z obecną data (SYSDATE), ale może to być jakaś wartość wzięta z bazy, którą ktoś nieopacznie zmienił, a związek z błędem może nie być łatwo dostrzegalny.

Przypadek niewłaściwego formatu czasu
Objawy: Brak działania funkcjonalności w określonych porach.
Przykład: Narzucenie dostępności czegoś w określonych dniach, czy godzinach.
Błędy gdy zegar systemowy rozjedzie się z rzeczywistością. Bardziej prawdopodobne na etapie developmentu – kiedy nie dba się zbytnio o środowisko i nikomu nie przeszkadza że zegar spieszy się przykładowo o 2 godziny.
Określenie dnia tygodnia (ten właśnie przypadek natchną mnie do napisania tego posta 😉 ). Nie właściwa instalacja bazy i przyjęcie formatu daty, lokalizacji serwera w innej strefie czasowej. A to może prowadzić, że na jednej instancji bazy funkcja może zwracać inne wartości niż na drugiej. Ów przykład dla Oracla
TO_CHAR (SYSDATE, 'D')
określenia jaki dzień tygodnia mam – raz może się to liczyć od niedzieli, innym razem od poniedziałku.

Reklamy
Kategorie:Inne Tagi: ,

Samolubny kod

04/03/2011 Dodaj komentarz

Samolubny kod czy klasa. Początek tutaj, a reszta jest luźnym komentarzem do tego.

Jest to ciekawe przedstawienie życia kodu w ujęciu teorii próbującej objaśnić szerzenie się idei (jak w skrócie można potraktować to co się kryje za słowem mem).
Sama teoria (jak dla mnie) wydaję się dość abstrakcyjna, jednak próba pokazania jej przez pryzmat tworzenia kodu daje fajne przemyślenia. Można spróbować wyciągnąć jakieś wnioski, zastanowić się dlaczego niektóre, wydawałoby się, wartościowe kawałki kodu nie cieszą się uznaniem. Podczas gdy inne, pośredniej jakości, są aż nadto rozpowszechnione. „Kawałek kodu” nie jest tu tylko dosłownie paroma linijkami kodu, ale może być to także biblioteka, aplikacja czy sposób pisania go.

Tak ujęty temat, może być pomocny w naszym codziennym kodowaniu. Poprzez szukanie odpowiedzi na pytania typu: Jak sprawić aby niektóre rozwiązania łatwiej infekowały nieświadomych tego programistów ;-), podczas gdy inne były wypierane?. Albo co trzeba zrobić aby biblioteka, którą tworzymy, trafiła pod „strzechy” (lub odwracając: którą bibliotekę wybrać do nauki, aby nie zmarnować zainwestowanego w nią czasu).

Może powiedzieć, że są to rady powtarzane gdzie indziej. Jednak pozwala to jeszcze raz spojrzeć na nie, w trochę inny sposób, i tym samym łatwiej jej zapamiętać (pozwolić się szerzyć nim :D). Na koniec przewrotne stwierdzenie. Każdy pewnie chciałby żeby jego kod miał szanse przeżyć, rozmnożyć się i stać się tak popularny jak „kopiuj-wklej”. A zapewne jest o wiele więcej naszego kodu, któremu nie chcielibyśmy dać takiej możliwości :D.

Kategorie:Inne Tagi: