Lunes 27 de abril de 2015

Jesus Palencia

Monitorea tu conexión a Tor utilizando Tor-arm

Tor-arm (Tor anonymizing relay monitor) es un monitor de estado para Tor, funciona de manera similar a TOP mostrando estadísticas en tiempo real de varios elementos relacionados con Tor.

  • Uso de recursos (RAM, CPU, Ancho de banda)
  • Información del relay (nickname, huella, etc.)
  • Bitácora de eventos.
  • Validación de la configuraciones alojadas en torrc.

Su instalación en Debian y derivados es bastante sencilla, solo debe ejecutar el siguiente comando (como root).

# apt install tor-arm

Luego de instalar, solo hace falta abrir un terminal como root y ejecutar el siguiente comando.

# arm

Al ejecutar podremos ver algo como esto.

Espero que esta información les sea útil, saludos…

Mas información:

Archivado en: Anónimo Tagged: monitoreo, tor, tor-arm

Domingo 26 de abril de 2015

Instalar Modem Axxesstel inalámbrico en Debian/Canaima

Hoy me encontraba en el FLISOL y alguien llegó con una Canaimita y un Modem Movilnet Axxestel MU130 como el de la foto:


Aunque el procedimiento lo hice en la Canaimita, prometí documentarlo por si a alguien más le servía.

Modems, USB, modeswitch

Cuando se conecta un modem, lo primero que hace el equipo es detectar si existe una manera de “operar” con él, de no existir, el dispositivo se monta como un “CD-ROM” desde el cual instalar los drivers, esto es verdad en Windows, más no en Linux, en Linux el “switch” o paso de CD-ROM a MODEM lo hace una aplicación conocida como usb_modeswitch, lo que hace esta herramienta simplemente es buscar en una lista de dispositivos (de los que ella sabe como hacer el “switch”) el dispositivo actual y “cambiarlo” automáticamente a modo modem.

Entonces, comenzamos por allí, el usb_modeswitch

Configurar USB_Modeswitch

En general, la base de datos de dispositivos es alimentada continuamente, pero para personas que no actualizan su sistema a menudo (o distribuciones como Canaima, donde están congelados en Debian Estable), es menester actualizar manualmente la data de usb_modeswitch.

Primero, averiguamos el Device ID, eso lo hacemos con lsusb luego de conectado:

lsusb -v -d 1726:f00e
Bus 001 Device 015: ID 1726:f00e Axesstel, Inc.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
(... más info ...)

El dispositivo debe pasar del id 1726:f00e (modo: cdrom) al 1726:a000 (modo modem), esto lo podemos hacer manualmente con el siguiente comando de usb_modeswitch:

usb_modeswitch -v 1726 -p f00e -V 1726 -P a000 -M 5553424312345678000000000000061b000000020000000000000000000000

Esto creará el dispositivo modem y ya podrán usar network-manager para configurar la conexión.

Luego, fijaremos esa configuración en usb_modeswitch:

creamos el archivo: /etc/usb_modeswitch.d/1726:f00e

Y agregamos:

# Axesstel MU130

Ahora, creamos un archivo que ejecutará todo el proceso de montaje y configuración del modem vía udev, creamos el archivo:

archivo: /usr/bin/

usb_modeswitch -v 1726 -p f00e -V 1726 -P a000 -M 5553424312345678000000000000061b000000020000000000000000000000
modprobe -v usb_wwan
modprobe -v option
echo '1726 a000' > /sys/bus/usb-serial/drivers/option1/new_id

(nota: la línea desde usb_modeswitch hasta la cadena de ceros es una única línea).

chmod +x /usr/bin/

Ahora, pasamos a configurar udev.

Configurar udev

Con udev, los dispositivos detectados por el kernel Linux son instalados y/configurados, en nuestro caso, tenemos un USB que pediremos ejecutar el script /usr/bin/ cada vez que lo conectemos.

Creamos el archivo:

archivo: /etc/udev/rules.d/80-axxesstel.rules

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1726", ATTR{idProduct}=="f00e", RUN+="/usr/bin/"

Reiniciamos udev:

service udev restart

Y ya estamos listos!, cada vez que conecten el USB, se ejecutará el script que lo configura en usb_modeswitch, lo convierte en modem y ya podrán usarlo.


The post Instalar Modem Axxesstel inalámbrico en Debian/Canaima appeared first on Phenobarbital con Soda.

Viernes 24 de abril de 2015

Jesus Palencia

Búsqueda Implacable en Firefox: MiniserieFirefox Ep.2 Búsquedas

Enlace al vídeo en Youtube

Visto en Mozilla Perú


Archivado en: Mozilla Tagged: busqueda, firefox, miniserie, mozillaperu
Javier Valdivé

Javier Valdivé

Elementary Freya 0.3 - Escritorio Abril 2015

Jueves 23 de abril de 2015

José Miguel Parrella Romero

José Miguel Parrella Romero
null pointer dereference

Why we go to LinuxFest Northwest

For the second year in a row since I moved to Redmond, I’ll be joining the Microsoft crew sponsoring and attending LinuxFest Northwest in Bellingham, Washington. This is one of the largest, if not the largest Linux & open source event in the region and draws large crowds of smart geeks from Canada, the United States and other countries, as well as corporate sponsors like us.

One of the questions I get the most is why does Microsoft sponsors and participates this event? Microsoft has been sponsoring and participating in many open source conferences, projects and events in many parts of the world but some people are wondering why a non-corporate, pure Linux event, and some others are naturally skeptical about it.

I don’t think there’s a single reason why we rally to convince our bosses to do it, but we have been trying to do more closer to home, when it comes to open source. There is a vibrant Linux and open source ecosystem in Redmond, the Puget Sound area and the Pacific Northwest and while we have been very active in Europe and in the Bay Area, we haven’t done a good job of connecting with the people closer to home.

For example, I recently had the fantastic opportunity to help the Pacific Northwest Seismic Network from the University of Washington to run their Ubuntu-based Node.js applications for their “Quake Shake“. I think being able to help with that project or with any other project or conference in any other part of the globe is a good thing – but there’s no distance excuse for Bellingham!

Another great reason is the LFNW community itself. We love the crowd, the lively discussions, the sharing and learning spirit. And as long as we are welcome by the community we’ll continue to seek opportunities to connect with it. Plus, this is a really cool conference. This year, I’m cutting my vacations to attend the event. A coworker is skipping church duty to help. We have heard from many engineers and program managers that they will be attending and want to carpool and staff the booth. And my friend has been investing all this time in logistic ensuring we are having a meaningful presence.

The community invites some of the sponsors to bring unique content that is relevant to the participants. Last year I had the opportunity to demo a Raspberry Pi device connected to Office via Azure. Most people in the room didn’t know Office runs in a browser, or that Azure could run Linux. But they listened and they thought it was cool. Some of them are now partners, helping customers do more with open source in Azure.

This year, I want to bring more Debian to this event because I have been working a lot inside of Microsoft to get more people up to speed with Debian-based development and we have serious community momentum around Debian in Azure. In true Microsoft tradition, we will have a cake to celebrate the arrival of Debian 8. I’ll have in mind all of those friends in the Debian community with whom I’ve been working with for years to make sure we don’t drop the ball when it comes to responding to what our customers, partners and the community want when it comes to Debian.

And, hopefully, next year we’ll be back again in Bellingham for LinuxFest Northwest 2016!

Miércoles 22 de abril de 2015

Valencia Software Libre: Invitacion: Flisol 2015 Valencia Charlas e Instalaciones
Jesus Palencia

Free to Play

Enlace al vídeo en Youtube

Archivado en: Documentales Tagged: free, videogame

Domingo 19 de abril de 2015

ubuntu-ve: FLISoL 2015

Miércoles 15 de abril de 2015

Valencia Software Libre: Flisol 2015 Valencia Carabobo

Domingo 12 de abril de 2015

José Miguel Parrella Romero

José Miguel Parrella Romero
null pointer dereference

Thoughts on growth and open source services

For many years I was infatuated with the idea of creating value out of open source professional services. To a certain extent, this is a function of when, where and how I was exposed to open source. Even today, after acknowledging the challenges of this model (the hard way) I find myself spending time modelling what needs to change in order to innovate it.

While today there are statistically no skeptics of the tremendous impact that open source software has had in and beyond the IT industry, thinking prevails that the open source opportunity doesn’t lay on professional services.

It’s commonly accepted that only a handful of players have found success in this model. In fact, some would argue that it can only be one that exhausts it for everybody else. Media commentators shun on rising startups whose business model smells too much of support and services.

As Ben Werdmüller recently wrote (motivating me to write this article) those services are not recurring and not scalable. And there’s also proof in the market that well designed, talented and recognized organizations eventually fail in their efforts to seize the open source consulting business.

Back in 2008, after 5 years selling open source services either as a freelancer or in small firms, I was invited to lead technical strategy for an open source focused system integrator in Venezuela. The organization had recently scored a support agreement with a large multinational hardware vendor for a subset of their customers’ Linux needs, and they were looking for a portfolio and an attractive environment for talent and for growth.

I spent the next 3 years building a team of 50+ in several countries in Latin America, shipping open source products and solutions and managing large consulting projects for customers in the public and private sector. That support agreement became 3 partnership agreements with large IT multinationals. Yet with all the impact, the challenges of dealing with the subtleties and complexities of the open source professional services challenge remained unaddressed.

There were numerous learnings I grabbed from that experience, ranging from managing a team of talented professionals who went on to highly successful roles in Europe and the Americas, to the art of marketing something as bland and commoditized as open source consulting.

Among the fun learnings: with a highly mobile talent pool in multiple countries we managed our daily operations via IRC. We also built a lean-and-mean sales process led by the delivery teams, not sales, embraced document and knowledge management and invested in the communities and ecosystem that help open source be successful.

But I digress. Portfolio-wise, we had organized our offering in three core areas (infrastructure, applications and databases) and a number of incubation areas that gave us a unique competitive advantage such as knowledge management and end-user experience (we focused a lot on Linux in the desktop) or business intelligence and unified communications. All with open source, all with Linux.

Yet market disruptions, such as government policy in an economy where public sector concentrates an overwhelming amount of spending power, contributed to mask the unaddressed. Since 2004, there was a stated pro-open source policy in the public sector which evolved into a number of unstated policies trickling to public and private sector alike.

When this policy was introduced there was a small talent pool to cover the complex needs of a public sector that sprawled beyond the vertical with plenty of Oil & Gas, Financial Services, Manufacturing and other needs. Furthermore, virtually no relevant foreign organization took advantage of this opportunity due to general market conditions, a difference between how similar policies were rolled out in, for example, Ecuador (where the US dollar is the local currency)

Therefore, supply and demand reality made margin management, a critical discipline in the services business, an afterthought. Plus, the depth and quality of our technical results was a catalyst for business opportunities so marketing wasn’t really in the picture. We were a go-to open source consulting company and we got away with selling bland OpenLDAP clusters and Asterisk IPBX as if they were actual products, repeatable and scalable.

And in exploring other models we found support was something we actually enjoyed: we were really proactive and fanatical about it and generally speaking never had to sell a support agreement. In the training side of things we managed to set consistency standards across courses and deployments but all accrued to that non-recurring base of services, to that dreaded hourly rate. So they were never differentiated sources of growth as it always converged in a consulting project.

At some stage we did invest in a products team that explored all the right things which years later hit the market (agile embedded with general purpose Linux OS, SaaS and cloud-powered IPBXs, analytics and insights, etc.) but the reality is that our operation corpora was built on a professional services foundation which made it unrealistic to detach. We tried using a different brand for our product labs, but the talent we had attracted and developed thrived in services.

I still see the boundaries of a VAR, an ISV and an SI as pretty artificial in the open source world, just as I find it less relevant to look at the boundaries of development and IT professionals with an open source hat on. Of course the business models are different, some are based in volume and depend on marketing and channel while others are based in margin and depend on trust and references. This mix is not different from what we’re seeing today in open source startup IPOs.

Today I don’t struggle to articulate a value proposition or find demand for the open source capabilities I’m selling. I’m struggling to find the right partner to help me scale. And I refuse to believe I can only go to a global SI or a well-known Bay Area ISV for those needs, when I have lots of VARs, SIs and ultimately great people in local markets who can land meaningful solutions. Yet I’m wary about putting all the eggs in the basket of building value out of open source professional services.

We’re now living interesting times where the successful players in this space are crowd sourcing services growth via channel. This is a fascinating move from an open source support and services behemoth and has a lot of potential if it can connect the local talent with consistency that accrues to growth.

In the meantime, common sense will still indicate that entering the market to sell non-repeatable open source professional services can be highly rewarding in developing people, acquiring and developing know-how and making an impact. It can even help reduce the consumption gap for a complex product and help build market share. It just doesn’t seem to be a high-growth strategy for most people out there.

Lunes 06 de abril de 2015

Como migrar tu base de datos de WordPress desde tu servidor local a producción

Generalmente si eres un buen desarrollador, tendrás tu entorno de desarrollo (servidor web, base de datos, etc) instalado en tu máquina local. De esta manera, puedes trabajar rápidamente al evitar solicitudes al servidor web remoto cada vez que realices modificaciones en un archivo o necesites visualizar cambios (por nombrar ejemplos), además, no requieres conexión a Internet, por lo que si ocurre una falla con el servicio o estas usando el ancho de banda para descargar cosas, no afectará tu flujo de trabajo.

En el caso de WordPress, existen dos opciones de configuración: home y siteurl que indican las URLs de la página inicial y sitio respectivamente. Por ello al realizar una instalación y configuración local, éstas variables tienen valores que apunta a localhost. Entonces, al momento de migrar la base de datos al servidor de producción, muchos enlaces quedan bajo el dominio localhost y no al dominio del sitio. Cambiar estos valores no ayuda mucho, pues si tienen imágenes, vídeos y archivos enlazados a contenidos creados dentro del editor, verán que no son accesibles porque siguen apuntando a localhost.

Para cambiarlo, se puede hacer con WP-CLI que es una útil herramienta de interfaz de comandos para WordPress, donde puedes administrar el sitio, datos, respaldos, entre otras cosas, sin salir de la consola. Pues para renombrar los URL de localhost a tu dominio, simplemente debes ejecutar los siguientes dos comandos.

Instalas wp-cli en tu sitio wordpress de producción usando curl:

curl -O

Luego ejecutas el comando search-replace cuyo primer parametro es la dirección actual (la local) y el segundo la dirección final del sitio:

wp search-replace 'http://localhost/sitio-de-desarollo' ''

En caso que no te sirva el comando anterior porque no tienes configurado para la ejecución de archivos PHP automáticamente desde la consola ejecuta:

php wp-cli.phar search-replace 'http://localhost/sitio-de-desarollo' ''

¡Listo! El comando se encargará de buscar en la base de datos cualquier referencia y la actualiza.

P.D: Si siempre trabajas en el servidor de producción o en un servidor remoto, estas perdiendo tiempo, ancho de banda, recursos y sobre todo dinero. ¡Aprende a optimizar!

Domingo 05 de abril de 2015

Héctor Colina

Ip real detrás de proxy web

Una de las acciones más utilizadas en el mundo de la virtualización es la de tener un proxy web que reciba todas las peticiones web que llegan al dom0 y pasarlas a las correspondietes VM que estén bajo su control y que puedan respondar a las respectivas peticiones web.

Sin embargo, la configuración estandar impide que podaos ver, por ejemplo, las direcciones IP reales que llegan a la VM, obteniéndose, en su lugar, la IP del dom0:

  IP CLIENTE          IP DOM0          IP LOG EN VM
==============      ==============     ===============
|190.9.XX.XX | -->  || --> | |
==============      ==============     ===============

Lo anterior podemos verlo en el siguiente trozo de log de un servidor lighttpd que responde peticiones provenientes de un servidor proxy web que funciona en nginx – – [05/Apr/2015:08:36:12 -0430] “GET / HTTP/1.0″ 404 345 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0″

Lo que deseamos es que el campo de la ip nos muestre la ip real del cliente que hace la conexión y no la ip del dom0.

La solución correcta en lighttpd es a siguiente:

a) Configurar y activar el módulo accesslog de lighttpd; en debian este módulo tiene su archivo de configuración aparte, ubicado en /etc/lighttpd/conf-available:

a-1) Configurándolo: para ello agregar al archivo /etc/lighttpd/conf-available/10-accesslog.conf la siguiente cadena al final del mismo:

accesslog.format = “%{X-Forwarded-For}i %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\””

a-2) Activar el módulo:

lighty-enable-mod accesslog

b) Configurar el módulo extforward, para ello, en su archivo de configuración de lighttpd coloque:

extforward.forwarder = (
     "" => "trust"
extforward.headers = ("X-Cluster-Client-Ip")

Nótese que la ip colocada acá es la del dom0 que se conecta con las VM, en nuestro caso es

c) Reiniciar lighttpd

Es muy importante el paso a-1 ya que muchos tutoriales no indican que debe colocarse la cadena %{X-Forwarded-For}i lo cual impide conocer la ip real.

Al finalizar esta configuración, el log del lighhtpd configurado en la VM debe mostrar algo como:

190.77.XX.XX – – [05/Apr/2015:08:52:45 -0430] “GET / HTTP/1.0″ 200 2682 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0″

Quedando nuestro esquema, entonces, de la iguiente forma:

  IP CLIENTE          IP DOM0           IP LOG EN VM
==============      ==============     ===============
|190.9.XX.XX | -->  || --> | 190.9.XX.XX |
==============      ==============     ===============

Espero disfruten la ayuda :-D

Viernes 03 de abril de 2015

Carlos Colmenarez

Carlos Colmenarez
El Blog de Zero » LINUX

¿Qué son los repositorios en Linux?

Los repositorios forman parte de todas las distribuciones Linux y cumplen un rol muy importante ¿pero que son?

Hace poco les hablábamos de algunos términos relacionados con el software libre que seguramente habías escuchado, repositorio es uno de ellos. Saber que son y como funcionan nos ayudara a mantener mas eficientemente nuestra instalación.

Los repositorios en Linux son grandes bancos de datos o servidores que alojan las aplicaciones que tu sistema necesita, entre ellos paquetes nuevos y actualizaciones que se instalan mediante un manejador de paquetes. Como ves, no solo contienen los paquetes no instalados previamente sino que gracias a sus actualizaciones mantienen tu sistema al día. Ahora, hay dos tipos de repositorios, los oficiales y no oficiales.

Tipos de repositorios

Los repositorios oficiales contienen las aplicaciones que tu distribución soporta y que, dependiendo de sus políticas, muchas veces cuentan con un protocolo de revisión muy riguroso para asegurarse de que todos los paquetes que contienen se encuentran en estado óptimo y no representan riesgos de seguridad o estabilidad para el sistema. Por ejemplo, en Arch Linux, algunos de los repositorios oficiales son Core, Extra y Community. Cada uno de ellos contiene paquetes de diferente índole como systemd, xorg, chromium y gnome por mencionar algunos.

Los repositorios no oficiales contienen paquetes de aplicaciones no soportadas directamente por la distribución, por lo tanto carecen de los protocolos de revisión que mencionamos anteriormente y, aunque contienen aplicaciones muy útiles para tu sistema, deben ser manejados con cuidado. Estos repositorios son mantenidos por comunidades organizadas de usuarios y al ser no oficiales no están incluidos por defecto en las listas de repositorios, pero pueden agregarse muy fácilmente. Por ejemplo, para el caso de Ubuntu, los repositorios no oficiales son los PPA (de Personal Package Archive) y en ellos podrás encontrar paquetes como VLC, Turpial y Gimp.

Las distros derivadas usan los mismos repositorios de sus distribuciones padres. Por ejemplo, Linux Mint utiliza los mismos repositorios que Ubuntu, su distribución padre, al contrario de Linux Mint Debian Edition que usa los de Debian.

Para sacar la mejor ventaja de los repositorios en Linux, oficiales y no oficiales, debes elegir muy bien cuales agregas. Es importante que conozcas las fuentes de tus aplicaciones y las versiones de los paquetes que estas instalando pues de esta manera te aseguras de no comprometer tu sistema. Conocer cómo funciona el manejador de paquetes también es muy importante, pues éste es tu intermediario con los repositorios. Para mas información, no dudes en visitar la documentación oficial de tu distribución.

Jueves 26 de marzo de 2015

Carlos Colmenarez

Carlos Colmenarez
El Blog de Zero » LINUX

10 razones por las que Firefox es mejor que Chrome

El navegador de Internet Firefox es mejor que Chrome en ciertos aspectos. Veamos qué podría aprender Google de él.

Hace unas semanas decidí darle una oportunidad a Firefox, uno de los exploradores de Internet más usados hoy en día. Habiendo sido un usuario fiel durante años de Google Chrome (y de Chromium en Linux) no estaba seguro de lo que me iba a encontrar. Las únicas veces que usaba Firefox eran de pasada en los ordenadores de la universidad, simplemente porque aparte del infame Internet Explorer era el único navegador de Internet instalado en ellos.

Durante este tiempo, he descubierto lo mucho que ha ido evolucionando Firefox durante estos años y lo diferente que es la nueva experiencia de usuario que ofrece este explorador. Por mucho que me guste Google Chrome, hay varios aspectos que desearía que fueran diferentes. Por todos ellos, he decidido recopilar unas cuantas razones por las que pienso que Firefox es mejor que Chrome.

Como en todo artículo de opinión, lo que vais a leer se basa principalmente en opiniones subjetivas. Nadie tiene la verdad absoluta en lo que a navegadores de Internet se refiere, pero en mi caso se que Firefox cumple con lo que necesito. Veamos cómo lo hace.

1. El uso de memoria RAM

La razón principal por la que decidí dar el salto a Firefox era el excesivo consumo de memoria RAM que hacía Google Chrome en mi PC. Siempre había estado contento con los 6 GB de mi portátil, pero a cada versión nueva de Chrome tenía la sensación de que el hambre de este explorador aumentaba. Además, siendo yo un consumidor de pestañas patológico (decenas de pestañas abiertas) mi memoria RAM se esfumaba enseguida. Firefox necesita menos recursos, por lo que puedo tener más cantidad de pestañas abiertas.

2. Personalización por defecto de los elementos de la interfaz


La personalización de Firefox la podemos dividir en varios aspectos. En este punto, vamos a hablar de las configuraciones que le podemos hacer a la interfaz por defecto. En el explorador del titán de los buscadores, apenas podemos configurar la interfaz; cambiar los botones de las extensiones de orden y hacer aparecer la barra de marcadores es lo único que seremos capaces de personalizar.

Sin embargo, en Firefox podremos personalizar la posición de absolutamente todo. Desde la posición de los botones y las barras de navegación, a poder añadir botones nuevos al menú.

3. La experiencia de uso en las pestañas

¿Habéis abierto muchas pestañas en Google Chrome? Llega un momento en el que no ves que es lo que has abierto porque no se ve el icono de la página que visitas ni texto alguno en las pestañas. Firefox lo que hace es mostrar unas pocas pestañas y unos controles con los que movernos a las demás, lo encuentro más útil porque me entero de lo que tengo abierto.

4. Personalizar el tema

En Google Chrome, las personalizaciones de temas no pasan de cambiar el esquema de colores y el fondo. Firefox, por otra parte, es capaz de hacer eso y más. Mediante extensiones de terceros puedes convertir a Firefox en un navegador único que se adapte a tu estilo de trabajo.

En mi caso que trabajo en un portátil, el espacio vertical es muy importante porque a medida que añadimos elementos como la barra de navegación o marcadores, vamos perdiendo espacio. Por ello he hecho lo siguiente: he puesto una barra lateral de pestañas cuyos títulos se leen sin problemas y que además puedo ordenar en grupos. Y en la barra superior, al pasar el ratón aparecen los controles de navegación y marcadores (puedes elegir lo que quieres ocultar o mostrar) ahorrándome muchísimo espacio. ¿Así no parece Firefox, verdad?

5. Las extensiones

Como habéis podido comprobar en el punto anterior, las extensiones pueden editar cualquier apartado de Firefox. Tienen un control superior sobre el navegador de lo que pueden ofrecer las extensiones de Chrome.

6. Privacidad

No tenemos que olvidarnos de que Google basa su negocio en la publicidad y que para ello debe hacer una recolección de datos de sus usuarios. Si no os gusta que se recojan datos sobre vosotros Firefox es una buena opción, que aporta funciones como decirle a las webs que no nos rastreen, incluye el buscador DuckDuckGo por defecto y nos da la opción de no enviar datos de uso si no queremos.

7. Almacenar datos en tu propio servidor

Cuando usamos Google Chrome, nuestros datos se almacenan en servidores de terceros. En Firefox, por defecto también ocurre lo mismo pero tenemos la opción de alojar nuestros datos en un servidor propio, donde solamente nosotros y los dispositivos vinculados tendrán acceso.

8. Carga individual de pestañas

Si hemos configurado nuestro navegador para que se inicie abriendo las pestañas que estuvimos usando en la sesión anterior, puede ralentizarse un poco. Firefox, por defecto activa la opción de cargar las pestañas al entrar en ellas, algo que en determinados PC es de agradecer.

9. La empresa que esta detrás del proyecto

Los días del “don’t be evil” de Google hace tiempo que quedaron atrás. Es una empresa que se lucra mediante la información que envían los usuarios por usar sus productos gratuitamente. Hay a quien le parecen bien esos métodos, pero para los que no, existe la Fundación Mozilla, empresa sin ánimo de lucro detrás de Firefox. Los principios de esta fundación están muy claros, promover la apertura, la innovación y la oportunidad en la Web.

Saber quien está detrás del producto que usamos es algo muy importante, porque nos da una idea de a dónde pueden evolucionar o qué valores van a defender.

10. Derivados de Firefox


Para finalizar esta lista me gustaría hacer una breve mención a los navegadores de Internet que derivan de Firefox. Entre ellos me gustaría nombrar a Tor Browser Bundle y a Firefox Developer Edition (imagen anterior). Mientras que el primero es un navegador enfocado en la privacidad que utiliza la red Tor (¿hace un paseo por la Deep Web?) el segundo es otro enfocado en los desarrolladores. Hay varios proyectos más pero estos dos son los que más me han llamado la atención.

Al final del día lo que importa es que te sirva a ti

Si Firefox no tiene las características que necesitas no tienes por qué usarlo. Lo realmente importante es que puedas trabajar a gusto en él y ser productivo. Para mí últimamente (a ver cuanto me dura) es Firefox, pero para ti puede ser Chrome, Safari, Opera o incluso Internet Explorer [inserte burla a Internet Explorer aquí].

visto en

Carlos Colmenarez

Carlos Colmenarez
El Blog de Zero » LINUX

6 formas de mejorar tu conexión WiFi

Aunque muchas veces parezca imposible, existen formas de mejorar la conexión WiFi, ya sea con soluciones caseras o invirtiendo en algo de infraestructura.

Qué molesto es trasladar el equipo informático a una nueva habitación de la casa para de repente comprobar que “no le llega bien el WiFi”. Y muchas veces es tan sencillo como ubicar mejor el router o hacer algunos ajustes nada complicados. Para aquellos que se hayan desesperado alguna vez a causa de un alcance deficitario de su red inalámbrica o para aquellos que sean propensos a entrar en crisis si se topan con un problema de este estilo, a continuación ofrecemos una serie de consejos para mejorar la conexión WiFi.

Ubicar mejor el router

A veces el router no se encuentra en la mejor de las posiciones para transmitir su señal. Una habitación situada en el extremo de la casa o los bajos de una estantería no son el lugar óptimo. El dispositivo deberá encontrarse en un sitio central, desde el que pueda ofrecer una conexión fluida a todos los espacios que lo requieran. Si es necesario se puede comprar un cable Ethernet que permita situarlo en la mejor ubicación.

Colocar un segundo router

Otra opción para mejorar la conexión WiFi es establecer un segundo router como otro punto de acceso, que en la práctica actuará como un repetidor de señal. Para esto es necesario conectar los dos puertos LAN de los aparatos. Los dispositivos más nuevos incluso vienen preparados para servir como puntos de acceso. Una vez dentro de su configuración es tan sencillo como hacer clic en una de las opciones. Para los modelos más antiguos hay que mancharse más las manos. La dirección IP debe variar ligeramente de un router al otro, hay que asegurarse de que el SSID y la seguridad son iguales en ambos. Por último, en el segundo dispositivo el protocolo de red DHCP debe desconectarse.

mejorar la conexión wifi

Invertir en infraestructura

Muchos modelos de routers nuevos vienen con antenas integradas, pero hay otros que aún la tienen externa. Por supuesto se puede cambiar por otra de más alcance, lo que debería proporcionar una mejora significativa. También es posible adquirir un repetidor (suele funcionar mejor que aprovechar un segundo router), aunque estos dispositivos no siempre son fáciles de configurar para adaptarse a la red. Por último en el apartado de inversiones siempre existe la posibilidad de comprar un nuevo router, con más potencia y mayor alcance.

Una solución casera

Si lo que queremos es no gastarnos ni un céntimo existen otras formas de mejorar la conexión WiFi, digamos que de manera casera. ¿A alguien le suena cómo crear una antena de televisión con papel de aluminio? Pues básicamente es lo mismo. Este material, así como otros metales, amplían la señal. Se puede colocar detrás de la antena del router a modo de pantalla (orientada según las necesidades), creando un sistema similar al que emplean las antenas parabólicas. Hay quien ha comprobado incluso la efectividad de latas de refresco para este cometido.

Cambiar el canal del WiFi

Los routers trabajan generalmente en los canales 1, 6 u 11. Si el nuestro se encuentra en uno saturado el rendimiento mejorará al cambiarlo a otro. Esta información se puede conocer con la herramienta gratuita inSSIDer, que está repleta de datos, pero sólo hay que fijarse en el parámetro ‘channel’. Posteriormente hay que entrar en la configuración del router para cambiar el canal.

Actualizar el firmware

Los routers también son dispositivos basados en software, pero a éste no siempre se le presta la atención debida, como sí se hace en smartphones o en ordenadores.  Los routers destinados a empresas suelen avisar de las actualizaciones del firmware, pero los que recalan en los hogares no siempre lo hacen (sobre todo los antiguos). Las actualizaciones se pueden buscar en la web del fabricante, descargarlas y después instalarlas desde la interfaz del router.

Pero no sólo los router pueden incrementar su rendimiento si se actualiza su firmware. Lo mismo ocurre con los adaptadores de red o antenas integradas en los dispositivos. Hay que comprobar en la configuración de las redes si la última actualización del fabricante está instalada.

Visto en:

Viernes 20 de marzo de 2015

Material Gráfico FLISoL 2015 – Arte de Afiches y Banners

El FLISoL se nos viene encima y como siempre, por acá les dejo unos artes sencillos que pueden utilizar para invitar a la comunidad a los diversos Flisoles que se realizarán en toda Hispano-américa. En el tar.gz encontrarán los siguientes materiales:  URL A TODOS LOS ARCHIVOS


  • Banner Leaderboard medium de 728 x 90 – png y svg


  • Cuadrado de 200 x 200 – png y svg


  • Medio Rascacielo de 120 x 600 – png y svg


  • Afiche tamaño Carta – png y svg

Flattr this!

Lunes 16 de marzo de 2015

Aumenta la seguridad de tu sesión en WordPress

Una de las principales preocupaciones de los usuarios de WordPress es el acceso al panel de administración, pues por defecto se encuentra en la ruta /wp-admin y está compuesto de un simple formulario que puede ser atacado por fuerza bruta. Por eso les voy a recomendar dos complementos para aumentar la seguridad de inicio de sesión de WordPress, al implementar autenticación de dos factores (Two Factor Authentication) y cambiar la ruta por defecto del formulario de inicio de sesión:

  • Rename WP Login: es un plugin muy liviano y sencillo, simplemente te permite definir una url personalizada para el formulario de inicio de sesión en la pantalla de enlaces permanentes, como por ejemplo Aunque en el título dice que el plugin no tiene soporte, el autor se refiere a que no posee tiempo para resolver cualquier duda que se presente en los foros , sin embargo, acepta parches de código, nuevas funcionalidades, correcciones de bugs, entre otros. Por lo que puedes instalarlo sin preocuparte de que esté obsoleto.
  • Clef: un plugin recomendado por Manuel Camacho, consiste en una autenticación de 2 factores, es decir, aparte de brindar una información que solo tú conoces, debes dar información generada de un objeto que tienes contigo (el móvil o una tarjeta por ejemplo). En este caso, una vez que instalas el plugin la pantalla de inicio de sesión cambia a una especie de QR dinámico, el cual debes escanear con tu teléfono móvil a través de la aplicación Clef, una vez que reconoce el patrón único automáticamente inicia sesión en el sitio, lo chévere es que desde el teléfono controlas el tiempo de sesión e inclusive cerrarla remotamente. También se configurar para usar el inicio tradicional como respaldo en caso de que no tengas el teléfono contigo.


Clef en el blog

Ejemplo de como funciona Clef

Con estos 2 sencillos plugines que puedes instalar y configurar en poco tiempo, podrás aumentar la seguridad en tu sitio con WordPress, o mejor aún, el de tus clientes. Finalmente, si conocen alguna alternativa o desean compartir información adicional, no duden en dejar un comentario para mejorar la seguridad de nuestros sitios.

Domingo 15 de marzo de 2015

Problemas con aplicaciones java en Awesome WM

Download PDF

Ya he hablado en otros posts sobre mi odio a Gnome, y de que ahora en Linux utilizo exclusivamente Awesome WM como mi Windows Manager preferido desde hace varios años. Por cuestiones de mi trabajo, empleo mucho una aplicación para dibujar orbitales moleculares y moléculas en general que se llama: jmol. Jmol está muy bien, y  me parece excelente el hecho de que posee una consola lo que me hace recordar un buen sistema Linux. Sin embargo, está escrita en java…

Últimamente, he tenido problemas para utilizar esta aplicación ya que cada vez que la iniciaba las ventanas no mostraban contenidos.

Al probar en otros DE, como XFCE4, me di cuenta de que la aplicación se mostraba sin problemas. Luego de hacer una pequeña investigación llegué a este link: Básicamente java reconoce una lista de DE entre los cuales Awesome WM no está. Para poder engañar a java, hace falta instalar suckless-tools (me gustó mucho el nombre):


✘ muammar@ihacku ⮀ ~ ⮀ aptitude show suckless-tools
Package: suckless-tools
New: yes
State: installed
Automatically installed: no
Version: 40-1
Priority: optional
Section: x11
Maintainer: Vasudev Kamath <>
Architecture: amd64
Uncompressed Size: 228 k
Depends: libc6 (>= 2.14), libfontconfig1 (>= 2.11), libfreetype6 (>= 2.2.1), libx11-6, libxext6, libxft2 (> 2.1.1), libxinerama1,
libxrender1, libxss1, zlib1g (>= 1:1.1.4)
Suggests: dwm, stterm, surf
Conflicts: suckless-tools
Provides: dmenu, lsw, lsx, slock, sprop, sselp, ssid, swarp, tabbed, wmname, xssstate
Description: simple commands for minimalistic window managers
This package provides simple commands designed to be used with a minimalistic window manager like dwm but they can be useful in scripts
regardless of the window manager used.

Una vez instalado, podemos hacerle creer a java que estamos corriendo otro WM ejecutando lo siguiente:

✘ muammar@ihacku ⮀ ~ ⮀ wmname LG3D

Y voilà, la aplicación ahora funciona correctamente:



Supongo que debe funcionar en otras muchas situaciones. Espero que esto sea de ayuda cuando tengan problemas con aplicaciones java que no se muestran correctamente debido al WM. Este es otro de esos posts de cosas que no quiero olvidar.

PD. Fuck off java..



Miércoles 04 de marzo de 2015

Practical Bash : comandos útiles de postfix

Practical Bash

Bash siempre ha sido mi herramienta favorita ¿para qué negarlo?, soy un sysadmin perezoso, por lo que hacer scripts que me permitan ejecutar más tareas en menos tiempo, o automatizarlos, o cualquier cosa que me lleve a simplemente hacer mejor mis tareas.

Si aún no has intentado aprender bash, aprendiendo bash mientras escribes comandos útiles para tu trabajo de sysadmin, esta es tu opción.

Practical Bash: comandos útiles para postfix (correo)

Me encontraba apoyando a unos amigos con varios problemas que tenían con su servidor de correo, luego de que, durante la emergencia, ejecuté varios inline-scripts de bash, me dije, “se puede aprender bash sobre la práctica, explicando un comando como este”, y así nació este post.

Me pidieron que los publicara (para que no se perdieran en la cónsola donde los escribí) así que aquí están.

Problema número uno, sobre un permiso negado

Tenían varios problemas con su servidor de correo, el primero de ellos, es que se habían creado “por accidente” un conjunto de buzones con los permisos errados (dovecot por seguridad funciona en un modo multi uid-gid), con lo cual, cuando Dovecot intentaba ejecutar los filtros sieve, aparecía un error y un correo rebotando en la cola:

Al ejecutar:

postqueue -p

Veíamos el siguiente error:

5401A4B8D0 497022 Mon Mar 2 14:31:11
(host[private/dovecot-lmtp] said: 451 4.2.0 <> Execution of Sieve filters was aborted due to temporary failure (in reply to end of DATA command))

Como ven, hay un error en la ejecución de los filtros Sieve, una línea más arriba del error, nos indicaba que el usuario “esiconstruccionguarenas.mir” no tenía permisos sobre su buzón, bueno, un simple:

chown -R esiconstruccionguarenas.mir /srv/correo/buzones/esiconstruccionguarenas.mir

Hubiera resuelto el problema, sin embargo, eran unos 70 buzones, ¿ejecutar el comando 70 veces?, ¡ni pensarlo!, un Sysadmin es ante todo, perezoso, y debe buscar reducir el tiempo que dura mirando la consola.

Entonces, ¿qué hacemos?

La solución en un comando.

Solución: permisos iterados “in-line”

postqueue -p
  • muestra los correos en cola y retenidos por el postfix

El resultado, podemos pasarlo al comando siguiente usando “|” (tubería o “pipe” en inglés).

postqueue -p | grep "Execution"
  • Filtra la cola, por unicamente aquellos que dicen “Execution”
postqueue -p | grep Execution | awk '{print $6}'
  • El comando awk es un procesador de texto (técnicamente es un lenguaje de procesamiento), acá le indicamos “awk, imprime la palabra número 6 de la línea que encontró el comando anterior, fijense, cuenten las palabras, separadas por espacios:
--1-- --------------------2-------------------- -3-   -4- --5-- ------6----
(host[private/dovecot-lmtp] said: 451 4.2.0 <> Execution of Sieve filters was aborted due to temporary failure (in reply to end of DATA command))

Como vemos, el awk me devolverá “<>”.

Nota: notese que “awk” es bastante poderoso y si no sabemos “con certeza” en que término del string está el correo, podemos usar una expresión de búsqueda:

| awk '{for (i=0; i<=NF; i++){if ($i == "4.2.0"){print $(i+1);exit}}}'

Busca la cadena “4.2.0” y devuelve la siguiente palabra ($(i+1)), claro, para términos de facilidad de aprendizaje que este post busca, la primera forma es útil.

postqueue -p | grep Execution | awk '{print $6}' | sed 's/[<>]//g'
  • “sed” también es un procesador de cadenas (sed=”stream editor”), puedes realizar búsquedas o reemplazos selectivos, en este caso, uso una expresión regular de sustitución (eso indica la letra “s”), para buscar lo que está dentro de los corchetes (el símbolo “<” y el símbolo “>”) y reemplazarlo con “nada” (es decir, quitarlo)
{ sustitucion }/{expresión a buscar}/{valor de reemplazo}/{"g" de manera global}
 s / [<>] // g

La “g” al final indica “de manera global”, es decir, quita todas las coincidencias que encuentres, luego del comando, el correo nos queda así:

postqueue -p | grep Execution | awk '{print $6}' | sed 's/[<>]//g' | cut -d '@' -f1
  • “Cortamos” la cadena en el “@” y nos quedamos con el primer término (-f1), entonces nos queda:


Nota: al igual que el “awk” anterior, se podría hacer una expresión que analice la línea y extraer exclusivamente el segmento de texto (el correo) con awk así:

| awk -F"[<>]" '{print $2}'
  • separa lo que está entre “mayor y menor que” e imprimes el bloque de texto ($2) luego del “<“.

Todo esto:

postqueue -p| grep Execution | awk '{print $6}' | sed 's/[<>]//g' | cut -d '@' -f1

Se reduciría a:

postqueue -p| grep "Execution" | awk -F"[<>]" '{print $2}' | cut -d '@' -f1
  • ahora que ya tenemos el “username”, necesitamos ejecutar el comando chown:
postqueue -p| grep "Execution" | awk -F"[<>]" '{print $2}' | cut -d '@' -f1 | xargs -L1 -I% chown -R "%" "/srv/correo/buzones/%"

xargs es un comando que toma el resultado del anterior comando y lo pasa como parámetro(s) del siguiente comando, chown pide el nombre del usuario:

chown -R "(aqui)" "/srv/correo/buzones/(y aqui)"

Por lo que xargs toma la larga lista de correos, la itera línea por línea (-L1), convierte cada línea en un parámetro (-I%) que luego puede usarse como un “placeholder” con “%”, para realizar los reemplazos, el comando final queda:

postqueue -p | grep "Execution" | awk -F"[<>]" '{print $2}' | cut -d '@' -f1 | xargs -L1 -I% chown -R "%" "/srv/correo/buzones/%"

Y con eso corregí los permisos de decenas de buzones con una línea de texto.

Problema 2: spam retenido

Se estaba recibiendo mucho correo de “”, por ausencia de una regla de protección, luego de corregida la regla se detuvo el spam, pero mucho correo se quedó retenido en la cola del postfix, para borrar una correo específico se usa:

postsuper -d [ID del correo en cola: ejemplo: 5401A4B8D0)

Sin embargo, hay 1560 correos (y cientos de correos “válidos” de los usuarios), la pregunta ¿cómo borro específicamente los correos que me llegaron de dicho usuario sin tocar el resto?.
Hacerlo “a mano” tampoco es una opción.

Obviamente, bash vuelve al rescate:

Solución: Tomar parámetros directamente sin xargs

Ya conocemos el comando:

postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
41F9F40515 1178 Tue Mar 3 19:43:11

Nos importa el Queue-ID de cada correo.

  • Ahora, filtramos por el correo que deseamos buscar:
postqueue -p | grep -i ""
  • Nos quedamos con el primer elemento (print $1) (el “queue-id” de cada correo ejemplo: 41F9F40515)
postqueue -p | grep -i "" | awk '{print $1}'
  • Algunos ID en la cola, finalizan con un asterisco (-d ‘*’ dice “cortar por el asterisco), nos quedamos con el primer elemento (-f1)
postqueue -p | grep -i "" | awk '{print $1}' | cut -d '*' -f1

El comando “cut” entonces me permite “cortar” pon un valor específico (en este caso el ‘*’ y quedarse con algún elemento de la cadena cortada.

  • Por último, el resultado se lo pasamos directamente a postsuper, agregando un guión al final, representando la salida del comando cut:
postqueue -p | grep -i "" | awk '{print $1}' | cut -d '*' -f1 | postsuper -d -

Esto borrará todos los correos en cola del sender indicado, sin tocar el resto.

Problema: Contar usuarios enviando correo

Un usuario mal-acostumbrado, coloca una clave sencilla cada vez que puede, pudiendo comprometer servidores de correo al usar su cuenta para enviar spam.

Necesitamos contar cuantos correos diarios envía cada usuario.

Cuando un correo cae a consola, el servicio “postfix-queue manager” responde con una línea como esta:

Mar 3 18:49:54 correo postfix/qmgr[13363]: 0D03A4050A: from=<>, size=4751, nrcpt=1 (queue active)

Si buscamos los “from=<“ podemos encontrar todos los emisores de correo válidos (no rechazados por el servidor y cayeron a la cola del postfix), un usuario con muchísimos correos válidos podría ser un posible emisor de SPAM.

Solución: Ordenar y contar la salida de un comando

Entonces, comenzamos con la búsqueda básica:

  • Filtramos por el postfix/qmgr
grep -E 'postfix/qmgr' /var/log/mail.log

El comando “grep” permite buscar y/o extraer expresiones de cualquier archivo o de cualquier salida de texto.

  • Esto busca todos los “from=” en el mail.log
grep -E 'postfix/qmgr' /var/log/mail.log | grep -E 'from='

Otra forma de escribirlo es:

grep "from=<$1>" /var/log/mail.log | grep "postfix/qmgr"
  • Removemos algunas cuentas que no deseo que salgan en la lista del “from=” (-v operador NOT en grep)
grep -E 'postfix/qmgr' /var/log/mail.log | grep -E 'from=' | grep -vE '(double-bounce|postmaster|fail2ban|www-data|from=<>|clamav)'

grep -v permite indicar “busca todo lo que NO coincida con la expresión”, además -E me permite construir una expresión (“|” representa OR “esto ó esto ó esto” y así suscesivamente), lo que sacamos de la lista es:
– double-bounce (los rebotes de correo)
– from=<> (los correos emitidos por el MAILER-DAEMON)
– la cuenta postmaster
– y los correos de los servicios fail2ban, apache (www-data) y el antivirus (clamav)

  • Como en el caso anterior, con awk, me quedo con lo que está dentro de “<>”
grep -E 'postfix/qmgr' /var/log/mail.log | grep -E 'from=' | grep -vE '(double-bounce|postmaster|fail2ban|www-data|from=<>|clamav)' | awk -F"[<>]" '{print $2}'

La cosa va quedando así:

Ahora viene lo interesante

  • Ordenamos la salida del comando (sort)
grep -E 'postfix/qmgr' /var/log/mail.log | grep -E 'from=' | grep -vE '(double-bounce|postmaster|fail2ban|www-data|from=<>|clamav)' | awk -F"[<>]" '{print $2}' | sort

“sort” es un comando que permite ordenar por muchos criterios los datos que se le pasan.

Con esto, todas las cuentas iguales, quedarán juntas, facilitando el trabajo del comando siguiente.

  • Reducimos la lista a valores “únicos” (uniq), y además, contamos las apariciones (-c) de dichos valores:
grep -E 'postfix/qmgr' /var/log/mail.log | grep -E 'from=' | grep -vE '(double-bounce|postmaster|fail2ban|www-data|from=<>|clamav)' | awk -F"[<>]" '{print $2}' | sort | uniq -c

Nos genera una lista así:


  • re-ordenamos nuevamente, esta vez, por el primer elemento numérico (-n) de la lista:
grep -E 'postfix/qmgr' /var/log/mail.log | grep -E 'from=' | grep -vE '(double-bounce|postmaster|fail2ban|www-data|from=<>|clamav)' | awk -F"[<>]" '{print $2}' | sort | uniq -c | sort -n

Nota: El ordenamiento de “sort” es por defecto, ascendente (de menor a mayor).

  • Por último, nos quedamos con las 10 (-n 10) cuentas que más emiten correo:
grep -E 'postfix/qmgr' /var/log/mail.log | grep -E 'from=' | grep -vE '(double-bounce|postmaster|fail2ban|www-data|from=<>|clamav)' | awk -F"[<>]" '{print $2}' | sort | uniq -c | sort -n | tail -n 10

“tail” devuelve la cantidad “-n” de filas de una salida (ejemplo: de un archivo) que le entreguemos como parámetro.

Por ende, el comando final nos muestra los 10 senders más activos del servidor:


Así, podemos saber qué cuenta está enviando “demasiado” correo.

Problema: Contando autenticaciones correctas y fallidas

Cada vez que alguien inicia sesión en el IMAP dovecot, el servicio dovecot “imap-login” crea una entrada en el log como esta:

Mar 04 01:27:27 imap-login: Info: Login: user=<>, method=PLAIN, rip=, lip=, mpid=9720, secured, session=<ETl1IFAQwQADADCI>

Si por el contrario, se autentica incorrectamente la entrada tiene esta forma:

Mar 03 18:32:46 pop3-login: Info: Disconnected (auth failed, 1 attempts in 2 secs): user=<>, method=PLAIN, rip=, lip=, TLS, session=<w5obVWoQygAKBgDw>

Entonces, conociendo como funcionan awk, sort, uniq y tail, vamos a buscar los usuarios con más inicios de sesión por día:

grep -E 'Login:' /var/log/dovecot.log | awk -F"[<>]" '{print $2}' | sort | uniq -c | sort -n | tail -n 10

Y las cuentas con más errores de inicio de sesión:

grep -i 'auth failed' /var/log/dovecot.log | awk -F"[<>]" '{print $2}' | sort | uniq -c | sort -n

grep -i hace una búsqueda “ignore-case” (insensible a mayúsculas y minúsculas).

De igual manera, como SMTP utiliza autenticación, postfix retorna error de autenticación de aquellas cuentas que están siendo “atacadas” y/o están recibiendo demasiados errores de autenticación:

Feb 23 08:12:38 correo postfix/smtpd[25399]: warning:[]: SASL PLAIN authentication failed: UGFzc3dvcmQ6

Podemos “extraer” la IP y contarlas, para ver desde que “host” estamos recibiendo más autenticaciones erróneas (o pasarlas a iptables y banearlas).


grep -E 'postfix/smtpd' /var/log/mail.log | grep 'authentication failed' | awk -F"[\[\]]" '{print $4}' | sort | uniq -c | sort -n | tail -n10

Nos retornará la lista de las 10 IPs con más errores de autenticación:


NOTA: como el corchete es un símbol de expresión regular, -F”[[]]” usa “\” para escaparlo (])

Por el contrario, esto nos devolverá autenticaciones SMTP legítimas:

grep -E 'postfix/smtpd' /var/log/mail.log | grep 'sasl_username'| awk -F"[=]" '{print $4}' | sort | uniq -c | sort -n | tail -n10

Este comando también se puede escribir unicamente usando grep:

grep -E 'postfix/smtpd' /var/log/mail.log.1 | grep -Po 'sasl_username=\K[^"]*' | sort | uniq -c | sort -n | tail -n 10

grep -Po permite hacer una búsqueda grep por expresión regular (-P) y que me devuelva “exclusivamente” la cadena no-vacía que encontró (-o : only-match)


Bash (y sus variantes) es extremadamente útil y combinado con utilitarios como “awk”, “sed”, “grep”, “cut”, etc se convierte en una herramienta indispensable de todo sysadmin que se respete.

Happy Bashing!

The post Practical Bash : comandos útiles de postfix appeared first on Phenobarbital con Soda.

Martes 03 de marzo de 2015

Pogoplug: instalación de Linux en un disco SATA


Instalar Pogoplug en un disco SATA en vez de un disco USB tiene sus ventajas, los pendrive USB son sensibles a tener una SWAP por las constantes escrituras en la misma, pero además podemos contar con la velocidad SATA2 del pogoPlug para el arranque del sistema.

Luego de la instalación inicial, y de instaladas las herramientas para uboot:

apt-get install uboot-envtools mtd-utils

He decidido tomar el sistema inicial (pendrive USB) y mudarlo a un disco SATA, los cambios son los siguientes:

  • /dev/sda1 es /boot, contiene el uInitrd y el uImage del kernel, formateada en ext3 (lo único que soporta para /boot el uboot del pogoplug).
  • /dev/sda2 es /, formateada en ext4
  • swap de 1GB
  • resto del disco para datos.

Preparando el ambiente

Con el pogoplug iniciado en Debian GNU/Linux, procedemos a cambiar las variables de entorno para que, cuando el equipo arranque por SATA, use las indicaciones que le pondremos.

Primero ejecutamos “fw_printenv” y verificamos que la línea bootargs_sata dice así:

set_bootargs_sata=setenv bootargs console=$console root=$sata_root rootdelay=$rootdelay rootfstype=$rootfstype $mtdparts

Con esto, confirmamos los argumentos de arranque (sobre todo rootfstype y sata_root).

Luego, cambiamos las opciones para que:

  • rootfstype sea igual a ext4
  • que sata_root sea /dev/sda2
fw_setenv sata_load_uimage 'ext2load ide $device 0x800000 /uImage'
fw_setenv sata_load_uinitrd 'ext2load ide $device 0x1100000 /uInitrd'
fw_setenv sata_root '/dev/sda2'
fw_setenv rootfstype 'ext4'

Apagamos el equipo, retiramos el pendrive USB y lo conectamos al equipo donde tenemos conectado el disco SATA para formatear.

Configuración del disco

El disco duro SATA2 (un viejo 320GB que tenía por allí) lo he formateado con las siguientes características:

  • tipo de partición GPT
  • /boot de 128MB
  • / de 10GB
  • swap de 1GB

Notas importantes:

  • usar parted
  • dejar 2048s (2048 sectores) al inicio del disco, esto permite una mejor alineación de las particiones con los sectores del disco
  • Siempre usar “align-check optimal [partition number]” para re-alinear las particiones cuando las crean.

Luego viene el formato:

(NOTA: el proceso lo hice en otro equipo, por ello la unidad es /dev/sdc)

  • Formateo primera partición y desactivo el chequeo automático:
mkfs.ext3 /dev/sdc1
tune2fs -c 0 -i 0 /dev/sdc1
  • Formato en ext4 para /dev/sdc2 (quien será root)
mkfs.ext4 -b 4096 -m 0 -O extents,dir_index /dev/sdc2
tune2fs -o journal_data_writeback -c 0 -i 0 /dev/sdc2
  • Formato para data:
mkfs.xfs  -l internal,lazy-count=1,size=256m -b size=4096 -d sunit=8,swidth=16 /dev/sdc3
  • Y para swap
mkswap -f /dev/sdc4

Con esto, el disco queda listo para recibir el sistema.

Migrando Linux al disco SATA

  • Monto la partición primaria, copio todo /boot/ usando rsync desde el pendrive del Pogoplug-debian hasta dicha partición:
mount /dev/sdc1 /mnt
rsync -avpx --progress /media/POGO/boot/* /mnt/
  • Luego, realizo lo mismo con /
mount /dev/sdc2 /mnt
rsync -avpx --progress /media/POGO/* /mnt/
  • luego en el disco, edito /mnt/etc/fstab para indicar quien es /boot y /
#/dev/root / ext3 noatime,errors=remount-ro 0 1
/dev/sda1 /boot ext3 rw,noatime,nofail,errors=remount-ro 0 1
/dev/sda2 / ext4 rw,noatime,data=writeback,barrier=0 0 1
# data
/dev/sda3 /home xfs rw,noatime 0 0
# swap
/dev/sda4   swap    sw              0       0

Luego de este cambio, procedemos a conectar el disco duro al equipo.

Primer arranque del pogoPlug con SATA

Estén vigilantes del primer arranque, sólo modificamos el arranque SATA, así que aún puede arrancar por USB.

Cuando enciende, primero parpadeará verde, luego un color entre amarillo y verde indicará que encontró el sistema operativo en el disco SATA y luego, un color verde permanentemente fijo, nos indicará que ya el sistema está iniciando.

En caso contrario, arrancará por el sistema por defecto “pogoplug OS” o se reiniciará, simplemente apagamos, conectamos el USB y volvemos a encender.

En próxima entrega, optimizaremos este sistema para aprovecharlo al máximo.


Happy Hacking!

The post Pogoplug: instalación de Linux en un disco SATA appeared first on Phenobarbital con Soda.

Domingo 22 de febrero de 2015

Instalando phpMyAdmin en Debian Wheezy

Saludos a todos

Hace un tiempo publique como instalar un servidor de base de datos MySQL en Debian, en esa oportunidad explicaba como instalar y configurar el servicio del servidor MySQL desde la linea de comando, ahora le ofrezco como administrar gráficamente este servicio de base de datos para usando una herramienta gráfica y Web llamada phpMyAdmin.




Para la instalar phpMyAdmin solo requiere ejecutar el siguiente comando:

# aptitude install phpmyadmin


Luego que termine la instalación de phpMyAdmin puede usarlo accediendo por medio del navegador Web de su preferencia a la dirección http://localhost/phpmyadmin

Bienvenido a phpMyAdmin

Bienvenido a phpMyAdmin

Para acceder a administrar sus base de datos usted allí debe colocar el nombre de usuario y contraseña de MySQL, entonces le mostrar una pantalla principal de gestión de base de datos Web de phpMyAdmin.

Configuraciones generales de phpMyAdmin

Configuraciones generales de phpMyAdmin

De esta forma puede administrar sus base de datos de forma gráfica y a través de la Web usando el navegador de su preferencia.

Ver también

Le recomiendo consultar el siguiente enlace para complementar el conocimiento adquirido en esta entrada en mi blog.

Espero sea de utilidad esta entrada en mi blog.

Ayúdame a seguir escribiendo en mi blog y dona 1 dolar aquí.

Instalación de paquetes Python con Distribute y pip

Previamente explique como hacer instalar paquetes Python con setuptools y EasyInstall y ahora le presento la manera actualmente mas recomendada para instalar paquetes Python con las herramientas Distribute y pip.




Python, Es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y multiplataforma.

¿Qué es Distribute?

Distribute es un conjunto de mejoras en el módulo de la biblioteca estándar de Python: distutils (para Python 2.3.5 y hasta en la mayoría de las plataformas, plataformas de 64 bits requieren como mínimo de Python 2.4) que le permite crear con más facilidad la distribución de paquetes de Python, en especial los que tienen las dependencias de otros paquetes.

Distribute se creó porque el paquete Setuptools actualmente ya no se mantiene. Los paquetes de terceros, es probable que requieran setuptools, que es proporcionado por el paquete Distribute. Por lo tanto, en cualquier momento si los paquetes dependen del paquete SetuptoolsDistribute intervendrá para decir que ya ofrece el módulo de setuptools.

Move from Setuptools to Distribute

Estado actual del Empaquetamiento en Python

El módulo distutils es parte de la librería estándar de Python y aun lo será hasta la versión Python 3.3.

Nota: El módulo distutils será descontinuado en Python 3.3.

El módulo distutils2 (note el número dos) tendrá compatibilidad hacia atrás hasta Python 2.4 en adelante; y será parte de la librería estándar en la versión Python 3.3.

El módulo distutils provee las bases para empaquetar aplicaciones Python. Desafortunadamente, el módulo distutils está plagado de problemas, razón por la cual un pequeño grupo de programadores de Python están trabajando en distutils2. Sin embargo, hasta que distutils2 este completado, se recomienda que en el desarrollador pueda usar tanto el paquete distutils como el paquete Distribute para empaquetar software Python.

Al mismo tiempo, si un paquete requiere el paquete Setuptools, la recomendación es que instale el paquete Distribute, el cual provee una versión más actualizada del paquete Setuptools que el paquete original de Setuptools.

En el futuro distutils2 remplazará a setuptools y distutils, le cual también removerá la necesidad de Distribute. El como del estado anterior distutils será removido de la librería estándar. Para más información, por favor, consulte el Futuro del Empaquetado en Python.

El estado actual de Empaquetado en Python


Ver el vídeo de la PyCon 2011 – Packaging, from Distutils to Distutils2, Packaging or installing a Python application can be extremely painful por Tarek Ziadé esta charla le sumergiera dentro de las nuevas características de Distutils2 y explica como usted puede usarlo en su proyecto hoy para hacer más fácil la vida para todo el mundo (usuarios, administradores de paquetes de Sistemas operativos, programadores, etc.).

Para descargar el vídeo haga clic aquí (Tamaño 294 mb) y para ver por vídeo Stream haga clic aquí.

¿Qué es pip?

pip es una herramienta para instalar y administrar Paquetes Python, como los que podemos encontrar en el Índice de Paquetes de Python – PyPI.


Esta herramienta es el remplazo para la famosa herramienta easy_install.

En su mayoría, pip utiliza las mismas técnicas para encontrar los paquetes, por lo que los paquetes que se instalaban usando la herramienta easy_install  también deben ser instalables con la herramienta pip.

Esto significa que usted puede utilizar con el siguiente comando:

$ pip install AlgunPaquete

En lugar del tradicional comando usado con la herramienta easy_install como se describe a continuación:

$ easy_install AlgunPaquete

pip comparado con easy_install

pip ofrece mejoras a la herramienta easy_install. Algunas de las mejoras son:

  • Todos los paquetes se descargan antes de iniciar la instalación. Una instalación parcialmente completada no se produce como resultado.
  • Tiene cuidado de presentar una salida útil en la consola.
  • Las razones de las acciones de instalación se le aplica un seguimiento. Por ejemplo, si un paquete se está instalando, pip sigue la pista de por qué ese paquete era necesario.
  • Los mensajes de error debe ser útiles.
  • El código fuente es relativamente conciso y coherente, por lo que es más fácil de usar mediante programación.
  • Ofrece soporte nativo para otros sistemas de control de versiones (Git, Mercurial y Bazaar)
  • Tiene un mecanismo de desinstalación de paquetes.
  • Fácil de definir conjuntos de requerimientos y reproducir de forma fiable un conjunto de paquetes.
  • Los paquetes no tienen que ser instaladas como archivos de huevo, que pueden ser instalados en forma plana (mientras cuida la metadata de paquetes Egg).

pip no hacer todo lo que se easy_install. En concreto:

  • No se puede instalar a partir de paquetes Egg. Sólo se instala desde el código fuente. (En el futuro será bueno si se pudiera instalar los binarios de Windows EXE o MSI -.. pero instalar paquetes binarios para otras plataformas no es una prioridad).
  • No entiende la sección SetupTools Extras (como package[test]). Esto podría ser agregado eventualmente.
  • Es incompatible con algunos paquetes que tienen muchas personalizaciones distutils o setuptools en sus archivos

Instrucciones de Instalación

Siempre existen más de dos formas de instalar paquetes Python con Distribute y pip ;)

Requerimientos previos

Es necesario que instale ciertas dependencias en su sistema operativo como las que se muestran a continuación:

# aptitude install build-essential python-dev python-setuptools

Instalación con Paquetes Egg

Para instalar Distribute ejecute el siguiente comando:

# easy_install -U distribute

También para instalar pip ejecute el siguiente comando:

# easy_install -U pip

Instalación en sistemas Debian

La instalación en sistemas Debian es recomendable que instale ciertas dependencias en su sistema operativo como las que se muestran a continuación:

# aptitude install build-essential python-dev python-pip

Ejemplos de uso de pip

El script pip ofrece varias formas de uso, para instalar los paquetes de diversas fuentes:

Consejo: Para poder utilizar el pip, primero debe instalar setuptools o distribute. Si utiliza virtualenv, una copia del pip será automáticamente instalados en cada entorno virtual que usted crea.

easy_install se puede complementar con virtualenv, y se recomienda que lo utilice para aislar a la instalación de los paquetes Egg.

Ejemplo 1. Instalar un paquete su nombre en su versión más reciente, buscando en PyPI:

$ pip install SQLObject

Ejemplo 2. Instalar o actualizar un paquete por nombre y versión utilizando una dirección URL donde encontradas en una “página de descargas”:

$ pip install -f 'Pillow==1.7.3'

Ejemplo 3. Instalar o actualizar un paquete desde su propio replica del repositorio PyPI o su repositorio de paquetes Egg privados:

$ pip install -i SQLObject

Ejemplo 4. Descargar e instalar una distribución de código fuente:

$ pip install

Ejemplo 5. Instalar un paquete con una versión especifica:

$ pip install 'ZopeSkel==2.21.2'

Ejemplo 6. Instalar todas las dependencias de mi proyecto Python usando un archivo de dependencias requeridas para instalar:

$ pip install -r ./requirements.txt

Un ejemplo del archivo requirements.txt puede ser el siguiente:


Ejemplo 7. Actualizar un paquete ya instalado con la versión más reciente de PyPI:

$ pip install --upgrade PyProtocols

Ejemplo 8. Para usar realizar búsquedas de paquetes disponibles para instalar desde los repositorios por definidos:

$ pip search plonetheme-*

Ejemplo 9. Para remover un paquete Egg

$ pip uninstall SQLObject

Para más información consulte la ayuda disponible por que paquete pip ejecutando el siguiente comando:

$ pip help

Distribute en zc.buildout

Puede usar Distribute en zc.buildout, habilitando el uso de este por medio de un parámetro adicional en su archivo de la siguiente manera:

$ python --distribute

pip en zc.buildout

Existen varias estrategias para integrar pip en zc.buildout, a continuación se describen algunas formas:

gp.recipe.pip, ese paquete es un récipe de zc.buildout el cual permite instalar Paquete Python usando pip. A continuación se explica un ejemplo de configuración zc.buildout con este récipe se puede usar:

  1. El récipe agrega un virtualenv en el directorio parts/ de su instalación buildout, entonces genera este binario para generar un scripts ejecutable Python. Así que tienes un área de pruebas limpia de instalaciones previas.
  2. El récipe esta basado en zc.recipe.egg#scripts para que pueda compartir sus paquetes Egg entre buildouts como de costumbre.
  3. Por supuesto, usted puede instalar algunos archivos .pybundle.
  4. Usted puede construir paquetes desde un repositorio SVN con la opción editables.
  5. Cada linea encontrada en la opción install es la última parte de un comando de pip. Esta le permitirá a usted construir paquetes Egg con sus dependencias. Por ejemplo, instalar la librería lxml en un área de prueba pura, sin tener instalado libxml2 y libxslt, usted necesita tener instalado Cython y con esta línea de comando python install --static-deps para instalar el paquete lxml.

A continuación un ejemplo de configuración zc.buildout:

# the cache dir is used by buildout & pip
download-cache = download
parts = eggs

recipe = gp.recipe.pip

# eggs installed by pip (also add the Deliverance bundle)
install =
    --install-option=--static-deps lxml==2.2alpha1

# eggs installed by zc.recipe.egg
eggs =

Otra forma de usar pip es a través de una extensión zc.buildout llamada gp.vcsdevelop, para hacer checkout de paquetes Egg desde varios sistemas de control de versiones. A continuación se muestra un ejemplo de configuración zc.buildout con esta extensión:

extensions = gp.vcsdevelop
develop-dir = ./requirements
requirements = requirements.txt
parts = eggs
recipe = zc.recipe.egg
eggs = ${buildout:requirements-eggs}
interpreter = python

Un ejemplo del archivo requirements.txt puede ser el siguiente:

-e git+git://

Ver también

Le recomiendo consultar las siguientes enlaces para complementar el conocimiento adquirido en esta entrada en mi blog.

Espero sea de utilidad esta entrada en mi blog. Ayúdame a seguir escribiendo en mi blog y dona 1 dolar aquí.


Creación de entornos virtuales Python

¿Por que crear entornos virtuales en Python?

Si usted está en un sistema Linux, BSD, Cygwin, u otros similares a Unix como sistema operativo, pero no tienen acceso al usuario root, puede crear su propio entorno virtual (instalación) Python, que utiliza su propia biblioteca de directorios y algunos enlaces simbólicos hacia todo el directorio de instalación del Python de su sistema.

En el caso más simple, su instalación virtual de Python que viven bajo el directorio home del usuario ~/virtualenv/. Utilice la opción –help para obtener la lista completa de las opciones disponibles la herramienta virtualenv.

Cuando haya terminado la creación del entorno virtual, tendrá un ejecutable de python local al usuario que lo creo (por ejemplo ~/virtualenv/python2.6/bin/python) que está vinculado a la instalación del Python de su sistema /usr/bin/python y hereda todas sus librerías actuales, pero además le permite añadir nuevas librerías tanto como usted lo desee.

Sólo tiene que utilizar este nuevo Python en lugar de la instalación Python de su sistema, y puede modificarlo a su gusto sin dañar nada del Python de su sistema operativo. De igual forma usted debe seguir usando las instrucciones de instalación estándar para instalar setuptools y EasyInstall o Distribute y pip, desde su nueva instalación (~/virtualenv/python2.6/bin/python) Python en lugar del Python de su sistema /usr/bin/python.

Entornos virtuales de Python locales al usuario

Para evitar usar la instalación base del Python de tu sistema, que previamente tiene instalada, se recomienda instalar un entorno de virtual de Python local al usuario, algunos casos de usos para virtualenv, se describe a continuación:

  • No es necesarios permisos de administración para instalar librerías y aplicaciones Python, ya que estas se hace locales en al directorio del usuario.
  • Mayor comodidad de trabajar con versiones de librerías y aplicaciones más actuales las que maneja tu sistema.

¿Qué es virtualenv?

virtualenv, es una herramienta para crear entornos virtuales (aislados) en Python.

Modos de Instalación

Para instalar paquete virtualenv en su sistema puede instalarlo con Setuptools, Distribute para paquete Egg o por sistema paquete Debian

Instalación con paquete Debian

Para instalar virtualenv en distribuciones basadas en Debian GNU/Linux como paquete Debian, debe instalar los requisitos previos con el siguiente comando:

# aptitude install libc6-dev python-dev python-virtualenv

Nota: A veces es mejor instalar la versión más reciente del paquete virtualenv desde el repositorio PyPI, debido que siempre la versión de Debian no esta actualizada con respecto a la versión publicada en el repositorio PyPI.

Instalación con Setuptools

Para instalar virtualenv en distribuciones basadas en Debian GNU/Linux con Setuptools, debe instalar los requisitos previos con el siguiente comando:

# aptitude install libc6-dev python-dev python-setuptools

Luego debe instalar la versión más reciente del paquete virtualenv desde el repositorio PyPI, entonces debe instalar con el siguiente comando:

# easy_install virtualenv

Instalación con Distribute

Para instalar virtualenv en distribuciones basadas en Debian GNU/Linux con Distribute, debe instalar los requisitos previos con el siguiente comando:

# aptitude install libc6-dev python-dev python-distribute python-pip

Luego debe instalar la versión más reciente del paquete virtualenv desde el repositorio PyPI, entonces debe instalar con el siguiente comando:

# pip install virtualenv

Creando entornos virtuales de Python locales al usuario

Preparando la estructura de directorios de los entornos locales al usuario local, es una buena practica organizativa más no es un estándar por defecto en la comunidad Python para esto muestro una forma de trabajo y se realizan ejecutando los siguientes comandos:

$ cd $HOME ; mkdir ./virtualenv ; cd virtualenv

Crear entorno virtual del Python 2.6 de tu sistema al directorio ~/virtualenv del usuario, ejecutando el siguiente comando:

$ virtualenv --no-site-packages --python=/usr/bin/python2.6 python2.6

Usar distribute en virtualenv

Opcionalmente puede usar distribute en virtualenv para esto debe ejecutar el siguiente comando:

$ virtualenv --distribute --no-site-packages python2.6

Nota: Este paso de creación del entorno virtual solo se realiza cada ves que necesite crear un entorno virtual nuevo para sus proyectos Python.

Activar el entorno virtual

Activar el entorno virtual creado previamente, ejecutando el siguiente comando:

$ source ~/virtualenv/python2.6/bin/activate

Hasta este momento tiene activada el entorno virtual usted puede verificar esto debido a que su shell de comando inicia con el siguiente prefijo (python2.6), entiendo que este prefijo es el nombre de entorno virtual que usted acaba de activar.

Aquí ya puede usar herramientas como easy_install o pip para instalar paquetes Egg….

Nota: Cada ves que necesite trabajar dentro del entorno virtual necesita activar este mismo.

Desactivar el entorno virtual

Cuando termine de usar el entorno virtual puede desactivarlo de la siguiente forma:

(python2.6)$ deactivate

De esta forma ya puedes realizar operaciones de shell fuera del entorno virtual.

Nota: Cada ves que necesite salirse del entorno virtual necesita desactivar este mismo.


El trabajar con la herramienta le permite tener varios entornos aislados de pruebas tanto en la misma versión de Python 2.6 como en diversas versiones Python, como por ejemplo Python 2.5 y Python 2.6, entre otras más ventajas.

Ver también


Nota: Si te gusto este articulo, ayúdame a seguir escribiendo en mi blog y dona 1 dolar aquí.

Code Monkey escrito en Delphi

Si eres programador, probablemente has escuchado la canción Code Monkey, que trata sobre un día de un programador cuyo jefe solo le obliga a escribir código. Pues en el siguiente video, verás la letra de la canción escrita en el lenguaje Delphi al mismo ritmo de la canción y lo mejor de todo es que el código compila, así que disfruta de un rato geek:

Sábado 21 de febrero de 2015

Cálculo de Integrales con Sympy

Contiuando con los artículos sobre la librería Sympy, en los artículos anteriores se toco lo siguiente:

En este artículo se tocará el tema de cálculo de Integrales.

A continuación se ejecuta ipython notebook (si desea cargar el archivo del notebook de este artículo lo puede bajar del siguiente enlace).

El script del tutorial de muestra a continuación:

# coding: utf-8

# In[16]:

#Se importa sympy

from sympy import *

x = Symbol('x')

# In[26]:

diff(5*(x**5)+3*(x**3)-6*x+5,x); #Se calcula la derivada de la funcion 5(x^5)+3(x^3)-6x+5

# In[27]:

integrate(Out[3],x);#Se integra el resultado de la derivada,noten q el resultado es la ecuación de In[3] pero sin el valor constante

# In[19]:

integrate(cos(x)**2+sin(x),x); #Se inte cos(x)**2+sin(x) con respecto a x

# In[20]:

pprint (Integral(cos(x)**2+sin(x),x));#Se muestra la integral de la ecuación anterior

# In[28]:

integrate(Out[27],(x,0,5));#Se calcula el valor de la integral de 0 a 5 de la ecuación de la salida 27 

# In[29]:

integrate(cos(x)**2+sin(x),(x,0,pi));#Se calcula la integral con el rango de 0 a pi

El res

La imagen de la ejecución del notebook se muestra a continuación:

Para una mejor visualización del ejercicio recomiendo ejecutar el notebook del enlace anterior.

Cálculo de derivadas con sympy

En el artículo anterior se explico como calcular límites de funciones, en este artículo se muestra como calcular la derivada.

Se inicia notebook (si desea abrir el archivo que se utilizo para este artículo lo puede encontrar en el siguiente enlace):

$ipython notebook

Puede crear un notebook (o abrir el notebook mencionado en el enlace anterior).

A continuación se muestra el script del calculo de derivadas de 3 funciones diferentes:

#!/usr/bin/env python

# coding: utf-8

#Se importa sympy

from sympy import *

x = Symbol('x')

#Se calcula la derivada de la funcion cos(sin(x^3)) con respecto a x

print diff(cos(sin(x**3)),x)

#Se calcula la derivada de la funcion 5(x^5)+3(x^3)-6x+5

print diff(5*(x**5)+3*(x**3)-6*x+5,x)

#Calcula la derivada ene-sima de x^2+8x-4+sin(2x)

print diff(x**2+8*x-4+sin(2*x),x,2)

Al ejecutar el script se muestra el resultado de la ejecución de los 3 instrucciones print:
25*x**4 + 9*x**2 - 6
2*(-2*sin(2*x) + 1)

Al ejecutar el script se muestra el resultado de la ejecución de los 3 instrucciones print:
25*x**4 + 9*x**2 - 6
2*(-2*sin(2*x) + 1)

A continuación se muestra una imagen del notebook resultante:

A continuación se muestra una imagen del notebook resultante:

Cálculo de límites con la librería sympy

La librería Sympy permite realizar cálculo de límites, derivadas,  integrales entre otras cosas, usando notación simbólica.

La documentación de sympy la pueden revisar en el siguiente enlace.

Para instalar sympy e ipython-notebook en Debian se ejecuta:
apt-get install python-sympy ipython-notebook

En este caso se mostrará como realizar cálculo de límites con sympy.

Se ejecuta un servidor notebook ( en el siguiente enlace encontrarán el archivo usado para este artículo).

$ipython notebook

Se abre el navegador en http://localhost:8888 y se crea un notebook (para los que bajaron el enlace abren el archivo que se menciono anteriormente):

En este caso se usará un script que se llama

#!/usr/bin/env python

# coding: utf-8

from sympy import *

#Se define la variable x como simbolica

x = Symbol("x")

#Calculo de limite de (1/x) cuando x tiende a cero

valor = limit(1/x,x,0)

print valor

#Calculo de limite de (1/x) cuando x tiende a infinito

valor = limit(1/x,x,oo)

print valor

#limite de (5x/2x-3) cuando x tiende a infinito.

valor = limit(5*x/(2*x-3),x,oo)

print valor

El resultado de ejecutarlo es el siguiente:




Para el primer caso el resultado es infinito, para el segundo es cero y para el último es 2.5.

A continuación se deja una imagen del uso de ipython notebook:

Miércoles 18 de febrero de 2015

HMC ShellShock

Donde trabajo tenemos 4 hmc’s para administrar 3 IBM P5 system’s y 2 ISeries 770, y ya tenia tiempo queriendo ser root en esas consolas (because i can), anteriormente lo logre por este metodo Escaping HMC Restricted Shell y ahora … Continue reading

Jueves 05 de febrero de 2015

José Leonel Subero

Instalando Docker en Linux Mint Debian Edition

La información de que es Docker la encuentran en su sitio oficial Aquí, a continuación los pasos para su instalación en LMDE. Pasos: Importar y añadir la llave del repositorio para hacer confiable la instalación vía apt. apt-key adv --keyserver hkp:// --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 Crear la lista del repositorio para que apt lo use. echo "deb […]

Miércoles 04 de febrero de 2015

José Leonel Subero

Como conectarse a un un contenedor de openvz desde el host anfitrión

Problema: Necesito conectarme a un contenedor desde el anfitrión ¿Que comando uso? Solución: vzctl enter ID-del-anfitrion Ejemplo: vzctl enter 100 Nota: Para dejar la sesión y regresar al host anfitrión se debe teclear ctrl+d o ejecutar el comando exit
José Leonel Subero

Comando para conseguir una cadena de texto en sistemas Unix/Linux

Problema: Necesitamos encontrar en un universo de varios archivos desconocidos una palabra o cadena de texto para poder editar dicha cadena. Solución: sudo grep -lir “cadena_de_texto_a_buscar” “/ruta/donde/esta/el/universo/de/archivos/” Ejmplo: queremos saber cuales archivos en nuestro árbol de directorios tienen la palabra hola mundo, entonces procedemos de la siguiente manera. sudo grep -lir "hola mundo" "/" Nota: […]

Cómo cuidar la batería de tus gadgets y extender su vida útil

Está Escrito:
Y esta es la vida eterna: que te conozcan a ti, el único Dios verdadero, y a Jesucristo, a quien has enviado.  (Juan 17:3)
Tomado de: yahoo  Texto: Paula Barbieri

Uno de los grandes problemas que tenemos al utilizar nuestros móviles inteligentes, laptops y tabletas, es la corta duración de su batería. Pero no desesperes, aquí encontrarás varios consejos sencillos para aprender a cuidarla y extender su vida útil. 

Aprende a cuidar la bater&amp;iacute;a de tus dispositivos electr&amp;oacute;nicos. Foto: Thinkstock

Las baterías son una parte clave de cualquier dispositivo electrónico. Son la fuente de energía por la cual los otros componentes pueden funcionar, apunta el blog Tech News. Un fallo en la batería puede tener graves consecuencias en el resto del producto, por eso debemos ser cuidadosos. Ten en cuenta estos consejos prácticos para cuidar mejor las baterías:

1. Dile adiós a las cargas de 8 horas. Una creencia popular es que tu aparato necesita una carga inicial de ocho horas, pero esto es un error. Con las baterías de litio esta costumbre no es solo innecesaria, sino también dañina para tu batería, según el blog.

2. No dejes conectado el cargador si ya se encuentra al 100% de carga. Seguramente, todas las noches cargas tu móvil, tu tableta o laptop. Es un hábito muy común, pero si quieres cuidar tu batería, deshazte de él. Mantener el cargador conectado cuando la batería ya está al 100% de carga perjudica gravemente la salud de la misma, advierte la fuente mencionada. En caso de que no puedas evitar dejar conectado tu dispositivo a la corriente eléctrica durante la noche, apágalo.

3. Evita los porcentajes bajos de batería durante tiempos prolongados. Mantener las baterías de litio en repetidas ocasiones a porcentajes bajos solo implicará una reducción de su vida útil y de su capacidad máxima, según el sitio mencionado.Lo recomendado es que nunca bajen del 5% o 10% de carga, de acuerdo con el blog.

4. Olvídate de los ciclos completos de carga. Otra de las creencias populares sostiene que para cuidar la batería de nuestro gadget, debemos hacer ciclos completos de carga. Es decir, esperar a que esta llegue a un porcentaje bajo y, en ese momento, conectarlo al cargador. Con las baterías de litio esto no es necesario. Podemos cargar desde el 20% hasta el 70%, por ejemplo, y esto no tendrá ningún impacto en su vida útil, agrega el blog.

5. Cuida la temperatura. En el caso de la batería de tu laptop, es importante que no se caliente demasiado, ya que el calor acortará su tiempo de vida, señala la revista PC Magazine. Entonces, ten en cuenta estos pasos para proveer una óptima corriente de aire y mantener baja la temperatura. Los problemas más graves surgen por la obstrucción física de los puertos de ventilación. El polvo acumulado es uno de los problemas que puedes resolver si limpias la rejilla de ventilación de la laptop y los ventiladores. Una lata de aire comprimido se puede usar para limpiarlos. Otro problema frecuente es usar la laptop sobre una almohada o una sábana, lo cual puede obstruir el sistema de ventilación y retener el aire que sale del sistema. Procura apoyarla sobre superficies como una mesa o un escritorio.

6. Calibra la batería. Según indica el portal How to Geek, los fabricantes recomiendan calibrar las baterías cada dos o tres meses. Esto significa dejar que la batería llegue al 100% y luego baje hasta casi morirse. Recién ahí se carga de nuevo completamente. 

Martes 03 de febrero de 2015

¿Cómo Instalar Debian Squeeze o Lenny en una mini laptop vía Pen Drive?

Después de varias búsqueda y tratando de seguir los pasos de la página de Debian, no podía instalarlo en mi mini vaio, seguí intentando y viendo los pasos de este post para instalar Debian Sarge pude lograrlo y una manera rápida y cómoda:

1. Tener un Pen drive de al menos 256MB

2. Formatear el pen drive a FAT32

3. Descargar los siguientes archivos “initrd.gz” y “vmlinuz” y los copias en el pen drive

Para Lenny los obtienes desde aquí y para Squeeze desde aquí

4. Descarga la imagen iso de Lenny o de Squeeze según la versión que quieras instalar y lo copias en el pen drive (Esta iso es de 175 MB apróximadamente por el cual sólo te instalará el sistema base, lo demás lo debes descargar vía internet)

5. crea el siguiente archivo en el pen drive llamado: syslinux.cfg y dentro del archivo copia lo siguiente:

default vmlinuz
append initrd=initrd.gz ramdisk_size=10240 root=/dev/rd/0 devfs=mount,dall rw DEBCONF_PRIORITY=medium

default vmlinuz

append initrd=initrd.gz ramdisk_size=10240 root=/dev/rd/0 devfs=mount,dall rw DEBCONF_PRIORITY=medium

6. y listo, desmonta el pen drive y reinicia. Ahora podrás disfrutar de Debian.

Si quieren un repositorio para que puedas instalar la mayoría de los paquetes en debian que no son libres puedes usar copiando en el al final del archivo /etc/apt/source.list

deb squeeze main contrib non-free


Lunes 02 de febrero de 2015

José Miguel Parrella Romero

José Miguel Parrella Romero
null pointer dereference

Rebasing CoreOS for ephemeral cloud storage

The convenience and economy of cloud storage is indisputable, but cloud storage also presents an I/O performance challenge. For example, applications that rely too heavily on filesystem semantics and/or shared storage generally need to be rearchitected or at least have their performance reassessed when deployed in public cloud platforms.

Some of the most resilient cloud-based architectures out there minimize disk persistence across most of the solution components and try to consume either tightly engineered managed services (for databases, for examples) or persist in a very specific part of the application. This reality is more evident in container-based architectures, despite many methods to cooperate with the host operating system to provide cross-host volume functionality (i.e., volumes)

Like other public cloud vendors, Azure presents an ephemeral disk to all virtual machines. This device is generally /dev/sdb1 in Linux systems, and is mounted either by the Azure Linux agent or cloud-init in /mnt or /mnt/resource. This is an SSD device local to the rack where the VM is running so it is very convenient to use this device for any application that requires non-permanent persistence with higher IOPS. Users of MySQL, PostgreSQL and other servers regularly use this method for, say, batch jobs.

Today, you can roll out Docker containers in Azure via Ubuntu VMs (the azure-cli and walinuxagent components will set it up for you) or via CoreOS. But a seasoned Ubuntu sysadmin will find that simply moving or symlinking /var/lib/docker to /mnt/resource in a CoreOS instance and restarting Docker won’t cut it to run the containers in a higher IOPS disk. This article is designed to help you do that by explaining a few key concepts that are different in CoreOS.

First of all, in CoreOS stable Docker runs containers on btrfs. /dev/sdb1 is normally formatted with ext4, so you’ll need to unmount it (sudo umount /mnt/resource) and reformat it with btrfs (sudo mkfs.btrfs /dev/sdb1). You could also change Docker’s behaviour so it uses ext4, but it requires more systemd intervention.

Once this disk is formatted with btrfs, you need to tell CoreOS it should use it as /var/lib/docker. You accomplish this by creating a unit that runs before docker.service. This unit can be passed as custom data to the azure-cli agent or, if you have SSH access to your CoreOS instance, by dropping /etc/systemd/system/var-lib-docker.mount (file name needs to match the mountpoint) with the following:

Description=Mount ephemeral to /var/lib/docker

After systemd reloads the unit (for example, by issuing a sudo systemctl daemon-reload) the next time you start Docker, this unit should be called and /dev/sdb1 should be mounted in /var/lib/docker. Try it with sudo systemctl start docker. You can also start var-lib-docker.mount independently. Remember, there’s no service in CoreOS and /etc is largely irrelevant thanks to systemd. If you wanted to use ext4, you’d also have to replace the Docker service unit with your own.

This is a simple way to rebase your entire CoreOS Docker service to an ephemeral mount without using volumes nor changing how prebaked containers write to disk (CoreOS describes something similar for EBS) Just extrapolate this to, say, your striped LVM, RAID 0 or RAID10 for higher IOPS and persistence across reboots. And, while not meant for benchmarking, here’s the difference between the out-of-the-box /var/lib/docker vs. the ephemeral-based one:

# In OS disk

--- . ( ) ioping statistics ---
20 requests completed in 19.4 s, 88 iops, 353.0 KiB/s
min/avg/max/mdev = 550 us / 11.3 ms / 36.4 ms / 8.8 ms

# In ephemeral disk

--- . ( ) ioping statistics ---
15 requests completed in 14.5 s, 1.6 k iops, 6.4 MiB/s
min/avg/max/mdev = 532 us / 614 us / 682 us / 38 us

Domingo 01 de febrero de 2015

Valencia Software Libre: Llego Quitter Venezuela

Jueves 22 de enero de 2015

Colectivo MediosLibres de Venezuela


MediosLibres es un Colectivo tecnológico dedicado al desarrollo, migración y soporte sobre tecnologías libres para lo medios de comunicación, integrado por gente de medios con amplios conocimientos en el àrea de la tecnología.

Este Portal Web es el centro de interacción con los usuarios y usuarias de la Distribución GNU/Linux MediosLibres, desarrollada por el Colectivo MediosLibres de Venezuela con la finalidad de satisfacer totalmente las necesidades de todos los segmentos de los medios de comunicación (radio, audiovisuales, prensa escrita, medios dìgitales). Un trabajo que lleva ya mas de dos años de investigación y preparación, y que hoy junto al lanzamiento del portal sirve de puerta informativa para dar a conocer la existencia de la Beta 2 de esta Distribución GNU/Linux venezolana para Medios de Comunicación.

Los Líderes del Proyecto indicaron que el Portal, cuenta con importante información acerca de esta Distribución GNU/Linux venezolana, así como también áreas de descarga, un moderno sistema de soporte, foros, galería, podcast, wiki colaborativa, videoteca, Aula Virtual y otras interesantes utilidades al servicio del usuario.

Finalmente se informó que el venidero lunes 26 de enero será liberada públicamente de forma oficial la primera versión de MediosLibres GNU/Linux, la cual lleva como nombre código Shamatari, palabra de la lengua Yanomami que significa Guerrero y utilizarà como nomenclatura de versión la 15.01 en referencia al año y mes del lanzamiento.

Nota enviada por: Jaime Ernesto Mora

Lunes 19 de enero de 2015

Conociendo un poco a #lftp

lftp es un programa de transferencia de archivos (FTP) por medio de la linea de comandos para UNIX y sistemas basados en UNIX. Fue escrito por Alexander Lukyanov y esta diponible bajo GPL.

Leer mas en wiki/Lftp.

Uso basico

lftp> user myuser

Comandos de ayuda

lftp> help
        !<shell -command>                    (commands)
        alias [<name> [<value>]]            anon
        bookmark [SUBCMD]                   cache [SUBCMD]
        cat [-b] <files>                    cd <rdir>
        chmod [OPTS] mode file...           close [-a]
        [re]cls [opts] [path/][pattern]     debug [<level>|off] [-o <file>]
        du [options] <dirs>                 exit [<code>|bg]
        get [OPTS] <rfile> [-o <lfile>]     glob [OPTS] <cmd> <args>
        help [<cmd>]                        history -w file|-r file|-c|-l [cnt]
        jobs [-v]                           kill all|<job_no>
        lcd <ldir>                          lftp [OPTS] <site>
        ls [<args>]                         mget [OPTS] <files>
        mirror [OPTS] [remote [local]]      mkdir [-p] <dirs>
        module name [args]                  more <files>
        mput [OPTS] </files><files>                 mrm </files><files>
        mv <file1> <file2>                  [re]nlist [<args>]
        open [OPTS] <site>                  pget [OPTS] <rfile> [-o <lfile>]
        put [OPTS] </lfile><lfile> [-o <rfile>]     pwd [-p]
        queue [OPTS] [<cmd>]                quote </cmd><cmd>
        repeat [delay] [command]            rm [-r] [-f] <files>
        rmdir [-f] <dirs>                   scache [<session_no>]
        set [OPT] [<var> [<val>]]           site <site_cmd>
        source <file>                       user <user |URL> [<pass>]
        version                             wait [<jobno>]
        zcat <files>  

Subir un archivo

lftp> put file.ext
64714 bytes transferred in 8 seconds (7.9K/s)

Un pequeño tip

Si en algun momento, intentan subir algo a un servidor puede que obtengas este error:

Lftp Fatal Error: Certificate Verification: Not Trusted

La solucion es facil, solo se debe agrear en /etc/lftp.conf lo siguiente:

set ssl:verify-certificate no

Link de interes

Mailing lists

Mailing lists and archives (since July 2011):

List archives (including prior to July 2011):


Browse the source code:

Bug trackers

Domingo 11 de enero de 2015

José Luis Rivas

José Luis Rivas

Recordando a Aaron Swartz

Un libro que me encantó es «Homeland» de Cory Doctorow, trata sobre un grupo de hackers que se ven envueltos en situaciones que los deja expuestos a uno de los gobiernos y empresas más poderosas que existen y deben hacer algo aún así los haga correr peligros. Una historia de ficción sobre gente como Aaron Swartz.

Pero lo mejor del libro, es que precisamente cierra con dos cartas, una por Jacob Appelbaum, uno de los primeros mimbros de Wikileaks y desarrollador del proyecto Tor; y otra por Aaron Swartz. La carta de Aaron la traduje y publico a continuación, espero les sirva de inspiración para que sigan en sus luchas aún cuando a veces parezca que quién da la batalla del otro lado es muy grande e invencible:

Hola, soy Aaron. Se me ha dado este pequeño espacio aquí al final del libro porque soy un humano de carne y hueso, y cómo tal, puedo decirte algo que no creerías si viniese de la boca de cualquiera de esos carácteres ficticios:

Esto es real.

Claro, no hay alguien llamado Marcus o Ange realmente, al menos no que yo conozca, pero sí sé de gente real justo como ellos. Si quieres, puedes ir a San Francisco y conocerlos. Y mientras estás allí, puedes jugar D&D con John Gilmore o construir un cohete en Noisebridge o trabajar con algunos hippies en un proyecto de arte para Burning Man.

Y si algo de las cosas más relacionadas con conspiraciones en el libro te parecen demasiado alocadas para ser verdad, bueno, simplemente googlea Blackwater, Xe o BlueCoat. (Yo mismo tengo una solicitud FOIA pendiente para saber más de "software para manejo de persona", pero los federales dicen que les va a tomar tres años más redactar todos los documentos relevantes.)

Ahora, yo espero que te hayas divertido quedándote despierto toda la noche leyendo acerca de estas cosas, pero la parte que viene es importante así que presta atención: lo que está pasando ahora no es algún reality show de televisión donde simplemente puedes sentarte en casa y ver.

Esta es tu vida, este es tú país -- y se quieres mantenerlo seguro, debes involucrarte.

Sé que es fácil sentirse sin poder, como si no hubiese algo que puedas hacer para que baje la marcha o detener "el sistema." Como si todos los hilos son movidos por fuerzas oscuras y poderosas lejanas a tu control. Yo me siento de esa forma también, a veces. Pero simplemente no es verdad.

Hace menos de un año, un amigo me llamó para decirme sobre un proyecto de ley oscuro del cuál había escuchado llamado Acta para Combatir la Vulneración En Línea y La Falsificación o COICA (En Inglés es: Combatting Online Infringement and Counterfeitting Act, de allí la abreviación COICA). Mientras leía el proyecto empecé a preocuparme más y más: bajo estas provisiones, el gobierno podría censurar sitios web que no le gusten sin algo como un juicio. Sería la primera vez que el gobierno de los EEUU se le darían poderes para censurar el acceso a la red.

El proyecto había sido introducido hace un día o dos, pero ya tenía un par de docenas de senadores apoyándola. Y, a pesar de nunca haber un debate ya estaba siendo programada para ser votada en sólo un par de días. Nadie había reportado al respecto y ése era justamente el punto: ellos querían apurar esta cosa para que pasara antes que alguien se diese cuenta.

Afortunadamente, mi amigo se dió cuenta. Nos quedamos despiertos todo el fin de semana y lanzamos un sitio web explicando qué decía el proyecto de ley, con una petición que podías firmar en rechazo al proyecto que te daría números de teléfonos para llamar a tus representantes en el senado. Le dijimos al respecto a algunos amigos y ellos le dijeron a algunos de sus amigos y en cuestión de un par de días teníamos más de 200 mil personas en nuestra petición. Fue increíble.

Bueno, la gente promoviendo esta ley no paró. Ellos gastaron literalmente decenas de millones de dólares haciendo lobby para éste proyecto de ley. La cabeza de cada compañía de medios grandes voló a Washington, D.C. y allí se reunieron con el jefe de personal del presidente y amablemente le recordaron de los millones de dólares que le habían donado a la campaña del presidente y le explicaron cómo lo que ellos querían -- la única cosa que querían -- era que esta ley se aprobara.

Pero la presión pública siguió creciendo. Para intentar sacar a la gente del camino ellos intentaron cambiando el nombre de la ley -- llamándola PIPA y SOPA, incluso llamándola E-PARASITES Act -- pero no importó cómo la llamaron, más y más personas se siguieron diciéndole a sus amigos sobre la ley y consiguiendo más y más personas que se opusieran. Pronto, las firmas en nuestra petición iba en millones.

Logramos detenerlos por más de un año con diferentes tácticas, pero se dieron cuenta que si esperaban más quizás nunca lograrían tener un chance de pasar esta ley. Así que programaron un voto apenas volviesen de la pausa de invierno.

Pero mientras los miembros del congreso estaban fuera en la pausa de invierno, manteniendo reuniones públicas y en las salas de sus pueblos en casa, la gente empezó a visitarlos. En todo el país, miembros del congreso empezaron a ser cuestionados por sus electores acerca de su apoyo a esa sucia ley de censura del internet. Y los miembros del congreso empezaron a asustarse -- algunos llegando tan lejos como responderles atacandome.

Pero esto ya no se trataba de mi -- nunca se trató de mi. Desde el principio fue sobre ciudadanos tomando las cosas en sus propias manos: haciendo vídeos en YouTube y escribiendo canciones oponiéndose a la ley, haciendo gráficos mostrando cuánto dinero los promotores de la ley habían recibido de las industrias promoviéndola, y organizando boycotts poniéndo presión en las compañías que habían promovido la ley.

Y funcionó -- tomó la ley desde un punto político sin problema alguno que se suponía debía pasar unánimamente a una posición más parecida a tener un balón tóxico que nadie quería tocar. ¡Incluso los promotores de la ley empezaron a sacar declaraciones oponiéndose a la ley! Oh sí, esos dueños de medios estaban molestos...

Así no es como se supone que el sistema deba funcionar. ¡Un montón de chicos no detienen unas de las fuerzas más poderosas en Washington simplemente escribiendo en sus portátiles!

Pero pasó. Y tú puedes hacer que pase de nuevo.

El sistema está cambiando. Gracias a la Internet, todos los días personas pueden saber acerca de cosas y organizarse incluso si el sistema está determinado a ignorarlo. Ahora, quizás no ganes todo el tiempo -- esto es la vida real, después de todo -- pero finalmente tenemos una oportunidad.

Pero sólo funciona si tú tomas parte en ello. Y ahora que has leído este libro y aprendido cómo hacerlo, estas perfectamente informado sobre cómo hacerlo de nuevo. Es correcto: ahora depende de ti cambiar el sistema.

Aaron Swartz.

Viernes 09 de enero de 2015

Eliminar caracteres ocultos de archivos de texto plano con vim

Download PDF

No todos usan el mismo editor de texto. No todos usan el mismo sistema operativo. No es un secreto para nadie. Cuando se trabaja en grupos bastante heterogéneos puede ocurrir que el editor de texto introduce estos caracteres ocultos que si se encuentran dentro de un script bash por ejemplo, generan esos famosos: command not found. Uno de los caracteres ocultos más comunes que he encontrado es ^M, pero imagino que se puede encontrar cualquier otro tipo de aberración. Estos son artefactos agregados por editores generalmente gráficos. Sin más preámbulo, la solución más rápida que he encontrado hasta el momento es cambiar el format file (ff) y guardar el archivo:


:set ff=unix


De esta manera los !@#$%* caracteres ocultos son eliminados.


Domingo 04 de enero de 2015

César Mata Moya

César Mata Moya

Convertir vídeos con subtítulos para el decodificador TDA Novatech T207 en Debian

El sintonizador TDA Novatech T207 permite la reproducción de archivos con codificación H.264 para el video y AAC para el sonido, pero no es capaz de leer los subtítulos en formato SubRip (.srt), por lo cual se debe incrustar en el archivo final.

Para hacer la codificación se va a utilizar la herramienta mencoder en Debian Wheezy, sin embargo se debe instalar la versión de deb-multimedia ya que esta es la que nos permite utilizar la librería libfaac.

Procedemos a agregar el siguiente repositorio:

deb wheezy main

Luego realizamos:

apt-get update
apt-get  install mkvtoolnix mencoder x264 libfaac0

Nos situamos en el directorio donde se encuentra el vídeo origen con el subtitulo .srt y ejecutamos:

mencoder videoOrigen.mp4  -ovc x264 -x264encopts threads=auto:subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid=normal:weight_b -oac faac -vf scale=720:404 -sub -subcp latin1 -subfont-text-scale 3 -o video.avi

mencoder: es el programa que permite hacer la conversión del vídeo.

videoOrigen.mp4: Es el archivo que contiene el vídeo Original. Puede estar en otro formato que no sea .mp4 (avi, etc).

-ovc x264: Le indica a mencoder que el vídeo va a ser codificado usando la utilidad x264.

-x264encopts: Son las opciones utilizadas para x264. Coloque las recomendadas para una mayor calidad en la pagina.

-oac faac: Le indica a mencoder que el audio va a ser codificado usando la librería libfaac0.

-vf scale=720:404: este parámetro es opcional y lo utilizo para escalar el vídeo a la resolución 720x404 (Aspecto 16:9)
 ya que el codificador los reproduce con mayor holgura. Si el vídeo es de menor resolución, se debe omitir para no afectar la calidad.

-sub: Se indica el archivo .srt

-subcp: Se coloca la codificación (latin1, UTF8, etc)

-subfont-text-scale: Se indica el tamaño de escala de la fuente.

-o video.avi: Archivo .avi que luego se debe convertir a .mkv para que lo reconozca el decodificador.

Y para finalizar se convierte el archivo resultante en un .mkv de la siguiente manera:

mkvmerge video.avi -o videoFin.mkv

El videoFin.mkv se copia en una memoria USB y se podrá reproducir en el decodificador.

Silvio Perez: Kexec/Kdump configuration Centos/RedHat
Silvio Perez: Dynamic MOTD Centos/RedHat

Martes 16 de diciembre de 2014

Turla, un potente troyano para Linux

Está Escrito:
Reconócelo en todos tus caminos,Y él enderezará tus veredas.(Proverbios 3:6)
Tomado de: BarraPunto
«Investigadores de Kapersky y Symantec han descubierto un troyano extremadamente discreto, imposible de detectar mediante el comando netstat y que puede ser ejecutado por un usuario sin privilegios denominado Turla. Al parecer se ha estado usando durante, al menos, cuatro años para espiar a gobiernos, embajadas, instituciones militares y compañías farmacéuticas por igual en cerca de medio centenar de países. El troyano tiene capacidad de comunicarse con los servidores bajo el control de los atacantes, interceptar datos locales y ejecutar funciones sin necesidad de privilegios de administrador. No se descarta que puedan surgir descubrimientos de malware semejantes a medida que avance la investigación. ¿Y tú, ya has instalado un antivirus en tu Linux para buscar troyanos ocultos?»
Referencia es:
Los investigadores han descubierto un troyano extremadamente sigiloso para sistemas Linux que los atacantes han estado usando para desviar los datos sensibles de los gobiernos y las empresas farmacéuticas de todo el mundo.
El malware no habían sido descubiertos representa una pieza del rompecabezas que falta vinculada a "Turla," una llamada amenaza persistente avanzada (APT) da a conocer en agosto por Kaspersky Lab y Symantec . Por lo menos cuatro años, la campaña estaba dirigida a las instituciones gubernamentales, embajadas, militar, educación, investigación y compañías farmacéuticas en más de 45 países. Los atacantes desconocidos -que probablemente están respaldados por un Estado-nación, de acuerdo con Symantec, eran conocidos por haber infectado a varios cientos de equipos basados ​​en Windows mediante la explotación de una variedad de vulnerabilidades, al menos, dos de los cuales eran errores de día cero. El malware fue notable por su uso de un rootkit que hacía extremadamente difícil de detectar.
Ahora los investigadores de Kaspersky Lab con sede en Moscú han detectado malware basado en Linux se utiliza en la misma campaña . Turla ya estaba clasificado como uno de los apartamentos de alto nivel, en la misma liga que la divulgada recientemente Regin por ejemplo. El descubrimiento del componente Linux sugiere que es más grande de lo que se pensaba y puede presagiar el descubrimiento de sistemas aún más infectados.
"Los [] Turla operaciones se llevan a cabo en entornos más amplios de lo que previamente conocíamos", dijo a expertos de Kaspersky Lab Kurt Baumgartner Ars. "Todas las otras cosas que hemos visto de Turla se ha basado en Windows. Esta pieza del rompecabezas nos muestra que no se limitan a sí mismos."

Magic Numbers

Al igual que sus homólogos de Windows, el troyano Linux es extremadamente cauteloso. No se puede detectar usando el común comando netstat . Para ocultarse, la puerta trasera se encuentra en estado latente hasta que los atacantes envían paquetes inusualmente diseñados que contienen "números mágicos" en sus números de secuencia. El malware puede haber permanecido inadvertida en al menos un ordenador de la víctima durante años, aunque los investigadores de Kaspersky Lab aún no han confirmado esa sospecha. El troyano es capaz de ejecutar comandos arbitrarios a pesar de que no requiere privilegios de sistema elevados.
"Es una pieza muy interesante de código", dijo Baumgartner. "No sólo se ejecuta en Linux, pero no se puede detectar en la forma habitual."
Incluso un usuario normal con privilegios limitados puede lanzarlo, lo que le permite interceptar los comandos de tráfico y de ejecución en las máquinas infectadas. Las capacidades incluyen la habilidad de comunicarse con los servidores bajo el control de los atacantes y funciones que permiten a los atacantes ejecutar comandos de su elección y llevar a cabo la administración remota.
Incluso después de su descubrimiento, el componente de Linux sigue siendo un misterio. El archivo ejecutable subyacente está escrito en los lenguajes C++ y C y contiene código de bibliotecas previamente por escrito, una propiedad que da el archivo autosuficiencia malicioso. El código también es despojado de información de símbolos, lo que hace difícil para los investigadores realizar ingeniería inversa o analizar. Como resultado, Baumgartner dijo el troyano puede tener capacidades que aún no han sido descubiertas.
Los administradores que deseen comprobar si los sistemas Linux infectados por Turla pueden comprobar el tráfico de salida para las conexiones con news-bbc.podzone[.]org o, que son las direcciones de los canales de mando y de control conocidos codificado en el troyano Linux. Los administradores también pueden crear una firma usando una herramienta llamada YARA que detecta las cadenas  "TREX_PID=%u" y "Remote VS is empty !"
Dado el poder y el sigilo de la puerta de atrás, sin mencionar su conexión con una de las campañas de espionaje más sofisticados descubiertos hasta la fecha, no sería sorprendente que el descubrimiento para abrir la puerta a los descubrimientos de más infecciones o componentes de malware.
"La investigación está en curso", dijo Baumgartner. "Quiero suponer en algún momento esto va a tender un puente a otro hallazgo debido a la forma en que se utiliza esta puerta trasera."

Miércoles 26 de noviembre de 2014

Xavier Araque

Xavier Araque

Nuevo sitio web –

Saludos a todos ya hace un tiempo vengo trabajando en mi nuevo sitio web.

Pueden visitarlo ahora mismo desde:

También un blog/tumblr en el que publico algunos comentarios personales e imágenes

Para quienes desean contactar conmigo en ambos sitios encontrarán los enlaces actualizados a mis redes sociales.


Este sitio quedará fuera de mantenimiento.


Archivado en: Personal, Work

Miércoles 19 de noviembre de 2014

Richzendy Contreras

Richzendy Contreras » Gnu y Linux

Fedora en el CGSOL 2014 Guatemala

Lunes 10 de noviembre de 2014

Jesús Matamoros

Jesús Matamoros
Jesus Matamoros Web blog

¿Por qué es tan importante tener un sitio web?

dirección en Internet, puede dar una imagen poco seria y profesional. Cada vez más el tener un sitio Web será definitivo para seguir en carrera.  

En la actualidad  TODA  empresa, organización, no importa el tamaño,  necesita y debe tener un sitio Web.  En EEUU y en los países más avanzados de la UE está demostrado que la intensidad en la aplicación de nuevas tecnologías y la incorporación de un Sitio Web, está correlacionado de manera positiva con el incremento de las ventas, la productividad y el valor de mercado de las empresas. Además, estudiosos del E-Business consideran que las empresas que no entren en el campo de Internet en los próximos 10 años, desaparecerán!. Conozca a continuación las ventajas de tener un sitio web...

 Ventajas de tener un sitio web:
1. Alcance mundial de sus productos y servicios: a través del sitio Web Usted podrá llegar a clientes potenciales del mundo entero. Las limitaciones geográficas ya no existen, un sitio Web es como una oficina de ventas en cada lugar del planeta.

2. Competir al lado de los más grandes:
Su imagen en Internet podrá ser comparable a cualquier gran compañía de su mismo sector. Es un terreno imparcial donde el sitio web de una empresa pequeña puede ser tanto o más atractivo que el de una empresa muy grande. Por eso podrá competir justo al lado de las empresas más grandes, de igual a igual.

3. Disponible las 24horas, todos los días año: La presencia universal también se complementa con la presencia las 24 horas, los 7 días de la semana, los 365 días del año, lo que permite que aún fuera del horario de trabajo, la empresa siga produciendo y creciendo. Además de atender otras partes del planeta que por diferencias horarias sería imposible realizarlo al instante.

4. Menos Costos Operativos:
Ahorro en gastos de publicidad, reducción de teléfono y personal, de modo que cualquier información que pudiera necesitar el cliente la podrá consultar en su página Web, esto le ahorra tiempo, dinero y reduce el número de llamadas telefónicas de su negocio, locales y de larga distancia.

5. Imagen Profesional de su empresa: Actualmente las empresas respetadas en el medio tienen presencia en la Web. El no contar con una
Logo empresa desarrollo web

En iT Labs nos dedicamos a ofrecer soluciones digitales 360º, empleando las últimas tecnologías disponibles en el mercado, poniendo especial énfasis en la funcionalidad y el posicionamiento y estrategia de marketing, permitiéndole lograr presencia en Internet. De esta manera Usted y su empresa podrán competir estratégicamente, utilizando nuestros productos como una herramienta de marketing, publicidad y hasta gestión empresarial.

Miguel Ángel Useche

Miguel Ángel Useche
El blog de Skatox » Planetas

Cómo empecé a usar Firefox hace una década

Ayer 9 de noviembre, se cumplieron 10 años del lanzamiento de la versión 1.0 de Firefox, el navegador que sigo usando actualmente por diversas razones que les comentaré en esta entrada. Aunque recuerdo utilizar Netscape cuando iba a los populares cybercafes (pues en los 90s no era común tener Internet en el hogar) mi salida de Internet Explorer (que por venir instalado con Windows era mi predeterminado) fue como a finales del 2002 cuando empecé a jugar con páginas de seguridad informática y en uno de los retos me pedía falsificar el navegador, averiguando instalé K-meleon que se convirtió en mi navegador por defecto por incluir pestañas. Luego me enteré que el navegador estaba basado en otro llamado Mozilla Suite y ahí empezó todo.
Cuando me enteré del desarrollo de Firefox, recuerdo que no me gustó por ser un navegador con pocas funcionalidades respecto a Mozilla Suite (me encataba la idea de tener un cliente IRC y de correo en el navegador) y lo ignoré por completo hasta que instalé la primera versión de Ubuntu que venía con Firefox 0.93. En ese entonces, al ser una numeración menor a 1.0, pensé que el navegador era una beta y no lo probé hasta su lanzamiento; ese día recuerdo bajar un versión binaria, pues no había paquete oficial para Ubuntu 4.10 y al probarlo me gustó por su rapidez. De ahí seguí utilizando versión por versión, creo que la 1.5 no la usé por gran tiempo debido a problemas de video en mi equipo y utilicé, pero luego volví con la versión 2.0.

Haciendo una retrospectiva de las versiones del navegador, es impresionante como ha cambiado la web en 10 años. Cuando salió Firefox, Internet Explorer controlaba el mercado y casi todas las páginas se hicieron para funcionar en ella, además apenas estaba surgiendo la primeras aplicaciones web, Javascript no era tan importante, era necesario utilizar plugins de terceros para ver animaciones y videos en la web, pocos sitios usaban llamadas AJAX, entre otros. Ya hoy en día gracias a Firefox, tenemos la posibilidad de escoger otros navegadores como Chrome (Firefox permitió abrir el paso a otros navegadores), brindar mayor sentido a las estadarizaciones en la web, implementar futuras tecnologías, ejecutar código JS a velocidades cercanas a código nativo, por nombrar algunas cosas. Ademas, Firefox se ha convertido en el navegador mas rápido (a la fecha de publicación de esta entrada), sirve de base para Firefox OS, tiene una versión para Android, se enfoca en los intereses de los usuarios y no de una organización, te protege tu información y respeta tu privacidad, puedes sincronizar de forma privada y segura la información de tu navegador entre dispositivos, está desarrollado por gente de distintas partes del mundo y de forma totalmente abierta, entre otros. Por estas razones y más, les recomiendo utilizar este navegador, no solo por su gran calidad desde el punto de vista técnico, sino también porque al usarlo apoyas a la web abierta.

P.d: Puede estar un poco extraña la redacción del post pero lo redacté con mucho sueño luego de organizar y realizar el evento.

Jueves 06 de noviembre de 2014

Silvio Perez: Bridging two routers through wifi

Domingo 02 de noviembre de 2014

Ramon Marquez

Ramon Marquez
Libuntu » Linux

El 14 de noviembre estará disponible “This War Of Mine”, el juego de guerra que necesitábamos.

El próximo 14 de noviembre, la desarrolladora de videojuegos polaca 11 bit Studios lanza al mercado su juego “This War Of Mine”, el juego de guerra que necesitábamos. La guerra es un tema constante en los videojuegos, no importa si te toca ser el dirigente de una nación en un juego de “Grand Strategy”, comandante… Read More »
Jorge Ortega

Jorge Ortega

Como hacer que Espeak reconozca las voces de mbrola

Revisando en internet como agregar las voces de mbrola en “Gespeaker“, me encontré con este articulo: “Gespeaker. Texto a voz” donde explica que hacer para que espeak reconozca las voces de mbrola y es lo que les voy a comentar para que ustedes también las utilicen!!


Lo que vamos hacer es instalar mbrola y las voces en español, esto por si aun no lo han hecho:

1. Abrimos un terminal/consola.

2. Entramos como superusuario (root, escribiendo:

# su

3. Escribimos la contraseña de administrador:

# la -contraseña-de-root

4. Instalamos mbrola y las voces:

# aptitude install mbrola mbrola-es1 mbrola-es2 mbrola-mx2 mbrola-vz1

5 Creamos una carpeta llamada “ves” en /usr/lib/i386-linux-gnu/espeak-data/voices/:

# mkdir /usr/lib/i386-linux-gnu/espeak-data/voices/ves

6. Copiamos los archivos mb-es1, mb-es2, mb-mx2 y mb-vz1 que se encuentra en /usr/lib/i386-linux-gnu/espeak-data/voices/mb/ en la carpeta creada:

# cp /usr/lib/i386-linux-gnu/espeak-data/voices/mb/mb-es* /usr/lib/i386-linux-gnu/espeak-data/voices/vz1/

# cp /usr/lib/i386-linux-gnu/espeak-data/voices/mb/mb-mx2 /usr/lib/i386-linux-gnu/espeak-data/voices/vz1/

# cp /usr/lib/i386-linux-gnu/espeak-data/voices/mb/mb-vz1 /usr/lib/i386-linux-gnu/espeak-data/voices/vz1/

Listo, eso es todo ya podremos utilizar las voces de mbrola con espeak.!


Lo mejor es que podremos usar las nuevas voces con Gespeaker y el lector de pantalla orca, lo malo (no todo es perfecto), cuando se usa con el lector de pantalla no reproduce algunas cosas.


Es de destacar que se puede utilizar la voz venezolana sin ningún problema para reproducir cualquier texto utilizando “Gespeaker”.!!


Nota: En el articulo “Instalando otras voces para el lector de pantalla orca” se explica como hacer que se reconozca mbrola en las opciones.


Saludos a todos y para cualquier pregunta, comentario o sugerencia lo pueden hacer en los comentarios.

Viernes 31 de octubre de 2014

Ramon Marquez

Ramon Marquez
Libuntu » Linux

La rama 3.16 del kernel Linux tendrá soporte extendido

A través de la lista de correo de Linux se ha anunciado el soporte extendido para la rama 3.16 por parte del equipo de desarrollo de Ubuntu y de Debian. El soporte extendido de Linux 3.16 ha entrado en vigencia, la particularidad de todo esto es que el soporte estará a cargo de terceras personas… Read More »

Jueves 30 de octubre de 2014

Ramon Marquez

Ramon Marquez
Libuntu » Linux

Se lanzan nuevas versiones de actualización del kernel Linux

Greg Kroah-Hartman ha anunciado a través de la lista de correo de Linux, el lanzamiento de varias versiones de actualización para algunas ramas del kernel Linux trayendo consigo varias mejoras, actualizaciones de drivers y numerosos arreglos de errores. Las versiones 3.17.2, 3.16.7, 3.14.23 y 3.10.59 del kernel Linux han sido lanzadas el día de hoy,… Read More »

Domingo 26 de octubre de 2014

Jorge Ortega

Jorge Ortega

Hostinger: un sitio de hosting web accesible, gratuito y sin publicidad

Hostinger: un sitio de hosting web accesible, gratuito y sin publicidad.

Sábado 18 de octubre de 2014

Instalar Drivers Privados de AMD Radeon (fglrx) Debian Wheezy

Recientemente adquirí una humilde AMD Radeon R9 270, y quise instalar los drivers propietarios (fglrx) para poder jugar UrT como dios manda.

Añadir los repositorios backports para Debian Wheezy, en el archivo /etc/apt/sources.lst
# Backports Debian Wheezy
deb wheezy-backports main contrib non-free

Actualizar la lista de paquetes
$ aptitude update && aptitude update

Instalar el driver fglrx
$ aptitude -r -t wheezy-backports install fglrx-driver fglrx-control

Esto creará el archivo xorg.conf usando el módulo fglrx
$ aticonfig –initial

Agregar el driver libre “radeon” a la lista negra, modificar el archivo: /etc/modprobe.d/radeon-kms.conf; si tienes el archivo, de no tenerlo lo creas y agregas:
blacklist radeon
options radeon modeset=1

Reiniciar el equipo y listo!

Para probar si efectivamente el driver esta funcionando, utilizar las siguientes utilidades:

$ fglrxinfo

La salida debe ser algo como esto:
display: :0.0 screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon R9 200 Series
OpenGL version string: 4.3.12618 Compatibility Profile Context 8.982.13

$ glxinfo | grep render
La salida debe ser: direct rendering: Yes

$ glxgears
La salida debe ser una ventana con 3 engranajes (colores azul, rojo, verde) y un average FPS cada 5 segundos

$ fgl_glxgears
La salida debe ser una ventana con un cubo, en cada cara hay 3 engranajes (colores azul, rojo, verde; como en la salida anterior) y un average FPS cada 5 segundos

Los drivers disponibles en wheezy-backports son los AMD Catalyst 13.12, que tienen un buen rendimiento en linux incluso mejor que la serie 14.xx, sobre todo si se desea probar la minería Litecoin.

Saludos !

Viernes 17 de octubre de 2014

Vulnerabilidad crítica “Shellshock” afecta a Linux y OS X

Está Escrito:
No lo que entra en la boca contamina al hombre; mas lo que sale de la boca, esto contamina al hombre. (Mateo 15:11)
Tomado de: DiarioTI
Descuido en el diseño de la herramienta 'bash' - intérprete de la línea de comandos de Unix - permite en teoría ejecutar código a distancia y así tomar el control de sistemas. Shellshock ha impactado aproximadamente a medio millón de servidores web y dispositivos.

Una vulnerabilidad crítica recién descubierta llamada Shellshock, ha impactado aproximadamente a medio millón de servidores web, así como dispositivos conectados a Internet, incluyendo teléfonos móviles, routers y dispositivos médicos; de acuerdo con los expertos de defensas amenazas de Trend Micro. La empresa destaca que Shellshock, al estar relacionado con Linux, puede también afectar a las plataformas PC y Apple.
Shellshock es una vulnerabilidad crítica, que Trend Micro describe como “una plaga”. Dicha amenaza, al ser explotada, permite el acceso a los sistemas basados ​​en Linux a través de sus líneas de comando.
Considerando que estos sistemas constituyen aproximadamente el 51% de los servidores web en el mundo, la capacidad de penetración es elevada y los ataques podrían aumentar a un ritmo muy rápido.
“La reciente vulnerabilidad Heartbleed es de naturaleza similar a Shellshock, pero Heartbleed solo queda eclipsada por la extensión y alcance de esta nueva vulnerabilidad”, escribe Trend Micro.
Debido a la naturaleza y alcance de Shellshock, la empresa sugiere considerar lo siguiente:
- Usuario final: Estar atento a los nuevos parches de seguridad e implementarlos inmediatamente.
- Administrador de TI: Si cuentan con el sistema Linux, se recomienda deshabilitar los scripts o las secuencias de comandos BASH inmediatamente.
- Operador de sitio Web: Si el BASH está en sus scripts, parche lo antes posible, o modifique sus scripts para no utilizar BASH.
· Clientes que cuentan con servicios de hosting o de terceros: Pregunte a su proveedor que están haciendo para remediar y aplicar parches.
Trend Micro ofrece información actualizada sobre Shellshock” en su blog de seguridad.

Jueves 16 de octubre de 2014

Jorge Ortega

Jorge Ortega

Script para agregar atajos de teclado en Gnome-shell

Una de las cosas que me gusta hacer cuando instalo por primera vez un equipo, es poder tener atajos de teclado o combinaciones de teclas para abrir mis aplicaciones preferidas como por ejemplo el Terminal/Consola, el editor de texto Gedit, el editor de documentos, el Pidgin, entre otras.

Gracias a que estoy suscrito en la lista de “tiflo-linux“, preguntando que archivos debía modificar para crear un script que me permitiera agregar los atajos sin necesidad de hacer eso gráficamente, el compañero “Manuel Cortéz” me comentó que en la pagina “; explicaban como hacerlo, que me ayudo bastante para entender como se agrega los atajos por consola.

Haciendo algunas pruebas y ensayos, logre tener un script que me permite agregar atajos de teclado de mis aplicaciones favoritas y el cual puedes descargar sin problema: “script para agregar atajos en Gnome-shell“, para ejecutar debes:

1. Abrir un Terminal/Consola

2. Escribir:

$ python

      1. Listo!!, ya tienes los atajos.

Estas son las aplicaciones y sus atajos:

Gedit ctrl+alt+e

Terminal ctrl+alt+t

Writer ctrl+alt+w

Calc ctrl+alt+c

Pidgin ctrl+alt+p

Orca ctrl+alt+o

Carpeta personal ctrl+alt+h

Skype ctrl+alt+s

Gespeaker ctrl+alt+g

Navegador web ctrl+alt+n

Este script lo probé en Debian y Canaima4.0 pero debería funcionar también en Ubuntu y derivados, es de destacar que solo estoy identificando los navegadores “Iceweasel”, “Firefox” y “Cunaguaro”.

Si tienen alguna pregunta, duda o sugerencia sobre que falta en el script, me lo hacen saber en los comentarios.

Saludos a todos y ya sabes, si te ha gustado compártelo!!

Martes 14 de octubre de 2014

Respaldo y recuperación completo de GitLab con Postgresql

GitLab and Posgresql

GitLab tiene como la posibilidad de usar Postgresql como su motor de base de datos (a parte de MySQL) y todo viene ya listo para incluso hacer respaldos de su base de datos y sus repositorios Git haciendo uso de un script Ruby (un rake).  Esta es la forma recomendada ya que permite recuperar todo garantizando que no hay transacciones pendientes a nivel de base de datos ni de repositorios Git.

El  problema

En la documentación explican el detalle de cómo hacer un respaldo y restauración  manual, pero al momento de hacer la restauración esta falla porque al intentar insertar registros existentes estos generan conflictos como este:

psql:/home/git/gitlab/tmp/backups/db/database.sql:812: ERROR: relation "users" already exists

La solución

Se debe forzar el respaldo de pogresql para que primero borre las tablas para luego crearlas e insertar los registros en la restauración. Esto se consigue con la opción –clean o -c  de la orden pg_dump. Esta opción se debe editar en script ruby que realiza el respaldo, que por omisión es /home/git/gitlab/lib/backup/database.rb. En este archivo se debe ubicar esta porción del código y sustituir la línea en negrilla mostrada a continuación:

require 'yaml'
module Backup
 class Database
 attr_reader :config, :db_dir
def initialize
 @config = YAML.load_file(File.join(Rails.root,'config','database.yml'))[Rails.env]
 @db_dir = File.join(Gitlab.config.backup.path, 'db')
 FileUtils.mkdir_p(@db_dir) unless Dir.exists?(@db_dir)
def dump
 success = case config["adapter"]
 when /^mysql/ then
 print "Dumping MySQL database #{config['database']} ... "
 system('mysqldump', *mysql_args, config['database'], out: db_file_name)
 when "postgresql" then
 print "Dumping PostgreSQL database #{config['database']} ... "
 system('pg_dump', config['database'], out: db_file_name)

Esta línea debe sustituirse por esta otra:

system('pg_dump', config['database'], '-c', out: db_file_name)

Aquí puede verse que la opción -c es pasada como argumento a la orden pg_dump. Esto hará que se incluyan todos los DROPS necesarios en el archivo .sql generado para el respaldo de GitLab


En GitLab 7.4 este problema fue resullto con esto [Gracias Sytse Sijbrandij]


Viernes 10 de octubre de 2014

Probando una Epson multifuncional L210

Probando una Epson multifuncional

La impresora epson multifuncional L210 llega con tecnología innovadora de tanques de tinta, para imprimir miles, ahorrando miles. Con la tinta incluida, imprime* hasta 4,000 páginas en negro y 6,500 páginas a color, a un bajo costo de pocos centavos por página. Imprime, copia y escanea con gran calidad y facilidad. La L210 revoluciona la impresión en pequeñas oficinas y hogares -ideal para documentos, copias, reportes y fotos. Configure la impresora multifuncional en minutos y comience a producir impresiones de alta calidad. Obtendrá fotos y documentos nítidos y llenos de vida de manera rápida. Además, no es necesario esperar para manipular sus impresiones gracias a la tinta de secado instantáneo. También puede realizar copias a color. O bien, escanee y guarde recetas, informes escolares y documentos importantes; todo con el software que se incluye.

¿Qué hay en la caja?

  • La impresora.
  • 1 botella de tinta negra y 3 botellas de tinta a color (cian, magenta y amarilla) de 70ml cada una.
  • Cable de Alimentación.
  • Cable USB.
  • Guía rápida de instalación.
  • CD con drivers, manuales, software OCR y para edición de fotos.


  • Windows® 7
  • Windows Vista®
  • Windows XP
  • Windows XP Professional x64
  • Mac OS® X, 10.5.8, 10.6.x, 10.7.x, 10.8.x

Para saber mas de las caracteristicas, clic aqui.

Como instalarla en linux

La instalacion es totalmente sencilla, solo debemos ir a esta pagina

Donde nos pregunta: “Enter product name” debemos colocar: “L210” que corresponde el nombre del nuestra impresora.

Selecionamos nuestro sistema operativo, en este caso, Linux

El resultado de la busqueda nos va a dar dos opciones de descarga:

  • Printer Driver
  • Scanner Driver

Bajamos esos paquetes, y listo, ya tenemos funcionando nuestra impresora epson sin problemas en nuestro equipo.


Recuerden seguir las instrucciones de recarga de los cartuchos. Es importante seguirlas al pie de la letra ;)

Miguel Ángel Useche

Miguel Ángel Useche
El weblog de Skatox » Planetas

La evolución de la web

Llevo muchos años haciendo desarrollo web, aproximadamente en 1999 hice mi primera página web en el extinto Geocities y de allí hice páginas por entretenimiento hasta que en el 2003, con esta página (antes de ser un blog) y otra de skate he estado involucrando en el mundo web.

Desde entonces ha habido muchos cambios en la web, por una parte, antes solo existía un navegador como tal pues Internet Explorer ocupaba como el 95% de la cuota y pocas personas usaban Netscape, limitando a los desarrolladores a solo crear cosas disponibles en esta aplicación que Microsoft había abandonado. Esto ocasionó el despliegue de complementos de terceros como Flash y Java, que traían a la web mayor interacción, animaciones a cambio de menor seguridad y lentitud. Pero al hacer un sitio con esas tecnologías, estabas seguro que funcionaba en cualquier computadora y que eventualmente tus lectores iban a sufrir vulnerabilidades de seguridad.

Por otra parte, en el año 2004 salió el navegador Mozilla Firefox que logró brindar una alternativa a los usuarios de la web y abrir la posibilidad de nuevos navegadores como Google Chrome que salió en 2008, para así destronar a Internet Explorer y fomentar una sana competencia por ganar usuarios a través de calidad, permitiendo el avance de tecnologías abiertas y el impulso de HTML5/CSS3. Con estas alternativas, los programadores y diseñadores tuvieron que adaptarse a los nuevos tiempos y actualizar o crear sus páginas para funcionar en cada navegador del mercado, pues dar soporte a uno solo no es opción, porque olvidas a sector importante de usuarios de Internet.

Con el lanzamiento de dispositivos móviles ahora la web estaba disponible en todas partes, desde cualquier lado puedes acceder a ella y fuera de tu computadora personal. Creando un nuevo reto pues una página no solo debía funcionar bien en todos los navegadores sino también en múltiples tamaños de pantalla y resoluciones, aumentando un poco el trabajo de los desarrolladores pero creando sitios dinámicos que funcionan en cualquier tamaño de pantalla.

Podría decirse que la evolución de la web siempre pone retos a los desarrolles y a quienes ejercen el diseño de sitios web, pero a su vez, permite a los usuarios disfrutar de una mejor plataforma, cada vez con mas posibilidades audiovisuales de forma nativa, tener videojuegos 2D y 3D en el navegador, contar con sistemas operativos como Chrome OS y Firefox OS que ejecutan aplicaciones web y muchas cosas mas por venir. Demostrando que tenemos a la web por mucho tiempo y seguirá siendo el principal medio de comunicación en el mundo.

Domingo 05 de octubre de 2014

Richzendy Contreras

Richzendy Contreras » Gnu y Linux

Script php para chequear y notificar disponibilidad de servidores en SoYouStart