Posted by & filed under Sysadmin.

Esto es un ayuda memoria con los pasos que segui para instalar Mountain Lion en una PC. Que necesitamos:

  1. Una PC…
  2. Verificar que haya soporte para el hardware donde querramos instalar macos, en el wiki de osx86project hay mucha información.
  3. Un Pendrive de mas de 8 Gb.
  4. Comprar Mountain Lion en el AppStore (o conseguirlo de cualquier forma :), igual son 20 USD y de comprarlo pueden instalarlo en todas sus macs (oficiales y hackintosh incluidas).
Mi hardware es:
  • Procesador: Intel Core I7 2600k 
  • Placa de Video: Intel® HD Graphics 3000, incluída en el procesador.
  • Motherboard: Asus P8H61-M LX3 Plus
  • Placa de Red: Realtek 8111F, 1 x Gigabit LAN Controller(s) (On Board)
  • Placa de Sonido: VIA VT1708S On board
  • RAM: 8 Gb
  • Disco: SATA 1 TB
Pasos:
  • Bajen Unibeast y sigan estos pasos para preparar el pendrive y la instalación básica.
  • Una vez instalado el equipo al iniciar por primera vez ejecuten Multibeast y para el hardware que detallo arriba este es el juego de opciones que necesitan para tener todo funcionando:



  • Apliquen los cambios y reinicien el equipo.
  • En mi caso la placa de sonido funciona perfecto (por la salida analogica trasera solamente) pero para habilitar el microfono tienen que hacer lo siguiente
    • Abrir una terminal
    • Ejecutar sudo vi /System/Library/Extensions/VoodooHDA.kext/Contents/Info.plist
    • Buscar esta opción
    •             <key>MixerValues</key>
                  <dict>
                      <key>iGain</key>
                      <string>90</string>
                      <key>iMix</key>
                      <string>0</string>
                  </dict>
    • Quitar las opciones dentro del tag dict, con lo cual les tendria que quedar así:
    •             <key>MixerValues</key>
                  <dict>
                  </dict>
    • Reinicien y ya deberían tener el microfono funcionando y todo el equipo.

     

     

Posted by & filed under Desarrollo.

Esta es una receta poco práctica pero que puede sacarlos de apuros.  El tema es así, WP nos permite editar el código de cualquier tema desde el backend pero solamente para los archivos .php y los .css.  Si ustedes usan .less (como deberían) puede hacer una modificación sobre el archivo wp-admin/theme-editor.php (por eso les decía que era poco práctica) para que soporte archivos .less o lo que quieran.

Tiene que localizar esta línea:

$allowed_files = $theme-&gt;get_files( 'php', 1 );

Y agregar un argumento más a get_files:

$allowed_files = $theme-&gt;get_files( 'php|less', 1 );

No es lo mejor pero puede sacarlos de un apuro.

Posted by & filed under Desarrollo.

Bootstrap es un framework desarrollado por la gente de Twitter para simplificar el desarrollo de interfaces web.

Si lo han visto o lo han empezado a usar quizás les haya surgido la duda sobre cual es la diferencia entre un grid fixed y uno responsive.

El primero usa píxeles para definir el ancho de los containers, en cambio el segundo usa porcentajes.

Qué significa esto?

Vean este ejemplo, ensanchen y achiquen la ventana del navegador. Van a ver que la página se adapta a los distintos tamaños del navegador, pero lo hace a ciertos intervalos. Es decir, si ensanchan la ventana y sin importar cuanto lo hagan, la página no va a cambiar por encima de los 1200 px de ancho. Luego en la medida que vayan achicando el ancho van a ver las distintas transiciones. Estas transiciones se definen usando media queries. Para el caso de boostrap este sería el esquema de media queries en un sitio responsive:

/* Large desktop */
@media (min-width: 1200px) { ... }
     
/* Portrait tablet to landscape and desktop */
@media (min-width: 768px) and (max-width: 979px) { ... }
   
/* Landscape phone to portrait tablet */
@media (max-width: 767px) { ... }
   
/* Landscape phones and down */
@media (max-width: 480px) { ... }

En cambio en un grid como este responsive cuando achiquen y ensanchen la ventana van a ver que el grid se adapta a todas y cada una de las combinaciones. Esto es debido a que esta usando porcentajes para definir el ancho de los containers.

Cuando diseñen sitios usando bootstrap piensen como quieren que se vean en los distintos dispositivos y opten por uno u otro esquema de grid (traten de no mezclarlos).

Posted by & filed under Desarrollo.

Less es un compilador de css que extiende el lenguaje para agregarle variables, mixins, operaciones aritméticas y funciones.  Less puede precompilarse a css o compilar en tiempo real desde el navegador usando less.js.

El uso de less simplifica muchísimo el manejo de los archivos de estilo haciendo más rápido y prolijo la generación  de los mismos, pero todo tiene sus contrapartes.  Una de ellas es que el browser no tiene idea como interpretar la sintaxis de un archivo .less y por eso, como comente al principio, se deben precompilar para transformarlos en algo que pueda comprender el navegador (es decir convertirlos a .css tradicional).

Esta precompilación puede hacerla directamente el navegador o ser realizada manualmente por nosotros.  En el primer caso la magia la realiza el script less.js. De esta forma cada vez que recargan la página el navegador recompila todo (después veremos que no siempre es así) y lo convierte a .css embebido dentro de nuestro html. Para usar less.js tenemos que agregar estas líneas dentro de

  <link rel="stylesheet/less" href="less/style.less">
  <script type='text/javascript' src='js/libs/less-1.3.0.js?ver=1.3.0'></script>

En el segundo caso ocurre algo parecido con la diferencia que somos nosotros quienes decidimos en que momento transformar de .less a .css.  Como es de esperar el proceso de compilación va a generar un archivo .css el cual se referenciará en forma tradicional en nuestro código. Para instalar el binario que compila .less podemos usar npm (el administrador de paquetes de node.js)

# npm install less

Y para compilar:

# lessc less/style.less > css/style.css

Pero ahora supongamos que trabajamos Firebug para, entre otras cosas, ajustar detalles en nuestros estilos. Firebug va a poder mostrarnos todos los estilos que usamos en nuestro sitio pero vamos a perder la referencia al archivo en el que se definió cada estilo.

Si trabajamos con un único archivo .less no tendremos mucho problema, pero si por el contrario nuestro proyecto utiliza muchos archivos .less (algo lógico para mejorar la legibilidad y la estructura de estilos) la pérdida de referencia tiene un impacto mucho mayor y evidentemente no va a ser sencillo relacionar un estilo en el .css (sin importar si fue compilado en tiempo real o manualmente) con su definición original en los archivos .less.

A modo de ejemplo el excelente proyecto Twitter Bootsrtap, cuenta con casi 50 archivos .less. Imaginen querer encontrar la definición de un estilo en los .less luego de la compilación.

Pero por suerte Simone Deponti creo un plugin de Firebug llamado Fireless para poder mantener la referencia al archivio .less original.

El plugin requiere una versión modificada de less.js ya que tiene que agregar información de debug (precisamente las referencias a los archivos .less originales en cada definición de estilo) y hasta el momento la gente de Less.js no acepto el pull request para incorporar los cambios realizados por Simone.

Ahora es cuestión de clonar el repositorio de less.js con los cambios y:

# git clone https://github.com/simonedeponti/less.js.git
# cd less.js
# make less
  dist/less-1.3.0.js built.

Luego nos queda copiar el .js generado dentro de nuestro proyecto y comenzar a usarlo.

Y ahora un par mas de aclaraciones, cuando less.js se usa en un entorno productivo usa local storage (si esta presente en el browser) para cachear los css generados, por el contrario si se lo utiliza en un entorno de desarrollo less.js no va a cachear los css y por lo tanto cada recarga de la página va a regenerar nuevamente los css.

El tema es que quien decide si estamos en producción o no es less.js y no siempre puede adivinar bien, miren sino dentro de less-1.3.0.js:

var isFileProtocol = (location.protocol === 'file:'    ||
                      location.protocol === 'chrome:'  ||
                      location.protocol === 'chrome-extension:'  ||
                      location.protocol === 'resource:');

less.env = less.env || (location.hostname == '127.0.0.1' ||
                        location.hostname == '0.0.0.0'   ||
                        location.hostname == 'localhost' ||
                        location.port.length > 0         ||
                        isFileProtocol                   ? 'development'
                                                         : 'production');

Les aconsejo que agreguen a less.env las ips o nombres de sus servidores de desarrollo.

Y lo otro a decirles es que traten de no usar less.js en producción, mejor precompilen los css y si pueden los minimizan con

# lessc [-x|--yui-compress] path/style.less

Disfruten.

Posted by & filed under Sysadmin.

Esta sencilla receta la llevo conmigo desde hace años y es mágica porque para usarla solo necesitan tcpdump y strings. En mi opinion tcpdump debería estar instalado en todo equipo por defecto, punto.

Cuando tenes un problema al cual no le encontras la causa poder ver el tráfico en el cable (o en el aire) es revelador y no te digo que garantice la resolución del mismo, pero de seguro te va a dar mucha información útil para hacerlo.

Para potenciar aún más tcpdump podemos agregar “strings” y lograr un sniffer de tráfico que nos muestre todos los caracteres imprimibles que pasan por el cable:

Read more »

Posted by & filed under Sysadmin.

Programar en Mac, para quienes amamos Unix, tiene muchas ventajas y una de ellas es que tenemos Apache preinstalado. Así que para simplificar aún mas el desarrollo en nuestra mac les voy a mostrar como habilitar virtual host dinámicos de apache, es rápido y sencillo.

Virtual host dinámicos nos permite crear nuevos virtuals sin necesidad de realizar cambios en la configuración de apache, solo tenemos que crear un directorio para el nuevo virtual y agregar el nombre que le dimos al directorio en el archivo /etc/hosts.

Para comenzar tenemos que editar el archivo httpd-vhosts.conf, recordar hacerlo con sudo o como root (reemplacen “vi” por “nano” o su editor favorito):

# sudo vi /etc/apache2/extra/httpd-vhosts.conf

Tienen que agregar estas líneas al final para crear un virtual con soporte para vhost dinámicos:
Read more »

Posted by & filed under Sysadmin.

En la oficina tengo preparado un hackintosh que anda muy bonito, peeero no podía conectarme al app store.  Sucede que al conectarse intenta identificar el equipo desde donde lo haces mediante la mac address de la placa de red ethernet.  En mi caso estoy usando una placa wifi usb porque por el momento no me traje un cable de red lo suficientemente largo, y por alguna razón la mac de la wifi usb no se lleva bien con app store.

Probe varias cosas para lograr que funcione y si mi memoria no falla estos fueron los pasos que me sirvieron.

Read more »