Every day I was programming a module to get of a FTP File Server a Gzip Compressed File of a sqlite database file that have 10Mb size and compressed have 2.5Mb size.
For make it this I did the following: Operating System: Server: Ubuntu Linux Server Client: Windows Mobile 2005 Hardware: MC70 Symbol Technologies Terminal HP iPaq RX3715 Network Connections: MC70:GPRS-Telcel iPaq RX3715: WiFi 802.11b FTP Server: PureFTPd Programming language: C# Library to uncompress: ZlibCE Linux Application to compress: gzip Problem:
My problem was than I had to get a SQLite Database File (near of one hundred thousands records in thirtyfive tables) of a FTP File Server by mean GPRS to one hand held MC70 of Symbol Technologies.
The GPRS connection in México is offered by Telcel & Movistar, but at south of Veracruz State the GPRS connection only is available by Telcel. The GPRS Provider in México offer plans of 50Mb BandWidth for $ 55.00 dlls + 15 percent of tax, then to download my DataBase File of 10Mb file size is the 20% of BandWidth Limit, this indicate tha only I could to download five times to the month. To resolve this Problem that represent money for the company, I did use zlib, an Open Source library compression. Using Zlib with gzip in Linux I can to diminish of 10 Mb to 2.5Mb file size, and in the terminal I can download this file by mean of OpenNetCF.Net.Ftp and Uncompress the file with ZlibCE Library, therefore I saving seventy five percent of bandwith.
In linux you can to create a GZIP File with the following command:
gzip-c MyFile.txt > MyFile.gz
And you can to add more files to your gzip file created :
gzip-c MyOtherFile.txt >> MyFile.gz
And you can to develop a program in C# to uncompress the Gzip File
using System;
using System.Text;
using System.IO;
using OpenNETCF.Compression;
namespace zlibSampleCS {
class Program { staticvoid Main(string[] args) {
UncompressGZFile(@"\Application\zlibce.gz", @"\Application\zlibce.dll"); }
You will need zlibce.dll installed in the directory of your application and also OpenNetcf.Compression.ZlibCE.dll, this dynamic libraries you can get from http://OpenNetCF.com/zlibce/
If You can to get more info you should to visit OpenNetCF Site[http://www.opennetcf.org]
Note: if you see some error of grammar in my writing, put a post and correct to me please.
El fin de semana pasado fuí a la Ciudad de México a cambiarme de depto, ya que necesitaba cambiar de aires y dar un paso hacia adelante y el tropezón que di hace 2 años, dejarlo en el pasado y tomar ese paso hacia atras como parte de la experiencia.
El sábado mi hermana y yo nos la pasamos empacando las chunches, el domingo en la mañana salí a buscar una mudanza, ubiqué una cerca en Plutarco Elías Calles y Eje 5, "Mudanzas Iztaccihuatl", era la tercera vez que hacía una mudanza por lo que pensé que me cobrarían unos 1,500 pesos por los pisos y cantidad de chunches, me hicieron la cotización y me dijeron 1,200 pesos sin dudarlo dije va!, llegaron al depto 1 horas despues, subieron al depto, vieron las chunches, pero por unos problemas con el tránsito en la calle ya que bloqueaban el paso bajaron a mover su camión, bajé con ellos, ví que se fueron, pensé que darían la vuelta a la manzana para estacionarse nuevamente, pero pasó 30 mins y no regresaban, los vecinos como siempre de "curiosos" preguntando y la mudanza ? que pasó ?, sin darle importancia subí al depto, esperando inocentemente su regreso, imaginando que irían por cuerdas para volar las cosas o un camión menos grande, pero ya casi las 15:00 p.m y con hambre salgo con mi hermana a comer algo y nuevamente a buscar alguna mudanza, despues de un delicio caldo de gallina -tradicionales en cualquier colonia del D.F.- buscamos en los tianguis un servicio pero sin suerte, porqué cuándo los necesitas es cuándo menos se aparecen y cuándo no, ves anuncios por doquier, por lo que ya cansados regresamos al depto.
El lunes mi hermana se va a la escuela, yo tenía que ir a la oficina y en la noche regresar a Cd. Lerdo pero por el fracaso del día anterior, me dedico a buscar un servicio, despues de andar un rato tengo suerte al hallar un servicio de mudanza por Eje 3 ote y Av. Apatlaco, -se los recomiendo rápidos, cuidan tus chunches y no se atemorizan como los de Transportes Iztaccihuatl- por lo que a las 2 pm llegan al depto y con cuerdas empiezan a volar todo desde el 4 piso en hora y media ya todo estaba en el camión, nos dirijimos al nuevo depto, pero sobre Congreso de la Unión que se descompone su camión por lo que despues de 30 mins, con lluvia, el tránsito y los recordatorios de los automovilistas por fin pudimos continuar despues de la talacha del "may", llegamos al depto y en 30 mins ya habíamos descargado todo, el nuevo depto está en planta baja por lo que fué menos complicado. Por eso aquí están los 5 puntos para hacer una mudanza
Si puedes haz una lista de todo lo que vas a transportar, incluso hasta las bolsas para que no te pongan pretextos y te quieran cobrar demas.
Baja un mapa de la Guia Roji de tú antiguo y nuevo depto para que los transportistas tengan una idea y tú también, así no anden dando vueltas a la manzana preguntando dónde está la calle de tú nuevo depto.
Si tienes un Tel o una PDA con cámara toma algunas fotos de lo que se llevaran, las cajas, las escaleras por dónde bajaran, y no haya pretexto de que no les dijiste
Siempre pideles un tel a los de la mudanza, por si les da web@ bajar tus chunches, rompen algo, etc. por lo menos puedas hablarles para recordarles su... falta de compromiso.
No se te olvide la cinta canela, así por lo menos tienes como sellar las cajas y no salgan volando tús chunches..
Extra:Revisa que vaciaste el agua del refri o de la lavadora, por si vuelan tús cosas de un 4 piso no se vaya a mojar el we de la mudanza
Pongo a su disposición una bitácora que he documentado de cómo configurar un servidor FTP seguro en Ubuntu Linux instalado desde las fuentes con PureFTP [pureftpd.sourceforge.net/]
#cambiamos al directorio de instalación cd/usr/src #obtenemos el archivo de internet sudowget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.21.tar.gz #descomprimimos el paquete del servidor pure-FTP sudotar-xzvf pure-ftpd-1.0.21.tar.gz #accedemos al servidor cd pure-ftpd-1.0.21 #configuramos la compilación del servidor incluimos puredb en la compilación para usar usuarios virtuales sudo ./configure --with-puredb # preparamos la compilación sudomake #revisamos la compilación sudomake check #instalamos el servidor sudomakeinstall #limpiamos los archivos de instalación sudomake clean #si usan un parche en el kernel de GR Secutity, localizamos y parchamos el binario si es que usa la librería libcrypto #localizamos el binario de pureftp whereis pure-ftpd #parchamos sudo chpax -m/usr/local/sbin/pure-ftpd #copiamos el archivo de configuación demo sudocp configuration-file/pure-ftpd.conf /etc/ #configuramos algunos valores sudo emacs /etc/pure-ftpd.conf #Evitar que un usuario pueda usar un directorio diferente a su home configurado
ChrootEveryone yes #evitar que usuarios anónimos suban archivos al servidor FTP
AnonymousCantUpload yes #desactivar conexiones anónimas
NoAnonymous yes #Si usará usuarios virtuales descomentar lo siguiente
PureDB /etc/pureftpd.pdb #si usará encriptación TLS descomentar
TLS 1 #configuramos los permisos del script de ejecución sudochmod755 configuration-file/pure-config.pl #creamos la cuenta del usuario ftp sudo groupadd ftpgroup sudo useradd -g ftpgroup -d/dev/null -s/etc ftpuser #inicializamos el servidor sudo ./configuration-file/pure-config.pl /etc/pure-ftpd.conf & #Si hubiera un error con la opción Y, comentar en el archivo de configuración la opción de TLS #creamos un usuario virtual sudo pure-pw useradd demo -u ftpuser -d/home/ftpusers/demo #nos pedirá su password correspondiente, repetirlo 2 veces
Password:
Enter it again: #comando para cambiar el password del usuario virtual del servidor FTP configurado
pure-pw passwd demo #Aplicamos los cambios efectuados sudo pure-pw mkdb
Se Puede usar un cliente como CoreFTPLite para conectar al servidor de una manera segura.
Ó también puedes usar el mejor navegador de internet Mozilla Firefox e ingresar la siguiente URL ftp://usuario:clave@servidor.com.
Pregunta: Cuál es la diferencia entre una conexión Pasiva y una conexión Activa en un servidor de FTP ?
Despues de llevar 1 mes aquí en Cd. Lerdo de Tejada Veracruz y ya apunto de finalizar el proyecto, por fin se me hizo conocer un hermoso lugar el fin de semana pasado, Playa Roca Partida una Playa ubicada al Sur del Estado de Veracruz acompañado de amigos agradables Andres, Diana, sú mamá, su amiga Viri y Luisito.
Desafortunadamente en el transcurso de mi estadía aquí en Cd. Lerdo no se me hizo ir al Carnaval de Veracruz, mucho menos ir a los toros en Tlacotalpan o la fiesta de los brujos en Catemaco, pero valió mucho la pena disfrutar de un virgen paisaje de la naturaleza que dejo plasmado en las siguientes imágenes. Algunas fotos Aquí en mi Flickr
Y un video, mal grabado, pero bueno ! peor es nada..
Pongo a su disposición un Script en PHP que permite exportar archivos CSV a una Base de Datos de SQLite.
Objetivo:
El fin de este script es exportar cualquier archivo CSV, con cualquier longitud de campos y cualquier numero de registros a una tabla específica de SQLite.
Limitantes:
No valida la información contenida dentro del archivo CSV, solo realiza inserts. Pueden implementar alguna función que haga la validación.Pueden descargar el script del Siguiente URL.PHPCSV2SQLite
O directamente desde Source Forge Historia:Este script fué implementado para incorporarlo en un sistema de captura de datos para terminales móviles.Requería extraer 35 tablas de una Base de Datos Legacy y Propietaria con cerca de 100,000 registros en total, por lo que solo era posible extraer la información en CSV .En un inicio mis planes era usar SQL Mobile Server 2005 para Windows Mobile 2005 pero encontré las siguientes liminates que me hicieron optar por SQLite
La base de datos de SQL Mobile Server es propietaria.
No puedo manipular el fichero SDF de SQL Mobile Server en Windows XP, solo en los dispositivos móviles, por lo que la importación solo podría hacerla en las terminales.
El tiempo de importación de los registros CSV en la terminal es promedio de 100 registros por minuto con SQL CE, imagínense importar 100,000 registros.
Puedo hacer replicación entre MS SQL Server y SQL Server Mobile, pero esto requeriria tener las terminales en sitio, aparte el tiempo de replicación sigue siendo muy lento para hacer la inserción de los registros, sin contar las conexiones que debería de hacer para que las terminales lo hagan vía GPRS.
No podría usar replicación primero porque los terminalistas estarían en zonas alejadas conectados vía GPRS, por lo que una replicación sería completamente insegura al intentar transmitir los datos.
Diariamente se requiere hacer esta replicación, y existen más de 20 terminales, lo que se requeriría una licencia del servidor MS SQL Server y una licencia por cada conexión de los clientes, a menos que se tuviera una licencia por procesador.
Con SQLite me evité dolores de cabezas por lo siguiente:
Importar las mismas 35 tablas junto con sus 100,000 registros me toma solo 17 segundos.
No requiero hacer replicaciones o conexiones raras entre las terminales y algun servidor, solo compactar la Base De Datos y transmitir el archivo vía GPRS cosa que me toma 5 minutos.
La librería de la Base de Datos va empotrada dentro del código de la aplicación, por lo que no requiero instalar algún tipo de servidor o aplicación extra más que la mía para que funcione la base de datos de SQLite
Puedo exportar cualquier esquema y datos de una Base de Datos, sí ! hasta tipos Blob.Puedo operar la Base de datos en Linux, Mac OS X Windows, FreeBSD,PocketPC2002, 2003, Windows Mobile 2005, Windows CE, etc.. y existen multiples herramientas y lenguajes para hacerlo.
Es Software Libre.
Es por eso que este script me ayudó a exportar toda la información de la Base de Datos a las PDAs sin dolores de cabeza, y cómo aportación lo pongo a su disposición libremente para que puedan usarlo en algún desarrollo.
Esta es la línea que me permite exportar la información del archivo CSV
$_registros["PRODUCTS"]= FileToTable("./catalogos/PRODUCTS.CSV",$dbHandle,$separador,$delimitador,"PRODUCTS",$_fields_productos,$debug); // $_registros["PRODUCTS"] recibe la cantidad de registros del archivo CSV // FileToTable función que llamo para exportar el archivo // Ruta del archivo CSV // $dbHandle Conector de la Base de Datos SQLite // $separador caracter de separación de campo del archivo CSV // $delimitador caracter delimitador de campo del archivo CSV // "PRODUCTS" nombre de la tabla // $_fields_productos array que contiene la descripción de los campos de la tabla // $debug bandera para mostrar los registros no insertados en la tabla
Les muestro un video bastante inspirador, lo ví hace ún instante y realmente admito que me conmocionó, al igual que me ha motivado para seguir disfrutando cada instante que Dios nos presta en esta vida, tomar lo bueno que nos dá y lo malo archivarlo en el baul de la experiencia.
El video muestra a un chico alemán de 21 años, a quién le fué diagnosticado leucemia, por lo cuál los últimos días de su vida intenta vivir al máximo cada segundo y una de las formas de hacerlo es subiéndose al tren bala, de una manera singular e inventando una manera extrema de vivir cuándo no se tiene nada que perder. De ahí el lema "You Can Only Be Free... When You Have Nothing To Lose" En Memoria de "The Train Rider" Descansa en Paz
Pongo un texto que encontré en El Blog de Karel Donk que me pareció muy chevere a pesar de ser ingles vale la pena leerlo.. http://phylevn.mexrom.net/data/files/YouCanOnlyBeFreeWhenHavenNothingToLoose.txt
Despues de esto que esperas para decirles a tús padres cuántos los amas ?? o reconciliarte con tús amigos, hermamos, no sé ? Ó realizar el proyecto de tú vida que has planeado tanto tiempo.. Crees que la vida esperará a que lo hagas ?
El fin de semana mientras avanzaba con un proyecto aquí en Veracruz.. las ideas dejaron de germinar y en la amplitud de mi ociosidad me metí a Internet a buscar algo .. Qué ? No sé.. pero sin buscar, siempre se encuentra algo.. y buscando videos en YouTube encontré una mezcla interesante entre el Son Cubano y Clocks de ColdPlay, realmente un deleite para los oídos y una droga que llega crear un climax en cada vena y estremecerte en un extásis total.
Aquí la liga, no es un video como tal, pero escúchenla. http://www.youtube.com/watch?v=k85X3ZGwYtk
Y ya que andamos de buen gusto, qué tal algo de Compay, Ibrahim, Eliades Ochoa, Pio Leiva y a todos los legendarios del Buena Vista Social Club y todo su legado
Leyendo en http://BarraPunto.com que Australia por ley proclamará que sus habitantes usen Focos Fluorescentes para disminuir en primera por el ahorro de energía, segundo para disminuir la emisión de contaminantes como CO2 que son causa del Efecto Invernadero.
Recordemos que Australia junto con otros países entre ellos USA no le entró al Protocolo de Kioto[http://homepage.mac.com/uriarte/protocolo.html], en dónde varios paises se comprometieron a colaborar para disminuir sus contaminantes que son causa del cambio climático.
pongo la siguiente liga tomada del Sitio del Instituto Nacional de Ecología dónde muestra las cifras actuales de contaminantes de los focos incandescentes. http://www.ine.gob.mx/ueajei/publicaciones/libros/336/resumen.html
A lo cuál cito parte del contenido
POLÍTICAS DE MITIGACIÓN EN EL SECTOR ENERGÍA
Durante los últimos diez años, la Comisión Nacional para el Ahorro de Energía (CONAE) y el Fideicomiso para el Ahorro de Energía Eléctrica (FIDE) implementan programas para un uso mas sustentable de la energía, entre los que destacan: el aislamiento térmico de viviendas, la introducción de equipos de aire acondicionado de alta eficiencia, la sustitución de 500 mil focos incandescentes por lámparas fluorescentes para iluminación residencial, y la emisión de 20 normas oficiales sobre ahorro de energía para aparatos electrodomésticos y otros productos.
Se estima que los ahorros de energía acumulados en los últimos cinco años, derivados de los programas mencionados ascendieron a 39 mil GWh, lo que significó una reducción de poco más de 24 millones de toneladas de CO2. Tan sólo durante el año 2000 el país tuvo ahorros de energía equivalentes a 11 mil GWh y se evitó la demanda de más de 2,200 MW, mediante programas orientados a mejorar la eficiencia en el uso final de la energía. Estas cifras representaron una reducción de casi siete millones de toneladas de CO2.
El FIDE se constituyó en 1990. Los ahorros de energía alcanzados por el FIDE para 1999 fueron de 1,140 MW. Como resultado de proyectos específicos se evitó la emisión de aproximadamente 4.99 millones de toneladas de CO2. Entre los proyectos más importantes del FIDE están el de ILUMEX y el de Incentivos para Alumbrado Doméstico, los cuales de manera conjunta han impulsado la sustitución de cinco millones de lámparas incandescentes por compactas fluorescentes, con una meta de 6.1 millones de unidades.
Otros programas que han producido importantes ahorros de energía son: la aplicación del horario de verano, el programa de ahorro de energía en edificios públicos y el programa de ahorro energético de Petróleos Mexicanos. Este último incluye ahorros en el consumo de electricidad, gas natural y otros combustibles. Tan sólo por los programas de cogeneración de PEMEX se espera una reducción anual de mas de 50 mil toneladas en equivalentes de CO2. En el sector productivo, con fondos de la CFE y del Banco Interamericano de Desarrollo (BID), se contempla el desarrollo de proyectos relacionados con incentivos económicos para la adquisición de motores, luminarias y compresoras de alta eficiencia.
Comentarios Recientes