jueves, 22 de septiembre de 2011

Cómo hacer un gif con escenas de un video .avi en Ubuntu (Otro Howto)

Google: unnecessaryquotes.com

Creo que el título ya es “per se”  bastante explicativo.

   Esta entrada emanó de que, en su día, existían en youtube varios clips de Robert de Niro haciendo el “queteveo” en la película “Los padres de ella” (Meet the Parents, 2000). No dí en guardarme ninguno.
  El fin de semana se me ocurrió contestar en un foro una intervención que pedía a gritos mi respuesta con un soneto tan picajoso como jocoso pero no queriendo herir de sobremanera consideré la opción de ir allanando la intervención con este clip.  
Para mi sorpresa, no pude encontrarlo en youtube.  Así que, procedí a crearlo yo.



 Uno se descarga la "pelí" y una vez en el equipo;  comprobada; aplico el editor de vídeo PiTiVi con idea de quedarme con el fragmento del .avi de unos 10 o 15 segundos que me interesaba...Cosa que no pude hacer.
   Se daba el caso que, seleccionando los 4 fragmentos que constituirían el vídeo de salida al renderizar me hacia de nuevo una película del mismo tiempo que la original en la que se disfrutaba de una estupenda pantalla negra hasta que llegaba el momento de los fragmentos seleccionados. Tornando de nuevo a la misma tras ellos.




  Recordé que, en su día, a mi profesor de Linux se le "escapó que, en modo consola, se podía hasta cortar vídeos" (y digo escapó porque tantas excelencias contó de este sistema operativo que hubiéramos hecho corto con 5 años con él para dominarlo) y con esa directriz me he documentado y me he puesto a realizar lo que precisaba  y rizar el rizo.




 Para los que estos días de asueto, en lo que a escribir en el blog se refiere, me han echado en cara que   lo descrito es demasiado difícil de entender  --bien por el vocabulario empleado (iberoamericanos y algún anglófono) o bien por lo rebuscado de lo descrito (españolísimos)--, indicarles que:
  • A día de hoy el 38% de las visitas realizadas al blog son desde un sistema operativo distinto de Windows, siendo alrededor de un 20% éstas antes de la publicación de "la entrada de  las conio.h" y la entrada de "la desinstalación de MySQL".
  • El blog mantiene su idea inicial de servir para publicitarme  y de cuaderno de bitácora o diario a mis evoluciones en mi completa migración a mundo Linux.
  • Sin embargo, siguiendo la premisa de: "Uno de verdad sabe algo cuando es capaz de trasmitirlo a la mente más obtusa" intentaré (bajo pena de extender demasiado las entradas) explicar un poco mejor cada paso.





Caso titular : Trabajando con un avi.

¿No tenemos mplayer?
Pues ala!
$sudo apt-get mplayer




Haremos uso de mplayer que requiere las starX y lleva MEncoder para el tratamiento de formatos .avi  pero lo usaremos en linea de comandos y procurando crear un gif animado.

1.- Podríamos hacer una visualización previa de lo que será el gif con la linea base de comando:
      mplayer -ao null -loop 0 -ss hh:mm:ss -endpos 5 rutaafile.avi
 
     Indicar que -ss indicará en hh:mm:ss o bien en hh:mm:ss:lll (Siendo lll, milisegundos) el punto de partida.
     Y endpos 5 indica 5 segundos de tramo desde el punto de partida.
      Con rutaafile indico como llegar la fichero (evidentemente si nos encontramos ya en su directorio a la hora de ejecutar en terminal la orden bastará con el nombre.avi).

  Indicar que en la instrucción estamos haciendo un loop infinito por tanto tendremos que cerrar el terminal  para finalizar la visualización.


2.- !A construir el gif!


 mplayer mat.avi -ss 00:49:20.000 -endpos 20 -vf scale=220:120 -vo gif89a:fps=20:output=out.gif -nosound
 
    Desmembrando la instrucción:
       Con mplayer sobre el fichero que he llamado mat.avi con posición de salida en 49 minutos 20 segundos toma los siguientes 20 segundos del fichero.
       Usa una escala 220:120  --Lo de la escala es secundario puesto que el programa hará por mantener el ratio de la fuente. Ya le puedes poner 160:120 que te lo deja en 220:120 en este caso de pruebas--.
       Créame un gif ( -vo gif89a:fps=20:output=out.gif) con nombre out.gif en la carpeta en que me hallo; De 20 frames por segundo. (A más frames más peso, obvio)


    El gif se construye con una profundidad de 24 bit lo cual para mi y mi propósito es más que suficiente.

    


Salida 3,2,1...
SED BUENOS!

lunes, 18 de julio de 2011

The Damned LAMP y un MySQL revirado

Vamos por partes... porque esto tiene su miga ...

Google: Humor geek

         Hete que quise instalar un XAMPP en mi Ubuntu Maverick y metí la pata, quedando atorado, hasta el viernes pasado que,  dí con la solución.




Google: Humor geek

Vamos a estructurar esta entrada para que el personal no se despite.
      0.-¿Qué dice que ha querido instalar?
     1.- ¿Cómo instalar lo que quiero?
             1.1. Uso de 'Webmin'
             1.2. Uso de un Xamp o hacerlo paso a paso hasta phpmyadmin
     2.- ¿Cómo desinstalo?
     3.- Observaciones a tener en cuenta
     4.- Planes de futuro





¿Qué he querido instalar?

  He querido convertir mi ordenador en un poductor/servidor de páginas web dinámicas sobre una base MySQL.
  He querido conectar páginas web con Html +Hojas de estilo + un poquito de JavaScript y PHP, a una base de datos del tipo MySQL y todo sobre un servidor del tipo Apache2, en un principio, únicamente con la idea de producir cara un proyecto que me demandan en el curso.

         Hasta ahora, con los desarrollos que el “ticher” exponia a diario en la clase y el Bluefish Editor ibamos más que sobrados. Pero , desde hace días irrumpe la base de datos, con lo que pasamos a mayores...


        La Taskshel LAM (Linux+Apache+MySQLServer) viene "preinstalada" en el mi Ubuntu, sólo hay que habilitarla......


         Pero, por desgracia, si se instala a la ligera y se comete un fallo en la instalación uno se vuelve loco. Ese fue mi caso.


       Bien, resta decir antes de terminar este punto que, PhpMyAdmin es una aplicación gráfica que nos permite trabajar sobre el “localhost” (127.0.0.1) para administrar la base de datos y hacer fáciles conversiones a PHP cara a la impelementación de nuestras páginas.


           Resta saber que 'MySQL Server' usa por defecto el puerto lógico 3306.  Por ello , y antes de realizar cualquier instalación, cara a evitar problemas conviene ver que dicho puerto está despejado.

           Para ello abrimos un terminal de consola y tenemos dos opciones :

      A) Instalamos nmap y lo ejecutamos
      B) Hacemos un netstat -a -n |grep tcp
Usando la opción B

   
      Comprobamos que tenemos el citado puerto libre al no nombrárnoslo sea cual sea la opción que haya elegido.
    Como a día de hoy ya he consiguido solucionar el problema, véis en mi imagen que el puerto por defecto de MySQL está a la escucha ....









¿Cómo instalar lo que quiero?

      Existen muchos modos sin embargo, yo, aquí, voy a hablar de dos.

*El primer método posible que expongo, ni lo conocia y me encantó. Usar el paquete Webmin.
(Supongamos , para este caso , que aun no he instalado nada)

  1. Me voy a la página http://www.webmin.com/
  2. Descargamos el "Debian package" del menu de la izquierda
  3. Abrimos un terminal y ejecutamos, a la descarga,  dkpg -i webmin (recordar que con el tabulador no termina de escribir el nombre)
        Ya, todo se empieza a instalar hasta que el proceso finaliza y observamos en el terminal que puede haber “errores de dependencias incumplidas” que solucinaremos en un "pispas"ejecutando apt-get -f install
  4. Ya tenemos Webmin instalado, ahora hay que recordar que al abrir el navegador e indicarle que queremos ir a https://localhost:10000  ,
    al tratarse de protocolo https (no puerto 80 sino 443) deberemos autorizar un certificado que, al ser autogenerado por la aplicación recien instalada nos avisará el navegador de su dudosa procedencia , pero nada nada...
    !Se acepta , se acepta! Le decimos que lo excepcione y trague per secula seulorum.
  5. Tras ello, llegamos por fin a la pantalla de logueo para webmin, nos logueamos (root) y le decimos que nunca nos recuerde la contraseña y.... Ya estamos en un completo administrador de todo el host.


Cabe decir que, cuando probé esto en Debian 5 , añadió, la instalación, el archivo                         /var/www/index.html
Y que, si uno se cansa del 'It works' siempre puede editarlo y poner
'!Ánimo machote!' ;-)
 

Bueno, hasta aqui la instalación con webmin (apenas adaptada de Debian a Ubuntu) , majeta, ¿Verdad?.


Por esta, no hubiera hecho la entrada... ahora, vamos al verdadero meollo del problema:
            Hay tropecientas web que te dicen con más o menos tino (hasta el copy paste sin comprobar llega al mundo Linux) como instalar un LAMP o XAMP para mi Ubuntu de varias formas pero, !Pobre de ti como te de problemas!
En fin, lo dicho, !Vamos pasico a pasico! y ajústome al esquema.

*MÉTODO DOS (para el que no sabe o no quiere usar la instalación por Webmin) "Instalación de LAMP + PhpmyAdmin pasico a pasico con alguna observación".


          Bueno.. !Allá que vamos! Instalción del 'LAM',  luego haremos la de PHP y, por último, el PhpMyAdmin.

          Vamos a suponer, como en el caso de webmin,  que no hemos instalado aun nada.

  Para  LAM tenemos dos opciones:

  • dejamos que lo haga "el sistema opertivo" (acordaros que os dije que estaba “preconfigurada” la instalación) 
  • lo hacemos nosotros orden tras orden.


A) Dejamos que instale el sistema operativo , los pasos a seguir son

IMPORTANTÍSIMO
  1. Abrimos un terminal y ejectamos sudo apt-get install tasksel
  2. Ya instalado el tasksel ejecutamos sudo tasksel 
  3. Ahora , aparecerá  un "menu de los de antes"  de: los de cursores para mover, espacio para marcar o desmarcar y tabular para moverse entre secciones... Marcamos LAMP Server y Ok   
  4.  
     4.-   Este punto que ahora tratamos es crucial !OJO! Cualquier error aquí !Date por jodido, maño!
    Linux no admite en este tipo de instalación (ni en la siguiente que detallaré) la instalacion de una base de datos MySQL sin que le pongamos contraseña... 
        Asi que:   !Apuntando lo que escribamos en papelico!,
    (ya sabéis minúsculas, no empiece por numero , no lleve simbolos raros y tal y tal...)
      Porque, mucho más adelante, cuando instalemos el PhpMyAdmin está contraseña, que ahora escribimos, será decisiva y puede costarnos muchos paseos por ficheros de configuración en vano.

         A partir de este punto, en que ya hemos instalado el LAM, la instalación de PHP y PhpMyAdmin son completamente iguales que si lo hicieramos por ordenes así que sin más preambulos paso a detallar el  método de orden a orden.

B) Otra forma de instalar: Orden a orden.
Pues precisamente que vamos a ir ejecutando la instalacion de los servicios por linea de comandos, sentencia tras sentencia, debemos seguir un orden para no liarla...


Vamos al terminal

  1. Empezamos instalando el MySQL en realidad vamos al server pero por el mismo precio instalaremos tambien el client.

                                   sudo apt-get install mysql-client mysql-server

OJITO! Instalamos dos, asi que, nos va a pedir sendas contraseñas... !Al papel!.... !Al papel he dicho!
         Estamos dando las contraseñas de root para cada instalación asi que de salida al papel. !Y nada de ponerse creativos!.

         Mi fallo fue en este punto , me puse creativo y pasé del papel diciendo "Ala Paquico, valiente que, esto, son 5 minutos y hecho....
         !2 semanas!, 2 bonitas semanas rumiando por las tardes y por las noches y algunas “madrugás” que cojones pasaba, poqué no iba nada... 
         De tanto mirarlos y reeditarlos me sé de memoria todos los ficheros “.cfg de la instalcion LAMP” , incluso le he echado mano al "history" que me guarda todo lo que he hecho desde que instalé el sistema...  semanas, buscando en internet soluciones y no encontrando nada más que copias de blog a blog sin verificar siquiera lo que cada cual teclea.... (De eso ya hable en la entrada de "Sin perdón" , pero uno piensa que los linuxeros son más creibles ... nada , pedorros hay en todos los lados y la vanidad, no veas como campa por el mundo)
En fin , lo dicho: al papel ;-)



   2.- Ahora,    vamos a instalar el servidor html
'Apache 2'
sudo apt-get install apache2

Sencillo , no? Además este no da problemas y aprovechando tanto tecnicismo me detengo y  os cuelgo  una fotico que os anime. 
 
Bueno, tras este momento , refresco seguimos....
El servidor html ya "trabaja"  y bien ;-)  ahora, los dos métodos expuestos se unifican de nuevo para instalar el Php y el PhpmyAdmin.






Paso 3 instalación de PHP:

sudo apt-get install php5 libapache2-mod-php5


        Indican por ahi, blogs, que conviene reiniciar el servidor Apache para ver que todo está bien. Si bien decir que, nunca está de más, indicar que la siguiente sentencia, yo, no la ejecuté y funcionó la cosa igual de bien.
sudo /etc/init.d/apache2 restart

          Esto, lo siguiente, si es interesante y si que , a modo de token , nos va permitir comprobar que la cosa rula. Vamos a crear un fichero .php
sudo gedit /var/www/info.php
Que contendrá las siguientes sentencias

<?php
     phpinfo();
?>



Si ahora tras guardarlo y cerrarlo vamos a
http://localhost/info.php
veremos un documento .html con datos de php

Paso 4 interconectar Php, Apache y Mysql: 

Google: Humor geek

Ahora y siguiendo esta curiosa observación que encontré en un blog en terminal ejecuto lo siguiente:
sudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-common


       La idea es, básicamente, dopar a php para que haga una comunicación muchísimo más funcional con MySQL y Apache , ¿Es imprescindible? La respuesta es no , no lo es. Pero ¿Por que no dar más funcionalidad con un simple "copia y pega"?

Ahora instalaremos como paso final o ,  PhpMyAdmin:


sudo apt-get install phpmyadmin


Como en la instalación de Mysql nos va a pedir una contraseña para "logueo" pues, esta aplicación, permite gestionar, como administrador, nuestro MySQL , así que este es un buen momento para rescatar de nuestro papel la contraseña y replicarla.


       Cumplido este paso, resta ya indicar que si habrimos nuestro navegador y direccionamos a http://localhost/phpmyadmin accederemos a la pantalla de logueo de esta aplicación , restando en ella seleccionar nuestro idioma y acceder.

         Todo "muy limpio"... ya tendríamos nuestro sistema de servidor web básico "montadito y coleando".


        Solución mejor, incialmente, es Webmin puesto que, el logueo al servidor se realizará vía https mientras que, phpmyadmin lo realiza vía  http. Por no citar que la funcionalidad es mucho mayor (o eso me lo parece del primero respecto al segundo).

Sin embargo, si la "pagina web" que vamos a servir se va a hospedar en un hosting externo y ajeno a nosotros de esos que te alquilan , quiźas no tengamos oportunidad de instalar dicho software y tampoco sea provisto en el paquete que nos alquilan mientras que PhpMyAdmin si suele ser incorporado como un como un añadido al paquete de hospedaje que se contrata.
    Antes de finalizar este apartado que se titulaba: 
"¿Cómo instalo lo que quiero?"
y que, siguiendo los pasos y poniendo atención a las observaciones expuestas a la vista queda que, no da problema, os pongo una foto realizada sobre la edición del fichero  /etc/dbconfig-common/phpmyadmin.conf
mostrandoos donde se guardan por defecto el logueo para acceso a la aplicación (recordad que la correspondencia con el root del MySQL instalado en el paso dos, debe de ser exacta, para el caso del phpmyadmin.



¿Cómo desinstalo?
Goolge: Humor geek
     
                 Aqui "la madre del cordero", ¿Qué pasa si no hemos seguido los pasos, si hemos instalado como nos ha salido de los cascabeles, mismamente?

       Mi caso ya os lo comenté , instalado el sistema con mas omenos gloria por hacerlo "a mi modo " y no como aqui os he expuesto...  no daba con la contraseña,  Phpmyadmin me soltaba "error #1405" , al logueo  y si intentaba cambiar la contraseña como root de Mysql me decía que nones , empece a intentar desintarlar los servidores uno a uno.... que si con pluge, que si con synaptic que si.....
Bueno para que contaros los experimentos... !Vamos a lo eficaz!

Si quiero desinstalar este sistema la opción idónea que a mi , al final , me resultó fue, como véis en la foto:
for pkg in `dpkg -l *apache* *mysql* phpmyadmin | grep ^ii | awk '{ print $2 }'`; do sudo apt-get -y purge --auto-remove $pkg; done;
Y con esto desintalo... "chino chano" mi problema con el MySQL se disuelve del modo que, ya prácticamente,  me encuentro en el cómo lo instalo.
        Quedaran, obviamente, los restos de Php  pero , esos, no me van a dan problemas , mi problema era el MySQL que se interconactaba con Phpmyadmin...y esa maldita contraseña que me hacía la puñeta. !Solucionado!

Con esto salvo la pregunta "consideraciones a tener en cuenta".

Llegando ya al ultimo punto a tratar: planes de futuro
         Ya quisiera, el mendas, como plan de futuro, tener un harem de huríes esperándole en algún sitio... o al menos una... o aunque no fuera huríe... o aunque estuviera encima de la oreja aporreandote la cocota en este momento...
    Así que como la vida es caprichosa y no se puede depender de futuros , por de pronto, en este presente y con Phpmyadmin, crearé una base de datos nueva con nombre Joomla
;-)


Salida 3,2,1
!SED BUENOS!

jueves, 7 de julio de 2011

Cómo quitar watermarks o por un café me enfrento a Gimp y... 'maaatooo'

       Yo sé de un 'ticher incautillo' que se le ha ocurrido retarme esta mañana...

Hasta aqui es la "ley del Oeste": uno sobrevive mientras aun tenga rapidez y punteria ...
Google: Wilee coyote

         Hasta  el más pintado tiene un dia "heterogay" o "heteroguay"... vamos que, nadie está exento de que la parienta se le convierta en la reina de las brujas.

         Y, aunque el que suscribe esté como está, más sabe el diablo por lo que ha pasado que por ser lo que es.
         Asi que que no escandalizarse, todavía no he crucificado a nadie, el hombre que se gana el pan muy honradamente es majete... pero incauto.

Es más, un reto, un problema de esos de "a que no hay cojones", me puede... siempre que el que envida se haya ganado mi respeto... (aun no he  escarmentado).
      Como le escuché, hace2 años a mi hijo (y tuve que darle una colleja por padre pero, por dentro, me alegró, mucho, no se hiciera de menos y no dejaba de reirme) "Para chulo mi pirulo"....

Bueno pues lo bueno , de este 'ticher' no es que haya envidado sin malicia , sino que se le ha ocurrido el "va un café".....
   (!Perdoname Señor por dudar de ti , es
cierto que aprietas, pero no ahorcas!)
-Vas a perderlo-
-Que no se puede, !Ya verás como lo acabas pagando tú!-
-Que no me conoces, que delante de la gente me corto mucho pero, en mi casa...-
-!Yo un café te pago mañana al descanso, si lo haces!-
(Dia 7, 3 dias para cobro y 
a casa, nadie llama para curro...
Café= 1 Euro de vicio...)

- Ok! , A palabra vamos!, repite que quieres exactamente...-

-Toma un foto de la página de "guara fotomontajes" ( por ejemplo la primera la de las 2 tías en el escenario).  Si la consigues bajar a tu equipo, intenta quítarle la marca de agua "GUARA" ...-

Bueno,   'habemus reto'
He aqui la foto bajada ya a mi equipo de la página de ellos:
Foto reto







Y este que , a continuación pongo es el culo:
,  aunque este feo mirarlo... según lo "arrecojón" que sea el programador de la web, puede dar información de por donde tirar.

       Cosa para mi solución muy necesaria pues, era de los que aprobaban de pequeño dibujo , musica y gimnasia por los 'hair' (no quiere decir que no me guste pero no quedaban de esos dones), así que, de mayor, me hablan de diseño gráfico y de "surrones" y mp'x'sss y me entra por dentro la risa floja.

             Yo soy de los que lo más que ha hecho con fotoshop ha sido bajarlo crackearlo instalárselo a quien me lo pidió,  ver que lo abría y funcionaba.
      
            No me hablen de pinceles , brochas, filtros, brillos y demás pues, corren el riesgo, les invite, un fin de semana a que me pinten las paredes de 'la mia casa'.

Bueno pues eso que el café de mañana pende de lo que yo haga:
Coyote maquinando seriamente

1.- Descargo GIMP y lo instalo (por defecto esta tarde me ha instalado la 2.6).

2.- Compruebo que en :
              gimp-2.0\lib\gimp\plug-ins\ 
       tengo un  ejecutable llamado Resynthesizer

     ELSE
           apt-get install gimp-resynthesizer 

3.- Ahora voy a dopar el programa con un script denominado 'smart-remove.scm' que os dejo comprimido como .7z en mi cuenta de mediafire: 
http://www.mediafire.com/?i3w7r3fznppl845
                Pincha aqui

   Lo metéis en su carpetica y a rular.


   Dicho script dota, a mi GIMP, de un fantástico filtro llamado 'Enhace/ object remove' con un radio de afinidad con el entorno que yo decida.




Foto que vale un café
Y claro,  pasa lo que pasa: 





Que uno se pone, quita la 'G', y le dan ganas de ser malo y, ponerla de nuevo con una R de más...


Pero la tarde es finita... ya quitada una 'G' en 1 minuto, seguir sería humillar y uno quiere seguir pensando que tiene clase. 

"c.q.d"




        Bueno , pues ya sólo, me resta hablar, un poco de  las marcas de agua o watermarks..... a mi, no me parcen más que una cagada ...
       
        Si uno quiere que la gente no use sus fotos (o que un secreto no se sepa) que no las suba a internet, o si las sube que registre indutrialmente su uso (sí, sí, la industrial la que más pasta vale)... o si lo que se quiere es dejar una marca de propiedad  en la foto que contraten a un informático y se las estibanice o se las concatene a un fichero (no se ve y por eso mismo siempre se sabrá el propietario de la foto , pues ésta, en dicho caso, no deja de ser un 'caballito de troya').

          Soluciones hay muchas pero, esta de semi-tapar una imagen me parece que es reirse del personal... (aunque el personal ultimamente lo ponga demasiado fácil)


Mañana, un 'ticher' ya puede preparar un euro para mi café solo largo y vaya por delante mis gracias por el reto y la entretenida tarde que me ha hecho pasar.


Salida 3,2,1 
¡SED BUENOS!

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!

lunes, 16 de mayo de 2011

Proyecto: Basket 1.0 (3 de "pendiente") Requisitos y modelo E-R


En base a la información que me habéis ido aportando, me temo que, voy a ir haciendo el modelado por partes para que, resulte más inteligible.
         


   En un principio, intentaré hacer siempre los dibujos del modelado siguiendo la directriz “suma y sigue” para no colapsar el entendimiento. Pondré dibujos a modo de hitos, donde pueda verse una visión de “hasta aquí”, si lo veo necesario, para visualizar bien todo.


Empiezo por el tema de los patrocinios dentro del basket.


  • Existen empresas (con un nombre y una razón social) que pueden patrocinar tanto a secciones de clubs deportivos, como competiciones
  • Dichos patrocinios tienen una fecha de comienzo y una fecha de fin , consistiendo en el aporte de una cuantía monetaria  y un sobrenombre para la sección o competición patrocinada.


       Un clubdeportivo (Ubicación, nombre) consta de, al menos, una sección y dicha sección pude tener más de un equipo en las distintas categorías.

       La instantanción de categoria combinará géneros y grupos de edad:
Entendiéndose por género {masculino, femenino} .
Por grupo_edad {Junior,Senior}

       Existe una clasificación por edades cuya instanciación combina estos nombres {'Infantil', 'Alevin','Cadete', 'sub19','sub21', 'Absoluta', 'Olimpica'} con edades mínimas y máximas que atribuya el organismo competente... 

       Voy a suponer que en todo el mundo es igual: Infantil {4,7}; Alevin {7,12}; Cadete {12,16} ; Sub19{15,19}; Sub 21{16,21}; Absoluta{17,100} ; Olimpica{14, 100} .

      Como se ve, la edad de un jugador, puede estar en distintas categorías.
      Creo que, se aplica la norma de que si un jugador en un equipo, está inscrito a una competición de una categoría concreta , no puede estar simultáneamente inscrito a otra competición de una categoría distinta.
      Con esta norma también estamos prohibiendo el que durante una competición en curso un jugador cause baja en el equipo y alta en otro distinto. Es decir, “traspasos” y “cedimientos” así como todo lo que conlleve una modificación en la lista de los jugadores de un equipo presentada en la inscripción a una competición en curso queda prohibida.
(Por ahora para esta base de datos no contemplaré mercados de invierno, ni cosas así).


   La normativa de categorías por edad es de Jugador Senior ---> {Absoluto , Olímpico} todo lo demás es categoria 'Junior'... Supongo que también llamada 'cantera'.

       A la hora de inscribir un equipo en una competición puede requerirse categoria o categoria y edades para cada jugador que el equipo presente. En el último caso, lo que cuenta es la edad que cada jugador cumpla antes del día final de la competición.

      Una competición , en un principio consideraré que aporta información de (nombre, ámbito, cuantía inscripción, número de equipos, categoría, calendario, fecha inicio, fecha fin, cuadrodejornadas)

Un equipo puede inscribirse en las competiciones que durante el tiempo surjan si cumple la normativa.



Bueno, hasta aquí (creo no me dejo nada, en base a todo lo que me habéis ido diciendo y he ido meditando) la recogida de requisitos para el tema de los patrocinios.  

Patrocinar (dibujo inicial)

Vamos con el primer dibujo, en el cual digo:
Las empresas pueden patrocinar competiciones, secciones deportivas de clubs o bien ambas cosas.

Sin embargo, la diferencia en el patrocinio de competiciones a entidades se basa en el tiempo y es que, en un instante dado:
  • Mientras un empresa ( o varias) pueden patrocinar una competicion (o varias).
  • Una empresa (o varias) no patrocinan, nada más que, a una sección deportiva de un club.


domingo, 15 de mayo de 2011

Proyecto: Basket 1.0 (2 de "pendiente") ¿Cómo instalar PostgreSQL en Windows?

Atendiendo a la petición de que "detallara los pasos" porque, había dado problemas la instalación, realizo esta entrada para explicar los pasos un poco más, disipando ,así espero , toda duda.

En un principio , no pongo inagenes, caso de requerirlas por favor, pedirlas bien en conmentario o bien en correo.

Antes de empezar y para quien no lo sepa, haré una aclaración:

  • Una cosa es hablar de bases de datos y otra es hablar de Sistemas de ficheros.
Por ejemplo, la aplicación Access de la suite  de Office de Microsoft no es una base de datos sino que es una aplicación sobre ficheros (bastante enriquecida ,por cierto)  que, emula bastante bien lo que son bases de datos de verdad, como pueden ser: PostgreSQL, MySQL, SQL-Server u  Oracle , por citar algunas .Estas últimas nombradas, son gestores de bases de datos que pueden gestionar no sólo una, sino más bases de datos. (Están mejor preparadas de lo que estaría Access para la comunicación entre equipos, estén o no en la misma red).



Instalación de PostgreSQL
en WindowsXP SP3

Nos vamos , dento del enlace que os proporcione en la anterior entrada a:
http://www.postgresql.org/ftp/binary/
Como podéis ver en este enlace no todas las  descargas son para windows.

Vamos a descargarnos un instalable sencillo para un windows que trabaje con 32 bits por ejemplo: v8.2.20

Deberemos para poder instalarlo:
  • Tener privilegios de administrador en la máquina. 
  • Espacio suficiente en la partición.
  • Que el sistema operativo pueda ejecutar como procede con las extensiones .msi.

Estos 3 casos son de perogrullo el decirlos pero, como se supone que está ha de ser una guía anti-fallos pues ....
 

Supuesto se cumplan estos pasos,  procederemos a la descarga desde el enlace indicado del archivo binario .zip:
Desde cualquiera de los mirrors que hay aquí
                   mirrors-ftp/binary/v8.2.20/win32/postgresql-8.2.20-1.zip

Una vez descargado el zip  (via ftp suele ser más rápida) ,  lo descomprimimos en una carpeta y , dentro de dicha carpeta, ejecutamos el fichero:
postgresql-8.2.msi 
 !Postgresql-8.2-int.msi, no! ,!Postgresql-8.2.msi,  sí!

Llegado a este punto, conviene indicar que, vamos a hacer una instalación y, por tanto,  conviene no estar ejecutando ninguna otra aplicación durante el proceso. Fuente que podría generar errores en la instalación.

Decir también que, lo que vamos a instalar se compone de dos cosas , sí o sí:
  • La aplición propiamente dicha.
  • El servicio de la aplicación.


!Venga que arrancamos!
  • Ventana 1: Respecto al instalador
  1.        No hay español, asi que idioma: "English" (que yo el "suajiri" no lo domino).
  2.        Marcad la  pestañita que dice lo del log, pues ello creara una bitacora del proceso de instalación que apenas ocupa , pero nunca está de más tener (de todas formas es un consejo pues la pestañita es meramente opcional.
  3.       Le damos a 'Next


  • Ventana 2:
En esta ventana se configurará el servicio.
  • Por defecto,   pone algunos datos de el administrador pero, no tienes porque modificarlos porque, dichos datos se hacen transpararentes a la hora de usar y  trabajar PostgreSQL, que es lo que queremos.
  • Repito que: No tenemos por que tocar nada aquí.   
       Podemos dejarla tal cual y darle a 'Next', dado que, no tenemos previsto hacer ningún upgrade de la instalación, ni a corto, ni a medio plazo.

Al darle a 'Next' puede ser que nos indique que ella va a dar nombres, pues vale, perfecto que de lo que quiera , esto acabará ejecutandose , cuando usemos PostgreSQL, de forma trasparente a nosotros...  así que !Que lo haga!


  • Ventana 3: 'Initialise database cluster'
Esta si nos concierne !Y mucho!


  • Opción de Puerto: 5432
Nos indica que PostgreSQL usará el puerto lógico 5432 para el envío de información.
No hace falta que lo modifiquéis , a no ser que,  por algún motivo, lo tengáis reservado para otros fines. Cosa que cada uno de vosotros sabrá.
¿Eso cómo se sabe?
La forma mas rapida es acceder al modo consola, (ejecutar cmd): 
Ejecutar netstat -a  
y comprobar, si en la lista ,que os saldrá,  figura dicho puerto.


  • Opción siguiente ¿Trabajará  en local o no?
Para nuestra aplicación inicial en Basket 1.0 será local, así que no tocamos está opción. La dejamos tal cual está.
Espero más adelante hacer cosicas pero, más adelante.

  •  Opción siguiente ¿Dónde estás?
Jajajajajajaja, sí, que nadie se confunda al ver la 'C' , por defecto, en el combobox.

Aquí es donde nosotros indicamos al instalador nuestra configuración regional e idioma (si no lo saben aseguraos en vuestro Panel de control).
¡Claro!, Para los que tengan España de región y español de idioma , toca seleccionar 'Spanish, Spain'
  Cada cual mire que tiene y proceded  a seleccionar la que os corresponde.


  • Opción siguiente ¿Signo para el SQL?
ASCii_SQL , suele ser lo que os aparezca no he probado para hacerlo con la maquina en lenguas asiáticas pero evidentemente si se se basa en el código ASCii la máquina , esta es la opción que os aconsejo dejéis.


  • OPCIÓN 'NAME' Y 'PASSWORD'
Las siguientes dos opciones , sirven para identificar al supremo de la aplicación que instalaremos.
La aplicación, nos permitirá crear muchas bases de datos, grupos de usuarios y grupos, pero !Sólo hay un usuario supremo para todo!
Conviene, aquí, que escribáis sendos registros con palabras no muy complicadas y sin separaciones y evidentemente, !Nunca jamás las olvidéis!  pues, sin ellas, no podréis acceder a la aplicación cuando esté instalada.
Haceros una idea con este ejemplo:
Name            5corsario36
Password      l3firm5do

Como apreciaréis véis entran, los símbolos usados, en mi ASCii sin ser muy complicados y no separo.
Repito: La cadena con la que rellenéis estos dos registros... !No la olvidéis!


  • Ya podemos dar a 'Next'.



  • Ventana 4: ¿Qué lenguajes procedimentales permitiremos en la aplicación?


  • Suele, sólo, dejar seleccionar la primera ,  y es la que tenemos que dejar con marca.
Caso de que, por lo que tenéis instaldo de antemano ya en vuestro equipo, os permitiera más , no lo dudéis y seleccionar todas las que os deje.





  • Ya podemos darle a 'Next'




  • Última ventana: Tengo ya plantillas, (módulos), ¿Querrás alguno?
Por defecto vemos seleccionado el del administrador.
Marcad los que queráis... Yo , con el del administrador me vale, no quiero por ahora más y cuando quiera ya os indicaré como  ponerlos y meterlos.


Google: Humor geek


!Al ejecutar esta ventana comienza la instalación!
Cuando acabe, se ejecutará.
Nada!,  Cerráis la ventanita emergente y la ventana de ejecución...
!Que las ansias pueden juagaros malas pasadas!
El "Y ahora que ya está instalado ¿Cómo?" os lo iré diciendo conforme tengamos ya normalizado el diseño pero, para eso, todavía faltan algunas entradas.





En la próxima entrada, expondré cómo construyo mi modelo E-R.  


Mientras , ya sabéis: !Sed buenos!

Proyecto: Basket 1.0 Entrada 1 de (“pendiente”)


Vamos a ver: !Me encanta el baloncesto!.  Jugarlo y verlo, cuando genera espectáculo y emoción. 

Google: Rudy machacando



No digo que el fútbol sea malo. Simplemente que, prefiero el dinamismo del baloncesto.
Y por fortuna, además de una estupenda liga regular 'ACB', contamos en España con una “Peasssso” de selección y unos jugadores (y jugadoras, que  las hay  cojonudas) que juegan en ligas extranjeras haciendo unos "partidazos" que quitan el hipo.


Con el objeto de pues de dar una nueva vuelta a la tuerca, pretendo hacer el siguiente proyecto: una aplicación sobre una base de datos, que se pueda administrar desde interfaces de Java
Para uso mio, local, con mis "consulticas" y cosas así, que se me vayan ocurriendo.


Elegiré como base de datos PostgreSQL que hace barbaridad que no la toco.
Se que Java conecta bien con esta base de datos relacional así que no queda nada más que decir a este respecto.


Google: Peluquería




Siguiendo la máxima que en su día escuché de un buen profesor de informática que tuve : “De una peluquera se espera que te corte bien el pelo, de un informático que informatice el universo” , es decir , que robotice a la peluquera, informatice la peluquería, la optimice, y la expanda hasta hacer un holding empresarial a nivel multinacional.






Aprovechando las utilidades gratuitas que me brinda Ubuntu 10.10 , y quiero empezar el proyecto para ir optimizándome “myself” con la utilidad 'Gestión de proyectos' donde por ser la primera vez , expongo el proyecto a modo de intenciones e intentaré medirme.
La utilidad 'Gestión de proyectos' no es más que un programa informático para realizar diagramas de Grantt y así controlar tiempos , recursos y costes en la creación de un proyecto.
Como recurso estoy yo “más chulo que un ocho” y las utilidades gratuitas que atesore por acá considerándolas útiles.






Más o menos, las etapas del proyecto en su versión 1 serán:









Resultando el diagrama de Grantt, tras ir editando precendecentes y antecedentes a las tareas y subtareas correspondientes:
Veremos qué pasa.


Para quien quiera seguir el proyecto , haciendolo él también,  desde windows indicarle que:


1.-Tema PostgreSQL:
En http://www.postgresql.org/download/ encontraréis el enlace para descargar la base de datos, a vuestro Sistema operativo correspondiente.
Quizás haya una versión 2 de este proyecto; digo, ahora que veo en la misma página lo que, han publicado, dentro de la sección "3rd party distributions".



2.-Tema Java:
  Requeriremos unentorno de producción, asi que  Eclipse, en un principio es válido: http://www.eclipse.org/downloads/
Yo, en un principio uso la version SDK 3.5.2 'Galileo', acabo de ver que ellos permiten descargar una más desarrollada la 3.6.2. 'Helios' .  Tanto para Linux , Windows y MaC  , por supuesto descargaos la 'Classic'.