martes, 27 de agosto de 2013

Trucos para búsquedas en Google

La verdad ya es como la n-ésima vez que busco en Google los trucos para usar comodines, palabras exactas, parecidas, etc... y siempre me cuesta trabajo dar con una página clara y concisa a lo que yo necesito. Lo peor, cuando lo vuelvo a ocupar porque mi memoria lo ha olvidado, no doy con esa página que me sacó del apuro y ahí me tienes buscando en Google otra vez como buscar en Google.... jajajaja

Pero no más... aquí una pequeña guía de turcos que encontré y que me resultó bastante útil y práctica, tiene lo necesario. Hoy se adhiere a la bitácora... ¡por fin!

Algunos ejemplos de este tipo de búsquedas son :
"patos" < palabra exacta
"patos * feos" < el asterisco funciona como comodín , lo que sea que haya entre esas dos palabras
patos site:www.vidasilvestre.com < Esta que siempre es la que olvido, para buscar una palabra en un sitio determinado.
Y muchas más que pueden encontrar en esta guía... 


¡¡Hasta la vista Javer@s!!!

martes, 4 de junio de 2013

"Fatal error: Maximum execution time of 300 seconds exceeded" al cagar archivo grande en MySQL

Clásico error  si trabajamos transfiriendo o cargando scripts de bases de datos muy grandes. Los valores en un servidor MySQL por default -- sobre todo si es una máquina de escritorio, laptop o similares de computadoras personales -- suelen estar orientados a requerimientos muy básicos.

Hay varios parámetros que se pueden adecuar en los valores de nuestro servidor MySQL los cuales los podemos cambiar (en mi caso usando ubuntu) en /etc/mysql/my.cnf .

Sin embargo es raro que aparezca el error que arriba comento pero al cargar un archivo dump de MySQL desde consola, ¡¿¿en que endemoniado momento se metió PHP en esto??!

Me sucedió a mi, y por más que cambié los parámetros de MySQL e incluso de PHP (php.ini) no se solucionaba eso. Cargué desde consola, desde el prompt del cliente de MySQL y nada. La línea completa del error al cargar el archivo (que era un archivo grande, alrededor de 500MB, pero vamos, ¡no es para tanto!) era la siguiente:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Fatal error: Maximum execution time of 300 seconds exceeded in /usr/share/phpmya' at line 57

Era un error de MySQL que involucraba extrañamente a PHP. Desesperado fui al archivo en cuestión y en la última linea aparecía el texto tal cual: "Fatal error: Maximum execution time of 300 seconds exceeded in /usr/share/phpmyadmin/libraries/export/sql.php on line 1080" . Pero para llegar a esta solución hubo que batallar un buen rato, todos los blogs halaban de cambiar los parametros de PHP, si como no... 

¡PERO SI CLARO!

Había ocurrido un error al crear el archivo dump de la base de datos en el servidor origen y se había imprimido la salida del mismo en el archivo al final, por supuesto.

Entonces volvemos a crear el dump asegurándonos que se genere correctamente (Este error apareció al intentar hacer un dump de una base muy grande a través de PhpMyAdmin, les recomiendo usen el mysqldump desde consola).

Y listo, no debe haber mayor problema al cargar su archivo correcto.. jeje..

Aquí donde encontré la inspiración para la solución a este problema (le pasó lo mismo que a mi). Thanks amigo!


Hasta la vista javer@s

domingo, 26 de mayo de 2013

Archivo de texto plano en PHP

Para escribir un archivo de texto plano en PHP basta con agregar las siguientes lineas:

$fp = fopen("ejemplo.txt","a+"); //a+ , el + permite crear el archivo sino existe
if($fp){
fwrite($fp, "Nombre: $nombre \t $texto" . PHP_EOL);
fclose($fp);
} else{
//Error al crear o abrir archivo
}

Hay que recordar que es necesario revisar los permisos de escritura para poder crear archivos.

Esto lo saque de la siguiente web donde esta explicado fácil, rápido y conciso ...

Accede a Entrada aquí

¡Saludos Javer@s!

lunes, 13 de mayo de 2013

Instalar JDK de Oracle - Sun en Ubuntu

He tenido que hacer esta búsqueda en variadas ocasiones. Ahora que ando regresado a echar un vistazo al mundo de Java - "Un momento bastante incierto con todo lo sucedido desde que Oracle adquirió Sun y todos los productos y servicios que éste administraba han tomado un rumbo desconocido, aunque por muchos se espera lo peor" - me enfrento al inconveniente de que la versión que mi Ubuntu trae (un openJDK) no es lo más recomendable ni utilizable para desarrollar con java. 

Cuando esto sucede, afortunadamente está la alternativa de instalar la versión de Oracle (Sun) y quitarnos de esta clase de problemas (aunque sumándonos a otras clases de problemas). Recuerdo que la primera vez que instalé el jdk en linux me costó algo de trabajo dejarlo al 100 y siempre que he necesitado hacerlo olvido el procedimiento completo, pero ya no más.

Hoy al instalar el jdk me encontré con esta entrada que explica puntualmente lo que hay que hacer para instalar otra alternativa para java que no sea openJDK.  Les dejo el enlace por si un día les hace falta:


Además de como configurar las alternativas de manera adicional viene como pueden actualizar su plugin de java para el navegador, aunque cada vez hay menos aplicaciones java (applets) en la red, ha mermado mucho su uso y por si fuera poco hasta el departamento de defensa de los EUA lo declaro como una aplicación peligrosa y que no recomendaba su instalación.

En cuanto a lo que es, fue y será de Java aún hay mucho que hablar, se ve un complicado futuro, pero no nos queda más que esperar, vida aún le queda.

¡¡¡Hasta la vista Javer@s!!!

viernes, 15 de febrero de 2013

Descargando... por favor espere...


En estos tiempos donde las descargas en internet como la conocemos se encuentran seriamente amenazadas con leyes como la famosa SOPA en Estados Unidos, la PIPA o el ACTA; es importante saber las alternativas que podemos tener para la descarga de los contenidos que nos interesan.

Hubo un tiempo, no hace mucho (de verdad no hace mucho, no soy tan viejo), cuando la única manera que había de descargar música o cualquier otro tipo de contenidos era a través de páginas con sus enlaces directos, bastaba hacer un "guardar como ..." para tener los contenidos en nuestros discos duros, los sitios eran pocos y los contenidos sumamente limitados. 

Cuando el auge de los mp3 comenzaba, ya había algunos sitios  con nombres bastante sugestivos como downloadmp3.com o descargamusicagratis.com. Estos sitios parecían funcionar sin demasiados inconvenientes, de vez en cuando alguno era clausurado, pero en ese entonces eran más difíciles de encontrar, aunque con las velocidades que había, también era imposible pensar en descargar contenidos de películas u otra cosa que estuviera más allá de los 5 MB.

Después empezó el boom de los programas P2P (Pear to Pear). Fueron una maravilla para muchos usuarios, tiempos en los que el Napster reinaba sin duda. Aparecieron otros como Imesh, Audiogalaxy, Kazaa, Limeware, y alternativas que fueron evolucionando o cambiando de nombres cuando eran clausurados. Otros también aparecieron para quedarse hasta nuestros días, algunos que seguramente si identifica la generación actual como Ares o Emule. Una gran alternativa llevando el almacenamiento distribuido y descentralizado de contenidos al extremo, donde cada usuario es un repositorio posible. Por esta naturaleza descentralizada es que han sobrevivido a pesar de los años y los ataques de campañas "anti-piratería".

Y así -en realidad no me dí ni cuenta cuando sucedió- aparecieron los servidores de descargas. Estos repositorios gigantes de contenidos vinieron a cambiarlo todo, permitiendo la disponibilidad de nuestros archivos en la red. Con algunas restricciones si eras usuario gratuito, o con agregados bastante atractivos si eras usuario de paga. Uno de los más memorables y que sin duda todos extrañaremos es el magnífico Megaupload. Precisamente por la desaparición de éste servidor, podemos prever un panorama difícil para este negocio, ya que muchos sitios se ven amenazados por las políticas que se quieren implantar "pro derechos de autor". La cuestión de estas leyes es un tema a parte, ha venido creciendo en popularidad y será centro de muchos debates todavía en el futuro.

En estos últimos días ha aparecido Mega, la nueva propuesta del creador de Megaupload, dice es una alternativa que además de ser completamente legar revolucionará al mundo, veremos que sucede.

Bueno, para terminar esta entrada me gustaría incluir algunas recomendaciones de sitios donde se publican recursos en la red, descarga de contenidos multimedia, programas, herramientas e incluso conocimiento o cultura en general. Hablo de sitios que también se encuentran amenazados por el hecho de  estar funcionando al margen de las políticas restrictivas del conocimiento que hemos mencionado anteriormente.

Aquí los sitios, seguramente muchos ya son por demás conocidos por ustedes, sin embargo es bueno mencionarlos y si hay alguien que no los conocía es bueno que se den una vuelta, son de verdad muy buenos y seguro a más de uno nos han sacado de más de algún apuro:
  • taringa
  • directoriow
  • argentinawarez
  • thepiratebay
No sabemos que sucederá, solo que estos duros golpes a los servidores para descargas de archivos serán un factor que hará que se cambie de rumbo seguramente, una alternativa muy interesante siguen siendo las descargas por medio de Torrents, lo cual lo platicaremos más adelante. El Ares por su parte parece estar aferrado a no morir y seguir siendo la primera opción si de descargar canciones se trata. Emule sigue funcionando, hay otros servidores de descargas que siguen apareciendo y que siguen dando a sus usuarios maneras de continuar compartiendo sus archivos. El futuro no se ve tan claro, seguro cuando menos nos lo imaginemos habrá un importante cambio de nuevo. Esperaremos.

Me despido. No sin antes compartir que el escribir esta entrada me hizo recordar mucho, ¡Ay nostalgia!... Por lo mientras sigamos descargando, compartiendo, descubriendo y creando ... el conocimiento es del mundo 8)  ¡¡Hasta la vista Javer@s!!

domingo, 20 de enero de 2013

Método each en jquery y alternativa de optimización

Retomando el uso de javascript y jQuery para hacer todas esas cosas que se ven bonitas en los navegadores. me encontré con la necesidad de iterar sobre elementos de algún grupo o contenidos dentro de un elemento. Ya se que es una tarea de lo más cotidiana pero ya no recordaba como hacerlo después de dejar de programar una larga temporada. Los elementos que se pueden inerar son como por ejemplo los "li" dentro de un "ul" o los "option" dentro de un "select" o todos los "img" de la pagina o los "a" o muchos otros elementos html que se te puedan ocurrir.

A continuación quiero incluir un uso clásico a manera de ejemplo simplemente, que para quien quiere iterar con el método each puede resultar una solución que va directo al grano:

$('a').each( function(){
  var $this = $(this);
  $this.css( 'text-decoration' , 'underline' );
});

Ahora quiero incluir un link a una entrada donde encontré este ejemplo pero además viene la posibilidad de optimizar el método each en situaciones donde son demasiados elementos y el tema del rendimiento cobra vital importancia.


¡¡¡Saludos javer@s!!!

miércoles, 9 de enero de 2013

Cerrar todas las conexiones en Postgresql

A veces queremos hacer una actualización en nuestra base de datos o volver a cargar el dump completo en Postgresql. A mi me pasó de manera local, por alguna razón (que pueden ser muchas) había más conexiones a la base de datos a parte de la que yo actualmente estaba utilizando. Yo quería borrar la base de datos antes de cargar el script del dump, pero Postgres no me permitía indicando que aún había conexiones activas de otros usuarios. Para esto no fue difícil encontrar la solución.

Recuerda tener mucho cuidado con estas sentencias ya que puedes estar cerrando no solo tus propias conexiones sino también las de otros usuarios, en mi caso es solo local, pero puede pasar.

Primero debemos entrar a una terminal psql de la base de datos postgres (no tu base de datos en cuestión porque sino te bota cuando cierras todas las conexiones, incluyendo la tuya acutal):

$psql -h servidor  -U postgres -d postgres

Ahora tecleamos lo siguiente:

postgres=#SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname='mi_base_de_datos';

Con esto simplemente eliminamos las conexiones, ahora si podemos hacer una sola conexión para borrar la base de daos y volverla a crear ya sea desde la linea de comandos o usando algún cliente para Postgresql, bueno este fue mi caso, ustedes pueden hacer lo que consideren mejor para su situación :)

A continuación el post completo de referencia, donde se explica a mayor detalle que pasa y algunas alternativas para lo que arriba explicamos. 


Aprovecho para agradecer al autor de este útil post. 

¡¡¡Hasta la próxima Javer@s!!