Necesito hacer una buena medicion copiando archivos, pero como el kernel cachea los archivos es necesaria una limpieza del cache (flush).
sync; echo 3 > /proc/sys/vm/drop_caches
Y las alternativas son:
To free pagecache:
# echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
# echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
Saludos !
Tuesday, November 9, 2010
Comando mount (remount + noatime)
Bueno, Linux hace un rato muy largo que tiene codigo para remontar al vuelo (live) una particion y ponerle otros flags de montaje.
Por ejemplo, si queremos remontar una particion con noatime:
Saludos !
Por ejemplo, si queremos remontar una particion con noatime:
mount -o noatime,remount,rw /dev/hda3
Saludos !
Monday, November 8, 2010
El comando screen de Linux para un mejor uso de la consola
Estoy trabajando en la consola y se me corta la luz o la conexion a internet haciendo X tarea mas importante que la vida misma. Pero gracias a que ejecute screen, la conexion se perdio pero no la consola virtual y su estado previo a la desconexion.
Ejemplo: rsync de maquina a maquina de unos 100 GB, esto va a tardar una buena cantidad de horas, y nos podemos quedar tranquilos de que el comando sigue corriendo en la consola "protegida" por screen.
Screen acepta muchisimos comandos, asi que a continuacion listo los que yo rescate como mas importantes (o mejor dicho, los que me sirven a mi):
Primero, para arrancar screen conviene hacerlo con un nombre de sesion:
screen -S nombresesion
Y segundo, cuando digo C-a (como figura en la documentacion) quiero decir tecla Control+a
Luego los comandos que acepta cuando estamos adentro son los siguientes:
C-a c
crea una ventana nueva
C-d
cierra la ventana actual
C-a S
crea una region horizontal
C-a |
crea una region vertical (funciona desde lenny ya que en etch screen no estaba parcheado con esta funcionalidad)
C-a X
borra una region
C-a tab
mueve entre regiones
C-a "
lista las ventanas disponibles
C-a a
salta entre ventanas
C-a NUMERO
salta a una ventana en particular
C-a A
renombra la current window (para que con C-a " te liste con nombres las windows y uno no se maree)
C-a :resize
en lineas, cuanto queres resizear una region ya sea vertical u horizontal
Y para "salir" de screen, es con C-a d
luego en la terminal original podemos tipear:
screen -list
y nos tira algo como:
entonces si se nos corto la luz o la conexion podemos volver al screen con:
screen -r 4307.pts-0.maquina
Por supuesto, para agarrarle la mano hay que jugar un poco pero eso es tarea de cada uno ;-)
Saludos !
Ejemplo: rsync de maquina a maquina de unos 100 GB, esto va a tardar una buena cantidad de horas, y nos podemos quedar tranquilos de que el comando sigue corriendo en la consola "protegida" por screen.
Screen acepta muchisimos comandos, asi que a continuacion listo los que yo rescate como mas importantes (o mejor dicho, los que me sirven a mi):
Primero, para arrancar screen conviene hacerlo con un nombre de sesion:
screen -S nombresesion
Y segundo, cuando digo C-a (como figura en la documentacion) quiero decir tecla Control+a
Luego los comandos que acepta cuando estamos adentro son los siguientes:
C-a c
crea una ventana nueva
C-d
cierra la ventana actual
C-a S
crea una region horizontal
C-a |
crea una region vertical (funciona desde lenny ya que en etch screen no estaba parcheado con esta funcionalidad)
C-a X
borra una region
C-a tab
mueve entre regiones
C-a "
lista las ventanas disponibles
C-a a
salta entre ventanas
C-a NUMERO
salta a una ventana en particular
C-a A
renombra la current window (para que con C-a " te liste con nombres las windows y uno no se maree)
C-a :resize
en lineas, cuanto queres resizear una region ya sea vertical u horizontal
Y para "salir" de screen, es con C-a d
luego en la terminal original podemos tipear:
screen -list
y nos tira algo como:
root@maquina:/# screen -list
There is a screen on:
4307.pts-0.maquina (11/08/2010 05:25:39 PM) (Detached)
1 Socket in /var/run/screen/S-root.
entonces si se nos corto la luz o la conexion podemos volver al screen con:
screen -r 4307.pts-0.maquina
Por supuesto, para agarrarle la mano hay que jugar un poco pero eso es tarea de cada uno ;-)
Saludos !
Friday, October 1, 2010
Averiguar el valor booleano de "algo" en Javascript
Me acabo de enterar que se puede forzar un valor booleano de la siguiente forma:
!!algo
en vez de hacer cosas como:
algo ? true : false
o
Boolean(algo)
Ademas otra cuestion muy importante es que cuando se declaran las variables en Javascript estas adoptan "undefined" como valor inicial, no null. Y gracias a esto podemos chequear si una variable fue o no utilizada o asignada con algun valor:
var otracosa;
typeof otracosa;
devuelve "undefined"
var otracosa = null;
typeof otracosa;
devuelve "object"
var otracosa = "hola";
typeof otracosa;
devuelve "string"
!!algo
en vez de hacer cosas como:
algo ? true : false
o
Boolean(algo)
Ademas otra cuestion muy importante es que cuando se declaran las variables en Javascript estas adoptan "undefined" como valor inicial, no null. Y gracias a esto podemos chequear si una variable fue o no utilizada o asignada con algun valor:
var otracosa;
typeof otracosa;
devuelve "undefined"
var otracosa = null;
typeof otracosa;
devuelve "object"
var otracosa = "hola";
typeof otracosa;
devuelve "string"
Wednesday, September 29, 2010
Repositorio para Debian Etch (ya que ahora no hay mas soporte)
Me ocurrio que no pude hacer un dist-upgrade en una maquina en produccion por diversos motivos, y como los repositorios de Debian para Etch fueron removidos no se pueden instalar mas paquetes via internet, entonces hay que cambiar el /etc/apt/sources.list con la siguiente linea para volver a tener disponibles los paquetes de Etch:
deb http://archive.debian.org/debian etch main contrib non-free
Ya que en http://archive.debian.org han mantenido un mirror para gente como yo ;-)
Ademas, las ISO's viejas de Debian pueden conseguirse en:
http://cdimage.debian.org/cdimage/archive/
Saludos !
deb http://archive.debian.org/debian etch main contrib non-free
Ya que en http://archive.debian.org han mantenido un mirror para gente como yo ;-)
Ademas, las ISO's viejas de Debian pueden conseguirse en:
http://cdimage.debian.org/cdimage/archive/
Saludos !
Friday, August 20, 2010
Expresion regular para URL's de bit.ly (regex)
http:\/\/bit\.ly\/[A-Za-z0-9]{6}
y un preg_replace en PHP para esta regex seria:
$result = preg_replace('%http://bit\.ly/[A-Za-z0-9]{6}%', '', $subject);
Tuesday, July 20, 2010
Arrancar y parar servicios en Ubuntu 10.04 LTS (y configurarlos en el arranque)
Hace aproximadamente 4 o 5 años que no usaba linux en escritorio, asi que decidi comprarme un disco de 1 TB y probar Ubuntu Server 10.04 LTS.
Para mi sorpresa, los enlaces en /etc/init.d/* ya no funcionaban mas, ya que se decidio cambiar el sistema de arranque a upstart (todavia desconozco bien el funcionamiento).
Todas las utilidades como por ejemplo rcconf y sysv-rc-conf dejaron de funcionar. Ahora existe un nuevo directorio /etc/init/ en donde se almacena informacion de upstart para cada servicio que tengamos en la maquina.
Lo primero que quise hacer es deshabilitar algunos servicios que no usaba, asi que la forma de hacerlo es agregar o modificar la siguiente linea dentro de cada servicio en particular dentro del directorio /etc/init/:
start on runlevel [!0123456]
lo que significa no arrancar en los runlevels 0123456, o sea, no arrancar nunca.
Ademas, la nueva (para mi por lo menos :P) forma de arrancar o parar servicios es con el comando "service":
service mysql stop
service mysql start
o sino tambien con los comandos "stop" y "start"
stop mysql
start mysql
Ire comentando todas las diferencias que vaya encontrando en Ubuntu 10.04 respecto a las distribuciones que utilizaba hace 4 o 5 años (que deben ser unas cuantas).
Saludos
Para mi sorpresa, los enlaces en /etc/init.d/* ya no funcionaban mas, ya que se decidio cambiar el sistema de arranque a upstart (todavia desconozco bien el funcionamiento).
Todas las utilidades como por ejemplo rcconf y sysv-rc-conf dejaron de funcionar. Ahora existe un nuevo directorio /etc/init/ en donde se almacena informacion de upstart para cada servicio que tengamos en la maquina.
Lo primero que quise hacer es deshabilitar algunos servicios que no usaba, asi que la forma de hacerlo es agregar o modificar la siguiente linea dentro de cada servicio en particular dentro del directorio /etc/init/:
start on runlevel [!0123456]
lo que significa no arrancar en los runlevels 0123456, o sea, no arrancar nunca.
Ademas, la nueva (para mi por lo menos :P) forma de arrancar o parar servicios es con el comando "service":
service mysql stop
service mysql start
o sino tambien con los comandos "stop" y "start"
stop mysql
start mysql
Ire comentando todas las diferencias que vaya encontrando en Ubuntu 10.04 respecto a las distribuciones que utilizaba hace 4 o 5 años (que deben ser unas cuantas).
Saludos
Tuesday, May 18, 2010
Ordenar un array en PHP de acuerdo a un valor de los elementos que queremos ordenar (usort + funciones anonimas)
Retorcido ? bueno, mejor el ejemplo del codigo:
Interesante para ordenar arrays de forma "no convencional" con una funcion propia. En este caso se ordeno el $array de menor a mayor de acuerdo al subvalor 'secs_order' de cada elemento del $array.
Saludos !
<?php
$array = array(0 => array('id' => 1, 'secs_order' => 82800), 1 => array('id' => 2, 'secs_order' => 64800), 2 => array('id' => 3, 'secs_order' => 19300));
$cmp = function ($a, $b) {
if ($a['secs_order'] == $b['secs_order']) return 0;
return ($a['secs_order'] < $b['secs_order']) ? -1 : 1;
};
echo '<pre>' . print_r($array, TRUE) . '</pre>'; // desordenado
usort($array, $cmp); // notese q aca $cmp es una funcion anonima ...
echo '<pre>' . print_r($array, TRUE) . '</pre>'; // ordenado
?>
Interesante para ordenar arrays de forma "no convencional" con una funcion propia. En este caso se ordeno el $array de menor a mayor de acuerdo al subvalor 'secs_order' de cada elemento del $array.
Saludos !
Thursday, May 6, 2010
Convertir codigo html en entidades html para entradas en blogspot
Simplemente copiar y pegar el codigo en este sitio http://www.simplebits.com/cgi-bin/simplecode.pl y pegarlo en la entrada ...
Saludos !
Saludos !
JQuery, controlar multiples eventos para remover errores en un formulario HTML
Donde #start_date, #end_date, #rec_until son input=text y el codigo html que remueve el remove() es por ejemplo:
Ahora, el codigo en si es el siguiente:
Se que no es muy explicativo, pero lo interesante de esto es la funcion bind() que nos permite manejar diferentes eventos con una misma funcion. Lo que hace el codigo es remover con una animacion fadeOut() el dd+span que se agrego al formulario a causa de un error.
Saludos !
<dd><span class="error error_start_date">Invalid start date (format: mm/dd/yyyy)</span></dd>
Ahora, el codigo en si es el siguiente:
$('#start_date, #end_date, #rec_until').bind('click blur select', function() {
$('.error_' + $(this).attr('id')).fadeOut('slow', function () {
$(this).parent().remove();
});
});
Se que no es muy explicativo, pero lo interesante de esto es la funcion bind() que nos permite manejar diferentes eventos con una misma funcion. Lo que hace el codigo es remover con una animacion fadeOut() el dd+span que se agrego al formulario a causa de un error.
Saludos !
Thursday, April 29, 2010
Problema con checkbox, IE6, IE7, IE8 y JQuery
IE no lanza el evento .change() de JQuery en checkboxes (y posiblemente, no lo testie pero dicen que tampoco en radio) en ninguna de sus versiones, como me acabo de enterar despues de renegar bastante y de buscar un poco en google ...
La "solucion" es esta:
Gracias IE por hacernos la vida imposible. Gracias.
La "solucion" es esta:
if ($.browser.msie) {
$('#elemento').click( function () {
$(this).blur();
$(this).focus();
// hacer algo para IE
});
} else {
$('#elemento').change( function () {
// hacer algo para cualquier otro browser decente
});
}
Gracias IE por hacernos la vida imposible. Gracias.
Wednesday, April 14, 2010
Validar fechas con JQuery o Javascript teniendo en cuenta los años bisiestos
En el HTML para el siguiente codigo Javascript hay que colocar 3 elementos select (o cambiar el selector de JQuery para colocar un input) que tengan la propiedad ID nombrada a detect_month, detect_day y detect_year.
El regex obviamente se puede mejorar (o cambiar), pero lo dejo de esa forma para que se pueda reutilizar checkeando fechas en el formato mm/dd/yyyy. En si, lo importante del codigo es el checkeo de si es o no un año bisiesto.
Ojala le resulte util a alguien ...
Saludos !
El regex obviamente se puede mejorar (o cambiar), pero lo dejo de esa forma para que se pueda reutilizar checkeando fechas en el formato mm/dd/yyyy. En si, lo importante del codigo es el checkeo de si es o no un año bisiesto.
$(function() {
var regexDateValidator = function (month, day, year) {
return (month + "/" + day + "/" + year).match(/(0[1-9]|1[012])[\- \/.](0[1-9]|[12][0-9]|3[01])[\- \/.]((?:19|20)+\d{2})/);
}
$("select[id*='detect_']").change(function () {
var result, check, month, day, year;
result = regexDateValidator(month = $('#detect_month').val(), day = $('#detect_day').val(), year = $('#detect_year').val());
if ( Boolean(result) ) {
if ( result[2] == 31 && (result[1] == 4 || result[1] == 6 || result[1] == 9 || result[1] == 11) ) {
check = false; // 31 de un mes con 30 dias
} else if (result[2] >= 30 && result[1] == 2) {
check = false; // febrero 30 o 31
} else if ( (result[1] == 2) && (result[2] == 29) && ( !(result[3] % 4 == 0 && (result[3] % 100 != 0 || result[3] % 400 == 0)) ) ) {
check = false; // febrero 29 fuera de un año bisiesto
} else {
check = true;
}
} else {
check = false;
}
if ( check ) {
// hacer algo (fecha valida)
} else {
// hacer algo (fecha invalida)
}
});
});
Ojala le resulte util a alguien ...
Saludos !
Sunday, April 4, 2010
fbinst (particionar pendrive)
Es un muy buen programa para particionar (por ejemplo, pendrives) bajo windows y es free.
http://download.gna.org/grubutil/
Lo unico es que al terminar de ejecutar los comandos hay que desmontar el pendrive y volverlo a introducir (no se como sincronizar el sistema operativo todavia).
Obviamente, estos son simples ejemplos de uso del programa.
Mas info en: http://www.boot-land.net/forums/index.php?showtopic=7932
Saludos !
http://download.gna.org/grubutil/
Lo unico es que al terminar de ejecutar los comandos hay que desmontar el pendrive y volverlo a introducir (no se como sincronizar el sistema operativo todavia).
fbinst.exe --list
fbinst.exe (hdX) format --force --raw --fat32 --size 3800m
fbinst.exe (hdX) format --force --raw --fat16 --size 1900m
Obviamente, estos son simples ejemplos de uso del programa.
Mas info en: http://www.boot-land.net/forums/index.php?showtopic=7932
Saludos !
Sunday, February 14, 2010
Saturday, February 13, 2010
Instalar Windows 7 / Vista / XP y Linux desde una unidad USB o pendrive
Investigando un poco me tope con un EXCELENTE proyecto llamado WinSetupFromUSB que permite crearnos un USB booteable con practicamente cualquier cosa que queramos. Efectivamente se pueden hacer pendrives multibooteables con windows 7 / Vista / XP y Linux todo junto.
http://www.msfn.org/board/index.php?showtopic=120444
Estuve un dia entero renegando con ciertas cosas, asi que lo que recomiendo es ir directamente a la carpeta /files/tools y correr los siguientes:
HPUSBFW.EXE = con esto formateamos en FAT32 el pendrive USB, es muy importante ya que no cualquier formato es reconocido por los BIOS. Ante mi asombro, dentro de un formato FAT32 existen varios tipos como USB-FDD, USB-ZIP, USB-HDD single y multiple. Esta utilidad nos deja el pendrive como USB-HDD single.
BOOTICE.EXE = process MBR y PBR. En ambos instalamos GRUB for DOS y copiamos el grldr (bootloader) y bueno, los menu.lst que querramos (igual al grub de linux).
Despues con el programa en si podemos insertarle el setup de cualquier windows que querramos (se que funciona con XP/Vista/7) e incluso diferentes distros de linux desempaquetando las ISO's en el rigido y agregandolas con la opcion "SysLinux bootsector/Linux distribution using SysLinux" luego.
Recalco que hay q saber editar las entradas de grub (menu.lst) para dejar andando toda la ensalada de sistemas operativos, pero yo he podido crear un multibooteable con windows xp y windows 7 + backtrack 4 sin problemas.
Adios compacteras !
http://www.msfn.org/board/index.php?showtopic=120444
Estuve un dia entero renegando con ciertas cosas, asi que lo que recomiendo es ir directamente a la carpeta /files/tools y correr los siguientes:
HPUSBFW.EXE = con esto formateamos en FAT32 el pendrive USB, es muy importante ya que no cualquier formato es reconocido por los BIOS. Ante mi asombro, dentro de un formato FAT32 existen varios tipos como USB-FDD, USB-ZIP, USB-HDD single y multiple. Esta utilidad nos deja el pendrive como USB-HDD single.
BOOTICE.EXE = process MBR y PBR. En ambos instalamos GRUB for DOS y copiamos el grldr (bootloader) y bueno, los menu.lst que querramos (igual al grub de linux).
Despues con el programa en si podemos insertarle el setup de cualquier windows que querramos (se que funciona con XP/Vista/7) e incluso diferentes distros de linux desempaquetando las ISO's en el rigido y agregandolas con la opcion "SysLinux bootsector/Linux distribution using SysLinux" luego.
Recalco que hay q saber editar las entradas de grub (menu.lst) para dejar andando toda la ensalada de sistemas operativos, pero yo he podido crear un multibooteable con windows xp y windows 7 + backtrack 4 sin problemas.
Adios compacteras !
configuracion wifi / wireless con backtrack 4
ifconfig wlan0 up
iwconfig wlan0 essid 'miredinalambrica'
en el /etc/wpa_supplicant/wpa_supplicant.conf (si es q usamos WPA-PSK con AES unicamente):
network={
ssid="miredinalambrica"
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk="migranpassword"
}
luego levantamos la red asi:
wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
y por ultimo, si usamos dhcp:
dhclient wlan0
Subscribe to:
Posts (Atom)
Followers
About me
- coke
- Santa Fe, Argentina
- Programador Web, PHP, MySQL, JQuery, Administrador Linux. LAMP, Lighttpd, Nginx.