Archivos Mensuales: octubre 2012

Cómo indexar tu blog de WordPress en google

Queridos bloggeros y bloggeras de los mundos de “WordPress con todo hecho”. Tu blog aparece en búsquedas de google, porque así lo indican las estadísticas de WordPress. Pero, ¿está indexado con google?  Aunque parezca que sí, en esta entrada se explica cómo comprobar y realizar la indexación con google. Los resultados que obtendrás entre otros, es mejor indexación en google y mejores estadísticas desde la herramienta de google webmaster. ¿Te interesa?

1º paso: tienes una cuenta google, ¿no? Entramos en google web master tools:

https://www.google.com/webmasters/

2º Entrar en las herramientas: Aparecerá nuestro listado de web que ya han sido verificadas por google y/o cree google que son nuestras pero están sin verificar y/o tienes que añadir a mano. Vamos a añadir un nuevo sitio, como se ve en la primera imagen y observaremos que aparece en el listado (2º imagen).

 

añadir nuevo sitio

 

 

 

3º Proseguimos a verificarlas pulsando sobre el enlace “Verifica la propiedad de este sitio” y llegamos a la siguiente pantalla. Pulsamos sobre la pestaña “Métodos alternativos” para acceder a otras alternativas de indexar con google.

4ºSeleccionamos la opción de “Etiqueta HTML” y copiamos el contenido del campo de texto que aparece.

5º Nos vamos a nuestro blog. En concreto a las “Herramientas” -> “Herramientas disponibles”.

6º Pegamos la etiqueta HTML en el cuadro de Google Web Master tools. Pulsamos sobre guardar cambios.

7º Volver a google webmaster que aparece en el paso 3º y pulsar en “verificar”.

¿Funciona? ¿Y qué hemos conseguido? La siguiente imagen muestra el estado de indexación.

¿Diferencias? prueba a buscar el nombre de tu blog en google.

Espero que haya sido de utilidad!

Anuncios

Ejemplo JTabbedPane Java

Ejemplo de comandos básicos de JTabbedPane en Java.  Vamos a desactivar una pestaña de una JTabbedPane en función de su contenido y no en función del índice de las pestañas. Después activaremos y mostraremos esa pestaña junto con su contenido

 

Imaginemos que tenemos la siguiente ficha de la imagen.

Esta ficha ha sido elaborada por medio de las herramientas de Netbeans de diseño de interfaz y que ahora no pretendo entrar en detalle.
Simplificando esta imagen, vamos a considerar sólo dos pestañas (Datos económicos y materiales). Los componentes están inicializados:

pnlEconomicData = new es.diaple.fw.PanelAuto();

pnlEconomicData.setLayout(null);

lblCurrency.setText(“Moneda local”);

pnlEconomicData.add(lblCurrency);

lblCurrency.setBounds(30, 30, 80, 14);

pnlEconomicData.add(cmbCurrency);

cmbCurrency.setBounds(120, 20, 130, 30);

tabbedPane1.addTab(“Datos económicos”, pnlEconomicData);

pnlCompaniesMaterials = new es.diaple.fw.PanelAuto();

jScrollPane1 = new javax.swing.JScrollPane();

tblCompaniesMaterials = new es.diaple.fw.Table();

pnlCompaniesMaterials.setLayout(new java.awt.BorderLayout());

tblCompaniesMaterials.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},

new String [] {

“Title 1”, “Title 2”, “Title 3”, “Title 4”

}

));

jScrollPane1.setViewportView(tblCompaniesMaterials);

pnlCompaniesMaterials.add(jScrollPane1, java.awt.BorderLayout.CENTER);

tabbedPane1.addTab(“Materiales”, pnlCompaniesMaterials);

 

Para desactivar una pestaña inicialmente:

tabbedPane1.setEnabledAt(tabbedPane1.indexOfComponent(pnlCompaniesMaterials),false);

Para reactivar una pestaña y marcarla como seleccionada en función del panel.

tabbedPane1.setEnabledAt(tabbedPane1.indexOfComponent(pnlCompaniesMaterials),true);

tabbedPane1.setSelectedIndex(tabbedPane1.indexOfComponent(pnlCompaniesMaterials));

tabbedPane1.setEnabledAt(tabbedPane1.indexOfComponent(pnlCompaniesMaterials),true);

tabbedPane1.setSelectedIndex(tabbedPane1.indexOfComponent(pnlCompaniesMaterials));

Moraleja antes de ir a dormir:

Estas funciones se pueden hacer directamente poniendo el índice que en esos momentos estamos visualizando. Ejemplo: tabbedPane1.setSelectedIndex(1).  Evitar utilizarlo de esta manera.  Siempre hay problemas de mantenimiento, como por ejemplo en caso de cambiar el orden de las pestañas, si añadimos una nueva pestaña, etc.

Shortcuts Netbeans / Trucos de escritura Netbeans

EXPLICACIÓN SECUENCIA RESULTADO
Cómo auto-insertar bloque try catch. try { } ca + <tab> try{

} catch (Exception ex) {
ErrorManager.showExceptionDialog(ex);
}

Cómo auto-insertar get & set Ctrl + Ins    -> Abre diálogo para auto insertar y selecciona get & set o sólo get, o sólo set. public x getX(){
return this.x;
}

public setX(X x){
this.x = x;
}

Cómo auto-insertar constructores Ctrl + Ins Seleccionamos constructores public nombreClase(){

}

Shortcut public pu +<tab> public
Shortcut nombre de clases TMC + <Control><space> TableModelColumn Si escribes las mayúsculas te busca los ficheros que coinciden dichas mayúsculas o tienen más a la derecha.
Shortcut throws th + <tab> throws
Shortcut exception Ex + <tab> Exception
Shortcut false fa + <tab> False
Shortcut interface in + <tab> interface
Shortcut private pr + <tab> private
Cómo auto-insertar bloque if if + <tab> if (true) {

}

Cómo modificar tablas a UTF8 MySQL

Imaginemos una aplicación con la base de datos de mysql. En ella editamos información por ejemplo, de usuarios.

Todo es bonito y precioso.

Hasta! que decides exportar información a csv, hacer un volcado de datos y exportarlo a otra base de datos… etc.

¿Por qué? ¡Se ven mal los acentos, ñññññ y muchos caracteres!

Si estás en este caso, es que tienes mezclados los charset. Familiarizate con COLLATION y CHARSET.

http://dev.mysql.com/doc/refman/5.0/es/charset-mysql.html

Es mejor que utilices por compatibilidad UTF8.

Mysql por defecto crea collation a ‘latin1_swedish_ci’. Para arreglar los datos deberás hacer lo siguiente:

Si lo haces desde consola:

  1. Modificar la tabla

ALTER TABLE `caracteristicas_subtipos`
COLLATE=’utf8_general_ci’;

  1. Exportar los datos por medio de inserts Hacer truncate de la tabla.
    • Mediante volcado mysqldump -p –default-character-set=utf8  base_de_datos tabla_a_modificar > tabla_a_modificar.sql
  2. Volcar los datos.
    • Mediante mysql -p base_de_datos < tabla_a_modificar.sql

Si lo haces desde una herramienta de mysql:

Cambia sólo la forma de obtener los datos. Exporta los datos a INSERTS. Haz un truncate de la tabla. Antes de volcar los inserts pon la sentencia:

set names utf8;

FAQ:

Se puede hacer aplicado a todo un esquema?: No, tendrás que hacerlo tabla por tabla. Si alguien lo ha conseguido que lo comente!! sería un gran descubrimiento!

Agradecimientos:

A @rcasas  que me enseñó estas cosas tan chulas.

Error al crear icono de escritorio desde el jnlp Java

La situación: Al ejecutar el jnlp, se auto-creaba un icono en el escritorio.
Ahora: En actualizaciones se borra el icono y/o al descargarlo e instalarlo también.
Solución encontrada: Desinstalar la versión 7 de java. Volver a ejecutar el jnlp y comprobar que arranca con la versión 6 de java. Así, funciona.

Este error que no he conseguido solucionar por ahora y que al equipo de desarrollo nos está llevado más de un quebradero de cabeza, se ha tomado la postura cómoda de pensar que el error es de java 7. Posiblemente habrán cambiado alguna opción de configuración del jnlp o algo se está haciendo mal pero es muy extraño que el mismo jnlp, tras la actualización de java 7, no funcione correctamente.

No he encontrado ni en blogs,  google, ni las páginas oficiales de Oracle una solución mejor.

Al menos es una solución… Se agradece cualquier comentario o ayuda!

Can’t create table (errno: 150)

Este error es tan típico, que una vez que se ya has sufrido estos fallos, se intentan evitar teniendo un poco de cuidado al crear las tablas. Muchos ya lo conocéis y hay mil páginas…. pero he querido completarlo con algún detalle! Ahí van!

  1. Opción:  Estás añadiendo una clave foránea cuyo tipo no coincide al tipo que hace referencia.

OJO! con INT(11) VS INT(10) : algunas herramientas que hacen de interfaz de bases de datos crean PRIMARY_KEY como INT(11) y el resto de campos de tipo numérico como INT(10).

OJO! con UNSIGNED. Si recibes código heredado y te estás volviendo loco puede que esté indicado como UNSIGNED.

OJO! que la clave foránea sea pueda ser NULL, no influye. Ejemplo:

`modified_by` INT(11) NULL DEFAULT NULL.

 

  1. Opción: Estás añadiendo una clave foránea y el campo al que estás haciendo referencia no existe con ese valor.

Es decir. Imaginemos que a la clave ‘modified_by’ lo tienes inicializado a 5. Te has dado cuenta que has añadido el campo, pero no has añadido la propiedad de que es una foreing key a la tabla de usuarios! Si luego al poner que modified_by es fk te sale este error, comprueba que el usuario 5 existe en la tabla de usuarios.

OJO! Cuando modifiques una tabla con un campo existente ‘modified_by’ que es nulo y pongas que la foreing key no puede ser nulo. Ejemplo:

`modified_by` INT(11) NOT NULL.

No te va a dejar modificar la tabla a no ser de que le pongas un valor inicializado y que sea correcto. Tendrás que actualizar el campo modified_by por un valor correcto y luego crear la tabla. (el mismo caso que antes, pero ahora con NULL).

 

  1. Opción: Si pones “On Delete Set Null” pero el campo está definido como NOT NULL.

OJO! Te contradices más que el programa electoral de Rajoy!

 

Ejemplo CASE MySQL

Sabemos la secuencia de la teoría. ¿Pero cómo manejamos una secuencia CASE con un tipo de dato ENUM como value?

CASE value

WHEN [compare-value]

THEN result [WHEN [compare-value] THEN result ...]

[ELSE result] END,

CASE WHEN [condition]

THEN result

[WHEN [condition]THEN result ...]

[ELSE result]

END

Adjunto un ejemplo de secuencia CASE en MySQL, ya que en su día cuando busqué, no encontré un ejemplo claro.

Primero vamos a suponer que tenemos la siguiente base de datos en MySQL centrándonos en los datos que importan: PK y ENUM.

catalog_filter_id —>  la clave (PK)
article_status —> tipo ENUM.
El resto son date, string, etc.

‘article_status’  que es de tipo ENUM está definido de la siguiente forma:

 

ENUM {‘all’,’operative’,’no_operative’}

 

Al ser un enum, article_status puede ser 1, 2, 3.

Si en lugar de 1, 2, 3 como resultado de la búsqueda queremos que devuelva  ‘Todos’, ‘En vigor’ y ‘Sin vigor’:

“En caso de ser 1 muestra ‘Todos’,

En caso de ser 2 muestra ‘En vigor’,

En caso de ser 3 muestra ‘Sin vigor'”

Entonces la secuencia con CASE queda:

SELECT

catalog_filter_id,

family_from,

family_to,

article_from,

article_to,

case article_status  when 1 then 'Todos'  when 2 then 'En vigor'  when 3 then 'Sin vigor'  end as article_status,

bu.name

FROM catalogs_filters cf  left join business_units bu on cf.business_unit_id=bu.business_unit_id


WHERE

cf.catalog_id = ? and

cf.deleted_date is null



Por si no se ve bien en la misma línea tenemos:

case article_status  
  when 1 then 'Todos'  
  when 2 then 'En vigor'  
  when 3 then 'Sin vigor'  
end as article_status

¿Qué conseguimos?

Que se muestren las cadenas ‘Todos’, ‘En vigor’ y ‘Sin vigor’ del CASE en lugar de los números ‘1’, ‘2’, ‘3’ de article_status.

Conclusión: Los ejemplos me liaban si la sentencia ‘case’ va con ‘end’, hay ‘;’ etc. Con este ejemplo si lo utilizas parecido… tiene que funcionar 😉

Fedback, comentarios, pegas, mejoras, compartir y vivir are welcome

Gracias!!