lunedì 29 agosto 2011

creare una sitemap senza troppo penare

Dopo aver girato e rigirato ho trovato un tool giavoso:

http://www.auditmypc.com/xml-sitemap.asp

Funziona e ci fa anche vedere gli url inesistenti!!

Da provare..

domenica 28 agosto 2011

come creare un motore di ricerca interno al sito...in google style

immaginate di avere un sito complesso, con tante sezioni e con tante fonti informative (tante tabelline con contenuti tipizzati) e una serie di pagine statiche da indicizzare..

Creare un meccanismo di ricerca globale, potrebbe essere una soluzione fattibile...ma utilizzare quello che si trova in giro, potrebbe essere + sensato!!

Consiglio (dopo averlo provato su macchina virtuale..):

In breve:
- necessita di apache, tomcat (per il crawler e motorino di ricerca), solr per indicizzazione dei contenuti e interfaccia per query.

Si installa facilmente...

Buona ricerca integrata!

links utili:
ajax + solr
tutorial solr:


esempio di commercializzazione del prodotto...

mercoledì 17 agosto 2011

jboss7 JSF error after AS6 to AS7 migration: java.lang.ClassNotFoundException: sun.util.calendar.ZoneInfo

vedi questo post:

http://community.jboss.org/thread/169938?tstart=0

jboss7: aggiungere le dipendenze nel manifest del war/jar con maven


come suggerito da Shane Bryzak,

nella seam-dev mailL:

per aggiungere jboss-logging in AS7 va aggiunto nel file manifest (META-INF/MANIFEST.MF) del ns war/jar:

Dependencies: org.jboss.logging,org.jboss.logmanager

E' possibile usare "manifestEntries" di maven per automatizzare la scrittura nel file:

<build>
<finalName>seam-university</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archive>
<manifestEntries>
<Dependencies>org.slf4j.impl,org.jboss.logging,org.jboss.logmanager</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>

lunedì 15 agosto 2011

jboss7: rendere il sever accessibile non solo da localhost


per fare ascoltare jboss7 non soltanto su 127.0.0.1:

http://community.jboss.org/thread/168789?tstart=120

ecco qui le modifiche da fare su standalone.xml:

<interfaces>
<interface name="management">
<inet-address value="127.0.0.1"/>
</interface>
<interface name="public">
<inet-address value="127.0.0.1"/>
</interface>

<!-- IPv4 -->
<interface name="any">
<any-ipv4-address/>
</interface>
</interfaces>

<!-- Use the any interface -->
<socket-binding-group name="standard-sockets" default-interface="any">
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jmx-connector-registry" port="1090"/>
<socket-binding name="jmx-connector-server" port="1091"/>
<socket-binding name="jndi" port="1099"/>
<socket-binding name="osgi-http" port="8090"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
</socket-binding-group>

jboss7: alziamo il livello del log a INFO

seguendo la guida:

https://docs.jboss.org/author/display/AS7/Logging+configuration


per visualizzare qualche info in +, alziamo il livello del log:

<subsystem xmlns="urn:jboss:domain:logging:1.1">
<console-handler name="CONSOLE" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.apache.tomcat.util.modeler">
<level name="WARN"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
</subsystem>

jboss7: domini sicurezza usando pagina login jsf

In jboss7 è possibile utilizzare una pagina jsf come pagina di login:

<login-config>
<auth-method>FORM</auth-method>
<realm-name>Login</realm-name>
<form-login-config>
<form-login-page>/login.jsf</form-login-page>
<form-error-page>/login.jsf</form-error-page>
</form-login-config>
</login-config>

jboss7: domini sicurezza usando database

Uno dei jaas "classici" è l'uso del database per autenticazione/autorizzazione.
istruzioni veloci per l'uso:

1) tabelle su database (schema ultra semplificato non consigliabile in produzione - usare 3 tabelle - utenti [id, username, pwd], ruoli[id, ruolo], utenti_ruoli[id, id_utente, id_ruolo]):
CREATE TABLE IF NOT EXISTS `user_auth` (
`USERNAME` varchar(100) NOT NULL DEFAULT '',
`PASSWORD` varchar(100) DEFAULT NULL,
`EMAIL` varchar(200) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (`USERNAME`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `user_role` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`ROLE_NAME` varchar(100) DEFAULT NULL,
`USERNAME` varchar(100) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=122 ;


2) inserire dei dati di prova (utente fiorenzino con pwd '12345678' e ruolo admin):
INSERT INTO `user_auth` (`USERNAME`, `PASSWORD`, `EMAIL`) VALUES
('fiorenzino', 'JdVa0oOqQAr0ZMdtcTwHrQ==', 'fiorenzino@gmail.com');

INSERT INTO `user_role` (`ROLE_NAME`, `USERNAME`) VALUES
('admin', 'fiorenzino');

3) creare un datasource nel file standalone.xml (si presume che ci sia già un modulo con i driver mysql):
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jndi-name="java:jboss/datasources/GiavaByDS" pool-name="GiavaByDS_Pool" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:mysql://localhost:3306/bygiava
</connection-url>
<driver-class>
com.mysql.jdbc.Driver
</driver-class>
<driver>
mysql
</driver>
<pool>
<min-pool-size>
2
</min-pool-size>
<max-pool-size>
30
</max-pool-size>
<prefill>
true
</prefill>
<use-strict-min>
false
</use-strict-min>
<flush-strategy>
FailingConnectionOnly
</flush-strategy>
</pool>
<security>
<user-name>
bygiava
</user-name>
<password>
bygiava
</password>
</security>
<validation>
<validate-on-match>
false
</validate-on-match>
<background-validation>
false
</background-validation>
<use-fast-fail>
false
</use-fast-fail>
</validation>
<statement>
<prepared-statement-cache-size>
100
</prepared-statement-cache-size>
<share-prepared-statements/>
</statement>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql"/>
</drivers>
</datasources>
</subsystem>

4) creare il dominio di sicurezza che valida username e pwd usando il datasource e carica i ruoli per l'utente loggato (in grassetto le query per verifica username/pwd e caricamento ruoli):


<subsystem xmlns="urn:jboss:domain:security:1.0">
<security-domains>
<security-domain name="giavaby">
<authentication>
<login-module code="Database" flag="required">
<module-option name="dsJndiName" value="java:jboss/datasources/GiavaByDS"/>
<module-option name="principalsQuery" value="select password from user_auth where username=?"/>
<module-option name="rolesQuery" value="SELECT B.ROLE_NAME,'Roles' FROM user_role as B where B.username = ?"/>
<module-option name="hashAlgorithm" value="MD5"/>
<module-option name="hashEncoding" value="BASE64"/>
</login-module>
</authentication>
</security-domain>
</security-domains>
</subsystem>

Notare come basta indicare code="Database", piuttosto che indicare la classe org.jboss.security.auth.spi.DatabaseServerLoginModule

5) creare un war con WEB-INF/web.xml contentente:


<security-constraint>
<web-resource-collection>
<web-resource-name>web autentication</web-resource-name>
<description>An example security config </description>
<url-pattern>/private/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>FORM</auth-method>
<realm-name>Login</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login.jsp</form-error-page>
</form-login-config>
</login-config>

<security-role>
<role-name>admin</role-name>
</security-role>


6) aggiungere il file WEB-INF/jboss-web.xml :


<?xml version='1.0' encoding='UTF-8'?>
<jboss-web>
<security-domain>giavaby</security-domain>
</jboss-web>


7) la pagina di login.jsp manda su pagina html contenente:

<form action="j_security_check" method="post"><br />
<label for="j_username">username:</label><br />
<input type="text" id="j_username" name="j_username" /> <br />
<br />
<br />
<label for="j_password">password:</label><br />
<input type="password" id="j_password" name="j_password" /> <br />
<br />
<input type="submit" value="accedi" />
</form>


8) provate ad accedere ad una risorsa nella cartella private/, verrete indirizzati alla pagina di login.

provare...

venerdì 12 agosto 2011

google docs in nautilus - ubuntu


scaricare http://code.google.com/p/nautilus-gdoc/downloads/list il file zippato:
nautilus-gdoc.tar.gz

estrarre il file SendToGDoc e copiarlo nella cartella .gnome2/nautilus-scripts contenuta nella propria home:
/home/{USER}/.gnome2/nautilus-scripts

installare le librerie python per google data:
sudo apt-get install python-gdata


aprire il file:
sudo vim /usr/share/pyshared/gdata/docs/service.py

ed aggiungere il tipo di files PDF ai SUPPORTED_FILETYPES (estratto dal file):

# File extensions of documents that are permitted to be uploaded.
SUPPORTED_FILETYPES = {
'CSV': 'text/csv',
'TSV': 'text/tab-separated-values',
'TAB': 'text/tab-separated-values',
'DOC': 'application/msword',
'ODS': 'application/x-vnd.oasis.opendocument.spreadsheet',
'ODT': 'application/vnd.oasis.opendocument.text',
'RTF': 'application/rtf',
'SXW': 'application/vnd.sun.xml.writer',
'TXT': 'text/plain',
'XLS': 'application/vnd.ms-excel',
'PPT': 'application/vnd.ms-powerpoint',
'PPS': 'application/vnd.ms-powerpoint',
'HTM': 'text/html',
'HTML' : 'text/html',
'PDF': 'application/pdf'}

a questo punto riavviare nautilus!

facendo tasto dx sul file da trasferire nella voce "script -> Send to Gdoc". come nella immagine allegata!


martedì 9 agosto 2011

lunedì 8 agosto 2011

java login oauth

http://blog.enterpriselab.ch/tdmarti/2011/04/06/openid-in-a-web-application-based-on-java-ee-and-jsf-2-0/

http://www.richardnichols.net/2010/06/implementing-facebook-oauth-2-0-authentication-in-java/


http://t-machine.org/index.php/2007/08/13/how-to-make-facebook-apps-using-java-part-2/


http://code.google.com/p/socialauth/source/checkout

http://www.9lessons.info/2011/07/login-with-google-account.html

http://www.9lessons.info/2011/02/login-with-facebook-and-twitter.html


lunedì 1 agosto 2011

Picasa Web Albums Data API maven

utilissimo per usare le api di google, nello specifico con picasa:

http://code.google.com/p/mandubian-mvn/wiki/HowTo

http://code.google.com/p/mandubian-mvn/wiki/AvailableVersions



mandubian-mvn
http://mandubian-mvn.googlecode.com/svn/trunk/mandubian-mvn/repository





com.google.api.client
google-api-client
1.4.1-beta



com.google.gdata
gdata-photos-2.0
1.41.5




http://rat86.netsons.org/blog/2008/05/creare-una-galleria-sul-proprio-sito-da-picasa-con-pwajs/

lubuntu - creare icone personalizzate su desktop e su menuù

utilissimo articolo:
http://wiki.lxde.org/en/Main_Menu


in ordine:
1) creare la cartella /usr/local/share/applications/
2) darle i diritti in scrittura per utente principale
3) creare in quella cartella un file col nome della app da linkare .desktop:
es: eclipse.desktop
4) avviare l'editor (al posto del gedit qui c'è leafpad)
leafpad /usr/local/share/applications/eclipse.desktop
5) incollare qualcosa tipo:

[Desktop Entry]
Encoding=UTF-8
Exec=/home/fiorenzo/java/eclipse/eclipse
Icon=/home/fiorenzo/java/eclipse/icon.xpm
Type=Application
Terminal=false
Name=Eclipse
GenericName=eclipse
StartupNotify=false
Categories=Development

il gioco è fatto!

a questo punto sarà visibile nel menu principale nella voce Programmazione (ho lubuntu italiana) e quindi si potrà aggiungere sia come icona sul desktop che sulla barra in basso...

lubuntu - creare icone personalizzate su desktop e su menu