czwartek, marca 10, 2011

Fundamenty tworzenia aplikacji w JS

Generalnie jest ich dużo ale napotkałem dwa świetne adresy:

E-faktura i podpis

Dane ze stycznia 2008 – TP SA wdrożyła wystawianie faktur klientom detalicznym (są jeszcze inni klienci – duże firmy). Doręczenie odbywa się e-mailem jako PDF + zewnętrzny plik do weryfikacji. Podpis w formacie XAdES-BES. Wdraża to itBCG. Testowe pliki z podpisem elektronicznym wraz z tabelą zestawień.

Podpis PDF – “Jest kilka wyjątków. Monitory Polskie są publikowane w postaci dokumentów PDF podpisanych elektronicznie, zarówno podpisem zewnętrznym (wymóg prawa) jak i osadzonym w dokumencie (wymóg zdrowego rozsądku)” – cytat od P. Krawczyka

środa, lutego 23, 2011

Zasady…

Zasad trzeba się trzymać. Działają one podobnie do przykazań. Jedną z takich zasad jest zasada OPEN-CLOSE, która mówi “The O in SOLID - The Open-Closed Principle First proposed by Bertrand Meyer in 1988, the Open-Closed Principle goes like this: Software entities should be open for extension but closed for modification. In other words, use the class in any way you need but modifying its behavior comes by adding new code, never by modifying or deleting the old.”

Ciekawe e-booki - http://ebookxyz.com/category/programing/page/2/ i tu - http://ebookau.com/

Ciekawe rozszerzenia dla Chrome - http://sixrevisions.com/tools/chrome-extensions-developers-designers/?utm_medium=twitter&utm_source=twitterfeed

Otwiera oczy na JS - http://bonsaiden.github.com/JavaScript-Garden/#closures, script junkie też, pamięć lokalna w HTML 5 - http://www.codeproject.com/Articles/156985/Use-HTML5-LocalStorage-in-your-Mobile-Web-Applicat.aspx

Obserwuj witryny MS:

  1. http://msdn.microsoft.com/en-us/ff972295
  2. Dla aplikacji Windows - http://msdn.microsoft.com/en-us/windows/
  3. Dla bezpieczeństwa  - http://msdn.microsoft.com/en-us/windowsserver/ff727936
  4. Polska wersja - http://msdn.microsoft.com/pl-pl/
  5. W poszukiwaniu zagubionego kodu - http://www.google.pl/codesearch?hl=pl
  6. http://msdn.microsoft.com/en-us/windows/ff972463
  7. IronPython - http://channel9.msdn.com/Tags/ironpython
  8. Obsługa WS po nowemu - http://www.servicestack.net/ServiceStack.Hello/
  9. Owijka do HTTP - http://geekswithblogs.net/michelotti/Default.aspx
  10. A little wonders - http://geekswithblogs.net/BlackRabbitCoder/archive/2011/02/10/c.net-little-wonders-the-concurrent-collections-1-of-3.aspx
  11. http://geekswithblogs.net/Default.aspx?q=Twitter

Medytacje:

  1. http://m.lifehacker.com/5591576/a-guide-to-meditation-for-the-rest-of-us
  2. http://philosophistry.com/archives/2011/02/benefits-of-meditation.html
  3. http://education.calumet.purdue.edu/vockell/EdPsyBook/Edpsy6/edpsy6_transfer.htm

wtorek, lutego 22, 2011

Nowości

IBM wcale nie uśmiercił Informixa, rozwija go nadal o czym świadczy możliwość ściągnięcia do siebie wersji jako maszyny wirtualnej z portalu VMWare. Teraz zachwala tę bazę jako serwer wbudowany do różnych urządzeń.

Aplikacja do zdalnego pulpitu – join.me. Czy naprawdę jest taka dobra? Trzeba to sprawdzić. Ponadto jest tam wiele ciekawych przenośnych aplikacji bez konieczności ich instalacji m.in. camstudio portable.

Różności

Wszystko co napotkałem po drodze:

poniedziałek, lutego 21, 2011

Życie toczy się dalej…

Po ukazaniu się wersji RC jQuery 1.5, rozpoczęto prace nad nowym projektem UI – GRID w ramach jQuery UI Team.  Ma on zastąpić i ujednolicić podejście do siatki danych implementowane w wielu rozwiązaniach wtyczkowych. oto cytat “There are already a number of high quality jQuery grid plugins. We recognize they each have an impressive set of features, capabilities, and a level of use by members of the jQuery community. We are studying and applying practices and techniques from today’s most popular grid and data table plugins, including current favorites, SlickGrid,jqGrid, DataTables and a few that have not been updated in a while, like Tablesorter,Flexigrid, and Ingrid. We invite all authors and users of these and any other grid plugins to get involved in the design of the jQuery UI Grid.”. Źródło - http://blog.jquery.com/2011/02/07/jqcommunity-updates-feb2011/

piątek, lutego 18, 2011

Zamyślenie…

Problem tworzenia aplikacji internetowych. Można go zaatakować z dwóch stron – mamy tu do czynienia z klasycznym przypadkiem interakcji serwer-klient.

Od strony serwera poprzez stosowanie w wybranym języku serwerowym rusztowań (frameworków) które nie tylko stanowią owijkę dla dla jego języka (wprowadzają słynny model MVC jak np. PHP Cake lub bardziej złożony ale uniwersalny ZEND) ale DODATKOWO pozwalają również na wstrzykiwanie kodu do przeglądarki internetowej po stronie klienta przez co aplikjacja robi się bardziej reaktywna (np. EXT PHP, ZEND).

Od strony klienta działającego w przeglądarce internetowej który realizuje cały GUI po stronie klienta a dobiera sobie dane poprzez AJAX od serwera. Tutaj mamy uniwersalny ale niskopoziomowy AJAX, lub frameworki jQuery/EXT JS i inne, z dodatkami OO jak np. Javascript MVC.

Innym, ciekawym rozwiązaniem jest poleganie na narzędziach RAD, które w sobie mają wbudowane jakieś frameworki np. SENCHA lub Appcelerator (z przejętą przez niego Aptaną).

Innym zasługującym na uwagę zjawiskiem jest sytuacja w obszarze mobilnych urządzeń. Mamy tu powtórkę całej historii informatyzacji w pigułce. Najpierw tworzono aplikacje lokalne (w rozumieniu tego urządzenia) w językach które miały na danej zabawce swoją maszynę wirtualną np. Java VM (zubożona Java ME), rzadziej .NET i były to najczęściej gry. Później uległy zaawansowaniu systemy operacyjne tych urządzeń i pojawiły się aplikacje systemowo-narzędziowe chociażby przeglądarki internetowe. Pozwoliło to na wykorzystanie języków skryptowych tych przeglądarek (najczęściej Javascript) do tworzenia aplikacji w środowisku przeglądarkowym. A że przeglądarki uniknęły syndromu IE (chodzi o skarłowaciałe wersje IE 4/5/6 a nawet 7) i opierały się na bibliotece WebKit (Safari lub Chrome) lub Mozille (Firefox) z wersją HTML 5, moża było od razu wykorzystać AJAX i inne zaawansowane biblioteki jak jQuery, Dojo. Tutaj już następuje wyjście na świat zewnętrzny – dostęp do dowolnego serwera i technologii tworzenia aplikacji po jego stronie. Tak naprawdę przeglądarce było obojętne co jest TAM po drugiej stronie – komunikacja z nią odbywała się poprzez URI (początki REST). Teraz zaczęto wbudowywać w VM Jay wsparcie dla innych języków dynamicznym i mamy pełny wysyp języków znanych ze świata PC jak Ruby, JS, Python. Dzięki nim możemy tworzyć aplikacje lokalne i internetowe pomijając przeglądarkę internetową jako kontener runtimemowy czasu uruchamiana – framework dla Androida o nazwie S4A, Jednakże przeglądarka nie przestaje być atrakcyjnym pojemnikiem dla uruchamiania aplikacji ponieważ daje już na pczątek dwie ważne rzeczy deweloperowi: możliwość standardowego kontaktu z siecią internet (poprzez warstwę AJAX i inne,  na niej zbudowane warstwy jak REST) oraz zunifikowany sposób wyświetlania danych poprzez GUI oparty na HTML5 obudowany w framework wizualizacyjny choćby jQuery Mobile lub zapeto.

Ażby usprawnić i przyśpieszyć działanie aplikacji próbuje się stworzyć taki system operacyny który ma wbudowaną przeglądarkę i języki skryptowe a nawet języki 3GL (kompilowalne) jak to ma miejsce w przypadku OS Chrome. I tu powtarza się sytuacja MS w latach powstawania Internetu, MS wbudował w OS wsparcie dla przeglądarki IE3 oraz języków skryptowych (JS), a potem został potępiony i musiał przeglądarkę odłączyć od niego.

poniedziałek, lutego 14, 2011

Grafika

Jak zwykle świetny artykuł na LISAPART na temat stosowania grafiki wektorowej zgodnie ze standardem SVG. Do wykreślania użytko biblioteki opierającej się na jQuery – flot. A do obsługi SVG użyto biblioteki google svgweb. SVG moża również przetwarzać interaktywnie przy pomocy inkscape (darmowy zamiennik Illustratora) lub programowo przy pomocy Raphael (świetny tutorial na ten temat)

Jak pies z kotem (… Java z .NET)

Projekt Ja.Net pozwala na skompilowanie klas Java do fabryki (assembly) .NET, czyli DLL które potem można wykorzystać w np. C#. Trochę niejasna jest sprawa użycia projektu Harmony (obecnie zarzuconego nawet przez IBM).

Osobiście używam IKVM

Do komunikacji poprzez HTTP stosuje się najpopularniejszą chyba bibliotekę HTTPClient fundacji Apache. Szczególnie piękny jest wstęp do korzystania z tej biblioteki podkreślający, że nie jest ona obsługą przeglądarki ale protokołu HTTP.

piątek, lutego 11, 2011

Ważne dla mnie i nie tylko

czwartek, lutego 10, 2011

Co z systemami operacyjnymi przyszłości?

Złe wróżby dla Microsoft – HP ogłasza gotowość do produkcji własnego systemu operacyjnego WebOS w tablecie TouchPad oraz telefonie. Jeden system operacyjny na takie różne urządzenia! Tego nie udało się nawet Microsoftowi. Powoli tworzy się przestrzeń nowych systemów operacyjnych bazujących na urządzeniach mobilnych  z ambicjami wejścia na platformę PC. mamy takich graczy:

  • Apple – unifikacja dwóch systemów iOS i MacOS X w postaci Lion
  • Google – webowy system Chrome OS i Android
  • i teraz HP – webOS

MS widzi zagrożenie i zaczyna działać – zamierza portować Windows 8  na platformę ARM (właściwa dla urządzeń mobilnych), ale to dopiero na początku 2013 r.

A więc zaczyna się wojna systemów operacyjnych!

Aplikacje społecznościowe

Są obecnie bardzo modne. Stworzenie ich ułatwia specjalny framework dostępny na stronach code.google.com. Pomocne może być wiki na ten temat. Na razie działa tylko z iGoogle, ale idea aplikacji społecznościowych jest tu dobrze wytłumaczona.

czwartek, lutego 03, 2011

Rozwój w czwartek

<!--[if IE]><script src="excanvas.js"></script><![endif]—>

Dzięki temu można skorzystać z kanwy dostępnej w HTML5 – link do biblioteki jest tu. Ale czy nie lepiej użyć innej biblioteki do detekcji przeglądarki - http://www.modernizr.com/?

wtorek, lutego 01, 2011

Rozwój

Jest wiele portali do nauki technologii wykorzystywanej w Javie jednak chyba najlepsze są lekcje z możliwością poznania jakieś technologii w praktyce. Dlatego takie portale jak myEclipse zawierają tutoriale prezentujące praktyczne lekcje jak zrobić coś przy użyciu czegoś. Adres pod którym są takie lekcje jest tu. Podobne role spełniają portale edukacyjne Eclipse i Netbeans. Tak a pro po Netbeans od wersji 7 nie będzie zawierał platformy RoR (platforma ta mimo dużego zainteresowania się deweloperów jakoś sie nie rozwinęła, nie pomogło nawet kupienie przez Salesforce Heroku), ludzie z Oracle tłumaczą się tym, że wszystkie siły trzeba skierować do realizacji mapy drogowej Java.

Portale edukacyjne – jest ciekawy na infoq. Tam jest ciekawa pogadanka o funkcjach w JS. Lub securitystandard. Zalecenia dla PHP z OLAMP. VirtualStudy – kurs C#.

Integracja to hasło roku. Widzimy integrację platformy Java, nawet IBM porzucił projekt Harmony na rzecz Open JAVA (trochę zmusił go do tego Oracle), integrację w narzędziach RAD dla twórców aplikacji webowych (Aptana wykupiona została przez Appcelerator), integrację narzędzi do testowania aplikacji webowych (WebDriver połączy się z projektem Selenium), integrację bibliotek JS do tworzenia aplikacji (jQuery tworzy framework dla aplikacji mobilnych i powstają zalecenia odnośnie dobrych praktyk w tworzeniu interfejsu mobilnego – W3C z uwagi na potrzebę zachowania “lekkoścj” kodu), integrację standardu HTML w wersji 5 (uproszczony nagłówek HEAD bez zbędnych “upiększeń”).

Znowu moda na bazy nie SQL-owe. Jedną z nich jest REDIS. Prosta, szybka i wydajna, działa na zasadzie pary klucz-wartość. Dane są przechowywane w pamięci, utrwalenie następuje bądź poprzez okresowe opróżnianie cache z zapisem na dysk lub poprzez zapis ciągły do logu. Ma klientów do niej dla C#, PHP, Go. Brak pełnego wsparcia dla Windows (choć sama baza jest napisana w C i wymaga środowiska zgodnego  z Posix). Można ją używać m.in. jako wyspecjalizowaną pamięć podręczną (cache) w rozumieniu przechowywania w niej nietrywialnych (nieprostych) struktur danych. Przykłady użycia w C#.

Produktywność – słowo wytrych dla pracodawcy. Oto kilka aplikacji darmowych: LibreOffice, myBrainShark, Gubb, Remember the Milk, CloudSafe, PrimoPDF/PrimoOnline, Khan Academy.

poniedziałek, stycznia 24, 2011

Perełki (ale do zbadania)

  1. “Best practices for .NET developers” - http://mostlylucid.net/archive/2011/01/18/best-practices-for-.net-developers.aspx
  2. “Var vs. dynamic keyword” - http://www.devcurry.com/2010/09/var-vs-dynamic-keyword-in-c-40.html
  3. Zestaw kategorii artykułów - http://www.dotnetcurry.com/ShowCategories.aspx
  4. Wyszukiwanie developerworks na temat ‘jquery’
  5. Co to jest open – source z Techrepublic
  6. JavaRaunch – tworzenie PDF w iText - http://www.coderanch.com/how-to/java/ItextExample
  7. Patrz też tam na kategorie - http://www.coderanch.com/how-to/java/CodeBarn
  8. Zasoby na temat jak zostać designer’em - http://lifehacker.com/5739492/learn-the-basics-of-design-this-weekend
  9. Sylwetka programisty z Google - http://news.cnet.com/8301-27080_3-20028623-245.html?tag=nl.e703
  10. Początek z jQuery - http://www.ibm.com/developerworks/web/library/wa-jquery1/
  11. Gartner ostrzega o zmianie spojrzenia na aplikację - http://searchsoa.techtarget.com/tip/Gartner-Analyst-Rethink-the-application-paradigm-consider-business-capabilities?asrc=EM_NLN_13179152&track=NL-110&ad=807050
  12. Nauka JS:
    1. http://www.dzone.com/links/r/partial_function_application_in_javascript.html
    2. http://www.dzone.com/links/r/jquery_15_promises_a_better_future.html
    3. http://www.dzone.com/links/r/10_must_see_new_useful_jquery_plugins.html
    4. http://www.quirksmode.org/js/this.html
    5. http://www.dzone.com/links/r/45_resources_tutorials_for_designers_and_develope.html
    6. http://www.dzone.com/links/r/wiki_in_80_lines_of_javascript.html
    7. http://www.dzone.com/links/r/14_really_useful_jquery_plugin_for_create_web_apps.html
    8. http://www.dzone.com/links/tag/javascript.html:
      1. http://www.dzone.com/links/r/14_best_javascript_frameworks.html
      2. http://www.dzone.com/links/r/what_is_jquery_the_perks_and_the_drawbacks.html
    9. JSON ważny - http://radicaldevelopment.net/2010/04/07/process-json-jquery/
  13. Czego nie wiesz o javie to powie ci IBM - http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=5+things+you+did&cmp=dw&cpb=dwjav&ct=dwnew&cr=dwnen&ccy=zz&csr=010711
  14. On też ci powie jak korzystać z GWT - http://www.ibm.com/developerworks/web/library/wa-aj-gmt/?cmp=dw&cpb=dwwdv&ct=dwnew&cr=dwnen&ccy=zz&csr=010711
  15. Wywiad ze Spolksy - http://www.foundersatwork.com/joel-spolksy.html
  16. Potzrebne jest nowe spojrzenie na aplikację. Co na to Gartner – “The application platforms we are dealing with today encourage outdated software design processes.  A better way for development managers to think is in terms of deploying capabilities to a particular environment that has the ability to interact with other capabilities. This eliminates the artificial walls between applications.
  17. That is at least one take away from a discussion with Kirk Knoernschild, a research director with Gartner Group.  Enterprises are beginning to uncover a fundamental mismatch between the way code is developed and the business value of the development process, argues Knoernschild.  “We have taken this notion of an application that runs in its own process that we are accustomed on the desktop and essentially carried that over into the notion of an app on a server,” he explained.

    “Why do we even need the notion of an application on the Web?” asked Knoernschild.  “It is an artificial notion that constrains how we go about building, deploying and managing software. Instead of application, we need to think in terms of business capabilities, the business process and business activities. “

    A significant contributing factor to this disconnect lies in the way in which new code is funded. The challenge is that this process has developed a monolithic application mentality, which makes it easy to add too many competing elements to the finished product. He noted, “Before we know it, we are left with application bloat. We have this all of these applications and some do the same thing, while others are unique.”

    The source of the problem is caused by thinking about the development process in terms of applications rather than metrics which are meaningful to the business.  Thinking about code in terms of application focuses the attention on metrics like project cost and time to code, which detract the focus from more significant metrics that relate to the end product. Tłumaczenie – powodem rozdźwięku jest traktowanie procesu wytwarzania aplikacji w terminach metryk (miar) odnośnie do aplikacji a nie metryk związanych z biznesem.

    Traditionally IT focuses on IT metrics like cost, time to market, and the number of defects, code quality and test coverage. Perhaps those types of metrics are useful for assessing how streamlined the development process is – but there are other values to consider.

    Organizations also have to look at the value their software provides to the business after it is developed. Just because it cost $2 million to deliver a project that is on time and on budget, does not mean and organization is the value the system needs.

    Knoernschild said, “Understanding the business value is also very important, and that is an area where a lot of organizations tend to fall short. That can come in a variety of forms such as worker productivity, customer satisfaction, and retention.” – źródło searchsoa.

piątek, stycznia 21, 2011

Nie kończąca się historia–HTML 5

Źle się dzieje w HTML – nowa wersja HTML 5 została zaanonsowana jako samodzielny byt od niedawna. Koniec prac nad jej specyfikacją przewiduje się za kilka lat (licząc optymistycznie ok. 2022). Autorzy chyba za dużo chcą osiągnąć naraz. Bałagan robi się jeszcze większy gdyż autorzy niektórych przeglądarek już teraz (kiedy tak naprawdę prace na specyfikacja trwają) implementują NIEKTÓRE elementy HTML 5 (te najłatwiejsze i najmniej wątpliwe) i trąbią wszem i wobec, że ich przeglądarka jest zgodna z tym standardem (tymczasem do takiego stwierdzenia  droga jest długa). Na ten temat dobrze jest przejrzeć dwuczęściowy raport INFOWORLD – przypominam, że jest to draft (szkic) specyfikacji:

  1. HTML5 in the browser: Canvas, video, audio, and graphics” – to co najłatwiej zrobić a już można zachwycić użytkownika ponieważ skupiają się na wizualnej stronie (demonstracja możliwości jest tu) przeglądarki. Mamy tu obiekty typu canvas (test tu), SVG (test tu)
  2. bardziej trudna część “HTML5 in the browser: Local data storage - HTML5 Web Storage, Web Database, FileReader, FileWriter, and AppCaching APIs will transform Web pages into local applications, but not yet” tam można znaleźć wiele eksperymentalnych rozwiązań jak czytanie/zapisywanie do plików domowych, sieci semantyczne. Na razie temat jest zbyt rozszerzeń jest zbyt nieprecyzyjny.

Super strona na temat nowości jakie przynosi HTML 5 - http://www.goat1000.com/tagcanvas.php