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..
lunedì 29 agosto 2011
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...
Etichette:
crawl-anywhere,
crawler,
solr
mercoledì 17 agosto 2011
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>
Etichette:
jboss7,
listening_any_address
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>
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>
<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>
Etichette:
jaas,
jboss7,
security_domains
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: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>
<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>
<?xml version='1.0' encoding='UTF-8'?>
<jboss-web>
<security-domain>giavaby</security-domain>
</jboss-web>
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>
<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>
<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...
Etichette:
jaas,
jboss7,
security_domains
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!
Etichette:
google_docs,
ubutntu
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
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/
http://code.google.com/p/mandubian-mvn/wiki/HowTo
http://code.google.com/p/mandubian-mvn/wiki/AvailableVersions
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...
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...
Etichette:
customize_main_menu,
lubuntu
Iscriviti a:
Post (Atom)