Para los amantes de Java como yo, les tengo una buena noticia que me entere hace pocos dias, como ya todos saben ya salio la version estable de NetBeans 6 que la verdad se las recomiendo porque esta muy buena, en otro Post hablare mas detalle de los diferenctes IDES que podemos utilizar para JAVA.

Pero en fin, la buena noticia es que ya hay un plugin de Jasper Reports para NetBeans 6, para los que no sepan que es JasperReports es como Crystal Reports solo que totalmente hecho en Java, que anteriormente utilizaba un programa llamado iReport que era un IDE para hacer reportes con Jasper Reports pero le faltaba mucho en esa ocasion en que lo utilize,

Pero esta version esta brutal y se las recomiendo, en proximos post hablare un poco mas de esto.

Aqui esta el link por si lo quieren Bajar.

Plug in Jasper Reports para netbeans 6.

Saludos .

PD. Ya no mas pesadillas con iReport . yupii!!!!!!!

La incompatibilidad de los browser es muy comun hoy en dia, y para crear objetos HTML en el DOM a veces funciona de una manera en un explorador y de otra manera en otro, aqui hay claros ejemplos de esto y podemos ver como lo podriamos solucionar.

Por dar ejemplos yo hace poco necesitaba crear un objeto de TEXTAREA con varios atributos del mismo y en firefox funconaba muy bien pero en explorer no , y no me daba errores de javascript , simplemente no funcionaba, instale la web developer tool de iexplorer ( Que la verdad SUCKS, no se le compara a la de firefox) , y alli vi que si habia creado el TEXTAREA pero que no tenia ninguna propiedad y no sabia como crearselo, asi que investigando pude ver que mucha gente ha tenido este problema y hay una forma de solucionarlo que es muy simple y efectiva , que es hacerlo de la siguiente manera.

 


try {
title = document.createElement('');
} catch(err) {
var title = document.createElement('INPUT');
title.setAttribute('name', 'imagetitle[]');
}

 

Este ejemplo lo hice para un INPUT pero es lo mismo para un textarea , y podemos ver que esto lo dejamos dentro de un try y catch para que agarre el error en caso de fallar, entonces analicemoslo.

lo que esta dentro de try es para que funcione en Iexplorer y lo que esta dentro del catch funciona dentro de Firefox, el .setAttribute que se ve mas elegante y de una mejor manera no funciona en iexplorer y si uno desea definir todas las propiedades de la TAG hay que ponerselas como en la parte dentro del try.

Asi que alli tienen una solucion sencilla que les ahorrara mucho tiempo a la hora de realizar cosas como estas.

Si tienen alguna duda, o no les lleagara a funcionar pueden dejar un comentario y lo podemos discutir.

Saludos.

Manejar el DOM de las tablas en Firefox Javascript

Bueno como todos sabemos hay diferentes problemas de compatibilidad entre los diferentes exploradores y hoy en dia que la web esta de moda tenemos que hacer que todos nuestros scripts funcionen perfectamente en todos los exploradores aunque a veces nos saca de nuestras casillas pequenios problemas que nos encontramos en el camino.

Este es un ejemplo de esos problemas que nos encontramos , a veces nosotros tenemos una tabla con algun id especifico y en javascript queremos obtener una instancia de ese objeto de la tabla llamando un document.getElementById( ) y con esta simple llamada obtenemos el objeto y comenzamos a recorrer sus elementos TR y TD y demas…. , el problema es que firefox toma como elementos los espacios que dejamos entre las TAGS y ese es un gran problema que si uno esta comenzando en esto no lo ve facilmente, asi que la unica solucion que se encuentra por el momento, es no dejar espacios entre las TAGS que nosotros querramos recorrer porque si utilizamos los valores de previousSibling y nextSibling vamos a tener problemas con los espacios . Asi que lo mejor es hacer esto.

 

Hola

Por dar un ejemplo verdad, y asi nos sera mucho mas facil recorrer la tabla a placer y hacer lo que nosotros necesitemos.

Saludos.

El PageRank de Google….  ese preciado numerito que queremos que incremente para nuestro sitio :)    

En este post no ahondaré sobre el tema del PageRank, solamente quiero compartirles otra herramienta web que nos permite visualizar de una forma amigable y rápida cual es el valor de PageRank para cada uno de los links que tengamos en nuestras páginas web.  La herramienta es Visual Page Rank View, en está página solo debemos ingresar cual es la dirección de la queremos ver el Page Rank y nos mostrará algo como lo siguiente:

Visul Page Rank

Aquí les dejo el link Visual Page Rank View

Cuando tenemos una estrategia para generar visitas a nuestro sitio, que se basa en posicionarnos dentro de los primeros resultados para ciertas palabras clave en Google, es imprescindible que podamos analizar en que posición estamos apareciendo para poder saber si están siendo efectivas las mejoras que estamos realizando en nuestro sitio web.  Y eso lo podemos hacer fácilmente buscando las palabras clave en google y revisando en que páginas aparecemos, pero si no estamos dentro de los primeros diez restultados, esta tarea se vuelve tediosa, aburrida, y lo peor de todo es que nos quita mucho tiempo. 

Pero como diríamos en tipsdeaweb.. "no todo está perdido" , ya que que gracias a la  herramienta Free Monitor for Google (recomendada por  Iván ya hace varios meses), podemos monitorear en que posición de los resultados de google aparecemos para las búsquedas con las palabras clave que nosotros especifiquemos.

resultados de free monitor google

Como opciones nos permite llevar un registro por fecha de las posiciones en que hemos aparecido, cuanto hemos mejorado ( o empeorado :S).  En la imagen se puede ver la flechita verde que nos indica que se ha subido 2 posiciones.También podemos definir que tantos resultados va a analizar.  Por ejemplo, que busque solo dentro de los primeros 50 resultados. Definir el país de donde queremos usar el buscador de Google (Guatemala, España, México, etc).

Una herramienta bastante recomendable, aquí les dejo el link para la página de la descarga: Free Monitor for Google.

Como todos sabemos en cualquier formulario de HTML siempre necesitamos validar ciertos campos o condiciones de los mismos para dar el OK, y que a todo el formulario se le pueda dar un submit, y para esto aqui hay algunas expresiones regulares útiles para validar ciertos criterios que pueden llegar a servir.

Read more…

                         En php yo utilizo mucho el paquete de PEAR HTML Sigma para mis templates de HTML , ya que bien ligero y muy facil de utilizar , pero a menudo nos topamos con pequeños problemas y Sigma no nos deja parsear la informacion como nosotros la queremos y hay algunos problemas con los que me he topado que a veces son cosas pequeñas pero que pueden llegar a consumir mucho tiempo encontrando el problema asi que veremos algunos problemas con los que me he topado y espero que les puedan servir de algo.

Un problema que me paso recientemente y solo por estar probando encontre la solucion es que cuando uno define el inicio y final de los bloques a parsear hay que tener un poco de cuidado cuando se estan definiendo los nombres de los bloques, ya que por alguna extraña razon de este mundo latente, si ponemos de nombre ” <!– BEGIN bloque-parsear1 –> ” por dar un ejemplo , Sigma tiene problemas interpretando el GUION “-” y simplemente le trasquila todo y no parsea ese bloque, o a veces parsea partes pero no llega a funcionar como nosotros queremos. Asi que es preferible solo poner Numero y Letras para definir nuestros bloques utilizando Sigma.

Otro de los problemas con los que me he topado es que cuando del lado de PHP se le hace un $object->setVariable($arreglo); por dar un ejemplo y ese contiene llaves asociativas que son las mismas que nuestras tags en la template para ser parseadas, esto nos puede llegar a a causar problemas si definimos esa misma tag en otro bloque o parte de nuestra template, asi que si ustedes llegan a ver que se estan parseando bloques que ustedes creen que no se deberian de estar parseando , revisen eso y lo mejor es ponerles nombres a las tags, que no se repitan , asi no tendran problemas.

Estos son algunos problemas simples que llegan a suceder, pero a pesar de todo esto es un muy buen paquete de PEAR para utilizar.

Si les han sucedido algunos otros problemas y creen que merecen ser mencionados pueden dejar comentarios y los podemos discutir.

Saludos.

Los accidentes suelen ocurrir, pero para un DBA, que se te borren todos los campos de una tabla de 1 millón de registros cuando querías borrar solo 100 mil, es un accidente que no se puede dar el lujo de cometer.

No se si en otros DBMS sucede esto, pero en Postgres 8.1 no veo la razón por la que sucede, pero de cualquier forma, aquí les dejo el tip para que no les pase.

Si tenemos una la tabla deletemasivo con la siguiente estructura:

 Column |  Type
--------+---------
 id     | integer
 nombre | text

y con bastantes datos, y nosotros quisieramos todos los datos cuyo id este en otra tabla. Por ejemplo:

 Column |  Type
--------+---------
 id2    | integer
 nombre | text

Probablemente lo que haríamos sería:

delete from deletemasivo where id in (select id2 from otratabla);

El problema es que puede que nos equivoquemos y pongamos algo como:

delete from deletemasivo where id in (select id from otratabla);

Nótese que id no existe en otratabla, y que si se intenta ejecutar nos daría como resultado.

tipsdeaweb=# select id from otratabla;

ERROR:  column "id" does not exist

Pero si lo ejecutamos dentro del “delete from deletemasivo where id in (select id from otratabla);” si lo deja ejecutar y borra todo cuanto haya en la tabla deletemasivo.
El resultado es:

tipsdeaweb=#
    delete from deletemasivo where id in (select id from otratabla);
    DELETE 38

Y taráaan!!… Se perdieron todos los datos de esa tabla (que en este caso son 38).

Lo mejor sería hacer el delete de la siguiente manera. Pues da el resultado esperado.

tipsdeaweb=#
     delete from deletemasivo using otratabla where deletemasivo.id = otratabla.id2;
    DELETE 9

Así que hagan backup de sus Bases de Datos seguido y traten de no cometer errores como estos, por lo menos, no en Postgres 8.1.

Como siempre les dejo los scripts para no cometer un Delete masivo por error.

Saludos.

Con las herramientas que el mismo Google nos provee, con Google Webmasters Tools podemos tener información acerca del status de nuestro sitio, como por ejemplo:

  • que pagina tiene mejor rank
  • páginas de nuestro sitio que tienen links entrantes
  • archivo robots
  • subir sitemaps de nuestros sitios

Estas son solo algunas. Y como se listó en este post Principales factores para mejorar tu Posicionamiento en Google unas de las principales influencias que tiene en el rank de nuestra página es la calidad de los links entrantes en nuestra página. Google Webmasters nos da la opción de ver la lista de links entrantes por paginas (en http://www.google.com/webmasters/tools/externallinks). Pero con esta extensión para GreaseMonkey Google Webmaster Tools External links ++ podemos ir más alla y saber más de estos links entrantes, como por ejemplo el pagerank, si el link todavía se encuentra y si nos linkean con la tag nofollow.

Espero les sea de utilidad.

Muchos de los bloggers utilizamos el sistema de estadísticas que nos ofrece Google Analytics para llevar el control de los visitantes que recibimos en nuestro blog. Y en el caso de tipsdeaweb.com, en el cual colaboramos 7 personas, estamos revisando constantemente el blog para ver que todo marche sin problemas y para revisar que esten bien publicados los posts que acabamos de redactar. Esto hace que en el número de visitas que nos reporta Google Analytics esten incluídas las nuestras, lo cual no nos interesa porque queremos saber únicamente el conteo de las visitas de personas ajenas a la edición de este blog.

Y entonces ¿Cómo bloqueamos la contabilización de nuestras visitas? La respuesta la encontré buscando un poco por el mismo tablero de Google Analytics y aquí les comparto como se hace.

  1. Ingresa a tu cuenta de Google Analytics y selecciona la opción de editar en el sitio en el que quieres que no se contablicen tus propias visitas .
  2. panel_inicio_analytics

  3. En la sección de Filtros agrega uno nuevo.
  4. filtro_analytics

  5. En la información del nuevo Filtro ponle un nombre, en el tipo de tráfico selecciona la opción “Excluir todo el tráfico procedente de una dirección IP específica”, luego ingresa la dirección IP (o rangos de IP) de la cual visitas tu sitio. Debes dejar las diagonales que estan antes de los puntos de las ip´s ya que es una expresión regular lo que se está ingresando. (Si no sabes cual es tu IP con la que visitas tu sitio, puedes averiguarla con este sitio: iptools.com y en la parte superior de la página te va a mostrar el número de IP)
  6. filtro_trafico_interno_analytics

  7. Haz click en Finalizar y eso es todo. En cualquier momento puedes deshabilitar este filtro y contabilizar todas las visitas.

Actualización 03 de Diciembre 2007

Pepe hizo un comentario muy válido sobre esta forma de bloquear nuestra IP de las estadísticas de Analytics y es para el caso de que nuestro proveedor de internet nos asigne IP dinámicamente, y tengamos que estar actualizando el filtro cada vez que cambiamos de IP. Lo cual hace que esta forma de bloquear no sea la más adecuada.

Ya j_aroche nos da la sugerencia de bloquear todo el dominio de Analytics desde el archivo hosts que bloquea cualquier estadística para cualquier dominio.

Buscando un poco más, me encuentro con que Google Analytics nos da una alternativa para IP dinámicas, la cual se basa en bloquear el conteo visitas por medio de la creación de una cookie en el navegador. Pasos:
1. Para utilizar el bloqueo por cookie debemos crear una página con el siguiente código javascript:

<body onLoad="javascript:__utmSetVar('no_report')">


Ojo: también debemos incluir el código javascript que nos proporciona Google Analytics para el conteo de nuestras visitas.

2. Luego debemos subir esta página a nuestro dominio.

3. Visitar la página que acabamos de subir desde los navegadores desde los cuales no queremos que contabilice las visitas. Al visitar está página el script crea una cookie en el navegador que cuando es reconocida por el tracker de Google Analytics sabrá que no debe contabilizar la visita.

Espero que les sirva, saludos y sigan comentando :)