14/9/14

systemd vs sysVinit cheatsheet


Mucho tiempo a pasado desde la ultima publicación, así que para no dejar morir el blog en el olvido les traigo un cheatsheet relacionado al tema....

En los últimos meses se ha generado un intenso debate acerca de sustituir Sysvinit por Systemd o por Upstart.
La decisión ya se tomo de manera oficial hace ya algun tiempo y Systemd será el sistema de inicio que Debian va a utilizar en las próximas versiones.



Entre los beneficios de Systemd podemos citar (para una lista completa pueden visitar  el blog de Gespadas o wikidepia):

  • Es modular. Todo el contenido ejecutado por initscripts en /etc/rc.sysinit ahora es dividido en varios servicios independientes, cada uno de ellos bien documentado y de fácil comprensión.
  • Tiene capacidades “hotplug”, es decir que systemd asume que todos los recursos del sistema pueden aparecer o desaparecer en cualquier momento.
  • Podemos saber el estado del sistema en cualquier momento, ya que systemd lleva un registro (journal) mediante cgroups.


Bueno, es hora de la retirada, se ven al rato!

11/6/13

Migrando el Blog a HTML5

Bueno hace ya algún tiempo que tenía esta idea pero nunca tenia el tiempo o mejor dicho... hay cosas más importantes que hacer en lugar de esto :P

La idea era básicamente tomar un template de Blogger y modificarlo para que se vea similar al template anterior que estaba usando.

Problemas que me encontré al hacer esto:
  • Ver el sitio en IE8 
  • Eso es todo... ;)
El error que arrojaba era:
Internet Explorer 8 no puede abrir el sitio Operación anulada
Si bien la mejor solución para esto es NO USAR IE, por un tema de inclusión me decidí  a hacer una búsqueda rápida con nuestro fiel amigo google y encontré que me estaba faltando el parche KB2809289 para el IE que pueden descargar del sitio oficial de Microsoft del link aterior...

La instalación es bien sencilla... Luego de instalar este “parche” y de reiniciar (OMG), este inconveniente se solucionará....

Tambien y solo por acaso, agregue el siguiente codigo en el tag HEAD:
<!--[if lt IE 9]>
<script type="text/javascript">
   document.createElement("nav");
   document.createElement("header");
   document.createElement("footer");
   document.createElement("section");
   document.createElement("article");
   document.createElement("aside");
   document.createElement("hgroup");
</script>
<![endif]-->
Esto crera soporte para las etiquetas <nav>, <header>, <footer>, <section>, <article>, <aside> y <hgroup>. Las cuales ahora podrán ser renderizadas (por IE) en el Mark-up de nuestro sitio como cualquier navegador decente.

8/11/12

El mapa DEBIAN

Hola a todos, he vuelto :)

webeando en estos dias encontre un mapa de debian que quiero compartir con uds, el post original lo pueden ver aca.
Me parece una excelente idea de que gente se dedique hacer esto, me parece que son muy utiles y nos dan un panorama general de como se manejan las cosas en la distro.

Se ven al rato!

22/7/12

Optimizaciones de compilacion segun el procesador


Muchas veces cuando vemos en la web parametros de compilacion como "-march" y "-mtune", se han preguntado que significan?

Bien, básicamente son flags de compilación que indican el procesador del sistema donde ejecutaremos la aplicación compilada...

Veamos los posibles valores que pueden tomar en la siguiente tabla:

Valores CPU
generic Produce un código binario optimizado para la mayor parte de procesadores existentes. Utilizar este valor si no sabemos el nombre del procesador que tenemos en nuestro equipo. Este valor sólo es aplicable en la opción '-mtune='. Esta opción está disponible a partir de GCC 4.2.x.
i386 Intel i386.
i486 Intel i486.
i586, pentium Intel Pentium sin soporte de instrucciones MMX.
pentium-mmx Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX.
pentiumpro Intel PentiumPro.
i686 Produce un código binario optimizado para la mayor parte de procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son.
pentium2 Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX.
pentium3, pentium3m Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE.
pentium-m Versión de bajo consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2. Utilizado por los portátiles Centrino.
pentium4, pentium4m Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2.
prescott Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3.
nocona Versión mejorada de Intel Pentium4 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2 y SSE3.
core2 Intel Core2 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y SSSE3. Esta opción está disponible a partir de GCC 4.3.x.
corei7 Intel Core i7 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible a partir de GCC 4.6.x.
corei7-avx Intel Core i7 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible a partir de GCC 4.6.x.
atom Intel Atom con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y SSSE3. Esta opción está disponible a partir de GCC 4.5.x.
k6 AMD K6 con soporte de instrucciones MMX.
k6-2, k6-3 Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!.
athlon, athlon-tbird AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch.
athlon4, athlon-xp, athlon-mp Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE.
k8, opteron, athlon64, athlon-fx Procesadores basados en AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! y extensiones 64-bit).
k8-sse3, opteron-sse3, athlon64-sse3 Versiones mejoradas de AMD K8 core con soporte de instrucciones SSE3. Esta opción está disponible a partir de GCC 4.3.x.
amdfam10, barcelona Procesadores basados en AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.3.x.
btver1 AMD Bobcat (family 14). Esta opción está disponible a partir de GCC 4.6.x.
winchip-c6 IDT Winchip C6, que equivale a un i486 con soporte de instrucciones MMX.
winchip2 IDT Winchip2, que equivale a un i486 con soporte de instrucciones MMX y 3DNow!.
c3 Via C3 con soporte de instrucciones MMX y 3DNow!.
c3-2 Via C3-2 con soporte de instrucciones MMX y SSE.
geode AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3.x.
native Produce un código binario optimizado para el procesador que tengamos en nuestro sistema, siendo éste detectado utilizando la instrucción cpuid. Procesadores antiguos pueden no ser detectados utilizando este valor. Esta opción está disponible a partir de GCC 4.2.x.

Como pueden ver hay una gran variedad según la arquitectura y como me es imposible recordarlos a todos los dejo acá también para el resto de los navegantes!

19/7/12

what de UNIX en Linux

Hola a todos! Luego de algún tiempo sin escribir (exactamente 3 años, 5 meses y 7 días =P) he vuelto para traerles algo que les sera útil para aquellos que programan en C/C++ y quieren saber que fuentes contiene un binario que generaron en su proyecto.
Tal como el titulo lo dice en UNIX tenemos el comando what y en linux, si no me equivoco, "no tenemos una alternativa" a ese comando.

Básicamente el comando en UNIX se usa de la siguiente manera:
what binario
y la información que nos trae es la de los fuentes con los que se ha compilado el binario.

La particularidad que deben tener los fuentes tal como nos dice la pagina del man de unix (man what) es incluir dentro de el una linea como la siguiente:
char version_id[] = "@(#)identification information"; 
Vemos un ejemplo, escribamos un pequeño programa en C (al que llamaremos a.c), con el siguiente contenido:
 char version_id[] = "@(#)a.c v1.2";

#include

main()
{
    printf("Hola Mundo \n");
    return 0;
}
Ahora compilamos:
gcc a.c
Y esto nos generara, un binario llamado a.out.

Como comente arriba no "disponemos" del comando what en LINUX, pero lo podemos emular de la siguiente manera:
strings  a.out | grep '@(#)'
y la salida del comando anterior, como se imaginan sera:
@(#)a.c v1.2
Como ven, se puede incluir cualquier tipo de información que deseen...

Investigando un poco mas, encontré un fuente de what usado en BSD, que pueden bajar y compilar uds mismos desde aquí.

El único inconveniente que encontré al compilarlo es que no se encontraba la función
strlcpy, la cual se encuentra en la libbsd, -lbsd. Los usuarios de Debian y derivados pueden descargar sin mayor problema...

Bien, espero les sirva, se ven al rato!