miércoles, 6 de julio de 2011

Linux: MonoDevelop , C "ANSI" "Windows-Linux" y las "imposibles" librerias conio.h

               Muchos días sin darle a la tecla,  entre el palacio de las mil puertas de la burocracia y que me han secuestrado (por si me aburría o me andaba las mañanas mirando las moscas pasar) para recibir (a riesgo de perder la prestación si me niego, véase la definición de 'chantaje' en el DRAE) y con el agravante de (que los propios que me lo procuran , por defecto y sin saberlo yo,  me niegan la recepción de ofertas laborales mientras dure) un fantástico curso de formación ocupacional que no mejora para nada mi perfil... (En fin de esto ya hablaré en el otro blog.

Aquí al tema, recopilando:

1.- Evidentemente la aplicación de Basket se pospone hasta que finalice el curso  (finales de este mes)
Google: Programadora humor


2.- Algo bueno tenia que tener el curso : he refrescado y actualizado  HTML, CSS y Php así como vuelvo a tocar MySQL … hacía 3 años que no tocaba todo esto.
  Así que pronto y por desgracia (si no hay curro) ampliaré la oferta de cosicas que colgaré por acá, muy a mi pesar.



3.- El curso me ha servido para comprobar, por desgracia, cosas como el tema que esta entrada atañe.


Es curioso que en equipazos superdotados implementen windows7 y le carguen para un módulo de   C ANSI perteneciente al curso  el Dev-cpp de Bloodshe dopando éste, para darle funcionalidad, con la librería “privada” conio.h o conio2.h...

              Sí ya sé que aquí os habéis descargado un programa gráfico de primos o el de botijos que tengo que subir, o el buscaminas  (que lo mismo) tanto para adultos como para críos, o el resolvedor de sudokus o..... ya, ya sé.

            Pero como he dicho estoy chantajeado por el INAEM así que hablamos de C ANSI , programación estructurada y conio para hacer getche(), getch() , y ponerle colorcicos al texto y al código ASCii...


Google: Programadora humor




Y ¿Qué pasa cuando en casa, uno a migrado a Ubuntu 10.10 y por la tarde intenta completar algún ejercicio para desoxidar....
Pues que evidentemente:



   

1.- No tiene Borland.....

 Solución :
            a) Te instalas el wine y cruzas los dedos a ver si tiene a bien instalarte el IDE mencionado...
                       Es decir, hacemos de Linux un Windows! Cágate, como informático es dar un salto hacia atrás!
            b) Pruebas con algún entorno de producción propio de Linux
             En mi caso yo tenía 3:
  •                   Eclipse (si le digo que voy a programar en C ANSI se le ponen los ojos como platos) 
  •                 Bluefish (una opción que no he probado con C pero que, con HTML +CSS+.... (pues eso mundo web) me esta gustando muchísimo.
  •                 MonoDevelop 2.4 que para mi Ubuntu tiene “tropecientos lenguajes” que si C ANSI, que si C#, que si C++, que si Java, que si Haskell.... 
!Ea, Paquico, al Mono!
Google: Humor geek etapas de un programador



     

     Pues tomando la opción b y en ella el entorno de desarrollo Mono uno se topa con varios problemas y en los que hay que caer o uno (o varios) nos pegamos varias tardes volviéndonos locos:





1.- Los programas de las clases que se meten en el pen son por defecto del tipo '*.cpp' dado que borland los guarda como cpp...
                Los ficheros fuentes en que programas  cada solución en MONO se guardan como '*.c',   cuando usas el  lenguaje ANSI C  y sólo se guardan como '*.cpp' cuando usas en el entorno el lenguaje C++ cosa que no corresponde al curso que doy al tratarse de un lenguaje del tipo PPOO (como puede ser Java)...
Para colmo cuando al día siguiente te los llevas retocados al aula y enchufas el pendrive Borland no lo reconoce … !Hay que renombrar el '*.c'  a '*.cpp'! 
               Una tarde de ánimo productivo , mínimo que,  para los que sabéis la pasión que le echo a todo y lo que me desalientan los reveses, acarrea consecuencias, desperdiciada...
            


         2.-  Salvado el escollo de la extensiones vamos al problema que nos ha tenido a otro compañero ubuntu y a mi desquiciadicos estas tardes....
       El tema de las conio.h , librería que nos han echo usar para poner el texto en colorcillos,  llevar el cursor a una posición que le demos nosotros y escribir y recoger un carácter sin dar al 'intro'......
   
    !Pues las conio no están !
   
Hay quien prueba otras opciones , yo , como depende sólo de mi , pues me empeñe en sacarlo y, tras estos días  hoy lo he conseguido: aquí tenéis la solución  básica y la “elegante”.

           Solución básica : Existe un paquete libconio  que en su primera versión creo es 2004 o 2005 realizado por dos hispano parlantes para Linux , !Vamos a instalarlo!
Os dejo el paquete para los que estabáis como yo, en mi cuenta de  mediafire :
    http://www.mediafire.com/?abc9al6ukxgoazd   Pincha aquí

       Vamos a ver los pasicos para que todo funcione:

         1.- Descargáis al escritorio el paquete.
         2.- Podéis extraerlo ahí mismo (según como tengáis de funcional el gestor de paquetes no os hará falta aun acudir al terminal sino es el caso, ya sabéis, sudo -s y  tar -zxvf libconio-1.0.0.tar.gz ).

         3.- En la carpeta libconio-1.0.0, en modo terminal  y como superusuario 'root':
              3.1.-  cd libconio-1.0.0
            3.2.-  ./configure
            3.3.-  make
            3.4.- make install



Pues ya está! De hecho si entramos en /usr/lib  veremos la libconio.la y si entramos en la carpeta de mono por que desconfiamos basta con que abramos la carpeta mono 1.0 que allí la vemos.
Ahora a “gozarlo”.

        Solución elegante:  Parece ser que conio no fue más que una solución dada por Microsoft halla en la época del sistema operativo DOS , que se escindió del lenguaje C que asumía UNIX o Solaris mismamente.
            Hablamos de la época de menús de los que aun se ven cuando te haces en Linux tu propia distribución y elijes que paquetes de cada clase quieres incorporarle.... Menús tipo LILO,  pues eso.
        Existen para Linux unas librerías denominadas ncurses que comprenden las funcionalidades de conio y más cosas.
        En la actualidad me ha parecido ver en sourceforge que ya están disponibles para quien guste las 5.4 …. Evidentemente hay que saber usar las ncurses sean  las distribución que sea y por ello en este enlace os he dejado un tutorial de pocas páginas:
        http://www.mediafire.com/?9m99qz9mi9l7a3t       Pincha aquí


           Esta solución mucho más elegante no es práctica a la hora de aplicarla por el problema que surgió , así que en este caso me toca quedarme con la básica.



Quisiera como fin de fiesta, y dado que me he dado mas de una madruga' de hartarme de buscar solución para lo de la conio mostraros dos curiosidades que vi en una web avanzada de C ANSI:

La primera los 'Diagrphs' símbolos equivalentes  porque no todos los teclados tienen las mismas teclas de salida y sería una pena tener que programar si no tenemos, por ejemplo,  la tecla '{' ¿Qué no?:

Digraph Equivale
 <:         [
 :>         ]
 <%         {
 %>         }
 %:         #



La segunda curiosidad es el operador '--> '   que  lo vi bautizado por 'desciende hasta' y que si probáis esto veréis que curiosamente funciona








Bueno ahora la salida, 3,2,1...
!SED BUENOS!