Kivy, Linux, Programacion, Python, Software Libre

Instalando Kivy en Antergos/Archlinux

Desde hacia ya bastante tiempo que no he  escrito en el blog, ultimamente he estado aprendiendo del mundo python y ahora estoy probando Kivy para desarrollo de apps moviles para android. He encontrado poca documentación en español acerca de Kivy, y quiero contribuir con algunas entradas en las cuales iré compartiendo lo que voy aprendiendo.

Como dice en su pagina web http://kivy.org : Kivy es una librería Python de código abierto para desarrollo rápido de aplicaciones que hacen uso de interfaces de usuario innovadoras, tales como aplicaciones multi-touch, esta librería se puede descargar para diferentes plataformas desde http://kivy.org/#download  y ahi tenemos las instrucciones de instalación para Windows, Mac y algunas distros Gnu/Linux, lamentablemente yo tuve problemas al quererla instalar en Antergos pero he dado con la solución, que detallo a continuación:

1. Instalamos ‘python-pygame’ desde la consola o desde pacmanxg, ya que desde pip2 no se puede instalar

2. Instalamos ‘cython 0.20.2 ‘  ya que con cython 0.21 aun no se puede instalar kivy , con el comando:

  sudo pip2 install 'cython==0.20.2'

3. Finalmente instalamos Kivy con el comando

sudo pip2 install kivy

De esta forma tendremos instalado kivy en nuestro sistema, cabe recalcar que si se usa un entorno virtual se debe omitir el sudo.

Eso es todo, espero que le sirva de ayuda a alguien!!!

 

 

 

 

 

Programacion, Python

Validar cédula y ruc ecuatorianos en python

Después de mucho tiempo que vuelvo a escribir en el blog, en esta ocasión quiero compartir un algoritmo hecho en python para validación de números de cédula y ruc en Ecuador. Para la realización del mismo me he basado en los contenidos de los siguientes blogs:

http://telesjimenez.blogspot.com/2011_05_01_archive.html

http://fabricioflores.wordpress.com/2013/06/03/validar-cedula-ecuatoriana-en-ruby/

A continuación el codigo de validación hecho en python:

def verificar(nro):
    l = len(nro)
    if l == 10 or l == 13: # verificar la longitud correcta
        cp = int(nro[0:2])
        if cp >= 1 and cp <= 22: # verificar codigo de provincia
            tercer_dig = int(nro[2])
            if tercer_dig >= 0 and tercer_dig < 6 : # numeros enter 0 y 6
                if l == 10:
                    return __validar_ced_ruc(nro,0)                       
                elif l == 13:
                    return __validar_ced_ruc(nro,0) and nro[10:13] != '000' # se verifica q los ultimos numeros no sean 000
            elif tercer_dig == 6:
                return __validar_ced_ruc(nro,1) # sociedades publicas
            elif tercer_dig == 9: # si es ruc
                return __validar_ced_ruc(nro,2) # sociedades privadas
            else:
                raise Exception(u'Tercer digito invalido') 
        else:
            raise Exception(u'Codigo de provincia incorrecto') 
    else:
        raise Exception(u'Longitud incorrecta del numero ingresado')

def __validar_ced_ruc(nro,tipo):
    total = 0
    if tipo == 0: # cedula y r.u.c persona natural
        base = 10
        d_ver = int(nro[9])# digito verificador
        multip = (2, 1, 2, 1, 2, 1, 2, 1, 2)
    elif tipo == 1: # r.u.c. publicos
        base = 11
        d_ver = int(nro[8])
        multip = (3, 2, 7, 6, 5, 4, 3, 2 )
    elif tipo == 2: # r.u.c. juridicos y extranjeros sin cedula
        base = 11
        d_ver = int(nro[9])
        multip = (4, 3, 2, 7, 6, 5, 4, 3, 2)
    for i in range(0,len(multip)):
        p = int(nro[i]) * multip[i]
        if tipo == 0:
            total+=p if p < 10 else int(str(p)[0])+int(str(p)[1])
        else:
            total+=p
    mod = total % base
    val = base - mod if mod != 0 else 0
    return val == d_ver

Espero pueda ser de ayuda a alguien 🙂

3D, Blender, Software Libre

Sintel The Game, juego hecho en blender tiene su alpha 0.2

sintel-game
Sintel the game

No se si es bien conocida la existencia de este juego, esta hecho en Blender y basado en el cortometraje animado Sintel que la Blender Foundation lanzó por septiembre del año 2010. Ahora hace poco se ha lanzado el alpha 02 de este juego en el cual se han corregido algunos errores y agregado nuevas funcionalidades, entre las que tenemos:

– Nuevos niveles

– Modo de combate rediseñado

– Nuevos enemigos

– Retoques al menú

Entre otros…

Para mas información pueden acceder al anuncio oficial desde este enlace:

http://sintelgame.org/2013/09/alpha-0-2/

Aqui dejo un video del juego:

Si desean descargar este juego lo pueden hacer desde este enlace:

http://sintelgame.org/downloads/

Gnome, Linux, Software Libre

Solución error bluetooth Antergos Linux

De nuevo con un ‘problema’ en Antergos, bueno aun está madurando asi que se lo perdono :P, en esta ocasión mostraré como solucionar un error en bluetooth pues no permitia ni activarlo ni buscar dispositivos ni nada, al hacer click en el icono de bluetooth en mi cinnamon se mostraba lo siguiente:

bluetooth-old

y al querer habilitar la visibilidad del bluetooth no funcionaba ni tampoco podia habilitarlo desde configuración. El problema habia sido que el servicio de bluetooth no se activaba por defecto asi que podemos solucionarlo de la siguiente forma:

1. Iniciamos el servicio de bluetooth:

sudo systemctl start bluetooth.service

2. Habilitamos el servicio de bluetooth para que se inicie al iniciar sistema:

sudo systemctl enable bluetooth.service

Eso es todo, muy facil verdad. Al final de esto ya deberia estar activado el bluetooth y hacer cualquier operacion que querramos.

bluetooth-new

Vaya que con Antergos voy aprendiendo cada vez mas …

Actualización:

Al parecer sólo con los comandos anteriores no funciona todo correctamente. Es necesario instalar el paquete ‘obexftp’ y ‘obex-data-server’ estos paquetes son utiles para compartición de archivos. Luego de instalarlos se debe reiniciar u apagar y volver a encender.

Gnome, Linux, Software Libre

Instalando driver Nvidia en Antergos Linux

panel-nvidia

Luego de instalar cualquier distro Gnu/Linux lo posterior es instalar los drivers privativos ya sea para conexión inalámbrica o para la tarjeta de video. En mi anterior post escribí acerca de como instalar el driver broadcom en Antergos, en el presente artículo explicaré como instalar el driver Nvidia.
1. Antes de instalar el driver debemos remover dos paquetes que suelen dar problemas para instalar el driver Nvidia, los cuales son: ‘nouveau-dri’ y ‘xf86-video-nouveau’, los seleccionamos en PacmanXG y los desinstalamos:
paquetes-elimina
2. Ahora buscamos el paquete llamado ‘nvidia’ y lo instalamos, no debemos seleccionar ninguno mas pues automaticamente instala los paquetes necesarios.
3. Finalmente reiniciamos y listo!!!
Gnome, Linux, Software Libre

Solución error de audio de Skype en Antergos Linux

Hace poco tiempo que he empezado a usar Antergos con Cinnamon como entorno de escritorio, el mismo que está muy bien integrado y la selección de aplicaciones aunque es poca es muy buena.

He instalado Skype, en cuanto a la instalación no hubo problema, pero al momento de hacer videollamada me salia un tipo de error referente al audio; como tengo driver Nvidia, cambie los valores por defecto de audio probando una a una las opciones que aparecian, solucione en parte las videollamadas pues ya podia escuchar y usar el micrófono pero luego al querer reproducir un video en mi computador no se escuchaba el audio, asi que toco googlear por la solución, que la verdad es muy simple, simplemente instalar el paquete lib32-libpulse, lo podemos haces con el comando:

sudo pacman -S lib32-libpulse 

O desde PacmanXG buscando e instalando. Luego de la instalación la configuración de audio de Skype nos quedará de la siguiente manera:

config

 Eso es todo, espero le sea de ayuda a alguien …

Gnome, Linux, Software Libre

Instalando driver broadcom en Antergos

antergos_term

Luego de algun tiempo trasteando con Linux Mint, y luego Manjaro Gnome/Cinnamon he llegado a Antergos, una distro basada en Archlinux  con la opcion de instalar varios entornos de escritorio. Como contraparte al momento de instalar descarga los paquetes necesarios para cada opcion pero la integración con el entorno es muy buena, asi que 100% recomendada.

Luego de instalarlo he notado que no viene con el driver broadcom por defecto instalado, al menos para el modelo de mi tarjeta que es bcm4322 pero se soluciona de la siguiente forma:

1. Instalamos yaourt que viene por defecto en los repositorios de antergos para usar los repositorios de AUR, podemos usar PacmanXG o mediante el terminal escribiendo:

sudo pacman -S yaourt

2. En un terminal ponemos el siguiente comando:

yaourt -S b43-firmware

en este caso no usamos sudo ya que para compilar paquetes de AUR es recomendable hacerlo sin derechos de administrador. Podemos tambien usar Pacman XG para instalar paquetes AUR de igual forma es recomendable entrar sin derechos de administrador.

Eso es todo espero le sea de ayuda a alguien…

Java, Linux, Programacion, Software Libre

Pequeño programa Java con resaltado de sintaxis

CapturaCreaSnippets

He estado practicando algo de programación en Java, en esta ocasión he realizado un pequeño programa para creación y guardado de snippets para el lenguaje de programación Java. He hecho esto usando archivos para guardar los Snippets, un archivo de propiedades donde estan las palabras reservadas de Java.

El resaltado de sintaxis y los colores los he puesto yo pero si analizan el codigo se pueden cambiar; no soy tan buen programador pero espero que le sirva a alguien.

Si desean descargar el archivo jar lo pueden hacer desde aqui

El código fuente de la aplicación lo pueden descargar aqui

PD:Si hay alguna correccion por favor haganmelo saber….

Java, Linux, Programacion

Programacion en Java con Geany y Ant en Linux

geanyjavaant

Hace tiempo escribi un minitutorial acerca de como configurar Geany para programar en java, ahora mostraré una forma mas facil de programar en Java con Geany y Ant. Esto lo he probado satisfactoriamente en Linux Mint y en Manjaro, no esta por demas decir que debe estar instalado el JDK en el sistema.

1. Primero instalamos Apache Ant, lo podemos encontrar en los repositorios de ambas distribuciones.

2. Creamos un proyecto en Geany y lo renombramos como queramos. Para crear un proyecto en Geany vamos a Proyecto -> Nuevo.

3. Creamos dentro del proyecto dos directorios uno para el codigo fuente llamado «src» y el otro para las librerias que usara la aplicacion con el nombre «libs».

4. Ahora creamos el archivo build.xml que será el que nos ayude a hacer las operaciones de compilar, ejecutar y construir el archivo jar. En mi caso lo construi de la siguiente manera:

<?xml version="1.0"?>
<!-- La accion por defecto es ejecutar-->
<project name="CreaSnippets" default="ejecutar" basedir=".">

    <!-- ===============================================  -->
    <!-- Accion inicializar ================  -->
    <!-- ===============================================  -->
    <target name="inicializar"   description="Inicializar variables">
        <echo message="Inicializando" />
        <!-- Ruta del directorio con los ficheros fuente que queremos compilar (*.java) -->
        <property name="fuente" value="src" />
        <!-- Ruta del directorio donde queremos que deje los ficheros compilados (*.class) -->
        <property name="destino" value="class" />
        <!--Para usar las librerias desde compilar y ejecutar-->
        <path id="librerias">
             <fileset dir="libs" includes="**/*.jar"/>
        </path>
        <!--Para el manifest en el jar-->
        <pathconvert property="libs" pathsep=" " refid="librerias">
            <mapper>
                <chainedmapper>
                    <flattenmapper/>
                    <globmapper from="*.jar" to="libs/*.jar"/>
                </chainedmapper>
            </mapper>
        </pathconvert>
    </target>

    <!-- ===============================================  -->
    <!-- Accion limpiar ================  -->
    <!-- ===============================================  -->
    <target name="limpiar"   description="Borrar archivos temporales">
        <echo message="Limpiando el proyecto" />
        <delete dir="class"/>
    </target>

    <!-- ===============================================  -->
    <!-- Accion borrar ================  -->
    <!-- ===============================================  -->
    <target name="borrar"   description="Borrar archivos temporales">
        <echo message="Borrar archivo jar" />
        <delete file="Main.jar" />
    </target>

    <!-- ===============================================  -->
    <!-- Accion compilar (comando javac) ===============  -->
    <!-- ===============================================  -->
    <target name="compilar" depends="inicializar">
        <echo message="Creando el directorio class" />
        <mkdir dir="class"/>
        <!--Copiando archivos no .java al directorio class-->
        <copy todir="${destino}">
                <fileset dir="${fuente}">
                    <include name="**/*.gif"/>
                    <include name="**/*.jpg"/>
                    <include name="**/*.png"/>
                    <include name="**/*.properties"/>
                    <include name="**/*.xml"/>
                    <include name="**/*.sql"/>
                </fileset>
        </copy>
        <echo message="Compilando el codigo" />
        <javac srcdir="${fuente}" destdir="${destino}" includeAntRuntime="false">
            <classpath refid="librerias"></classpath>
        </javac>
    </target>

    <!-- ===============================================  -->
    <!-- Accion ejecutar (comando java) ================  -->
    <!-- ===============================================  -->
    <target name="ejecutar" depends="compilar">
        <echo message="Ejecutando el archivo " />
        <java classname="vista/Main" fork="true">
            <classpath>
                <pathelement path="${destino}"/>
                <path refid="librerias"></path>
            </classpath>
            <!-- Descomentar si queremos pasar un argumento -->
            <!-- <arg value="primer argumento" /> !-->
        </java>
    </target>

    <!-- ===============================================  -->
    <!-- Accion construir (comando jar) ================  -->
    <!-- ===============================================  -->
    <target name="construir" depends="compilar,borrar" >
        <jar destfile="Main.jar">
            <!--** Para incluir todos los elementos de la carpeta destino-->
            <fileset dir="${destino}" includes="**"></fileset>
            <!--Lo que se incluira en el archivo de manifiesto-->
            <manifest>
                <attribute name="Main-Class" value="vista/Main"/>
                <attribute name="Class-Path" value="${libs}"/>
            </manifest>
        </jar>
    </target>
</project>

Este archivo debe ir en el directorio base del proyecto, el cual nos deberia quedar de la siguiente manera:

directorios

5. Finalmente debemos editar los comandos en Geany para Compilar, Ejecutar y Construir el jar. Nos deberia quedar de la siguiente manera:

configuraciones

Hay que tener cuidado de poner «%p» frente a cada comando. Como se puede ver los comandos son simples, la seccion de comandos independientes puede estar vacia.

Ahora si necesitamos Compilar pulsaremos el boton de compilacion de Geany, asi mismo para Ejecutar y Construir.  Dentro del archivo build.xml tambien hay dos opciones más,  la primera «limpiar» que borra la carpeta «class» y su contenido; y la segunda «borrar» que borra el archivo jar creado por el comando «Construir». Para llamar a estas funciones podemos usar el terminal embebido de Geany, ubicarnos en la carpeta base del proyecto y escribir «ant limpiar» o «ant borrar» según como se necesite. Aqui un ejemplo:

limpiar

Y aqui una captura de un proyecto java que hice en Geany:

Compilando:

compilando

Ejecutando:

Ejecutar

Esta configuracion incluso sirve para cuando hacemos proyectos con JPA ya sea con Hibernate JPA o con Eclipse JPA para ello creamos un directorio llamado META-INF dentro de la carpeta «src»  y creamos o pegamos el archivo persistence.xml. Aqui un modelo:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="nombreProyectoPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <!--Modelo de agregación de clase-->
    <class>paquete.subpaquete.nombreClase</class>
    <properties>
      <!--Poner nombre base de datos-->
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/nombreBD?zeroDateTimeBehavior=convertToNull"/>
      <property name="javax.persistence.jdbc.password" value="clave"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.user" value="usuario"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
    </properties>
  </persistence-unit>
</persistence>

Claro está que se debe poner los jars correspondientes dentro de la carpeta «libs».

Espero que este pequeño tutorial les sirva, si tienen alguna duda comenten 🙂 …

Linux, Software Libre, Ubuntu

Solución error skype ubuntu 13.04

skype

Hace tiempo que ya no escribia en el blog, ahora vengo con un tip para solucionar el problema de que skype no inicia luego de instalar en ubuntu 13.04. Segun lei esto pasa en equipos con tarjetas de video nvidia y ati.

Bien lo primero que debemos hacer es renombrar ‘skype’ por  ‘skype-bin’ para ello ponemos lo siguiente en el terminal:

sudo mv /usr/bin/skype /usr/bin/skype-bin

Luego creamos como root el archivo skype en /usr/bin con el comando:

sudo gedit /usr/bin/skype

y dentro pegamos lo siguiente :

#!/bin/sh
export LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1
exec skype-bin "$@"

y finalmente aplicamos permisos al archivo con el comando :

sudo chmod 0755 /usr/bin/skype

Si deseamos revertir los cambios solo escribimos lo siguiente en el terminal:

sudo rm /usr/bin/skype
sudo mv /usr/bin/skype-bin /usr/bin/skype

Fuente: http://www.webupd8.org/2013/04/fix-skype-not-working-in-ubuntu-1304.html