Archive

Archivos del Autor

El lado oscuro del SEO – Ocultando KeyWords

December 30th, 2009

Como ocultar KeyWords o palabras claves con JQuery

Black Hat SEO

Este artículo es un ejemplo modificado por mi del artículo de Matt Cutts en su blog.

Lo que voy a demostrar es como ocultar palabras claves o tags mediante el uso de JQuery y es imposible que los Spiders o Crawlers detecten el código como malicioso.
Pero eso no quiere decir que lo tengan que implementar, visto que no es bien visto para el público que desea leer un artículo o una página que está optimizada de esta manera, porque a veces no encuentran lo que buscan y terminan abandonando su sitio con gran desilusión .

Les muestro el código completo en HTML y luego paso a explicarles que es y como funciona.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>

<head>
<title>SEO con JQuery</title>
<script type=”text/javascript” src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js”></script>

<script type=”text/javascript”>
$(document).ready(function()
{

var word = ‘economize the custom market is in color red and doomed’;
var higlighted_text =  word.substring(32,33)+word.substring(2,3)+word.substring(45,46)+word.substring(12,13);

$(‘#content150′).css({‘color’: ‘red’, ‘background-color’: ‘white’, ‘display’: higlighted_text });
});
</script>

</head>
<body>
<div id=”content150″>
En esta sección pueden ingresar cualquier tipo de palabra clave que atraiga a los buscadores.
o bien una larga descripción de su sitio web.
</div>
</body>
</html>

Bien ahora les explico el cógido javascript:

var word = ‘ecOnomize thE custom market is iN color red aNd doomed’;
var higlighted_text = word.substring(32,33)+word.substring(2,3)+word.substring(45,46)+word.substring(12,13);

Que en forma desorganizada el texto “higlighted_text” da como resultado “none” que es un atributo css para ocultar el texto.

La siguiente linea fue hecha para confundir un poco pero lo que en realidad importa es el dislpay: highlighted_text, me gustó hacerlo de esta manera, es mas “oculto” a la vista:

$(‘#content150?).css({‘color’: ‘white’, ‘background-color’: ‘red’, ‘display’: higlighted_text });
});

Y a continuación es lo que tienen que incluir en su HTML algún texto para atraer a los spiders o crawlers con las palabras claves que más les guste, o una muy buena descripción.

<div id=”content150″>
En esta sección pueden ingresar cualquier tipo de palabra clave que atraiga a los buscadores.
o bien una larga descripción de su sitio web.
</div>

Esto es todo, espero que no abusen de esta simple práctica, decidí hacer el artículo de manera muy simple para que entiendan paso a paso los no expertos del tema.

Espero que no haya sido aburrido para los que saben.

Saludos a todos.

German Otros , , , ,

Clase PHP para Conectar a MySQL (mas que facil es simple)

December 17th, 2009

Hola a todos, tanto tiempo que no publicaba algo hoy les quiero dejar una clase que acabo de hacer es muy simple y facil de usar, sirve para:

  • Conectar a una base de datos
  • Si hubo un error podemos saberlo mediante un metodo
  • Contar resultados ejecutados
  • Contar resultados de una tabla con una condición o ninguna
  • Agregar datos mediante un simple metodo que se le pasa un arreglo
  • Borrar datos pasandole como referencia la tabla, una condición (puede ser nula) y el limite de resultados a borrar (Si es 0 borra todo)
  • Editar datos: Edita X datos de cierta tabla, se le puede pasar la condición a borrar y el limite.
  • Obtener un arreglo de datos de una tabla.
  • Obtener un arreglo de cualquier dato mediante query de SQL

El código de la clase es el siguiente pero abajo les dejo un link para bajarlo directamente:

/*

* mysql_db: Constructor recibe como parametros

* *El host de la base de datos

* *El user de la base de datos

* *La password de la base de datos

* *La base de datos a conectar

*

* Metodos:

* open() conecta con la base de datos y devuelve falso si no

* get_error() obtiene el error de la coneccion

* query() ejecuta cualquier query de base de datos y luego se deben procesar

* last_id() Obtiene el ultimo id que fue procesado por la clase

* num_rows() obtiene la cantidad de resultados que fueron procesadas por la clase

* count($tabla, $cond = '') Cuenta todos los resultados de una tabla y con x Condicion (puede ser nulo)

* get_array($tabla, $datos = '*', $cond = '') Obtiene un arreglo de datos (se pueden elegir) de una tabla y con x Condicion

** get_array_query($query) Obtiene un arreglo de cualquier consulta SQL

* delete($tabla , $cond = '', $limit = '1') Elimina x Datos (Por defecto 1) de una tabla con X condicion (puede ser nulo)

add($tabla, &$datos, $nomb_id = 'id'){ //agrega datos en una tabla recibiendo un arreglo de datos (las keys tienen que tener el mismo nombre que los campos de la tabla

Ademas se le tiene que pasar el nombre del campo del ID

*

* edit($tabla, &$datos, $cond, $limit = 1) Edita x Datos si se establece la condicion

* recibe un arreglo de datos

* un ejemplo de cond es 'id = 1' edita el arreglo de datos donde el id = 1

*/

define('DB_NO_LINK', 0);

define('DB_NO_DB', 1);

define('DB_NO_Q_RESULT', 2);

define('DB_NO_Q_ROWS', 3);

class mysql_db{

var $errtype;

var $errstr;

var $host;

var $user;

var $pass;

var $link;

var $database;

var $result;

function mysql_db($host,$user,$pass,$database){

/* Set error properties to initial values. */

$this->errtype = false;

$this->errstr = ”;

$this->host = $host;

$this->user = $user;

$this->pass = $pass;

$this->database = $database;

$this->result = NULL;

}

function open(){

$this->link = mysql_connect($this->host,$this->user,$this->pass);

if(!$this->link){

$this->errtype = DB_NO_LINK;

$this->errstr = ‘Connection failed for host: ‘ . $this->host;

return false;

}

if(!mysql_select_db($this->database, $this->link)){

$this->errtype = DB_NO_DB;

$this->errstr = mysql_error($this->link);

return false;

}

return true;

}

function query($sql){ // INICIO METODO

/* Determinamos que tipo de consulta es */

if(eregi(“^delete”, $sql) || eregi(“^insert”, $sql) || eregi(“^update”, $sql)){

$qtype = ‘a’;

}

elseif(eregi(“^select”, $sql)){

$qtype = ‘n’;

}

/* Sabemos cuando la consulta falla o cuando no*/

$result = mysql_query($sql, $this->link);

if(!$result){

$this->errtype = DB_NO_Q_RESULT;

$this->errstr = mysql_error($this->link);

return false;

}

/* Checkeamos por filas afectadas */

if($qtype == ‘n’){

if(mysql_num_rows($result) == 0){

$this->errtype = DB_NO_Q_ROWS;

$this->errstr = ‘NO se seleccionaron las filas’;

return false;

}

}

elseif($qtype == ‘a’){

if(mysql_affected_rows($this->link) <= 0){

$this->errtype = DB_NO_Q_ROWS;

$this->errstr = ‘No se afectaron las filas.’;

return false;

}

}

$this->result = $result;

return $this->result;

} // FIN METODO query

function last_id(){

$id = mysql_insert_id($this->link);

return $id;

}

function num_rows(){

$num_rows = mysql_num_rows($this->result);

return $num_rows;

}

function count($tabla, $cond = ”){

if ($cond) {

$cond = ‘WHERE’.’ ‘.$cond;

}

$this->query(“SELECT COUNT( * ) AS count FROM $tabla $cond ” );

return mysql_result( $this->result, 0 );

}

/*Get Array Obtiene un arreglo de datos desde una tabla, los datos que quieras

* y la condicion que quieras

**/

function get_array($tabla, $datos = ‘*’, $cond = ”) {

if ($cond) {

$cond = ‘WHERE’.’ ‘.$cond;

}

$this->query(“SELECT $datos FROM $tabla $cond”);

$rows = array();

while($row = mysql_fetch_assoc($this->result)){

$rows[] = $row;

}

return $rows;

} //Fin Get_Array

function get_array_query($query) { // OBTIENE UN ARREGLO CON CUALQUIER CONSULTA

$this->query($query);

$rows = array();

while($row = mysql_fetch_assoc($this->result)){

$rows[] = $row;

}

return $rows;

} //Fin Get_Array

function delete($tabla , $cond = ”, $limit = ‘1′){ // Metodo Delete

if ($limit == 0) $limit = ”;

else $limit = “LIMIT $limit”;

if ($cond) {

$cond = ‘WHERE’.’ ‘.$cond;

}

$sql = “DELETE FROM $tabla $cond $limit”;

return $this->query($sql);

} // Fin metodo delete

function add($tabla, &$datos, $nomb_id = ‘id’){ //agrega datos en una tabla

$donde = “`$nomb_id` “;

$valor = ‘NULL’;

foreach ($datos as $key => $value) {

$donde .= “, `$key` “;

$valor .= “, ‘$value’”;

}

return $this->query(“INSERT INTO $tabla ($donde) VALUES ($valor);”);

}// Fin agregar

function edit($tabla, &$datos, $cond, $limit = 1){

foreach ($datos as $key => $value) {

if(!empty($value))

$donde .= “`$key` = ‘$value’ ,”;

}

if ($limit == 0) $limit = ”;

else $limit = “LIMIT $limit”;

$donde = substr($donde, 0, strlen($donde)-1);

$sql = “UPDATE `$tabla` SET $donde WHERE $cond $limit;”;

return $this->query($sql);

}

function close(){

mysql_close($this->link);

}

function get_error() {

return $this->errstr;

}

}

?>

Más adelante les dejo un par de ejemplos.

Pueden bajarla desde aqui: http://geoks.com.ar/blog/wp-content/uploads/class_db.php.zip

German PHP , , , ,

Chatear con Pidgin para facebook

November 23rd, 2009
Plugin Facebook Chat

Plugin Facebook Chat

Hola a todos, desde la llegada del nuevo Ubuntu Karmic Koala me ha pasado algo muy raro con el paquete que viene dentro de los repositorios originales del plugin pidgin-facebookchat (v 1.60), directamente no funcionaba, esto se debe a que el paquete esta desactualizado, la solución fue ir a la URL del proyecto http://code.google.com/p/pidgin-facebookchat/wiki/Downloads?tm=2 y bajarse la última versión del plugin y listo !

German Software Libre , ,

Webcam funcionando en el Emsene con Ubuntu Karmic Koala (Ubuntu 9.10)

October 31st, 2009

Hola a todos como verán hice andar la webcam en mi Emesene 1.5 Awesome, el paso es muy sencillo.

Sin agregar ningún repositorio ni instalar nada, solo me baje el emesene que trae por defecto el Ubuntu , (Emesene 1.5 – bajo plataforma de 64 bits), el problema estaba cuando quería mandar invitaciones o recibir la captura de la webcam, que me daba un error de libmimic, lo pueden solucionar de la siguiente manera.

Abren el synaptic y buscan el paquete “python-libmimic” luego lo instalan, reinician el emesene y listo :D .

Emesene Webcam

Emesene Webcam

Espero que les haya servido.

Saludos

German Linux , , ,

Primer encuentro con Ubuntu 9.10 (Nota de la Nación)

October 20th, 2009

Hola a todos, estaba leyendo este artículo y la verdad que me interesó mucho, a continuación les dejo la nota en el blog para que la puedan leer.

La nota la hizo Ariel Torres y se la puede ver desde http://www.lanacion.com.ar/nota.asp?nota_id=1186698



Tenía que probar un disco de estado sólido (llamados SSD, por sus siglas en inglés) y un amigo estaba hablándome maravillas sobre el Ubuntu 9.10 por el teléfono. Hasta donde sabía, la 9.10 no estaba todavía en la calle. Excelente, entonces: territorio nuevo. ¡Me encanta! El siguiente viernes (esto es, hoy) publicaría una primera impresión de la más nueva de las distros de Ubuntu.

El miércoles, por fin, tras haber despachado lo más urgente de la semana, desarmé mi máquina de ensayos aquí en el diario, desconecté el disco rígido, enchufé el SSD (un Kingston de la serie V) y la volví a arrancar con el CD de instalación de Ubuntu 9.10. Había bajado la versión preliminar un rato antes y quemado la imagen en un CD-R.

Aunque el nuevo Ubuntu saldrá oficialmente el 29 de este mes, el código ya está congelado y se puede bajar una edición preliminar ( beta en la jerga) que se parece mucho a la final. Pese a las comprensibles advertencias de los desarrolladores, esta beta no sólo no causó problemas, sino que, salvo casos muy especiales, hizo honor a la legendaria robustez de Linux.


Rewind, please

Si usted encuentra que los párrafos anteriores suenan a brote psicótico, abuso de sustancias ilegales o simple insolación, está en lo cierto. Suenan incomprensibles. Pero espere, no se vaya. Lo que sigue puede resultarle de mucho interés. Sólo hace falta aclarar algunas cuestiones lexicales. En general, es más fácil de entender la informática que su jerga.

Ubuntu es un Linux, sistema operativo de software libre basado en Unix para computadoras con chips Intel y AMD. Para las PC convencionales, en otras palabras; esas que están por todas partes y que usualmente vemos con alguna versión de Windows. (Sí, hay, hubo y posiblemente siga habiendo Linux para otros microprocesadores, pero la idea original de Linus Torvalds en 1991 fue desarrollar un clon de Unix en su 386. Las PC con Intel y AMD, además, tienen el 90% del mercado de las computadoras personales.)

Una distribución – distro , en la jerga- es la forma en que Linux llega a los usuarios. Hay varias distros de numerosas empresas y organizaciones, desde la corporativa Red Hat (que cotiza en Bolsa) hasta las más amigables Ubuntu y Mandriva, o la políticamente correcta Debian.

Desde hace mucho tiempo Ubuntu se ha convertido en mi favorita. Primero, porque su concepto es de lo mejor que le ha pasado a Linux en años; es decir, que usar este sistema no requiera tres doctorados en ciencias de la computación. Segundo, porque lo están logrando.

El plan de Mark Shuttleworth, a quien el suplemento entrevistó hace un año ( www.lanacion.com.ar/1064894 ), funciona cada vez mejor. Ahora, y desde hace ya un tiempo, es posible poner un Linux en una PC y hacer andar todo de entrada, sin pagar un centavo, sin leer docenas de páginas y sin visitar foros hasta perder la visión periférica; sin otro trámite, de hecho, que bajar un archivo desde www.ubuntu.com y quemarlo en un CD.

La versión 9.10 es una soberbia demostración de esta tesis.


Play

Para estas pruebas seguí los pasos que daría alguien que nunca ha usado un Linux. Entré en www.ubuntu.com y descargué el instalador de un servidor brasileño (no hay ninguno argentino actualmente, aunque parezca mentira). Este archivo no tiene la extensión .EXE que solemos ver en los instaladores de software, sino .ISO. ¿Por qué? Porque es una imagen de disco. ¿Qué significa eso? Nada del otro mundo, aunque el e-monje promedio impostará la voz cuando hable de imágenes de disco y añadirá un gesto levemente condescendiente que significa vos no entendés de estas cosas, dejámelo a mí .

La clase de actitud que Ubuntu intenta desterrar, precisamente. Vamos. No es matemática cuántica. Una imagen de disco es un archivo que, grabado correctamente en un CD o DVD, reproduce una estructura de carpetas y archivos. Por ejemplo, la del software de instalación de Ubuntu.

En este caso grabé en un CD la imagen, llamada ubuntu-9.10-beta-desktop-i386.iso , con el software gratis para Windows CD Burner XP ( http://cdburnerxp.se/ ); en unos diez minutos tenía preparado el compacto para empezar la instalación; es todo lo que se necesita, dicho sea de paso. El único cuidado que hay que tener es elegir en el software para quemar CD la función de grabar imágenes de disco , y usar efectivamente un CD; un DVD no servirá.

Ahora tenía que desconectar el disco duro con Windows y poner el disco de estado sólido, que estaba vacío.

Poner el SSD no fue tan sencillo. La máquina donde pretendía hacer la prueba carecía de cables SATA. No es la más moderna del grupo. De hecho, podría decirse que es obsoleta: una Pentium 4 a 2,8 GHz con 1,5 GB de RAM. Pero es exactamente la clase de equipo que no me mentiría respecto de la velocidad del nuevo Ubuntu. Es fácil que algo marche muy rápido con una megabestia de múltiples núcleos con tres docenas de gigabytes de RAM. Pero muchos lectores no cuentan con ese hardware y los resultados terminan siendo engañosos y decepcionantes. Además, esa castigada P4 es donde vengo probando Windows 7. Si el 7 anda bien ahí, ¿por qué no Ubuntu 9.10?

Como fuere, había perdido los cables de datos y alimentación SATA de la veterana PC, y no iba a ir a casa a buscar un reemplazo. En lugar de eso pedí auxilio a mis amigos de sistemas aquí en el diario y en un par de minutos había enchufado el SSD al primer puerto SATA. Desconecté el disco duro IDE, cerré el gabinete y volví a conectar todos los cables externos, mientras pensaba en que algo tenía que salir mal, no podía ser tan sencillo.

En realidad, siguió siendo sencillo. Configuré el Setup (o BIOS , como también se lo llama) de la PC para que arrancara desde el CD (y no desde el disco fijo); ésta es la práctica normal para colocar cualquier sistema en una PC, desde Linux hasta Windows 7. Unos segundos después estaba en la pantalla para elegir el idioma de la instalación. Opté por el inglés (no siempre las traducciones reflejan la forma en que llamamos aquí a las cosas) e inicié el proceso de colocar Ubuntu en el SSD a las 15.01.

Tras elegir idioma, teclado y zona horaria, y luego de particionar manualmente el disco, le di OK a todo y en menos de 10 minutos me encontré con que ya casi había terminado de instalarse. A las 15.11 tenía Ubuntu listo en pantalla. Tiempo récord, es verdad, pero el crédito debe ir para estos discos de estado sólido, que vuelan. En la práctica, se instalaron 167.721 archivos por un total de 3.2 GB; con un rígido común eso hubiera llevado un rato mucho más largo. Lo probé esa noche en un equipo casi idéntico, pero con disco rígido convencional. La instalación tardó unos 25 minutos.

Una de las cosas geniales de Linux en general y de esta distribución en particular es que no sólo tenía el sistema operativo listo, sino también casi todas las aplicaciones que necesitaba: un navegador ( Firefox 3.5.3 ), el chat ( Empathy 2.28 ), procesador de texto ( OpenOffice 3.1 ), organizador de fotos ( F-Spot 0.6.13 ) y editor de imágenes ( GIMP 2.6 ). Lo único que necesitaba para estar en idénticas condiciones que media hora antes con Windows 7 era importar los archivos de diccionario y autocorrección de OpenOffice , cosa que hice desde Gmail, y enseguida estaba escribiendo estas líneas.


Casi perfecto

En ambas máquinas, Ubuntu reconoció todo el hardware e instaló los controladores adecuados, excepto en el caso de los que son de código fuente cerrado. Por lo tanto, tuve que ir a Sistema> Administración> Controladores de hardware y activar los drivers de la tarjeta de video (Nvidia en ambos casos). En el equipo del diario, todo marchó bien y la pantalla quedó correctamente configurada y con los efectos visuales llamando la atención de mis colegas por aquí. En casa, como siempre ocurre, no hubo forma de que se entendiera con el monitor LCD, así que tuve que editar el archivo de configuración xorg.conf a mano. Como en los buenos viejos tiempos…

Fuera de este tropiezo, que podría aguarle la fiesta a quien recién llega a Linux, todo lo demás, incluida la red inalámbrica y la placa de sonido, funcionó a la perfección. Ya me había ocurrido con la versión 9.04. Con tan pocos problemas casi estaba empezando a aburrirme. Así que empecé a disparar programas y tratar de colgar la pobre máquina. Nada, se mantuvo en sus trece y, excepto Empathy , que se puso a hacer algunas cosas raras, no tuve nada con qué entretenerme.

Pasé entonces a configurar el Escritorio . Los muchachos de Compiz están más locos que nunca, y me encanta. El cubo de Escritorio sigue siendo la mejor solución que he visto para operar con varios espacios de trabajo; ahora tiene más adornos y cosas extravagantes. Algunos de los efectos son muy bellos, pero los termino desactivando porque interfieren con mi atención.

Sigue siendo una mala idea poner algunos protectores de pantalla que utilizan aceleración 3D. Son atractivos, pero pueden colgar el sistema. Lo he visto muchas veces, y ahora se repitió. Ignoro la razón; posiblemente, temperatura. La pantalla negra y los screensavers menos exigentes no causan problemas.

Fui a ver si existían actualizaciones. Sí, claro. había más de 400, lo que es comprensible, dado que se trata de una beta. Con una versión final este número sería completamente inusual, aunque el ritmo de actualización de Linux es muy rápido y ésta es una de sus características más valiosas.

Antes de irme dejé el equipo actualizando y supuse que me encontraría con algún mensaje desagradable al día siguiente. En lugar de eso, el jueves la pantalla decía que las correcciones se habían instalado sin novedad.

En total, una de las mejores distribuciones de Linux que he visto en más de una década: fácil de usar, rápida, bella, muy compatible, completa, libre y gratis.

Para los que prefieren un discurso más técnico, aquí pueden leer las novedades de la versión 9.10: www.ubuntu.com/testing/karmic/beta

Opciones para mudarse

¿Para quién es este Ubuntu? Para cualquiera que se sienta más o menos cómodo explorando un sistema nuevo y no necesite ejecutar programas de Windows. El fundamentalista dirá aquí que se pueden correr programas para Windows desde Linux usando Wine . Sí, es verdad, pero es mucho más fácil propalar esta Verdad Revelada que usar sin problemas aplicaciones de Windows dentro de Linux. Cuidado. Esto es software, está hecho por humanos y la fe irracional no sirve para nada. Más bien al revés.

Fuera de estos casos, Ubuntu ofrece todas las herramientas que usamos a diario en un entorno cada vez más amigable y agradable. Hay muy buen soporte técnico en el sitio Web y suficientes usuarios veteranos dispuestos a dar una mano, al revés de lo que ocurría hace diez años, cuando la pregunta básica era respondida con rispidez, si acaso respondían. Esta cultura, alguna vez sostenida con orgullo, está cambiando. Afortunadamente, debo decir, porque si Linux no consigue poco a poco conquistar a una parte del público general, seguirá recluido en el ambiente corporativo y profesional. No está mal. Pero se merece más.

La 9.10 es una demostración clara de que es posible para Linux llegar hasta las personas que no sólo no entienden de computación, sino que hacen cosas infinitamente más importantes que programar, compilar, depurar o configurar. Y no hablo de médicos, músicos, escritores y filósofos; hablo del que tiene una vida, ha fundado una familia, encuentra un millón de problemas por resolver cada día y, como premio, se ve obligado a leer 50 páginas de texto hermético para hacer andar el chat. O el monitor.

Esto es lo mejor de Ubuntu, y en particular de la versión 9.10. Como reza su slogan, es un Linux para humanos.

German Linux ,