October 30, 2007
dna
Diseño Gráfico
2 Comments
Bueno xD aqui esta mi primer cuadro :$ (pa que vean que en bellas artes sabemos hacer mas cosas aparte de tomar chelas xD), u_u hice lo humanamente posible :-# ajajaja XD con un concepto un tanto surrealista… Pintado con acrilico sobre manta.. y con pinceles

Siempre me dice… que si es algun tipo de cuestion de cuidado al medio ambiente… y siempre les contesto… NO, simplemente me gustan las torres de luz XD y hay un camellon lleno de ellas cerca de mi casa, :)… soy simple :$
y esta es ps mi escultura, un relieve, ya lo habia posteado pero en plastilina… despues de lo de plastilina hicimos en molde en yeso, y del molde sacamos un negativo, tambien en yeso, y en mi caso le di un acabado en marfil (se pone una capa de esmalte blanco y despues con oleo sombra tostada se hacen los detalles, despues una capa de laca transparente y listo :))


(me gusta la escuela, pero ya quiero que sean vacaciones :$)
Dudas, sugerencias, comentarios, aclaraciones, traumas y confesiones
dejen coment 
Califica el tema:

Loading ...
October 22, 2007
soullost
Programación
3 Comments
Bueno hoy toca hablar de curses, curses es un conjunto de librerías para el control de terminales en sistemas Unix que entre otras cosas proporciona a los programadores la facilidad de crear interfaces en modo texto TUIs. Aunque curses ya es descontinuado, existe ncurses para unix/linux/etc., y para windows está la razón de esta nueva entrada en el blog, PDCurses.
Lo que me llevó hasta PDCurses fue que en la universidad nos pidieron hacer un editor de texto en modo consola ( no puse texto porque sonaría muy redundante
) y bueno, me rehusaba a volver en aquellos tiempos que por “ignorante” tenía que usar el compilador de Borland (si el mismo que todos alguna vez usamos), el flamante TurboC.
Para empezar hay poca documentación de PDCurses en la red, al menos en español xD. Así que hay dos fuentes seguras sobre la API que implementa PDCurses( en inglés
):
http://www.opengroup.org/onlinepubs/007908799/cursesix.html
http://pdcurses.sourceforge.net/doc/PDCurses.txt
Yo llevo mirando la información hace como 2 hrs
(si, medio torpe yo xD) y ya he realizado lo que sería el menú de la aplicación (sólo el menú) o una parte de él
, el código es el siguiente:
/*
Based on: http://www.linux.cz/noviny/1998-1112/clanek11.html
*/
#include <stdlib.h>
#include <ctype.h>
#include <curses.h>
#define COLOR1 1
//{#define COLOR2 2
int main () {
int c;
char *s;
initscr ();
cbreak ();
noecho ();
start_color ();
keypad (stdscr, TRUE);
curs_set(0);
if (!has_colors ()) {
endwin ();
fputs ("No colors!", stderr);
exit (1);
}
init_pair (COLOR1, COLOR_WHITE, COLOR_BLUE);
attron(COLOR_PAIR( COLOR1 ));
mvaddstr(LINES-25,COLS-57,"| (A)rchivo | (E)dicion | (S)alir |");
mvaddstr (LINES-1, COLS-20, "Press F10 for end.");
while ( (c=getch()) != KEY_F(10)) {
s = (char *) keyname(c);
if (s){
//mvprintw (10, 20, "'%s'", s);
if(*(s)=='A'){
mvaddstr(LINES-24,COLS-57,"| Guardar |");
mvaddstr(LINES-23,COLS-57,"| Abrir |");
}
else if(*(s)=='E'){
mvaddstr(LINES-24,COLS-45,"| Modificar |");
}
else{
mvaddstr(LINES-24,COLS-57,"");
insdelln(-2);
insdelln(+2);
}
}
//else
//mvprintw (10, 20, "'%c'", (isprint(c) ? c : '.'));
}
erase ();
refresh ();
endwin ();
return 0;
}
Screenshot:

El programita hace lo siguiente:
- Muestra un menú en la parte superior en la pantalla a partir de la columna 23 y fila 0 (ventana de 25×80)
- Cuando se pulsa “A” (A mayúscula) muestra un submenú para Abrir|Guardar un archivo por debajo de la leyenda: Archivo (cosa que todavía no hace XD)
- Cuando se pulsa “E” (E mayúscula) muestra un submenú para Modificar un archivo por debajo de la leyenda: Edición (no implementado aún)
- Para salir del programa, se puede pulsar F10
Eso es todo
, eso es la parte más sencilla del editor de texto jajaja
. Lo importante es irme familiarizando con las librerías para poder avanzar en lo demás.
Por cierto, estoy usando Dev C++ para compilarlo
( no me pregunte porque estoy usando windows
).
Nos vemos.
Califica el tema:

Loading ...
October 21, 2007
soullost
GNU/Linux, Gentoo
No Comments

Como ven en la imagen ya podemos tener gnome 2.20 para nuestro querido gentoo. Las novedades las pueden ver en la siguiente url: http://www.gnome.org/start/2.20/notes/es/.
Bien para poder tener a gnome 2.20 primero hay que tener layman instalado y agregamos el overlay de gnome de la siguiente forma:
layman -a gnome-experimental
Procedemos a modificar nuestro make.conf para que portage tome en cuenta el directorio donde se encuntra los overlays:
source /usr/portage/local/layman/make.conf
PORTDIR_OVERLAY="/usr/local/portage $PORTDIR_OVERLAY"
Bueno en este caso además tengo mi directorio personal para paquetes que he agregado a portage (en /usr/local/portage/) por eso listo el directorio. Para quien no le quede claro, nada más tomamos las variables de /usr/portage/local/layman/make.conf:
PORTDIR_OVERLAY="/usr/portage/local/layman/gnome-experimental
$PORTDIR_OVERLAY"
Por eso escribimos dicho source para que reescriba la variable $PORTDIR_OVERLAY y tenga como prioridad el directorio /usr/local/portage en el make.conf para que tome los dos directorios. ok?
Bueno lo siguiente es actualizar nuestra bd de portage con emerge –sync, aunque yo realmente lo hago usando eix:
eix-sync
Bien pero gnome 2.20 aún se encuentra enmascarado en la rama de pruebas de gentoo ~x86 para desenmascarar gnome y todas sus dependencias usamos autounmask:
autounmask -n gnome-base/gnome-2.20.0
Lo que nos agrega al /etc/portage/package.keywords es:
# ---
# BEGIN: gnome-base/gnome-2.20.0
# ---
gnome-base/gnome ~x86
gnome-base/gconf ~x86
x11-libs/pango ~x86
gnome-extra/gnome-media ~x86
gnome-extra/evolution-data-server ~x86
gnome-base/gnome-applets ~x86
gnome-extra/gconf-editor ~x86
gnome-base/gnome-keyring ~x86
gnome-extra/deskbar-applet ~x86
gnome-base/control-center ~x86
dev-libs/libxml2 ~x86
gnome-base/libgnome ~x86
net-analyzer/gnome-nettool ~x86
gnome-base/orbit ~x86
gnome-base/libgnomeui ~x86
media-video/totem ~x86
gnome-base/nautilus ~x86
gnome-base/gnome-vfs ~x86
gnome-base/gnome-menus ~x86
gnome-extra/zenity ~x86
gnome-extra/gucharmap ~x86
gnome-extra/nautilus-cd-burner ~x86
gnome-base/gdm ~x86
gnome-base/libglade ~x86
gnome-extra/gnome2-user-docs ~x86
gnome-extra/bug-buddy ~x86
www-client/epiphany ~x86
x11-libs/libwnck ~x86
gnome-base/librsvg ~x86
net-misc/vino ~x86
gnome-base/libbonobo ~x86
gnome-extra/evolution-webcal ~x86
media-sound/sound-juicer ~x86
gnome-base/gnome-panel ~x86
gnome-extra/gnome-system-monitor ~x86
gnome-base/libgtop ~x86
app-editors/gedit ~x86
dev-python/pygtksourceview ~x86
x11-libs/gtksourceview ~x86
dev-libs/libpcre ~x86
gnome-base/libgnomecanvas ~x86
gnome-base/gail ~x86
x11-themes/gnome-themes ~x86
gnome-extra/yelp ~x86
app-text/gnome-doc-utils ~x86
app-text/rarian ~x86
mail-client/evolution ~x86
gnome-extra/gtkhtml ~x86
media-gfx/eog ~x86
x11-themes/gnome-icon-theme ~x86
gnome-extra/gnome-games ~x86
gnome-extra/gnome-keyring-manager ~x86
app-arch/file-roller ~x86
gnome-extra/gnome-screensaver ~x86
gnome-base/libgnomeprintui ~x86
gnome-extra/gnome-utils ~x86
gnome-extra/gnome-power-manager ~x86
app-admin/pessulus ~x86
gnome-base/gnome-desktop ~x86
gnome-base/libbonoboui ~x86
dev-libs/atk ~x86
x11-terms/gnome-terminal ~x86
gnome-base/gnome-session ~x86
app-text/evince ~x86
x11-wm/metacity ~x86
dev-libs/libxslt ~x86
x11-libs/vte ~x86
gnome-base/eel ~x86
gnome-extra/gcalctool ~x86
x11-themes/gnome-backgrounds ~x86
gnome-base/libgnomeprint ~x86
x11-themes/gtk-engines ~x86
# ---
# END: gnome-base/gnome-2.20.0
# ---
Nota: El parametro -n que se le manda a autounmask es para que NO anexe la versión a los paquetes (cosa útil, ya que si actualizan los paquetes de la rama 2.20 (ejemplo a 2.20.5) ya sea por arreglo de bugs o demás entonces procederá a actualizarlos.
Listos?:
emerge gnome
Espero les sirva 
Califica el tema:

Loading ...
October 18, 2007
soullost
GNU/Linux, Parsing
3 Comments
Hoy me he dado un momento para empezar a usar Graphviz (http://www.graphviz.org) que es un programa para realizar gráficas. Graphviz es exactamente el mismo programa que usa Kakuy (proyecto SEPa). Kakuy es un software en windows que usa para animar (por medio de gráficas) técnicas de parsing, muy recomendado más por la extensa documentación sobre las técnicas de parsing
.
Bueno, para empezar hay que saber que Graphviz usa documentos *.dot para que por medio de dot (comando) se pueda leer la estructura de éste y se genere la gráfica correspondiente.
Un ejemplo simple:
ejemplo.dot
digraph G{
rankdir=LR;
node [shape = doublecircle]; q3;
node [shape = circle];
q0 -> q1 [ label = "a" ];
q1 -> q2 [ label = "b" ];
q2 -> q3 [ label = "c" ];
}
Para crear un archivo *.png mediante el archivo ejemplo.dot en nuestra consola hacemos:
dot -Tpng ejemplo.dot -o ejemplo.png
soullost@UnderHouse ~/dots $ ls *.png
ejemplo1.png
La imagen:

! Ya tenemos nuestro primer autómata dibujado!
XD
La razón de usar Graphviz es porque quisiera poner más ejemplos de parsing pero no encontraba como dibujar los autómatas de una forma sencilla
, en fin puedes obtener Graphviz de:
Windows: http://www.graphviz.org/Download_windows.php
Linux: http://www.graphviz.org/Download_linux.php
Gentoo
:
emerge graphviz
Hay cosas más interesantes sobre Graphviz, por ejemplo, hay una librería para C y Python (me parece xD)..
Recomendado leer:
- PDF dot guide
Nos vemos!!..
Califica el tema:

Loading ...
October 16, 2007
soullost
Programación
3 Comments
Así es, hoy he realizado dos cosas:
1) Mi primer programa usando los tan famosos sockets
2) Mi primer programa usando C#
Estoy tratando de aprende C# por la feria de ciencias en hackerss.com y bueno, me he integrado al grupo de programación
.
En fin 8), puede seguir un curso rápido para crear tu primer socket en 5 min. (si es que sueles leer un poco despacio XD) aqui: http://foro.elhacker.net/index.php?topic=165986.0
Yo he modificado un poco el código fuente para que en el programa principal sólo sea cosa de poner: interfaz(conexion(ip,puerto));, quedando de la siguiente forma:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Sockets
{
class Program
{
static public Socket conexion(string dir, int puerto)
{
IPAddress ip = Dns.GetHostEntry(dir).AddressList[0];
IPEndPoint canal = new IPEndPoint(ip, puerto);
Socket sockete = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sockete.Bind(canal);
sockete.Listen(100);
Socket link = sockete.Accept();
return link;
}
static public void interfaz(Socket link)
{
byte[] bytes = new byte[1024]; //Declaramos un array de bytes de longitud 1024
int count;
String data = ""; //Declaramos data, que sera donde se almacenaran los datos
do //Bucle Do/While
{
count = link.Receive(bytes); //Recibimos los datos enviados y lo guardamos en count.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, count); //Lo codificamos a cadena (ya que se envian como bytes)
if (data != "exit\n") //Mientras lo recibido no sea exit + \n (es decir, exit + Intro, ya que intro tambien se envia)
{
Console.Write("Se a recibido: {0}", data); //Mostramos lo recibido pro pantalla
}
} while (data != "exit\n"); //Mientras lo recibido no sea exit + Intro se continua el bucle, si recibimos exit + intro, salimos del bucle
Console.WriteLine("Se ha finalizado la conexión"); //Avisamos qde que se a terminado la transferencia de datos
byte[] msg = System.Text.Encoding.ASCII.GetBytes("\n\nFinalizada conexion con la aplicacion"); //Codificamos de string a byte el siguiente mensage para que se pueda enviar al NetCat (Cliente)
link.Send(msg); //Enviamos el mensage al cliente
link.Shutdown(SocketShutdown.Both); //"Apagamos" los sockets
link.Close(); //Los cerramos
}
static void Main(string[] args)
{
interfaz(conexion("localhost", 666));
}
}
}
Las imagenes de demostración (para los que piense que soy chismoso xD):
Netcat:

Programa en ejecución:

Las sugerencias/criticas son bienvenidas (aunque no es nada
).
Nos vemos!!.
p.d Hoy el nuevo capitulo de prison break
Califica el tema:

Loading ...
« Previous Entries