Dziupla

przytulna i ciepła
  • rss
  • Główna
  • O mnie?

Był sobie kod, czyli WYSIWTF

19 lutego 2009 | 23:27

Wyjaśnienie dla niezorientowanych: tytułowy skrót to twórcza parafraza skrótowca WYSIWYG, reklamującego pierwsze bardziej wypasione edytory tekstu (obsługujące drukarki laserowe czy atramentowe): “What You See (na ekranie) Is What You Get (w druku)”. Natomiast parafraza to oczywiście “What You See Is… What The Fuck?!” i służy m.in. jako nazwa serwisu opisującego dokonania programistów, jakby to ująć… “programujących inaczej”?

Ale do rzeczy.

Zawodowo zajmuję się utrzymywaniem i rozwijaniem kodu rozmaitych biznesowych aplikacji webowych. Jedna z nich umożliwia pewnej firmie (nomina sunt - jak wiadomo - odiosa, zresztą to bez znaczenia dla opowieści) obsługę klientów wysyłajacych SMS-y. Po otrzymaniu SMS-a przedstawiciel firmy oddzwania i ustala z klientem sprzedaż towarów czy usług. Albo i nie. No i właśnie do monitorowania kontaktów i ewentualnych transakcji służy wspomniana aplikacja.

W zasadzie jest to całkiem nieskomplikowany kawałek kodu, przygotowany i podłączony na szybko jako część większej całości. Był on pisany rok temu pod potrzeby tego konkretnego klienta, nie wymagał przez ten czas żadnych modyfikacji, a ponieważ się sprawdził, to powoli przymierzamy się do zastąpienia go rozwiązaniem bardziej uniwersalnym. Klient testuje już nową wersję, ale na co dzień korzysta z tej starszej.

No i kilka dni temu otrzymałem informację, że w rzeczonym kawałku kodu tajemniczo zaginął przycisk umożliwiający eksport danych do Excela. Nieco się zdziwiłem, bo ostatnia zmiana w tym akurat miejscu nastąpiła prawie półtora miesiąca temu - czyżby nikt przez półtora miesiąca nie zauważył? Ale w sumie co mnie to obchodzi - nasz klient, nasz per pan. Zgłoszenie przyjęte. Poprawka sprowadziła się do zmiany kilkunastu wierszy kodu. W ramach testów parę razy kliknąłem - raport się generował. Podejrzałem zawartość - na oko wszystko OK. Odfajkowane, zaraportowane, klient poinformowany.

Dziś kolejny sygnał od klienta: od wczoraj (czyli od wdrożenia poprawki na serwerze) zamiast wpisywanych od roku notek, informujących o efekcie rozmowy z klientem, pojawiają się dziwne cyferki. Hm. Czyżbym o czymś zapomniał? Sprawdzam. Wygląda na to, że zamiast treści notki pojawia się jej identyfikator z bazy. No, to by się mogło zdarzyć przez przeoczenie, ale nie robiłem niczego, co miałoby jakikolwiek związek z wyświetlaniem samej notki - jedynie poprawki w menu.

Więc może kwestia modyfikacji w bazie danych - a raczej w jej konfiguracji - wprowadzanej równocześnie przez kogoś innego? Ale przez kogo? Rzut oka do systemu kontroli wersji kodu - przez ostatnie dwa tygodnie nie było żadnej takiej zmiany. Ba, nie było w tym obszarze żadnej zmiany nawet i przez ostatnie dwa miesiące… No to może baza? Zaglądam do bazy - i robi się niefajnie. To nie kwestia pomyłkowo wyświetlanego identyfikatora! Rzeczywiście notki zamieniły się w ID rekordów!

No dobrze. Ktoś nabałaganił. Kto? Data wskazuje na wczoraj, około czternastej. Czyli ja, podczas testów. Bardzo niefajnie. No to oceniamy rozmiar szkód. Cofam się w historii notek. Miesiąc, drugi miesiąc - w zasadzie wszystkie, poza jakimiś bardzo starymi testami, nie przypisanymi nawet do żadnego konkretnego klienta. Sytuacja robi się poważna. Wszystkie notki poszły sobie na spacer…

Sprawa jest jasna: czas na dupochron. Trzeba znaleźć winnego. No bo przecież nie może być, że ja. Za dobrze mi się tu pracuje. :-P

A więc ponownie zagłębiam się w kod. Pytanie podstawowe: co się dzieje? Po krótkiej analizie mam winowajcę: kod, który miał do notki dodawać informację o eksporcie i zapisywać ją ponownie, przez prostą literówkę zapisuje ID notki, zamiast treści. Naprawienie to usunięcie dwóch znaków - ale kto to zrobił i kiedy? Odkąd sięgam pamięcią, nie było potrzeby zmiany czegokolwiek w tej usłudze. Ba, nawet służyła jako przykład kodu napisanego tak efektywnie, że nie wymagającego zmian! :-)

System kontroli wersji potwierdza moje przypuszczenia. Ostatnie dwa miesiące (czyli odkąd powiększyliśmy zespół do czterech osób) - żadnych zmian. Sześć miesięcy, czyli ostatnia wersja, przy której pracowałem sam - dalej ani śladu. Dziesięć miesięcy, czyli pierwsze moje poprawki - też niezmiennie ten sam błąd. Czyli ta linijka kodu jest starsza, niż moja kariera w firmie. Ufff!!! No więc kto? Zajrzałem na sam początek, do kodu sprzed roku - i okazało się, że błąd powstał w pierwszej wersji kodu.

No dobrze. Czyli wiadomo kto, wiadomo kiedy, mogę jeszcze nie aktualizować cefałki. :-D

Ale co z danymi? Ostatnia kopia bazy, jaką mam (do testów), pochodzi z połowy października. Trochę stara. Dzwonię do administratora, przedstawiam sprawę. Proste pytanie: kiedy był ostatnio robiony backup bazy? Ma odpowiedziec za piętnaście minut. OK. Po piętnastu minutach odpowiedź: nie mamy backupów. Były sprzed dwóch tygodni, bo mieliśmy przenieść tę bazę na wydajniejszy serwer, ale nic z tego nie wyszło, więc skasowali i postawili w tym miejscu inny system…

Pięknie, kurwa, pięknie. Jedyna kopia danych poszła sobie na spacer w chwili, gdy je wyeksportowałem - a raczej wyeksplodowałem - z serwera. Ale… zaraz! Historia pobierania plików… Jest! Otwieram - cyferki. Bu. A miało być tak pięknie!… Chyba że… szukam dalej… są jeszcze dwie kopie. Druga - też cyferki, ale od lutego. Trzecia - na początku też cyferki, potem jakieś dane. Patrzę na daty - niestety, też z lutego.

Patrzę na daty jeszcze raz. Z lutego - ale zeszłego roku! I potem normalne wpisy. Alleluja. Czyli mam wszystkie dane… backup całej tabeli… w Excelu!… Z wyjątkiem pierwszych czterech wierszy, które ktoś nadpisał cyferkami - w lutym zeszłego roku właśnie. :-D

I to by było na tyle. Zapisałem sobie ten plik w dwóch kopiach (cud, że nie czyściłem ostatnio historii pobierania - nie lubię, jak mi takie śmieci z testów na dysku zalegają, a tu proszę, proszę, wcale nie taki śmieć…)

Problem rozwiązany - jutro rano dane powędrują z powrotem na swoje miejsce. Tylko zastanawia mnie, jak to jest, że klient ma funkcję, na której wbudowanie bardzo nalega (przy nowszej wersji eksporty do Excela też były jednym z głównych wymagań), ale z której wcale nie korzysta? (bo ostatnią osobą, która wyeksplodowała dane, był najwyraźniej poprzedni tester - rok temu!)… No i jakim cudem ten kawałek kodu przeszedł testy, skoro wywalił dane w kosmos? Nikt nie zauważył?… Hm. Trzeba się będzie temu przyjrzeć. Ale pomyślę o tym jutro…

Kategorie
--bez kategorii--
Komentarze rss
Komentarze rss
Trackback
Trackback

« Kto podkrada cukier? Spieszmy się czytać blogi0), czyli o prywatności w sieci »

Jedna odpowiedź

losowiec | 27 grudnia 2009 | 19:26

fajna strona, pozdrawiam ;)

Napisz komentarz

Możesz używać następujących tagów : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Najświeższe wpisy

  • Zza ekranu
  • W co się bawić?
  • AI
  • Migawka tramwajowa
  • Śmierć w Internecie
  • Migawki z wczorajszego słonecznego popołudnia
  • “Ludzki obyczaj ciekawy jest nadzwyczaj”
  • Życie poza korpo - czy istnieje? (uwaga, tldr!)
  • Życie w korpo
  • Szybki włam
  • Dzień wybuchających liści
  • Świąteczna uczta bogów na cztery ręce
  • Drobiazgi
  • Stulecie detektywów
  • Spieszmy się czytać blogi0), czyli o prywatności w sieci

Archiwa

  • luty 2010 (1)
  • listopad 2009 (1)
  • październik 2009 (2)
  • wrzesień 2009 (3)
  • sierpień 2009 (3)
  • kwiecień 2009 (2)
  • marzec 2009 (2)
  • luty 2009 (5)
  • styczeń 2009 (3)
  • listopad 2008 (1)
  • wrzesień 2008 (1)
  • lipiec 2008 (1)
  • czerwiec 2008 (8)
  • maj 2008 (3)
  • kwiecień 2008 (9)
  • marzec 2008 (7)
  • luty 2008 (4)

Zajrzeli na chwilę

kasiak74

rss Komentarze rss valid xhtml 1.1 design by jide powered by Wordpress reCAPTCHA Wordpress linkujmy! Wordpress get firefox