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)