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

firefox-personalizar-interfaz2

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

firefox-es-mejor

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 hipertextual.com


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: http://blogthinkbig.com/mejorar-la-conexion-wifi/


Jesus Palencia

Battle for Wesnoth

La batalla por Wesnoth (Battle for Wesnoth) es un videojuego de estrategia por turnos con ambientación fantástica. Es software libre, con licencia GNU GPL, gratuito, disponible para Linux, Solaris, Mac OS X y Windows entre otros muchos sistemas operativos.

La batalla por Wesnoth es un mundo virtual fantástico, donde un jugador o jugadores controlan una serie de personajes, cada uno con unas características propias especialmente para la lucha hasta que se cumple el objetivo del escenario o se consigue derrotar al enemigo.

Cada unidad tiene unas características propias que las diferencia, así pues, podemos tener a un arquero elfo con las características de fuerza y rapidez, que golpeará con más contundencia a los enemigos y se moverá más rápido que otro que sea resistente e inteligente, que aunque no golpee tan fuerte, tendrá más puntos de vida y necesitará menos puntos de experiencia para avanzar de nivel.

Por otra parte, dependiendo de la clase de la unidad, los personajes tendrán habilidades diferentes. Los magos blancos, por ejemplo tienen la capacidad de curar o sanar a sus compañeros, los caballeros de la muerte conseguirán que sus compañeros luchen mejor por su liderazgo.

Las unidades tienen también una mayor o menor defensa contra los ataques que reciban en función del terreno en el que se hallen situados, los enanos por ejemplo son casi invulnerables en las montañas, y lo mismo sucede con los elfos en los bosques, algunos de estos incluso son capaces de volverse invisibles ante sus enemigos gracias a la habilidad de emboscar.

Además, las unidades ganan experiencia a medida que luchan y matan a sus enemigos y, al alcanzar una cuota de experiencia predeterminada, se transforman en nuevas unidades con nuevos ataques y habilidades. Al llegar a un nivel determinado, que varía según la unidad, el paso al siguiente nivel no conlleva ninguna transformación, dando sólo una ligera mejoría de los puntos de vida.

Las unidades necesitan un coste de mantenimiento de 1 moneda de oro por cada nivel de ésta, pudiendo conseguir este oro mediante el control de los poblados que hay en los diferentes escenarios. Controlar los poblados del enemigo es más beneficioso que tomar el control de poblados neutrales porque así se reduce el volumen de oro obtenido por el enemigo y no podrá invocar nuevas unidades.

La batalla por Wesnoth se encuentra en los repositorios de las distribuciones principales y su instalación es bastante sencilla, solo se debe ejecutar el comando correspondiente a su distribución (como root).

  • Debian y derivados.
# apt install wesnoth
  •  Fedora.
# yum install wesnoth
  •  Arch y derivados.
# pacman -S wesnoth

Para finalizar acá les dejo un vídeo donde podrán ver un poco como es la mecánica del juego, saludos…

Enlace al vídeo en Youtube

Mas información:


Archivado en: Juegos Tagged: estrategia, turnos, wesnoth

Miércoles 25 de marzo de 2015

Jesus Palencia

Revolución Virtual Cap. 4/4: Homo interneticus

Enlace al vídeo en Youtube

Anteriormente:


Archivado en: Documentales Tagged: interneticus, revolucion
Jesus Palencia

Hoy se celebra el Document Freedom Day

El Día del Documento Libre es una campaña internacional para celebrar y dar a conocer los estándares abiertos. En este día, la gente de todo el mundo se une para organizar eventos locales con la finalidad de difundir la libertad del acceso a la información. Únete a nosotros, asiste al evento más cercano en tu ciudad, ayuda a difundir la campaña organizando un evento en tu localidad o mira otras maneras de participar.

Mas información:


Archivado en: General Tagged: dfd, festividades

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

letterboardmedium_flisol2015

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

cuadrado_flisol2015

  • Cuadrado de 200 x 200 – png y svg

mediorascacielo_flisol2015

  • Medio Rascacielo de 120 x 600 – png y svg

afiche_flisol2015

  • 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 http://tusitio.org/entrar-al-admin/. 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.

oops
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: http://awesome.naquadah.org/wiki/Problems_with_Java. 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 <kamathvasudev@gmail.com>
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:

works

 

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 esiconstruccionguarenas.mir@inces.gob.ve
(host correo.inces.gob.ve[private/dovecot-lmtp] said: 451 4.2.0 <esiguarenasguatire.mir@inces.gob.ve> 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 correo.inces.gob.ve[private/dovecot-lmtp] said: 451 4.2.0 <esiguarenasguatire.mir@inces.gob.ve> Execution of Sieve filters was aborted due to temporary failure (in reply to end of DATA command))

Como vemos, el awk me devolverá “<esiguarenasguatire.mir@inces.gob.ve>”.

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í:

esiguarenasguatire.mir@inces.gob.ve

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:

esiguarenasguatire.mir

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 “alert.zimbra@mail.zimbra.com”, 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 alert.zimbra@mail.zimbra.com

Nos importa el Queue-ID de cada correo.

  • Ahora, filtramos por el correo que deseamos buscar:
postqueue -p | grep -i "alert.zimbra@mail.zimbra.com"
  • Nos quedamos con el primer elemento (print $1) (el “queue-id” de cada correo ejemplo: 41F9F40515)
postqueue -p | grep -i "alert.zimbra@mail.zimbra.com" | 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 "alert.zimbra@mail.zimbra.com" | 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 "alert.zimbra@mail.zimbra.com" | 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=<esiguarenasguatire.mir@inces.gob.ve>, 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í:

Tributos@inces.gob.ve
msanguinetti@inces.gob.ve
wolivet@inces.gob.ve
ycolon@mintur.gob.ve
Tributos@inces.gob.ve

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í:

2 3EFz2VBEKCE8458v62F+wvvu685EFx55x2v.t53rs2r4t5Iz4tv9.x5s.Cv@feedburner.bounces.google.com
4 asdrubalgarcia05@gmail.com
2 blanco.gaspar@gmail.com
2 boletin@soluciongerencial.com
2 bryantdbravo@gmail.com
2 comitedeviviendampppst@gmail.com
4 diariodeurgencia-bounces@listas.nodo50.org
2 division.rrhh.mir+caf_=recursoshumanos.mir=inces.gob.ve@gmail.com
2 ekoz2006@gmail.com
2 formacionprofesional.mir+caf_=formacionprofesional.mir=inces.gob.ve@gmail.com
2 gercarh.programacion@gmail.com
2 info@fliporamail.com
4 javrodriguez@inces.gob.ve
6 jdeglys@gmail.com
2 jonasanoch@gmail.com
3 jusanchez@inces.gob.ve
4 lopezrosa757@gmail.com
2 mailman-bounces@listas.inces.gob.ve
2 manuelcruzh777@gmail.com
1 msanguinetti@inces.gob.ve
10 rcarreno@inces.gob.ve
2 test1-bounces@listas.inces.gob.ve
54 Tributos@inces.gob.ve
6 wolivet@inces.gob.ve
7 ycolon@mintur.gob.ve

  • 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:

4 asdrubalgarcia05@gmail.com
 4 diariodeurgencia-bounces@listas.nodo50.org
 4 javrodriguez@inces.gob.ve
 4 jusanchez@inces.gob.ve
 4 lopezrosa757@gmail.com
 6 jdeglys@gmail.com
 6 wolivet@inces.gob.ve
 7 ycolon@mintur.gob.ve
 10 rcarreno@inces.gob.ve
 56 Tributos@inces.gob.ve

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=<servidores@inces.gob.ve>, method=PLAIN, rip=10.0.1.1, lip=10.0.1.1, 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=<kheredia@inces.gob.ve>, method=PLAIN, rip=10.6.0.240, lip=10.0.0.136, 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
425 dmrodriguez@inces.gob.ve
 425 servidores@inces.gob.ve
 425 yherrera@inces.gob.ve
 531 jeparabacuto@inces.gob.ve
 647 jarondon@inces.gob.ve
 849 ogarcia@inces.gob.ve
 849 rcarreno@inces.gob.ve
 850 cgruber@inces.gob.ve
 860 lacontreras@inces.gob.ve
 954 leramirez@inces.gob.ve

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
211 kheredia@inces.gob.ve

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: Rectri109.ince.int[10.4.0.46]: 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).

Entonces:

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:

2 10.10.0.151
 2 10.6.0.209
 4 10.6.0.131
 4 10.6.0.218
 4 10.8.0.243
 5 10.4.0.46
 6 10.5.0.116
 2011 10.0.0.6

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
5 lerojas@inces.gob.ve
 6 cartorres@inces.gob.ve
 6 jdavila@inces.gob.ve
 7 rmonzon@inces.gob.ve
 9 jquijada@inces.gob.ve
 12 mepatino@inces.gob.ve
 12 yamidominguez@inces.gob.ve
 14 naponce@inces.gob.ve
 14 ppetrocelli@inces.gob.ve
 19 jflores@inces.gob.ve

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)

Conclusiones

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

Pogoplug_Series_4_35099306_04_1_610x458.jpg

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.

Pogoplug: Instalación de pogoplug OS desde Linux

pogoplug v4

Pogoplug V4

 

Cuando en la anterior entrada sobre el Pogoplug, aprendimos a instalar Debian GNU/Linux, nos quedamos en lo básico del sistema, en este momento, vamos a realizar una serie de acciones y optimizaciones sobre el mismo:

  1. Instalar PogoPlug OS para que inicie en caso de ausencia del disco con Linux
  2. Montar Linux en un disco SATA y no en el puerto USB (libera el puerto USB para otra cosa)
  3. Optimizaciones generales
  4. Instalación de un kernel backport más reciente
  5. Soldarle un puerto COM auxiliar

En esta primera entrega, le instalaremos el sistema operativo “por defecto” al equipo, para prevenir accidentes.

Instalar PogoPlug OS

Este es el Linux básico “de fábrica” que trae el dispositivo, lo instalo en dado caso que el medio de instalación de Linux (USB, SATA) se dañe o tenga que reemplazarlo.

  • Instalamos lo necesario:
apt-get install uboot-envtools mtd-utils
  • Editamos el archivo fw_env.config

vim /etc/fw_env.config

# MTD device name Device offset Env. size Flash sector size Number of sectors
/dev/mtd0 0xc0000 0x20000 0x20000
  • Definimos que la NAND Flash se montará como un dispositivo de bloques en mtd4
ubiattach /dev/ubi_ctrl -O 2048 -p /dev/mtd4
UBI device number 0, total 895 LEBs (113643520 bytes, 108.4 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
  • Creamos un directorio y montamos la NAND Flash allí
mkdir /tmp/mtd4
mount -t ubifs ubi0:rootfs /tmp/mtd4
cd /tmp/mtd4
  • Descargamos el sistema base
wget -c http://download.doozan.com/uboot/files/uboot/uboot.mtd0.dockstar.original.kwb
  • Definimos el boot command para iniciar dicho Linux base (pogoplug dockstar original)
fw_setenv bootcmd 'run bootcmd_usb; run bootcmd_mmc; run bootcmd_sata; run bootcmd_pogo; reset'

Como vemos, el orden de arranque es:

  • USB
  • SD
  • SATA
  • PogoOS (NAND)
  • o restart (loop)

Ahora, definimos el boot command del pogoPlug:

fw_setenv bootcmd_pogo 'if ubi part root 2048 && ubifsmount ubi:rootfs && ubifsload 0x800000 uboot.mtd0.dockstar.original.kwb ; then go 0x800200; fi'
  • Por último, desmotamos, removemos todos los discos SATA y USB y reiniciamos
umount /tmp/mtd4
reboot

Y listo!, ya tenemos un sistema base para arrancar en dado caso que los otros sistemas fallen.

The post Pogoplug: Instalación de pogoplug OS desde Linux 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.

phpMyAdmin

phpMyAdmin

Instalación

Para la instalar phpMyAdmin solo requiere ejecutar el siguiente comando:

# aptitude install phpmyadmin

Uso

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.

Introducción

Python

Python

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

Consejo

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.

Truco

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 setup.py.

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 http://dist.plone.org/packages/ '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 http://pypi.ejemplo.com/simple SQLObject

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

$ pip install http://ejemplo.com/ruta/a/MiPaquete-1.2.3.tgz

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:

python-ldap
django
buildbot
buildbot-slave
PyYAML
south

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 bootstrap.py de la siguiente manera:

$ python bootstrap.py --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 setup.py install --static-deps para instalar el paquete lxml.

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

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

[eggs]
recipe = gp.recipe.pip

# eggs installed by pip (also add the Deliverance bundle)
install =
    Cython
    --install-option=--static-deps lxml==2.2alpha1
    http://deliverance.openplans.org/dist/Deliverance-snapshot-latest.pybundle

# eggs installed by zc.recipe.egg
eggs =
    Paste
    pyquery

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:

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

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

ConfigObject>=1.0
-e git+git://github.com/bearstech/PloneTerminal.git#egg=PloneTerminal

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í.

Referencias


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.

Aprovechamiento

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

Referencias

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:
-3*x**2*sin(sin(x**3))*cos(x**3)
25*x**4 + 9*x**2 - 6
2*(-2*sin(2*x) + 1)
x,2)

Al ejecutar el script se muestra el resultado de la ejecución de los 3 instrucciones print:
-3*x**2*sin(sin(x**3))*cos(x**3)
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 limites.py:

#!/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:



oo


0


5/2




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

Lunes 09 de febrero de 2015

Optimiza el HTML, CSS, JS e imágenes de tu sitio web con Gulp

Uno de los retos de los desarrolladores web al momento de crear páginas web, es encontrar el equilibrio perfecto entre ofrecer un sitio con excelente apariencia visual y usabilidad, pero cuyo tamaño sea lo menor posible para que la carga sea rápida. Pues un sitio web rápido permite: tener mas visitas con el rendimiento actual del servidor, se ahorran costos de ancho de banda, los usuarios sienten que es una buena página y navegan mas tiempo por ella, entre otras. Este procedimiento incluye varias tareas que realizan muchos desarrolladores web como: usar las versiones reducidas (comprimidas) de Javascript, comprimir y ofuscar nuestro código del lado del cliente,  optimizar las imágenes del sitio, comprimir los archivos CSS, combinar todos los archivos CSS y Javascript en un sólo archivo (para cada tecnología) para reducir el número de conexiones, etc. Algo que no es complicado pero consume tiempo y que se debe repetir cada vez que se hacen cambios en el sitio.

Gulp

Como este proceso es repetitivo y consume tiempo, lo mejor es hacer un script que automatice cada etapa, pero hoy en día existen herramientas como que nos permite facilitar todo lo mencionado anteriormente. En este artículo hablaré sobre Gulp, una herramienta para automatizar tareas que hace lo mismo que GruntJS pero es mas fácil de usar y entender.

¿Cómo empezar?

Para instalarlo, lo hacemos a través Node Package Manager de forma global para que se instale como un comando del sistema y poder ejecutarlo en cualquier parte:

npm install -g gulp

Luego en la raíz del proyecto creamos un archivo gulpfile.js donde especificaremos las tareas a realizar:

var gulp = require('gulp');
gulp.task('default', function() {
});

Añadir una tarea

Una tarea es un conjunto de procesos, por ejemplo, optimizar el código JS consiste en: reemplazar algunas liberias por sus versiones CDN, utilizar las versiones minificadas de librerías de terceros, luego concatenar los archivos, minificar y actualizar las referencias en el HTML. Cada uno de estos procesos podemos encontrarlos en el buscador de complementos de Gulp (en caso de no existir alguna puedes crearla y publicarla en Github) y se instalan con npm.

Gulp posee una importante característica: su sistema de flujos entre tareas. Cada una de ellas recibe un conjunto de data (generalmente archivos), realiza un proceso en ella y produce nueva data para ser enviada como entrada a otro flujo. Esto permite a tareas que modifiquen gran de archivos, hacer este procedimiento en RAM y solo escribir en el disco cuando ya se ha terminado de procesar todos los archivos, por lo que se ejecutará muy rápido.

Para verlo en acción, haremos una tarea para reducir el tamaño de los archivos JS como ejemplo, entonces nuestro primer paso es instalar el plugin uglify con NPM:

npm install --save-dev gulp-uglify

Luego se deben hacer dos cosas en el archivo gulpfile.js, una es importar esta el complemento en las dependencias y asignarla a una variable, luego con esta variable podemos ejecutar la función que se encargará de (en este caso) reducir el tamaño del código javascript. Para ello debemos hacer lo siguiente:

var uglify = require('gulp-uglify');
gulp.task('comprimir', function() {
gulp.src('lib/*.js')
.pipe(uglify())
.pipe(gulp.dest('dist'))
});

Como podrás observar, hemos creado una tarea llamada comprimir , que recibe un conjunto de archivos (los archivos JS ubicados dentro de /lib), crea una tubería y ejecuta uglify que se encargará de comprimir cada uno de los archivos, finalmente entrega el resultado a la tubería que se enviará a la ruta de destino (esta se puede definir a donde uno desee). Así sucesivamente podemos ir creando procesos como los mencionados anteriormente y luego agruparlo en unas tareas mas generales, por ejemplo, tareas para generar una versión para depurar (cuya fuente no este comprimida), una versión para producción, una versión de producción para pruebas, entre otros. Esto lo puedes hacer al final haciendo algo como esto:

gulp.task('produccion', ['comprimir', 'copiar','cdn', 'less']);

Ejecutar las tareas

Finalmente puedes ejecutar el comando gulp en la raíz de tu proyecto y empezará a realizar todas las tareas de forma automática. En caso de que quieras ejecutar solo una tarea, puedes pasar por parámetro el nombre de la tarea:

gulp produccion

Con esto generas la versión de producción, o  por ejemplo, si tienes una tarea llamada less para generar los archivos CSS desde LESS, simplemente ejecuta:

gulp less

Tareas recomendadas

Para optimizar un sitio web, generalmente utilizo imagemin, jshint, minify-css, notify, imagemin-pngquant, uglify, usemin. Con estas puedo comprimir imágenes, mejorar el código javascript, concatenar archivos, reducir el tamaño, entre otros. Aunque te recomiendo leer un artículo de Addy Osmani sobre optimización de webs, pues lista una gran cantidad de tareas que puedes ir probando para usar al momento de mejorar tus sitios.

Finalmente, como te darás cuenta con Gulp puedes crear sitios web mas óptimos y ahorrando mucho tiempo. Existen una gran cantidad de tareas existentes que puedes agregar a tu proyecto y facilitar tu trabajo, por eso te recomiendo chequearlas en el buscador de plugins de Gulp y si no existe, puedes crearla y ayudar a otros programadores que necesiten algo similar.

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://keyserver.ubuntu.com:80 --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 http://http.us.debian.org/debian/ squeeze main contrib non-free

Saludos.

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:

[Unit]
Description=Mount ephemeral to /var/lib/docker
Before=docker.service
[Mount]
What=/dev/sdb1
Where=/var/lib/docker
Type=btrfs

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

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 http://medioslibres.org.ve, 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 ftp://ftp.my-domain.com
lftp ftp.my-domain.com:~> user myuser
Password:

Comandos de ayuda

lftp myuser@ftp.my-domain.com:/www> 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 myuser@ftp.my-domain.com:/www> 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):

Code

Browse the source code:

Bug trackers

Miércoles 14 de enero de 2015

Valencia Software Libre: Reinauguracion del Planeta VaSlibre

Domingo 11 de enero de 2015

José Luis Rivas

José Luis Rivas
ghostbar

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

:w

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

 

Domingo 04 de enero de 2015

César Mata Moya

César Mata Moya
PingüiniTux

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 http://mirror.optus.net/deb-multimedia/ 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 videoOrigen.srt -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: http://arstechnica.com
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 80.248.65.183, 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
Rendergraf

Nuevo sitio web – XavierAraque.com

xavieraraque.com

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

Pueden visitarlo ahora mismo desde: xavieraraque.com

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

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

 

Este sitio quedará fuera de mantenimiento.

-Xavier-


Archivado en: Personal, Work

Miércoles 19 de noviembre de 2014

Fedora en el CGSOL 2014 Guatemala

Domingo 16 de noviembre de 2014

Valencia Software Libre: I Jornada de Ingenieria y Arquitectura UJAP - Carabobo

Miércoles 12 de noviembre de 2014

Carlos Colmenarez

Carlos Colmenarez
El Blog de Zero » LINUX

El Moto G (2014) es el primero en recibir Lollipop, y algo está cambiando en Android

Como ocurrió el año pasado, Motorola ha sido la primera. Algunos usuarios americanos del Moto G (2014) ya están recibiendo Android 5.0 Lollipop y la tendencia en actualizaciones parece estar cambiando en casi todas las marcas de la plataforma.

Como ya pasó con Android 4.4 Kit Kat, no han sido los Nexus los primeros dispositivos en actualizar a Android 5.0 Lollipop. El honor recae sobre Motorola y el Moto G de segunda generación, mientras que la actualización para el Moto X estaría casi lista. Según informan algunos usuarios usuarios del Moto G (2014) libre americano, ya han comenzado a recibir la actualización vía OTA, con un peso de unos 386 MB.

La actualización llega tras la noticia que conocimos hace tiempo por la cual Motorola confirmaba que toda la gama 2013 y 2014 probaría el sabor de Android 5.0 Lollipop. La velocidad en la entrega no sorprende dada la poca personalización que Motorola hace sobre el Android que Google entrega a las compañías. Sin embargo, tiene mérito que un dispositivo como el Moto E llegue a conocer Lollipop, pues en otra marca la actualización no es que se retrasara, es que directamente la empresa no se planteara su actualización, algo que ha pasado incluso en modelos de gama alta.

Los fabricantes se están tomando más en serio los plazos

En este sentido, parece que algo está cambiando. Todas las marcas han ido confirmando ya los terminales que actualizarán a Android 5.0 Lollipop, y además se están dando más prisa de lo que nos tienen acostumbradas. Por una parte tenemos una LG que esta semana ya comenzará a actualizar su G3 (manualmente ya está disponible la actualización), una Samsung cuyo TouchWiz basado en Lollipop ya hemos podido ver en vídeo en el Galaxy S4 y en Galaxy S5, por lo que tampoco debería tardar mucho en llegar a éstos y a los Note 3 y Note 4.

Quien sale peor parada de este movimiento es, sin duda, Google. Desde el día 3 de noviembre esperamos la llegada de Android 5.0 Lollipop a los Nexus 7 de 2012 y 2013, Nexus 4 y Nexus 5, y la OTA no acaba de llegar a los usuarios. Al parecer se trata de corrección de bugs, pero siendo tú quien desarrolla el software, no da muy buena imagen a la plataforma retrasarse en los que deben ser, como la propia Google afirma, los terminales ejemplares.

fuente: celularis


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
Joenco

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
Joenco

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 http://http.debian.net/debian/ 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
Joenco

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 “http://community.linuxmint.com/tutorial/view/1171&#8243; 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 agregaratajos.py

      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:

ALTER SEQUENCE
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)
 end
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']} ... "
 pg_env
 system('pg_dump', config['database'], out: db_file_name)
 end
 report_success(success)
 end

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

Actualización

En GitLab 7.4 este problema fue resullto con esto https://gitlab.com/gitlab-org/gitlab-ce/commit/77b57c114be6b1fa02538c35066ccc363bfe68e6 [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.

Compatibilidad

  • 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 http://download.ebz.epson.net/dsc/search/01/search/searchModule

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.

Nota

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

Script php para chequear y notificar disponibilidad de servidores en SoYouStart

Miércoles 01 de octubre de 2014

Cómo activar la interfaz Web de qBittorrent

Si deseas controlar to servidor qBittorrent usando la interfaz web, sigue los siguientes pasos:

  1. En la barra de menú, ve a Tools > Options qBittorrent WEB UI
  2. En la próxima ventana, selecciona la opción Web UI
  3. Marca la opción Enable the Web User Interface (Remote control)
  4. Selecciona un puerto (Por omisión 8080)
  5. Configura el nombre de usuario y contraseña (Por omisión username: admin / password: adminadmin) WEB UI
  6. Haz clic en Ok para guardar las configuraciones.

Ahora podrás acceder a tu servidor desde un navegador si colocas la dirección IP y puerto de tu servidor qBittorrent, ejemplo: 192.168.1.100:8080 como se muestra a continuación: qBittorrent Web UI También puedes acceder desde tu dispositivo Android si instalas qBittorrent Client o qBittorrent Client ProqBitttoren Client Pro

Inkscape: Donde cada elemento es una capa

¿Te has preguntado en que se diferencia Inkscape de GIMP? Una de las principales razones por las cuales Inkscape es más utilizada para elaborar publicidad, es porque trata a cada elemento como una capa individual, esto permite que al elaborar un arte central, puedas simplemente reorganizar los elementos que lo componen para realizar un nuevo diseño, por lo tienes que olvídate de borrar y parchar nada.

En Gimp, si dibujamos varias figuras y no colocamos cada una en una capa, cuando queramos separarlas, no podremos, ya que todos los componentes que hicimos forman parte de una misma capa, en cambio, si realizamos las mismas figuras en inkscape, la diferencia es que podremos separarlas y trabajar con ellas como elementos individuales ya que cada una de ellas se comporta como una capa.

Por ejemplo, el diseño de esta web fue hecho con inkscape, así que dale un vistazo, deja tu comentario y no olvides suscribirte a mi canal de youtube y a este portal para seguir aprendiendo de forma fácil y rápida!

Y si te gusta mi contenido, no te olvides de votar por este blog como Mejor Blog de Software Libre, solo dale click al botón amarillo que dice “Votar” y confirma tu email! :D

Flattr this!

Lunes 29 de septiembre de 2014

Miguel Ángel Useche

Miguel Ángel Useche
El weblog de Skatox » Planetas

Crea tu propia nube como Dropbox en tu servidor con Owncloud

Hace unos días Dropbox (un servicio para almacenar archivos y fotos en Internet) anunció su plan de $9.99 mensuales por 1TB, algo muy atractivo para la mayoría, pero si no posees el dinero para adquirirlo, es insuficiente la cantidad de espacio disponible en el plan gratuito o te molesta saber que la NSA (la agencia de seguridad nacional de EE.UU.) tiene la posibilidad de acceder a tus archivos, entonces te recomiendo instalar tu propio servicio con ownCloud, donde tienes control de tus datos.

Owncloud es un proyecto de código abierto que permite almacenar archivos, imágenes, contactos y actividades de un calendario en un servidor central, para sincronizarlos automáticamente en varios dispositivos tal como lo hace Dropbox.

¿Por que usar ownCloud?

Esta aplicación me parece excelente cuando quieres tener privacidad total en la nube o tener un servicio de sincronización de archivos/información en una red local. Porque puedes instalarlo en tu propio servidor web y a través de los clientes sincronizarlo automáticamente, de esta forma, siempre podrás acceder a tus archivos en cualquier parte donde exista conexión a Internet. El espacio disponible será el espacio libre en tu servidor, lo que es probablemente mayor al espacio ofrecido por los planes pagos de otros servicios.

El protocolo WebDAV

Una de las ventajas de ownCloud, es el acceso a los archivos a través del protocolo WebDAV. Esto permite que utilices aplicaciones de terceros para acceder a los archivos, puedes utilizar el explorador de archivos de Gnome/KDE/Mac para navegar en las carpetas y descargar solo el archivo que vas a usar (para el caso de Windows, toca instalar una aplicación para tener esta funcionalidad).

Esto es útil cuando tienes por ejemplo 40GB de archivos en la nube y en uno de los dispositivos donde deseas tener tus archivos sincronizados no tiene ese espacio disponible. Pues solo descargas el contenido que vas a utilizar.

Clientes

A pesar que existen clientes para diversos sistemas operativos, solo tuve oportunidad de probar la versión para teléfonos Android y la de Linux.

Web

Esta es el cliente que viene obviamente por defecto, la interfaz es agradable y tiene todas las funcionalidades básicas: navegación de archivos, consulta de contactos, calendario,  generar enlaces para compartir archivos a otras personas, configuración, etc. Algo que me gustó es la posibilidad de ver tus fotos en una galería como en servicios de terceros, permitiéndote ver tus fotos en cualquier parte, también tiene soporte para cuentas múltiples, el único detalle negativo fue la subida de archivos, que si me parece un poco arcaica pero funciona bien (aunque en algunos servidores da problemas con el límite de subida de archivos en PHP). Hace falta un editor de archivos, pero existen plugins con Libreoffice (no los he probado) para poder implementar esta funcionalidad que por los momentos está de pruebas.

Interfaz Web de Owncloud

Interfaz Web de Owncloud

Android

Cliente de Owncloud en Android

Cliente de ownCloud en Android

La aplicación oficial de Owncloud para Android es paga aunque su costo es pequeño, el dinero recaudado sirve para financiar el desarrollo proyecto por lo que deberías adquirir esta versión. Otra alternativa, es utilizar la tienda de Android llamada F-Droid, la cual está llena de aplicaciones de código abierto y allí descargar ownCloud gratuitamente.

Funciona muy parecida a la de Dropbox, te permite recorrer tus archivos, descargarlos o compartir un enlace para enviar a terceros, cargar automáticamente las fotos que tomes en el teléfono, por mencionar algunas. Una característica que me gustó fue un indicador de que el archivo ya se había descargado, permitiendo conocer que archivos se encuentran en el teléfono y cuáles en la nube, muy útil para ahorrar consumo de datos, respecto a este tema, te permite seleccionar que solo sincronice archivos en WiFi o que no suba vídeos con plan de datos, brindando mayor control sobre el tráfico de datos.

GNU/Linux

Owncloud en Linux

Owncloud en Linux

La versión de Linux está hecha en QT (parece estar integrada con KDE) y se ejecuta en segundo plano para chequear cambios en las carpetas, para posteriormente subir los archivos. Esta aplicación permite seleccionar sincronizar varias carpetas del servidor en distintas carpetas locales, dando mayor flexibilidad al momento de organizar los archivos. La única limitación observada fue la ausencia de soporte para enlaces simbólicos (Dropbox si los soporta) pero se pueden utilizar nombres de carpetas distintos en la nube o sincronizar múltiples carpetas para solventar este problema.

El único problema que vi en este cliente, fue la imposibilidad de sincronizar a través de la red local (LAN) con otras computadoras conectadas a la misma nube y la poca inteligencia para detectar cambios en archivos, pues algunos archivos que había subido los volvía a descargar pensando que era otro mas nuevo por la fecha de modificación. Pero aparte de ello, no encontré otro problema.

Integración con Dropbox y Google Drive

Migrar a ownCloud no significa que te aísles del resto de servicios, pues tiene opciones para agregar carpetas con archivos alojados en: Amazon S3, Dropbox, FTP, Google Drive, OpenStack Object Storage, otro servidor de ownCloud, SFTP, WebDAV, entro otros. Con tan solo agregar una carpeta remota en las opciones e iniciar sesión, tendrás una carpeta sincronizada con estos servicios, permitiendo acceder de forma centralizada a cada uno de estos servicios.

Conclusiones

Te recomiendo utilizar ownCloud si deseas administrar tu propia nube personal, tienes un servidor con mayor espacio que el ofrecido por Dropbox, deseas administrar tu calendario y contactos sin depender de terceros. El hecho de tener muchos GB de espacio, acceso a mis archivos desde cualquier lado y con gran privacidad, fue suficiente para mí la migración a este servicio, además ¡Es de código abierto!

Sábado 27 de septiembre de 2014

Realizar un RMA (Return Merchandise Authorization) desde Venezuela

Hola, de nuevo por acá.

Por allá por el 2012 compré un kit de memoria RAM DDR3 de 2x4Gb PC12800 en amazon. Por razones obvias, no fue hasta 2013 en que terminé de armar mi máquina (la descripción aca).

Desde el primer momento todo bien, hasta que por necesidad, tuve que instalar win server 2012 (lo necesitaba para realizar unas pruebas con NAT64). Se me presentaron muchos problemas a la hora de instalarlo, incluso sobre vmware. En linux nunca se me reinició la máquina, incluso haciendo pruebas con Xen, mientras que en win sí, al primer reinicio (pantallazo azul) el problema era obvio; solo restaba iniciar memtest y listo, memorias malas. NOTA: Para probar memorias con memtest, es recomendable probar un solo módulo a la vez.

Para realizar el proceso de devolución o RMA, ingresé al sitio de soporte y garantía de Corsair aca (), luego me registré en el sitio https://corsair.secure.force.com y seguí las instrucciones para iniciar el proceso.

El proceso fue muy rápido y sencillo, solo aperturas el ticket seleccionando el producto (Memoria RAM), seleccionas el modelo (CMZ8GX3M2A1600C9B en mi caso), número de lote de las memorias, describir el problema presentado (en mi caso ya hay uno predefinido, I have tested the memory with memtest, and it shows errors) y datos como marca y modelo de la Motherboard, modelo de CPU y sistema operativo.

Al día siguiente de haber abierto el ticket, me responden solicitando fotos de las memorias y su caja; donde se pueda observar el lot number; archivo pdf de la factura (en este caso, busque en mi historial de amazon e imprimí en pdf la orden de compra) y por último, una foto del memtest donde se aprecien los errores. Una vez suministrada esta información, en un día me fue aprobado el RMA, me enviaron a mi cuenta de correo un link donde se descarga la etiqueta que contiene el número de RMA, la dirección de envío del producto defectuoso (también aparece la dirección donde enviarán el producto de reemplazo) y las instrucciones de embalaje del producto.

Para el envío de las memorias, fuí a un mail boxes etc y me ofrecieron el envío por Fedex (el envío me costo poco menos de 700Bs). Para realizar el envío, suministré las memorias malas, la factura de la compra y la etiqueta enviada por Corsair (allí estan los datos del departamento de RMA Corsair para el continente Americano, Hayway CA, USA), ellos embalan el producto en una caja estandar (cajas utilizadas por Fedex para realizar envíos internacionales) y se realiza el papeleo para el envío. Es importante que en la caja se pueda observar lo siguiente: RMA # xxxxxx (se puede escribir con marcados); de esta manera una vez llegado el paquete, corsair lo identifica rápidamente.

El envío por Fedex se tardó unos 3 días en llegar, y 24 horas despues de haber llegado, me enviaron unas memorias nuevas desde Taiwan. En el caso de Corsair, los productos de reemplazo, los envían por UPS y Fedex, dependiendo del tamaño.

En total, el proceso duró 19 días, desde que abrí el ticket para iniciar el proceso de devolución hasta que me llegaron las memorias nuevas.

Hasta la proxima !

Jueves 25 de septiembre de 2014

Donde encontrar increibles Fotos Gratuitas

Uno de los retos mas grandes cuando nos toca realizar un website o una publicidad en general es encontrar fotografías geniales a un buen costo (o gratis dependiendo del cliente), y no es que sea malo pagar por fotografías, pero a veces el cliente es pequeño y pues el presupuesto no alcanza. En la red hay miles de servicios que proveen fotografías de alta calidad por un costo de suscripción mensual, por paquete o por fotografía, pero hay un mundo de sitios que ofrecen fotografías de forma gratuita bajo una licencia amigable para esas necesidades que tanto tenemos como diseñadores. Veamos algunos de mis favoritos:

dttsf

Death to Stock Photo es un servicio al cual te suscribes dejando tu email en su website, y mensualmente envía sets de 10 fotografías ambientadas usualmente en el tema del mes, con una calidad increíble y una variedad super útil. Cada vez que recibes un correo de ellos te emocionas solo al ver el titulo porque sabes que una explosión de creatividad ha llegado a tu correo.

pixabay

Pixabay es un excelente sitio donde el orden de sus etiquetas y categorías son la clave para encontrar lo que quieras, cuando quieras. No requiere registrarse y su interfaz es muy parecida a la de 500px, por lo que encontrar y descargar contenido es pan comido.

nos

New Old Stock es una colección de fotografías públicas antiguas que están libres de todo tipo de restricción de derechos de autor. Es muy a lo tumblr y es algo difícil ubicar fotos por categorías o etiquetas, sin embargo, la cantidad de fotografías referenciales a artículos y momentos históricos que tiene es simplemente hermosa.

littlevisuals

Little Visuals sigue el estilo de Death to StockPhoto pero cada 7 días. Tiene fotos hermosas bajo dominio público pero lo bueno es que en su web, tienen a disposición todo el histórico de packs, por lo que si te perdiste uno o apenas te estás uniendo, puedes revisar los packs anteriores y bajar lo que necesites.

picjumbo

PicJumbo es un sitio que disfruta de una variedad abismal de contenido, además de tener un excelente plugin para tu browser que te avisa cuando hay contenido nuevo. Se agregan fotos nuevas diariamente, así que nunca te quedarás sin contenido fresco para tus necesidades.

Y recuerda que las votaciones para Mejor Blog de SoftwareLibre aún están abiertas, vota si aún no lo has hecho!!!

Flattr this!