Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



lunes, 30 de septiembre de 2013

Juego Conecta4: Inteligencia Artificial usando algoritmo negamax


Juego Conecta4:

 Inteligencia Artificial 

usando

 algoritmo NEGAMAX




Este programa esta basado en el post de "La máquina imbencible 2" publicado en el blog http://www.divertimentosinformaticos.com/ cuyo autor es Alberto García Serrano, el cual describe el algoritmo negamax y como usarlo en  el programa para jugar al conecta 4, usando el lenguaje Python.

Yo lo que he hecho  es:
- traducirlo a Gambas3
- darle un aspecto visual (ya que en Python funcionaba en modo consola),
- Añadirle la variante de poder jugar entre Humano-Computadora  y Computadora-Computadora.
- Además lo he pasado al paradigma de la Programación Orientada a Objetos, con el fin de que la estructura del programa y las clases, os sirvan para futuros planteamientos a otros juegos de este tipo (los llamados de conocimiento perfecto: damas, ajedrez, etc).


Os dejo un video del desarrollo de una partida:






En próximas entradas de este blog, iré "desmembrando" el código fuente, para explicaros como funciona el programa "paso a paso".




Aqui teneis tanto el instalador en .deb como el código fuente.
Descarga paquete .deb: enlace
Código fuente en gambas3.4.2: enlace


Nota:
Actualizacion 3/10/2013 new
Version 0.0.4: enlace codigo fuente
 -> Corregido algoritmo de negamax, ya que en algunas ocasiones la poda era erronea.


Saludos

domingo, 29 de septiembre de 2013

Xbindkeys: FrontEnd hecho con Gambas3



Xbindkeys: 
FrontEnd hecho con Gambas3
Preparando un ejemplo de FrontEnd hecho con gambas3 para el curso de gambas que estoy terminando de escribir (http://cursogambas.blogspot.com.es/), pues he hecho esta pequeña utilidad, para facilitar el uso de XbindKeys.

Simplemente sirve para asignar una combinación de teclas al programa que le indiquemos haciendonos las correspondinetes preguntas, y el solo modifica y actualiza el fichero de configuración, activando la combinación de teclas.


  1. ' Gambas class file
  2. Public Sub _new()
  3. End
  4. Public Sub Form_Open()
  5. 'comprobar que exista el fichero .xbindkeysrc
  6. If Exist(User.Home & "/.xbindkeysrc") Then
  7. 'no hago nada
  8. Else
  9. 'copio el archivo de conifguracion inicial
  10. Copy "xbindkeysrc" To User.Home & "/.xbindkeysrc" 'este archivo es oculto
  11. Endif
  12. Me.center
  13. End
  14. Public Sub ToolButtonCrear_Click()
  15. Dim contenido As String
  16. Dim comando As String
  17. Dim salida As String
  18. Dim lineas As New String[]
  19. Message.Info("Cuando cierre esta ventana,pulse la combinación de teclas", "cerrar")
  20. Shell "xbindkeys -k" To salida
  21. 'de la salida extraigo las dos ultimas lineas que son las que me interesan
  22. lineas = Split(salida, gb.CrLf)
  23. Print salida
  24. Print "lineas que me interesan:"
  25. Print lineas[lineas.max - 2]
  26. Print lineas[lineas.max - 1]
  27. comando = InputBox("Introduce el nombre del programa al que llamara esa combinación de teclas:")
  28. contenido = File.Load(User.Home & "/.xbindkeysrc")
  29. contenido &= gb.CrLf
  30. contenido &= "\"" & comando & "\"" & gb.CrLf
  31. contenido &= lineas[lineas.max - 2] & gb.CrLf
  32. contenido &= lineas[lineas.max - 1] & gb.CrLf
  33. File.Save(User.Home & "/.xbindkeysrc", contenido)
  34. Shell "xbindkeys"
  35. Message.Info("Se acaba de añadir la combinacion de teclas...!!!")
  36. End
  37. Public Sub ToolButtonConfigurar_Click()
  38. Shell "xbindkeys-config"
  39. End

Pulsando el boton de "Crear nuevo atajo", lo que hacemos sacar un mensaje para indicar al usuario que tiene que pulsar la combinación de teclas cuando cierre el mensaje:

Message.Info("Cuando cierre esta ventana,pulse la combinación de teclas", "cerrar")


a continuación ejecutamos el programa xbindkeys, (y pulsaremos la combinación de teclas), capturamos la salida que produce el comando xbindkeys,


Shell "xbindkeys -k" To salida

y preguntamos que aplicación se va a ejecutar con la combinación de teclas dada anteriormente.
  • comando = InputBox("Introduce el nombre del programa al que llamara esa combinación de teclas:")


  • Con la información recopilada,


  • lineas = Split(salida, gb.CrLf)

  • contenido &= gb.CrLf
  • contenido &= "\"" & comando & "\"" & gb.CrLf
  • contenido &= lineas[lineas.max - 2] & gb.CrLf
  • contenido &= lineas[lineas.max - 1] & gb.CrLf
  • File.Save(User.Home & "/.xbindkeysrc", contenido)


  • la vamos a añadir al fichero oculto
    .xbindkeysrc

    Finalmente, ejecutamos
  • Shell "xbindkeys"
  • Para que los cambios se añadan.


    Enlaces de descarga:
    • Archivo de instalación .deb: enlace

    sábado, 28 de septiembre de 2013

    xbindkeys: define tus teclas para ejecutar los programas que desees

    Gracias a Antonio Sánchez, he conocido este programa, que es capaz de configurar las teclas de tu teclado para que puedan ejecutarse programas simplemente pulsando la combinación que configures.

    Para instalarlo:

    $ sudo apt-get install xbindkeys 
    $ sudo apt-get install xbindkeys-config

    El xbindkeys que es el programa base, el otro es xbindkeys-config, que es un interfaz gráfico que puede facilitar el uso del primero.


    Con xbindkeys-config podeis configurar los atajos del teclado





     Nota:
    Es necesario que  añadeis a los "Programas de inicio", el programa xbindkeys, para que los atajos del teclado os funcionen.

    Otras Fuentes:
    http://bernux.blogspot.com.es/2009/04/xbindkeys-configurando-tu-teclado.html
    http://tuxpepino.wordpress.com/2007/06/02/%C2%BFconocias-xbindkeys/#more-186

    Mejora tus capturas de pantalla con Inkscape

    Mejora tus capturas de pantalla con Inkscape


    Os dejo un video tutorial, para explicaros como mejorar las capturas de imágenes que hagais usando la herramienta Inkscape.

    Con esta herramienta podeis:
    - Insertar una o varias imágenes
    - Añadir texto (con diversos tipos de letra y tamaño)
    - Dibujar lineas y flechas


     Algo que no sale en el video, es que se pueden añadir rectángulos/cuadros y circulos/elipses con relleno de colores, con lo cual podemos dejar notas.

    Os dejo un pantallazo indicando la herramienta a usar:


    Saludos

    jueves, 26 de septiembre de 2013

    MiniNO PicarOS Diego 2013: Nuevo Canal YouTube con Video tutoriales

    MiniNO PicarOS Diego 2013: 

    Nuevo Canal YouTube 

    con Video tutoriales


    Últimas Noticias:

    Se acaba de crear el canal de videotutoriales de esta distribución en youtube.

    Canal Youtube de MiniNo PicarOS Diego 2013 

    Y ya tenemos los primeros 5 videotutoriales, donde se nos dan detalles, trucos, atajos de teclado,   etc, para que podais aprovecharla al máximo.

     

     

     

     

     

     

     










    Sozi: realizar presentaciones dinámicas con #softwarelibre

    Sozi

     Realizar presentaciones dinámicas

    con softwarelibre 



    Al igual que Prezi, esta aplicación (realmente es una extensión de inkscape), es capaz de realizar presentaciones dinámicas, con la ventaja de ser softwarelibre:


    Enlace a la web del proyecto: http://sozi.baierouge.fr/wiki/en:welcome

    Instalalación:
    Con PPA
    sudo add-apt-repository ppa:sunab/sozi-release
    sudo apt-get update
    sudo apt-get install sozi
    
    Para otros sistemas operativos, vaya al enlace de  http://sozi.baierouge.fr/wiki/en:install


    Tutorial de uso: Tu Primera Presentacion http://sozi.baierouge.fr/wiki/en:tutorial

    NOTA:
    Sozi, ya esta incluido en la distribución Minino PicarOS 2013 Diego  http://jsbsan.blogspot.com.es/2013/09/nueva-version-de-la-distribucion-minino.html


    Fuentes:
    http://sursiendo.com/blog/2013/06/fantasias-animadas-de-hoy-presentan-mini-tutorial-sozi/
    http://perexat.wordpress.com/2012/03/03/sozi-una-alternativa-libre-a-prezi/

    miércoles, 25 de septiembre de 2013

    Relaciones: Programa para mostrar la potenciación de un modo "esquemático"

     Relaciones: Programa para mostrar la potenciación de un modo "esquemático"


    Os dejo aqui un programa que he realizado tras una pregunta de Mauricio Marcelo Escudero, en el grupo de softwarelibre de Google Plus.

    Se trata de hacer un esquema gráfico de datos que estén relacionados entre si.

    Básicamente, mi programa contiene una serie de nombre a los que podemos ir relacionando unos con otros, añadiéndolos a una lista y luego es capar de  hacer el esquema (internamente usa el comando dot de graphviz)

    Programa en ejecución


    Os dejo aquí un video para que veáis lo sencillo que es usarlo:






    Enlaces de descarga:
     Codigo fuente y paquete .deb actualizados(23/04/2015)



    Nota:
    Necesita tener instalado:
    Gambas 3.4.2 :

    $sudo add-apt-repository ppa:gambas-team/gambas3

    $sudo apt-get update

    $sudo apt-get install gambas3

    Y tambien: graphviz

    $sudo apt-get install graphviz
    Y tambien el programa: eog

    $sudo apt-get install eog

    Nota
    Version con gb.gui (antigua version para gambas3.4):

    Paquete deb de instalacion
    Codigo fuente


    martes, 24 de septiembre de 2013

    Fooplot: realizar gráficas online

    Fooplot: realizar gráficas online

    Os dejo una página que he encontrado, que es capaz de realizar gráficas online de diversos tipos:     http://fooplot.com/




    Además permite añadir varios tipos de funciones, funciones de coordenadas polares, funciones de curva parametrizada y puntos sueltos

    Ejemplo:




    Te permite exportar los resultados a distintos  formatos (.svg, .eps, .pdf, .png) y/o compartirlos  por la red:



    Resultado de guardar como .svg, y abierto con el programa Inkscape:


    También tenemos opciones de configuración de colores de lineas, fondos, etc.

    Espero que os sea útil , saludos.

    sábado, 21 de septiembre de 2013

    Un ejemplo completo de MVC: control de alumnos

    Un ejemplo completo de MVC: 

    Control de Alumnos


    Historia del programa:

    Se necesita tener un programa que gestione  los datos de Alumnos y los cursos donde estén apuntados. Gestionar se refiere a Guardar, Editar o Borrar datos de alumnos o cursos. Nos permita hacer observaciones en los alumnos que participan en los Cursos. La posibilidad de buscar por legajo (numero de expediente) o documento a los alumnos. Realizar diversos informes para imprimir.


    Realizar informes del tipo:

    •  Lista de alumnos
    •  Ficha de alumno con los cursos y observaciones en los que este apuntado.
    •  Lista de cursos 
    •  Ficha de cursos con los alumnos que estén apuntados a él y que también aparezcan las observaciones de estos.

    Observaciones:
    • Los alumnos podrán estar apuntados a más de un curso. (relación 1 alumno tiene uno o varios cursos)
    • Datos de los alumno: Nombre, Foto, Apellido, Domicilio, Teléfono, Nacionalidad, Documento Idenfiticativo, Nº de Expediente, Fecha de Nacimiento
    • Datos de los cursos: Nombre del curso, Observaciones sobre el curso.

    Analisis:

    Según lo explicado anteriormente,  crearemos una base de datos con las siguientes tablas, campos y relaciones entre ellas:


    Esquema realizado con el programa DIA
     La tabla Relación es la que nos vá a permitir guardar la información de los alumnos que esten apuntados a los diversos cursos.
    Podemos ver como la tabla Alumno puede tener uno o varias registros en Relaciones y la tabla Curso puede tener una o varias registros en la tabla Relaciones.   Esto hace posible que un alumno puede estar a la vez en varios cursos y que un curso puede tener varios alumnos.
    Cada registro de Relación, tendremos un campo de Observaciones, que nos servirá para añadir una observación del Alumno en el Curso.

    Programación:
    Se ha realizado en Gambas3.4.1, un lenguaje derivado moderno del BASIC y con programación visual para los sistemas operativos GNU/Linux. Este lenguaje permite programar tanto con el paradigma de Programación Estructurada como de Programación Orientada Objeto (OOP).

    Para esta aplicación se ha seguido el paradigma de Programación Orientada a Objeto (OOP). Para los datos se ha seguido el patrón VO y DAO para facilitar el manejo de la información y como patrón de diseño se ha elegido el Modelo Vista Controlador (MVC),  ya permite separar las vistas (formularios) del manejo de los datos y, en un futuro, ampliar dicho programa con facilidad. (enlace codejavu )
     



    Detalle de modulo,clases, datos y formularios que forman el programa:


    Autoría del Programa:
    Este programa está realizado por Julio Sánchez Berro y Jorge Agustín Pereyra
    Licencia: GPL 3.0
    Fecha: Agosto del 2013
    Video del programa:


    Enlace: http://controldecursosdealumnos.blogspot.com.es/

    Cizalla: Herramienta para cortar imágenes

    Cizalla:

    Corte y modifique sus

     imágenes fácilmente



    Esta utilidad está realizada para cortar imagen, nos permite quitar sobrantes a imagenes y nos facilita extraer imagenes.



    Un ejemplo:


    Tenemos este fichero con distintas imágenes (son cartas de un juego del tipo "Imprimir y jugar" (print & play) ):



    Y lo que queremos es extraer todas las imágenes guardándolas en distintos ficheros de imágenes.


    Con el programa "cizalla", resulta muy cómodo realizar esta operación (tambien se podria usar Gimp, o el capturador de pantallas, pero necesitarias un buen pulso para sacarlas bien y tardarás más)

    Cizalla nos permite:
    0-Abrir una imagen .png o .jpg
    1-rotar la imagen
    2-cortarla
    3-repetir las operaciones (1) y (2) tantas veces como necesitamos
    4-tiene incluido un sistema "inteligente" para determinar cuando se corta una imagen, si es sobrante (no hace falta editarla, ya que es un resto inútil)
    5- permite dimensionar las imagenes (reducir o ampliar el tamaño de la imagen que estemos trabajando)
    6-Guardar la imagen modificada.

     Vemos un video para mostraros como sería:





    Paquete de instalacion deb: enlace
    Codigo Fuente: enlace

    Nota:
    Otra herramienta que te puede servir: Recorta
    http://jsbsan.blogspot.com.es/2013/02/haciendo-el-gambas-recortesderajoy.html

    jueves, 19 de septiembre de 2013

    Más información sobre MiniNo PicarOS 2013 "diego": Contenido de la distribución.


    MiniNo PicarOS 2013
    (codenamed Diego)

    Como os comenté en el anterior post, el coordinador del proyecto Minino PicarOs 2013, Antonio Sánchez, se ha puesto en contacto conmigo para dejarnos más información sobre esta distribución:

    Ya tenemos lista una de las distribuciones más grandes del planeta dedicada a los más pequeños: la nueva versión Diego de MiniNo PicarOS.

    Enlaces de descarga:

    Esta es una ISO híbrida que se puede grabar en un DVD o pasar a una memoria USB de al menos 4GGB
    Nota: para pasarla a un USB puede usar ImageWriter (bajo windows) o usb-imagewriter-minino (bajo debian/ubuntu). También puede realizar el volcado manualmente.

    Nota:
     Requerimiento de equipo: PIV 1800 MHz y 512 MB de RAM como mínimo, además si se quiere tener los efectos  de composiciónque se ven el vídeo (  anterior post ) hay que considerar la tarjeta gráfica.

    Características:

    • Basado en Debian Testing con kernel 3.10.1-picaros-686-pae (debian kernel + gobohide)
    • USUARIO y CONTRASEÑA predeterminados:
      • minino / minino

    • Todo el entorno enfocado para niños desde 3 a 12 años, aunque podemos cambiar a un escritorio más para adultos fácilmente:
    Nota: Para cambiar a los distintos escritorios disponibles tenéis que ir al :
     Menú -> Utilidades de MInino -> Estilo de escritorio


    • Configurado para trabajar con un simple clic (más fácil que el doble clic).

    • El panel de lanzadores muy visual e intuitivo que incluye programas que funcionan al hacer clic o al arrastrar y soltar los archivos que haya que procesar.

    • Antes usábamos lanzadores tipo «.desktop», pero eran poco personalizables y las cartelas de ayuda únicamente son de una línea. Ahora usamos lanzadores basados en scripts intermedios (AppRun) que nos permiten lanzar las aplicaciones una, y solo una, vez, añadir cartelas más útiles y vistosas en varias líneas, lanzar un mensaje si el programa va a tardar más de lo deseado, comprobar si el programa requiere o no de internet o de aceleración gráfica, si el equipo es lo suficientemente potente o cualquier otra cosa que nos pueda surgir. Asímismo hemos creado un lanzador que nos ayuda a transformar un archivo «.desktop» en un lanzador de PicarOS.

    • Caja (de Mate-desktop) como administrador de archivos predeterminado con soporte para miniaturas de imágenes, vídeos, archivos de tipos de letras, etc... y también escucha previa en los archivos de audio.

    (Esto es lo que verás incluso activando «Mostrar archivos ocultos»)

    • Chrome y Firefox, son los navegadores predeterminados, pero también tenemos Midori con Tor configurado para una navegación segura y anónima.

    • En la despensa tenemos muchos servicios que de forma predeterminada están desactivados para ahorrar memoria y para que los usen únicamente aquellos que los necesiten, como por ejemplo, bluethooth, cups (para las impresoras), epoptes (para controlar equipos de un aula de informática), samba (compartición de carpetas), cronopete (copias de seguridad al estilo de TimeMachine), tracker (como tener un google en tu ordenador), pequerrechos (para administrar el tiempo de uso del ordenador por los peques)...etc.



    • En el apartado de edición gráfica contamos entre otros con: Inkscape, Gimp, Tupí, TBO, Memaker, Fotowall, Gpaint, Plop3D, Mypaint, Hugin, Pixelize, Posterazor, Tuxpaint, etc…

    • Juegos: Tangram, Blinken, Bombermaaan, Ceferino, Childsplay, Frozen-bubble, Funny-boat, Galaga, Gtkboard, Gcompris, Numpty phisics, Pingus, Raincat, Opensonic, Omnitux, Secretmario, Supertux, Tuxmath, Tuxtype, Pychess, etc... enlaces a cuentos y juegos educativos como “El caracol Serafín”, “Math Invaders”, “Poison Rouge”...

    • En la sección multimedia hay de todo también para ver, crear y editar audio y vídeo, entre otros: Openshot, Avidemux, Photofilmstrip, Imagination, Gnome Subtitle, Arista Transcoder, Luciole, Stopmotion, SlowmoUI, Minitube, FreetuxTv, VLC, xt7Player, Cheese, Performous, Pykaraoke, Audacious, Lingot, Milkytracker, Improvisor, LMMS, Songwrite2, PianoBooster, TuxGuitar, Hydrogen, Piano Virtual, Audacity, Jockosher, easyMP3gain, Brasero, Bombono, Devede, etc…

    • En ofimática, también tenemos todo lo que nos pueda hacer falta en un momento dado: agenda (Osmo), generadores de carnets, de diplomas, de orlas, de crucigramas (genxword3-gtk), de sopas de letras (WordSearchCreator), diagramas de flujo (VUE), diccionarios (Babiloo), programas para manejar el escáner (Simple Scan) y para hacer OCR (OCRFeeder), para aprender mecanografía (Ktouch), para organizar los libros electrónicos (Calibre), para modificar PDF (PDF-chain, PDF-Shuffer, gscan2pdf, pdfmod), crear tipos de letra (FontForge) y, por supuesto, LibreOffice 4.


    • Otros programas incluidos son: para trabajar las matemáticas (Geogebra, Kig, Kalgebra, Kbruch), geografía (Marble, Google Earth), para el vocabulario y los idiomas (Perroquet, Anki), para la pizarra digital (Open Sancoré, Xournal), simulaciones físicas (Step), entrenar tu cerebro (Gbrainy), para realizar exámenes tipo test (iTest), iniciación a la programación para niños (Scratch, Laby, Kojo, Gambas3, Etoys5), etc, etc, etc…

    Además tenemos varios scripts que facilitan tareas a los chicos cuando están creando contenidos, por ejemplo, conversores de imágenes, enmarcadores de páginas, conversores de vídeos a distintos formatos, ídem con el audio, impresión de varios documentos al mismo tiempo, etc... Todos ellos basados en un sencillo arrastrar y soltar archivos al icono correspondiente.

    Hay que decir que los programas fueron probados y usados y, consecuentemente, muchos han sido «mejorados» con complementos, utilidades, dependencias extras, etc... Por ejemplo:

    • Firefox tiene instalado el complemento DownloadHelper para poder descargar cualquier recurso multimedia de Internet, también tiene Adblocks porque tantísima publicidad satura a los niños y les impide centrar la atención cuando navegan y por último también tiene Xmarks (aunque Firefox ya cuenta con un sincronizador que funciona bastante bien en un aula de ordenadores).
    • Libreoffice tiene también algunas extensiones, por ejemplo, diccionarios de palabras, de sinónimos y antónimos, de efectos 3D en Impress, de importación de PDF, lectura sintetizada, etc...
    • Inkscape tiene incorporadas bibliotecas python requeridas por algunos complementos. También tiene instalado Sozi para hacer presentaciones visualmente similares a Prezi.
    • Gimp también tiene varios añadidos y efectos especiales para el tratamiento de imágenes y así con muchísimos otros programas.

    En definitiva, está todo pensado para que los niños (y no tan niños) no tengan por qué saber nada del sistema ni de instalaciones para sacarle jugo a esta distribución.

    Os agradecemos que la probéis y que nos enviéis vuestros informes de fallos a nuestro correo minino[en]galpon[punto]org


    Ver el documento online en otros idiomas (Castellano / Gallego / Ingles): enlace

    Actualización 26/9/2013:
    Canal Youtube con videotutoriales: enlace

    lunes, 16 de septiembre de 2013

    Localizar Coordenadas UTM Rápidamente con Google Earth

    Localizar Coordenadas UTM Rápidamente  con Google Earth


    Algunas veces necesitamos localizar en un mapa unas coordenadas expresadas en UTM, con google earth podemos hallar unas coordenadas rápidamente.

     Pasos a seguir:

    1)  Pinchamos en el icono de la chincheta
    2) En el formulario que nos sale, ponemos los datos de:
    - Zona  o Huso donde están ubicadas las coordenadas.
    - coordenada  X (eje de "abscisa")
    - coordenada Y ("Norte" , que esta mal traducido seria "eje ordenada" )
    En el nombre, debemos poner un nombre orientador así lo podremos buscar fácilmente en la barra de "lugares". Le pongo el nombre de "Buscando Lugar", y nos aparecerá en Lugares en la carpeta de Lugares Temporales

    Y ahora haciendo doble click sobre "Buscando Lugar", la vista se desplazará hacia el lugar de dichas coordenadas.

    Si queremos guardar ese lugar, simplemente cogemos la etiqueta de "Buscando Lugar" y la movemos a "Mis sitios", quedándose guardada  para posteriores búsquedas.





    Saludos


    Nota:
    Si no ve completo este articulo es que tienes adblock activado. Por favor desactive adblock para este blog. Gracias

    viernes, 13 de septiembre de 2013

    Manual Online e Iniciación Para Aprender git (control de viersiones) online en 15 minutos


    Aprender un sistema de control de versiones, nunca fue tan fácil, como usar esta web:

    http://try.github.io/levels/1/challenges/1


    Es lo mejor para quitarte el miedo  a probarlo, "sin riesgos" y aprender como se usaría en un proyecto.

    El control de versiones es una forma de:

    •  Hacer copias de seguridad de tus proyectos
    •  Que puedas compartir tus trabajos con otras personas 
    •  Que siempre este actualizado tu proyecto. Si lo subes a code google o otro servidor, la persona que lo baje puede obtener siempre la última versión.
    • Que un grupo de programadores puedan realizar un proyecto en conjunto.
    • y más cosas....

    Para más información:

     http://librosweb.es/pro_git/



    Pro Git, el libro oficial de Git

    Portada del libro Pro Git, el libro oficial de Git
    • TítuloPro Git, el libro oficial de Git
    • Autor
    • Traductores: Juan Murua, Alejandro Fernández, Javier Eguiluz
    • Licencia: Creative Commons No comercial - Atribución - Compartir igual (CC BY-NC-SA) 3.0 (ver detalles)