Llevando la contraria sobre la sintaxis de arrays en C

Hola, hoy quería mostrar una pequeña ida de olla, hechadle un vistazo al siguiente código:

int main(int argc, char  **argv){ 
    char *x = "Hola, mundo!\n";
    int i;
    for (i = 0; i[x] != '\0';i++){
         putchar(i[x]);
    }
    return 0;
}

Compila, y hace lo que parece, pero tiene algo extraño... el orden variable [posición] está invertido, por que sigue funcionando.

Lo que pasa es que la posición de memoria se calcula como <dirección a la que apunta 'variable'> + (<posición> * <tamaño de continue.

ARC4 en Lisp

Últimamente he estado trasteando con Common Lisp, y ya que tengo la constumbre de escribir una implementación de ARC4 como prueba de un lenguaje, ahí va una (está comentada de más precisamente para servir como ejemplo): continue.

Eliminar el 'Compressed Header' de los vídeos MKV [tip]

El formato matroska tiene una característica (opcional) 'Compressed_Header' que puede traer problemas si intentamos convertir un vídeo desde este formato con mencoder, la forma de crear un archivo sin esta característica es sencilla:

mkvmerge -o archivo_para_convertir.mkv archivo_original.mkv

mkvmerge forma parte del paquete mkvtoolnix, así que se puede instalar en los derivados de debian con

sudo apt-get install mkvtoolnix

One liners (14): sacar un número decimal de /dev/random en bash

 

1
head -c 1 /dev/random | od -An -td
  • head -c 1 /dev/random: Lee un solo caracter de /dev/random.
  • od -An -td: od suele usarse para mostrar los valores octales de un archivo (de ahí octal dump), con -An indicamos que no queremos que se muestre el offset, y con -td hacemos que se muestre en decimal.

Diccionarios a lo Javascript en Python

Los "diccionarios" en javascript tienen una propiedad curiosa, que se pueden manejar los elementos como si fuera un array índicando el índice (con una variable) o como si fuera un atributo del objeto:

> var x = {}
> x
{}
> x.name = "joe"
'joe'
> x
{ name: 'joe' }
> x['name']
'joe'
> x.name
'joe'
>

En python los diccionarios no tienen esa propiedad, pero es fácil de hacer una clase que sí, apoyandose en que cada objeto tiene un diccionario interno, self.dict que almacena sus atributos, jugando con él (al menos si no nos metemos con los atributos que define la clase :P)... continue.

`true` o `false`, cuantas variaciónes son posibles?

true y false son comandos unix que al ejecutarlos simplemente se finalizan con código 0 y 1 respectivamente, algo que suele significar que hayan acabado correctamente (0) y haber fallado (no 0).

Cuanta diferencia puede haber entre el código en distintas implementaciones? No mucha verdad?, al fin y al cabo es más simple que un Hola mundo. Pues tiene gracia la cosa =) ...

(Sin ningún órden en concreto)

GNU: escrito en C, jugando con el preprocesador, ¿por que no?.
true.c (78 líneas)
false.c (2 líneas)
80 líneas físicas, SLOCCOUNT: 52

OpenBSD: en bash, un simple exit.
true.sh (3 líneas)
false.sh (3 líneas)
6 líneas físicas, SLOCCOUNT: 2

FreeBSD: en C, la mitad es licencia continue.

Fin del CUSL, resultados con BLK

Al parecer, a menos que haya entendido mal, el Concurso Universitario de Software Libre de este año toca a su final, ha sido divertido, he aprendido mucho y me haría falta valgrind para recordar todos los leaks de horas de sueño.

Realmente no hay mucho que decir, el proyecto se estancó demasiado (sobretodo cada vez que había que implementar el endemoniado preprocesador de C xD), mucho más atrás de lo esperado. Aún así tengo pensado seguir trabajando, la experiencia no ha hecho más que confirmar que una herramienta para experimentar con estas cosas sería útil, sobretodo si algo muy básico requiere tanto tiempo.

Sobre el desarrollo en sí, el continue.

tagged as

Una red P2P para compartir enlaces

La historia

Año 2012, los habitantes de Internet han desarrollado herramientas para distribuir información entre redes de pares, desde los enormemente extendidos (eDonkey y BitTorrent) a otros algo menos, de los que solo se preocupan de repartir información a los que se centran comprometer lo mínimo a los extremos (GNUnet y Freenet), de los que solo distribuyen archivos a los que conforman una capa sobre la que se pueden erigir otros protocolos (I2P).

Se han llegado a encontrar formas de coordinar toda esa nube de máquinas de forma distribuida, sin puntos centrales, con Tablas hash distribuidas. Incluso se ha conseguido llegar a una forma de identificar la forma de continue.

Queda dicho

Leyendo Mimi and Eunice me encontré esto:

  • Te denuncio por robar los potenciales beneficios de mi cliente.
  • Eso tiene sentido potencial.
  • Aquí tienes cien mil potenciales dólares.

One liners (13): sacar un número de urandom en python

 

1
reduce(lambda x, y: x * 256 + y, map(lambda x: ord(x), os.urandom(1024)))
  • os.urandom(1024) Lee 1024 bytes de urandom.
  • map(lambda x: ord(x), ...) Convierte la cadena en un array con los valores de los caracteres.
  • reduce(lambda x, y: x * 256 + y, ...) Junta los bytes respetando el valor dado por la posición.
Previous » « Next