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:



sábado, 21 de enero de 2012

Algunos comandos de consola, interesantes para ayudarnos a programar.


Estoy haciendo una aplicación, y algunas veces, durante la depuración del programa, se queda "colgado" aparentemente el ordenador.

¿que hacer en estos casos?

Si funciona el teclado (por ejemplo, si le damos la tecla de bloqueo de numeros, y se enciende la luz), podemos unar la combinación de CTRL+ALT+Fn (n=1,2,3,4,5,6) para irnos a una consola y ver que esta ocurriendo.
Con CTRL+ALT+F7, regresamos al entorno grafico.

Si pulsamos, por ejemplo CTRL+ALF+F!, pasamos a una consola (habrá que introducir de nuevo nuestro usuario y clave)

Una vez en la consola, podemos usar el comando
$top
o
$htop 
 (este último tiene un entorno gráfico de consola y hay que instalarlo, ya que no viene por defecto en Ubuntu)


Estos nos muestran información sobre los procesos cargados en memoria (por ejemplo, la carga de cada uno en la CPU y el consumo de Memoria
Otro comando interesante es
$kill

El cual puede mandar distintas señales a los procesos (por ejemplo, intentar cerrarlos o directamente matarlos).
En la captura de pantalla vemos que el proceso PID 3024, es el que htop.
Si entramos en otra consola (pulsando, por ejemplo, CTRL+ALT+F2) y le damos la orden:
$kill 3024

El programa htop, se parará.

Otro comando interesante es
$lsof

Nos muestra mucha información acerca de lo que se esta ejecutando en nuestro ordenador. (ver:  http://es.wikipedia.org/wiki/Lsof y pagina man de lsof (traducido por google)

Nos muestra tanta información que tendremos que "filtrarla", para ello usamos el comando  grep y more
Por ejemplo:
$lsof |grep gbx2 |more
Podemos ver que esta usando gbx2 (gambas).

Otro ejemplo:
$lsof |grep gbx2 |more | grep sqlite

Estamos filtrando toda la información donde aparezca gbx2 y sqlite


Caso práctico:
Yo lo uso cuando estoy programando en el IDE de gambas, y al ejecutar el programa que estoy haciendo se me queda "pillado el ordenador", como habrá dos procesos (PID distintos), uno del IDE de gambas y otro del programa haciendo, puedo parar el programa sin parar el IDE de programación de gambas.


Saludos

Nota:
Otra comando interesante es
$nano
Es un editor de texto con el cual podemos editar archivos de configuración.

martes, 10 de enero de 2012

Nueva version MapBD v.0.1.0


Nueva Versión MapBD 
versión 0.1.1
Mejoras en Consultas MultiTablas

He seguido trabajando el este programa, ya que me encontraba con la dificultad de poder trabajar con sentencias sql, que manejaran varias tablas, y mostrar sus resultados en un gridviews...

Pues bien, ya le he incluido esa mejora.

Ahora (además de las clases que creaba la antigua versión), crea dos nuevas clases, para manejar los "registros de datos" que salen de resultado en las sentencias con multiples tablas.
Se llaman,respectivametne:
 a)     BD{nombre_base_de_datos}Registro
                 Que es la que contiene todas las propiedades (coinciden con todos los campos que tienen todas la tablas de la base de dato, siendo el nombre de la propiedad igual al nombre de la tabla+guion bajo ("_") +nombre del campo

 b)  BD{nombre_base_de_datos}
               Esta clase va a tener los métodos con la que trabajaremos con la clase anterior.

En esta versión tiene los siguientes métodos:
           PUBLIC SUB Abrir()
                abre la conexión a la base de datos
           PUBLIC SUB Cerrar()
                 cierra la conexión de la base de datos
           PUBLIC FUNCTION sql(consulta AS String) AS result
                 ejecuta una consulta SQL y devuelve un "result"
           PUBLIC SUB resultObject(resultado AS Result) AS object[]
                  convierte un "result" en Objetos
           PUBLIC SUB EscribeObjetos(t AS Object[])
                  escribe los objetos en la consola
           PUBLIC FUNCTION GridObjetos(t AS object[], grid AS gridview) AS 
gridview
                   formatea un gridview dado (grid), con los datos de los objetos obtenido en la sentencia anterior.


Os lo explico con el ejemplo, que creo que se verá mucho más claro, su utilización:
"En el programa de Consulta Medica, queremos que se nos muestre un gridviews, con todos los enfermos y la enfermedad que padecen. Nota: Hay alguno que padecen más de una enfermedad."

La sentencia SQL seria:
Select nombre,Apellido,TablaExpediente.enfermedades
FROM TablaEnfermo,TablaExpediente
WHERE tablaenfermo.idenfermo=tablaexpediente.idenfermo

 ¿Como lo haríamos con los nuevos métodos?
DIM paso2 AS NEW BDControlConsulta 'nueva Clase que maneja Resultados de sentencias SQL que usan Varias Tablas
DIM obj AS Object[] 'creamos un array de objetos, que van a contener los resultados
Dim resultado as result 'contiene el resultado de la consulta sql

'abrimos la conexion a la base de datos
paso2.Abrir


'obtenemos el resultado de la sentencia SQL
resultado=paso2.sql("SELECT nombre,Apellido,TablaExpediente.enfermedades FROM TablaEnfermo,TablaExpediente WHERE tablaenfermo.idenfermo=tablaexpediente.idenfermo")



'extraemos los objetos
obj = paso2.resultObject(resultado)

'rellemos el gridviews, con los objetos (incluido el titulo de cada columna)
GridView1 = paso2.GridObjetos(obj, GridView1)

 Y el resultado en pantalla es....

¿Resulta muy cómodo verdad? Y solo en 7 lineas de código !!!

Podéis descargaros el código fuente en: MapBD-0.1.2.tar.gz


Podéis descargaros el ejemplo en: ConsultasMed-0.0.2.tar.gz

Manual: CONSULTA MEDICA ejemplo de uso del MapBD.pdf

Nota:
- Para que se añadan estos métodos a vuestro proyecto, debéis de ejecutar la nueva versión de MapBD, para actualizar las clases.

- El código generado en compatible con Gambas2 y Gambas3 


- Nuevas mejoras añadidas:
Version 0.1.2 (27 de marzo de 2013)
-Corregido bug de linea mal comentada.
-Genera módulo llamado conectar que es el encargado de abrir la base de datos (a añadir ademas de los ficheros de clases)
 


 Version 0.1.1 (31 de marzo de 2012)
  - Nuevas opciones y funciones.
        'corregido el error de borrado.. 
        'añadido funciones -> ToOBj
        'lista: genera una lista despendiendo de un campo de un resultado
        'abre un archivo determinado (es opcional indicarlo)



En programa esta en pleno desarrollo, si encontrais algún bug o alguna mejora, me lo comentais.