Simplificar el acceso a MySQL CLI

¿No les ha dado pereza escribir, en la linea de comando, todo lo necesario para conectarse a un servidor MySQL?

Puede que tome menos de un minuto, pero algunas veces un minuto es vital (sobre todo si estamos cerca del fin del mundo).

ubuntu@ubuntu$ mysql -u root -p -h mysqlhost [base_datos]

 

Cuando uno esta apurado, estos comandos suelen fallar varias veces por minuto.

La solución: podemos ayudarnos creando atajos con alias en el archivo ~/.bashrc:

#archivo ~/.bashrc

#comando "my" para conectarse a un servidor local
alias my="mysql -u root -p"

#comando "my2" para conectarse a un servidor remoto
alias my2="mysql -u root -p  -h 192.168.1.56"

 

La proxima vez que queramos acceder al servidor local solo tendremos que escribir en la linea de comando my [base_datos], solamente nos pedirá el password del servidor.

Podemos ser mas osados y dejar el password en el mismo comando alias:

#archivo ~/.bashrc

#comando "my" para conectarse a un servidor local
alias my="mysql -u root --password=tupwd"

#comando "my2" para conectarse a un servidor remoto
alias my2="mysql -u root --password=tuotropwd  -h 192.168.1.56"

 

Pueden usar los acronimos que prefieran, para mi my y my2 son cortos y útiles.

Cada vez que quiero una linea de comando MySQL sólo tengo que cargar una nueva terminal (Super + T), escribir «my mi_base» y [enter]!

Ahora se presenta otro problema, como saber en que servidor me encuentro?

El acceso puede ser super veloz con los accesos directos via alias, pero todas las terminales tienen el mismo prompt por defecto: mysql> y no hay muchas luces a primera vista para saber en que conexión estamos. Para evitar desastres (por ejemplo ejecutar DROP en el lugar equivocado) podemos cambiar el prompt de la linea de comando de MySQL con la opcion --prompt, entonces, nuestra configuración finalmente quedará así:

#archivo ~/.bashrc mejorado

#comando 'my' para conectarse a un servidor local
alias my='mysql -u root --password=tupwd --prompt="local> "'

#comando "my2" para conectarse a un servidor remoto
alias my2='mysql -u root --password=tuotropwd  -h 192.168.1.56 --prompt="server 1> "'

 

Espero les sirva!

Simulando secuencias en MySQL

Quienes hemos usado PostgresSQL solemos fastidiarnos con el código que hay que escribir para tener un campo auto-numérico, pero también hemos llegado a extrañar esa característica cuando usamos MySQL.

Como sabemos MySQL, usa la propiedad AUTO_INCREMENT para campos numéricos que usamos en claves primarias.

Pero en que situaciones podemos necesitar una secuencia? pues les doy algunas ideas:

  • Cuando queremos tener mas de un campo auto-numérico en una tabla.
  • Cuando necesitamos un contador general que podemos utilizar en mas de una tabla.
  • No se me ocurren mas, pero estoy seguro que en algún momento podemos darle un uso.

Manos a la obra:

Necesitaremos una tabla para guardar el valor actual de la secuencia:

create table _sequence
(
	seq_name varchar(50) not null primary key,
	seq_val int unsigned not null
);

Vamos a necesitar también una función para obtener el valor siguiente de la secuencia, incluyendo casos como:

  • Si no existe la secuencia, crearla (para qué complicarnos).
  • Actualizar el nuevo valor para la siguiente llamada
  •  

    He aquí la función getNextSeq que recibe como parámetro, el nombre de la secuencia:

    /*Funcion que devuelve el siguiente valor de una secuencia*/
    delimiter //
    drop function if exists getNextSeq//
     
    create function getNextSeq(sSeqName varchar(50)) returns int unsigned
    begin
        declare nLast_val int;
    
        set nLast_val =  (select seq_val 
                              from _sequence 
                              where seq_name = sSeqName);
        if nLast_val is null then
            set nLast_val = 1;
            insert into _sequence (seq_name,seq_val) 
            values (sSeqName,nLast_Val);
        else
            set nLast_val = nLast_val + 1;
            update _sequence set seq_val = nLast_val 
            where seq_name = sSeqName;
        end if;
    
        return nLast_val;
    end//
     
    delimiter ;

     

    Ahora necesitamos (a manera de mantenimiento) un procedimiento para modificar el valor de una secuencia:

    /*Procedimiento que crea/establece el valor de una secuencia*/
    delimiter //
    drop procedure if exists sp_setSeqVal//
    
    create procedure sp_setSeqVal(sSeqName varchar(50), nVal int unsigned)
    begin
        if (select count(*) from _sequence where seq_name = sSeqName) = 0 then
            insert into _sequence (seq_name,seq_val) 
            values (sSeqName,nVal);
        else
            update _sequence set seq_val = nVal 
            where seq_name = sSeqName;
        end if;
    end//
    
    delimiter ;
    

     

    Es todo!, ahora sólo necesitamos hacer algunas pruebas, para ello vamos a crear una tabla en la cual vamos a tener dos campos auto-generados con nuestra secuencia.

    create table multiple_autonums
    (
       id int not null primary key auto_increment,
       seq_1 int, -- Secuencia 1
       seq_2 int, -- Secuencia 2
       unique(seq_1),
       unique(seq_2)
    );

    Para que la magia ocurra debemos crear también un trigger antes de insertar:

    /*trigger ejecutado antes de insertar que obtiene
      los siguientes valores de las secuencias*/
    
    delimiter //
    drop trigger if exists multiple_autonums_ai//
    
    create trigger multiple_autonums_bi before insert on multiple_autonums
    for each row
    begin
       set new.seq_1 = getNextSeq("seq_1");
       set new.seq_2 = getNextSeq("seq_2");
    end//
    
    delimiter ;
    

     

    Hagamos algunas pruebas

    -- insertando valores para ver que pasa.
    insert into multiple_autonums (id) values (null),(null),(null);
    
    -- Resultado de la primera inserción
    select * from multiple_autonums;
    +----+-------+-------+
    | id | seq_1 | seq_2 |
    +----+-------+-------+
    |  1 |     1 |     1 |
    |  2 |     2 |     2 |
    |  3 |     3 |     3 |
    +----+-------+-------+
    3 rows in set (0.00 sec)
    
    -- Modificando las secuencias
    call sp_setSeqVal("seq_1",47);
    call sp_setSeqVal("seq_2",9786);
    
    -- Insertando nuevamente los valores
    insert into multiple_autonums (id) values (null),(null),(null);
    
    -- Viendo que ha pasado
    select * from multiple_autonums;
    +----+-------+-------+
    | id | seq_1 | seq_2 |
    +----+-------+-------+
    |  1 |     1 |     1 |
    |  2 |     2 |     2 |
    |  3 |     3 |     3 |
    |  4 |    48 |  9787 |
    |  5 |    49 |  9788 |
    |  6 |    50 |  9789 |
    +----+-------+-------+
    

     

    Que les pareció?

    Me acabo de dar cuenta que hay algunas condiciones que no he tomado en cuenta, pero de todas formas sirve. Incluso pueden modificar las funciones para hacer mas complejo el calculo del valor siguiente, se me ocurre por ejemplo que podemos generar numeros de facturas al estilo: [serie]-[numero] ejem: 001-00485

    Espero les sirva.

¿Cuando es necesario comprar una licencia MySQL?

Como seguramente saben, MySQL provee licenciamiento dual, puedes obtener el código fuente bajo la licencia GPL v2 o puedes comprar una licencia comercial.

Hace algunos meses he oído (y también leído) algunos comentarios fuera de lugar sobre el licenciamiento o sobre en que situación es necesario comprar una licencia comercial de MySQL. Escuché por ejemplo que puedes usar MySQL en todo lo que te sea útil excepto para ganar dinero, en nuestro entorno (latinoamericano) es natural llegar a esa conclusión pero NO ES CORRECTA!

Entonces, ¿cuando es necesario comprar una licencia comercial de MySQL? En realidad es muy simple: cuando quieres hacer algo con MySQL que la licencia GPL no lo permita.

Si bien el asunto de las licencias y demás documentos legales los debería interpretar un abogado, (y debería considerar hacer una investigación legal por su propia cuenta) la mala interpretación de la licencia GPL es generalizada y creo que debería tratar de contrarrestar la desinformación al respecto.

Tenga en cuenta que en este artículo voy a utilizar la palabra «libre» con mucho cuidado (en inglés uno de los sinónimos de «free» es gratis), como el usado por la Free Software Foundation. Si usted no sabe qué es el software libre es hora de leer un poco y aprender.

He aquí algunas cosas que están permitidas bajo la licencia GPL:

  • La licencia GPL le permite manejar un negocio con fines de lucro usando MySQL.
  • La licencia GPL permite modificar el código fuente de MySQL en la forma que desee.
  • La licencia GPL le permite vender y distribuir MySQL.
  • La licencia GPL le permite redistribuir las modificaciones de MySQL.

Y usted no tiene que pedirle permiso a nadie, ni pagarle a nadie por el derecho a hacer esto. ¿sorprendido?

Lo anterior viene con algunas restricciones, pero esas restricciones (en general) son sólo para evitar que el software siga siendo «libre». Así, por ejemplo, si usted vende o redistribuye, hay que hacerlo bajo la licencia GPL también. No se puede despojar a la parte GPL o gravar el software y luego pasar a una versión menos libre del software para los demás.

Aquí hay algunas cosas que la licencia GPL no requiere:

  • La licencia GPL no le obliga a redistribuir las modificaciones de MySQL.
  • La licencia GPL no requiere de una licencia GPL del software que simplemente se conecta a MySQL.
  • La licencia GPL no requiere que todo el software en su empresa/organización también sea GPL.

Entonces si usted requiere comprar una licencia comercial de MySQL para las cosas que la licencia GPL no le permite, ¿cuáles son esas?

  • Es necesaria una licencia comercial si desea modificar MySQL y redistribuir el resultado como software no libre.
  • Es necesaria una licencia comercial si desea incorporar MySQL dentro de un programa no-Libre. Tenga en cuenta que incorporar no es lo mismo que «hacer una conexión».

Ya que estas cosas no están permitidas por la licencia GPL, lo que necesita es comprar el derecho de usar el código fuente de MySQL bajo una licencia no-GPL. Ahí es donde las licencias duales entran en juego

MySQL es muy cuidadoso en sus materiales de marketing. Hasta el momento no recuerdo haber escuchado a alguien de MySQL decir que tienen que comprar una licencia comercial para algún propósito específico. Alguna vez leí algo como «MySQL Enterprise es para personas que quieren hacer dinero con MySQL.» Este mensaje de marketing puede ser poco claro para una persona que no conoce a las libertades garantizadas por la licencia de software libre (es decir, puede dejar la falsa impresión de que tienen que pagar por MySQL, si quieren usarlo para obtener un beneficio económico). Sin embargo, estas personas siempre pueden saber la verdad gastando pocos minutos leyendo acerca de las libertades garantizadas por la GPL.

Los casos mencionados arriba sólo es una muestra pequeña. Para ver ejemplos demostrativos y texto que le ayudará a aclarar las ideas sobre la licencia GPL, usted debe leer las preguntas frecuentes GPL.

Referencias:

  • http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.es.html
  • http://www.gnu.org/philosophy/selling.es.html
  • http://www.mysql.com/about/legal/
  • http://www.xaprb.com/blog/

Como hacer ping desde PHP

Cuando queremos «hacer algo» con algún equipo de nuestra red y éste no responde es por que probablemente este apagado/desconectado/colgado/etc, ping es lo primero que ejecutamos para confirmar nuestras sospechas.

Pero, y si hemos preparado un script para «hacer algo» (como sacar un backup) periódicamente debemos asegurarnos que el equipo esta conectado y encendido antes de meter la pata.

Muchos de los scripts que he desarrollado usan php-cli, me parece mas amigable que bash por que además puedo leer y escribir en bases de datos y también usar ncurses, es una maravilla!

Intentando con varios métodos, finalmente tengo algo que es de utilidad para determinar si un host esta «vivo» mediante un ping desde PHP:

getMessage();
}
else
{
    $ping->setArgs(array('count' => 1)); //Envios = 1
    $result = $ping->ping($host);

    if($result->getReceived() == 1 )  //Si recibimos lo 
    {
          echo "El equipo esta encendido!";
    }
    else
    {
          echo "El equipo esta apagado!";
    }
}
?>

Antes necesitamos tener instalado php-pear y Net_Ping:

ivancp@ubuntu~$ sudo apt-get install php-pear
ivancp@ubuntu~$ sudo pear install Net_Ping

Espero les sirva!

Ubuntu: Montar un directorio compartido automaticamente

Los usuarios Windows conocemos a la perfección como montar una unidad de red, pero en Linux la cosa es un tanto mas complicada, pero no difícil.

La primera opción que tenemos es abrir directamente la dirección: Presionamos Ctrl+L en Nautilus (o algún otro explorador de archivos) y escribimos:

smb://[ip_del_host]/carpeta/

Seguramente nos pedirá un usuario, contraseña y listo. Prefiero esta forma, a menos que no sepa el nombre/IP del host y esperar unos segundos mas a que descubra todos los hosts disponibles si es que llega a descubrirlos todos.

En el caso que queramos tener esa carpeta disponible cada vez que inicie Ubuntu tenemos que agregar una linea en el archivo /etc/fstab:

//192.168.1.45/ruta /media/carpeta_win  cifs  username=win_user,password=win_pass,rw,iocharset=utf8  0 0

Explico punto por punto:

  • //192.168.1.45/ruta Es la ruta de la carpeta remota, en caso de que se trate de una unidad de disco podemos poner //192.168.1.45/d$ , en general si es una carpeta oculta es necesario poner el signo de dolar al final.
  • /media/carpeta_win Es la carpeta local sonde va a montarse la carpeta remota, esta carpeta debe existir, pueden elegir otra ubicación para esta carpeta, eso queda a gusto de ustedes.
  • cifs Es el parametro que indica el sistema de archivos que vamos a montar, en este caso: Common Internet File System que tiene estos parámetros: (separados por comas)
    • username=win_user Nombre de usuario de la carpeta compartida (si lo requiere)
    • password=win_pass Password del usuario de la carpeta compartida
    • rw Indica que vamos a montar en lectura y escritura, para solo lectura es:  ro
    • iocharset=utf8 Indica que vamos a utilizar nombres con UTF8, con el que podremos ver los archivos con caracteres especiales como Imágenes, Mi Música

Es todo, para poder comprobarlo solo tienen que reiniciar el sistema y ver que pasa.

Si quieren montar la carpeta remota manualmente pueden ejecutar:

ivancp@ubuntu$ sudo mount -t cifs\ 
     -o username=win_user,password=win_pass,rw,iocharset=utf8 \
     //192.168.1.45/ruta /media/carpeta_win

Si hay algún problema deben ver los últimos mensajes de error con:

dmesg | tail

Nota: anteriormente se utilizaba smbfs como sistema de archivos, ese sistema de archivos se ha dejado de utilizar.

Espero les sirva!

El Bizcochuelo de todos los santos – Puno

Cada 1ro de noviembre en esta parte del mundo celebramos el día de todos los santos, en el altiplano peruano y boliviano aprovechamos en visitar las tumbas de nuestros difuntos para limpiarla, adornarla y sobre todo recordar «a quien en vida fue».

El origen de esta celebración es católica, pero gracias a la santa inquisición, y otras atrocidades, es que los nativos enmascaraban sus celebraciones ancestrales en ritos católicos, en muchas partes del mundo también recuerdan a sus muertos en esa fecha, pero aquí es particularmente especial.

Al visitar el cementerio los deudos suelen preparar comida (pan, bizcochuelo, empanadas, galletas y otros) por tres años seguidos después del fallecimiento y ofrecerla como agradecimiento a cambio de un rezo en el altar del difunto, la preparación de estos alimentos puede seguir incluso muchos años después, pero sin la necesidad de ofrecerlos en el cementerio. El cementerio es abarrotado de gente y todos participan visitando altares de amigos, familiares y también desconocidos.

El bizcochuelo que se prepara en esta fecha es el mas preciado por que es muy sabroso y escaso. Al preparar todos esos alimentos debe participar toda la familia, generalmente contratamos un horno rustico y el panadero nos guía con la compra de ingredientes y la preparación. Es toda una fiesta!

Para hacer el bizcochuelo deben batirse 40 huevos con azúcar suficiente, todos los miembros de la familia participan del batido por que es muy duro y debe ser constante hasta que llegue a un punto razonable para mezclar el resto de ingredientes (harina de maíz, polvo de hornear, alcohol, leche,  y otros que no recuerdo muy bien).

Una vez listo se vierte el batido en cajas de papel armadas previamente, de una buena batida pueden salir 24-28 bizcochuelos, nosotros obtuvimos 21 solamente, para una familia numerosa 24 bizcochuelos no es nada, y deben prepararse mas batidos para cubrir la demanda, el trabajo es duro pero vale la pena por que no hay mejor bizcochuelo (o pan) que el preparado por uno mismo.

El horno no debe estar muy caliente, como ven es un horno rústico, aquí algunas tomas adicionales:

 

 

 

El próximo año documentaré mejor esta fiesta por que hay muchos detalles mas, quienes saben de este acontecimiento en el altiplano verán a este post muy pobre.

Update, aquí dejo la receta:
Gracias a Fany del Pilar Choque (*)

BIZCOCHUELOS
18 A 20 CAJITAS (como las de la foto)

INGREDIENTES:
1 Kilo de mandioca
30 huevos (de campo)
1 Kilo de azúcar blanca
1 copa de pisco Bogoña de Limón
2 sobres pequeños de polvo de hornear.
Jugo de 6 limones
Anís

PREPARACIÓN:

  1. En un recipiente grande batir las claras de los 30 huevos hasta que estén a punto de nieve.
  2. Ir agregando poco a poco las yemas sin dejar de batir, ni perder la consistencia de la mezcla.
  3. Agregar el azúcar poco a poco, sin dejar de batir hasta que la mezcla esté homogénea.
  4. Utilizamos un cernidor o colador para añadir a la mezcla la mandioca y el polvo de hornear, a la vez se le añade el jugo de limón más la copita de pisco, sin dejar de mezclar.
  5. Colocamos la mezcla en los moldes enharinados, esparcimos un poco de anís en la superficie para que le dé un sabor más agradable.
  6. Los metemos a un horno rústico con una temperatura regular, no muy caliente, por lo menos por 15 minutos.

 

(*) Fany comenta: Resaltan los que hacen los bizcochuelo «con énfasis» que los huevos deben ser de preferencia de gallinas de campo o criadas por uno mismo, porque «dicen» que sus yemas tienen mejor color (más anaranjados), esto para que los bizcochuelos salgan con un aspecto más apetecible.

Mi archivo .vimrc

Ha sido duro aprender a usar vim, sinceramente no es facil, pero cuando uno se acostumbra a la forma de trabajo de éste poderoso editor no puedes dejar de usarlo. No uso otro editor de texto a menos que sea completamente necesario, los archivos que son mas frecuentes para mi son archivos fuente de C/C++, PHP, Python, Texto plano, HTML, Bash, y archivos de configuración de Ubuntu.

Existen muchos editores para programar como Netbeans, Codeblocks, etc, etc… pero por alguna razón prefiero usar vim.

Quiero compartir con ustedes parte de mi archivo .vimrc que es cargado cuando el editor es invocado. Puede contener todo lo que necesiten, podría considerarse como un archivo de configuración, aquí les dejo mi archivo comentado.

"Habilitar el resaltado de la sintaxis
syntax enable

"Para que los tabs no ocupen mucho espacio
set shiftwidth=4
set tabstop=4

"Si estamos usando gVIM entonces cambiamos el
"esquema de colores (no me agrada el fondo blanco)
if has("gui_running")
	colorscheme torte
endif

"Muestra los comandos que estamos por ejecutar (para evitar desastres)
set showcmd

"Habilita la sangría automática para archivos fuente
autocmd BufRead,BufNewFile *.c,*.cpp,*.h,*.php,*.htm,*.html set cindent

"Plantillas de archivos: podemos tener archivos fuente como plantillas
"de tal modo que nos ahorramos en escribir unas cuentas lineas de codigo
"por ejemplo si creamos un nuevo archivo .cpp cargamos un Hola mundo

autocmd BufNewFile *.cpp 0read ~/apps/confs/template.cpp
autocmd BufNewFile *.php 0read ~/apps/confs/template.php

"Para ver los números de linea
set number

El archivo no esta completo, por que tengo varias funciones implementadas que amerita otro post.

Mostrar posts de phpBB en una pagina externa

phpBBAlgunas veces queremos mostrar el contenido del post de phpBB en una pagina externa (fuera del foro) pero suele ser frustrante estudiar y utilizar el código de phpBB para extraer (inclusive) un texto simple, las medidas de seguridad contra el SPAM hacen que el código tenga niveles de complejidad difíciles de comprender.

Después de algunas horas estudiando el codigo y algunos tutoriales publicados sobre como extraer entradas del foro, estoy logrando migrar todos los artículos a phpBB de tal forma que va a ser mucho mas facil para los miembros de Latindevelopers publicar sus propios artículos.

Desistí de usar phpBB CMS Mod por que aun no esta listo y complicaría la migración, me parece mas como usar phpBB, lo único que me preocupa es que aparezcan algunos agujeros en la seguridad de phpBB, pero ya me ha pasado y no creo que sea gran cosa.

Aqui comparto el código para poder mostrar un post de phpBB fuera del foro, pero no esta todo el codigo, deben leer el articulo antes de usar el siguiente codigo, hice algunas modificaciones:

$posts_ary = array(
        'SELECT'    => 'p.*, t.*, u.username,
                         u.user_colour, p.bbcode_bitfield ',
        'FROM'      => array(
            POSTS_TABLE     => 'p',
        ),
        'LEFT_JOIN' => array(
            array(
                'FROM'  => array(USERS_TABLE => 'u'),
                'ON'    => 'u.user_id = p.poster_id'
            ),
            array(
                'FROM'  => array(TOPICS_TABLE => 't'),
                'ON'    => 'p.topic_id = t.topic_id'
            ),
        ),
        'WHERE'     =>  'p.post_id = ' . $post_id_article ,
        'ORDER_BY'  => 'p.post_id DESC',
    );

$sql = 'SELECT *
    FROM ' . ATTACHMENTS_TABLE . '
    WHERE post_msg_id = '.$post_id_article.'
            AND in_message = 0
    ORDER BY filetime DESC, post_msg_id ASC';
$result = $db->sql_query($sql);
$attachments = array();
while ($row = $db->sql_fetchrow($result))
{
    $attachments[$post_id_article][] = $row;
}

$db->sql_freeresult($result);

$posts = $db->sql_build_query('SELECT', $posts_ary);
$search_limit = 1;
$posts_result = $db->sql_query_limit($posts, $search_limit);

if($posts_row = $db->sql_fetchrow($posts_result))
{
    $topic_title = $posts_row['topic_title'];
    $post_author = get_username_string('full',
                      $posts_row['poster_id'],
                      $posts_row['username'],
                      $posts_row['user_colour']);
    $post_date = $user->format_date($posts_row['post_time']);
    $post_link = append_sid("{$phpbb_root_path}viewtopic.$phpEx",
                  'f=' .$posts_row['forum_id'] .
                  '&t=' . $posts_row['topic_id'] .
                  '&p=' . $posts_row['post_id']) . '#p' .
                   $posts_row['post_id'];
    $bbcode_bitfield = $posts_row['bbcode_bitfield'];

    $post_text = nl2br($posts_row['post_text']);

    $bbcode = new bbcode(base64_encode($bbcode_bitfield));
    $bbcode->bbcode_second_pass($post_text,
                                $posts_row['bbcode_uid'],
                                $posts_row['bbcode_bitfield']);

    $post_text = smiley_text($post_text);

    parse_attachments($forum_id,
                        $post_text,$attachments[$post_id_article],
                        $update_count);

    echo $topic_title."
"; echo $post_text; }

Al ejecutar el código podran ver la entrada, pero tambien tienen que copiar los estilos relacionados con el tema que estan usando, incluso los archivos javascript.

CMS based on phpBB posts

Palomas: Ratas del aire?

Como hacer popo sobre los humanos en 12 pasos.Hace mucho tiempo cuando escuchaba Radio Programas había un espacio al cual esperaba ansioso todos los días, aunque era breve se podía esperar cualquier cosa del locutor, como un comentario desafortunado, una receta de comida, una critica literaria, una lectura… etc. dicho espacio se llamaba «El Oso Hormiguero» y el narrador era el poeta Antonio Cisneros.

Recuerdo muy bien uno de esos días en el que empieza el programa y el Oso Hormiguero muy molesto arremete contra las Palomas llamándolas «ratas del aire» y expone sus motivos razonables. Hace unos días leí que hallaron ~50 palomas muertas en Lima e inmediatamente se me vino a la mente el Oso Hormiguero, debe ser imposible que sea el autor de tal crimen, pero en una ciudad tan grande y convulsionada como Lima suceden peores crímenes.

Noticia: Hallan 50 palomas muertas, Palomas producen hongos

No llegue a encontrar los audios del Oso Hormiguero pero encontré unas notas relacionadas al tema, lo que demuestra que no soy el único al que le llamo la atención. Incluso he logrado encontrar una pagina en Facebook a favor de la exterminación de estas aves.

Entrevista a Antonio Cisneros:

«–Hablando de aves, alguna vez confesaste una fobia por las palomas. ¿Cambiaste de opinión?
–No. Las palomas son detestables. Son las ratas del aire. Son animales parásitos, son carnívoros, matan a sus críos. Son predadores, matan por matar. En eso se parecen a los humanos. No se ganan su comida. Si no hubiera humanos, no habría ratas ni habría palomas.»

Tomado de: “No se piense que la ironía en mi poesía es un recurso, así soy yo»

«Por ser un amante convicto y confeso de esta práctica resultó un paso natural desarrollar un negocio de control biológico a través de halcones y gavilanes en los viñedos y las fábricas atacadas por plagas de aves, las ratas del aire descritas por el poeta Antonio Cisneros. En un futuro no tan lejano, José Diego también espera poner en práctica la cetrería para espantar en los aeropuertos a gallinazos y golondrinas. Es cuestión de paciencia para que eso ocurra, refiere.»


Tomado de: Somos compatibles con la naturaleza

Personalmente no tengo nada contra estos seres y nunca he tenido ningun incidente con ellos (o ellas), pero he visto el daño que hacen cuando son numerosas (muy numerosas), es interesante escuchar las opiniones al respecto por que son diametralmente opuestas, resulta hasta diverdito escuchar a los que están a favor de exterminarlas.

A todo esto, nunca he leido a Antonio Cisneros, me animé a comprar uno de sus libros.

Peruanismo: «No tendría caserito»

Sabemos que en el Peru hay un excesivo uso de Peruanismos (faltaba mas!) es pan de cada dia leer y escuchar cada ocurrencia, pero hay una en particular que me hace salir el #instintoasesino.

Sucede cuando uno esta por comprar cualquier cosa de una bodega/tienda y pregunta por el precio o disponibilidad y recibe una respuesta generalmente muy amable: «No tendría» o «No tendría caserito«.  Talvez no tenga sentido darle importancia a tal respuesta, pero es inevitable pensar en la semantica… bueno en fin es solo un comentario de este blogger gruñon.

Para quienes no conozcan la «jeringa» peruana, aqui una muestra: