Amerykanskie systemy loteryjne24 lipca 2006 - 22:38:40

Minelo pare miesiecy, mozna by skrobnac notke, chyba nikt od tego nie ucierpi.
Jestem teraz na kontrakcie w pewnej duzej amerhykanskej korporacji ktora zajmuje sie loteriami dostarczajac hardware(nie moja dzialka), software do hardwaru(nie moja dzialka) i aplikacje webowe do interakcji z loteria(moja dzialka).
System przy ktorym pracuje jest wielka kobyla, ok 400K plikow ze zrodlami plus pliki konfiguracyjne i inny stuff.
Mozna te aplikacje okreslic jednym mianem: "wielki hack". Powstala ona z przelozenia rownie wielkiego, niemozliwego do utrzymania, systemu("stary wielki hack") ktory pracowal w oparciu CORBA, XML, RMI oraz liczne dodatki takie jak Perl,Tcl, troche basha, wlasny binarny protokol do komunikacji pomiedzy warstwa prezentacji a warstwa logiki biznesowej i cholera wie co jeszcze. Cecha charakterystyczna tego systemu jest cos, co wlasciwie w jego przypadku mozna by juz okreslic mianem wzorca projektowego, a mianowicie "rozproszona logika biznesowa". Kazdy kto troche pisal wiekszych systemow orientuje sie w stosowanych architekturach i podzialach na warstwy (prezentacja, logika, integracja, trwalosc itp) i skupieniu w danej warstwie jakiejs odpowiedzialnosci, kazdy ale nie tworcy systemu, nazwijmy go X(nie mylic z produktem "System X" comary 4 PTC). System ten charakteryzuje sie tym ze dosc swobodnie podchodzi sie w nim do wykonywania tzw. logiki biznesowej, bo niby czemu ktos ma w logice zawierac takie rzeczy jak np. sprawdzenie czy uzytkownik ma odpowiednia ilosc lat zeby grac w gre Y skoro mozna to umiescic w DAO albo wyniesc kawalek w gore i tuz pod widokiem umiescic. Pozatym zeby bylo ciekawiej DAO nie jest tym czym z reguly DAO bywa, tutaj mamy UBER-DAO, genialne obiekty ktore sie tworzy gdy jest taka potrzeba(wkladajac w nie managera polaczen do bazy danych :) ) nastepnie one wykonuja na sobie rozne operacje, waliduja sie, tworza inne obiekty UBER-DAO, zapisuja i odczytuja swoje wartosci poczym gina gdy wykonaja swoje zadanie. Bo wiadomo ze gdy obsluguje sie tylko 100K owiedzin dziennie to tworzenie duzej ilosci duzych obiektow jest bardzo wskazane !.
Kolejna atrakcja jest uzywany w systemie wzorzec komendy, dosc popularny w tej firmie, sam w sobie calkiem przyzwoity choc wole lancuch komend. Tutaj niestety lancucha niema, sa pojedyncze, wielkie komendy, dziedziczace jedna z drugiej, zmiksowane setki lini kodu ktory waliduje sie raz tu raz tam, a walidacje przeprowadza przy uzyciu kolejnego wzroca popularnego w systemie. Wzorca "harmonia instrukcji warunkowych" ktory jak nazwa wskazuje sklada sie z jak najwiekszej ilosci zagniezdzonych w sobie if'ow i switchow, poprzetykanych jakas petelka a najlepiej kilkoma pracujacymi na kilku tablicach albo kolekcjach. Nie nalezy sie dziwic ze system ma mnostwo bledow oraz problemy z wydajnoscia...
Niech mnie ktos stad zabierze :( :cry:

1 komentarz
 Owieczka za stadem...13 marca 2006 - 20:48:19

A może raczej baranek...

  1. Złap najbliższą książkę.
  2. Otwórz ją na 123 stronie.
  3. Znajdź piąte zdanie.
  4. Obublikuj je na swoim blogu razem z tą instrukcją.
  5. Nie szukaj najfajniejszej książki, jaką można znaleźć. Użyj tej, która faktycznie leży najbliżej Ciebie
"As he tottered around to get a view of the garden entrance of La Dunette, he reminded Eliza of a club balanced on a juggler's palm."
bieżaca lektura, Neal Stephenson "The Confusion"

5 komentarzy
 TP S.A. power developers...21 lutego 2006 - 00:02:08

Z panelu neostrady:
BŁĄD W OBIEKCIE Nr 2861 : Wyjątek w wywołaniu metody sql.executeProcedure
(6550 : java.sql.SQLException: 
ORA-06550: linia 1, kolumna 7: PLS-00306: niepoprawna liczba lub typy argumentów w wywołaniu 'GET_USER_RECEIVED_BYTES' 
ORA-06550: linia 1, kolumna 7: PL/SQL: Statement ignored )

Błąd połaczenia z Infranet  java.net.ConnectException
krótki komentarz: ROTFL niema to jak userowi na UI nazwy kolumn i oraclowe kody błędów dawać !!

Dodaj komentarz
 Upgrade27 grudnia 2005 - 12:52:50

Przyszła paczuszka z nowym wudekiem 160GB SATA II dla mojego blaszaka + troche drobnicy do serwera (jakiś DRAM 512, grafika + sempron). Dzis szczęśliwy dzień pod znakiem srubokrętu i przenoszenia danych pomiedzy trzema komputerami. Dodatkowo planuje przetestować openSuse 10, SLES 9 i Ubuntu 5.10 ;-)...
Niema jak urlop !

Dodaj komentarz
 Kolejna zmiana desktopu26 grudnia 2005 - 20:28:10

Wykorzystałem święta żeby przesiąść się z GNOME na KDE 3.4.3. Próbowałem różnych managerów okien (i kompletnych desktop enviroment :P 4 da.killa): *box,xfce,icewm,enlightenment,gnome i kde. Nic w 100% mi nie pasuje :(
Przez kilka miesięcy uzywałem GNOME w wersjach 2.8 i 2.10 które oferowały dobry kompromis między szybkością działania, konfigurowalnością, ciekawymi opcjami i wyglądem ale znudził mi się, a że w QT jest sporo wygodnych aplikacji podczas gdy w GTK poza softem z Mozilla Foundation niema na czym oka zaczepić (flame goes here ;) ). Dałem szanse KDE i musze powiedzieć że nieźle to wygląda. Szybkość działania nie jest mniejsza a funkcjonalnością i możliwościami konfiguracji znacznie przewyższa GNOME. Jedyne co mogło by być lepsze to domyślne tematy.

10 komentarzy
 Kogoś porównać ?20 października 2005 - 01:18:00

Tak sobie któregoś dnia potrzebowałem sortować niezbyt duże kolekcje wyświetlane na stronie JSP. Kolekcje były różne na różnych stronach tzn. każda zawierała obiekty innego typu. Użytkownik miał sobie klikać na nagłówku kolumny i uzyskiwać posortowanie. Kod podpierający strone (JSF) wiedział o kolekcji tyle, że znał typ JavaBean jaki w niej siedzi, a że beany lubią się zmieniać niechciałem już do niego wracać w tym miejscu. Jedynie na stronie, na której i tak w przypadku modyfikacji musiał bym wprowadzać zmiany chciałem przekazać parametr po czym sortować. Z minimalistycznym podejściem napisałem sobie małą fabrykę komparatorów która ma taką metodę:
Comparator getComparator(String methodName, Class clazz){
		Method method = clazz.getMethod(methodName,new Class[0]);
		Class returnType = method.getReturnType();
		
		if(returnType.equals(String.class))
			return new StringMethodComparator(method);
//troszke skrócone tu i ówdzie żeby sie nie rozjeżdzało
(...)
przekazuję do fabryki obiekt reprezentujący klasę porównywaną oraz nazwę metody która zwraca porównywaną wartość (zgodnie z konwencja getter niema parametrów), sprawdzam typ zwracany i produkuje odpowiedni komparator przygotowany do pracy z określoną metodą podanej klasy i porównujący właściwy typ. Java rządzi. ;-P

8 komentarzy
 Microsoft retards12 października 2005 - 00:09:18

dlaczego windows jest jaki jest ?
odpowiedz jest prosta: microsoft jest kierowany przez tych gosci:


2 komentarze
 Haslo na ten weekend24 września 2005 - 20:24:07

Adding manpower to a late software project makes it later.
-- F. Brooks, "The Mythical Man-Month"

Dodaj komentarz
 Program killers19 września 2005 - 20:57:34

W firmie nam organizuja zespol testerow. Hardcorowych klikaczy do psucia aplikacji :)
mam ochote sie wkrecic i moze wciagne jakiegos znajomego spoza firmy. Bedzie fajnie, zreszta zawsze jest chyba ze musze szkolenie prowadzic :P

1 komentarz
 starzeje sie chyba...15 września 2005 - 23:54:39

Cyrograf z firmą na 4 lata. Karta płatnicza, karta kredytowa, fundusz powierniczy...
i o matko... KRAWAT

czasem siebie nie poznaje :poke:

3 komentarze
To już było...
.
Powred by Jogger. Copyright ©2002-2003 Justin Mecham oraz JabberPL Group.
Wszystkie prawa zastrzeżone. Legalność; Informacje