Creative Commons License krshock: insanidad garantizada por krshock está licenciado según la Creative Commons Atribución-No Comercial-Sin Derivadas 2.0 Chile License. excepto en los casos que se declare explícitamente otra licencia o autor.





Chileno, Talquino, Santiaguino y Talquino.

miércoles, junio 29, 2011

mongodb

Aprovechando de cacharrear un rato con mongodb, les dejo un par de números, que aunque por sí solos no dicen mucho, permiten hacerse una idea:

domingo, junio 19, 2011

#hoyAprendí-001: Ingeniería de Ejecución en Informática


A continuación una selección al azar de lo que he visto por la internet por estos días:

  • Virtualbox no soporta sistemas guest de 64 bits en en un host de 32 bits ni viceversa, no es gran problema, pero es algo que tener en cuenta para el futuro.
  • mongoDB tiene un límite de 2,5 GB de almacenamiento en sistemas de 32 bits, no es que planee alcanzar ese volumen de datos en pruebas caseras pero he leido comentarios de gente que se ha enterado algo tarde.
  • cassandra está hecho en java, no tengo escusa, java será maravilloso pero bueno... pero no me agradan los runtime de 135mb, Patrones de programación extraterrestres y GUIs legadas, feas y lentas con las cuales sobrecargar mi CPU me han hecho un prejuicioso.
  • Como seleccionar registros aleatorios de una consulta sql en SQL SERVER, MySQL, PostgreSQL Access, DB2.... exactamente lo que necesitaba para un pequeño conejillo de indias que estoy programando.
  • La existencia de los sistemas de recarga continua para impresoras a color que permiten recargar sin sacar el cartucho(uno especial que reemplaza el original de la impresora, y es alimentado por un conjunto de manguerillas) son muy prácticas y AHORRAN-UNA- FORTUNA. Así que si trabajas en algo que requiera cantidades ingentes considerables de impresiones a color prueba uno de estos sistemas.
PS: No es que realmente odie a Java, es un mero asunto de feeling.

jueves, junio 02, 2011

krshock - ¡pium MUERE!



Me demoré 45 minutos desde que abrí Milkytracker a el instante que terminó en línea en los servidores de Goear.
Me duele reconocer lo mucho que me agradaría programar un buen juego que acompañe a esta canción remedo de ChipTune. Pero mi cabeza por estos días no anda exactamente "sobrada" de tiempo para nada.

Es una canción cíclica, el loop principal se repite dos veces para que se hagan la idea de escucharla a lo largo de todo el nivel de un juego de manera (si aguantas) infinita.

sábado, abril 16, 2011

Limitar ancho de banda utilizable por apt-get

Si no se te ocurre ninguna situación en la que la instalación/descarga de un paquete o la actualización de tu sistema pueda saturar tu medio de acceso a internet hasta el punto de congelar irremediablemente todas las demás tareas en las que tú (y/u otra gente además de tí) estén realizando en la red... entonces no hay sentido (ni contexto consistente) en que sigas leyendo.

Creo ya haber explicado la idea de porqué esto puede ser útil, así que enfoquémonos en la manera de lograrlo. El método que acostumbro utilizar es sencillamente agregarlo como parámetro de configuración del modulo de descarga http al momento de ejecutar un comando con apt por ejemplo:

apt-get -o Acquire::http::Dl-Limit=200 upgrade


Donde el 200 puede ser reemplazado por el límite de ancho de banda a utilizar (expresado en kbps), lo agradable y elegante de esta solución es que sólo afecta la instancia actual en ejecución sin guardar la configuración para ejecuciones futuras.

¿fácil no? Es una ridiculez dedicarle tanta palabra a algo tan simple... pero podré vivir con ello.

martes, enero 04, 2011

Hola mundo en assembler (sin sistema operativo)

Siempre he creído que para iniciarse en algo nuevo hay que (como dirían por mis tierras) "tirar toda la carne a la parrilla". Y como el kernel de linux tiene una estructura ridículamente complicada he decidido aprender ciertas cosas por mi cuenta.
Esta vez nada de fanboyismos ni esas cosas de mal gusto que proliferan por la interné, todo el código es liberado bajo licencia pública por aburrimiento y decisión propia.
// prog.S
// Prototipo programa Assembler
// Hola Mundo Sin sistema operativo para IA32, i386 o x86

// by krshock! krshock@gmail.com
// Código licenciado como material de Dominio Público

.globl kloader

// Lea la especificación multiboot para entender las siguientes cuatro lineas:

.align 4; // Encabezado multiboot
.long 0x1BADB002; // Multiboot magic number
.long 0x00000003; // Multiboot flags
.long 0-(0x1BADB002 + 0x00000003); // Multiboot Flags Checksum

// Espacio reservado para nuestro stack
.comm __stack, 0x4000


// Primera función ejecutada
kloader:

// Define un espacio en memoria seguro para utilizar como stack
mov __stack+0x4000, %ebp

// Llama a la función 'main'
call main

// Desactiva las interrupciones
cli

// Fin del programa en un loop infinito para hacer un HALT a la cpu.
loop:
hlt
jmp loop; // esto es para 'solo para asegurarse'


// Funcion principal (llamada desde kloader)
main:

// Borrar pantalla para eliminar cualquier mensaje de la BIOS.
call clscr

// Mover a EAX el 'puntero' al mensaje "hola mundo" (definido al final)
// (Nótese el paso de parametros al procedimiento asprint sin empujarlo al
// stack como ocurre en C)
mov $.msg,%eax
call asprint
ret


// Imprime un mensaje desde un puntero en EAX en el extremo superior de la
// pantalla. La dirección de memoria 0xb8000 corresponde exactamente al primer
// carácter de la pantalla de texto.
asprint:
push %ebp
mov %esp, %ebp

mov $0xb8000,%ebx
.prloop:
mov (%eax),%cl
mov %cl,(%ebx)
inc %eax
add $2,%ebx
cmp $0,(%eax)
jne .prloop
pop %ebp
ret

// Clear Screen (borrar pantalla)
// Elimina cualquier texto de la pantalla. No reiniciará los colores, solo
// los caracteres.
clscr:
push %ebp
mov %esp, %ebp
mov $0xb8000,%ebx; // Puntero al primer caracter en pantalla en EBX
mov $0xb8000,%ecx
add $160*25-2,%ecx; // Puntero al último caracter de la pantalla en ECX
mov $' ',%al;
.clsloop:
mov %al,(%ebx)
add $2,%ebx
cmp %ecx, %ebx
jna .clsloop
pop %ebp
ret

.msg:
.ascii "ensamblador: Hola mundo!\0"
dicen las malas lenguas que esto compila en linux con el comando:
as prog.S -o prog.o -g
ld -T linker.ld -o lala.bin prog.o
además chico pérez me dice por interno que esto se puede probar con el emulador qemu:
qemu -kernel lala.bin