Google Website Translator Gadget

domingo, 16 de diciembre de 2012

Software en català: Notepad++

Notepad++ es un editor de codi lliure i que suporta un munt de llenguatges (Java, C++, Cobol,...) de manera que facilita molt la edició de codi font.

Està pensat per entorn MS Windows i utilitza la llicència GPL License.


Aquest SW permet, i detecta durant la instal·lació, la edició i visualització de totes les comandes en català.




jueves, 6 de diciembre de 2012

Les 25 pitjors password del 2012

Les que son les 25 pitjors passwords, es a dir les mes utilitzades, recollides per SplashData(@splashdata ) i que han publicat a un video a  http://mashable.com

1. password (Unchanged)
2. 123456 (Unchanged)
3. 12345678 (Unchanged)
4. abc123 (Up 1)
5. qwerty (Down 1)
6. monkey (Unchanged)
7. letmein (Up 1)
8. dragon (Up 2)
9. 111111 (Up 3)
10. baseball (Up 1)
Interesant veure i guardar... per a no utilitzar mai de la vida!


Enllaços relacionats:
http://gizmodo.com/5954372/the-25-most-popular-passwords-of-2012

miércoles, 5 de diciembre de 2012

Security: Quant valen les teves dades robades?

Hacker image
courtesy of hyena reality / FreeDigitalPhotos.net

Quan valen les dades robades?

Quan es parla de robatori de dades, obviament es per a treure un benefici econòmic, si no de que valdria tot aquest esforç en saltar les barreres de seguretat?

Una bona mostra de com es valora aquesta informació la trobem en aquest report molt gràfic amb algunes dades interessants:

1-10 USD una tarjeta de crèdit.
8 USD     1.000 credencials de Hotmail o Yahoo.





Enllaços relacionats:
http://georgykfoury.files.wordpress.com/2012/08/how-much-is-your-data-worth-01.jpg

miércoles, 14 de noviembre de 2012

Java 7: SortSet implementation and example

Un cop revisat les diferents funcionalitats i implementacions de les Collections i els SortSet (veure entrada Collections i sortset ) i presa la decisió de implementar un SortSet voldràs veure un exemple.
Habitualment els exemples que es troben a Internet son exemples trivials amb tipus natius (int, char, ...).
Si treballes amb objectes complexos cal tenir en compte els següents detalls.

AccióExample
La classe ha de implementar Comparableclass P0102UsuariDetail
implements Comparable <P0102UsuariDetail>
El procediment ha de retornar un int
public int compareTo(P0102UsuariDetail pUsuari)
{
int result = UsuariID.compareTo(pUsuari.UsuariID);
return result;
}
Ja es pot declarar la el SortSetprivate TreeSet <P0102UsuariDetail> P0102Llista
=new TreeSet<P0102UsuariDetail>();
I utilitzar les funcions heredadesusuariP02 = new P0102UsuariDetail(); ...
P02Llista
.add(usuariP02);

Que pasa si intentes utilitzar les funcions i no hi ha un compareTo?
Per defecte si no hi ha la funció de comparació (compareTo) obtindrás un error: ClassCastException
 definit com a:
ClassCastException - if the specified object's type prevents it from being compared to this object.


Informació addicional:
http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html


martes, 13 de noviembre de 2012

Xarxes Socials: Com menjar un donut

Via Neus Arques i el seu article www.neusarques.com: Como comerse un donut en las redes sociales he trobat el interessant article de raventools.com: Social media and the art of being interested
que resumeix a la perfecció les diferents formes en que funcionen les xarxes socials.

Ara ja puc explicar als meus pares com funciona Internet :-)

lunes, 12 de noviembre de 2012

Oracle i Java: Com programar commit i rollback

www.oracle.com

Commit i Rollback amb Oracle i Java

Quan programes aplicacions i tens informació a grabar en diverses taules et cal tractar totes les sentències SQL com a un única transacció per a mantenir la integritat de la informació.
Per exemple: Si actualitzes la informació de la venda, i del stock disponible, han de ser efectuades al mateix temps.
La transacció es un conjunt de execucions que es tracten de manera única de manera que totes les instruccions son confirmades o denegades de manera conjunta.

Pas 1: Desactivar el auto commit.
Per defecte totes les instruccions es tracten com transaccions individuals, per tant cal desactivar-ho amb la instrucció:
con.setAutoCommit(false);


Pas 2: Activació manual de commit.
Un cop desactivat les instruccions SQL només seran confirmades si explicitament invoquem el mètode commit.
conn.commit();


Pas 3: Activació manual de rollback.
Si per alguna raó hi ha una incidència es pot evitar la grabació del tots els registres amb la instrucció rollback:
conn.rollback();


Enllaços relacionats:
http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html

domingo, 11 de noviembre de 2012

Mapping de Oracle SQL a Java Types

Java logo
java.com
www.oracle.com
Al desenvolupar una aplicació tindràs dubtes de quin mapping fer entre Oracle i Java.
Aquest es el mapping que he utilitzat amb Oracle XE 11g2 i Java 7.

Mapping Oracle - Java

JavaJDBCOracle 11.2Java to SQLOracle DB to Java
byte (8-bit signed)
-128,+127
TINYINT (8-bit)
signed: -128, +127
or unsigned: 0, 255
NUMBERupdateByte(Column name, value)getByte("Column name")
short (16-bit)
-32768 , +32767
SMALLINTNUMBERgetShort("Column name")
int
(32-bit signed)
-2147483648 to 2147483647
INTEGER
32-bit signed
NUMBERgetInt("Column name")
float (32 bit)DECIMAL,
NUMERIC (*3)
NUMBERupdateFloat(Column name, value)getBigDecimal("Column name")
getFloat("Column name")
long (64-bit)BIGINTNUMBERgetLong("Column name")
double (64-bit)FLOAT
DOUBLE
NUMBER
booleanBITgetBoolean("Column name")
char
(16-bit Unicode)
StringVarchar2(nn)getString("Column name")
Timestamp
(*1,*2)
TimestampgetTimestamp("Column name")
Timestamp
(*1,*2)
TimestampgetDate("Column name")
-Fallarà-

Java Timestamp <- Java Date (Cast)
*1: Si es treballa amb molta precisió (nanosegons) es millor revisar el link de Oracle per tal de assegurar les conversions.
*2: Amb Java7 hi ha algunes diferències però estic buscant la documentació oficial.
*3: JDBC requires that all DECIMAL and NUMERIC types support both a precision and a scale of at least 15. Example: "12.345" has a precision of 5 and a scale of 3
NUMERIC (12,4) types representes with exactly the specified precision
DECIMAL (12,4) types allows an implementation to add additional precision beyond that specified

Source font:
Oracle: JDBC Developer's Guide (Actualitzat a la versió 11.2)
Java: Primitive datatypes: Aqui trobaràs els formats primitius de Java
http://docs.oracle.com/javase/6/docs/technotes/guides/jdbc/getstart/mapping.html#996857
http://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/getstart/mapping.html

viernes, 9 de noviembre de 2012

BLAT Command-line SMTP

BLAT.EXE es un dels programes més antics, en funcionament des de 1998,  i utilitzats per a enviament de logs a bústies de mail des de scripts Windows i amb llicència Public Domain.
No conec cap administrador de sistemes que no l'hagi utilitzat en algun script, i entre altres coses l'he utilitzat per a verificar funcionament de servidors SMTP.

Es un programa fiable i molt útil que es pot descarregar des de http://sourceforge.net/projects/blat

Disposa encara de la pàgina web original: http://www.blat.net/  però des del 2003 es va moure a sourceforge.net


En aquests moments va per al versió 3.0.7 publicada el

Exemple de crida
blat.exe "file_with_body_text.txt" -server smtp.server.com -f noreply@mydomain.com -subject "subject text" -to receiver@domain.com


Change Log
3.0.7
[-] Removed a line of debug code that printed command line arguments to the
    screen, always.
-------------------------------------------------------------------------------
3.0.6
[+] Added error messages for attachment problems.  These include: no file was
    found for a given search string, a name that matches the search string does
    not appear to be an actual file, a file that is larger than 4 GB, a file
    that cannot be opened, and a file that cannot be read.  These extra
    messages should help people understand why their attachment(s) did not get
    sent, or why Blat exits with error code 12.
[+] Add more intelligence for checking UTF-8 byte sequences when the UTF-8 Byte
    Order Marker (BOM) is not present.  This helps reduce the likelihood of
    incorrectly marking the charset as "UTF-8" or not.
[-] Forgot to properly set charset= in headers when Blat determines the message
    body is UTF/Unicode.  Blat will now set charset= to UTF-8/UTF-7 as needed.
[-] Fixed options file parsing that I broke in 3.0.5, trying to support UTF-8
    and Unicode files that may not have a BOM.

jueves, 8 de noviembre de 2012

Transferències bancaries: Format del fitxer

a l'hora de transferir fitxers a entitats bancàries cal acordar un format a seguir.
En el cas d'Espanya aquest format està definit per l'Associació Espanyola de Banca (www.aebanca.es), en coordinació amb la CeCa (Confederació Espanyola de Caixes de Estalvis), el Tesoro de Espanya (www.tesoro.es) i a nivell Europeu amb SEPA (Single Euro Payments Area).

Com a guia s'han editat diversos documents que detallen els requisits tècnics a seguir:

martes, 6 de noviembre de 2012

Encriptación nativa en Windows 7

Windows 7 logo
http://windows.microsoft.com/

Encriptación nativa en Windows 7

He trobat un article fàcil de llegir, escrit per Juan Carlos Rodríguez Rico (Responsable S21sec university), de com encriptar les carpetes en Windows de manera nativa.



Article de lectura recomanada i que dona respostes clares a preguntes interessants:
  • ¿Están realmente cifrados los archivos?
  • Si copiamos uno de estos archivos a un pendrive o lo enviamos por correo electrónico, ¿el archivo se copia o envía cifrado?
  • ¿Cómo podrá entonces descifrarlo su destinatario?


Enllaços relacionats:
http://acc.icfs.uam.es/como-proteger-informaci%C3%B3n-mediante-efs

domingo, 4 de noviembre de 2012

How to get the Java Types from a SQL Type

The Java driver maps by default to BigDecimal, even if a column is defined as NUMBER(15) (which could be mapped to BigInteger)


What could you do to know the mapped Class?


Do a getObject() on the column and check the class.


ResultSet rs = statement.executeQuery("select column from table");
if (rs.next())
{
  Object o = rs.getObject(1);
  System.out.println("Class: " + o.getClass().getName());
}



viernes, 2 de noviembre de 2012

Struts2: The default expression... not match a property

Al programar una pàgina JSP per a Struts2 pots cometre alguns errors que només apareixen als logs.

Un d'aquests errors que apareixen al log es el següent:
07:17:41,632 WARN org.apache.struts2.util.TextProviderHelper.warn:56 - The default value expression 'Example:Field required.' was evaluated and did not match a property. The literal value 'Example:Field required.' will be used.

Veiem un exemple del codi JSP que genera el error:
<s:text name="property_code_800" />:<s:text name="peticiocarpeta.origPath" />


Que està passant aqui?
A la pàgina es mostrarà el text literal correcte, malgrat això hi ha un error amagat i està produït per l'ús incorrecte de la instrucció <s:text name="peticiocarpeta.origPath" />

Aquesta instrucció demana un literal que serà localitzat en el fitxer de properties, com en el cas del property_code_800
El literal peticiocarpeat.origPath no es pot trobar ja que el que està realment rebent es el text substituït.

Solució:
Si el que vols es emetre un text que prové d'un Bean cal utilitzar la instrucció: <s:property

<s:text name="property_code_800" />:<s:property value="peticiocarpeta.origPath" />




Informació addicional:
http://struts.apache.org/2.3.4/docs/text.html
http://struts.apache.org/2.3.4/docs/property.html

miércoles, 31 de octubre de 2012

Struts2: Avaluació d'objecte null

Al programar amb Struts2 et pots trobar en la necessitat de generar una part del codi JSP només quan el objecte encara no esta instanciat.



Com funciona? Millor mirem-ho amb un exemple:

<s:if test="%{peticiocarpeta==null || peticiocarpeta.origPath==""}">
... do something

</s:if>

Suposem que peticiocarpeta es el meu objecte Bean i que origPath es un dels camps que vull avaluar.
Amb la primera condició verifico si l'objecte ha estat instanciat en algun moment.
amb la segona condició verifico si un camp concret està o no buit.

miércoles, 24 de octubre de 2012

Struts2: Avaluació condicional composada

Al programar amb Struts2 et pots trobar en la necessitat de generar una part del codi JSP en funció de uns resultats.



Com funciona la combinació de expresions? Millor mirem-ho amb un exemple:

<s:if test="%{peticiocarpeta==null || peticiocarpeta.origPath==""}">
... do something

</s:if>

si volem afegir un else només cal continuar amb <s:else></s:else>
<s:else>
...do something alternative ...

</s:else>

Punts a tenir en compte:
- El condicional OR es igual que en Java ||.
- Cal tancar el if (</s:if>) abans de afegir el else (<s:else></s:else>).

Més informació i exemples interessants:
Struts2: Why won't the 'if' tag evaluate a one char string
aoiblog.com: struts2 if else elseif

domingo, 21 de octubre de 2012

Struts2: tag.getValidators("${tagName}") error

During the execution (and if you have the debug mode activate) you are getting an error similar to:


----------
==> list tag.getValidators("${tagName}") as validator [on line 46, column 9 in template/xhtml/form-close-validate.ftl]
in include "/${parameters.templateDir}/xhtml/form-close-validate.ftl" [on line 25, column 1 in template/xhtml/form-close.ftl]
----------
...several lines...
Caused by: java.lang.NullPointerException
......
I've tried to found the real cause unsucessfully but finally I've follow the next steps to solve the issue:
The -validation.xml file is with the .java class 
s
The message in the -validation.xml file is properly set ${getText("800_u01ra_error_001")}
My solution has been:
remove validate="true" from the form
s:form action="Peticio01pas1"
 method="post" name="selectfile">

For complete information about struts2 validation you could visit the following link:
http://struts.apache.org/2.3.4.1/docs/validation.html

sábado, 20 de octubre de 2012

Struts2: Ubicació dels DTD

Struts2 fa ús de DTD i per defecte els fitxers els carrega via http des de

Si no tens connexió a Internet perque el teu servidor esta a una xarxa interna i aillada els pots descarregar i utilitzar localment.

http://struts.apache.org/dtds/


viernes, 19 de octubre de 2012

Tipografía Anna

La tipografia Anna te una bonica història al darrere.

És una tipografia en format digital dissenyada per Anna Vives http://www.annavives.com/ , una noia amb la síndrome de Down que ha dedicat l’any 2012 a acostar-se al món de la lletra, treballant la lectura i l’escriptura.

Es adient per a ús de textes informals i fins i tot el FC Barcelona està estudiant la possiblitat d'incorporar-ho a la samarreta del primer equip.

Es d'ús gratuït pels particulars. Es pot descarregar a:
http://www.annavives.com/?page_id=519‎

Pots llegir més de la història a: http://www.lavanguardia.com/vida/20121001/54351286942/letras-sindrome-down-camiseta-barca.html

jueves, 18 de octubre de 2012

Java Tutorials from Oracle

Oracle proporciona una amplia documentació general sobre Java, a més de Training especifics.

La documentació general la pots trobar a http://docs.oracle.com/javase/tutorial/index.html i des d'aqui vas baixant als diferents apartats.


Un dels links més útils al començar es Learning the Java Language (http://docs.oracle.com/javase/tutorial/java/index.html)

martes, 16 de octubre de 2012

Blogger: Si vols utilitzar AdSense... no diguis: idioma català

www.blogger.com
Quan crees un blog a Blogger pots especificar en quin idioma estan escrits els teus posts.

Ho pots fer a la opció de:
Configuració / Idioma i format
Ara bé, si vols activar AdSense des de dins de blogger t'ha de sortir una opció: Guanys ("Earnings")

Curiosament si especifiques idioma català, aquesta opció no apareix
Pots consultar els idiomes acceptats a la pàgina de Google AdSense: AdSense languages
Per a solventar-ho pots modificar l'idioma a un que si accepti AdSense (italià o anglès per exemple)  i ja apareix la opció.

Nota: No utilitzar el idioma correctament pot implicar la suspensió / cancel·lació del compte AdSense

lunes, 24 de septiembre de 2012

Strust2 Error: Dispatcher initialization failed

Estas programant tranquil·lament quan de cop obtens algun d'aquests errors al inicialitzar el servidor:

ERROR org.apache.struts2.dispatcher.Dispatcher.error
Dispatcher initialization failed
Unable to load configuration. - action -



Segueix aquests passos:
  1. Revisa si has renombrat alguna clase. Es posible que el servidor estigues arrencat?
  2. Si es així revisa el fitxer struts.xml i verifica que les actions tenen el nom de la classe actualitzada.
  3. Revisa el fitxer de errors. Hauries de trobar una referència a la classe que la fa fallar.
  4. Si has corregit tots els errors anteriors i continua fallant es possible que el servidor estigues arrencat quan vas fer el renombrat de la classe. Tanca Eclipse i torna-ho a arrencar.

Seguint aquests passos t'hauria de funcionar de nou.... Sort!


Verificat amb:
Eclipse + struts 2.3.4 + Tomcat 7.0.29

miércoles, 19 de septiembre de 2012

Struts2: sx:autocompleter Unknow tag error

Al programar amb Struts2 pots fer ús d'una meravellosa llibreria i tags per a fer funcions AJAX.

Un d'aquests tags es sx:autocompleter que permet crear combo-box que es s'omplen amb les dades que carregues des de la base de dades i permet fer "suggeriments".

Més clar?
Una imatge!


Per a programar et pot sorprendre un error: Unknown tag (sx:autocompleter).


Verifica que tens al JSP la següent capçelera:
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>

I que a la llibreria tens els .jar requerits: struts2-dojo-plugin-2.3.4.jar

Verificat amb: struts 2.3.4 i Eclipse Juno

Enllaços relacionats:
http://struts.apache.org/2.3.4/docs/autocompleter.html

miércoles, 12 de septiembre de 2012

Eclipse: com esborrar registres de una Database

Quan estas programant amb accés a Bases de Dades (Databases) vols fer proves i de vegades cal esborrar registres de les taules.

Eclipse (un entorn fantàstic que pots descarregar des de http://www.eclipse.org/) integra la Database i pots operar directament contra les taules des de un entorn gràfic.


Afegeix, si no la tens ja, la vista "Data Source Explorer"
Vés a la opció DataSource Explorer:
Data \ Edit 
La taula queda disponible per a ser editada...
Selecciona el registre i esborra amb "Delete"

Espero que et serveixi!


martes, 11 de septiembre de 2012

Eclipse: Com editar sentències SQL

Quan programes tard o d'hora et cal accedir a la Base de Dades.

Eclipse (http://www.eclipse.org/) proporciona un entorn on poder editar sentències SQL contra la Base de dades directament.

Segueix aquests passos:
Afegeix, si no la tens ja, la vista "Data Source Explorer"
Vés a la opció "Open scrapbook to edit SQL statments".

Això obrirà un editor amb informació de la connexió.

Qualsevol instrucció la pots seleccionar per a executar individualment (Alt+X) o executar el conjunt de totes les instruccions (CTRl+Alt+X).


lunes, 10 de septiembre de 2012

Filezilla FTP: Configuració per a FTP a través de proxy.

Quan s'està fent transferències masives dins d'un entorn corporatiu amb proxy, es normal que es vulgui provar amb un client "friendly" i a més sense cost.
Filezilla omple aquest buit amb un client amigable i ben provat que només hauràs de configurar per a funcionar amb el teu entorn proxy.
A més a més, tens altres avantatges:
  • es un client multi idioma disponible en prop de 30 llengües diferents. Entre elles el català.
  • Permet diversos protocols: FTP, FTPS and SFTP
  • Fitxers > 4Gb
  • etc... 

configuració del FTP a través de proxy

 seguint aquests passos:
Vés a Edita \ Paràmetres...
A la opció:
Connexió \ Servidor intermediari FTP
trobaràs una configuració per defecte:
USER %u@%h %s
PASS %p

ACCT %w

On cada paràmetre significa:
%u: Nom usuari (FTP)
%h: Host FTP
%s: Usuari (proxy)
%p: Password (FTP)
%w: Password (proxy)
Només hauràs de canviar:
servidor proxy:proxy.group.com:8079
Usuari:Domain\user
Password:Domain_password

Això ha estat provat amb la versió 3.3.4.1. La actual (2012) es la 3.5.3

Pots consultar com fer això mateix en un MS-DOS batch a la meva entrada: la sopa de FTP, proxy i BAT


domingo, 9 de septiembre de 2012

El equip de VirusTotal marxa a Google

El passat divendres Bernardo Quintero (@bquintero) va publicar un post  http://unaaldia.hispasec.com/2012/09/mi-ultima-una-al-dia-gracias-y-hasta.html acomiadant-se de la llista una-al-dia i comunicant la adquisició de VirusTotal per part de Google (http://blog.virustotal.com/2012/09/an-update-from-virustotal.html).

Una-al-dia es la llista de seguretat que he seguit, pràcticament des de el seu inici, estigués on estigués. La vaig seguir per mail, per RSS, per Twitter i té la especial característica de fer amena la informació.

Que l'equip de VirusTotal marxi, es una mala notícia per a la llista, i una molt bona per a ells.

El post es especialment motivador per aquells que estem inmersos en el món de IS, que volem crear coses contra tot pronòstic en contra  i especialment els que vivim en l'apartat de seguretat.

Felicitats per a ells!

sábado, 8 de septiembre de 2012

Twitter: Com a afegir un botó per a publicar en Twitter

Els teus post volen estar a Twitter. Segur!
Tothom vol estar a Twitter avui.
Fins i tot el teu avi també.... :-)

Visita la pàgina web de Twitter.

Twitter publica tot el que necessites i accessible de forma ràpida.
https://dev.twitter.com/docs/twitter-for-websites
Selecciona la opció:
"Create a button for your website"
Pots escollir diverses opcions:

- Comparteix un enllaç
- Segueix al propietari: "Follow @twitter"
- Compartir un  Hashtag
- Tuiteja un esment del propietari
En funció de la opció et genera diverses opcions i el codi a copiar
tindràs un codi semblant al següent<a class="twitter-share-button"
data-hashtags="anewIShope"
data-lang="ca"
data-via="ReadAndJump" href="https://twitter.com/share">Tuiteja</a>
<script>!function(d,s,id)
{var js,fjs=d.getElementsByTagName(s)[0];
 if(!d.getElementById(id))
 {js=d.createElement(s);js.id=id;
  js.src="//platform.twitter.com/widgets.js";
  fjs.parentNode.insertBefore(js,fjs);
 }
}(document,"script","twitter-wjs");
</script>
Ara tornes a Blogger i al apartat de Format i selecciones "Afegir un gadget"
I busca el gadget de Blogger:
HTML/JavaScript


Ja el tens!!!!

jueves, 6 de septiembre de 2012

Twitter: Com afegir els post de twitter a blogger

Un dels temes que estan més de moda es afegir informació de Twitter a Blogger.

La veritat es que Twitter ja facilita de manera ràpida tot el que necessites:
Ves a la pàgina de Twitterhttps://twitter.com/about/resources/widgets
Configura el compte Twitter de on has de llegir
Modifica els colors per tal que encaixi amb el teu blog
Al final de la pàgina trobaràs 2 botons:
- Prova la configuració
- Finalitza i copia el codi
El codi ja està generat per Twitter.
Només cal copiar-ho on vulguis

(La opció de "Add to Blogger" no m'ha funcionat)
El pots copiar al Widget "HTML/JavaScript"
- Desa


i ja el tens !!!