środa, sierpnia 29, 2007

Podsumowanie nie jest dostępne. Kliknij tutaj, by wyświetlić tego posta.
Opis oprogramowania i komcepcji Java Card do obsługi smart card - materiały firmy SUN. Ogólnie mówiąc jest to specjalnie skrojona maszyna wirtualna do obsługi appletów, jej aAPI jest skromne ale ma podsystem javacard.security. Jeżeli karty chipowe mają wbudowany w sobie JVM to można się z nią komunikować poprzez Javę. Są dwa sosoby kimunukacji między aplikacją główną (hosting) a appletami Java Card w samej karcie: prymitywne przekazywanie komunikatów lub wywołania zdalne appletów na karcie (JCRMI - Java Card Remote Method Invocation).


poniedziałek, sierpnia 27, 2007

Ciekawe linki
  1. http://www.crossloop.com/howitworks.html - zdalny dostęp do innego komputera przez Internet
  2. http://www.asp.net/downloads/sandbox/blinq/ - BLINQ generator do LINQ
  3. http://www.hanselman.com/blog/CategoryView.aspx?category=Javascript - Ciekawe narzędzia dla programistów
  4. http://instantrails.rubyforge.org/wiki/wiki.pl -Ruby bez instalacji
  5. http://blogs.msdn.com/calvin_hsia/archive/2007/06/19/enable-people-to-run-your-programs-without-installing-anything.aspx - uruchom kod VFP
  6. http://blog.todmeansfox.com/category/personal/ - ciekawy foxowiec
  7. http://rtipton.wordpress.com/2007/08/26/weekly-link-post-4/ - ciekawy .netowiec
  8. http://www.ajaxian.com/ - zasoby ajaxowe + zapisałem się do listy email
  9. http://www.ibm.com/developerworks/aix/library/au-javaphpaix5/index.html?ca=drs- - jak pożenić PHP z WebSphere (Javą)
  10. http://www.sitepoint.com/article/yahoo-mashup-php/2 - ciekawy kod PHP

piątek, sierpnia 24, 2007

Ciekawe linki:
  1. MAKS 2007 - http://news.com.com/2300-11397_3-6204037-1.html?tag=ne.gall.pg
  2. Spring dla Java oferuje także WS - http://www.springframework.org/download
  3. Tutorial - http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step-Part-1.html
  4. Znany bloger VFP - http://www.craigberntson.com/blog/index.asp
  5. http://www.craigberntson.com/ - patrz na b. ciekawy artykuł "http://www.craigberntson.com/Articles/kb019.pdf"
  6. http://www.javaranch.com/journal.jsp
  7. http://www.vfpconversion.com/Article.aspx?quickid=0703112
  8. http://weblogs.foxite.com/bernardbout/archive/2007/06/20/4126.aspx
  9. http://www.code-magazine.com/article.aspx?quickid=0703112&page=5
  10. http://www.craigberntson.com/articles.htm
  11. http://www.rgoarchitects.com/nblog/default.aspx
  12. http://doughennig.blogspot.com/2007_06_01_archive.html - instlacja na Vista pakietu Sedna
  13. http://rickschummer.com/blog/
  14. http://alexfeldstein.blogspot.com/2007/03/10-things-software-devekopment-has.html
  15. http://www.rgoarchitects.com/nblog/default.aspx
  16. http://www.taylor.se/blog/2007/03/22/top-ten-things-ten-years-of-professional-software-development-has-taught-me/
  17. http://panopticoncentral.net/archive/2007/05/01/20383.aspx - analog Calvin Hsia
  18. http://techmagazine.ws/full-web-20-api-list/
  19. http://samples.gotdotnet.com/quickstart/howto/doc/readwrite.aspx
  20. Świetne How-To dla .NET - http://samples.gotdotnet.com/quickstart/howto/
  21. http://tssblog.techtarget.com/index.php/interoperability/mini-guide-rest-representational-state-transfer/?track=NL-461&ad=601137&Offer=TSNtssret821rmg&asrc=EM_NLN_2030482&uid=267959
  22. http://www.jamesbooth.com/ - VFP
  23. http://www.sweetpotatosoftware.com/SPSBlog/monthview.aspx?month=2006-06
  24. http://www.eggheadcafe.com/tutorials/aspnet/c6526574-cd2a-40e3-beac-fe3b10a1e694/design-patterns-for-net.aspx
  25. http://support.microsoft.com/vfp9 - support VFP 9
  26. http://www.markusegger.com/Articles/Index.aspx - Markus ciekawe o interop
  27. http://www.markusegger.com/Articles/Article.aspx?quickid=060044
  28. http://netcave.org/CategoryView,category,VFP.aspx
  29. http://blogs.msdn.com/vbteam/archive/2007/06.aspx
  30. http://www.west-wind.com/WebLog/posts/104449.aspx
  31. http://blogs.gotdotnet.com/bethmassi/archive/2007/05/02/interop-forms-toolkit-2-0-released.aspx
  32. http://samples.gotdotnet.com/quickstart/aspplus/default.aspx?url=/quickstart/aspplus/doc/securityoverview.aspx
Nowy dylemat (wg. Dr.Dobbs)
Biblioteka czy Framework
Najpierw definicje:
  1. Biblioteka - jest zbiorem funkcji, które można wywołać w celu uzyskania nowej funkcjonalności (takie cegiełki do składania, jak się ktoś nimi posłuży tak mu wyjdzie). Inaczej, funkcje biblioteczne trzeba wołać z aplikacji (treści) by uzyskać formę.
  2. Framework - to coś więcej, to rozwiązanie szkieletowe, to gotowa forma, którą trzeba zapełnić treścią. Form może być skończona ilość, ale dzięki temu rozwiązania oparte o framework są do siebie podobne, niejako standardowe. Inaczej, a raczej odwrotnie, framework jest już gotową funkcjonalnością (przepływem logiki) ale bez treści, taką formę wypełnia się treścią poprzez wywołanie aplikacji. Taka zasada nosi nazwę "Odwróceniem sterowania" (Inversion of Control).
Mechanizmy zapewniające działanie tej reguły odwrotności:
  1. korzystanie z podklas (subclassing)
  2. wprowadzanie zależności (dependency injection)
  3. wzorce metod (template methods)
  4. zamykanie (closure)
Aby sprawnie posługiwać się biblioteką należy dobrze poznać jej funkcje, w frameworku mamy już podstawowy przepływ działania należy jedynie zmienić zachowanie się różnych stanów. Framework jest rozszerzalny i elastyczny poprzez stosowanie podklas możemy łatwo zmienić standardowe zachowanie i dopisać własną funkcjonalność. F jest ukierunkowany na osiągnięcie pewnej funkcjonalności, dlatego już zawiera wszystkie bazowe przepływy i zależności. Wadą F jest to, że w celu spakowania jak największej funkcjonalności F jest skomplikowany i mocno rozbudowany.
karate Kid - "Najlepszą obroną przed atakiem jest nie bycie tam"

Dwa podejścia do wirtualizacji. Są dwa hyperwizory:
  1. sprzętowy (ponieważ działa bezpośrednio na sprzęcie) XEN - firmy XenSource - niezależny od platformy sprzętowej silnik do wirtualizacji, który można wbudować do innych komponentów
  2. programowy (ponieważ działa w środowisku systemu operacyjnego, na razie tylko Linux) - KVM (Kernel Based Virtual Machine) - działa we wnętrzu jądra Linux w wersji 2.6.20, wykorzystuje wbudowane w architekturę procesorów instrukcje i rozszerzenia wirtualizacji (Intel VT or AMD-V). Ładuje się do jądra na żądanie i może uruchamiać maszyny wirtualne Linux lub Windows
Inne podejścia: QEMU, Bosch, VirtualBox
Inne firmy tworzą produkty o nazwie RONS (Red Hat, Oracle, Novell, Sun) - implementując Xen (jako open-source project jest to możliwe) wg. własnych potrzeb do jądra ich odmian (dystrybucji) systemu Linux


Aplikacje Google
Niedawno ukazało się opracowanie w linuxworld na temat dojrzałości płatnego produktu firmy Google - Google Apps Premier Edition (GAPE). Płatnego bo kosztuje 50$/rok. Zdaniem krytyków jest to niewypał (przynajmniej na razie) ponieważ nie ma mechanizmów zarządzanie kontami, prawami i dostępem co skazuje na niepowodzenie jego instalację w dużych firmach. Dla małych firm może to rozwiązanie być OK. Dodatkową nieufność budzi fakt dostępu do nieraz ważnych dokumentów poprzez internet (kwestia dostępności i bezpieczeństwa oraz standardów, regulacji prawnych i procesów danego przedsiębiorstwa). Ale z drugiej strony produkt Google przeciera ścieżki dla takich form narzędzi zwiększających produktywność i niejako sankcjonuje możliwość istnienia takich rozwiązań tym bardziej, że za Google poszły inne firmy Zoho, SalesForce i Microsoft.
Wygląda na to, że jest to pionierski ruch, przecierający ścieżki (podobnie jak przeglądarka Netscape).

czwartek, sierpnia 23, 2007

Jak to bywa z Ajaxem (wg. studium przypadku z http://adtmag.com/article.aspx?id=21111)
Pierwsza rzecz na którą należy zwrócić uwagę to wsparcie transakcyjności. Etapy rozwoju aplikacji a stylu AJAX-a:
  1. do wprowadzenia terminu AJAX - serwer miał skrypt w ASP, a każda strona zwierała skrypt w JS do wsparcia walidacji oraz "doładowywania" danych z serwera. Aplet w Java zapewniał komunikację z serwerem. Kłopoty z nim polegały na wymaganiu instalacji JVM.
  2. nadejście ery Ajax (początek 2005) - trzeba było przepisać. jedyna obawa to czy nadmiar kodu w JS po stronie klienta (przeglądarki) nie spowolni system. W ten sposób powstał framework w Java po stronie serwera - ThinWire (http://www.thinwire.com/) udostępniany na zasadzie LGPL
  3. Gartner tak porównuje rozwój aplikacji RIA:
    1. Poziom 1 - wzmocnienie istniejących aplikacji webowych o snippety
    2. Poziom 2 - możliwość dodawania widgetów w postacie komponentów UI (siatki lub drzewka)
    3. Poziom 3 - stosowanie wyspecjalizowanego frameworku do zawarcia logiki po stronie klienta
    4. Poziom 4 - wykorzystanie uniwersalnego frameworku typu RIA z ściśle powiązaną architekturą C/S
  4. Gartner twierdzi, że w 2010 około 60% nowych aplikacji będzie powstawała przy pomocy frameworku RIA

środa, sierpnia 22, 2007

Zbiór frameworków:

PHP Frameworks

CakePHP - A structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility.

Symphony - Offers a “Ruby on Rails” like approach to web development. Symphony is well documented, simple to use and can be easily extended or modified.

Prado - An event-driven and component-based framework for Web application development in PHP 5.

Zend Framework - A complete framework to develop PHP 5 applications. It provides a repository of components that are actively supported.

Seagull Framework - Seagull is an object-oriented framework written in PHP that focuses on best practices, clean code and reusable components.

Java Frameworks

JavaServer Faces - JSF simplifies building of user interfaces by allowing you to assemble reusable UI components in a page. It has many tools, libraries and components.

Struts 2 - A simple action based framework that makes use of the Model2 approach to development.

Stripes – It is easy to learn and has excellent documentation. Development with Stripes does not require you to configure every last thing.

MyFaces - A new framework that makes use of the MVC paradigm. It is similar to Struts but with more features and concepts.

Tapestry - Organizes web applications development into component-based framework. Makes use of HTML templates and is design friendly.

JavaScript Frameworks

Prototype - A JavaScript framework that aims to ease development of dynamic web applications. It has a unique toolkit for class-driven development with an excellent Ajax library.

Rico - Rico is designed to build rich Internet applications. It provides visual style effects and animations in a very simple interface.

Dojo - Eases the rapid development of JavaScript and Ajax based applications. It also helps to add dynamic capabilities into your Web pages.

Yahoo! User Interface Library - A collection of controls and utilities written in JavaScript to build richly interactive web applications using DOM scripting, DHTML and Ajax.

qooxdoo – A framework that includes support for professional JavaScript development, a state-of-the-art GUI toolkit and high-level client-server communication.

CFML Frameworks

ColdSpring - ColdSpring makes the configuration and dependencies of ColdFusion components easier to manage.

Fusebox - Fusebox is a lightweight, high-performance web application framework for building applications that are easy to maintain and easily extensible.

Mach-II - An object-oriented MVC framework that can be extended through its filter and plug-in architecture.

Model-Glue - It makes the construction of Object-Oriented Web and Rich Internet Applications a straightforward process.

Perl Frameworks

Catalyst - A very flexible, powerful and fast MVC based framework for developing any type of web project in Perl.

Jifty - A Perl web framework to build web applications based on the DRY (“don’t repeat yourself”) principle.

CGI::Application - A mature, lightweight, flexible MVC framework for rapidly building web applications.

HTML::Mason - A web site development and delivery engine. With Mason, you can directly embed inline Perl codes with HTML templates.

Maypole - Perl framework for MCV-oriented applications designed to minimize coding requirements for creating database-backed applications.

Other Frameworks

Ajax Frameworks – A round-up of 50 Ajax toolkits and frameworks.

Python Frameworks – An overview of Python Web frameworks.

Flash & Actionscript Framework – This site has a comprehensive list of Flash and Actionscript frameworks and components.


Nowa mowa
Od wersji 6 języka programowania Java zmieniło się nazewnictwo wersji. Do wersji 5 (nazwa kodowa Tiger) było takie: Java Standard Edition 5.0 (JSE 5.0), Java Enterprise Edition 5.0 (J2EE 5.0). Od wersji 6 (nazwa kodowa Mustang) jest takie: Java SE 6.0, Java EE 6.0 i doszło Jave ME 6.0 (dla urządzeń mobilnych). Zmienił się także cykl wydawania nowych wersji, od teraz trwa on 18 miesięcy.

Biblia Internetowa

http://biblia.apologetyka.com/

Java zasoby ciekawe:

  1. http://blog.zabiello.com/pages/java
  2. http://tjws.sourceforge.net/
  3. http://tomcat.apache.org/tomcat-4.1-doc/ssl-howto.html

Zasoby o Pythonie:

  1. Nowy interpreter IPython
  2. Tłumaczenie książki marka Pilgrima - http://pl.wikibooks.org/wiki/Python - Dive into python

Problematyka technologii AJAX:

  1. Wdrożenie JSON jako medium wymiany danych (Douglas Crockford)
  2. Zastosowanie środowiska deweloperskiego APTANA IDE
  3. Nowa technologia jMaki
  4. JavaScript dzieki bibliotece prototype staje się b. ciekawy i upodabnia się do Ruby a składnię ma coraz bardziej podobną do Pythona, PHP raczej przypomina Perl lub C++

Ciekawe linki:

  1. http://blog.zabiello.com/pages/php
  2. http://blog.zabiello.com
  3. http://blog.zabiello.com/pages/dotnet
  4. http://www.gotapi.com/html
  5. moo.fx ma dodawanie zdarzeń poprzez klasy css

Współpraca w zakresie usług sieciowych:
Głównym motorem rozwoju języka Java jest ciągle firma SUN (mimo otwarcia się na potrzeby społeczności open source). Tu powstają i są implementowane nie tylko nowe konstrukcje językowe ale też i implementacje nowych technologii. W szczególności spraw palących i drażliwych jak zachowanie stanu (persistance) oraz usługi sieciowe (web services - http://java.sun.com/webservices/).
Postawienie karty na technologii IBM jest OK, ale trzeba uważać na potencjalny konflikt między rozwiązaniami IBM i SUN. IBM jest podobny do MS, niecierpliwie chce wdrażać nowe technologie do Javy, podczas gdy SUN jest tym "hamulcowym". Dlatego IBM, sprytnie posługując sie wpływami w fundacji Eclipse, "przemyca" różne projekty.
Tak np. ma miejsce w przypadku WS - w nowej wersji Java 6 mamy już pełną (choć bardzo spóźnioną w czasie) implementacje WS-* i to jest dobre. Co zrobił IBM gdy potrzebował implementacji WS? Dodał ją do Websphere (swego serwera aplikacji), podobnie zrobiono również w fundacji Apache (projekt Axis).
Mamy więc dwa rozwiązanie tego samego problemu. Które lepsze? To zależy, z punktu widzenia programisty jest unifikacja - w języku Java ma już pełne wsparcie WS (a więc śmierć Aixs-a). Z punktu widzenia kierownictwa działu IT lepsze jest rozwiązanie drugie bazujące na implementacji WS w centralnym miejscu - serwerze internetowym Apache (wtedy programiści różnych języków mogą pisać aplikacje skierowane do jednej, wspólnej implementacji WS pod Apache - potrzebne są jedynie komponenty proxy do Apache dla danego języka w postaci mod_xxxx).
Implementacje WS w języku Java:
  1. JAX-WS - implementacja W3C stosu WS-*
  2. JAXB - powiązanie XML z obiektami w JavaBeans (API do powiązanie XML z obiektami w Javie)
  3. WSIT - współpraca z implementacją WS w MS .NET 3 poprzez wykorzystanie nowej własności Java 6 Mustang - annotacji (tu widzimy po raz pierwszy, mam nadzieję nie jedyny, wpływ C# na Java)
  4. JAXP - przetwarzanie XML niezależne od implementacji parsera XML
  5. XWSS - zapewnienie bezpieczeństwa XML i WS poprzez implementację zaleceń grupy OASIS WSS (web services security)
Inne nowe dodatki do wersji 6:
  1. możliwość stosowania języków dynamicznych (scripting) do: prototypownia lub (nawet) programowania (dla ludzi obytych z np. JS)
  2. lepsze wsparcie dla baz danych (implementacja JDBC 4.0 z lepszym wsparciem dla typów XML w kolumnach i dla BLOB-ów)
  3. dostęp do kompilatora w fazie uruchomienia (run-time) - oznacza to możliwość kompilacji w locie dowolnego tekstu do kodu wykonywalnego (podobnie jak eval w JavaScript lub execscript w VFP)

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

piątek, lipca 06, 2007

Klasyczne opracowania o XML-u

Ronald Bourret - http://www.rpbourret.com/xml/XMLAndDatabases.htm:

  1. XML data products
  2. XML data bindings resources
  3. XML and database
Rozważania na temat technik programowania:
  1. Nastąpiło zbliżenie, środowisko .NET i J2EE stosują technologię Hibernate do przechowywania stanu oraz mapowania obiektów z aplikacji w bazie danych.
  2. Więcej szczegółow u znanego blogisty:
    1. http://www.jonathanbruceconnects.com/jonathan_bruce/
    2. http://devhawk.net/art_sccswitch.aspx
  3. Jeżeli chodzi o Oracle to podobnie jak dla innych baz należy przejść z OLDDB do ADO.NET (mimo, że te modele różnią się istotnie architekturą). Na tym polu króluje firma DataDirect - http://www.datadirect.com/products/net/net_for_oracle/index.ssp.
  4. Przeglądarka API dla Windows - http://www.activevb.de/rubriken/apiviewer/index-apiviewereng.html
  5. Inne przydatne narzędzia programistyczne - http://www.hanselman.com/
  6. Jak to jest z połączeniem PHP-Java:
    1. Thrift - http://developers.facebook.com/thrift/
    2. Krook - http://krook.net/archives/191:
      1. The open source PHP/Java Bridge hosted at SourceForge.
      2. The commercial Zend Platform Java Bridge developed by Zend Technologies.
      3. The free PHP Integration Kit for WebSphere Application Server Community Edition.
  7. REST na podstawie pracy Fielding'a - http://searchwebservices.techtarget.com - REST vs SOAP - the rest story
  8. REST stosuje również Google - http://code.google.com/apis/gdata/overview.html
  9. Dobra kontrola danych jest podstawą bezpiecznej aplikacji webowej : Kevin Beaver- Importance of data validation
  10. A SELENIUM podstawą do testowania gotowej aplikacji w całości - http://www.openqa.org/selenium-core/usage.html
  11. Przemyśl stosowanie JSF (ciągle zbyt uboga w komponenty) - http://www.theserverside.com/tt/articles/article.tss?l=RethinkingJSF
  12. Reminiscensje z JavaONE - http://www.theserverside.com/tt/talks/library.tss#buzek
  13. AJAX i GOOGLE - http://www.softwaredeveloper.com/features/google-ajax-play-nice-061907/
  14. GlassFish - co to jest? https://glassfish.dev.java.net/
  15. Uwaga! Nadchodzi SPRING:
    1. http://blog.interface21.com/main/2007/04/21/what-spring-web-flow-offers-jsf-developers/
    2. http://www.theserverside.com/tt/articles/article.tss?l=SpringNewJavaEE
  16. VFP gości .NET - http://west-wind.com/weblog/posts/104449.aspx
  17. Nowe spojrzenia na AJAX- a http://www.xul.fr/en-xml-ajax.html
  18. Applety z JSC http://jsc.sourceforge.net/
  19. Świetna dokumentacja do bibliotek środowiska JAVA - http://www.jdocs.com/

czwartek, lipca 05, 2007

Linki ciekawe:
  1. Tworzenie aplikacji wykorzystujacej open-source: http://www.onjava.com/pub/a/onjava/2004/04/07/wiringwebapps.html
  2. jsc for C#
  3. Baldwin Java - Servlets
  4. Przeechowywanie stanu i or-mapping bez Hibernate - doskonaly przyklad - http://www.ibm.com/developerworks/java/library/j-db4o4.html?ca=drs-
  5. OnJava - Google Gears p. 1.
  6. RH i MS rozmawiają o interoperability - http://www.eweek.com/article2/0,1759,2154521,00.asp?kc=EWRSS03129TX1K0000616
  7. Jak to jest z zabezpieczeniem SSL - http://webdesign.about.com/od/ecommerce/a/aa070407.htm
  8. Blog na temat J2EE - servlet v. 3.0 - http://java.sun.com/javaee/community/blogs/?feed=JSC
  9. Wreszczcie JSF 2 - http://www.oreillynet.com/onjava/blog/2007/05/jsf_20_is_here_1.html
  10. Języki dynamiczne w srodowisku Java - http://www.oreillynet.com/onjava/blog/2007/06/scripting_language_for_the_jav.html
  11. Szpiegowanie klas - reflection- http://www.onjava.com/pub/a/onjava/2007/03/15/reflections-on-java-reflection doskonały przykład.
  12. Doskonały serwis o Javie - http://www.onjava.com/

środa, lipca 04, 2007

Środa - linki:

  1. W latach 80 najb. gorącym tematem w IT były relacyjne bazy danych. Główne skupisko naukowców zajmujących się bazami relacyjnymi było w University of California w Berkely (Mike Stonebraker, Larry Rowe and Gene Wongm Jim Gray). Ci właśnie naukowcy byli twórcami pierwszej bazy danych Ingres obik Informix, Oracle oraz obiecującej Sybase. Na początku lat 90 firmy MS, Oracle i IBM wyssały z uczelni co lepszych naukowców do swych laboratoriów. Wśród trzech modeli baz (sieciowa, relacyjna i hierarchiczna) skłaniano się do relacyjnej. Skutkiem tego wiele problemów baz relacyjnych i nie tylko (np. efektywny model przetwarzania rozproszonego) zostało nierozwiązanych. Pojawiła się walka między zwycięzcą (model relacyjny) a nową koncepcją - bazą obiektową. Pojawiły się różnorodne techniki mapowania obiektów na model relacyjny. Firmy SAP, Siebel wykorzystały w swych produktach połączony model obiektowo-relacyjny. Powstały mappery dla j. programowania takie jak TopLink czy Hibernate. W standardzie SQL-1999 powstały rozszerzenia ułatwiające budowę modelu o-r ale są przez nikogo zauważane. W aplikacjach Web 2.0 informacja jest najczęściej rozproszona po całym świecie i bez wyraźnej struktury najczęściej prezentowana w formacie XML czy JSON. Najczęściej używaną bazą jest MySQL w postaci modelu shard. Wszystkie reguły relacyjności zostały wyrzucone przez okno, robi się wszystko by zapytania były realizowane efektywnie. (Zdnet - http://m.zdnet.com/index.php?id=80921&site=11)
  2. Uwaga na horyzoncie pojawił się nowy rywal Linuxa - http://www.gnusolaris.org/gswiki - Nexenta OS - bazujący na OpenSolaris. Strona do ściągnięcia obraz dla VMWare - http://www.gnusolaris.org/gswiki/Download-form (uwaga!!! Konto: root/livecd)
  3. Dziwne stanowisko MS, niegdyś kiedy WS były tworzone firma ta była aktywnym uczetsnikiem prac w tym zakresie (była obok IBM jednym z filarów specyfikacji WS-* która znalazła się po dachem grupy OASIS. Walczyła o otwartość standardu wymiany przy pomocy usług sieciowych. Teraz kiedy stwarza się okazja do podniesienia poziomu usług sieciowych poprzez prace w OASIS w zakresie implamentacji SOA (czyli na poziomie oprogramowania aplikacyjnego zamiast jak to było w przypadku WS-* na poziomie usługi sieciowej): SCA (Service Component Architecture) oraz SDA (Service Data Architecture) MS unika uczestnictwa. Powód: firma wbudowała WS w system operacyjny jako część stosu aplikacyjnego, podczas gdy inni budują niezależne aplikacje. Dla małych organizacji takie wbudowanie jest korzystne ale dla dużych korporacji gdzie środowisko jest heterogeniczne stanowi to przeszkodę. http://m.zdnet.com/index.php?id=80886&site=11
  4. MS potrzebuje REST - aplikacje spod zanku Web 2.0 polegają na integracji i powiązaniach ze sobą (integration and mashup). Powiązanie te są zewnętrzne tj. między aplikacjami działającymi jak mashup lub wewnętrzne między róónymi źródłami danych dostawcy usług (np. Google ma wiele wewn. źródeł danych tzw. GData stosuje do komunikacji rozszerzony APP). Stosują REST (Representational State Transition) stosowany przez Google i Yahoo lub APP (Atom Publishing Protocol) de facto standard. Microsoft widząc niedoskonałości APP zamiast go udoskonalić wymyślił nowy standard - Web3S (Web Structured Schema and Searchable)
  5. Cała wrzawa wokół otwartego formatu dokumentów w stanie Mass. polega na tym, że mimo uznania OpenOffice za wpełni otwartego to nie ma on wielu funkcji dla osób niepełnosprawnych. Dlatego dopuszczono stosowanie Office Open XML pod warunkiem zainstalowania konwertera do Open Document Format (ODF). Zdnet - "Microsoft document formats gain Mass. favor"
  6. Niebezpieczeństwa stosowania Web 2.0 - Prawdzie jest równanie: te same zagrożenia jak Web 1.0 + dodatkowe wektory zagrożeń = większa złożoność
  7. Jakie to zagrożenia:
    1. web feeds - kanały informacyjne: użytkownicy sami mogą edytować te strumienie i wstrzykiwać do nich "złe" skrypty. Techniki ataku: cross-site request forgery (CSRF), cross-site scripting (XSS) and distributed denial of service (DDOS). Blacklisting i gorsze od whitelisting gdyż na białej liście są wolne od zagrożeń i dopuszczone strony. Należy również sprawdzić dokładnie dane wejściowe. Często strumienie sa konwertowane do HTML, i strony są przechowywane lokalnie w "local" zone, gdzie powinna być zawartość zaufana. Ataki w tej strefie to XMLHttpRequest i ActiveX.
    2. web services - usługi sieciowe: kradzież sesji (właściwie session ID, który jest przechowywany jako cookie lub w adresie URL.
    3. technologie AJAX - sprawdzenie dokładne danych wejściowych
  8. Testowanie aplikacji przy pomocy środowiska SELENIUM - http://www.openqa.org/selenium-core/usage.html
  9. Ataki na www - http://searchsoftwarequality.techtarget.com/tip/0,289483,sid92_gci1214373,00.html
  10. RStrahl - http://west-wind.com/weblog/posts/104449.aspx
  11. CoDe - http://code-magazine.com/article.aspx?quickid=0001061&page=4
  12. Eclipse - http://www.thescreencast.com/2007/07/tour-around-europe-eclipse-for-java-ee.html
  13. AJAX - http://www.softwaredeveloper.com/features/google-ajax-play-nice-061907/
  14. OpenID - http://www.theserverside.com/tt/articles/article.tss?l=OpenID
  15. AJAX i WS - http://www.theserverside.com/tt/articles/article.tss?l=AjaxJavaWebServices_Chapter
  16. REST vs. SOAP - http://searchwebservices.techtarget.com/tip/0,289483,sid26_gci1227190,00.html?track=NL-461&amp;ad=595564&Offer=WStssret73rest&asrc=EM_NLN_1720960&uid=267959
  17. Podpis XML w .NET - http://www.codeguru.pl/article-702.aspx