Entradas

Mostrando las entradas etiquetadas como PROGRAMACION

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,...

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...

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 ...

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 " > ...

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...

Cargue de un archivo a FTP con Java

Continuando con el tema de FTP y Java tratado en el articulo anterior, ahora vamos a cargar un archivo al FTP con la misma librería commons.net try { String ls_directorio = "archivos"; ftp.connect( IP_FTP ); if (!ps_usuario.equals("") && !ps_password.equals("")){ ftp.login( USUARIO_FTP ,  PASSWORD_FTP ); respuesta = ftp.getReplyCode(); if (respuesta == 230){ ftp.setFileType(FTP.BINARY_FILE_TYPE); ftp.changeWorkingDirectory(ls_directorio); respuesta = ftp.getReplyCode(); if (FTPReply.isPositiveCompletion(respuesta) ){ File archivo =  new File("Ruta del archivo a cargar"); boolean ret_cargue = ftp.storeFile(archivo.getName(), new FileInputStream(archivo)); b_retorno = ret_cargue; } } } }  catch (Exception ex) { } finally { try { ftp.disconnect(); } catch (IOException ex) { } } He agregado varias comprobaciones, como que la contraseña no sea vacia y dos especiales : ...

Descarga FTP desde Java

Imagen
Hoy vamos a ver como descargar un archivo de un servidor FTP desde Java. El proceso requiere de la libreria apache commons .net (no crean que es el .net de microsoft...)  se descarga de la direccion:  http://commons.apache.org/net/download_net.cgi  . Lo que se descarga es una librería que tiene varios paquetes, entre ellos vamos a usar  org.apache.commons.net.ftp.FTP ,  org.apache.commons.net.ftp.FTPClient ,  org.apache.commons.net.ftp.FTPFile . La descarga del archivo se hace de la siguiente manera: public File getArchivoFTP(String nombreArchivo) { File f_retorno = null; FTPClient ftp = new FTPClient(); int respuesta; String ps_ip = this.IP_FTP; String ps_archivo = nombreArchivo; String ps_usuario = this.USUARIO_FTP; String ps_password = this.PASSWORD_FTP; try { // establecer conexion String ruta_pdf_local = this.RUTA_DESTINO; ftp.connect(ps_ip); if (!ps_usuario.equals("") && !ps_password.equals("")) { ...

SOA... Una arquitectura orientada al servicio

Imagen
He empezado a hacer una recopilación de la arquitectura SOA, para al final hacer una implementación en la empresa que trabajo; prometo compartir la experiencia a medida que la misma vaya evolucionando. Por ahora llevo esto: Definición: SOA es un concepto de arquitectura de software que define la utilización de servicios para dar soporte a los requisitos del negocio. La Arquitectura Orientada a Servicios es un soporte arquitectónico de tecnologías de información que ayudan en la transformación de la empresa en un conjunto de servicios vinculados que pueden ser accedidos a través de una red. La combinación de una implementación SOA y los objetivos empresariales estratégicos aseguran los siguientes beneficios: Alineación de la TI (Tecnología de la Información) a los negocios Re utilización máxima de los activos de TI Beneficios de la implementación de una arquitectura SOA: Se clasifican en cinco puntos de entrada de los beneficios. Personas: SOA enfoca al usua...

ncurses... de vuelta al inicio

ncurses Es una librería escrita en C++ que tienes sus raíces en la antigua librería conio.h de C++, la cual se usaba para crear interfaces a los programas en C y C++. Lo admito, no sabia que existía, y con el auge de las ventanas y el html ni se me pasaba por la mente usarla en algo... pero la curiosidad me llamo la atención, porque para mi ese tipo de software de consola es de los mas estables y compatibles.. para un ejemplo esta  Midnight Commander [MC]   que es un manejador de archivos en modo consola. Sobre ncurses encontre este tutorial para empezar muy bueno, el cual recomiendo para los que deseen realizar software sencillo, liviano y que no sea devorador de recursos, fue echo por  Carles Pina y se encuentre en: http://bulma.net/body.phtml?nIdNoticia=2004 Otro tutorial interesante y mas completo se encuentra en  http://gluc.unicauca.edu.co/wiki/index.php/Programaci%F3n_con_Ncurses y fue hecho por  Wil...