Entradas

Universal Basic Income

  TOPIC 1 Universal Basic Income The Universal Basic Income is defined as a basic income for all people in age to work without care if are working or not. Although is a good idea, exist some people that approve and another than disagree. The people who agree think it is a good idea that will help people cover her basic needs. The income could yield more free time to spend wherever they want, such as in study, sport, or even another job; those thoughts or ideas could bring dynamism to the economy by providing some money to all the population that they will spend on things or services. In other matters, the people against the Universal Basic Income think that this income could weaken the economy. If the people had a basic income and did nothing, they would be doing things that the markets don't want or that society doesn't need at this moment. This can contract the economy and reduce productivity since the things that need to be produced won't be produced, increasing the pric...

Starting blog

This is an experiment to start practicing English by writing a blog about some things that have happened to me in the past and some things to do in the future. Please feel free to make any spelling or grammatical corrections. 

Guia de Estilo AngularJS

Version original:  https://github.com/johnpapa/angularjs-styleguide Responsabilidad Única: Regla de 1 Definir un componente por archivo. Los siguientes ejemplos definen el modulo "app" y sus dependencias, define el controlador y un "factory", todo en el mismo archivo: /* Evitar */ angular .module('app', ['ngRoute']) .controller('SomeController', SomeController) .factory('someFactory', someFactory); function SomeController() { } function someFactory() { } El mismo componente, ahora separado en archivos Archivo: app.module.js /* recommended */ // app.module.js angular .module('app', ['ngRoute']); Archivo: controlador1.js /* recommended */ angular .module('app') .controller('SomeController', SomeController); function SomeController() { } Archivo factory1.js // factory1.js angular .module('app') .factory('someFactory', someFactory...

Outlook no encuentra correos

Hola, este es un caso típico de las locura de Outlook. Estuve durante varios meses buscando la forma de que Outlook me busque correos, incluso teniendo las opciones de indexación de los PST los OST activas, nunca me encontraba correos, ni recién recibidos ni los mas antiguos. El problema se presenta con mayor incidencia con las cuentas relacionadas con Exchange, y todos los tutoriales o soluciones dicen que debe tener activa la opcion de "Intercambio de Cache" pero en mi caso esto no funcionó, fue todo lo contrario. Cuando desactivé la función "Intercambio de cache" empezó a buscar algunos correos, y cuando le quite la indexacion con el windows search, ahí empezó a buscar todos los correos. Se demoraba mas pero los encontraba, cosa que no pasaba con la indexacion normal. Mi plataforma es windows 7 con Office 2010. PD: Probé con office 2013 y tiene el mismo inconveniente. No he probado si la solución también aplica, pero debería. 

Leer cantidad paginas - imagenes TIFF en C#

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Collections; using System.ComponentModel; using System.Data; namespace ContadorPaginasTIFF { class Program { static void Main(string[] args) { string ruta1 = "F:\\archivosTIFF\\"; string[] archivos1 = Directory.GetFiles(ruta1); long cantidad_imagenes = 0; Image tiffImage; Guid objGuid; FrameDimension dimension; Console.WriteLine("cantidad archivos: " + archivos1.Length); foreach (string archivo in archivos1) { Console.WriteLine("Imagenes: " + cantidad_imagenes); tiffImage = Image.FromFile(archivo); objGuid = tiffImage.FrameDimensionsList[0]; ...

Crisis

Tomado del diario chileno "El Definido"  http://www.eldefinido.cl/actualidad/plazapublica/1863/Por_que_Venezuela_no_tiene_papel_higienico/ Hace un tiempo, recién asumido el Sr. Maduro como reemplazante del malogrado Hugo Chávez a la cabeza de Venezuela, el país tropical hizo noticia por un hecho bastante poco glamoroso: sus habitantes hacían largas filas para conseguir un bien que no solemos considerar un lujo: el papel higiénico. Hace unos días, Venezuela volvió a las noticias producto de las manifestaciones de algunos  estudiantes hastiados de la inseguridad, que ha escalado a un movimiento nacional, que ahora reclama además por la alta inflación (56%) y la escasez de productos básicos, entre otros problemas. No sé ustedes, pero al escuchar esas noticias, no pude evitar preguntarme:  ¿Cómo llega uno de los mayores productores de petróleo del mundo, a quedarse sin un insumo tan básico como el papel higiénico? Una historia que se repite La verdad es qu...

Conectar Nodejs y Django u otro backend

Hola, Encontré la forma de conectar un servidor hecho en Node.js con algún backend que nos devuelva cualquier tipo de datos. Para mi proyecto necesitaba que Django me devolviera Json a Node.js para poder realizar tiempo real con Socket.io y el cliente; asi que despues de mucho buscar (pasando incluso por jsonp callback) encontré una libreria de mikeal que esta especializada en eso: traer datos de otro servidor por medio de la url: var request = require('request'); request('http://IP:PUERTO/ecg/pacientes', function (error, response, body) { if (!error && response.statusCode == 200) { hacerLoQueSeaConLaRespuesta( body ); } }); La libreria esta en  https://github.com/mikeal/request  se llama request y se instala en node con npm install request Saludos

Trucos Android Eclipse

Hola, en esta entrega les cuento que he estado tocando el tema de desarrollo de móviles con Android; y aunque los IDE's ayudan mucho, todavía tienen ciertos bugs que obligan a realizar ciertos movimientos para que la cosa funcione. Eclipse es el que mejor ha manejado el workflow del desarrollo sobre móviles, pero aun asi, tiene unos trucos que cuando se esta empezando, es complicado adivinar que se tiene que hacer para que funcione, aun cuando aparentemente no hay error alguno. Clean: el comando clean es necesario para volver a realizar una compilación limpia del proyecto y empaquetar todo de nuevo en un apk. Eclipse muestra la carpeta bin que es donde pone el resultado del build; esta se borra en su totalidad con clean y se llena de nuevo con el comando build proyect o si esta activado automáticamente lo hará.  Cada vez que modifiques una clase o una configuración en xml de los layouts o widgets, es mejor hacer un clean. Build: es común que cuando uno realiza el build,...

Lógica de negocio en Base de datos o Java

  En el desarrollo de software surgen muchas dudas, una de ellas me hizo reflexionar el siguiente planteamiento: Lógica de negocio en la base de datos: por lógica de negocio se entiende las reglas y la manipulación de los datos para proveer un resultado esperado. La ubicación de esta lógica supone varias ventajas: Lógica centralizada: la lógica esta centralizada y no importa el cliente que intente accederla, siempre va a ser la misma, con un mismo lenguaje SQL. Velocidad: al tener los datos en el mismo motor que ejecuta los procedimientos, se evita el ir y venir entre el servidor web o cliente y la base de datos por datos a procesar. Actualización: al estar centralizada, un cambio en la lógica actualiza todos los clientes que la utilicen, sin importar la plataforma. También supone ciertas desventajas: Difícil de mantener: Trabajar con SQL es como trabajar con Cobol, es programación procedimental en su gran mayoría; agregar una nueva funcionalidad podría suponer revisar m...

Swing Multihilo ProgressBar indeterminate

El anterior ejemplo se utilizo SwingWorker para hacer un llamado a un procedimiento que se demora mucho y de paso no bloquear la interfaz y poder actualizar. Este funciona bien pero por alguna razón no me funcionó igual cuando quería utilizar el progressbar de modo indeterminate. (.setIndeterminate(true)) así que encontré una forma de hacerlo y es en vez de extender el objeto de trabajo de Thread se extiende de SwingWorker, con esto, sobreescribiendo el metodo doInBackground el SwingWorker se encargaría de actualizar la interfaz sin bloquearla. public class Procesar extends SwingWorker { @Override protected Object doInBackground() throws Exception { barra.setIndeterminate(true); // proceso con duración indeterminada barra.setIndeterminate(false); return "Hecho."; } } } Lógicamente el llamado a dicha clase cambia y ya se ejecutaría con run() sino con execute() ...

Swing netbeans multihilo con barra de progreso

Con este ejemplo podemos usar una barra de progreso en Netbeans, los controles se pueden dibujar y cuando necesitemos procesar algo que consuma tiempo lo podemos mostrar con la barra de progreso desde esta clase     static class HiloDeLaBarra extends Thread {         private static int RETARDO = 500;         JProgressBar Barra;                     // Constructor         public HiloDeLaBarra(JProgressBar barra) {             Barra = barra;         }         // Subrutina que incrementa la barra de progreso         public void run() {             int minimo = Barra.getMinimum();             int maximo = Barra.getMaximum();                         ...

Borrar Filas Duplicadas

Siempre es bueno tener una llave única en las tablas del sistema; pero en algunos casos, cuando las llaves son autonumericas o no tiene llave, las inserciones se pueden volver un problema cuando los registro son repetidos y no hay forma de identificar uno del otro, sino solamente por la autonumerica o por el rowid. Puedes eliminar los registros uno a uno, o con uno de los siguientes script’s: Borra todos los registros que no esten en los minimos de la misma tabla. DELETE FROM departamento WHERE rowid NOT IN (        SELECT MIN(rowid)           FROM departamento d       GROUP BY D.departamento_id ) Similar a la anterior, pero sin el NOT IN DELETE FROM departamento A WHERE ROWID > ( SELECT min(rowid) FROM departamento B WHERE A.departamento_id = B.departamento_id); Ahora con Exists DELETE FROM departamento A WHERE EXISTS ( SELECT ‘x’ FROM departamento B WHERE A.departamento_id = B.departamento...

Teletrabajo

Ya existe en Colombia una ley que reglamenta el teletrabajo con las mismas garantías de un trabajador presencial; este es un resumen del reglamento: Abc del teletrabajo

Encontrar el 2do o N valor mas alto o mas bajo

Es fácil encontrar el valor mas alto o mas bajo de una consulta de datos con las funcionas max() y min(); pero cuando se necesita el segundo o tercer valor mas alto, la cosa cambia un poco, de esta forma: select id from (select rownum r, id from trabajo order by id desc) where r=2; De esa forma tendremos la consulta ordenada de forma descendente pero tomando a partir de la fila 2.

Grouping Sets Oracle

Grouping Sets es una extension del Group By, esta permite crear cortes de agrupaciones en un listado de datos agrupados; por ejemplo, si queremos totalizar una consulta por departamento y trabajo, grouping sets haria un corte cada vez que cambie uno de los campos segun el orden que sean escritos y totalizaria lo que lleva hasta el momento. Dichas columnas de agrupacion seran nulas y el campo de agrupacion del select sera el totalizado: SELECT fact_1_id, fact_2_id, fact_3_id, SUM(sales_value) AS sales_value, GROUPING_ID(fact_1_id, fact_2_id, fact_3_id) AS grouping_id FROM dimension_tab GROUP BY GROUPING SETS((fact_1_id, fact_2_id), (fact_1_id, fact_3_id)) ORDER BY fact_1_id, fact_2_id, fact_3_id; FACT_1_ID FACT_2_ID FACT_3_ID SALES_VALUE GROUPING_ID ---------- ---------- ---------- ----------- ----------- 1 1 4363.55 1 1 2 4794.76 1 1 3 ...

Volviendo a Linux

  Hace un tiempo había cambiado el Ubuntu 11.10 a windows xp, esperando que fuese mas rápido, pero con un portátil de 1Gb de Ram y un Celeron a 1Ghz (o 1.2 no me acuerdo), después de instalar todas las aplicaciones necesarias, este se puso mas lento que el mismo Ubuntu, así que se me dio por pasarlo a windows 7, (también me habían dicho que era mas eficiente con los recursos…) pero al final siguió igual de lento; así que espere a que saliera Ubuntu 12.04 LTS (LTS significa Long Term Support, es decir, una versión con soporte de larga duración), pero esta vez no me aventure a instalar Ubuntu con unity, sino que baje Kubuntu, y hasta ahora esta corriendo fluido, incluso sin instalarle el paquete “kubuntu-low-fat-settings” el cual cambia la configuración de KDE para hacerlo mas liviano; hice esta prueba cuando tenia Ubuntu 11.10 con escritorio KDE, funcionó a la perfección,  el escritorio es mas liviano para equipos viejitos; pero la recomendación es si van a usar KDE instalen ...

Encabezado Fijo ( con jquery )

Anteriormente había escrito un articulo sobre como mantener el encabezado fijo en el un tabla html con css; ahora he encontrado un plugin de jquery que permite hacerlo de forma mas facil: 1. Se descarga de:  http://www.tablefixedheader.com/download/ 2. Se vincula en la pagina donde esta la tabla que vas a fijar el encabezado: <script src="/js/jquery.fixheadertable.min.js" type="text/javascript"></script> 3.  Se llama al plugin con los siguientes parametros: $('#miTabla').fixheadertable({ caption : 'Titulo de la tabla', colratio     : [80, 90, 90, 90], // medidas del ancho de cada columna resizeCol         : true,  // se puede cambiar el tamaño de la columna minColWidth : 80 , height   : 400, showhide       : true // esto es para ocultar o mostrar los datos con un clic }); A petición de un lector: < table id = " miTabla " > ...

Ley Lleras

Imagen
Preocupante...

Pilas C++ !!

Pilas en C++: Hace poco me llego una "barbacha" (Barbacha: dicese del trabajo freelance, pequeño, temporal en donde el precio es mas regateado que una película en San Bazar..), esta consistía en realizar un programa en C++ que determinara si una palabra es palindrome (palabra que se lee igual al derecho y al revés). Para desarrollarlo use code::blocks ( http://www.codeblocks.org/ ), un ide para C++ que me ha parecido excelente, ademas de ser multiplataforma. Una pila es un tipo especial de lista enlazada de la cual solo se puede insertar y eliminar elementos en uno de los extremos de la lista. Imaginemos una lista enlazada como un tren, en donde cada vagón lleva su carga y tiene un enlace al siguiente vagón. Por lo tanto un nodo de la lista tendria un campo de valor y en C++ un puntero hacia el siguiente nodo(vagón). class nodo{ // metodos publicos: son los que se acceden desde otros objetos     public: // inicial...

Comprimir en linux [Terminal]

Estoy usando Ubuntu 11.10, vengo usándolo desde la 10.04, y lo cambie porque cuando compre mi portátil Vostro 1500 venia solamente con 1Gb de Ram y la tortura de Windows Vista, con ese sistema operativo y esa memoria solamente podía ejecutar notepad, y eso que parte se va para la virtual... pero en otra entrada daré mi análisis sobre esta versión de Ubuntu, por ahora voy a colocar como comprimir desde linux. Creo que esto aplica a casi todas las distribuciones.  Es interesante ver cual es el mejor comprimiendo una carpeta de 450 megas entre archivos comprimidos, paginas jsp, js, imagenes, y clases: Para comprimir un directorio  en (*.tar.gz) : Comprimir: tar -cvf archivo.tar.gz /directorio/ Descomprimir: tar -xvf archivo.tar.gz -c  : indica a tar que cree un archivo. -v  : indica a tar que muestre lo que va empaquetando. -f  : indica a tar que el siguiente argumento es el nombre del archivo compr...