czwartek, listopada 16, 2006

Wszyscy to wiedzą ale nikt o tym nie mówi

  1. Firma TrendMicro - udostępnia również jak i inne firmy skanner online. Jego instalacja odbywa się poprzez technologię ActiveX (zresztą tak działają wszystkie przeglądarkowe skanery) i jakoś to działa. Dziwne, że nikt nie zrobił skanera dla Mozilli. Może jeszcze za mały rynek dla tych rozwiązań.
  2. Użyteczne programy: ba.exe - bios agent do poznania wszystkich wersi BIOS (ważne gdy chcemy go zaktualizować), PC-Clean do czyszczenie systemu, PC Wizard + CPU Z.
  3. Siatki do wyświetlania danych - danych w większości przypadków jest dużo, nie mieszczą się na ekranie (formularzu, stronie webowej). Zachodzi potrzeba ich porcjowania. Problemów jest wiele: porcjowanie ma być elastyczne (podawać można jako parametr liczbę wierszy do jednorazowego wyświetlenia), wydajne (nie pobieramy od razu wszystkich danych do pamięci operacyjne lecz jedynie tzw. porcje), efektywne (zwalniamy pulę połączeń z bazą). Aby porcjowanie miało sens musi mieć wsparcie w motorze bazy danych, np. instrukcja SQL SELECT musi wspierać możliwość ograniczenia pobrania danych (FIRST 10, LIMIT 10). Musi być także jakiś mechanizm zaznaczania aktualnej pozycji w tabeli (MS nazywa to bookmark). Do problemu wykorzystania mechanizmów motora bazy można podejść dwojako Należy przeszukać możliwości w zakresie zaznaczania porcji danych w mechanizmach metod dostępu poprzez ODBC (sprawdzone - te mechnizmy działają, patrz przykład w tabelce poniżej)/ JDBC (lub ich odpowiedniki w innych językach np. ADODB w PHP) lub też podejść na niski poziom i wykorzystać specyfikę polecenia SQL SELECT dla danej bazy (korzystać z ROWID, FIRST, procedur wbudowanych) oraz specyfiki aplikacji (specjalne wykorzystanie kluczy głównych). Tak czy inaczej jest to trudny problem dla developera i raczej lepiej zdać się na jakieś gotowe narzędzia, za które czasami trzeba trochę zapłacić. A warto, gdyż możemy od razu skupić się na merytoryce zagadnienia szczególnie gdy klient chce od siatki sortowania, przesuwania (w lewo/prawo) i sortowania kolumn. Czasami mamy szczęście i w danym języku czy środowisku programowania mamy wbudowane takie narzędzia (.NET ma DataGrid, PHP ma tzw. pager'a - notabene kiepsko u niego z wydajnością, JDeveloper/Netbeans oferuje siatki danych całkiem dobrej jakości).
  4. Alternatywne podejścia: Inna sprawa to filozoficzna, czy możemy użytkownikowi ukryć dane przez pokazanie mu tylko ich części. Czasami nieświadomy użytkownik szuka jakiś danych na ekranie i stweirdza, że ich tam nie ma (a tym czasem są one na następnych stronach). Przy takim potraktowniu problemu można zrobić tak: użytkownik niech sam określi zapytanie i wybierze jakie dane chce oglądać (nalezy mu udostępnić filtr selekcji bazujący na jego wiedzy o tym co chce zobaczyć + Limit ilości wybranych wierszy w zapytaniu). Nie czarujmy się zbyt dużo danych i tak nie przeanalizuje.
    Dane mają być porcjowane nie na serwerze ale u klienta. W tym przypadku klient pobiera dane z serwera i wkłada do pojemnika lokalnego zwalniając zasoby połączeniowe z bazą (oddając do puli połączenie). Dzięki temu wszystkie operacja odbywają się lokalnie (na sprzęcie skądinąd coraz bardziej wyrafinowanym). Tak myśli MS - tzw. offline dataset. Nawiasem mówiąc VFP w wersji miał pojęcie tzw. offline table. Dane są przetwarzane lokalnie. Najważniejsze jest to co będzie potem - synchronizacja z danymi na serwerze. Wybrano metodę optymistyczna tj. wolno wszystko edytować i zmieniać a dane są zapisywane do bazy centralnej zakładając, że nie ma konfliktów. Ważną sprawą jest wybór pojemnika klient, może to być nawet przeglądarka internetowa lub coś bardziej skomplikowanego.
  5. Zasoby serwerowe:
    http://www.codeproject.com/useritems/DBGrid.asp - DataGrid for JSP
    http://jakarta.apache.org/taglibs/sandbox/doc/datagrid-doc/index.html#dataGrid - Jakarta: Data Grid tag library
    http://www.nitobi.com/products/grid/demos/ - Nitobi Grid
    http://www.scripts.com/java-scripts/database-tools/ - Lista projektów, zazwyczaj są one płatne
    http://forum.java.sun.com/thread.jspa?threadID=781290&messageID=4443858 - Forum na temt stronicowania
    http://www.netbeans.org/products/visualweb/ - Visual Web w NetBeans (pakiet NetBeans Visual Web Pack) wymaga samego NetBeans'a
    http://www.dotnetindex.com/articles/18_Paging_Records_in_JSP.asp - Stronicowanie ale dla MySQL
    http://www.aspgrid.com/ - naprawde dobra chociaz wykonana w technologii ASP. (jest jeszcze dbgrid)
  6. eb grid - enterprise business application - kontrola ebgrid

Brak komentarzy: