marți, 13 ianuarie 2009

Laboratoare si teme rezolvate

Am pus pe site rezolvarile laboratoarelor si temelor pentru Interfete Evoluate. Acestea sunt in format .zip si pot fi descarcate.

Puteti gasi rezolvarile pentru :
- laboratoare :XML & DTD, CTTE, DOM & SAX, XPath & XQuery, SPARQL, XHTML & CSS
- teme : Interfata utilizatorului uman cu siteul blogger.com folosind instrumentul CTTE,
Cautare cu highlight intr-o pagina html cu JavaScript si Ajax, Proiectarea si implementarea unei interfete (proiecte C# si web).

Windows 7 Beta

Windows 7 : Faster & Easier

Noul sistem de operare de la Microsoft, Windows 7 Beta poate fi downloadat de la adresa http://www.microsoft.com/windows/windows-7/beta-download.aspx si poate fi folosit pana la 1 august 2009.
Este recomandabil sa instalati sistemul pe un PC de test pentru ca este foarte probabil sa intampinati dificultati in instalarea si folosirea sistemului de operare(puteti pierde date importante si Microsoft nu ofera suport tehnic pentru versiunile beta).

Pentru a putea fi instalat computerul trebuie sa indeplineasca cel putin urmatoarele cerinte:
-procesor 1GHz pe 32 biti sau 64 biti
-1GB RAM
-16GB spatiu liber pe disk
-suport pentru DirectX 9 graphics cu 128 MB memorie
-DVD-R/W Drive
-acces la internet (pentru downloadarea de update-uri)

Puteti arunca o privire asupra noilor trasaturi din Windows 7 la adresa http://www.microsoft.com/windows/windows-7/whats-new.aspx

Integrarea unei aplicatii web Struts 2 cu Apache Ant (Integrating a Struts 2 application with Apache Ant / Struts 2 and Apache Ant)

Acest fragment este o continuare la cel din 07 ianuarie 2009 :
"Struts2 Setup – Ghid rapid de utilizare", deci se refera la aplicatii web dezvoltate cu tehnologii Java.

Etapele care apar pe parcursul dezvoltarii si testarii unei aplicatii web, sunt in mare urmatoarele : compilarea surselor, copierea diverselor fisiere de proprietati, resurse, configurare dintr-un director de surse intr-un director de binare, crearea unei arhive web pentru deployment etc.

Vom schita targeturile Apache Ant pentru a intretine o aplicatie web cu necesitatile descrise mai sus.

Un posibil target ar fi unul, in care sa fie setate proprietati precum JAVA_HOME, J2EE_HOME, sau sa fie setate proprietati care sa indice directorul binarelor, directorul surselor etc., in structura de directoare a aplicatiei web.

< target name="init">
< property name="JAVA_HOME" value="C:/Program Files/Java/jdk1.5.0_05"/>
< property name="app.context.root" value="public_html" />
< property name="app.deploy.dir" value="deploy" />
< property name="web.root" value="${app.context.root}/WEB-INF" />
< property name="build.classes.dir" value="${web.root}/classes" />
< /target>

Dupa care, am avea targeturile duale de creare repsectiv stergere a directoarelor de deploy si classes - directorul fisierelor java compilate.

< target name="prepare" depends="init">
< echo>Java Version : ${ant.java.version}
< mkdir dir="${app.deploy.dir}" />
< mkdir dir="${build.classes.dir}" />
< /target>

< target name="clean" depends="init">
< delete dir="${app.deploy.dir}" />
< delete dir="${build.classes.dir}" />
< /target>

Observati ca acest targeturi depind de init, ceea ce inseamna ca init va fi executat inainte, iar variabilele folosite in targeturile prepare si clean vor fi recunoscute.

Cele mai multe aplicatii web au si o librarie de dependinte, jar-uri, iar acestea trebuie incluse in classpath pentru compilare. Iata cum ar putea arata si targetul de compile :

< target name="compile-servlets">
< javac source="1.5" srcdir="${src.dir}" destdir="${build.classes.dir}" deprecation="yes">
< classpath>
< pathelement path="${jdk.libs}"/>
< pathelement path="${j2ee.libs}" />

< include name="*.jar" />
< /fileset>
< /classpath>

< copy todir="${build.classes.dir}">
< fileset dir="${src.dir}" includes="**/*.properties" />
< fileset dir="${src.dir}" includes="**/*.xml" />
< /copy>
< /target>

Acest target nu va fi folosit independent, ci numai impreuna cu init cel putin; altfel, variabilele sale nu vor fi recunoscute.

Iata si un posibil target de creare a arhivei web, care se serveste de taskul war al apache ant :

< target name="war">
< war warfile="${app.deploy.dir}/${war.file}" webxml="${web.root}/web.xml">
< fileset dir="${app.context.root}">
< include name="css/*.*" />
< include name="js/*.*" />
< include name="jsps/*.jsp" />
< /fileset>
< lib dir="${lib.dir}">
< include name="**/*.jar" />
< /lib>
< classes dir="${build.classes.dir}">
< include name="**/*.class" />
< include name="**/*.properties" />
< include name="**/*.xml" />
< /classes>
< webinf dir="${web.root}">
< exclude name="**/web.xml" />
< exclude name="src/**/*.*" />
< exclude name="classes/**/*.*" />
< include name="jsps/**/*.*" />
< include name="**/*.xml" />
< include name="**/*.tld" />
< include name="**/*.wsdd" />
< /webinf>
< /war>
< /target>

Am imaginat o posibila structura de directoare, in care avem fisiere jsp, dar si fisiere javascript (js), precum si stylesheeturi css. In componenta arhivei war vor fin incluse directoarele css, js si jsp din radacina aplicatiei, directorul lib - unde sunt tinute arhivele jar necesare aplicatiei, directorul classes cu binarele aplicatiei, precum si coreul web - aflat in directorul web-inf; sursele java sunt lasate pe dinafara; ele nu sunt necesare in arhiva care va fi deployata pe un server web.
La fel ca la targetul compile-servlets, acesta trebuie utilizat impreuna cu init; acesta este un sablon de creare a targeturilor destul de robust, deoarece obliga programatorul sa apeleze init, clean, prepare, war, ceea ce face ca posibile probleme si intarzieri de dezvoltare datorate unor greseli precum necompilarea surselor, sau pur si simplu neadaugarea unui fisier de configurare unde trebuie, sau folosirea unui director de binare invechit - cu niste binare in neconcordanta cu sursele, sa fie complet eliminate, asigurand un mediu de lucru in care programatorul se poate concentra pe ce are de facut - programare, si nu pe probleme de configurare a spatiului de lucru.

In final, iata si un target care reuneste toti pasii descrisi mai sus :
< target name="rebuild" depends="clean,prepare,compile-servlets,war" description="Rebuild project,deploy war archive" />

Init este apelat implicit de clean; prepare nu va mai apela clean, pentru ca a mai fost apelat de clean.

Pentru un exemplu de aplicatie web Struts2 cu un fisier ant - build.xml complet, reunind tot ce este descris in acest fragment vizitati http://interfeteweb.ro/Products.aspx .

In urmatoarea interventie, voi descrie cum sa integram cu aplicatia Struts 2 o librarie de ajax foarte usor de folosit : ajaxanywhere.

luni, 12 ianuarie 2009

SmartWebGadgets

Site-ul http://www.smartwebgadgets.com/ ofera o lista de gadget-uri web gratuite care pot fi instalate in aplicatii web.
Nu trebuie decat sa alegeti un gadget de pe site, sa copiati cateva linii
de cod javascript in aplicatia voastra si gadget-ul va aparea in pagina web dorita.

Spre exemplu, Build Page Ranks Tool Smart Web Gadget ofera informatii
SEO despre orice site (numarul de linkuri ale site-ului indexate in motoarele
de cautare, pozitia site-ului in Google etc).



Pentru acest gadget codul poate fi luat de la:
http://www.smartwebgadgets.com/get-gadgets.php?id=7

De asemenea, puteti lua un gadget customizat conform specificatiilor personale dar contra cost.

Microsoft Silverlight

Silverlight este o implementare a .NET Framework care permite crearea de aplicatii web interactive folosind Visual C# sau Visual Basic.
Silverlight permite folosirea Visual Studio pentru codare si Microsoft
Expression Blend pentru prezentare si design grafic.

Combina mai multe tehnologii intr-o singura platforma si are urmatoarele trasaturi:
- se bazeaza pe tehnologia WPF (Windows Presentation Foundation) care extinde elementele din browser pentru crearea de elemente grafice interactive, animatii, media si XAML (Extensible Application Markup Language) care ofera o sintaxa de marcare pentru crearea de elemente. Spre exemplu, obiectul TextBlock este un element care afiseaza text intr-o aplicatie Silverlight.
- are suport cross-browser, cross-platform. Puteti dezvolta aplicatia cu Silverlight fara a tine cont de browser-ul sau platforma utilizatorlor.
- ofera suport pentru HTTP peste TCP. Se poate conecta la servicii ASP.NET AJAX, WCF, SOAP. Silverlight poate accesa servicii web direct sau folosind un proxy generat de metadatele publicate de serviciul web. Poate intelege o varietate de formate de date folosite de servicii:XML, JSON, RSS si Atom.
- include LINQ(language-integrated query), pentru accesul la date folosind o sintaxa nativa intuitiva in limbaje .NET Framework.

Aplicatiile Silverlight ruleaza in browser. Pentru a rula aplicatia, browser-ul trebuie sa aibe instalat un plug-in. In cazul in care utilizatorii nu au plug-in-ul sunt intrebati automat daca vor sa il instaleze.

Daca va intereseaza sa folositi Silverlight pentru reclame, puteti citi mai multe detalii aici :
http://www.microsoft.com/downloads/details.aspx?FamilyID=5f4e50ec-3923-49f5-9718-bfbcff3c2325&DisplayLang=en

Pe site-ul http://blogs.msdn.com/silverlight_sdk/ este publicat codul sursa pentru Silverlight runtime si SDK controls.

Silverlight poate fi downloadat de la adresa :
http://silverlight.net/GetStarted/

DotNetBar

DotNetBar este o componenta .NET si contine un set de controale pentru crearea de interfete grafice profesionale pentru aplicatiile .NET Windows Forms.

Ultima versiune de DotNetBar contine 44 controale pentru crearea de meniuri, panel-uri, toolbar-uri si taburi dockable. La aceasta adresa gasiti descrierea tuturor controalelor:
http://www.devcomponents.com/dotnetbar/

DotNetBar este scris in C# si se integreaza perfect in Visual Studio.NET 2008.

Pe site-ul http://www.devcomponents.com/dotnetbar/movies.aspx gasiti foarte multe tutoriale video care va arata cum sa creati aplicatii simple cu DotNetBar.
De asemenea, pe site-ul nostru http://www.interfeteweb.ro/ , la sectiunea Produse, puteti descarca o aplicatie care foloseste DotNetBar.

De aici puteti downloada ultima versiune trial a DotNetBar :http://www.devcomponents.com/dotnetbar/download.aspx .

Pentru a instala DotNetBar este nevoie sa aveti instalat Visual Studio.NET 2002, Visual Studio.NET 2003, Visual Studio.NET 2005 sau Visual Studio.NET 2008.

miercuri, 7 ianuarie 2009

Struts2 Setup – Ghid rapid de utilizare (Getting started with Struts 2 / Struts 2 fast setup guide)

Mai intai, downloadati o distributie de la http://struts.apache.org/download

Ce se gaseste in arhiva
Struts 2 este un framework java, deci un set de jar-uri.

1 Jar-urile
Unde gasim jar-urile? In directorul WEB-INF/lib.

Extrageti ce este in arhiva, si veti gasi un director apps care contine aplicatiile sample. Pentru a construi cea mai simpla aplicatie struts va fi nevoie doar de jar-urile folosite de aplicatia struts2-blank. Redenumiti fisierul struts2-blank.war astfel incat sa aiba extensia zip, extrageti continutul si veti gasi jar-urile ce compun frameworkul struts 2 in directorul WEB-INF\lib al arhivei tocmai extrase.

2 Xml-urile.
In interiorul directorului WEB-INF\src veti gasi in afara de sursele java, niste fisiere xml (struts.xml si example.xml).
struts.xml este fisierul unde ar trebui centralizate toate linkurile aplicatiei.
Asadar, in loc sa aveti asa ceva in multe locuri in pagini diferite, si anume
calea directa catre resursa :
< a href="/WEB-INF/resources/mypictures/pictureofme.html">My picture< / a >
veti avea asa ceva :
< a href="/pictures/gotomypicture.xhtml">My picture < /a >
calea catre “actiunea” struts.

In struts.xml trebuie sa se regaseasca ceva cam asa :

< ?xml version="1.0" encoding="UTF-8" ?>
< !DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
< struts>
< constant name="struts.action.extension" value="xhtml/">
< package name="default " namespace="/" extends="struts-default">

< action name="gotomypicture" class="mypackage.MyClass" method="aMethod">
< result name="success">/WEB-INF/resources/mypicture/pictureofme.html< /result>
< /action>
< /package>
< /struts>


Ce inseamna asta mai concret, este ca atunci cand linkul este accesat se cauta o actiune cu acelasi nume in struts.xml, este apelat codul metodei aMethod din clasa mypackage.MyClass; daca metoda intoarce stringul “succcess”, pagina va fi directata catre resursa pictureofme.html. Asadar, inainte de a schimba ceva prin click pe un buton sau un link, se poate executa ceva din logica aplicatiei, precum verificari de drepturi sau incarcari de tabele etc. Plus, totul este centralizat intr-un singur fisier.

3 Sursele
Sursele devin actiuni Struts 2 daca extind clasa ActionSupport. Pentru fiecare actiune ceva.xhtml, trebuie sa existe o metoda, intr-o clasa care extinde ActionSupport care sa fie apelata si in functie de ce returneaza sa se directeze spre o resursa sau alta.
In pachetul src exista exemplul standard.

In urmatoarea interventie vom analiza cum se poate integra rapid o aplicatie simpla Struts 2 cu Eclipse si Apache Ant.