jueves, 29 de septiembre de 2011

OSX modos para suspender (sleep)

OSX ofrece tres métodos para suspender, con los respectivos comandos asociados se muestran a continuación:


sudo pmset -a hibernatemode 0″ = suspend to RAM only (por defecto para escritorios)
sudo pmset -a hibernatemode 1″ = suspend to disk only
sudo pmset -a hibernatemode 3″ = suspend to disk + RAM (por defecto para portátiles)



En el orden anterior tienen ventajas y desventajas:


Modo 0: es el más rápido, sin embargo el menos seguro porque se corre el riesgo de que se agote la batería y se pierde la sesión.
Modo 1: no usa la memoria y simplemente maneja todo en disco, presenta el inconveniente de lentitud para volver del modo suspendido. Este método es el menos recomendado, porque es lento tanto para suspender como para volver del modo suspender. Solo debería usarse en circunstancias muy específicas.
Modo 3: con respecto al modo anterior, es igual de seguro pero tiene la ventaja de que es más rápido a la hora de volver del modo suspendido.


Referencias


http://etherealmind.com/osx-hibernate-mode/

martes, 27 de septiembre de 2011

OSX: estableciendo variables de entorno (Snow Leopard)

Las recomendaciones aquí indicadas se ensayaron usando Snow Leopard, sin embargo las cosas en OSX Lion deben funcionar muy seguramente de forma similar (o igual).

Aunque existen diferentes formas de establecer variables de entorno y muchas funcionan en diferentes niveles, la forma que se va a explicar es global y por lo tanto funciona para todo el entorno, es decir: entorno gráfico, terminal, otros shells, etc.

La forma de establecer variables globales recomendada para OSX es usando el comando launchctl, que recibe como parámetro una operación, el nombre de la variable y el valor de la variable, ejemplo:

launchctl setenv GLASSFISH_HOME /opt/glassfish3

El comando anterior se le indica la operación "setenv" (establecer variable de entorno), el nombre de la variable (GLASSFISH_HOME) y el valor (/opt/glassfish3, una ruta donde se encuentra la aplicación Glassfish OSE 3.1.1). La ejecución de este comando tiene efecto inmediato y solamente es necesario reiniciar las aplicaciones y/o shells (Terminales por ejemplo) donde se quiera tener acceso a la variable. Si se quiere hacer permanente la variable, debe agregarse una línea al archivo /etc/launchd.conf (Si no existe debe crearse). Continuando con el ejemplo anterior, la línea de configuración quedaría:

setenv GLASSFISH_HOME /opt/glassfish3

Para que los cambios tengan efecto, es necesario reiniciar el sistema; si no deseas reiniciar puedes ejecutar launchctl y dejar configurada la variable para el próximo reinicio.

La variable de enotorno PATH es un caso especial y debe establecerse de otra manera, la forma recomendada es crear un archivo en /etc/paths.d ó bien, usar /etc/paths con las asignaciones; tomando el ejemplo anterior, si quisieramos configurar los binarios de la aplicación en el PATH asumiendo que estén ubicados en $GLASSFISH_HOME/bin (como se puede notar se reutiliza la ruta establecida en la variable de entorno), crearíamos un archivo /etc/paths.d/glassfish3, este archivo tendría el siguiente contenido:

$GLASSFISH_HOME/bin

La configuración anterior tiene efecto inmediato y deben reiniciarse las aplicaciones donde se quiera tener acceso.

Otra forma de establecer la variable PATH es usando el archivo /etc/paths, pero no la recomendaría por razones de orden y mejor administración, sin embargo funciona perfectamente.

En OSX existen otras formas de establecer variables de entorno, pero presentan inconvenientes de una u otra forma, por ejemplo algunas solo funcionan para el entorno gráfico, otras solo funcionan para la línea de comandos; algunas funcionan bien pero no son filosóficamente apropiadas con respecto a OSX, por ejemplo /etc/profile, archivo que incluso viene de solo lectura.

Finalmente hay un caso especial cuando se requiere sobreescribir, o dar preferencia a algún directorio en el PATH; ejemplo: digamos que se tiene instalado Maven en /opt/apache-maven, sin embargo también existe una instalación previa en /usr/bin. Si configuramos en /etc/paths.d se ejecutará lo que esté en /usr/bin, si queremos que se ejecute los comandos de /opt/apache-maven/bin será necesario agregar esta ruta en /etc/paths encima de la ruta /usr/bin o cualquier otra donde se quiera sobreescribir un comando.