ROT 13, Brainfuck y Ook! (+traductor)

Hoy presento uno de los desavarios mas preocupantes que he escrito últimamente, unos programas en Brainfuck (muy sencillos, eso sí)... pero empezemos por el principio.

Actualizado: el traductor ahora también soporta interpretes de Ook! que no permitan comentarios.

Brainfuck

Como dice la Wikipedia:

Brainfuck (jodecerebros), es un lenguaje_de_programación_esotérico,  
diseñado por Urban_Müller en 1993, con el objetivo de hacer un  
lenguaje que fuera a la vez muy simple, Turing_completo y que  
requiriese un compilador pequeño. Müller basó Brainfuck en la  
máquina_de_Turing y le sirvió de inspiración el compilador de 1024  
bytes de tamaño del lenguaje FALSE.  
La distribución clásica es la versión 
continue.

untagged

Introducción a Structure Synth ( I )

Nada, ya está la primera parte de esta introducción a Structure_Synth, sin mas dilación...

Todos lo que se puede hacer en Structure Synth se basa en unos elementos básicos llamados reglas, las reglas básicas (llamadas primitivas) son:

  • Sphere (esfera) [http://3.bp.blogspot.com/_26RJWnubh-w/TESbLnXFlrI/AAAAAAAAAMU/WkZo-TcXQWA/ s320/sphere.png]

  • Box (caja) [http://1.bp.blogspot.com/_26RJWnubh-w/TESbMjbb_vI/AAAAAAAAAMY/dYJLkeWHL3o/ s320/box.png]

  • Grid (Rejilla) [http://3.bp.blogspot.com/_26RJWnubh-w/TESbOPkyi8I/AAAAAAAAAMg/zxdi_EYpfcM/ s320/grid.png]

  • Line (Línea) [http://4.bp.blogspot.com/_26RJWnubh-w/TESbNI8TUfI/AAAAAAAAAMc/A-M_soM3WpA/ s320/line.png]

Lo único necesario para que se muestre una regla es poner su nombre en el archivo que se va a "leer", por ejemplo

=============================================================================== Sphere =============================================================================== Mostraría una esfera.

Como no, este lenguaje permite comentarios multilínea, desde  /   hasta / y comentarios de una sola línea, poniendo // al principio del comentario, como cualquier comentario en C.

Por cierto, si estas viendo que las imágenes tienen el fondo en blanco, pero si lo continue.

untagged

Structure Synth y Sunflow, diseño en 3D

Hoy traigo un par de herramientas, de las que supe por un mail, son Structure Synth y Sunflow.

Structure Synth se encarga de la parte del diseño, con una peculiaridad, en vez de hacer las figuras a mano, se las "describe" a través de una gramatica... para entendernos, se programan, pero a diferencia de la mayoria de los lenguajes, no hay variables (hay parámetros, pero solo unos predefinidos) ni condiciones, todo está definido como un conjunto de figuras ("rules", reglas), que son algunas figuras básicas (cubos, esferas, lineas...). El truco suele estar en usar la recursividad de las reglas (que una misma regla se llame a si misma, lo continue.

untagged

jGuess: Reconociendo tipos de archivos por los números mágicos

Actualización: Arreglado el problema del "ejecutable"... lo que tiene  no comprobar las cosas

Hoy traigo un pequeño experimento en Java, una especie de file con GUI

Si alguna vez habéis intentado ver (por ejemplo) lo que hay en la carpeta de caché de Firefox, todos los archivos están sin extensión, en estos casos se puede utilizar simplemenente el comando file, pero para quien no tenga una máquina *nix, o no quiera andar con el terminal, quizá quiera probar esto, no es ni de lejos tan potente como file, pero puede servir, además puede añadir las extensiones automáticamente.

[http://3.bp.blogspot.com/_26RJWnubh-w/TDw63PKlOXI/AAAAAAAAALw/lSQzqK9OrlU/ s320/Pantallazo-8.png]

O con archivos normales: [http://4.bp.blogspot.com/_26RJWnubh-w/TDw3b5aJvsI/AAAAAAAAALs/g82dEi049QU/ s320/Pantallazo-6.png]

Para descargar: [jguess.zip] ( descomprimir y ejecutar el .JAR continue.

untagged

HTTPS en todos sitios

(Además de ser lo que es, este post está aquí por curiosidad, para saber cuanto tarda Blogger en publicar un post programado, por ejemplo, para las 23: 59)

Hace tiempo que pensaba hablar de esto, pero me pareció demasiado offtopic, ahora... también.

Traduciendo lo que pone en su web:

HTTPS Everywhere es una extensión de Firefox producida en  
colaboración entre El_proyecto_Tor y la Electronic_Frontier  
Foundation. Encripta tus comunicaciónes en varias webs  
"importantes".

Muchos páginas web ofrecen una encriptación limitada sobre HTTPS,  
pero se hace dificil de usar. Por ejemplo, ellos pueden usar por  
defecto el HTTP sin encriptar o llenar páginas cifradas 
continue.

untagged

Comprobar links de megaupload desde bash

Gracias a Mungu ayer descubrí que bash puede abrir conexiones tcp/ip directamente, sin depender de netcat ni telnet, así que ahí va una pequeña prueba/experimento...

Dice "OK" y sale con 0 si el link a megaupload es correcto, o dice "Invalid link" y sale con 1 si es incorrecto.

Actualizado: ahora funciona también con links sin "www"

===============================================================================

!/usr/bin/env bash

if [ "$1" = "" ]; then     echo "No has especificado una dirección"     exit 1 else     path="/?"echo $1|cut -d? -f2 fi

Request webpage

exec 3<>/dev/tcp/www.megaupload.com/80 echo -en "GET $path HTTP/1.1\r\n" >&3 echo -en "HOST: www.megaupload.com\r\n" >&3 echo -en "Connection: close\r\n\r\n" >&3 cat <&3|grep "Invalid link" >> /dev/null

result=$? if [ $result -ne 0 ];then     echo "OK"     result=0 else     echo "Invalid link"     result=1 fi exit $result ===============================================================================

[Referencias] Bash_socket_programming_with_/dev/tcp

untagged

Listas de palabras de Wikitionary

Como experimento y para probar la nueva versión de Pywc, nació (más bien se escribió) un script que usa Wikitionary (el diccionario de la Wikipedia) para extraer listas de palabras.

La sintaxis es:

=============================================================================== ./wikiwords.py [-help] [-min ] [-max ] [-lang ] [- numpags ] [-incial ] [-nullwd ] -help: muestra esto -min: las palabras de salida serán como mínimo de letras -max: las palabras de salida serán como máximo de letras -lang: se usara el wiki en -numpags: se leeran páginas -inicial: la palabra inicial será -nullwd: la lista de palabras "inútiles" (artículos) está en o no existe (off) ===============================================================================

La lista de palabras "inútiles" de ejemplo es:

=============================================================================== cual cuales de el la los las o y que se en un una ===============================================================================

El script continue.

untagged

Pywc 0.3 (antes PyCrawler)

El cambio de nombre viene porque con una búsqueda en Google por "PyCrawler" se encuentran choporrocientos scripts, asi que para evitar confusiones... Python Web Client -> Pywc

Por lo demás, los añadidos son pocos, un poco de DOM con las funciones website.getElementById(element_id), website.getElementsByName(name) y website.getElementsByTagName(tag), y un nuevo atributo de los website, website.title, todo esto se usaría igual que desde JavaScript (que es la idea).

Además hay algunas correcciones, como los elementos que no sean tags (element.tag == False) tienen un atributo element.text que guarda (obviamente) el propio texto. Si se llama a crawlsite con el segundo parámetro (save_raw) a True, se guarda una copia del site original en el atributo continue.

untagged

Hablando por el terminal

Hoy traigo algo medio OffTopic, para pasar el rato.

Un intérprete de comandos ya permite pasarse horas programando cosas más o menos útiles, pero si además le añadimos un sintetizador de voz, las posibilidades solo las limita la imaginación.

eSpeak es un programa (disponible a través del paquete correspondiente) que permite usar un sintetizador de voz por línea de comandos (aunque tambien tiene una gui), la entrada por defecto se hace por stdin, así que utilizando tuberías (pipes) se pueden hacer cosas bastante curiosas, el parámetro más a tener en cuenta es la voz (que regulará la pronunciación), por defecto es el inglés, pero con -ves se puede configurar continue.

untagged

Números pseudo-aleatorios con Pascal

La generación de números pseudo-aleatorios es una característica que la mayoría de lenguajes de programación implementa por defecto, pero Pascal estándar extendido es una excepción (el FreePascal no, ojo).

Esta historia viene porque hace tiempo necesitaba generar estos números para un programa en Pascal, y al no encontrar nada (aunque bueno... tampoco busqué mucho :P ) programé  algo. No es gran cosa, si se conocen los dos números anteriores y el momento en el que se inició el generador (con una precisión de microsegundos) se puede intentar descubrir cual será el siguiente, pero sirve para algo básico.

Para usarlo solo hay que importarlo y llamar a la función random continue.

untagged

Previous » « Next