miércoles, octubre 28, 2015

Leyes y principios interesantes ...

A lo largo de bastante tiempo he escuchado de algunas deducciones que ciertas personas han alcanzado por medio de estudios y por la mera observación y lógica, algunos los llaman leyes otros los llaman principios, entre ellos me han llamado la atención los siguientes:

1- Ley de Murphy Wikipedia

Esta es muy popular, se resume así: "Si algo puede salir mal, saldrá mal". La moraleja es que hay que estar listo para lo peor ...

2- Principio de Pareto (80/20) Wikipedia

También conocido como la regla del 80-20.

Lo que este principio describe me pasa con el tráfico cuando viajo desde la ciudad de Granada hacia  Managua. Mucha gente viaja diario desde los departamentos (Granada, Masaya, Carazo, otros.) hacia Managua la capital de Nicaragua para ir a sus trabajos. Entre Granada y Managua hay 45 km, y por los usuales embotellamientos aproximadamente el 80% de la distancia se recorre en el 20% del tiempo que toma todo el viaje, y el restante 20% de distancia, por el embotellamiento de la capital me toma casi el 80% del tiempo de viaje hasta mi destino.

3- Ley de Parkinson Wikipedia

Varios ejemplos se pueden mencionar para comprender la idea de esta ley:

- "El trabajo se expande hasta llenar el tiempo de que se dispone para su realización".
- "Los gastos aumentan hasta cubrir todos los ingresos".
- "El tiempo dedicado a cualquier tema de la agenda es inversamente proporcional a su importancia"

Otro caso suele suceder cada vez que compramos un disco duro con mayor capacidad, siempre encontramos con que llenarlo.

4- Principio de Peter Wikipedia

Este es muy interesante, el autor supone lo siguiente: las personas que realizan bien su trabajo son promocionadas a puestos de mayor responsabilidad, hasta que no puedan cumplir los objetivos de un trabajo, en tal momento alcanzan su máximo nivel jerárquico pero en ese nivel llegan a ser incompetentes.

Otros ...

- Principio de Dilbert Wikipedia
- Efecto Dunning-Kruger Wikipedia


lunes, febrero 10, 2014

SharePoint: "The length of the URL for this request exceeds the configured maxUrlLength value."

Al invocar los servicios Web REST de SharePoint 2013 pueda que al pasar muchos parámetros por medio de la URL se obtenga un mensaje de error de IIS y .NET diciendo:

1) "The length of the URL for this request exceeds the configured maxUrlLength value."

Este error no tiene que ver con los límites que impone SharePoint en cuanto a la longitud de los nombres de los archivos y directorios. Por ejemplo, SharePoint puede quejarse de la longitud del nombre de los archivos y carpetas en una biblioteca de la siguiente manera:

2) "El nombre de archivo o carpeta especificado es demasiado largo. La ruta de acceso de la dirección URL de todos los archivos o carpetas debe tener 260 caracteres como máximo (y nunca más de 128 caracteres los nombres de carpeta o archivo de la URL). Escriba un nombre de archivo o carpeta más corto."

El problema número 1 relacionado con la longitud de la URL puede ser resuelto de la siguiente manera:

Editar el web.config de SharePoint. Y agregar el atributo maxUrlLength="9000" dentro de la etiqueta <httpRuntime> que está dentro de :

   

En mi caso he seleccionado un valor exageradamente grande 9000, para no estar lideando más con el problema. Cada WebApplication tiene su propio web.xml dentro de IIS, en una ruta similar a: C:\inetpub\wwwroot\vss\VirtualDirectories\MI_WEB_APP

Luego del cambio reiniciar el IIS.



También es recomendable subir el tamaño de la URL en las propiedades del Request Filtering del IIS.




martes, septiembre 24, 2013

Developing a jGnash plugin

jGnash is a personal financial software, available as Free Libre Open Source Software (FLOSS). I've been using it since some years, and i can say that is a great software. It has many functionalities, PDF reports and charts, to register and control your incomes and expenses. It just lack of some analysis reports, so i decided to build my own.

It's possible to create plug-ins for jGnash. So you can add a new functionality or a new report, without recompile the whole software. There's a folder in jGnash installation directory called "plugins", in this folder you can add a JAR file containing the new plug-in and next time you start jGnash, it will load your plug-in.

Requirements to build a new plug-in

For build a new plug-in you will need Java programing knowledge, and some specifics thing depending on the kind of functionalities that you are trying to extend. For building new graph charts or reports, I will suggest experience related to: Java Swing, JFreeChart, DynamicJasper and JasperReports. There is not good documentation about packages and source code of jGnash, but you can download the source code and will find is not hard to read, also you will find help on email lists.

According to jGnash help menu, these are the external libraries they use, so could be good also know a little bit about them: args4j, db4o, JasperReports, DynamicJasper, JFreeChart, JGoodies Animation, JGoodies Forms, JGoodies Looks, Apache MINA, XStream and SwingX.

I like Eclipse IDE, so I will use it, but any Java IDE should be good.

Of course, you must have installed jGnash, to link the jars files to your new plugin project.

Architecture

jGnash provides a plug-in system that is easy to understand. The jgnash2.jar provides a interface called: jgnash.plugin.Plugin and a abstract class called: jgnash.plugin.AbstractEnabledAction, to create a new plugin, inside the new plugin jar, just implement the Plugin interface and extend the AbstractEnabledAction.


Also it will be needed to write a couple of lines inside the jar MANIFEST file.

Steps to create a basic plugin

1- Start a new Java Project, this is a normal Java project in Eclipse IDE.

2-In the Java Build Path of the project (Right click on the project, Properties, Java Build Path, Libraries) add the External Jar: jgnash2.jar from your jGnash installation path.


3- Inside the project, create a new file called: MANIFEST.MF

This file must contain something similar to this:

Manifest-Version: 1.0
Plugin-Activator: myplugin.mypackage.MyPlugin
Plugin-Version: 1.0

Where "Plugin-Activator:" points to the class that implements the jgnash.plugin.Plugin interface.

4- Create the Plugin implementation class, that indicate, which menus will be added to the user interface and which actions will be executed. This is a simple example:

package myplugin.mypackage;

import javax.swing.JMenuItem;
import javax.swing.JPanel;

import jgnash.plugin.Plugin;

public class MyPlugin implements Plugin{

    @Override
    public JMenuItem[] getMenuItems() {
        JMenuItem menuItem = new JMenuItem();

        menuItem.putClientProperty(Plugin.PRECEDINGMENUIDREF, "new-command");
        menuItem.setAction(new MyAction());

        return new JMenuItem[] { menuItem };
    }

    @Override
    public String getName() {
        return "My Plugin";
    }

    @Override
    public JPanel getOptionsPanel() {
        return null;
    }

    @Override
    public void start() {
    }

    @Override
    public void stop() {  
    }
}

The line menuItem.putClientProperty(Plugin.PRECEDINGMENUIDREF, "new-command"); will tell to jGnash where to add the new menuItem, the preceding code, indicate before New Command menuItem. Other places you can choose are listed in the source code of jGnash, check this file:

/jgnash2/jgnash-resources/src/main/resources/jgnash/resource/main-frame-actions.xml

Another important line is: menuItem.setAction(new MyAction()); it says, when user clicks this menuItem execute the code inside MyAction class, that we must create later.

5- Implementing AbstractEnabledAction.

package myplugin.mypackage;

import java.awt.event.ActionEvent;

import javax.swing.Action;
import javax.swing.JOptionPane;

import jgnash.ui.actions.AbstractEnabledAction;

public class MyAction extends AbstractEnabledAction {

    public MyAction(){
        putValue(NAME, "Title");
        putValue(Action.SHORT_DESCRIPTION, "Description");
    }
  
    @Override
    public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null, "Hello World");
    }
}

It's important to set the "NAME" and "Action.SHORT_DESCRIPTION" values, they will be shown as the title and tool tip text of the menuItem.

The actionPerformed method will be executed when the menuItem is clicked by the user, in this example will show a simple dialog window saying "Hello World".

6- Creating the jar file. In Eclipse, right click over your project, select Export, and then Jar File.


After that, follow the instructions, and take care when "Jar Manifest Specification" windows appear, select the option: "Use existing manifest from workspace", and choose the "MANIFEST.MF" file that we have created before.


7- Copy the generated jar file inside "plugins" folder of jGnash, run jGnash and you will see the message "Hello World" when you click the new menu "Title" inside "File" menu.



Thanks to jGnash developers for this great software. My hope is that lots of jGnash plug-ins come alive to make it a better software for all.

martes, agosto 06, 2013

Mi Aplicación Java en la Nube con Google App Engine


Fuente developers.google.com
Google App Engine (GAE) es en resumen la plataforma para publicar aplicaciones Web en la nube de Google, basada en el modelo PaaS (Plataforma como Servicio).

Google permite utilizar, sin costo, su SDK de desarrollo,  desplegar aplicaciones Java, Python, PHP o Go y utilizar repositorios de escritura y acceso a datos escalables (Big Data) basado tanto en NoSQL (llamado Datastore en GAE) como en SQL (BigQuery en GAE). El SDK se integra completamente con el IDE de desarrollo Eclipse, desde el cual se puede publicar directamente al servidor lo que se desarrolla.

"Una aplicación de una cuenta gratuita dispone de hasta 1 GB de espacio y admite hasta cinco millones de vistas mensuales." developers.google.com

Aplicación Tipo Cambio NIO

Mi Primera Aplicación Java en la Nube con Google App Engine, llamada Tipo Cambio NIO, está publicada en http://denisjtorresg.appspot.com

Se trata de una simple aplicación que permite a los usuarios conocer de forma simple y consolidada los tipos de cambio del Córdoba respecto al Dólar y el Euro. Permitiendo consultar esta información en diferentes formatos como: RSS, ATOM, JSON, HTML, y por medio de Chat (XMPP).

Básicamente lo que la aplicación hace es leer regularmente la información pública de los tipos de cambio del Córdoba respecto al Dólar y el Euro de los siguientes sitios web públicos: Banco Central de Nicaragua y de los bancos privados: BAC Nicaragua, BANPRO - Grupo Promerica, BDF - Banco de Finanzas, Citibank de Nicaragua, LAFISE Nicaragua y ProCredit Nicaragua.

Luego esta información puede ser consultada de diferentes maneras, tanto por: usuarios usando una navegador Web o su chat de Gmail, y por aplicaciones que puedan leer servicios Web basados en JSON, RSS o ATOM.


Para hacer uso del servicio ofrecido por medio de chat, agregar a GoogleTalk o al chat de Gmail la siguiente dirección: denisjtorresg@appspot.com y luego escribir la palabra "ayuda" (sin comillas).



Para consultar los datos del día desde el navegador web o consumir mediante HTTP desde una aplicación se pueden usar las siguientes URLs:

Consulta RSS con datos de hoy:
http://denisjtorresg.appspot.com/tcnio?f=hoy&s=RSS

Consulta ATOM con datos de hoy:
http://denisjtorresg.appspot.com/tcnio?f=hoy&s=ATOM

Consulta JSON con datos de hoy:
http://denisjtorresg.appspot.com/tcnio?f=hoy&s=JSON

Consulta HTML con datos de hoy:
http://denisjtorresg.appspot.com/tcnio?f=hoy&s=HTML

Se puede  sustituir el parámetro "f" por una fecha en formato aaaa-mm-dd.

Este servicio se ofrece sin garantía. Los resultados suministrados provienen de las páginas web públicas de las entidades enumeradas. 


domingo, junio 23, 2013

Servicio Web para Consultar el Tipo de Cambio del Córdoba Respecto al Dólar (cliente Java)

WSLD Servicio Web Tipo Cambio BCN
El Banco Central de Nicaragua ha publicado en Internet un servicio web SOAP para consultar las tasas de cambio del Córdoba respecto al Dólar. Según he podido experimentar han publicado las tasas de cambio a partir del 1ro de Enero del 2012.

El siguiente sitio web detalla algunos aspectos, tanto técnicos, como de condiciones de uso del servicio web:

http://www.bcn.gob.ni/tc/

El BCN ha hecho público ejemplos de cómo consumir el servicio web en plataformas .NET (con VisualBasic) y en PHP. Dado que falta un ejemplo para todos los que usamos Java, estoy liberando bajo licencia de dominio público, un archivo .jar para que pueda ser agregado en proyectos libres o comerciales.

Descargar archivo .jar (Java) para consultar servicio web de tipo de cambio.

Descargar código fuente y documentación del proyecto para el IDE Eclipse.

Ejecución del demo:

java -jar tcBCN.jar



Ejemplo de uso en un programa propio:



package info.denisjtorresg.tcbcn;

import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;

public class Prueba {

public static void main(String[] args) {
       
// Tipo de cambio del día
        System.out.println(TipoCambioBCNSimple.getTipoCambio());
       
// Tipo de cambio en la fecha indicada (año, mes, día)
        System.out.println(TipoCambioBCNSimple.getTipoCambio(2013,6,21));

System.out.println(TipoCambioBCNSimple.getTipoCambio(2012,1,1));
       
// Tipos de cambio del mes indicado
Map tcRango = TipoCambioBCNSimple.getTipoCambio(2013, 2);
        

for(Entry elemento: tcRango.entrySet()){
  Date fecha = elemento.getKey();
  Double tc = elemento.getValue();
           
  System.out.println(fecha + " => " + tc); 

}
}
}
 

El archivo jar suministra una clase de utilería simple llamada TipoCambioBCNSimple ubicada en el paquete: info.denisjtorresg.tcbcn. No requiere de ningún API o jar extra, funciona con Java SE 6 o superior.

Esta clase contiene el método estático getTipoCambio el cual está sobrecargado para recibir distintos tipos de parámetros que especifiquen la fecha o rango de fechas para las cuales se desea conocer el tipo de cambio.

La documentación completa de la clase de utilería TipoCambioBCNSimple se puede ver en:

http://sites.google.com/site/denisjtorresg/TipoCambioBCNSimple.html

Espero que sea de utilidad para el que la necesite.

Otros artículos similares:
Validar números de cédulas de Nicaragua con Java

jueves, mayo 09, 2013

El camino mas corto en un grafo no dirigido

En la actualidad los expertos indican que las bases de datos relacionales (modelo usado desde los años 80) están llegando a ciertos límites y nuevas tendencias están emergiendo, como las bases de datos NoSQL, producto de las necesidades de la Web, grandes volúmenes de datos (Big-Data), la computación en la nube, computación en paralelo (MapReduce), inteligencia de negocios (BI), machine learning muy útil en la minería de datos, entre otros.

Producto de un par de cursos interesantes en Coursera: Web Intelligence and Big Data e Introduction to Data Science he encontrado que muchas de las nuevas tendencias están basadas en teorías relativamente viejas, que parecían no tener un futuro muy marcado, ni amplio uso (al menos desde mi punto de vista personal tomando como base los trabajos y los proyectos en los que me ha tocado participar).

Una de estas teorías que tuve la oportunidad de conocer a nivel básico en la universidad, fue la teoría de grafos, la cual ahora se usa en las nuevas tendencias de bases de datos orientadas a grafos.

Al leer sobre este asunto, recordé que en la universidad realicé un proyecto relacionado con grafos, en conjunto con Marconi Poveda y Alam Romero para la clase de Matemáticas Discretas, razón por la cual me di a la tarea de desempolvar los archivos personales para compartir el programa y su código fuente, si le es útil a alguien allí está el link de descarga.


"GRAFOS 1.0  es un programa desarrollado en el lenguaje de programación Visual Basic 6.0; cuyo objetivo es resolver el problema de encontrar los caminos de menor peso entre todos los pares de vértices de un grafo no dirigido.

Presentado como proyecto de la clase de Matemáticas Discretas impartida por el profesor Ing. Marvin Castañeda en la Universidad Nacional de Ingeniería (UNI) de Managua, Nicaragua, y llevado a cabo por alumnos de segundo año de la carrera de Ingeniería en Computación durante el mes de Diciembre del 2002."





martes, enero 08, 2013

Cursos gratis "everywhere"!!!

Los cursos en línea y gratis sobre diversos temas abundan en Internet. Estos cursos aprovechan diferentes medios provistos por Internet como: blog, wikis y elementos multimedia como: podcast o vídeos, entre otros.

Hasta no mucho existían únicamente artículos simples que aclaraban dudas puntuales sobre un determinado tema, pero ahora están creciendo espacios con cursos muy formales, creados, organizados y administrados por empresas (que promueven el conocimiento de sus productos), comunidades (entusiastas de diversos temas) o hasta incluso por universidades (que desean compartir el conocimiento).

Las personas con deseos de conocimientos informáticos somos las más beneficiadas, ya que este tipo de materiales son los que más abundan.

A continuación comparto una pequeña lista de sitios Web en los cuales de forma gratuita se pueden aprender de diversos temas, la misma la he recopilado de conversaciones en diferentes listas de correo.

Open Knowledge Scrum: cursos gratis de Scrum (metodología de desarrollo de software), Métricas Agiles y Gestión Visual Kanban.
http://www.scrummanager.net/oks/

Aprende a programar interactivamente: ideal para estudiantes iniciales de programación. Además hay cursos interactivos de HTML, CSS,  JavaScript, jQuery, Python, Ruby.
http://www.codecademy.com

Coursera: un conjunto de universidades de alta calidad y categoría comparten en línea y de forma gratuita diferentes cursos, no sólo informáticos, sino también sobre matemáticas, física, humanidades, entre otros.
https://www.coursera.org/

Además de cursos variados y similares en:

http://www.udacity.com/

https://www.khanacademy.org/

Para complementar los cursos o para extender la investigación probablemente sea necesario conseguir un libro: http://www.flazx.us/

Y si no se sabe inglés estaremos renunciando a buena parte de los espacios mencionados anteriormente, por lo que un reforzamiento del inglés es muy recomendado: http://www.englishclub.com/

Y también están los cursos gratis de Microsoft: http://www.microsoftvirtualacademy.com/ 

Otros enlaces Interesantes:

Biblioteca Digital Mundial (de la UNESCO):
http://www.wdl.org/

UOC OpenCourseWare de la Universitat Oberta de Catalunya
http://ocw.uoc.edu/informatica-tecnologia-y-multimedia/

[Nuevo] Un amigo me ha compartido este otro sitio de cursos de universidades iberoamericanas Miríada X:

http://miriadax.net/


[Nuevo 2]  Google Developers Academy

https://developers.google.com/academy/

[Nuevo 3]
Entorno de formación abierta de la UNED
https://unedcoma.es/

Proyecto Telescopio Universidad Galileo
http://telescopio.galileo.edu/


Walker, una película grabada a pocos metros de mi casa

Tenía tres años en 1987, y recuerdo que en esa fecha estuvieron grabando una película cerca a mi casa. Cortaban la energía eléctrica y encendían grandes faros de luz justo a escasos 50 metros de mi casa, hay varias escenas de la película Walker que se hicieron en la calle Arsenal y en la calle El Enredo en Granada, para aquella fecha habían muchas más casas viejas lo que les permitió tener un escenario bastante real conforme la historia que se contaba en la película.

¿Recuerdan al jefe de vuelo en Apollo 13? El actor Ed Harris, ese mismo hizo el papel de William Walker.

La película no tuvo mucho éxito internacional, pero si recuerdo el montón de gente y vehículos que estaban en la calle para hacer esa película.

¿Reconocen estos lugares de Granada? Todas son imágenes en la película:

Edificio Frente a la Casa de los Tres Mundos o Casa de los Leones - Plaza de la Independencia

Plaza junto a la Catedral y el Parque Central, inicio de la Calle La Calzada (Escena de Quema de Granada)

Final de la calle Arsenal, a la izquierda como a 100 metros mi casa :)

Calle El Enredo, entre las calles Arsenal y Libertad, al fondo el volcán Mombacho

Coche tradicional de Granada en una escena de la película

Plaza Central, al fondo la Catedral (de color blanco)

Plaza Central vista hacia Palacio Episcopal y actual edificio de compañía Claro

William Walker a caballo frente al convento/iglesia de San Francisco

Plaza Central de Granada, junto a Catedral, el Parque Central y el Palacio Episcopal

Antiguo Hospital San Juan de Dios (Hospital Viejo)

¿Y estos otros lugares de Nicaragua les son familiares?

Toma de la Laguna de Apoyo

Palacio Nacional en Managua


Créditos finales


domingo, enero 06, 2013

Ayúdame a respaldar los archivos de mi computadora

- "Ayúdame a respaldar y organizar los archivos de mi computadora...", contesté: si claro, nos conectamos en red, pasamos los archivos a mi computadora y los quemo en un DVD!

Y luego me enseñaron este Escritorio:

Y habían muchos más archivos en Mis Documentos. La meta era remover los archivos repetidos y organizar luego un poco las carpetas.

Primero copié los archivos usando Samba hacia mi computadora, para escanearlos con el antivirus libre ClamAV.

Luego para encontrar los archivos repetidos, encontré una utilidad muy buena en Linux llamada FSlinit - http://www.pixelbeat.org/fslint/

FSlinit está disponible por defecto en Ubuntu, es muy fácil de instalar desde el gestor de paquetes.


Una vez instalado, el programa se puede ejecutar desde el menú Aplicaciones > Herramientas del Sistema > FSlint.

FSlint permite encontrar archivos repetidos o duplicados sin importar su ruta, nombre, fecha de creación o modificación. Al inicio pensé que FSlint funciona como si obtuviera un hash (digamos MD5 o SHA1) del contenido de cada archivo y luego los compara.

Para ponerlo a funcionar, se pulsa el botón Añadir, lo cual permite indicar la o las rutas que examinará el FSlint en busca de archivos repetidos.

Lo que más me impresionó la primera vez que lo usé, fue la velocidad con la que entrega los resultados, supongo que realmente no revisa los archivos, ni calcula hashes sobre los mismos, sino más bien, toma la información que necesita directamente de las tablas de datos del sistema de archivos lo cual lo convierte en un software muy eficiente.



En la parte central de su pantalla muestra la lista de archivos duplicados, su nombre y ubicación. En la parte inferior derecha está el botón Eliminar para borrar el o los archivos seleccionados.

Si  no se desea ir revisando uno por uno los archivos repetidos, se puede usar el botón Seleccionar todos los archivos más nuevos, los más viejos o los primeros de la lista y luego pulsar borrar.

La lista se limpia automáticamente a medida que los archivos duplicados son removidos.



domingo, diciembre 23, 2012

Experiencias Intentando Aprender a Tocar Piano (II)

Espero que en el 2013 si pueda dedicarle tiempo al teclado musical, sin apartarme del teclado de la computadora usando Midi Sheet Music (software libre).

Experiencias Intentando Aprender a Tocar Piano (I)

 

jueves, agosto 16, 2012

Gracias a Dios: Java Standard Edition 6 Programmer Certified Professional

El día de ayer en GueGue centro de pruebas autorizado por Pearson y Oracle puede realizar un examen para el cual estaba en preparación desde hace ya algún tiempo, gracias a Dios todo salió bien, mi primera certificación :)


Espero que esto anime a varios amigos, compañeros y conocidos a que también se preparen y que sientan que ellos también pueden. Gracias a todos por las felicitaciones.

domingo, enero 08, 2012

Contabilidad personal con jGnash

Contabilidad personal con jGnash


El año pasado junto con otros amigos (Hamer y Marconi) nos apuntamos a recibir un curso de Finanzas para no Financieros en la UPOLI.



En ese curso aprendimos un poco de contabilidad por partida doble, activo, pasivo, capital, etc. Luego intentando implementar los conocimientos recién adquiridos y llevar control de mis finanzas personales busqué un software libre que me asistiera, así encontré: jGnash.


jGnash según Wikipedia:

jGnash es una aplicación libre de gestión de finanzas personales programada en Java.

Entre sus principales características destaca:

- Está basado en transacciones de partida doble (debe y haber)
- Cuenta de ajuste o reconciliación
- Generación de informes o reportes en PDF
- Soporte para múltiples monedas
- Actualizaciones automáticas en línea de tasas de cambio de monedas
- Catálogo de cuentas personalizable
- Interfaz de usuario amigable
- Multiplataforma, es ejecutable en cualquier plataforma que soporte Java (linux y windows)

Su sitio Web, desde el cual se puede encontrar más información o desde el cual se puede descargar, es:

http://sourceforge.net/apps/mediawiki/jgnash/index.php?title=Main_Page

Instalar jGnash

1- Descargar la última versión de jGnash de su sitio Web.
2- Descomprimir el zip

Ejecutar jGnash y crear una nueva base de datos

Desde una consola ejecutar el jar de la siguiente manera (en windows se puede hacer doble clic sobre el ejecutable):

denis@host:~/jGnash$ java -jar jgnash2.jar

Seleccionar del menú Archivo, la opción Nuevo. Y en los siguientes pasos es necesario indicar la ruta y el nombre del archivo a crear, moneda por defecto, otras monedas a ser soportadas, aunque luego se puede ajustar esta configuración, al final se selecciona el catálogo de cuentas inicial que es posible también personalizar.

Ruta y nombre del archivo:


Moneda por defecto de las cuentas:



Seleccionar otras monedas a soportar:


Los catálogos de cuentas disponibles por defecto están en inglés, pero el usuario luego puede crear el suyo propio en español.



Al finalizar ya se tiene un archivo con el catálogo de cuentas inicial y sin ninguna transacción.

Ejercicio simple con jGnash

1. Suponer que a la fecha se tiene una cuenta de ahorro en un banco, con C$ 10,459.45 córdobas
2. En mi cartera del pantalón tengo C$ 350.00 córdobas
3. Suponer ingresos mensuales en concepto de salario de fin de mes por C$ 4,000.00 en 3 meses, estos son depositados al banco.
4. Cada 15 de mes retiro el 75% del salario y ahorro el 25%.
5.En el primer mes he gastado C$ 110.00 córdobas en recargas al celular, en el segundo mes C$ 55.00 y en el tercero C$ 20.00 los cuales pago con cash.
6. Suponer que en el primer mes fuí al cine y pagué C$ 65.00 córdobas con la tarjeta de débito de la cuenta bancaria
7. Generar los informes siguientes para el período registrado: patrimonio o capital neto, balance general, y el estado de resultados o pérdidas y ganancias.

La contabilidad por partida doble, se basa en que el dinero que entra debe haber salido de algún lugar, y el dinero que sale debe entrar en algún lugar. "No hay deudor sin acreedor, ni acreedor sin deudor", entendiendo este principio es fácil usar jGnash.

Para este ejemplo, en el punto número 1 para que en el banco (cuenta Saving en jGnash) ingresen (o se depositen) los C$ 10,459.45 córdobas iniciales de este conteo, es necesario que ese mismo monto salga de otra cuenta (contracuenta), la contracuenta para este punto es básicamente lo que los contadores llaman el balance de apertura o capital inicial (cuenta Opening Balances en jGnash).

Con el botón Registro de la izquierda de la pantalla activada, seleccionar la cuenta Opening Balances, en la parte derecha hay 4 fichas Disminución, Aumento, Transferencia y Ajuste, evidentemente estamos aumentando el capital inicial por lo que es necesario seleccionar la ficha Aumento, el siguiente paso importante es seleccionar la contra cuenta, o sea donde se va depositar el dinero, en este ejemplo en la cuanta de bancos (Savings), luego colocar una breve descripción de la transacción, completar la fecha y el monto:



Dado que se utiliza partida doble, es posible seleccionar la cuenta Savings, para verificar que en efecto el banco tiene un depósito de C$ 10,459.45 córdobas.



Vale destacar que el registro de la transacción no necesariamente tenía que realizarse desde la cuenta Opening Balances, sino que también se pudo haber realizado desde la cuenta Saving y seleccionar como contra cuenta Opening Balances sin alterar el mismo resultado.

El punto número dos del ejemplo también corresponde con un balance de apertura de la caja chica, cash, o en finanzas personales mi cartera. Se puede registrar igual que antes, usando las cuentas Opening Balances y Cash:



Punto número 3, suponer ingresos mensuales en concepto de salario de fin de mes por C$ 4,000.00 en 3 meses, estos son depositados al banco.

Para este ejemplo suponer que cada fin de mes se depositan 4000 en la cuenta Saving, este dinero debe ingresar por algún lado, es evidente que debe ingresar por la cuenta Salary del grupo Income Accounts.



Es fácil usar jGnash como registrador de transacciones contables. En otro momento comparto el ejercicio resuelto completamente.

domingo, diciembre 11, 2011

78.57% en el simulador del examen SCJP - 1.6 de CertPal

78.57% en el simulador del examen SCJP - 1.6 de CertPal


Yupi!

Me tomó un poco más de dos horas, 70 preguntas. Resultado: 15 fallas. Lo que resulta en 78.57%, y según la web de Oracle se pasa con 61% con 60 preguntas [1] lo cual significa que ya casi estoy listo, ahora a dar los últimos retoques...



Esta es la web del simulador:

http://www.certpal.com/ExamWeb/content/logon.do


[1]
http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=41&p_exam_id=1Z0_851

jueves, diciembre 08, 2011

Ejecutar aplicaciones X-Windows en Microsoft Windows sobre SSH hacia GNU Linux

Ejecutar aplicaciones X-Windows en Microsoft Windows sobre SSH hacia GNU Linux


Para cualquier administrador de servidores GNU Linux, hacer administración remota vía SSH es básico para poder controlar de manera remota un servidor. El método más común para esto es usando un servidor SSH y un cliente SSH.

SSH en modo básico permite tener una terminal de comandos remota desde la cual se puede ejecutar cualquier orden (comando, o programa) en el servidor siempre y cuando no se requiera de modo gráfico (X-Windows).

Por ejemplo (de Linux a Linux) para conectarse como el usuario denis en el computador servidor.local se puede hacer:

denis@tamagastad:~$ ssh denis@servidor.local
denis@tamagastad's password:
Welcome to Ubuntu!
Last login: Sat Oct 29 19:30:32 2011
denis@servidor.local:~$

Pero si se requiere lanzar una aplicación en modo gráfico, por ejemplo gedit, se obtendrá un error como este:

denis@servidor.local:~$ gedit

(gedit:25468): Gtk-WARNING **: cannot open display:

Pero si del lado de nuestro cliente SSH ya tenemos un servidor X.Windows corriendo en nuestro Linux (nota: si ya tenemos Gnome o KDE, significa que ya tenemos un servidor X-Windows funcionando) al momento de realizar la conexión SSH con el servidor se puede habilitar X11 forwarding mediante el parámetro -X.

denis@tamagastad:~$ ssh -X denis@servidor.local

Y esto permitirá que se ejecute cualquier aplicación gráfica en el servidor, usando nuestro entorno gráfico local, se puede agregar al final de la invocación del programa un & para que la consola no quede capturada:

denis@servidor.local:~$ gedit &

Ok, todo esto muy bien, pero funciona de Linux a Linux, ¿qué hacer cuando queremos que un usuario con Microsoft Windows ejecute una aplicación con entorno gráfico en el servidor linux? Un cliente SSH no basta, ya que sólo permite acceso a aplicaciones de consola o terminal.

Para esto es necesario instalar un servidor X-Windows en Microsoft Windows y establecer una conexión SSH con X11 forwarding. De esta manera se puede usar MS Windows como una terminal tonta que sólo se encarga de la presentación de las aplicaciones que se ejecutan en un servidor Linux.

Xming es un Servidor X para Microsoft XP/2008/Windows7, yo bajé "Xming-6-9-0-31-setup.exe" gratis de la web oficial de Xming en:

http://www.straightrunning.com/XmingNotes/

PuTTY es un conjunto de programas que permiten entre otras cosas acceder por SSH desde Microsoft Windows a un servidor SSH, he bajado "putty.zip" de la web oficial de PuTTY en:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


Proceder a instalar Xming:


Lanzar la aplicación:

O usar el menú Inicio > Todos los Programas > Xming > Xming y se observará en la barra de tareas un icono que dice Xming Server:0.0

Luego descomprimir putty.zip y ejecutar PUTTY.EXE, antes de realizar la conexión SSH con el servidor, asegurarse de habilitar en putty el redireccionamiento del X11, en el árbol de configuración de la parte izquierda Connection > SSH > X11:



Seleccionar la opción Enable X11 forwarding, y en el cuadro de texto X display location escribir localhost:0 el cual corresponde con la dirección del servidor X Windows XMing recién instalado en MS Windows.

Luego en el árbol de configuración, en la opciones Session es posible establecer una conexión SSH especificando el IP o el nombre de dominio del servidor junto a su puerto.



Putty pregunta el usuario y contraseña:



Si nos conectamos bien, desde la consola de putty es posible ejecutar programas como:

nautilus &
gedit &
evice &

O cualquier programa con interfaz gráfica y el X Server de Windows mostrará esa interfaz usando como Windows Manager el entorno de MS Windows.