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.

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 que lo hace ideal para generar fractales) y , aunque menos, las repeticiones, como repetir muchos cubos para hacer una especie de aro.

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 ) El código fuente: [jguess_src.zip]

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 con enlaces  
que vuelven al sitio sin encriptar.

La extensión HTTPS Everywhere arregla esos problemas reescribiendo  
todas las peticiones a esas páginas a HTTPS. Los usuarios de Firefox  
la pueden conseguir haciendo click aqui:  
[https://www.eff.org/files/https-everywhere-button.png]

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 ===============================================================================

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:

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 web.raw. Por último, se arregló un problema con las URL.

Aquí el ZIP con esto: [pywc_03.zip] El crawler actualizado: [fastcrawler_03.py] Y el descargador de lista de proxies actualizado: [proxylist_03.py]

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 para castellano, la sintaxis, es -v [código del idioma]

Algunos ejemplos de su uso pueden ser

=============================================================================== fortune | espeak -ves ===============================================================================

para que lea una frase aleatoria

o

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 usando el número "tope" como parámetro, por ejemplo, para generar un número del 0 al 100 (ambos incluidos):

=============================================================================== aleatorio := random(100); ===============================================================================

ASCII Art con Python [Actualizada]

[Actualizado, añadidos más caracteres y arreglado el problema con el unicode]

Hoy traigo algo curioso, un script que hace ASCII Art a partir de una frase cualquiera.

El script se puede descargar aquí [asciichars.py]

Los parámetros son ./asciichars.py [ -s ] [ ]

El espaciado es (obviamente) el espacio entre los caracteres, por defecto 8. Y la frase, lo que aparecera en el ASCII Art (si no se especifica, se pedirá durante la ejecución).

La verdad, no tengo muy claro como explicarlo :D, así que para muestra un botón ./asciichars.py -s 10 "#28" [http://2.bp.blogspot.com/_26RJWnubh-w/TC-NvUoIdsI/AAAAAAAAAK0/nbH_dWlPMXQ/ s1600/Pantallazo.png]

Los caracteres que hay son:

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

0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z [Espacio] ! # | + - = . ] [

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

El juego completo de caracteres...

Newer posts Older posts