Acerca de Ncurses

8 01 2010

Escribo este post solo porque no puedo dormir, es acerca de ncurses una libreria que fue diseñada y programada para trabajarla con c++. Veamos como se trabaja con ella.

Primero hay que decir que si usd estimado lector(a) ha tenido la oportunidad de trabajar con el clasico y repugnante  Borland c++ tambien conocido como turbo c++  (De turbo no tiene nada) estara acostumbrado(a) a usar la libreria conio, esta libreria No es standard por lo tanto podemos decir que es otro intento de Borland para tirarse flores y decir que mejoraron c++ notablemente (o talvez no), el punto es que bajo linux No puede usarse conio y esto pone en apuros a los aprendices de c/c++ que migran a x distribucion. ncurses soluciona la problematica ya que es como la conio de linux, veamos por que es esto:

Con ncurses podemos mover texto sin tener que declarar una molesta funcion que incluya strlen para sacar la extension de una cadena ni  formulitas extrañas que nos hacen perder el tiempo. En conio se usa gotoxy(x,y) en ncurses tenemos move(y,x).

Nota: gotoxy(x,y) es mas nativa de pascal que de algun otro lenguaje de programacion, por eso borland sucks.

Con ncurses manipulamos colores directamente, en conio esto no se puede hacer ya que para eso existe Graph (el supuesto SDL de Borland…. PPPfffff….), lo hacemos asi:

if(has_colors()){             //Esto inicializa la posibilidad de usarlos al comprobar si la linea de comandos usada soporta o no colores, si los soporta                                              //devuelve  true

start_color( );

}

init_pair(1,COLOR_BLACK,COLOR_BLUE);     // se define la combinacion de colores, el primero es el fondo el segundo color de letras.

attron(COLOR_PAIR(1));    //Iinicia los colores elegidos mediante init_pair( );

Con ncurses podemos dibujar figuras en la pantalla tal y como lo hacemos con el graph de Borland.

En otras palabras esta libreria es matar dos pajaros de un solo tiro, en fin, ahora veamos como instalarla y como compilar codigo ncurses:

Para instalar recomiendo ir a synaptic o al package manager que tengan y busquen ncurses, de inmediato salen los paquetes a instalar. Ahora para incluirla solo debemos hacer escribir una directriz de preprocesado:

#include <ncurses.h>

Si tratamo de compilar el codigo escrito con las propiedades de ncurses obtendremos un error ya que el linker no identificara ncurses hasta agregarla al compilador que estemos usando (gcc), para agregarla solo escribimos -lncurses y guardamos (esto en el panel de linker que corresponda al IDE que estemos usando), si programamos en terminal utilizando nano solo compilamos de la manera mas clasica:

gcc -lncurses fichero.cpp

Pueden encontrara un ejemplo mas concreto de un programa con ncurses en la seccion de c++ del blog, escrito con codeblocks.





Ah y las buenas nuevas…

25 12 2009

Luego de criticar a mi amigo el director de carrera llegue a hacer las pases con el y terminamos en un plan tranquilo, hasta nos dimos un saludo navideño… Quien lo iba a decir??? Fue un final inesperado. Actualmente estoy de vacaciones, solo tengo un mes pero hay que considerar que normalmente me dan 2 semanas asi que bien por el pinche rector que sento cabeza y nos dejo descansar mas :D !  Por otro lado tenemos a los señores de universidades publicas que descansan como 3 meses, luego entran a clases y despues de 2 meses de estar en aulas se toman un mes mas y se la pasan asi… ESO SE LLAMA SER VAGABUNDO. Y pensar que con los impuestos pagamos la educacion de esa poca de tarados… Deberian quemarse en el infierno. Bueno en fin, como no tengo mas que hacer sigo escribieno tonterias en este blog.

Hay algo que queria escribir desde hace tiempo pero siempre se me olvidaba por el estupido sueño, tengo un blog aparte que tambien esta respaldado por wordpress, he aqui el link: www.davidmora.co.cc

Y notaran que es la misma mierda…

A veces me da por las malas palabras asi que usted amable lector(a) me disculpara. LOL.





Navidad Geek

25 12 2009

Y finalmente paso navidad, ahora a despedir este año. Bueno, mi navidad no estuvo mal ya que recibi cosas interesantes, entre estas un peluche de mi querido pinguino Tux. Esta genial el peluche y luego accesorios para mi computadora obviamente, entre ellos un headset y nuevos parlantes que estan mounstrosos (Ya necesitaba algo asi para escuchar a slayer).

Normalmente esta epoca del año me hace sentir raro, el año pasado estaba pasando por una etapa un tanto confusa y estos aires navideños me remontaron a esa epoca en donde todo se volvia un laberinto  (Pero eso no les importa). Estoy satisfecho ya que Irian ha avanzado bastante y todo gracias al esfuerzo de 3 personas (Y se supone que somos 7 en el equipo) monton de inutiles, NADA DE CRÉDITO PARA USTEDES.  Espero que en enero ya se puedan descargar la iso del RC2 que en realidad va a estar un poco pesada ya que segun la ultima compilacion la iso tenia un tamaño de 1 GB, es decir, un DVD. Pero bueno, no me importa, mientras funcione todo esta bien. Muchos idiotas de por ahi insisten en joder diciendo para que tocar el kernel del live cd? Estan re inventando la rueda :) . CORRECTO, re inventandola se aprende mas.

En cuanto a pascal pues ya todo quedo atras y este cuatrimestre que viene solo sera de 3 materias ya que quiero dedicarme a Java y  a PHP, el infeliz pervertido de estructura de datos tendra que esperar un cuatrimestre mas para ver mi espantosa cara entre su alumnado. Creo que es todo… seh





PHP… Otra vez

7 12 2009

Bueno mencionar que un conocido de mexico me contacto para pedirme ayuda con una web que piensa levantar y que desea tener lista para marzo, su plan es hacer un sistema de posts no tan complejo como el de wordpress obviamente pero al menos funcional. Al parecer le voy a ayudar un poco con el codigo para postear, no es gran cosa pero hace mucho tiempo no programo en php. A decir verdad estuve dando unas cuantas lecciones en la universidad a principio de cuatrimestre pero al llegar a operar con mysql la muchacha a la que le daba las clases se asusto y nunca mas volvio a experimentar con su appserv. Una lastima por que tenia talento. Bueno y es que no soy fan del lenguaje, prefiero javascript sobre php. En fin, sera divertido crear este pequeño sistema. Espero terminar Irian rapido para estar disponible.





Tortura compilada

7 12 2009

Y una vez mas estoy por aca posteando para desahogarme, bueno pues resulta que ya casi finaliza el cuatrimestre en la universidad y estoy con esto de los proyectos finales en programacion, a pesar de uqe ya deberian de darme mi titulo y dejarme en paz mientras aprendo Java y objective c por mi cuenta, los profesores insisten en que debo aprender a programar en pascal. Bueno, talvez sea util para algunos pero para mi es una porqueria de lenguaje. Resulta que en mi mediocre facultad dan pascal pero sin ganas (bueno todo lo dan sin ganas) en donde lo mas que vemos son arrays y dejamos los records atras como si no existieran, no se ven punteros y solo se manipula crt si es que hablamos de unidades, en otras palabras patetico. En fin, el proyecto este trata de trabajar con arrays multidimensionales y bueno puede valer mucho el proyecto pero para mi es una tortura tener que estar escribiendo codigo en semejante mierda. El gordito que se especializa en pascal y que ademas es mi director de carrera cree que programar en pascal y en cobol es la hostia y que c++ no sirve para nada (O al menos para el c,c++ y c# son lenguajes satanicos). A ver: No es mi culpa que a algunos les cueste mas aprender c++ que a otros! En fin, de todas formas en esa universidad dan c++ de juguete o mejor dicho dan c de juguete. Pero bueno no me queda de otra, debo hacer ese proyecto y creo que lo hare con clases y objetos, estructuturas ignoradas por mi amigo el director (Probablemente tambien satanisadas) bah… ya es lo ultimo de pascrap, luego mas Java.





Java es descente

2 12 2009

A pesar de que no me declaro fiel seguidor de la tecnologia de Sun debo admitir que es bastante flexible y muy demandad actualmente, es por eso que me he decidido a aprenderla y la verdad me he dado cuenta de  que resulta mas amistosa que c++ ya que existe la posibilidad de importar librerias que generan con facilidad ventanas,dialogos y demas componentes que en c/c++ se tienen que programar desde cero.

Yo pensaba que Javascript no tenia nada que ver con Java pero en parte me equivoque. Muchos autores responsables de libros orientados a este lenguaje web afirman mas de una vez que Java no tiene que ver nada con Javascript y que solo se parecen en el nombre, bueno estas personas deberian de admitir que si existe una similitud pero no hablamos de la sintaxis, hablamos de las funciones ejecutadas por las 2 tecnologias. Java sirve para web (Desarrollo de applets) y para demas cosas pero podemos generar programas que en javascript  podemos emular facilmente, he aqui un ejemplo:

Javascript:

//Crea un dialogo de alerta para advertir algo al usuario.

function advertencia( ){

var sAdv = “No tiene permisos para ingresar aca.”;

alert(sAdv);

}

Java:

import javax.swing.*;

public class advertencia{

public static void main(String [ ] args){

String adv = “No tiene permisos para ingresar aca.”;

JOptionPane.showMessageDialog(null, adv);

}

}

El output es exactamente el mismo. A lo que voy es que la sintaxis es distinta pero los recursos para los lenguajes son los mismos y esto puede facilitar considerablemente el manejo de Java para el programador o bien el manejo de Javascript (Si es que ya se sabe Java).

Es todo, por cierto uso NetBeans 6.5 que se puede instalar de la siguiente manera (la mas convencional):

sudo apt-get install netbeans





Houston Tenemos un problema

25 11 2009

Lxde, muy bonito, muy ligero y por ende muy rapido, incluso Canonical publicara dentro de poco el famoso Lubuntu que incluye este entorno por default. Como lo comente en el post anterior ya tuve la oportunidad de usar este escritorio ya que lo descargue mediante apt. Segun la pagina oficial de este proyecto, Canonical mantiene a LXDE activo en los servers dedicados a sus sistemas operativos (esto desde Intrepid Ibex) lo que nos dice que no hace falta abrir el sources.list y añadir los repos para descargar.

En fin, habia mencionado en otro post la existencia de esta distro que estoy desarrollando con un equipo de geeks: Irian Linux. Queremos usar LXDE como entorno por default pero oh sorpresa! En chroot, no habilita la descarga!!!! Segun mi sistema no existe ningun paquete relacionado a LXDE lo que contradice lo leido en la pagina oficial de la organizacion responsable de su desarrollo… Eso es extraño ya que lo descargue sin ser root y ahora cuando lo soy no me sale … Y saben que es lo peor ? El primer release Candidate esta planificado para el Viernes 27 de Noviembre… MARAVILLOSO :) .





lxde

24 11 2009

Gnome es el entorno grafico mas convencional en sistemas operativos Linux y luego le sigue KDE. Quien sabe de la existencia de Enlightenment por ejemplo? Bueno en mi vida he visto una distribucion que utilice esta plataforma para darle una buena apariencia a esa terminal gigante que esta detras de cada proceso que ejecutamos, en fin, como estoy escribiendo de tantos entornos graficos (ya se que son solo 3 pero me vale) es una obligacion hablar de lxde, entorno ligero, rapido y muy bonito que garantiza una experiencia user friendly para todos aquellos noobs que no saben usar terminal o para todos aquellos amigos que ya esten cansados del KDE del salckware por ejemplo.

Y es que estaba yo navegando tranquilamente en esta red gigante de computadores a la que llamamos internet cuando tope con un portal que radica aqui mismo en wordpress, el blog Ubuntu Life que mostraba un post acerca de como hacer una instalacion minima de entornos graficos Gnome o KDE. Me interese tanto que empece a ver comments y bueno vi uno que  hablaba de lxde y asi me meti al site oficial del proyecto y Dios, esa cosa es perfecta.

Cuando creia que el motor de ventanas del xubuntu era lo mas rapido y menos comprometedor para el procesador de la pc conoci a lxde, y si, ya lo probe, por algo hablo tambien de el. Para los que no tenian idea, tengo el proyecto de crear una pequeña distribucion linux, todo esta en desarrollo y pensaba usar Gnome como desktop debido a que me baso en jaunty jackalope para hacerlo, pero bueno ahora, lxde es el nuevo entorno que coloque y esta muy muy bien. Probablemente opte por hacerlo en el sistema que uso para publicar estas estupideces (que es karmic koala… grave error).

En fin, este app esta escrito en C y se uso la lib o mejor dicho el kit de libs de GTK+ para su elaboracion, visiten la web del proyecto y no se arrepentiran, es como el hermano menor del Gnome que todos conocemos.





Como un perro

24 11 2009

Bueno escribo este post despues de una aburrida clase de programacion en pascal… bleh… Son pocos los programadores que necesitan pascal actualmente para sentirse completos o bien para sobrevivir programando aplicaciones. Bueno en fin, como de costumbre llego y veo que para variar a todo el mundo le sigo cayendo mal, me importa? En realidad un pepino es lo que me importa, o mas bien debo decir la mitad de un pepino. Lo que paso es que estaba casi que dormido y medio redactando mi codigo en este lenguaje muerto cuando de pronto una compañera me llamo la atencion como si yo fuera un maldito perro:

“Hey, hey, psh, psh…” mientras extendia su brazo hacia mi direccion, es decir, ok, soy un rechazado social ya lo se, no es nada nuevo pero eso quiere decir que tengo el nivel de un perro? Fue cuando pudiendo solventar su duda le dije que no sabia lo que pasaba con su app y luego segui en lo mio. Dios mio, esa es gente que te pide ayuda y un dia sos como lo mejor ya que hasta te gratifican el tiempo que perdes para estar con ellos y explicarles como manejar una pinche string, pero al dia siguiente la sonrisa se les borra automaticamente, piensan que son tu o tu mami o tu papi y que saben mas que vos y ni te saludan y al final cuando todo sigue igual (ellos llorando) acuden a pedirte ayuda otra vez. Bueno, no existe mas ayuda, limito mis conocimientos a gente que vale la pena, no a hipocritas por Dios.

Bueno en fin, estoy cansado, no pude ni hacer una practica de vectores por que me estaba durmiendo y bueno estaba viendo tambien a la que desearia fuera alguien especial pero se que nunca lo sera simplemente por 1 razon: Soy un geek que dice la verdad sin temor y que usa linux 100% desde terminal jajaja :) entonces concluyo el post diciendo: RTFM NOOBS!!!!!!!!!!

 





Maldito protocolo de windows live! Aberracion del programador antisocial.

23 11 2009

Ok, a ver: Todos sabemos que es messenger, sabemos que es una plataforma de comunicacion basada en .Net Framework de Microsoft (Compañia que odio y desprecio), y que esta instalado por default en cada pinche sistema que Microsoft lanza y que gracias a esto la gente cree que messenger es el unico programa de IM existente o bien, cree que es el mejor programa de IM que se puede encontrar en la web. Pues bueno eso es falso. Pra empezar toda tecnologia de Microsoft es mediocre, si es mediocre es inestable y que es un app inestable? NADA. Pero este post no se enfoca al protocolo del app ni al messenger en si, ni mucho menos en este famoso winsocket que todos los amiguitos y fiel seguidores de Gates usan para decir : “uy VB es la hostia! Logre programar mi propio msn en menos de 300 lineas!”

El post se enfoca en declarar a msn como La aplicacion mas hipocrita de todas. Y esto por que? Bueno estimado lector o lectora, aca es cuando le pregunto amablemente: Tiene usted vida social? Si la repuesta es si, dudo mucho que usd comprenda mis fundamentos para redactar esta entrada del blog, pero si la respuesta es no y es usd un geek que se desvela por programar por placer en lenguajes que valen la pena o bien jugando con el kernel amado de linux entonces es posible que me entienda. No tengo vida social por estar en mi cuarto mas de 12 horas por dia escribiendo codigo, y esto a que tiene que ver con msn? Simple, que a pesar de  estar solo uso el msn o al menos su protocolo ya que como uso linux utilizo clones como aMSN o emesene (Que a pesar de ser clones resultan ser mejores que el msn original), y ustedes se diran: Pero todo mundo usa msn, bueno creanme no todo el mundo opta por esta basura pero yo lo tengo que hacer por que a noob que ayudo a noob que agrego. En la universidad he ayudado a muchos noobs: Konata, la amiga de Konata, el amigo de Konata y emm.. al otro amigo de Konata que al final resulto ser un lammer y le dije RTFM!!!! Y a todos ellos los he agregado al msn, la pregunta es les hablo? No. Por que? Por 2 razones:

1- Se que solo me agregan por mis skills, para que les aclare dudas etc.

2- No me caen bien, lol, si leen esto ni me vuelven a hablar jeje.

En fin, por otra parte cuando hay alguien que me cae bien y se conecta pues le hablo, y que pasa? PUFF! Fulano se ha desconectado. Ok… Supongo que eso quiere decir “Te vas al carajo no quiero hablar” Bueno, y despues a uno le preguntan que por que es tan amargado o por que trata tan mal a los demas noobs e ignorantes de la facultad, pero bueh… Otro punto: Los bloqueos, me bloqueaste? No me importa, y si me pregutas por que lo hice pues usualmente invento una excusa tonta… No creen que esa excusa es mas que innecesaria? Deberian de decir “Te bloquie por que no te soporto, me caes mal y eres horrible” MMM… Eso se aplica a mi. Bueno, no hubo mucha informatica en este post, mis disculpas por ello pero era para desahogarme.

Gracias por su tiempo.








Seguir

Get every new post delivered to your Inbox.