wtorek, lipca 24, 2007

Dokumentacja podpisu
CAPICOM ma nową wersję z maja - przejrzyj jego dokumentację (poprawki, nowe możliwości)
Może należy zwrócić się do ASP:
  • http://classicasp.aspfaq.com/forms/how-do-i-cause/prevent-enter-being-used-to-submit-a-form.html
  • http://classicasp.aspfaq.com/forms/how-do-i-upload-files-from-the-client-to-the-server.html
  • http://classicasp.aspfaq.com/components/should-i-use-createobject-or-server-createobject.html
  • http://www.aspencrypt.com/
  • http://www.codeproject.com/dotnet/CapicomUTF8.asp - można wymieniać sobie podpisane dokumenty między Java i .NET. Tej ścieżki jeszcze nie przetestowałem - wysyłanie podpisanego w .NET dokumentu do serwera bazującego na Apache z J2EE lub PHP (z biblioteką ssl). Ale artykuł pokazuje, że mogą być kłopoty (na szczęście daje ich rozwiązanie). W portalu wss.pl są ciekawe artykuły m.in. o podpisie dokumetów przy pomocy już bibliotek .NET, ale jak się ma z wymienialnością z np. Javą (openssl). Ten sam autor ma fundamentalny wkład w wyjaśnienie współpracy (nareszcie mam dobre słowona INEROPERABILITY - koperacje też dobre, ale kojarzy się z koperatywem) między światem kody zarządzalnego (managed) w .NET a kodem COM (z Win32) -http://www.codeproject.com/dotnet/cominterop.asp
  • Należy jeszcze raz przetestować przekazywanie plików z podpisem lub samych certyfikatów z MS do Unixa i ich tam obróbka przy pomocy np. biblioteki openssl. Do tej pory stwierdziłem, że udało mi się przenieść i rozpakować pd Unixem certyfikat pobrany z magazynu MS. Należy sprawdzić czy można takie coś zrobić z dokumentem.
  • http://www.codeproject.com/csharp/cryptography.asp?df=100&forumid=9241&exp=0&select=686555
  • http://blogs.msdn.com/johanl/pages/272768.aspx
  • http://www.feed-squirrel.com/index.cfm?evt=viewItem&ID=36269
  • http://developers.chrisranjana.com/javascripts/disabling-form-double-submits.html
  • http://articles.techrepublic.com.com/5100-22-1044655.html#Listing%20A
  • http://articles.techrepublic.com.com/5100-22-5034998.html
  • http://www.mail-archive.com/xul-talk@lists.sourceforge.net/msg00524.html
  • http://perfectionorvanity.com/2006/03/08/sposoby-odnajdywania-elementow-w-dom/
  • http://www.javascriptkit.com/javatutors/dynamiccontent5.shtml
  • http://groups.google.pl/group/comp.lang.javascript/browse_thread/thread/226e8a3839892fdb/45e224bdf8a83cf4?lnk=st&q=js+onkeypress+down+arrow&rnum=7&hl=pl#45e224bdf8a83cf4

Przykłady:
  • podsigillum.prg - podpisuje dowolny ciąg znaków. Podpis jest wykonany przy pomocy biblioteki Sigillum, sprawdzenie przy pomocy standardowej biblioteki CAPICOM. Uwaga, należy dbać o aktualną wersję tego komponentu, szczególnie w przypadku MS Windows Vista
    • LPARAMETERS tresc
      SET SAFETY off
      x = CREATEOBJECT("sigCapix.Crypto")
      SET PROCEDURE TO mcapi
      certyfikat = x.SelectCertificateFromSystemStore(0x10000, 'My') && Wybór certyfikatu
      podpisanaTresc = x.SignDetachedWithInfo(tresc, certyfikat) && Podpis zewnętrzny
      STRTOFILE(tresc,"plik.we")
      ?LEN(podpisanaTresc)
      STRTOFILE(podpisanaTresc,"mdane.txt")
      ?cverify("mdane.txt","plik.we",1) && Weryfikacja przy pomocy MS Windows CAPI
      SET SAFETY on
  • sprawdzpodpiszamow - sprawdza podpis pod dokumentem. Dokument i podpis jest przechowywany w polach (typu blob) w tablicy. W zależności od rodzaju podpisu mamy dwa przypadki
    • podpis wewnętrzny - przechowujemy w polu 'tresc' dokument orginalny, w polu 'podpis' ten sam dokument z hashem
    • podpis zwenetrzny - podobnie, ale w polu 'podpis' jest przchowywany tylko skrót (hash)
    • PARAMETERS klucz
      IF PCOUNT()!=1
      MESSAGEBOX("Brak parametru - klucz do dokumentu")
      RETURN
      ENDIF
      *klucz = "2007002883"
      CLEAR
      ?"Zamowienie = ",klucz
      ?weryf("00",klucz,"tresc.htm") && poczatek, tak wyglada dokument z tresci uformowanej przez Wolniwicza
      wyjscie = UpobDok(klucz,"eb_zam_dokz","zamid","podpis","podpis.txt") && trzeci
      IF AT("-2", wyjscie)=1
      ??", brak dokumentu..."
      RETURN
      ENDIF
      dlug = VAL(STREXTRACT(wyjscie,"dlug=","["))
      SET safety off
      STRTOFILE(CHRTRAN(FILETOSTR("podpis.txt"),' ','+'), "podpisOk.txt") && czwarty
      SET SAFETY on
      IF dlug > 10001
      ??", sprawdzam podpis wbudowany..."
      ?cverify_ext("podpisOk.txt","tresc.htm",0) && piaty
      ELSE
      ??", sprawdzam podpis zewnętrzny..."
      ?cverify_ext("podpisOk.txt","tresc.htm",1) && piaty
      ENDIF
  • Sprwadzenie wybranego certyfikatu z repozytorium MS Windows
  • #DEFINE CAPICOM_CHECK_NONE 0
    #DEFINE CAPICOM_CHECK_TRUSTED_ROOT 1
    #DEFINE CAPICOM_CHECK_TIME_VALIDITY 2
    #DEFINE CAPICOM_CHECK_SIGNATURE_VALIDITY 4
    #DEFINE CAPICOM_CHECK_ONLINE_REVOCATION_STATUS 8
    #DEFINE CAPICOM_CHECK_OFFLINE_REVOCATION_STATUS 16
    #DEFINE CAPICOM_CHECK_COMPLETE_CHAIN 32 && Łańcuch jest kompletny
    #DEFINE CAPICOM_CHECK_NAME_CONSTRAINTS 64
    #DEFINE CAPICOM_CHECK_BASIC_CONSTRAINTS 128
    #DEFINE CAPICOM_CHECK_NESTED_VALIDITY_PERIOD 256
    #DEFINE CAPICOM_CHECK_ONLINE_ALL 495 && NIe chodzi
    #DEFINE CAPICOM_CHECK_OFFLINE_ALL 503
    *
    clear
    Signer = CreateObject("CAPICOM.Signer")
    st = CreateObject("CAPICOM.Store")
    st.Open(2,"My")
    certyfikaty = st.Certificates
    IF certyfikaty.Count>0
    certyfikaty= certyfikaty.Select("Podpis cyfrowy dokumentu", "Proszę wybrać certyfikat do podpisania nim dokumentu ")
    ELSE
    MESSAGEBOX("Brak zainstalowanych kluczy i certyfikatów w systemie operacyjnym",16,"Podpis zamówienia")
    RETURN "-2"
    ENDIF
    cert = certyfikaty.item(1)
    *
    daneCertyfikatu = "Nazwisko = "+cert.GetInfo(6)+CHR(13)+"Dostępny = " + TRANSFORM(cert.PrivateKey.IsAccessible)+ CHR(13)
    daneCertyfikatu = daneCertyfikatu + "Czy można go użyć do badania niezaprzeczalności =" + TRANSFORM(cert.KeyUsage.IsNonRepudiationEnabled )+ CHR(13)
    daneCertyfikatu = daneCertyfikatu + "Data ważności =" + TRANSFORM(cert.ValidToDate)+ CHR(13)
    daneCertyfikatu = daneCertyfikatu + "Czy można sprawdzić listę CRL (zawiera URL) = " + TRANSFORM(cert.KeyUsage.IsCRLSignEnabled)+CHR(13)
    cert.IsValid.CheckFlag = CAPICOM_CHECK_TRUSTED_ROOT + CAPICOM_CHECK_TIME_VALIDITY + CAPICOM_CHECK_SIGNATURE_VALIDITY + ;
    CAPICOM_CHECK_COMPLETE_CHAIN + CAPICOM_CHECK_NAME_CONSTRAINTS + ;
    CAPICOM_CHECK_BASIC_CONSTRAINTS + CAPICOM_CHECK_NESTED_VALIDITY_PERIOD
    * Nowość - obiekt CertificateStatus
    *susp
    IF cert.IsValid.Result
    ?"Walidacja OK"

    ELSE
    ?"Wystąpił jakiś błąd. "
    ENDIF
    daneCertyfikatu = daneCertyfikatu + "Czy certyfikat jest ważny = " + ;
    TRANSFORM(cert.isValid.Result) + CHR(13)
    ?"Kod sprawdzenia łańcucha :"
    * Przed CHAIN musimy ustawić CheckFlag
    Chain = CreateObject("CAPICOM.Chain") && Waznosc calego lancucha
    waznosc = Chain.Build(cert)
    *susp
    kod = Chain.Status()
    DO CASE
    CASE kod=65
    komunikat = "Kod 65(64+1) Certyfikat nieważny (wygasł), status odwołania nieznany (tj. nie jest na liście)"
    CASE kod=64
    komunikat = "Kod 64 Status odwołania nieznany (tj. nie jest na liście)"
    CASE kod=16777280
    komunikat = "Kod 16777280(16777216+64) Status odwołania nieznany (tj. nie jest na liście). Nie ma lokalnej listy CRL w repozytorium"
    OTHERWISE
    komunikat = "Kod :"+ TRANSFORM(kod)
    ENDCASE
    ?komunikat
    ?"Informacja dodatkowa =" + Chain.ExtendedErrorInfo()
    ?"Waznosc calego lancucha =" + TRANSFORM(waznosc)
    messagebox(daneCertyfikatu)
    ?"Lista pośrednich certyfikatów:"
    iloscElem = Chain.Certificates.Count()
    ?"Ilość pośrednich certyfikatów :",iloscElem
    FOR i=1 TO iloscElem
    ?Chain.Certificates.Item(i).SubjectNAme
    ENDFOR
  • ss
  • ss

poniedziałek, lipca 23, 2007

Biblioteka AJAX w PHP - http://scriptex.tan-com.com/jPOP/index.php oparta o bibliotekę SimpleJS (http://simplejs.bleebot.com/)
Portal ZDNET w Anglii - http://www.zdnet.co.uk/

Bezpieczeństwo aplikacji w PHP (na podstawie - http://www.peachpit.com/articles/article.asp?p=711187&seqNum=4)
  1. Wprowadzone dane z formularza oczyść ze szkodliwych kodów (stosuj strip_tags) przed stosowaniem w apliakcji.
  2. Używaj odpowiednika mysqli_real_escape_data()czyszczenia danych z formularza przed zapisem do bazy.
  3. Nie używaj ustawień globlnych, ktoś może je zmienić i sam nie bedziesz wiedział kto i kiedy, inicjuj zmienne.
  4. Stosuj niejawne ustawienia w konfiguracji
  5. Przechowuj sesje w bazie
  6. Stosowanie wyrażeń regularnych jest efektywne ale mało wydajne i obciąża procesor
  7. Do sprawdzenia jawnego typów danych otrzymanych z formularza stosuj całą gamę funkcji ctype_.
  8. O ile to możliwe stosuje metodę POST (szczególnie gdy przesyłasz hasła) - nie widać w adresie URL argumentów (wada: n ie można strony zapamietać w zakładkach ulubione).
  9. Stosowanie zachowania stanu między stronami -sesje, ciasteczka, pola ukryte (type='hidden'). Te ostatnie sa bardzo skuteczne i łatwe w obsłudze, ale nie są bezpieczne (ktoś może podglądnąć zawartość strony). Wygoda kosztem bezpieczeństwa.
  10. To samo się tyczy nadmiernego polegania na zapamietaniu stanu poprzez przekazyanie danych między stronami w URL np. ?type=3, bardzo łatwo moża wywyłać stronę z innymi wartościami (już poza logiką aplikacji).
  11. Stosowanie CAPTCHA (completely automated public Turing test to tell computers and humans apart - pakiet PEAR Text_Captcha) jako obrona przed bot'ami.
  12. Stosuj filtry PECL do kontroli typów i wartości danych. Są dwa typy tych filtrów:
    1. Dane z formularza - źródłem może być: INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV, INPUT_SESSION, and INPUT_REQUEST:
      $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT, array('options'=>array('min_range'=>1)));
      if ($id) { ...
    2. Dane programowe - do kontroli danych w zmienych aplikacji:
      $id = filter_var(
    3. Sprawdzenie czy jest zmienna :
      if (filter_has_var(INPUT_POST, 'submitted')) {
    4. Tak możemy sprawdzić, czy formularz był wysłany.
  13. Filtry są wbudowane w PHP 5.2, dla wersji niższych trzeba doinstalować bibliotekę.
  14. Do logowania zastosować pakiet PECL Auth - zapewnia on standardową autentykację (stwierdzenie kto się chce dostać do portalu), lub można wykorzystać platformę rozwojową ZEND Framework.

sobota, lipca 21, 2007

Otwórz okno - proszę
Coraz więcej autorytetów sieciowych opowiada się przeciw korzystania z "open window", no chyba, że jest to okno "modalne" w IE. Jednym z argumentów jest to, że w nowych przeglądarkach nowe okna otwierają się w kolejnej zakładce (Tab) co wprowadza użytkownika w mętlik. Rozwiązanie jest jedno - stosowanie lightbox np.
  1. http://jquery.com/demo/thickbox/
  2. http://particletree.com/features/lightbox-gone-wild/
  3. http://www.huddletogether.com/projects/lightbox/
  4. http://www.dynamicdrive.com/dynamicindex8/dhtmlwindow.htm
  5. http://www.scottandrew.com/examples/domwindow-pre6.html
Sterowanie oknami -
  1. http://www.javascriptkit.com/javatutors/window1.shtml
  2. http://www.infimum.dk/HTML/JSwindows.html
  3. http://www.web-source.net/javascript_open_windows.htm


piątek, lipca 20, 2007

EOL PHP

  1. End of line dla PHP 4. Jest już od ponad 7 lat, a jego następca jest od 3 lat. Koniec wsparcia dla PHP 4 do końca roku (dla rozwoju), do 08.08.2008 dla poprawek bezpieczeństwa i łatek błędów.
  2. Z kolei IBM ogłosił wsparcie PHP (5.1.2) dla swojej platformy Z/OS.
  3. Odszedł jeden z czołowych deweloperów PHP w Zend (odpowiedzialny za bezpieczeństwo kodu i rozwiązań) - Jani Taskinen (na tle sporów osobistych).
  4. Paltforma Zen framework wersja 1.0 (2 lipca) gotowa. Ma wsparcie dla struktur GData oraz kładzie duży nacisk na JSON (jeszcze w wersji 1.0 nie go, ale będzie w wersji w wersji 1.1 (wg. ceo Zend - Gutmans'a). Aplikacja flagowa QEDwiki - http://www.internetnews.com/dev-news/article.php/3647821 -użytkowana przez portal IBM.
  5. Definicja QWDWiki - How does it work?

    QEDWiki is a lightweight mash-up maker written in PHP 5 and hosted on a LAMP, WAMP, or MAMP stack. A mash-up assembler will use QEDWiki to create a personalized, ad hoc Web application or mash-up by assembling a collection of widgets on a page, wiring them together to define the behavior of the mash-up application, and then possibly sharing the mash-up with others. Mash-up enablers provide QEDWiki with a collection of widgets that provide application domain- or information-specific functionality. These widgets are represented within QEDWiki as PHP scripts.

    When a user renders a page within a QEDWiki workspace, the QEDWiki framework processes the widgets on the server side and then generates a DHTML page that is sent to the browser for client-side processing. The framework includes a rich AJAX-enabled MVC (Model-View-Controller) architecture so that each wiki page is a rich, interactive application for end users.

  6. Głowny portal PHP - www.php.otg

czwartek, lipca 19, 2007

Temat rzeka - walidacja danych
  1. Mathew Krusse - http://www.mattkruse.com/javascript/validations/ - biblioteka ciekawych funkcji walidacji danych - tak wygląda na to, że jego funkcje potrafią wykryć pewne wartosci w polach, co dalej z tym zrobić to już leży w gestii autora. Najwieksza bolączka, źle działa onblur w FF.
  2. Zalecane praktyki - http://www.javascripttoolbox.com/bestpractices/
  3. Inna biblioteka - http://www.javascript-coder.com/html-form/javascript-form-validation.phtml - nowe podejście do kontroli:
    1. po formularzu wprowadź kod JS (zawarty w <script>...</script>
    2. uruchom walidatora - var frmvalidator = new Validator("myform");
    3. dodaj pola do walidacj - frmvalidator.addValidation("FirstName","alpha");
    4. prawda, że eleganckie!
  4. Nowa biblioteka AJAX-a - http://www.ajaxtoolbox.com/request/examples.php
  5. Inspiracje:
    1. http://www.xul.fr/en-xml-ajax.html
    2. http://blogs.techrepublic.com.com/tech-news/?p=835&tag=nl.e019
    3. http://www.codeproject.com/vb/interop/csCom.asp
    4. http://jsc.sourceforge.net/
    5. http://foxcentral.net/microsoft/WhatsNewInVFP9_Chapter10.htm
    6. http://www.scbr.com/docs/products/dhtmlxGrid/
    7. Yahoo YUI


wtorek, lipca 17, 2007

Poniedziałek
  1. Sztuka prezentacji - http://www.cio.com.au/index.php/id;1638148607;pp;
Ciekawe linki:
  1. Generator gif przy ładowniu ajax - http://www.webscriptlab.com/
  2. Ciekawa! Encyklopedia aplikacji Web 2.0 - http://www.go2web20.net/
  3. Platne oprogramowanie AJA`aplikacje - http://www.zapatec.com/website/main/products/suite/download.jsp
  4. http://1warez.ru/news.php
  5. Tworzenie tapet dla komorek - http://www.mobopic.com
  6. Bramka - http://www.text.plusgsm.pl/sms/

niedziela, lipca 15, 2007

AJAX in PHP

  1. Zasoby
    1. - http://ajaxmatters.com/default.aspx
    2. http://www.php-learn-it.com/tutorials/mod_rewrite_dynamic_urls_to_static_urls.html
    3. http://swik.net/Ajax/How+to+use+XMLHttpRequest
    4. http://www-128.ibm.com/developerworks/web/library/wa-ajaxintro4/
    5. Wzorce - http://ajaxpatterns.org/
  2. XAJAX - http://www.xajaxproject.org/
  3. wiki - http://wiki.xajaxproject.org/0.5_Documentation
  4. tutorial - http://wiki.xajaxproject.org/Tutorials:Learn_xajax_in_10_Minutes
  5. Propozycja grid'a - http://ajaxian.com/archives/xajax-php-live-datagrid
  6. Ajax dla mass - http://www.i-marco.nl/weblog/archive/2005/11/12/easy_ajax_for_the_masses_with_
  7. Projekty ajaxowe - http://www.ajaxprojects.com/ajax/projects/PHP_Frameworks/XAJAX_Library.php
  8. z IBM - http://www-128.ibm.com/developerworks/web/library/wa-ajaxintro4/
  9. Frameworki Ajaxowe - http://ajaxpatterns.org/PHP_Ajax_Frameworks
  10. AJAX w swiki - http://swik.net/Ajax/How+to+use+XMLHttpRequest
  11. Inne implementacje AJAX w PHP:
    1. JPSPAN
    2. SAJAX
    3. NAJAX
    4. jPOP
    5. XOAD
    6. Zestaw framework-ów: http://ajaxpatterns.org/PHP_Ajax_Frameworks
    7. HTML_AJAX:
      1. http://wiki.bluga.net/HTML_AJAX/start?
      2. http://bluga.net/projects/HTML_AJAX/examples/ -przykłady
    8. Zend Framework
  12. http://blog.joshuaeichorn.com/archives/2005/08/17/ajax-hello-world-with-html_ajax/ - wskazówka na SAJAX i JPSPAN
  13. Jest możliwość uruchamiania kodu PHP wraz z J2EE (projekt RESIN ) - http://quercus.caucho.com/.
  14. Ważna jest też problem kompresji plików wspierających rozwiązania szkieletowe (frameworki) w JS. Są to wielkości ok. 100KB. Można je kompresować w źródłach ale to utrudnia poprawianie błędów. Istnieje inna opcja - wykorzystanie technologii Content Encoding obecnej w każdej nowoczesnej przegladarce. Polega to na tym, że przegladarka rozpoznaje rozszerzenia .gz i dekoduje je przed kompilacją wstepną w silniku interpretera JS. Wymaga to jednak skonfigurowania serwera Apache (tu jest jak to zrobić ). Należy skonfigurować dwa moduły: mod_deflate (tylko kompresja) lub mod_gzip (kompresja z cacheowaniem skompresowanych plików). Plki .js należy oczywiście ręcznie skompresować we własnym zakresie.
  15. Projekt QUERCUS - 100% implementacja PHP 5 w Javie. Jest łączone podejście to rozwoju aplikacji internetwowych - http://quercus.caucho.com/ - Pozwala pisać kod w php i ma API do korzystania z funkcji i frameworków J2EE. Przykład JSON - http://quercus.caucho.com/quercus-3.1/examples/quercus-json/index.xtp
  16. Bardzo ważne zasoby (m.in. Grid) - http://www.codango.com/php/dir/components/ajax/?gclid=CI_O_ubVuo0CFQpXZwodsQlxKA
  17. Dywagacje na temat wykorzystania AJAX w PHP - http://cesarodas.com/2007/07/php-implementing-a-heavy-use-of-ajax.html

piątek, lipca 13, 2007

Piątek ... początek
  • Wzorce korzystania z JDBC - mimo pojawienia się wielu technologii przeźroczystego dostępu do baz danych (tzw. data persistance: jak entity beans, JDO, Hibernate) nadal ze względów praktycznych króluje JDBC. Wskazówki:
    • korzystanie z puli połączeń (ustanowienie połączenia z bazą kosztuje od 30 do 1000ms). Prawie wszystkie kontenery servletowe i EJB korzystają z tej techniki. Poza ramami J2EE można skorzystać z projktów open-source np. Commons-DBCP
    • zamykać należy połączenie - close() zwykle zwraca połączenie do puli a nie odłącza sie od bazy, powoduje to "wyciek" pamięci. Ułatwić to może projekt CementJ
    • celowość stosowania procedur wbudowanych (przenaszalność kontra wydajność) tu należy stosować kryterium "ile będzie mniej transmisji sieciowych poprzez zastosowanie sp". Przetwarzanie logiki biznesowej (obciążającej CPU) w sp nie jest wskazane.
    • podejście do generowanych automatyczne przez motor bazy kluczy - znajomość klucza nowego (po Insert) rekordu jest ważna np. do wpisania go do rekordów podrzędnych. Specyfikacja JDBC 3.0 wymaga od sterownika żeby zwrócił ten klucz - getGeneratedKeys().
    • oddzielenie kodu JDBC od logiki biznesowej - należy kod JDBC zebrać w oddzielną klasę po to aby odseparować ten kod na wypadek konieczności dokonania zmiany oraz ułatwić współdzielenie kodu .
    • korzystanie z "query fetch size" przy przeglądaniu dużych wyników zapytań. Zwykle ustala się go (pole fetchSize) na poziomie 100. Ma znaczenie przy wolnych połączeniach sieciowych (pobiera rzadziej dane)
    • stosuj przetwarzanie wsadowe - grupowanie instrukcji SQL do wykonania jako jeden ciąg
    • nowości w JDBC 3.0 - wsparcie dla RowSet (dla wsparcia JavaBeans): może być connected lub disconnected oraz możliwość serializacji do XML.
  • Lista zaleceń wydajnościowych JDBC - http://www.javaperformancetuning.com/tips/jdbc.shtml
  • Generalnie należy przeglądać serwis - http://jdj.sys-con.com/read/46653.htm z którego pochodzą w/w informacje
  • Świetne tutoriale - http://www.j2eebrain.com/
  • Jeszcze raz o Grasshopper ma się świetnie - http://linux.sys-con.com/read/393685.htm - projekt jest na poziomie Developer Edition bezpłatny i umożliwia pisanie w .NET, przenosić do Javy i uruchamiać na Linuksie.
  • Ważne - ZEND Framework 1.0.0 już jest - (można się włączyć do prac Przemka) - http://linux.sys-con.com/read/397441.htm - ma wsparcie dla ORM
  • Opis platformy ZEND - http://framework.zend.com/whyzf/components/
    • Wstęp do JDBC:opis (dokumentacja JDBC) - http://java.sun.com/products/jdbc/download.html
    • samouczek - http://java.sun.com/developer/onlineTraining/Database/JDBC20Intro/JDBC20.html
  • Uwagi o JDBC - dla wersji 2.x wymagany jest pakiet JDBC core API (zawiera się w Java 2 SDK, Standard Edition - java.sql package) gdy programujemy po stronie klienta, strona serwerowa używa innej biblioteki zawartej w Java 2 SDK, Enterprise Edition (java.sqlx), która zapewnia wiekszą funkcjonalność (pulę, RowSet). Można też ściągnąć indywidualnie w/w bibliotekę X.

czwartek, lipca 12, 2007

Czwartek ciekawy jak zwykle:
  1. Wielowatkowość w VFP - http://www.codeplex.com/mtmyvfp
  2. Przegląd najlepszych stron wykonanych w Web 2.0:
    1. http://www.realsoftwaredevelopment.com/2006/10/best_of_the_bes.html
    2. http://virtualkarma.blogspot.com/2006/01/complete-list-of-web-20-applications.html
  3. Co to właściwie jest JQuery - http://jquery.com/
  4. Tutorial - http://www.tizag.com/javascriptT/index.php
  5. Visual GUI świetne - http://www.visualwebgui.com/
  6. http://www.codeguru.com/vb/gen/vb_general/idelanguage/article.php/c9621/
  7. CODE GURU po ang. Autentykacje na czym to polega - proces walidacji użytkownika na bazie jego przedstawionych akredytacji (emial, hasło, konto) i porównaniu ich ze wzorcem przechowywanym u siebie (np w bazie lub pliku XML, dla małych aplikacji może to być Web.Config). Najpolularniejszyą formą jest FORM AUTHENTICATION (autentykacja formularza):
    1. http://www.codeguru.com/csharp/.net/net_security/authentication/article.php/c7377/ - jest tam sourcecode.zip
    2. http://www.codeguru.com/csharp/.net/net_security/authentication/article.php/c4701/
    3. http://www.codeguru.com/csharp/.net/net_security/authentication/article.php/c8585/
    4. http://www.codeguru.com/csharp/.net/net_security/encryption/article.php/c4703/
  8. Tworzenie WS w .NET JS - http://www.codeguru.com/csharp/.net/jscript/essamahmedonjscriptnet/article.php/c4271/
  9. Podłącz się do Oracle - http://www.codeguru.com/csharp/csharp/cs_network/database/article.php/c13627/
  10. EasyEclipse - http://sourceforge.net/forum/forum.php?forum_id=644682
  11. Linki do JAva z WROX:
    1. JSP - http://p2p.wrox.com/forum.asp?FORUM_ID=86
    2. J2EE - http://p2p.wrox.com/forum.asp?FORUM_ID=88
    3. Generalnie to forum ma listę tematów do wybrania
    4. Super linki do przykładów z Wrox - http://www.wrox.com/WileyCDA/Section/id-105127.html
  12. Ciekawe dla developerów - http://www.packtpub.com/
  13. Implementacja stronicowania:
    http://jsptags.com/tags/navigation/pager/index.jsp
    http://www.javaworld.com/javaworld/jw-07-2004/jw-0726-pagination.html
    http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=58&t=007230
    http://servlets.com/archive/servlet/ReadMsg?msgId=274095&listName=struts-user
    http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=58&t=007715
    http://displaytag.sourceforge.net/10/tagreference-displaytag-12.html
    http://www.junlu.com/msg/153352.html
    http://jsptags.com/tags/navigation/pager/pager-taglib-2.0.html
  14. Dokumentacja Apache - http://tomcat.apache.org/tomcat-5.0-doc/appdev/deployment.html
  15. Przykłady JAVA - http://www.devarticles.com/c/a/Java/Socket-Programming-in-Java/2/
  16. Jak zacząć z JSTL - http://www.exampledepot.com/egs/javax.servlet.jsp.jstl.core/usejstl.html


środa, lipca 11, 2007

Linki w srodę:
  1. https://www.spidynamics.com/products/webinspect/WIdirect.html - bezpieczeństwo
  2. Wiele odwołań do implementacji AJAXa - http://web2magazine.blogspot.com
  3. Tam też są prezentacje - https://www.spidynamics.com/spilabs/education/presentations.html
  4. Patrz też SPI Labs - https://www.spidynamics.com/spilabs/education/articles/index.html
  5. Europa w piątek prezentuje nowe podejście do Eclipse (synchronizacja projektów)- http://news.zdnet.com/2100-3513_22-6193596.html:
    1. (17 mln linii kodu o 7 mln więcej niż Callisto, zeszłoroczna edycja)
    2. BRIT i BI - wejscie z WS a wyjście do formatu MS Office
    3. wprowadznie DLR do IDE (Ruby, TCL w przyszłości Python i Perl)
    4. narzędzie do "rysowania" stron webowych
  6. Super strona rozbiegowa na temat programowania - http://updates.zdnet.com/tags/Programming.html (szukaj MSDN Webcast o events i delegatach)
  7. Programowanie jest sztuka podobnie jak dziennikarstwo - http://blogs.zdnet.com/open-source/?p=1192
  8. Scriptus Free - http://downloads.zdnet.com/download.aspx?docid=303501
  9. Uruchom zdalnie narzędzia rationala na serwerze w IBM
  10. Wyszukiwarka w J2EE przy pomocy API Google - http://www.regdeveloper.co.uk/2007/06/24/google_search_ajax/
  11. BBC - http://news.bbc.co.uk/

wtorek, lipca 10, 2007

Niezwykle ciekawe linki na tematy deweloperskie:
  • IBM:
    • AJAX + J2EE (servlety) - http://www.ibm.com/developerworks/library/j-ajax1/
    • Rozbiegowka do artykułów nt. AJAX - http://www.ibm.com/developerworks/views/web/libraryview.jsp?search_by=Mastering+Ajax
    • JSNOML - http://jsonml.org/
    • Poznaj JsonML w IBM - http://www.ibm.com/developerworks/xml/library/x-jsonml/?S_TACT=105AGY01&S_CMP=PODCAST#resources
  • Microsoft (CodeProject):
    • Using JS to select GridView rows - http://www.codeproject.com/aspnet/JavaRowSelect.asp
    • Code .NET 2.0; Build Java; Run Linux - http://www.codeproject.com/showcase/mainsoft.asp
    • Code .NET 2.0; Build Java; Run Linux - http://www.codeproject.com/useritems/Net_COM__Interop.asp
    • Dynamic Table using html and javascript - http://www.codeproject.com/useritems/html.asp
    • ASP.NET Web Controls for the Yahoo! User Interface Library - http://www.codeproject.com/aspnet/YahooInterfaceLibWebCtrls.asp
    • Interop Forms Toolkit 2.0 Tutorial - http://www.codeproject.com/useritems/VB6InteropToolkit2.asp
    • Using .NET Controls in VB6 - http://www.codeproject.com/vb/interop/UsingDotNETControlsInVB6.asp
    • http://www.codeproject.com/vb/interop/csCom.asp - http://www.codeproject.com/vb/interop/csCom.asp

poniedziałek, lipca 09, 2007

ASTORIA - nowy projekt MS
Jet to projekt zamknięty (komercyjny) mający na celu zbadanie wykorzystania najnowszych technik i koncepcji webowych na platformie Microsoft Data platform. Polega na eksponowaniu swoim klientom danych sererowych jako sieciowego serwisu danych (WS). Korzysta się z najprostszych, zna
nych i nie wymagających przechodzenia przez sito standardów protokolów HTTP (GET, POST, PUT, DELETE). Wymagane jest Visual Studio beta zwane "ORCA".

Wojna pomiędzy REST i SOAP
Prawda jest taka, że SOAP bez wsparcie środowiska RAD, robiony na "piechotę" jest koszmarny. Ale nawet ukrycie jego złożności przygotowania nie ukrywa faktu, że skład się z wielu warstw obejmujących wszystkie aspekty komunikacji od bezpieczeństwa aż po tranzakcyjnośc i zarządzanie.

To z lewej jest schemat REST (na podstawie dysertacji Fieldinnga). Przydatność REST potwredza Amazon.com oraz wiele publikacji na O'reilly.
Strona propagatora RESR: http://hinchcliffe.org/default.aspx




Projekt "Zero" IBM (http://www.linuxworld.com.au/index.php?id=2095861668&eid=-50)
Zero - oznacza 0 złożoności i narzutu. Środowisko do budowy aplikacji internetowych bazujących na popularnych technologiach Web 2.0:
  1. standard wywołania - REST lub ATOM
  2. standard wymiany danych - JSON lub XML
  3. standard interfejsu - AJAX
Zawiera runtime dla Groove i PHP. Model tworzenia tego projektu - "community-driven commercial development process" projekt komercyjny przy współudziale społeczności otwartej. Nie ma mowy o licencji otwartej. Hey, nic nowego, przecież podobne projekty ma SUN (JCP) i MS (CPT)! IBM broni się przed oskarżeniem o komercyjność tym, że używa przecież wiele technologii open-source które znacząco inwestuje i finansuje IBM. Takie dwulicowe podejście do wykorzystania open-source spotkało się z ostrą krytyką analityków i witryny "theserverside".
Strona IBM samego projektu www.projectzero.org.


Nowości w poniedziałek
Wg.: The story of Web 2.0 and Web 2.0 continues p.1
  1. Historia SOA i Web 2.0 - Co widzimy? Duże firmy softwarowe kierują się ku SOA w wydaniu lekkim, przez co zbliżają się coraz bardziej do technologii Web 2.0. Widzimy konwergencję tych dwóch fundamentalnych pojęć. SOA polega na dekompozycji aplikacji na serwisy, które mogą się wzajemnie wywoływać oraz co najważniejsze z punktu widzenia Web 2.- mogą się łączyć (w sposób zwany mashup) tworząc nowe usługi. Dodatkowo, nieformalne podejście w Web 2.0 zostało zamapowane do formalnego podejścia SOA. Innymi słowy można powiedzieć, że są to dwa podejścia: dekompozycja (w stylu SOA) i kompozycja (w stylu Web 2.0).
  2. Podobieństwa między nimi reprezentuje diagram Vienna
  3. Wspólne jest przeświadczenie, że oprogramowanie jest częścią większego ekosystemu.
  4. Główną koncepcją Web 2.0 są dane, natomiast w SOA to serwis (usługa która przy okazji przenosi również dane).
  5. WOA, rozwinięcie Web 2.0 - oznacza web oriented architecture (oparcie się na REST i ATOM).
  6. SOA z kolei opiera się na SOAP (nie jest zbyt popularny w Web 2.0, Google porzucił rozwój API w oparciu o SOA, Amazon daje podwójny interfejs (SOA i REST) inni wybierają tylko REST.
  7. Wygląda na to, że istnieje stan wojny między REST i SOA.
  8. Coraz więcej firm skłania się do przedstawienia danych w formie WOA (każdy rozmawia w HTTP i stosuje XML) a nie SOAP (jest wiele platform i wymagane jest przestzreganie bardzo ścisłe WS-* i ujednoliconej wersji SOAP)
  9. Do pary dane/usługi dochodzi trzeci element (chyba najważniejszy) - człowiek. Tutaj Web 2.0 zezwalający na mashup daje dla niego najwięcej.
  10. Dużo informacji na ten temat tu.
  11. Porównanie między SOA i Web 2.0

niedziela, lipca 08, 2007

Na jutro do zrobienia:

  1. Języki dynamiczne w srodowisku Java - http://www.oreillynet.com/onjava/blog/2007/06/scripting_language_for_the_jav.html
  2. Szpiegowanie klas - reflection- http://www.onjava.com/pub/a/onjava/2007/03/15/reflections-on-java-reflection doskonały przykład.
  3. Blog na temat J2EE - servlet v. 3.0 - http://java.sun.com/javaee/community/blogs/?feed=JSC
  4. Wreszczcie JSF 2 - http://www.oreillynet.com/onjava/blog/2007/05/jsf_20_is_here_1.html
  5. Przeechowywanie stanu i or-mapping bez Hibernate - doskonaly przyklad - http://www.ibm.com/developerworks/java/library/j-db4o4.html?ca=drs-
  6. Kursy JSP/Servlet/Applet/WebStart/SSL
  7. http://www.pluralsight.com/fritz/webcasts.aspx
  8. Google Gear z OnJava: http://www.onlamp.com/lpt/a/7055 i http://www.oreillynet.com/databases/blog/2007/06/post_1.html
  9. Prosy przykład AJAX w protoype- http://24ways.org/2005/easy-ajax-with-prototype
  10. Bradzo ciekawe prezentacje - http://www.webstandards.org/
  11. http://whitepapers.zdnet.co.uk/?r=1 , http://whitepapers.zdnet.co.uk/0,1000000651,260283228p-39000361q,00.htm?r=1 , http://whitepapers.zdnet.co.uk/0,1000000651,260282894p-39000361q,00.htm?r=1
  12. http://simonwillison.net/2006/openid-screencast/ , http://whitepapers.zdnet.co.uk/0,1000000652,260283112p,00.htm?r=1
  13. http://www.sitepoint.com/article/painless-javascript-prototype/4
  14. Super tutorial na temat J2EE autorstwa SUNa - http://java.sun.com/j2ee/1.4/docs/tutorial/doc/
  15. Świetny tutorial nt. Atlasa - http://www.asp.net/learn/videos/default.aspx?tabid=63#ajax
  16. Wspomaganie AJAX w prototype - http://www.sitepoint.com/article/painless-javascript-prototype/4
  17. AJAX i FORM ale troche inaczej
    W artykule (http://www.xul.fr/en-xml-a) przedstawiono inne podejście do wysyłania formularza. Buduje się formularz w tradycyjn sposób (ale bez action=""), wśród pól jest przycisk z onclick który wysyła zawartość innych elementów do funkcji w JS która z kolei wysyła te dane do serwera. Sprytnie podciągnięty AJAX pod tradycyjne przetwarzanie. Proszę pamiętać, że podobnie jak zwolennicy REST, aplikacja webowa polega na wysyłaniu danych do serwera i przyjmowania od niego informacji zwrotnej. Linki:
    1. Dodatek do WTP w Eclipse - http://www.eclipse.org/atf/
    2. Framework - http://www.xul.fr/ajax-frameworks.html
    3. Opis JSON - http://www.xul.fr/ajax-javascript-json.html

Czego MS naprawdę chce ?

MS mówi, że zależy mu na interoperability. Nie jest to altriuzm ale wyrafinowana gra biznesowa w której wszyscy są zwycięzcami. Chodzi tu o cztery zasady:

  1. produkty
  2. społeczność
  3. dostępność
  4. standardy

MS bierze czynny udział w pracy komitetów standaryzacyjnych: IETF, W3C, OASIS, IEEE, ETSI, OMA, ECMA, ISO/IEC, and ITU.

Jeżeli chodzi o sprawę standardów to mowa o standardach otwartych a nie open source, tak uważa również EU (http://www.comptia.org/issues/docs/interopwhitepaper0204.pdf) .

sobota, lipca 07, 2007

Nowe cechy Javy:
Java powinna być bezpieczna z założenia, że działa w "piaskownicy" parametry bezpieczeństwa której można definiować. Model bezpieczeństwa Java składa się z dwóch warstw Core Java 2 Security Architecture i Java Cryptography Architecture. Stanowią one podstawowy poziom bezpieczeństwa nad którym są różne rozszerzenia (extension). Od wersji 1.4 Java ma własne mechanizmy obsługi kryptografii i nie trzeba uciekać się do bibliotek firm trzecich np. Bouncy Castle.
Opis J2SA składa się z:
  1. byte code verifier - sprawdza ponownie poprawność użytych konstrukcji języka (czy klasy mają cechę public, czy klasa final ma podklasę itd)
  2. class loader - ładuje klasy do maszyny wirtualnej i sprawdza poprawność odwołań do klas w ramach języka i do zasobów lokalnych
  3. security manager - klasa stworzona przez twórcę aplikacji zezwala na dostęp do zasobów
  4. access controller - niskopoziomowe sprawdzenie wykonywania się aplikacji (zarządzanie pamięcią, typowanie danych, naruszenie konwersji danych)
Opis JCA - realizuje funkcje kryptograficzne i udostępnia API do nich.
Rozszerzenia:
  1. Java Cryptographic Extension
  2. Java Security Socket Extension
  3. Java Autentication and Authorization Extension Service