<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11070235</id><updated>2012-01-28T22:43:36.075-06:00</updated><title type='text'>Objeto Persistente</title><subtitle type='html'>De programación y sistemas... y algo mas</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default?start-index=101&amp;max-results=100'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>242</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11070235.post-7799016809777012847</id><published>2011-07-11T10:08:00.003-05:00</published><updated>2011-07-11T10:17:58.758-05:00</updated><title type='text'>Adiós Facundo, maestro y artista.</title><content type='html'>&lt;div style="text-align: left;"&gt;Hace aproximadamente 5 años, publiqué en este blog una de las reflexiones desde mi punto de vista mas hermosas sobre la vida, de autoría de Facundo Cabral.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://objetopersistente.blogspot.com/2006/09/no-estas-deprimido.html"&gt;http://objetopersistente.blogspot.com/2006/09/no-estas-deprimido.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para los que quieran un vídeo de la misma, hace poco, algo así como 3 semanas, publiqué en mi muro de Facebook el mismo texto, narrado por Facundo Cabral, porque realmente es una escuela para la vida.&lt;br /&gt;&lt;br /&gt;Puedes ver este vídeo en YouTube:&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/xDX4ijOesz0" allowfullscreen="" frameborder="0" height="349" width="425"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Gracias Facundo, por inspirar mi vida, gracias de parte de un amigo tuyo que siempre te admiró y que nunca conociste.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7799016809777012847?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7799016809777012847/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7799016809777012847' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7799016809777012847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7799016809777012847'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2011/07/adios-facundo-maestro-y-artista.html' title='Adiós Facundo, maestro y artista.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/xDX4ijOesz0/default.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-3296784244120911646</id><published>2011-06-22T10:27:00.005-05:00</published><updated>2011-06-23T09:28:23.953-05:00</updated><title type='text'>Y estamos de regreso !!!!!!... Listo CiberPAC para CFDI</title><content type='html'>Si, sí, ya lo sé, esto está muy abandonado, pero para buena fortuna de nosotros estamos siendo "víctimas de nuestro propio éxito".&lt;br /&gt;&lt;br /&gt;El boom de la facturación electrónica para México del año pasado nos dejó en una posición tecnológica y comercial muy interesante para afrontar los cambios que plantea el modelo de facturación electrónica para México de este año, el llamado Comprobante Fiscal Digital por Internet ó CFDI.&lt;br /&gt;&lt;br /&gt;El año pasado pensaba que la competencia era muchísima, incluyendo herramientas gratuitas, open source y otras demasiado baratas (y algunas totalmente inútiles), sin embargo en el mes de Enero del 2011, después de pasar 2 meses de locura (Noviembre y Diciembre) haciendo implementaciones como posesos de nuestra solución de facturación electrónica CiberSAT, mi socio y amigo Oscar Lira hizo un análisis de cual era nuestra posición en el mercado.&lt;br /&gt;&lt;br /&gt;Cuando Oscar me pasó los números simplemente se me fue la mandibula al suelo y otra vez recordé lo que me dijo mi mentor hacer muchos años....&lt;span style="font-style: italic;"&gt;proponte una meta que cuando la logres tú mismo te sorprendas de haberla conseguido.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pues sucede que durante el año 2010, el SAT (Autoridad Tributaria de México) emitió algo así como 326,000 autorizaciones para emisión de facturación electrónica, y luego de revisar las licencias generadas para uso de nuestra solución, que fueron aproximadamente 3,200 durante el año pasado, nos sorprendió saber que el 1% de los comprobantes fiscales digitales que se hacen todos los días en México, son generados con nuestro producto. Una vez mas me sorprendió hasta donde pudimos llegar con un producto de software muy bien diseñado, muy bien programado y competitivo, en palabras de Oscar.... &lt;span style="font-style: italic;"&gt;"nunca me imaginé que algo que programé yo lo usara tanta gente"&lt;/span&gt;. Pues si mi querido amigo, hemos rebasado nuestras propias espectativas.&lt;br /&gt;&lt;br /&gt;La razón del relativo abandono de Objeto Persistente, se debe a que hemos estado dedicando mucho tiempo a crear nuevos productos de Facturación Electrónica debido a los cambios que el SAT ha implementado para este año en el modelo. Ahora la facturación debe realizarse vía Internet y obtener por parte de la autoridad tributaria un "Timbre Fiscal Digital".&lt;br /&gt;&lt;br /&gt;Es un modelo similar al modelo Chileno, sin embargo y a diferencia del modelo del país sudamericano, la emisión de dicho "Timbre Fiscal Digital" tiene un costo economico añadido ya que corre a cargo de 29 empresas privadas autorizadas por el SAT, llamadas "PACs" (Proveedores Autorizados de Certificación) y no por parte de la misma autoridad tributaria. Esto complica el modelo porque hay que realizar comunicación vía Internet con 29 entidades distintas, cada una con sus propios estándares.&lt;br /&gt;&lt;br /&gt;Es por eso que hemos dedicado estos primeros 5 meses del año básicamenta a 2 cosas:&lt;br /&gt;&lt;br /&gt;1) A diseñar un nuevo producto mejorado partiendo de las bases tecnológicas de nuestro "CiberSAT 4.0"  para cumplir con los nuevos requisitos del Comprobante Fiscal Digital por Internet (CFDI), siempre teniendo en mente los 2 factores que representaron el éxito de nuestro producto anterior: facilidad de uso y facilidad de implementación EN TODOS LOS LENGUAJES DE PROGRAMACION.&lt;br /&gt;&lt;br /&gt;2) También nos hemos dedicado a crear una serie de alianzas de negocios con los distintos PACs para proveer a los  clientes de ambos de un esquema de implementación de facturación electrónica por internet, rápido y eficiente basado en nuestros productos de software y que incluya la capacitación y los servicios de implementación.&lt;br /&gt;&lt;br /&gt;Y estamos en ello ....&lt;br /&gt;&lt;br /&gt;CiberTec Labs, el área de I+D de CiberTec, a cargo de Oscar, ha desarrollado 4 productos nuevos y potentes que le ofrecen a nuestros clientes capacidad de conexión CON CUALQUIER PAC y para todos los lenguajes de programación, utilizando siempre las mismas funciones en todos los casos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;CiberSAT 5.0:&lt;/span&gt;&lt;/span&gt; Es un componente que valida las estructuras de los XML Ver 3.0 (CFDI) usando las definiciones XSD publicadas por la autoridad tributaria (SAT México), además de verificar todas las operaciones matemáticas dentro del XML, CiberSAT 5.0 genera XMLs con sellos digitales basados en SHA-1 y firmas electrónicas listos para ser enviados a cualquier PAC. Básicamente hace lo mismo que CiberSAT 4.0.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;CiberURL:&lt;/span&gt;&lt;/span&gt; Las conexiones a la mayoría de los Proveedores Autorizados de Certificación (PACs) para obtener los "Timbres Fiscales Digitales" se realizan a travez de WebServices. Como bien sabemos los lenguajes de programación "antiguos" no poseen la capacidad de usar WebServices y por otro lado, en los lenguajes de programación "modernos" nos hemos encontrado con que los programadores no tienen NPI (No Poseen Información) de como usarlos, razón por la cual creamos CiberURL, que es una componente que gestiona a bajo nivel las conexiones con los distintos PACs, se usa a traves de funciones, por lo que no hay necesidad de saber absolutamente nada de objetos ni de tener instalado nada en tu computadra y gestiona los llamados a los WebServices directamente manipulando sockets incluyendo SSL. Este componente es el encargado de enviar al PAC el XML y de recibir el Timbre Fiscal digital, así como de validar los posibles errores que surjan durante el proceso de comunicación.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;CiberCBB:&lt;/span&gt;&lt;/span&gt; Los documentos impresos que representen un CFDI, deben llevar un "dispositivo de seguridad" que valide la autenticidad del documento. En el caso por ejemplo del modelo español de facturación electrónica  estos dispositivos de seguridad se llaman "marcas impresas" y son códigos de barras en formato PDF (nada que ver con el PDF de Acrobat). En el caso del modelo mexicano este dispositivo de seguridad es un Código de Barras Bidimensional (CBB) en formato QRCode que contiene información sobre la factura y que puede ser verificado fácilmente usando una pequeña App gratuita para smartphones (blackberry, android e iphone/pad/pod) llamada&lt;a style="font-weight: bold; font-style: italic;" href="http://www.i-nigma.com/i-nigmahp.html"&gt; I-nigma.&lt;/a&gt; CiberCBB es el componente encargado de generar los códigos de barras bidimensionales, que son individuales para cada factura y que deben ir en el documento impreso generando un archivo gráfico en formato BMP para cada CBB.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;CiberPAC: &lt;/span&gt;&lt;/span&gt;Es la estrella de nuestro circo, es el domador de los leones. Este componente es el que va haciendo las llamadas a las distintas funciones necesarias en el proceso de generación del CFDI y es también el encargado de ir analizando las salidas generadas por los otros 3 productos para verificar que no generen ningún error. Así por ejemplo se encarga de analizar los XML originales y eliminar las cosas que no se necesitan para generar un timbre fiscal, se encarga de llamar a las funciones que envían y reciben archivos al PAC y si todo salió correcto, de llamar a las funciones que generan el CBB.&lt;br /&gt;&lt;br /&gt;Como verán la parte tecnológica nos ha consumido mucho tiempo pero hoy tenemos un producto que supera por mucho a nuestro producto anterior y lo mejor de todo: Es 100% compatible con todos los lenguajes de programación, igual que el producto anterior. Hoy por hoy CiberPAC está implementado en mas de 20 soluciones ERP que se comercializan en México, algunas de ellas con mas 300 clientes. El componente está tan bien logrado que es posible incluso usarlo para hacer facturas desde Word o Excel, y desde mas de 10 distintos lenguajes de programación como son Visual Basic 5, 6 y .NET, C# y C++, Delphi todas sus versiones, ASP, Cobol, Visual FoxPro, CA-Visual Objects, CA-Clipper (16 bits), (x)Harbour y todos sus amigos (Xailer, FiveWin, MiniGUI, etc), PHP, Java y Clarion y lenguajes tan raros como WinDev, Advanced Revelation, o bien generadores de código como Genexus o FileMaker cumpliendo con todos los requisitos fiscales establecidos por el SAT.&lt;br /&gt;&lt;br /&gt;Derivado de lo anterior, la solución para usuario final, desarrollada por nuestro socio de negocios Sanroms Software de México, el Sanrom's Invoice integra nuestro componente para los servicios de timbrado y generación de códigos de barra bidimensiales. &lt;a style="font-weight: bold; font-style: italic;" href="http://sanromssoftware.net/descargas/InvoiceDemoSetup.exe"&gt;Demo diponible aquí.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por el lado del contacto con los PACs también me he quedado gratamente sorprendido, yo pensé que tendríamos que ir tocando puertas por todos lados, pero al parecer el éxito de nuestro primer producto nos ha comenzado a abrir las puertas, hoy los Proveedores Autorizados de Certificación nos buscan interesados en que nuestros productos trabajen con sus soluciones y no tenemos ninguna necesidad de tocar mas puertas.&lt;br /&gt;&lt;br /&gt;CiberPAC actualmente puede conectarse y generar facturas electrónicas con:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.timbrefiscal.mx/"&gt;Timbre Fiscal&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.edicomgroup.com/mx"&gt;Edicom&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tralix.com.mx/"&gt;Tralix&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.buzone.com/"&gt;BuzonE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y próximamente (a mas tardar a finales de Julio) con:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.konesh.com.mx/"&gt;Konesh Soluciones&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fel.mx/"&gt;Facturar en Linea&lt;/a&gt;&lt;br /&gt;&lt;a href="http://portal.mysuitemex.com/"&gt;My $uite&lt;/a&gt;&lt;br /&gt;Compaq-I&lt;br /&gt;&lt;br /&gt;Nuestro objetivo es que a fin de año podamos trabajar con al menos 15 de los 29 proveedores autorizados.&lt;br /&gt;&lt;br /&gt;Así mismo ya contamos con otro tipo de alianzas comerciales con estos mismos PACs para distribuir y comercializar servicios de timbrado, mismos que estarán disponbiles para todos nuestros clientes a principios del mes de Julio, la idea es hacer un "one-stop shop", es decir que no tengas que pasar por 2 o 3 lugares para comenzar a facturar, que si hablar con el proveedor del software, que si darse de alta con el PAC, que si enviar los documentos, etc. etc. etc. nosotros te ofreceremos toda la solución "llave en mano" lista para integrarla en tus programas actuales, sin molestias para tus usuarios finales.&lt;br /&gt;&lt;br /&gt;Desde luego no hemos olvidado nuestros origenes, muchos de los componentes de alto nivel de CiberPAC están desarrollados con Xailer y (x)Harbour, como el modulo Stand-alone de CiberSAT y la solución para usuario final Sanrom's Invoice la cual adicionalmente utiliza Advantage Database Server como servidor de datos, tanto el servidor local, el servidor remoto y por si fuera poco, incluye soporte al Advantage Internet Server, con lo cual, puedes facturar desde distintos puntos remotos conectado a un servidor central via internet ;-).&lt;br /&gt;&lt;br /&gt;Y desde luego seguimos haciendo implementaciones con Advantage Database Server, que con su versión 10 ha venido a sorprendernos gratamente, nunca pensé que unos archivos DBFs pudieran tener tanto poder como replicación entre servidores, procesos almacenados, triggers, etc.&lt;br /&gt;&lt;br /&gt;Prometo hacer la reseña de una implementación de ADS bastante compleja, que estamos terminando con un cliente muy importante, pero será en el próximo post, mientras tanto..... ESTAMOS DE REGRESO !!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-3296784244120911646?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/3296784244120911646/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=3296784244120911646' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3296784244120911646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3296784244120911646'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2011/06/y-estamos-de-regreso-listo-ciberpac.html' title='Y estamos de regreso !!!!!!... Listo CiberPAC para CFDI'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5078544098475091375</id><published>2011-02-13T16:37:00.007-06:00</published><updated>2011-02-13T17:51:36.355-06:00</updated><title type='text'>Detalles del seminario de Xailer en Cancún</title><content type='html'>Han sido unos días muy atareados, pero ya estoy en condiciones de darles mas información sobre el seminario de Xailer en Cancún.&lt;br /&gt;&lt;br /&gt;Lo primero agradecer a las mas de 40 personas que han mostrado su interés en asistir y a los programadores que nos visitarán de Guatemala, Brasil, y Venezuela, teníamos calculado un aforo de unas 20 personas, pero en vista de la demanda de plazas, hemos solicitado un salón mas grande,  los lugares se otorgarán en estricto orden de reservación.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Las fechas:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ya hemos reservado las intalaciones del Hotel Sede: B2B Malecón Plaza para los días &lt;span style="font-weight: bold;"&gt;Lunes 4, Martes 5 y Miercoles 6 de Abril del 2001&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Los precios:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hemos tratado de mantener los precios lo mas accesibles que hemos podido para que se apunten la mayoría de las personas interesadas, los precios del seminario son:&lt;br /&gt;&lt;table cellpadding="5" cellspacing="2"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td halign="left"&gt;1 Asistente&lt;/td&gt;&lt;td halign="right"&gt;$7,500.00 MXP c/u&lt;/td&gt;&lt;td&gt;$620.00 USD c/u&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;2 Asistentes&lt;/td&gt;&lt;td&gt;$6,700.00 MXP c/u&lt;/td&gt;&lt;td&gt;$560.00 USD c/u&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;3 o mas Asistentes&lt;/td&gt;&lt;td&gt;$6,000.00 MXP c/u&lt;/td&gt;&lt;td&gt;$500.00 USD c/u&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Los precios anteriores INCLUYEN IVA.&lt;br /&gt;&lt;br /&gt;Por primera vez, ofreceremos la posibilidad de realizar &lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;PAGO CON TARJETA DE CREDITO A MESES SIN INTERESES.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Puedes reservar tu lugar con el 50% de anticipo y el 50% restante A MAS TARDAR EL DIA 31 DE MARZO DE 2011.&lt;br /&gt;&lt;br /&gt;Para reservar tu lugar comunicate por favor con:&lt;br /&gt;&lt;br /&gt;Alejandra Mejía&lt;br /&gt;(55) 5560 0168&lt;br /&gt;ventas@ciber-tec.com&lt;br /&gt;&lt;br /&gt;El precio del seminario incluye:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;3 días de seminario de programación en Xailer impartidos por Ignacio Ortiz de Zuñiga&lt;/li&gt;&lt;li&gt;Material del curso&lt;/li&gt;&lt;li&gt;Código fuente del software &lt;a href="http://www.ozs.com/?q=FuentesxaGeslite"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;XaGesLite&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Licencia SDK de Advantage Database Server para 2 usuarios&lt;/li&gt;&lt;li&gt;Versión de evaluación de Fast Report, con ejemplos específcos para Xailer&lt;/li&gt;&lt;li&gt;Comida tipo buffet los 3 días.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Los hoteles:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hemos negociado con el Hotel Sede una tarifa preferencial para los asistentes al evento, por favor, ten en cuenta que la reservación en el hotel de tu elección debe ser gestionada directamente por tí:&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/b2blogo.jpg" /&gt;&lt;br /&gt;Av. Sayil, XM 4a&lt;br /&gt;LC. Malecón&lt;br /&gt;Cancún Quintana Roo&lt;br /&gt;&lt;a href="http://www.b2bhotel.com.mx/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;www.b2bhotel.com.mx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="5" cellspacing="2"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: left;" halign="left"&gt;Plan Europeo, tarifa neta en base doble&lt;/td&gt;&lt;td style="text-align: right;" halign="right"&gt;$1,252.86.00 MXP por noche&lt;/td&gt;&lt;td style="text-align: right;"&gt;$105.00 USD&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="text-align: left;"&gt;Con desayuno continental incluido&lt;/td&gt;&lt;td style="text-align: right;"&gt;$1,353.75MXP por noche&lt;/td&gt;&lt;td style="text-align: right;"&gt;$ 115.00 USD&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;También contamos con 2 hoteles de menor precio pero de excelente calidad, que se encuentran a solo 1 calle del hotel sede:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/citymap.png" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/cityexpresslogo.jpg" /&gt;&lt;br /&gt;Av. Nichupté S/N&lt;br /&gt;Col. Las mañanitas&lt;br /&gt;77500, Cancún, Q. Roo&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.cityjunior.com.mx/WebNew/prop_diseno/cancun.htm"&gt;www.cityexpress.com.mx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Todas las tarifas incluyen desayuno continental.&lt;table cellpadding="5" cellspacing="2"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td halign="left"&gt;Sencilla&lt;/td&gt;&lt;td&gt;Cama Queen&lt;/td&gt;&lt;td style="text-align: right;" halign="right"&gt;$ $840.00 MXP por noche&lt;/td&gt;&lt;td style="text-align: right;"&gt;$70.00 USD&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Doble&lt;/td&gt;&lt;td&gt;2 camas dobles&lt;/td&gt;&lt;td style="text-align: right;"&gt;$920.00 MXP por noche&lt;/td&gt;&lt;td style="text-align: right;"&gt;$76.00 USD&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Superior&lt;/td&gt;&lt;td&gt;1 Queen 1 sofá cama&lt;/td&gt;&lt;td style="text-align: right;"&gt;$1,034.00 MXP por noche&lt;/td&gt;&lt;td style="text-align: right;"&gt;$86.00 USD&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/cityjuniorlogo.jpg" /&gt;&lt;br /&gt;Av. Nichupté SM 8 Mz 1 lt 4&lt;br /&gt;Col. Centro&lt;br /&gt;Cancún Quintana Roo&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.cityjunior.com.mx/WebNew/prop_diseno/junior_cancun.htm"&gt;www.cityjunior.com.mx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Todas las tarifas incluyen desayuno continental&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td halign="left"&gt;Sencilla&lt;/td&gt;&lt;td&gt;Cama Queen&lt;/td&gt;&lt;td halign="right"&gt;$ $576.00 MXP por noche&lt;/td&gt;&lt;td&gt;$48.00 USD&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Doble&lt;/td&gt;&lt;td&gt;2 camas individuales&lt;/td&gt;&lt;td&gt;$655.00 MXP por noche&lt;/td&gt;&lt;td&gt;$54.00 USD&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Recuerda, el cupo es limitado, no te pierdas esta gran oportunidad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5078544098475091375?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5078544098475091375/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5078544098475091375' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5078544098475091375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5078544098475091375'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2011/02/detalles-del-seminario-de-xailer-en.html' title='Detalles del seminario de Xailer en Cancún'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-3421183670007134494</id><published>2011-02-02T14:39:00.004-06:00</published><updated>2011-02-02T15:23:51.683-06:00</updated><title type='text'>Seminario de Xailer en México impartido por Ignacio Ortiz de Zuñiga</title><content type='html'>Pues ya ha pasado el primer mes del año, que rápido de va el tiempo, y como les prometí en mi último post del año pasado este año vamos a tener muchas sorpresas.&lt;br /&gt;&lt;br /&gt;Comenzamos con la primera:&lt;br /&gt;&lt;br /&gt;Ignacio Ortiz de Zúñiga, del equipo Xailer, nos visitará en Abril para impartir un seminario de 3 días sobre el uso avanzado de Xailer.&lt;br /&gt;&lt;br /&gt;La idea surgió a principios de Enero de este año, en una comida con Ignacio, José Manuel y yo en Madrid, donde, "a lo tonto a lo tonto", se me ocurrió sugerirle a Ignacio.... y bueno, ¿ que tal si vas por México a dar un curso avanzado de Xailer ? y dejamos la idea en el aire.&lt;br /&gt;&lt;br /&gt;A mi regreso, hace un par de semanas, comencé a mover el aparto logístico de CiberTec, para ver la posibilidad de realizar el evento, ya saben que para eso de organizar cursos nos pintamos solos, y gracias a la gran ayuda de nuestros socios de Sanrom's Software de México, aterrizamos el proyecto, solo faltaba fijar las fechas para el evento.&lt;br /&gt;&lt;br /&gt;Hoy me complace anunciar que "es oficial": Ignacio nos visita en Cancún México,&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt; del 4 al 6 de Abril.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En este evento hablaremos de temas de Xailer y aprenderemos directamente con uno de los miembros del equipo Xailer, nos centraremos en el modelo "vista / controlador" con Xailer, pero también, como siempre en nuestros cursos, hablaremos de otros temas como FastReport, acceso a datos con los motores nativos de Xailer (SQLite y MySQL) y Advantage Database Server.&lt;br /&gt;&lt;br /&gt;Escogimos Cancún por varias razones, la primera: desplazarse de cualquier parte de México a Cancún es muy fácil, se cuenta con muchos medios de comunicación y vuelos de avión saliendo desde la principales ciudades del país a precios bastante económicos, también hay  paquetes vacacionales avión/hotel a muy buenos precios.&lt;br /&gt;&lt;br /&gt;Desde otros paises vecinos encontrarás paquetes para visitar Cancún por si quieres asistir al evento.&lt;br /&gt;&lt;br /&gt;La segunda: Cancún tiene una infraestructura hotelera y de servicios para este tipo de eventos que incluso es dificil de igualar en ciudades como Monterrey y Cd. de México, nuestro hotel sede será el &lt;a href="http://www.b2bhotel.com.mx/inicio.html"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;B2B Malecón Plaza&lt;/span&gt;&lt;/a&gt;, donde hemos negociado una tarifa preferencial en las habitaciones para los asistentes a nuestro evento.&lt;br /&gt;&lt;br /&gt;La tercer razón: El curso será de lunes a miercoles, por lo que si quieres pasar unos días de descanso en Cancún antes o después del evento, podrás hacerlo tranquilamente, nuestro equipo estará llegando a Cancún el viernes 1 de Abril.&lt;br /&gt;&lt;br /&gt;El cupo para este evento es limitado, hemos recibido bastantes solicitudes de gente interesada en Xailer para poder asistir al mismo, en los proximos días publicaré el temario del curso y el formulario para que reserven su lugar.&lt;br /&gt;&lt;br /&gt;De momento para mayores informes sobre costo del seminario, hospedaje y otras dudas, pueden ponerse en contacto con nosotros al teléfono (55) 5560 0168 o bien en nuestro correo electrónico (&lt;a style="font-weight: bold; font-style: italic;" href="mailto:info@ciber-tec.com"&gt;info@ciber-tec.com&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Próximamente.... mas sorpresas :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-3421183670007134494?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/3421183670007134494/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=3421183670007134494' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3421183670007134494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3421183670007134494'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2011/02/seminario-de-xailer-en-mexico-impartido.html' title='Seminario de Xailer en México impartido por Ignacio Ortiz de Zuñiga'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7515172514491829443</id><published>2010-12-31T21:48:00.002-06:00</published><updated>2010-12-31T23:10:13.025-06:00</updated><title type='text'>Yo no olvido el año viejo, porque me ha dejado cosas muy buenas ....</title><content type='html'>A 2 horas de despedir al 2010, quiero poner mi último comentario de este año, para que no se diga que tengo el blog abandonado.&lt;br /&gt;&lt;br /&gt;Si, efectivamente, he dejado de publicar comentarios, porque afortunadamente el año 2010 ha sido una bendición laboralmente hablando, nuestros componentes de facturación electrónica para México fueron un éxito rotundo durante 2010, y nuestra nueva versión para el modelo 2011 esperamos que será todavia mas exitosa, debido a este venturoso incidente que me mantiene ocupado de manera permamente, he dejado de publicar tantos post como me gustaría.&lt;br /&gt;&lt;br /&gt;Además tengo que agradecer a nuestro invaluable equipo de trabajo, gracias a quienes logramos nuestros objetivos iniciales y los sobrepasamos por mucho.&lt;br /&gt;&lt;br /&gt;En primer a Oscar Lira, sin cuya ayuda no hubieramos llegado hasta donde llegamos, espero seguir contando con tu invaluable colaboración y amistad por mucho tiempo, gracias compañero.&lt;br /&gt;&lt;br /&gt;En un mundo de programadores, donde muchas veces lo urgente no nos deja tiempo para lo importante, el tema administrativo no es una cosa que se nos de mucho, es muy difícil encontrar tiempo para desarrollar y administrar el negocio, gracias a Alejandra Mejía por todas las horas que nos haz dedicado a ponernos en orden, espero que sigas apoyandonos mucho tiempo mas.&lt;br /&gt;&lt;br /&gt;No agradecer a Israel Solis y a Carolina Leal de Sanrom's Software de México por su inestimable ayuda sería injusto, gracias a su confianza pudimos conseguir, sin duda, el mejor producto de facturación electrónica para México, además de su inestimable ayuda para la versión para usuario final desarrollada por ellos.&lt;br /&gt;&lt;br /&gt;Y a todos nuestros clientes, Alfredo, Karla, Rodolfo, Mauricio, Miguel, Margarita, Pepe, Jose Luis, gracias por su confianza en nuestro producto, a Sushi Itto, Domino's Pizza, StarMedica,  Ranver, Iberia y Japan lineas aéreas, Porcelanite, Distribuidores Ford, GM, Chrysler, Honda, Dodge, Mitsubishi y Volkswagen y muchas otras empresas que han escogido  nuestros servicios y productos para su facturación electrónica.&lt;br /&gt;&lt;br /&gt;Pero no todo fue exitoso y triunfador, como diría mi querido amigo Armando García, hubo unos "listos" que descaradamente se robaron nuestras ideas, nuestros códigos fuentes publicados, nuestras plantillas y nuestra metodología de trabajo, el descaro y la falta de imaginación de nuestros "copiadores" fue tal, que hasta los errores en el códigos fuentes reprodujeron en su producto, sin embargo, gracias a la dedicación de nuestro equipo por atender a nuestros clientes, su producto "clonado" del nuestro no nos afectó en lo mas mínimo, es mas, gracias a su mala calidad y a su falta de atención al cliente, muchos de sus clientes nos buscaron y se hicieron clientes de nosotros, eso me recuerda un "iPhone" chino que compré por 100.00 USD y que solo funcionó 2 semanas, pero bueno, esa es otra historia.&lt;br /&gt;&lt;br /&gt;¿ Y que hay para el año entrante ?&lt;br /&gt;&lt;br /&gt;Bueno, lo primero, el modelo 2011 de facturación electrónica para México, pero esta vez, antes de liberar nuestro producto, que ya está listo, registraremos TODO en derechos de autor, no queremos mas "CiberSATs chinos" rondando por ahí (sabemos quienes son y los estamos observando).&lt;br /&gt;&lt;br /&gt;Lo segundo, el modelo de facturación electrónica para España, si bien no es obligatorio en Europa aún,  poseemos la tecnología para hacer un producto tan bueno para España como lo tenemos para México.&lt;br /&gt;&lt;br /&gt;Lo tercero, pero no por eso menos importante: incursionamos en la programación de teléfonos móviles.&lt;br /&gt;&lt;br /&gt;Para el segundo semestre del año, y gracias a la incorporación de Jaime Balli, experto en desarrollo móvil, a nuestro equipo de trabajo proveeremos de tecnología y cursos de programación para teléfonos móviles, enfocandonos principalmente en la familia Apple (iPhone, iPod y iPad) y Android mas adelante entraremos con Windows Phone.&lt;br /&gt;&lt;br /&gt;Daremos los primeros cursos de programación para móviles en la operación España 2011 y luego los ofreceremos en México y antes de que pregunten..... NO, no vamos a hacer programación para móviles con nada que tenga que ver con FW, ni con Harbour ni con nada de Xbase, cada oveja con su pareja, y hay que usar lo que funciona en cada sistema operativo, "C" para la familia Apple y Java para la familia Android.&lt;br /&gt;&lt;br /&gt;Durante estos últimos meses  en los cuales que por necesidad de integración de nuestros productos he tendio que aprender un poco de todo: Visual Basic, FoxPro, Delphi, C#, ASP, Java y hasta cosas como WinDev, Progress y hasta Cobol, he descubierto herramientas maravillosas, como el Visual Studio, WinDev y otras herramientas mas, que son las adecuadas para el desarrollo móvil, hay mucho, muchísimo material para desarrollar para estas plataformas y pronto la pondremos al alcance de tu mano.&lt;br /&gt;&lt;br /&gt;Finalmente, para despedirme de este año, una vez, uno  de mis mentores en el mundo de lo negocios me dijo un día: &lt;span style="font-style: italic;"&gt;"Te voy a proponer un reto: proponte una meta que te parezca ridícula, imposible de alcanzar, algo tan disparatado que cuando lo logres, tu mismo te sorprendas de haberlo hecho"&lt;/span&gt;, bueno, este año 2010 que está a punto de marcharse, ha sido "ese año" en cual acepté el reto que mi mentor me propuso,  lo superé y todavía sigo sorprendido.&lt;br /&gt;&lt;br /&gt;Gracias año 2010, bienvenido año 2011, te lo advierto, la meta para tí es bastante mas sorprendente que la que tuvo tu antecesor, ahora es tu turno, SORPRENDEME !!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7515172514491829443?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7515172514491829443/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7515172514491829443' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7515172514491829443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7515172514491829443'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/12/yo-no-olvido-el-ano-viejo-porque-me-ha.html' title='Yo no olvido el año viejo, porque me ha dejado cosas muy buenas ....'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-4565551105394941925</id><published>2010-11-02T17:22:00.002-06:00</published><updated>2010-11-02T19:59:51.227-06:00</updated><title type='text'>Exocerebros</title><content type='html'>¿ Ya tienes tu "exocerebro" ?, yo sin darme cuenta tengo uno desde algunos años ya.&lt;br /&gt;&lt;br /&gt;¿ Qué es un "exocerebro" ?, pues ni mas ni menos que tu teléfono celular, siempre y cuando este sea un "Smartphone" y claro tenga conexión a Internet (un teléfono inteligente sin conexión a Internet es tan inútil como un refrigerador en el polo norte).&lt;br /&gt;&lt;br /&gt;La proxima batalla del software cambiará de escenario, no será una batalla que se libre en las computadoras personales de escritorio o portátiles, no será una batalla donde el monopolio de Microsoft será el protagonista y el enemigo a vencer, la proxima batalla del software vincula un aparato mas pequeño: será por tu teléfono celular.&lt;br /&gt;&lt;br /&gt;Es innegable la utilidad de un Smartphone, una extensión móvil de tu propio cerebro, que además lo complementa proporcionandole la información que necesita, en el momento en que la necesita, y que además lo puedes llevar a cualquier sitio, por eso, no es exagerado llamar al Smartphone un "exocerebro".&lt;br /&gt;&lt;br /&gt;Si tienes un Smartphone, por ejemplo un iPhone, un Blackberry, uno basado en Android o en Windows Mobile, no me negarás que es muy dificil encontrar otro aparato que tenga una convergencia de tecnología tan amplia como la tiene un Smartphone y que al mismo tiempo resulte tan útil. aunque hay otras implicaciones del uso y desuso de los smartphones, esas las trataré en un artículo por separado, para comentar las incidencias de mi último viaje, donde por cierto, no me paso nada esta vez. ;-).&lt;br /&gt;&lt;br /&gt;Pero volviendo al tema, en un día típico de trabajo, tu exocerebro va contigo, desde la mañana, cuando suena el despertador incluído como una aplicación del teléfono, mientras te aseas, te conectas al correo electrónico y descargas tus mensajes recibidos durante la noche (si estás en otro continente esto puede ser de lo mas útil), antes de vestirte consultas la aplicación del clima para saber la predicción meteorológica del día y saber si te tienes que vestir para frio o llevar el paraguas.&lt;br /&gt;&lt;br /&gt;Sales a la calle subes a tu coche, y tienes que ir a visitar a un cliente, tu exocerebro cuenta con un GPS, con lo cual puedes llegar mas rápido y puntualmente a tu cita, en el camino tu exocerebro recibe varias llamadas telefónicas, las cuales contestas usando tu manos libres bluetooth (seguramente no eres de esos que va conduciendo y hablando por teléfono ¿ verdad ?).&lt;br /&gt;&lt;br /&gt;Durante la cita con tu cliente te pide que le cotices tus productos, tu exocerebro lleva una copia de Office Mobile y será relativamente fácil hacer la cotización y aprovechar para enviársela por correo electrónico en cuanto salgas de su oficina.... pero no, los teclados de los Smartphones no están pensados para escribir "formalmente" así que saliendo de la cita con el cliente te vas a tu coche o a alguna cafetería, sacas tu laptop, y haces la cotización que te pidió el cliente,  listo, ya está hecha, ¿ como la mandas ahora ?, muy fácil tu exocerebro tiene funciones de modem 3G con lo cual simplemente conectas tu teléfono a tu laptop, y listo, cuentas con conexión de banda ancha  para enviar tus documentos desde donde quiera que estés.... ¡ oh sh....t !, se me olvidó el cable para conectar el teléfono al laptop.... no hay problema el exocerebro tiene una aplicación que lo convierte en un access point WiFi con lo cual puedes usar la wifi de tu portatil para conectarte a Internet, aunque hayas olvidado el cable, y lo mejor la conexión WiFi la puedes compartir con los vecinos.&lt;br /&gt;&lt;br /&gt;Hora de ir al banco a mirar si te han pagado.... va a ser que no, el tráfico esta en hora punta,  el banco queda lejos y no hay tiempo que perder, a usar la banca movil, que ya está disponible para teléfonos Smartphone, con los mismos estándares de seguridad que las aplicaciones de Banca por Internet de las aplicaciones de escritorio.&lt;br /&gt;&lt;br /&gt;Y podría seguir y seguir hablando de como usar un Smartphone en un día normal de trabajo y como nos saca de aprietos el exocerebro.&lt;br /&gt;&lt;br /&gt;Como te mencionaba al princpio del artículo, esos exocerebros, que en realidad son pequeñas computadoras super portátiles, requieren de software y el mercado es muy, pero muy muy interesante si quieres darle un nuevo enfoque a tu experiencia como programador.&lt;br /&gt;&lt;br /&gt;Las estadísticas dicen que hay 5 mil millones de teléfonos celulares (móviles) de los cuales aproximadamente el 21% son "smartphones",  eso quiere decir que hay aproximadamente mil millones de smartphones que requieren software.&lt;br /&gt;&lt;br /&gt;La tendencia dice que para el año 2015, los smartphones aumentarán su participación en el mercado del 21% actual a casi el 75%, lo quiere decir que 3 de cada 4 teléfonos que existan en el planeta serán smartphones, eso sin contar que para el año 2015 habrán cerca de 6 mil millones de teléfonos en el mundo.&lt;br /&gt;&lt;br /&gt;¿ Quienes se van a comer el mercado ?, la batalla está clarísima: Apple con su iPhone y Google con su Android por las razones que explico mas adelante.&lt;br /&gt;&lt;br /&gt;Windows no va a jugar esta partida, su sistema operativo Windows Phone 7 llega tarde a un mercado donde actualmente se destrozan por los usuarios entre Blackberry y iPhone, y con Android que está pisandole los talones a estos dos.&lt;br /&gt;&lt;br /&gt;La estrategia de Apple en cuanto a sus Smartphones deja mucho que desear, por el fortísimo monopolio que ejerce sobre sus productos.&lt;br /&gt;&lt;br /&gt;Para empezar Apple produce su propio hardware y su propio sistema operativo, con su propio conjunto de aplicaciones incluídas y tanto el iPhone como el iPad solo se comercializan con determinados operadores de telefonía "exclusivos" para los productos de Apple, los cuales al ser exclusivos abusan en los costos de los planes de internet y telefonía para dichos aparatos.&lt;br /&gt;&lt;br /&gt;Por el lado del software,  aunque las herramientas de desarrollo de programas (Apps) para Apple son gratuitas, solo los programas que son "autorizados" o "certificados" por Apple se pueden instalar en un iPod o en un iPad (a menos que le hagas Jailbreak al aparato con el riesgo de perder la garantía o no poder actualizar el sistema operativo).&lt;br /&gt;&lt;br /&gt;A pesar de todo lo anterior, basta pasar por una tienda Apple o visitar a un proveedor "exclusivo" de telefonía para ver como la gente se lleva los iPhones y los iPads a montones, y no exagero, hace unos días estaba en Nueva York, y en la tienda de Apple pusieron el iPhone 3G a 99 dólares, imagínense como estaba la fila de espera para comprar uno, igual había que esperar 2 horas, como me comentaba un paisano que encontre en la fila.... "a 99 dolares me lo llevo, auque no me funcione como teléfono, es mas barato que un iPod Touch", y por cierto, la oferta estaba limitada a solo 3 unidades por persona y había ahí una familia de Mexican paisanos de 4 personas que iban a comprar 3 cada uno y que habian ido el dia anterior por otros.&lt;br /&gt;&lt;br /&gt;Dentro de la competencia tenemos también a Blackberry, la candiense RIM (Resource In Motion), fabricante del Blackberry lo concibió inicialmente como una herramienta de negocios, y todavía hasta hace 2 modelos, los Blackberry no contaban con pantallas touch.&lt;br /&gt;&lt;br /&gt;Cuando apareció el Blackberry, su principal atractivo era tener disponible tu correo electrónico en tiempo real, el resto de la funcionalidad era mala, el navegador web dejaba mucho que desear, no había aplicaciones, lo unico rescatable además del correo, era que los Blackberrys tienen su propio servicio de chat entre ellos, no es un messeger como el que conoces de Microsoft, es un sistema de mensajería que permite enviar mensajes y hacer un chat entre distintos equipos Blackberry conociendo unicamente el número de "PIN" del usuario con el que quieres charlar, es un servicio que además no produce costo en el plan de telefonía que tengas contratado, por lo que las generaciones chateras actuales lo aprecian mucho.&lt;br /&gt;&lt;br /&gt;RIM se dió cuenta que si quería captar mas clientes, debería de ofrecer un smartphone menos de negocio y mas de ocio, e integró la reprodución de archivos de música y vídeo, redes sociales, mejor navegación web, y "abrió" su plataforma para que los desarrolladores comenzaran a producir programas (Apps) para sus equipos.&lt;br /&gt;&lt;br /&gt;Al igual que Apple, RIM produce su propio hardware, y su propio sistema operativo, y aunque las herramientas de desarrollo también son gratuitas y RIM ofrece cursos y seminarios de programación sin costo, muchos programadores se quejan de que no pueden producir aplicaciones estándar para el Blackberry por que no hay estandarización en el hardware, ni en los sistemas operativos, por ejemplo una aplicación para el Blackberry Pearl no puede funcionar en el Blackberry Torch, porque las resoluciones de las pantallas son distintas, Apps que funcionan en Blackberry Curve, no funcionan en el Blackberry Storm, porque este no tiene teclado sino pantalla touch, de tal manera que los programadores se desesperan porque tienen que tener varias versiones la misma App que funcionen con distintos modelos de Blackberry y es por esta misma razón que no hay tantas Apps. como puede haber para Android o para iPhone.&lt;br /&gt;&lt;br /&gt;El ganador aquí si sabe jugar sus cartas bien, será sin duda Google, aunque su primer incursión en el mundo de la telefonía fue desastroso con el Nexus ONE, a pesar de que el hardware era construido por uno de los mejores fabricantes de teléfonos del mundo: HTC, la poca o nula experiencia de Google en el mundo del hardware dió al traste con lo que pudo ser un digno rival para el iPhone.&lt;br /&gt;&lt;br /&gt;Sin embargo, hoy en día las cosas han cambiando y mucho, con solo 2 millones de líneas de código ABIERTO, Android, el Sistema Operativo para teléfonos de Goggle, está a punto de comenzar a comerse un mercado acaparado por el iPhone en cuanto a los smartphones de "ocio".&lt;br /&gt;&lt;br /&gt;Para empezar, Google optó por el modelo Open Source para su sistema operativo, viendo el error de Windows, Blackberry y de Apple, al ser sistemas operativos de código cerrado, Google apostó por el modelo de código abierto, lo cual le permite crecer al sistema operativo de acuerdo a las aportaciones de sus usuarios, la ventaja para el programador es que además de tener las herramientas gratuitas para crear aplicaciones, tiene también el código del sistema operativo y una extensísima base de conocimientos para el desarrollo de aplicaciones.&lt;br /&gt;&lt;br /&gt;Después del fracaso del Nexus ONE,  Google se olvidó de crear su propio hardware y en vez de eso ofreció Android gratuitamente a los distintos fabricantes de teléfonos, junto con el soporte y las adaptaciones al hardware que fueran necesarias, le tomaron la palabra Motorola, Samsung, HTC, LG, Sony/Ericsson e incluso Dell que va a comenzar su incursión en el mundo de la telefonía y de las tablets, de momento Nokia pasa de Android porque tiene su propio sistema opertivo: Symbian y su propia plataforma de desarrollo llamada OVI que no ha tenido éxito.&lt;br /&gt;&lt;br /&gt;¿ Y todo lo cedió Google Gratis ?, pues sí y no, es un hecho sabido en nuestro mundo informático que nadie da almuerzos gratis, Google integró dentro de Android sus productos mas destacados: El sistema de búsquedas, el navegador web Chrome (que le da 1000 patadas a cualquier navegador para Smartphone que exista, incluyendo al Safari de Apple), el sistema de localización de Google Maps y el correo electrónico GMail, tengo conocidos que han pasado todo sus servicios de correo a GMail, y  que ya no tienen servidores POP o SMTP para sus correos, que todo lo  gestionan vía GMail, de tal forma que puedes llevar una "extensión" de tu computadora de escritorio o portatil a cuestas en tu teléfono Android, pero....&lt;br /&gt;&lt;br /&gt; ¿ Porqué  gratis ?, muy sencillo, ¿ qué vende Google ?, ANUNCIOS, clicks del ratón. En cada teléfono que lleve sistema operativo Android, hay un posible lector de los anuncios de Google Adwords, y con mil millones de smartphones rodando por el mundo y mas que van a venir, Android se vuelve una herramienta generadora de ingresos muy importante para Goggle.&lt;br /&gt;&lt;br /&gt;El que va a 20 calles del desfile en esto de los sistemas operativos para teléfonos móviles es Microsoft, lanzó su sistema operativo Windows Phone 7, totalmente orientado al ocio, la computación móvil y redes sociales y solo 3 fabricantes lo han incluido en sus teléfonos: LG en el Optimus 7 y en el GW550. HTC en 5 modelos y Samsung en el Omnia II. Esta vez Sony/Ericsson ha pasado de Windows para su Xperia, lo mismo que Motorala, HTC  cada día se decanta mas por Android, y al parecer lo poco que le queda a Microsoft son los smartphones de la dupla Palm/HP, que ahora son la misma empresa; aunque en Palm solo se quedaron 3 modelos, 2 de los cuales no van con sistema operativo Windows: el PRE que usa su propio sistema operativo, WebOS, el PRO que va con Windows Mobile 6 y el Centro que funciona con PalmOS, de lado de HP solo queda 1 modelo de iPaq.&lt;br /&gt;&lt;br /&gt;Al igual que otros fabricantes de sistemas operativos para Smartphones, Microsoft regala la plataforma de desarrollo de aplicaciones para teléfonos móviles, que esta compuesta por Silverlight, XNA y Visual Studio 2010, sin embargo a pesar de lo gratis de las herramientas no parece llamar la atención de los desarrolladores, quienes hoy por hoy están mas interesados en tener mas clientes como los que pueden tener con un iPhone o un Android.&lt;br /&gt;&lt;br /&gt;Como ya lo comenté en algún artículo anterior, tal parece que el futuro de los programadores se encuentra en el desarrollo de aplicaciones para Smartphones, después de todo, no todas las personas que tienen un teléfono tienen una computadora, pero si todas las personas que tienen computadora tienen un teléfono, por esa regla de 3, hay mas teléfonos que computadoras y por lo tanto el mercado es mas grande y en los próximos 5 años va a crecer mucho mas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-4565551105394941925?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/4565551105394941925/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=4565551105394941925' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4565551105394941925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4565551105394941925'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/11/exocerebros.html' title='Exocerebros'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5762212477447320603</id><published>2010-09-20T21:54:00.002-05:00</published><updated>2010-09-20T22:59:43.573-05:00</updated><title type='text'>Wifi de altura</title><content type='html'>Pues con la novedad de que en mi último viaje, al subirme al avión me encontré con este logotipo pegado en la puerta del Boeing 767 de American Arlines al que me subí:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/wifiaa.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;¿ Será verdad tanta belleza ?, ¿ Por fin lo hemos logrado ?&lt;br /&gt;&lt;br /&gt;Pues va a ser que sí, y además debajo de casi todos los asientos (excepto los que están en las salidas de emergencia) hay un tomacorriente para que tengas energía eléctrica en vuelo, aunque tienes que usar un enchufe tipo encendedor de coche.&lt;br /&gt;&lt;br /&gt;El servicio de Internet abordo de American Airlines es proporcionado por la empresa &lt;a href="http://www.gogoinflight.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;GOGO INFLIGHT,&lt;/span&gt;&lt;/a&gt; que utiliza la misma tecnología de los teléfonos celulares, pero al revés, en vez de que la señal sea proyectada desde la antena hacia el suelo, la señal es proyectada de la antena hacia arriba (Entre el Cielo y el Suelo, nunca antes mejor dicho), la ventaja de esto es que la señal no encuentra bloqueos hacia arriba, como sucede con las antenas de celular convencionales, que en su camino para llegar al teléfono móvil, la señal debe cruzarse con edificios, paredes personas y otros obstáculos, como la señal viaja hacia arriba y sin obstaculos, no hay necesidad de tantas antenas y la señal es mas intensa, una idea muy interesante.&lt;br /&gt;&lt;br /&gt;El precio del servicio (con lo mal que están las líneas aereas ultimamente, no esperabas que fuera gratis, ¿ o sí  ?) me pareció a mí que es bastante económico, por solo $ 13.00 dólares POR VUELO, puedes conectarte por todo el tiempo que dure tu viaje, aunque también si tu presupuesto no te lo permite y tienes que decidir entre comprarte un sandwich (American Airlines ya no da alimentos a bordo, los vende) y conectarte a Internet, entonces puedes comprar 1 hora y media de conexión por 5 dólares, o bien 3 horas por 10 dólares.&lt;br /&gt;&lt;br /&gt;¿ Como me conecto ?, la conexión es muy simple, te subes en el avión, despega, y cuando la azafata avisa que "El uso de computadoras y dispositivos de música es permitido" enciendes tu computadora, smartphone, iPad o cualquier otro dispositivo que tenga acceso a internet, activas tu tarjeta WiFi, le pones "buscar redes inalámbricas" y aparece esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/gogo_wireless.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Exactamente como te conectarías a una red inalámbrica común y corriente, realizas el procedimiento de conexión, abres tu navegador, te redirecciona a la página de GOGO, sacas tu tarjeta de crédito, seleccionas la conexión que quieras, pagas, y listo, este proceso si ya cuentas con una cuenta de GOGO no te lleva mas de 3 minutos y estás navegando por Internet. Se recomienda que si vas a usar este servicio, entonces te registres en GOGO antes de subir al avión, de lo contrario perderás tiempo en vuelo realizando el proceso de registro y usarás menos el servicio.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;¿ Que puedo obtener por el dinero pagado ?, todo lo que esperarías de una red inalámbrica en tierra, pero a 10 mil metros de altura, puedes conectarte a internet, navegar por la web, usar el correo electrónico, conectarte vía VPN, ver videos de You Tube, y hasta usar VoIP con Skype o Messenger, no hay limites en los servicios ni en la cantidad de datos que descargues o que envíes.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;El ancho de banda es bueno, tomando en cuenta que estás a 10 kilómetros de altura desplazandote a 800 km/h, en promedio se logran velocidades, 1.5 Mbps, bastante razonable tomando en cuenta que con tu teléfono celular 3G logras esas velocidades estando en tierra, y a menos de 1 km de la torre celular. Las pruebas con Speed Test arrojaron estos resultados:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/gogo_testing.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Ahora, estos resultados son muy engañosos, ya que el avión es un hotspot todo él y el ancho de banda se divide entre todos los usuarios que estén conectados en ese momento, los terminos de servicio de GOGO establecen que la señal se degradará entre mas personas estén usando el servicio en el mismo avión, si no hay muchos usuarios tendrás un ancho de banda razonable, me contaba un usuario de GOGO, compañero de viaje, que hace un año esto era una gozada, porque había poca gente inscrita en el servicio, pero que le habían tocado vuelos donde mas de 20 personas iban conectadas a Internet y la velocidad era insufrible.&lt;br /&gt;&lt;br /&gt;El servicio se ofrece cubriendo todo el territorio de Estados Unidos Continentales, y en México y Sur de Canadá..... PEEEEEEEERO, la cobertura fuera del territorio de los Estados Unidos, solo llega a 100 millas fuera de la frontera, asi que si piensas hacer un vuelo trasatlántico, no te creas que vas a tener conexión durante todo el viaje.&lt;br /&gt;&lt;br /&gt;El servicio de GOGO está disponible además de en American Airlines en AirCanada, AirTran, Alaska Airlines, Delta, Frontier, United Airlines, US Arways y Virgin America.&lt;br /&gt;&lt;br /&gt;Mi opinión personal: Todos los viajes comienzan con el primer paso, este, creo, es un paso muy importante, sin importar que el servicio esté sobredemandado, nos demuestra que la necesidad de internet en todos sitios se ha vuelto común para todos los seres humanos.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5762212477447320603?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5762212477447320603/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5762212477447320603' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5762212477447320603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5762212477447320603'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/09/wifi-de-altura.html' title='Wifi de altura'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1095801551863464733</id><published>2010-08-26T17:06:00.003-05:00</published><updated>2010-08-27T02:13:33.704-05:00</updated><title type='text'>Si programas no vendas, si vendes no programes</title><content type='html'>A raíz de los comentarios publicados en el post anterior por varios de ustedes, me tomo la libertad de compartir mis experiencias en este mundillo de comprar y vender software.&lt;br /&gt;&lt;br /&gt;Yo empecé como desarrollador en el año 1989, cuando aun la computadora no era un electrodoméstico mas y costaban mas o menos el precio que un viaje de 15 días de México a Europa.&lt;br /&gt;&lt;br /&gt;Como los equipos eran caros, pocas personas o empresas contaban con ellos, por lo tanto hacer software hace 20 años era un estupendo negocio.&lt;br /&gt;&lt;br /&gt;Hoy las cosas han cambiado y mucho, la computadora ha dejado de ser un objeto de lujo para convertirse en un artículo de consumo, pero lo que no ha cambiado es que  siempre, al final de la cadena hay un usuario final que tiene necesidades de cubrir al cual le importa un cacahuate (o al menos debería importarle un cacahuate) en que está hecho el programa que usa, lo importante es que le resuelva el problema.&lt;br /&gt;&lt;br /&gt;Yo catalogo a las empresas de software en 3 tipos en base a su tiempo de vida:&lt;br /&gt;&lt;br /&gt;1) Empresas con buenos programadores pero con malos o ningún vendedor, son las que duran menos.&lt;br /&gt;&lt;br /&gt;2) Empresas con buenos vendedores y con programadores regulares o malos. Que duran un poco mas que las anteriores, pero tampoco mucho mas.&lt;br /&gt;&lt;br /&gt;3) Empresas que equilibran buenos vendedores con no menos estupendos programadores, que son las que están "condenadas al éxito".&lt;br /&gt;&lt;br /&gt;Veamos el caso 1. Juanito programador decide lanzarse a la aventura de vender sus productos de software, es un programador extraordinario, en lo que sea, no vamos a etiquetar a ningún lenguaje, hace programas maravillosos, útiles y funcionales, pero no sabe vender, después de todo es su primer experiencia vendiendo sus productos, tampoco tiene  dinero para contratar vendedores  o publicidad, así que se lanza a hacer un software business do-it-yourself.&lt;br /&gt;&lt;br /&gt;Este tipo de empresa está condenada al fracaso en corto tiempo, ¿ Porqué ? porque Juanito programador tendrá que lidiar con 2 problemas: buscar clientes para sus productos, y encima crear y darles mantenimiento a los mismos (de hecho no es recomendable tener mas de un producto si es tu primera incursión en el mundo del negocio del software), con lo cual, como no puede hacer bien una cosa ni la otra, Juanito conseguirá 2 o 3 clientes, pero deberá de seguir dándole manteniendo al software y por conservar a sus 2 o 3 clientes les va a cumplir cuanto capricho le pidan, después de todo, son funcionalidades que quizá algún futuro cliente (que nunca va a llegar) le pida. En poco menos de 1 año este tipo de empresa bajará la cortina, porque no es rentable, el super programador Juanito buscará un trabajo regularmente pagado, pero por lo menos llegará a fin de mes.&lt;br /&gt;&lt;br /&gt;El caso 2 tiene un poco mas de tiempo de vida, o al menos resultará economicamente viable, en este caso tenemos a Pedrito Vendedor, el comercial mas fiero, que le vende refrigeradores a los esquimales del Polo Norte y calefacción a los beduinos del Sahara, Pedrito sabe vender, tiene los contactos, la personalidad, el carisma y ese "algo" que tiene el vendedor nato, pero no tiene conocimientos de informática, computación o programación, sin embargo, sabe vender, así que ubica  algún programa informático interesante (ojo, he dicho interesante, no he dicho BUENO o UTIL, o PRACTICO), contacta con el autor, llega a un acuerdo, y se lanza a comercializarlo. Como Pedrito tiene conocimientos de publicidad y una red de contactos en poco tiempo ese producto ha llegado a un montón de personas, ha producido una buena utilidad peeeeeroooo... el producto no era ni tan bueno, ni tan útil, ni tan práctico como Pedrito vendedor lo había dibujado y lo peor de todo, el programador tampoco era tan bueno. Viene ahora corregir todas las quejas, bugs, fallas, etc. y todos sabemos que la cantidad de quejas es proprocional a la cantidad de productos vendidos,  por lo tanto, Pedrito se verá agobiado de quejas de sus clientes, le pedirá al programador que haga algo para solucionar los problemas, pero como el programador no es muy bueno entonces pasará de hacerlo, se contratará a otro programador para que ayude al autor, sin embargo como el autor es un mal programador no lo entiende nadie, y tarde o temprano la empresa cierra porque no hay quien se haga responsable del mantenimiento del programa. En este tipo de empresas rara vez la versión 2.0 del producto llega a ver la luz, sin embargo algo de dinero hizo (después de todo vendió montones de humo), así que, algo se ganó con la experiencia, Pedrito Vendedor ahora venderá GPS's, cepillos de dientes o cualquier otra cosa, y venderá montones, porque lo suyo es vender.&lt;br /&gt;&lt;br /&gt;El balance perfecto  lo tiene aquella empresa que sabe que es tan importante tener buenos vendedores y no menos mejores programadores, conozco muchos caso de empresas que son rentables (y muy rentables) con un cuerpo de 4 o 5 buenos programadores (o menos) y un equipo de fieros vendedores y mercadologs, después de todo, como siempre he dicho, la característica mas importante de un programa, aparte de tener una bonita interfaz, ser robusto, fácil de usar y práctico es .....&lt;span style="font-style: italic;"&gt; que los posibles clientes lo conozcan&lt;/span&gt;..., si el producto no lo conoce nadie, entonces de nada vale toda la tecnología que tenga dentro ni todo el tiempo invertido.&lt;br /&gt;&lt;br /&gt;¿ Recuerdas el caso de un individuo llamado Bill Gates ?, sin duda un buen vendedor, consiguió un buen producto, el famoso MS-DOS y era tan buen vendedor que se lo vendió a IBM.... el resto es historia.&lt;br /&gt;&lt;br /&gt;Aparte de tener vendedores buenos y de invertir en publicidad, una empresa de software sin importar su tamaño deber saber que su materia prima es el programador, es su activo mas importante, le deben su existencia  y por lo tanto, la estrella de la empresa debe ser el programador, por lo mismo hay que tenerlo mimado, contento y bien alimentado, si queremos tener productos finales de calidad, la materia prima debe ser de también de buena calidad.&lt;br /&gt;&lt;br /&gt;La semana pasada aprovechando una visita que por motivos de trabajo tuve que hacer al norte del país, tuve el gusto de cenar un par de veces con un estupendo amigo de muchos años, programador y dueño de su empresa de software.&lt;br /&gt;&lt;br /&gt;Me dió muchismo gusto verlo y ver lo ha hecho gracias al software (hecho en (x)Harbour por cierto), pasó a buscarme en un cochazo ultimo modelo, fuimos a cenar a unos sitios magnificos, y me comentó una cosa que me hizo pensar.... &lt;span style="font-style: italic;"&gt;- a mi que me dejen programar, y que los vendedores hagan su trabajo -&lt;/span&gt;, -yo-, me dijo,- no vendo, para eso tengo vendores, yo programo, lo mio es hacer el software y que los vendedores hagan su trabajo -, siguiendo esta filosofía mi amigo ha logrado tener mas del 60% del mercado del software de punto de venta de su región, y ha penetrado el mercado de Estados Unidos con presencia en ciudades como San Diego y Los Angeles y el único producto que tiene es una Terminal Punto de Venta.&lt;br /&gt;&lt;br /&gt;¿ Cual es el secreto de este tipo de empresas de software exitosas ?, no es el precio del producto, definitivamente, lo que pasa es que han encontrado un NICHO de negocio, un software de alta especilización para un mercado específico.&lt;br /&gt;&lt;br /&gt;¿ Que no hay montones de TPV en el mercado ?, si, hay muchos, pero como dice mi amigo... - yo a mis clientes le vendo la experiencia que he tenido con todos mis otros clientes -, así por ejemplo tiene versiones de su Punto de Venta específicamente diseñadas para carnicerías, con control para básculas,  para farmacias, con un catálogo precargado de mas de 5 mil medicamentos, lo que le ahorra al usuario tener que cargar los productos, versiones para puestos de periódicos y revistas, para dulcerías, panaderías, versiones especiales para cadenas de supermercados, etc. aún dentro de un área de software específica es posible encontrar aún mas especialización.&lt;br /&gt;&lt;br /&gt;Conozco otra empresa de software donde saben que sus programadores son sus estrellas, y el dueño (que también conoce de programación) es un vendedor nato, basta escucharlo hablar de las bondades de su producto para enamorarse de él (del producto). Una de las cosas que mas admiro de esta empresa es que no se cortan un pelo en comprar las herramientas que les piden sus programadores: pagan cursos, adquieren editores, reporteadores, bases de datos, lenguajes, equipos de escritorio y portátiles, todo de última generación para que el programador no se detenga y además se encuentre a gusto (eso sin contar el aire acondicionado las oficinas de cada uno)  ¿ será por eso que sus programadores tienen mas de 10 años con ellos ?, y no son "todologos", solo hacen un software de nómina y solo eso.&lt;br /&gt;&lt;br /&gt;Y no son empresas del extranjero como &lt;a style="font-weight: bold; font-style: italic;" href="http://www.time.com/time/photoessays/2006/inside_google/"&gt;Google&lt;/a&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; &lt;/span&gt;o &lt;a style="font-weight: bold; font-style: italic;" href="http://www.joelonsoftware.com/items/2008/12/29.html"&gt;Fog Creek Software&lt;/a&gt;, son empresas donde trabaja algún colega programador que conoces muy bien, solo que estas empresas han entendido la importancia del programador.&lt;br /&gt;&lt;br /&gt;Aún siendo programador independiente, definitivamente te debes mimar y tratar de tener las mejores herramientas para realizar mejor tu trabajo, no pretendo que seas &lt;a href="http://www.stefandidak.com/office/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Stefan Didak&lt;/span&gt;&lt;/a&gt;, pero si es importante que tengas un espacio adecuado donde te sientas a agusto y la musa de la programación pueda correr libremente.&lt;br /&gt;&lt;br /&gt;¿ Que tal un comedor en la empresa con horno para asar un cordero incluído y una estupenda colección de vinos ? ¿ o una zona de descanso con máquinas expendedoras de café, refrescos y golosinas para que no tengas que salir a la calle ?¿ Que me dices de unas oficinas en Cancún ? ¿ o programar tranquilamente sentado en una cafetería mirando al mar ? ¿ que tal tener vacaciones familiares en Orlando, Las Vegas o Nueva York cuando sientas que las necesitas ?, o poder tener un iPad o un MacBook Air como equipos de "capricho" ¿ que tal un BMW Serie 5 o un Mercedes descapotable afuera de tus oficinas ?, si crees que no hay programadores que hagan o tengan eso, estas muy muy muy equivocado, todas las descripciones anteriores corresponden a empresas donde yo he estado y veo como cuidan a sus programadores, lo mas curioso de todo, es que en todas esas oficinas y negocios que parecen salidos de un cuento de hadas informático programan en (x)Harbour y quizá alguna vez te hayas topado con algún programador que trabaja ahí ya sea en el messenger o  en un foro.&lt;br /&gt;&lt;br /&gt;¿ Donde está el secreto ?.... podría resumirlo en lo siguiente:&lt;br /&gt;&lt;br /&gt;1) Venden software que cubre una necesidad muy especifica.&lt;br /&gt;2) Están enfocados en un nicho del mercado muy particular, es decir, con muy pocos competidores.&lt;br /&gt;3) Sus programas funcionan, hacen lo que tienen que hacer, y lo hacen bien, porque tienen buenos programadores.&lt;br /&gt;4) Generan muchas ventas porque tienen un equipo de vendedores comprometido, que sabe lo que están vendiendo.&lt;br /&gt;5) Cuentan con herramientas y tecnología, los programadores no tienen que estar perdiendo el tiempo buscando el crack de tal o cual programa, porque si lo necesitan, simplemente lo compran y así terminan antes.&lt;br /&gt;6) El &lt;a href="http://positivesharing.com/2006/10/10-seeeeeriously-cool-workplaces/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;medio ambiente de trabajo&lt;/span&gt;&lt;/a&gt; es agradable.&lt;br /&gt;&lt;br /&gt;y lo mas importante, que es donde se genera el flujo económico para la empresa:&lt;br /&gt;&lt;br /&gt;7) Le solucionan un problema al usuario final.&lt;br /&gt;&lt;br /&gt;Podría seguir hablando de estrategias para hacer rentable un negocio de software, creo que sería un buen tema de un futuro post de O.P.&lt;br /&gt;&lt;br /&gt;Moraleja: Si sabes programar pero no vender... ni lo intentes, si sabes vender pero no programar... tampoco lo intentes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1095801551863464733?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1095801551863464733/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1095801551863464733' title='15 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1095801551863464733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1095801551863464733'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/08/si-programas-no-vendas-si-vendes-no.html' title='Si programas no vendas, si vendes no programes'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-6728257113402210093</id><published>2010-08-01T18:08:00.002-05:00</published><updated>2010-08-06T02:12:06.984-05:00</updated><title type='text'>Revalorizando al programador.</title><content type='html'>Siempre me ha gustado programar, me encanta, me fascina, me entreteniene y me ayuda a mantener el cerebro ocupado, programando me siento en mi elemento.&lt;br /&gt;&lt;br /&gt;Yo no entendía porqué a muchos de mis compañeros de universidad le urgía deshacerse del tema programación, de hecho algunos de ellos están en "otro mundo" que nada tiene que ver informática, y no les va nada mal, tengo compañeros que son mecánicos automotrices, otros que son plomeros, otro que es mueblero, aunque la mayoría ocupa puestos directivos en las área de TI (Tecnologías de la Información), hace mucho que dejaron de programar.&lt;br /&gt;&lt;br /&gt;Hace un par de años escribí un artículo sobre la escasez de programadores que nos estaba afectando, no había nadie que quisiera hacer un programa, ya fuera comercial, a la medida, por encargo, nadie levantaba la mano cuando alguien decía ¿ quien me puede hacer un programa ?.&lt;br /&gt;&lt;br /&gt;Existen muchas razones por las que la gente deja de programar, sí, es una profesión ingrata, si no se sabe manejar, alguna vez leí en un artículo una frase que me pareció muy interesante: La programación es una lotería: Te juegas todo y solo hay 2 posibles resultados, o triunfas rotundamente o te arruinas, pero no hay terminos medios.&lt;br /&gt;&lt;br /&gt;Una de las razones por las que la gente no programa es porque piensa que no es una profesión bien remunerada, y quizá tiene razón, sin embargo conozco empresas líderes del software de gestión que tienen mas de 500 empleados, de los cuales los programadores no pasan de 50 (creo que exagero)  y que venden miles de productos cada año, claro, sus ingresos son de varios millones, pero también sus gastos.... pero.... ¿  me creerías que hay empresas que tienen ingresos promedio de 10 millones de dolares en un año con menos de 8 empleados ?&lt;br /&gt;&lt;br /&gt;No, no fabrican ERPs basados en Oracle, ni sistemas operativos, ni suites ofimáticas, sus aplicaciones son tan simples como blocks de notas, programas de conversión de moneda o programas para dividir la cuenta cuando vamos a un restaurante e incluir la propina y hasta juegos que van de lo mas simple hasta aventuras en tercera persona.... son programas que cuestan 1, 3 y hasta 10 dólares, lo que pasa es que se venden MILLONES de copias de ellos.&lt;br /&gt;&lt;br /&gt;Este singular fenómeno se debe a los Smartphones, ya sea basados en Windows Mobile (los menos) en Blackberry, Symbian, iPod-Phone y el nuevo chico del barrio: Android, las famosas "APPS" se están convirtiendo en una fuente de ingresos millonarios para pequeñas empresas o programadores independientes.&lt;br /&gt;&lt;br /&gt;No es complicado adivinar porqué, ¿ cuantas personas en el mundo tienen una computadora ?, si tomamos en cuenta el total de la población mundial, muy pocas personas en el mundo tienen acceso al uso y disfrute de una computadora, sin embargo ¿ Cuantas personas tienen un telefóno movil ?, fácilmente 20 o 30 veces mas que las personas que tienen una computadora, hay paises donde hay el mismo número de teléfonos celulares que de habitantes, en Chile por ejemplo hay 1.5 teléfonos celulares por habitante !!!!!!.&lt;br /&gt;&lt;br /&gt;Cuando escogemos un teléfono no buscamos uno "para hablar" buscamos uno que lo haga todo, que tenga MP3, que se conecte a Internet, que pueda ver mi correo electrónico, que pueda "Twittear" y ver "el feis" y que escogermos.... un "Smartphone" sin duda, y como aprendimos en la escuela, para que hardware funciones bien, esos teléfonos de super alta tecnología requieren del software adecuado, las famosas "APPS".&lt;br /&gt;&lt;br /&gt;El el mercado es enorme, Apple con su iPod/iPhone redefinió la manera en que comercializaba la música, llegando al grado de reinventar la industria disquera, y que decir de la industria del software, se calcula que el rey de las APPS y el que inició esto de los programas para teléfonos inteligentes, el iPod/iPhone, ha vendido mas de 70 millones de unidades entre los dos..... ¿ como ? .... ¿ hay 70 millones de posibles clientes de una "APP" ?.&lt;br /&gt;&lt;br /&gt;Y más, los Blackberrys, teléfonos enfocados a los negocios, han vendido unos 25 millones de unidades, llevamos 95 millones, cifra que puede llegar tranquilamente a los 150 millones de teléfonos inteligentes si contamos a los basados en otros sistemas operativos como Android, Windows Mobile, OVI o Symbian.&lt;br /&gt;&lt;br /&gt;Hay toda una economía basada en las APPS para smartphones, un mercado millonario, por ejemplo la tienda de Apps de iTunes tiene cerca de 24 mil apps para iPod/iPhone, si dividimos 75 millones de iphones entre 24 mil apps, a cada APP  le tocan unos 3,000 clientes.&lt;br /&gt;&lt;br /&gt;Aun mas, hay empresas que "rentan" sus Apps por un pago mensual, como si fuera un servicio mas como la luz o el teléfono, están surgiendo empresas especializadas en desarrollo de APPs para sistemas operativos específicos, y dado que son programas para una aplicación muy específica, estos se cotizan caros.&lt;br /&gt;&lt;br /&gt;Pero ahora me pregunto.... ¿ porqué usar un smartphone en vez de una computadora "decente" ?, si por ejemplo una netbook tiene mas capacidad que un Smartphone, tiene mas almacenamiento, mas pantalla  y mas todo.&lt;br /&gt;&lt;br /&gt;La respuesta es simple, un smartphone es mas portable que la computadora portatil mas pequeña que se encuentre en el mercado.&lt;br /&gt;&lt;br /&gt;Un teléfono inteligente te lo puedes meter en un bolsillo, una netbook no, a un teléfono encendido permanentemente,  la batería le puede durar 2 o 3 días si no lo utilizas mucho, a un portatil no le dura mas de 2 horas, quizá no será tan barato como una netbook, pero sus pequeñas pantallas, su autonomía de batería, su capacidad de servir como dispositivo de comunicación ya sea como teléfono o conectándose a Internet, hacen que un smartphone sea una plataforma de trabajo bastante apetecible.&lt;br /&gt;&lt;br /&gt;Así pues, se abre un interesante mercado para todos aquellos programadores que se atrevan con otros sistemas operativos, hay programadores independientes que solo han hecho 1 o 2 apps pero que han vendido 10 millones de copias, a precios menores de 5 dolares, la verdad, me gusta la combinación, programas útiles y baratos, habrá que tener el mercado en la mira.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-6728257113402210093?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/6728257113402210093/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=6728257113402210093' title='6 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6728257113402210093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6728257113402210093'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/08/revalorizando-al-programador.html' title='Revalorizando al programador.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-3157350040326108986</id><published>2010-07-07T23:59:00.002-05:00</published><updated>2010-07-08T21:32:46.004-05:00</updated><title type='text'>Programar bien y programar bonito</title><content type='html'>Buena pregunta.....&lt;br /&gt;&lt;br /&gt;¿ Tu programas bien o programas bonito ?&lt;br /&gt;&lt;br /&gt;¿ Tienes estándares de programación ?&lt;br /&gt;¿ Haces códigos fuentes de menos de 1000 lineas ?&lt;br /&gt;¿ Usas notación húngara ?&lt;br /&gt;¿ Tus tablas están diseñadas siguiendo el modelo Entidad-Relación ?&lt;br /&gt;¿ Los nombres y tipos de tus campos son coherentes entre las tablas que los usan ?&lt;br /&gt;&lt;br /&gt;Eso en cuanto a programar bien, ahora en cuanto a programar bonito&lt;br /&gt;&lt;br /&gt;¿ Comentas tus códigos fuentes ?&lt;br /&gt;¿ Identas correctamente el código ?&lt;br /&gt;¿ DISEÑAS TU INTERFACE CORRECTAMENTE ?&lt;br /&gt;&lt;br /&gt;En este último punto es donde todos fallamos, me incluyo.&lt;br /&gt;&lt;br /&gt;Hace muchos años, durante la época del MS-DOS, realmente no existía un estándar para desarrollar una interfaz con el usuario, así que teníamos la libertad de hacer lo que nos diera la gana al momento de diseñar la interfaz de nuestros programas, eso era el salvaje oeste, y lo que para algunos podría parecer un asco de interfaz, para otros era útil, sencilla o práctica o simplemente los usuarios se han acostumbrado a ella, pero en 1987 las cosas cambiaron radicalmente.&lt;br /&gt;&lt;br /&gt;En 1987 IBM propuso un estándar de interfaz con el usuario a la que llamó &lt;a href="http://en.wikipedia.org/wiki/IBM_Common_User_Access"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;CUA (Common User Access)&lt;/span&gt;&lt;/a&gt;, el estándar CUA es (se sigue usando y tu lo usas todos los días aunque no lo sepas) un conjunto de especificaciones detalladas y reglas estrictas sobre la apariencia y la manera en que las aplicaciones deberían de funcionar, este fue el primer intento de poner en orden a las aplicaciones basadas en DOS, que como comenté anteriormente, hasta ese momento implementaban diferentes interfaces con el usuario.&lt;br /&gt;&lt;br /&gt;IBM adoptó este estándar en todas sus aplicaciones y sistemas operativos, y también lo hizo Microsoft, así que, mi querido lector, tu usas CUA todos los días cuando trabajas con Windows, ya que las interfaces de este sistema operativo están ampliamente basadas en CUA.&lt;br /&gt;&lt;br /&gt;El estándar CUA, a pesar de tener 23 años de edad, especifica cosas haces todos los días en tu trabajo diario, y que los programas que tu desarrollas deberían tener, como por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Todas las operaciones se deben poder hacer con el ratón,  pero también con teclado, sin intervención del roedor.&lt;/li&gt;&lt;li&gt;Las opciones del menú se deben abrir usando la tecla Alt+Letra subrayada&lt;/li&gt;&lt;li&gt;Un grupo de opciones de un programa debe ser capturado usando dialogos, no ventanas&lt;/li&gt;&lt;li&gt;Las opciones en un diálogo se dividen usando pestañas, no se hacen dialogos larguísimos que se tengan que desplazar para capturar todas las opciones necesarias&lt;/li&gt;&lt;li&gt;La navegación dentro de un campo en un diálogo es con las flechas del cursor, la navegación entre los campos hacia adelante se hace con la tecla Tab; la tecla Shift+Tab navega hacia el campo anterior.&lt;/li&gt;&lt;li&gt;Los diálogos deben tener siempre un botón CANCELAR cuya operación debe relacionarse con la tecla ESC, y siempre se debe usar para descartar los cambios realizados en los campos capturados dentro del diálogo.&lt;/li&gt;&lt;li&gt;Los diálogos deben tener siempre un botón ACEPTAR, el cual acepta los cambios realizados en el diálogo y esta asociado siempre con la tecla ENTER&lt;/li&gt;&lt;li&gt;Todas las aplicaciones deben tener una opción de AYUDA en el menú, esta opción debe ser SIEMPRE la última del menú, la ayuda en línea para un caso específico debe ser invocada por la tecla F1&lt;/li&gt;&lt;li&gt;La primera opción del menú debe ser SIEMPRE la opción ARCHIVO, seguida siempre por la opción EDITAR&lt;br /&gt;&lt;/li&gt;&lt;li&gt;El comando CORTAR son las teclas SHIFT+DEL, COPIAR son las teclas CTRL+INS y PEGAR son las teclas SHIFT+INS&lt;/li&gt;&lt;li&gt;etc., etc., etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Detengo la lista hasta aquí porque estoy seguro que TOOOODOS tus programas siguen al pie de la letra el estándar CUA, el cual, dicho sea de paso, hace que tu aplicación califique como "compatible con Microsoft Windows".&lt;br /&gt;&lt;br /&gt;Seguramente tu no eres de esos que pone degradados de colores en los fondos de sus programas, no no no no, ¿ como lo vas a hacer ?, eso no está documentado en CUA, ni pone botones de 30 colores diferentes con bitmaps  y seguramente sabes usar perfectamente una RibbonBar, no la pones en tus programas nada mas porque la acaban de incluir en la última versión de tu herramienta de programación o porque viene en Office 2007, estoy seguro que sabes como dividirla y cuando usar cada componente, después de todo programas BIEN para Windows ¿ no ?.&lt;br /&gt;&lt;br /&gt;Bueno, como todo lo anterior es cierto (programas BIEN en Windows), gracias por leer este artículo, nos veremos próximamente con algo más interesante, ¡ Hasta la próxima !&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;¿ Como ?...... ¿ sigues ahí ?.....&lt;br /&gt;&lt;br /&gt;Ok, ok, si sigues ahí es porqué seguramente te sentiste identificado con algo que mencioné que tu NUNCA haces en tus programas.&lt;br /&gt;&lt;br /&gt;Hace unos días estaba mirando en Facebook las imagenes que puso un colega programador de su aplicación...... oh my dog !.... con RibbonBar, OutlookBar, Menú, todo metido en la ventana principal, dialogos con fondos degradados, mensajes por todos lados, imagenes de distintos estilos por todos sitios.... y lo peor, los mismos colegas programadores comentado ....oooohhh que bonita aplicación......&lt;br /&gt;&lt;br /&gt;No digo que la aplicación no se viera bonita, pero hay una línea muy fina entre lo bonito y lo grotesco, la verdad no sabría yo calificar si eso era bonito, o era grotesco.&lt;br /&gt;&lt;br /&gt;Hasta ahora no he visto ninguna aplicación, salvo el WinZip o el Office 2007 que utilicen una RibbonBar como se debe y son muy pero muy muy muy pocos programas que me ha tocado usar, especialmente de desarrolladores independientes y aún de empresas que se dedican al desarrollo de software  que pasarían una certificación de Microsoft.&lt;br /&gt;&lt;br /&gt;No basta con que tu programa corra en Windows con una interfaz gráfica, tampoco basta decir que tu programa es "Compatible con Microsoft Windows" (y encima nos damos el lujo de decir con Windows XP y superiores 32 o 64 bits), hay que demostrar que tu programa realmente es 100% Windows compatible.&lt;br /&gt;&lt;br /&gt;Para que un programa sea 100% Windows compatible, tiene que seguir el estricto estándar que Microsoft ha impuesto para el desarrollo de aplicaciones Windows compatibles.&lt;br /&gt;&lt;br /&gt;Cada vez que Microsoft libera una versión de Windows, también publica una "guía" de la interacción que el usuario debe tener con el sistema operativo, elegantemente le llama "&lt;span style="font-style: italic;"&gt;User Experience Interaction Guidelines&lt;/span&gt;" y está disponible en el MSDN como archivo PDF, te voy a ahorrar la molestia de buscarla, pero vas a tener que seguir leyendo hasta el final.&lt;br /&gt;&lt;br /&gt;En este documento, de 867 páginas y 41 Mbytes de tamaño, Microsoft explica todos los controles que se usan en la interfaz de Windows, así como también explica detalladamente como y cuando deben de ser utilizados, como deben ser emplazados dentro de un diálogo o ventana, que distancia debe de existir entre ellos.&lt;br /&gt;&lt;br /&gt;Otra cosa que también documenta es la lista de "violaciones" mas comunes que hacemos los programadores cuando estamos diseñado la interfaz de nuestros programas, como por ejemplo no usar textos en color azul porque el usuario asume que son links de internet, siempre coloca un boton CANCELAR, , usa tooltips solo cuando el control no tenga etiqueta, asigna  aceleradores a todas la etiquetas de controles, el orden de TAB siempre debe ser de izquierda a derecha y de arriba hacia abajo, en los mensajes de tus programas no uses las palabras ERROR, FALLA, ILEGAL, VIOLACION, ABORTAR, FATAL, eso espanta a los usuarios, etc. etc. etc.&lt;br /&gt;&lt;br /&gt;Lo que mas me gustó de la guía es que incluye una sección sumamente detallada del uso de controles, como usarlos adecuadamente, cuando tal control puede ser reemplazado por otro de otro tipo, cuando NO usar tal o cual control, baste con decir que la guía es tan detallada que solo la sección que trata del Checkbox ocupa 5 paginas, indicando con todo detalle ejemplos y casos de uso, solo como comentario, ¿ Sabias que la distancia que debe existir entre un LABEL y un CHECKBOX es de 5 pixeles y que la distancia entre cada CHECKBOX cuando hay varias opciones debe ser de 7 pixeles y que el tamaño del control debe ser de 10 pixeles de altura ?, bueno así como se detalla el Checkbox, se detallan el resto de los controles.&lt;br /&gt;&lt;br /&gt;Mención por separado merece la documentación de la creación y uso de la RibbonBar, esta si es una obra maestra de la documentación, en 33 páginas te documenta, detale a detalle, cada elemento de una RibbonBar, y la forma correcta de usarlo, una vez que leas esta documentación te darás cuenta si realmente la RibbonBar está bien soportada e implementada en tu lenguaje de programación.&lt;br /&gt;&lt;br /&gt;A estas alturas te podrías estar preguntando ¿ y realmente hay programas que respeten todo lo que dice el documento ?.... ¡ pues claro que los hay !, TODOS los programas que vienen en el sistema operativo de Windows y en genera TODOS los programas de Microsoft son diseñados siguiendo estrictamente las reglas de la UX Guide.&lt;br /&gt;&lt;br /&gt;La UX Guide la puedes descargar haciendo &lt;a href="http://www.ciber-tec.d2g.com/objeto/UXGuide.zip"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Click aquí.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La mala noticia es que está todo en inglés y no existe versión en Español, por lo menos hasta el día en que descargué el documento, de todas formas la guía incluye una estupenda información que te ayudará a hacer programas mas poderosos y bonitos.&lt;br /&gt;&lt;br /&gt;Ahora sí, programarás bien y programarás bonito.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-3157350040326108986?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/3157350040326108986/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=3157350040326108986' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3157350040326108986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3157350040326108986'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/07/programar-bien-y-programar-bonito.html' title='Programar bien y programar bonito'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7661677032098679525</id><published>2010-07-06T10:00:00.002-05:00</published><updated>2010-07-06T12:20:06.974-05:00</updated><title type='text'>Ley de Protección de Datos personales EN VIGOR</title><content type='html'>Esto ya lo esperábamos desde Mayo de este año, solo faltaba hacerlo oficial.&lt;br /&gt;&lt;br /&gt;El día de ayer, Lunes 6 de Julio del año 2010 se ha publicado en el Diario Oficial de la Federación la &lt;span style="font-weight: bold;"&gt;&lt;a href="http://dof.gob.mx/nota_detalle.php?codigo=5150631&amp;amp;fecha=05/07/2010"&gt;Ley Federal de Protección de Datos Personales en Posesión de los Particulares&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok, muy bien por nuestros legisladores, por fin están trabajando, ¿ pero como me afecta a mí como particular o como desarrollador de programas esta ley ?.&lt;br /&gt;&lt;br /&gt;Bueno, como profesionales de las TI (Tecnologías de Información) en nuestro trabajo diario tenemos que usar diariamente datos personales de otras personas.&lt;br /&gt;&lt;br /&gt;Citemos un ejemplo: Si yo desarrollo un sistema de nómina, tengo acceso a datos reales y verificables del personal de una empresa, si mi sistema es de facturación también cuento con datos personales de mis clientes, etc.&lt;br /&gt;&lt;br /&gt;Para efectos prácticos, los datos personales tienen categorización, es decir, hay datos personales "muy sensibles" y datos personales menos sensibles, por ejemplo tu nombre, tu, edad, incluso tu dirección de residencia, son datos POCO SENSIBLES, porque los sabe todo el mundo y todo el mundo puede tener acceso a ellos, aparecen en tu credencial del IFE (DNI en México) o bien en el directorio de las páginas blancas.&lt;br /&gt;&lt;br /&gt;Sin embargo hay otros datos mas sensibles, como tu sueldo mensual, el dinero que tienes en el banco, el número de tus tarjetas de crédito, cuantos hijos tienes, tus datos fiscales de facturación, e incluso el nombre de tu perro, que tienen mayor grado de sensibilidad.&lt;br /&gt;&lt;br /&gt;Pues bien a partir del día de ayer en México, los datos personales que tu entregues a otra persona, física o moral, están resguardados y protegidos por una Ley, y por ende, si tu desarrollas un sistema que manipule este tipo de datos, estarás obligado, de acuerdo al Artículo 3 párrafo 1,  a informar a la persona que te proporciones sus  datos personales, sobre el uso y tratamiento que le darás a dichos datos mediante un aviso de confidencialidad, algo que nosotros hemos estado haciendo desde hace algún tiempo en los formularios que tenemos en internet para colecta de información:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="font-style: italic;" class="Estilo1"&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;Política de Privacidad&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;       &lt;p style="font-style: italic;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span class="Estilo1"&gt;Por medio del presente  aviso, &lt;strong&gt;CIBERNETICA  Y TECNOLOGIA, S.A. DE C.V&lt;/strong&gt;., (CiberTec) con domicilio en Ave.  Valle de Toluca # 25, 1er Piso Oficina 3, Fracc. El Mirador, Naucalpan,  Estado de México, de acuerdo  con las regulaciones nacionales   vigentes, informa de su política de protección de los  datos de carácter  personal a fin de informar a los usuarios del  tratamiento de los datos  personales que se le solicitan con ocasión de  la suscripción a  servicios ofrecidos a través de los sitios web  "&lt;strong&gt;ciber-tec.com&lt;/strong&gt;"  y "&lt;strong&gt;ciber-tec.d2g.com&lt;/strong&gt;".&lt;br /&gt;       &lt;br /&gt;        El usuario garantiza, en cualquier caso, que los datos  facilitados son  veraces, reservándose CiberTec el derecho a excluir de  los servicios  registrados a todo usuario que haya facilitado datos  falsos, sin  perjuicio de las demás acciones que procedan en Derecho. En   consecuencia, CiberTec se exonera de cualquier responsabilidad  derivada  del incumplimiento por el usuario de esta garantía.&lt;br /&gt;       &lt;br /&gt;        De acuerdo con la normativa nacional vigente en materia de  protección de datos  el usuario acepta que los datos personales  aportados para su acceso a  algunos de los servicios de los sitios web&lt;strong&gt;  ciber-tec.com&lt;/strong&gt; y&lt;strong&gt; ciber-tec.d2g.com,&lt;/strong&gt; sean  incorporados a un archivo  automatizado de datos de carácter personal  cuya titularidad  corresponde a CiberTec, con la finalidad de gestionar  los servicios  contratados, para la realización de tareas básicas de  administración,  así como para mantenerle informado, de comunicaciones  que CiberTec pueda considerar de interés para el usuario. En los  formularios se indicará del  carácter obligatorio u optativo de los  campos a cumplimentar.&lt;br /&gt;       &lt;br /&gt;        CiberTec se compromete al cumplimiento de su obligación de  secreto de los  datos de carácter personal, a su tratamiento con  confidencialidad, de  manera que con carácter previo a cualquier otro  uso o finalidad de los  archivos propiedad de CiberTec, se solicitará el  consentimiento del  usuario conforme a la Ley Federal de Protección de Datos Personales en manos de Particulares.&lt;br /&gt;       &lt;br /&gt;        Cualquier usuario registrado cuyos datos de carácter personal  estén  incorporados en archivos  de CiberTec, puede en cualquier momento  ejercer el  derecho a acceso, rectificación, cancelación y oposición, a  través de un formulario diseñado para tal fin. Lo anterior sin  perjuicio de los servicios   de acceso, rectificación y revocación del  consentimiento que, en su  caso, CiberTec hubiera puesto a disposición  del usuario en las pantallas  de los respectivos servicios.&lt;br /&gt;       &lt;br /&gt;    CiberTec  garantiza que ha adoptado las medidas oportunas de  seguridad en  sus instalaciones, sistemas y archivos, así como la  confidencialidad de  sus datos de carácter personal.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;Por otro lado, en el artículo 19, la ley establece que:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-style: italic;"&gt;Artículo 19.-  Todo responsable que lleve a cabo tratamiento de datos personales deberá  establecer y mantener medidas de seguridad  administrativas, técnicas y físicas que permitan proteger los datos  personales contra daño, pérdida, alteración,  destrucción o el uso, acceso o tratamiento no autorizado.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con lo cual, nuestros datos almacenados en una base de datos, deberán estar encriptados para garantizar que un programa cumple con la Protección de Datos.&lt;br /&gt;&lt;br /&gt;La ley fue publicada el día de ayer en el diario oficial de México y aun falta establecer la normatividad correspondiente.&lt;br /&gt;&lt;br /&gt;Siendo que esta ley está basada en el modelo Español de Ley Organica de Protección de Datos Personales (LOPDP), sería interesante conocer la normatividad que existe en España aplicable a los programas de cómputo para cumplir con la ley.&lt;br /&gt;&lt;br /&gt;Si quiere hechar un vistazo, la ley completa está disponible en la web del &lt;a style="font-weight: bold; font-style: italic;" href="http://dof.gob.mx/nota_detalle.php?codigo=5150631&amp;amp;fecha=05/07/2010"&gt;Diario Oficial de la Federación.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7661677032098679525?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7661677032098679525/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7661677032098679525' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7661677032098679525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7661677032098679525'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/07/ley-de-proteccion-de-datos-personales.html' title='Ley de Protección de Datos personales EN VIGOR'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-3136039343068450969</id><published>2010-07-01T21:19:00.001-05:00</published><updated>2010-07-02T13:27:20.163-05:00</updated><title type='text'>Plática de Factura Electrónica en Cancún</title><content type='html'>Por invitación de mi querídismos amigos de &lt;a href="http://www.sanroms.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Sanroms Software de México,&lt;/span&gt;&lt;/a&gt; los próximos  dias 15, 16, 17 y 18 de Julio estaré visitando Cancún con 2 motivos:&lt;br /&gt;&lt;br /&gt;El  primero, asistir a la presentación de los nuevos productos de Sanroms  rediseñados totalmente en Xailer, después de una larga jornada de mas de  8 meses de duro trabajo, dejamos atrás definitivamente FiveWin y  Sanrom's entra  en una nueva era en el desarrollo de programas.&lt;br /&gt;&lt;br /&gt;La  presentación de los sistemas Sanrom's, está enmarcada en el ShowRoom de  su nuevo producto de Hardware: Los pizarrones electrónicos SmartBoard,  la presentación de los productos nuevos de Sanrom's se hará mostrando  esta nueva herramienta tecnológica con múltiples aplicaciones para la  educación&lt;br /&gt;&lt;br /&gt;Y bueno ya que entre los nuevos productos de Sanroms  está INVOICE, un programa de emisor de Facturación Electrónica, el cual  está desarrollado, obivamente, utilizando nuestra herramienta &lt;a style="font-weight: bold; font-style: italic;" href="http://www.ciber-tec.com/CiberSAT"&gt;CiberSAT para (x)Harbour&lt;/a&gt;,  pues yo aprovecharé para dar una pequeña plática sobre la factura  electrónica en México y como Sanrom's Invoice te puede ayudar a  solucionar tu problema.&lt;br /&gt;&lt;br /&gt;Si estás interesado en asistir, ya sea  porque quieres ver como se migró un programa de FiveWin a Xailer, o bien  porque te interesa saber un poco mas de Facturación Electrónica, o  simplemente para saludar, estos son los datos para asistir al ShowRoom,  el cual es &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;GRATUITO&lt;/span&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Viernes 16 de Julio&lt;br /&gt;Hotel Plaza&lt;br /&gt;Sala  Roble.&lt;br /&gt;B2B Malecón Cancún&lt;br /&gt;&lt;br /&gt;Habrá 3 presentaciones: 10 am, 13 y  17 hrs.&lt;br /&gt;&lt;br /&gt;Es necesario hacer reservación para asistir llamando a:&lt;br /&gt;&lt;br /&gt;Sanrom's  Software de México&lt;br /&gt;01 800 832 1928&lt;br /&gt;Atn. Lic. Carolina Leal.&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.sanroms.com/"&gt;www.sanroms.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-3136039343068450969?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/3136039343068450969/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=3136039343068450969' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3136039343068450969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3136039343068450969'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/07/platica-de-factura-electronica-en.html' title='Plática de Factura Electrónica en Cancún'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-159581667646324094</id><published>2010-06-19T21:38:00.003-05:00</published><updated>2010-06-20T23:27:46.230-05:00</updated><title type='text'>¿ Quien es el amigo de mi padre ?....</title><content type='html'>Miiiiii paaaadre......&lt;br /&gt;&lt;br /&gt;Hoy es el día de los padres en México y creo que en muchos paises de América.&lt;br /&gt;&lt;br /&gt;En España esta fecha es el día de San José,  (19 de Marzo) pero aquí en México, la fecha se celebra el tercer domingo de Junio.&lt;br /&gt;&lt;br /&gt;De un post en Facebook de mi amigo Marte Martínez encontré este CLASICO de los dibujos animados para el día del padre.&lt;br /&gt;&lt;br /&gt;Me trae unos recuerdos ...... espectaculares..... me he partido de risa un buen rato, principalmente porque mi padre para mí y desde mi muy particular punto de vista, siempre ha sido el mejor padre del mundo (será que es el único que tengo y que me dure muchos años mas por favor).&lt;br /&gt;&lt;br /&gt;Con todo mi cariño para los padres en su día:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rfSgK_nGJQU&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/rfSgK_nGJQU&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-159581667646324094?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/159581667646324094/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=159581667646324094' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/159581667646324094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/159581667646324094'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/06/quien-es-el-amigo-de-mi-padre.html' title='¿ Quien es el amigo de mi padre ?....'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-3208868662498431070</id><published>2010-06-18T14:54:00.003-05:00</published><updated>2010-06-18T16:46:36.379-05:00</updated><title type='text'>Telmex aumentó la velocidad.... pero no a todos.</title><content type='html'>Acabo de terminar de pasarme 1 hora peleandome con el servicio al cliente de Telmex (que raro).&lt;br /&gt;&lt;br /&gt;No voy a hablar mal de Carlos Slim, a quien conozco personalmente, y por conocerlo personalmente entiéndase haberle saludado en un congreso de empresarios hace unos meses.... Sr. Slim... el Sr. Flores, empresario informático.... (yo:) encantado Don Carlos, un honor, (Slim:) igualmente  -saludo de mano.... y pasemos al siguiente invitado-.&lt;br /&gt;&lt;br /&gt;Sigo sin lavarme la mano a ver si se me pega algo de uno de los 2 hombres mas ricos del mundo y mientras espero, me peleo con una de sus muchas empresas: Telmex.&lt;br /&gt;&lt;br /&gt;Hace unos meses publiqué aquí que Telmex aumentaba la velocidad de sus servicios ADSL Infinitum, lo que no informaron fue que la política de aumento es ... &lt;span style="font-style: italic;"&gt;"al que no habla, Dios no lo escucha".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;¿ Alguno de ustedes ha revisado alguna vez su velocidad de Internet ?, yo lo hago todo el tiempo , esté donde esté, lo primero que  hago cuando llego a cualquier sitio que tenga internet y me permita conectarme, es entrar en la página de uno de los velocímetros mas confiables Internet:&lt;a href="http://www.speedtest.net"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; SpeedTest &lt;/span&gt;&lt;/a&gt;para verificar mi velocidad de conexión. Así me he encontrado con muy gratas sorpresas como que en Canadá la velocidad promedio en los hoteles es de 6 Mbps, en Starbucks en USA es de  3 Mbps y no tan gratas como en Starbucks de México la velocidad anda por los 2 Mbps, igual que en el Aeropuerto Terminal 2 y que el 3G de Telcel (otra compañía de Slim) me da, dependiendo de donde me encuentre, la hora del día (y supongo que del signo zodiacal que toque ese día) de 256 kbps, hasta 1.8 Mbps. (Todo México es territorio Telcel....¡ ja !).&lt;br /&gt;&lt;br /&gt;Todo este rollo previo es porque hace una semana exactamente, leía en el periódico que Telmex había aumentado a 5 Mbps la velocidad de acceso en los sitios públicos del servicio Prodigy Móvil (servicio al que tienes derecho sin costo adicional si eres cliente del ADSL Infinitum), esto con la intención de que las personas pudieran ver por internet los partidos del mundial.&lt;br /&gt;&lt;br /&gt;Bien por ellos y los que pagamos mensualmente nuestro servicio .... ¿ cuando ?, lo peor vino cuando ayer hice el pago de mi recibo telefónico,  me llamó la atención que en &lt;a href="http://www.telmex.com/mx/negocio/internet/banda-ancha.html"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;el portal Negocios de Telmex&lt;/span&gt;&lt;/a&gt; aparecían las velocidades de los paquetes de conexión a Internet: 2 Mbps por $ 404.84 (32.00 USD / 26.00 EUR), 4 Mbps por $ 706.08 (56.00 USD / 45.00 EUR) y &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;6 MBPS por $ 1,209.42 (96.00 USD / 78.00 EUR)&lt;/span&gt;&lt;/span&gt;, (ya lo sé es carísimo comparado con lo que velocidades similares cuestan en otros países, incluso con la misma compañía, pero que le vamos a hacer, aquí nos tocó vivir).&lt;br /&gt;&lt;br /&gt;Hago énfasis en el ultimo precio, porque es lo que yo pago mensualmente...... por 4 Mbps de conexión..... ¿ Como ?,  ¿ no eran 6 Mbps por ese precio ?, pues no, sucede que no se cuantos meses llevan cobrándome la tarifa de 6 Mbps y dandome solo 4 Mbps.&lt;br /&gt;&lt;br /&gt;Así que llamé para quejarme, primero, un dolor de cabeza para poder hablar con un ser humano, ya saben .... marque 1 para tal, si desea tal otro marque 2, para quejas marque el 24908590328547834785938573757610, hasta que por fin me atiende, muy amablemente eso si, el Señor "X".&lt;br /&gt;&lt;br /&gt;Le planteo al Sr. "X" que me están cobrando un servicio de 6 Mbps, y que solo tengo 4 Mbps, Mr. "X" me dice.... es que esa velocidad solo aplica para "nuevas contrataciones".... Ok, muy bien, te gusta jugar rudo, va la mía .... bueno, que le parece entonces que me baja la tarifa al servicio de 4 Mbps, que es el que estoy pagando realmente (40.00 dolares mensuales de ahorro en el pago del telefono no te los regala nadie).... errr.... hummm... déjeme revisarlo con mi supervisor.... música de elevador en el teléfono.....&lt;br /&gt;&lt;br /&gt;Le agradezco la espera, mire me dice mi supervisor que para cambios de servicio tengo que transferirlo al área de facturación, le comunico, por favor no cuelgue.... tun tururun tururun tutu..... Telmex buenas tardes le atiende la señorita "Y" en que puedo servirle.... mismo planteamiento que al Sr. "X".... hummm errr... dejeme revisarlo con mi supervisor.... otra vez la música...... disculpe la espera, mire, me dice mi supervisor que el aumento de velocidad es para todos los clientes, pero se realiza poco a poco, tiene que esperar a que le toque y automáticamente tendrá la nueva velocidad.... otra a la que le gusta jugar rudo, va el contraataque.... Muy bien, lo entiendo, y mas o menos para cuando me tocará el aumento..... pues no lo sé, puede ser que el mes entrante o después.... se quiere escapar como el otro... bueno y que le parece entonces que mientras me toca el aumento, me reduce la cuota a la de 4 Mbps, y cuando ya me toque el aumento a 6Mbps lo vuelvo a contratar ..... hummmm, errr, ... dejeme ver nuevamente, no cuelgue por favor ...... publicidad de Telmex en vez de la música ...... Le sigo atendiendo, mire le voy a transferir al área de Infinitum &lt;span style="font-weight: bold; font-style: italic;"&gt;PARA QUE EN ESTE MOMENTO LE AUMENTEN SU VELOCIDAD,&lt;/span&gt; no cuelque por favor, le transfiero....... mas publicidad de Telmex ...... Telmex buenas tardes le atiende el Sr. "Z", le informo que en las próximas 72 horas tendrá listo su aumento de velocidad, por favor, deme un número de teléfono para avisarle cuando esté listo..... doy el número de teléfono ..... y un teléfono celular ..... ¡ vaya !, primera vez que me piden el numero de teléfono celular..... doy mi numero celular..... pues muchas gracias Sr. Flores, su número de reporte es XXXXXXXXX y queda listo a mas tardar el próximo lunes..... Algo mas en lo que pueda servirle...... no gracias...... Gracias por llamar a Telmex le atendió el Sr. "Z".&lt;br /&gt;&lt;br /&gt;Ha pasado una hora desde que comencé mi conversación con los señores "X", "Y" y "Z", cuelgo el teléfono, me voy detrás de mi computadora, entro a la configuración del router .... que raro no hay conexión...... reinicio el modem...... velocidad de bajada: 6144 .. velocidad de subida: 768.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Al que no habla.... Dios no lo escucha......&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Moraleja: Si estas pagando y no te han aumentado tu velocidad, llámales.... no tires ni regales tu dinero: &lt;span style="font-weight: bold;font-size:130%;" &gt;01 800 123 22 22&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-3208868662498431070?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/3208868662498431070/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=3208868662498431070' title='5 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3208868662498431070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3208868662498431070'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/06/telmex-aumento-la-velocidad-pero-no.html' title='Telmex aumentó la velocidad.... pero no a todos.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5785963983298932820</id><published>2010-06-02T17:35:00.002-05:00</published><updated>2010-06-02T17:57:22.146-05:00</updated><title type='text'>Los juegos mas jugados de Facebook</title><content type='html'>No cabe duda que el mecanismo de socialización que mas repercursiones tendrá en los proximos años serán las redes sociales.&lt;br /&gt;&lt;br /&gt;Como lo comenté en mi muro de Facebook, las redes sociales te acercan a los que están lejos pero a cambio te alejan de los que están cerca.&lt;br /&gt;&lt;br /&gt;Las redes sociales no solo sirven para encontrate con gente que hace 20 años no ves, sin también para aprender cosas, yo he aprendido muchos trucos de post de mi amigo Patrick Mast, o de algun otro amigo que publica alguna herramienta interesante en sus mensajes "del Feis".&lt;br /&gt;&lt;br /&gt;Las redes sociales además sirven para matar un rato el aburrimiento, pero también para perder mucho tiempo productivo, como por ejemplo abriendo "galletitas de la suerte" o pidiendole consejos al Dr. House.&lt;br /&gt;&lt;br /&gt;Gracias a un post de mi amigo Fausto Zamorano, tenemos disponibles los juegos mas jugados de Facebook, encabezando la lista esta mi odiado Farmville, pero hay otros juegos muy interesantes, lo mas curioso es la cantidad de gente que los juega..... Farmville con 70 millones de adictos (no jugadores, adictos)... no me lo puedo creer.&lt;br /&gt;&lt;br /&gt;Aquí tienen las estadísticas del mes.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.insidesocialgames.com/wp-content/uploads/2010/06/top25.jpg" /&gt;&lt;br /&gt;Supongo de Zynga debe de estar ya cotizando en NASDAQ, si le pagaran 1 dolar por cada persona que juega sus juegos.....&lt;br /&gt;&lt;br /&gt;No hay que perder de vista a las redes sociales definitivamente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5785963983298932820?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5785963983298932820/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5785963983298932820' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5785963983298932820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5785963983298932820'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/06/los-juegos-mas-jugados-de-facebook.html' title='Los juegos mas jugados de Facebook'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-4201338508895961489</id><published>2010-05-21T22:27:00.004-05:00</published><updated>2010-05-22T07:47:58.886-05:00</updated><title type='text'>Comenzamos la Gira Nacional CiberSAT</title><content type='html'>Gracias, muchas a gracias a TODOS ustedes que nos favorecen con su preferencia por nuestros productos.&lt;br /&gt;&lt;br /&gt;Gracias a ustedes, &lt;a href="http://www.ciber-tec.com/CiberSAT"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;CiberSAT&lt;/span&gt;&lt;/a&gt; el componente de programación para facturación electrónica es un verdadero éxito y por ello, comenzamos la Gira Nacional CiberSAT.&lt;br /&gt;&lt;br /&gt;Varias empresas nos han contratado para hacer la implementación en sus sistemas de nuestro componente CiberSAT.&lt;br /&gt;&lt;br /&gt;Son ya varias empresas desarrolladoras de software que se apoyan en nuestro componente CiberSAT para generar sus facturas electrónicas, como &lt;a style="font-weight: bold; font-style: italic;" href="http://www.sanroms.com/"&gt;Sanroms Software de México,&lt;/a&gt;  &lt;a style="font-weight: bold; font-style: italic;" href="http://www.solretroactivas.com.mx/"&gt;Soluciones Retroactivas&lt;/a&gt; y &lt;a href="http://www.despachoarteaga.com.mx/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Despacho Arteaga y Cía&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Gracias a la confianza de nuestros clientes, yo me encuentro en este momento en Tampico, en &lt;a style="font-weight: bold; font-style: italic;" href="http://www.orgcantu.com.mx/"&gt;Organización Cantú&lt;/a&gt;, realizando la implementacion de la factura electrónica para sus empresas., la implementación de CiberSAT se hizo para (x)Harbour y FiveWin 2.6, Visual FoxPro, y Visual Basic .NET, salvo algún pequeño disgusto con .NET (que raro), CiberSAT se comportó como todo un campeón en todos los entornos de desarrollo, en Tampico además otras importantes empresas utilizan nuestro componente:&lt;a href="http://www.lasnovedades.com.mx/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; Las Novedades &lt;/span&gt;&lt;/a&gt;y el Despacho Fuentes Leal y Asociados.&lt;br /&gt;&lt;br /&gt;Y mientras yo estoy en Tampico, Oscar Lira, nuestro gran colaborador tecnológico se encuentra en Villahermosa, Tabasco, haciendo la implementación de CiberSAT para&lt;a href="http://www.santandreu.com.mx/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; Grupo Santandreu &lt;/span&gt;&lt;/a&gt;quienes desarrollan con una herramienta llamada&lt;a href="http://www.windev.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; WinDev&lt;/span&gt;&lt;/a&gt; y para otro cliente mas que usa el sistema CresWin.&lt;br /&gt;&lt;br /&gt;El próximo lunes estaremos con la gente de &lt;a href="http://www.llantamaya.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Llanta Maya&lt;/span&gt;&lt;/a&gt; de Mérida, Yucatán, haciendo la implementación de CiberSAT en sus sistemas hechos en Harbour para modo consola para sus 6 sucursales.&lt;br /&gt;&lt;br /&gt;En las próximas semanas visitaremos: Ciudad Victoria (Tamaulipas), Puebla Capital, San Luis Potosí, Tehuacán (Puebla), Toluca, Querétaro, Chihuaha y Córdoba (Veracruz) con mas implementaciones de CiberSAT para distintas empresas.&lt;br /&gt;&lt;br /&gt;Los cursos de nuestro componente de programación se siguen ofreciendo CADA LUNES Y MARTES de cada semana y las implementaciones de CiberSAT las realizamos usualmente los jueves y los viernes, también de cada semana.&lt;br /&gt;&lt;br /&gt;Muchas gracias por su preferencia, tenemos nuestra agenda llena para los próximos 2 meses, tanto así que estamos pensando ampliar los cursos de 1 vez por semana a 2 veces por semana y a aumentar nuestro personal para hacer las implementaciones de CiberSAT.&lt;br /&gt;&lt;br /&gt;CiberSAT es EL UNICO componente de programación para facturación electrónica totalmente adaptado a los requerimeintos del SAT para México y con soporte de "Complementos" (Donatarias, Detallistas, Casas de Cambio, Combustibles y Estados de cuenta) y de "Addendas", que además funciona con todos los lenguajes de programación, conocidos y no tan conocidos, si tu lenguaje de programación soporta el uso de DLLs, entonces puede usar CiberSAT.&lt;br /&gt;&lt;br /&gt;Próximamente tendremos disponible para todos nuestros clientes  nuestro "compilador XML", una herramienta que analiza los archivos XML de entrada antes de ser firmados y sellados, detecta los errores y genera un reporte detallado de los mismos, para que generes tus facturas electrónicas sin problema alguno.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-4201338508895961489?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/4201338508895961489/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=4201338508895961489' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4201338508895961489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4201338508895961489'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/05/comenzamos-la-gira-nacional-cibersat.html' title='Comenzamos la Gira Nacional CiberSAT'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5809277055924563546</id><published>2010-05-20T22:39:00.002-05:00</published><updated>2010-05-23T22:58:49.819-05:00</updated><title type='text'>Aviso MUY importante de Advantage Database Server</title><content type='html'>Hace unas horas recibí el siguiente correo de Sybase y considero importante publicarlo ya que muchos de mis lectores son usuarios de Advantage Database Server:&lt;br /&gt;&lt;br /&gt;Estimado Usuario de Advantage Database Server:&lt;br /&gt;&lt;br /&gt;Debido al próximo lanzamiento de la versión 10 de Advantage Database Server (tentativamente en Junio-Julio), Sybase iAnywhere les informa que la versión 7.x queda completamente descontinuada y se deshabilitarán todos los servicios a esta versión (no podrá actualizarla hacia ninguna versión posterior, no podrá realizar cambios de sistema operativo ni podrá solicitar activaciones ni soporte técnico).&lt;br /&gt;&lt;br /&gt;Es política de Sybase deshabilitar 3 versiones hacia atrás y solo permitir  actualizaciones de 2 versiones anteriores a la nueva, a partir del lanzamiento de la versión 10 de ADS, no se podrán actualizar las versiones 7x, 6x y 5x, sin embargo los usuarios que actualmente tengan instalada y en ejecución cualquiera de estas versiones podrán seguir usándolas sin problema, sin embargo si desean reinstalar en otro equipo o formatear su servidor no se les proporcionarán las claves de instalación.&lt;br /&gt;&lt;br /&gt;Los usuarios que actualmente tengan la versión 7.x pueden actualizarse a la versión 9.x y seguir contando con todo el soporte y funcionalidad de ADS, una vez que sea liberada la versión 10, la versión 7.x queda totalmente descontinuada y tendrán que adquirir una versión 10.x nueva.&lt;br /&gt;&lt;br /&gt;Los usuarios de la versión 8.x que deseen hacer cualquier movimiento (cambio de sistema operativo ó aumento de usuarios) deberán actualizarse a la versión 10.x para poder realizar dichos movimientos.&lt;br /&gt;&lt;br /&gt;Los usuarios actuales de la versión 9.x pueden hacer cualquier movimiento SIN necesidad de actualizar a la versión 10.x&lt;br /&gt;&lt;br /&gt;Sybase iAnywhere anuncia el "End of Life" de todas sus versiones 7.x y anteriores, a partir del lanzamiento de la versión 10.x&lt;br /&gt;&lt;br /&gt;Esperando seguir contando con su preferencia, quedamos de ustedes....&lt;br /&gt;&lt;br /&gt;Para cualquier información sobre las vigencias de sus licencias por favor contactenme directamente en:&lt;br /&gt;&lt;br /&gt;info@ciber-tec.com&lt;br /&gt;tel: +55 5560 0168&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5809277055924563546?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5809277055924563546/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5809277055924563546' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5809277055924563546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5809277055924563546'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/05/aviso-muy-importante-de-advantage.html' title='Aviso MUY importante de Advantage Database Server'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-2206010624926758834</id><published>2010-05-19T13:32:00.002-05:00</published><updated>2010-05-19T13:57:32.937-05:00</updated><title type='text'>Xailer estrena foros web.</title><content type='html'>Yo sabía que era cuestión de tiempo para que el equipo de Xailer se animara a mover los foros de los grupos de noticias NTTP (Network News Transfer Protocol) a una interfaz basada en Web.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.xailer.com/forum/"&gt;http://www.xailer.com/forum/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Durante mucho tiempo y aún hoy en día muchos de los "foros" de soporte han requerido de un software "lector de noticias" como el Mozilla Thunderbird o el Outlook Express, el problema de esta tecnología es que la base de conocimientos se quedaba guardada en la computadora donde tenias instalado el software lector de noticias y luego cuando no tenías tu equipo a mano, no podías consultar los foros.&lt;br /&gt;&lt;br /&gt;Con la introducción de &lt;a style="font-weight: bold; font-style: italic;" href="http://www.phpbb.com/"&gt;PHPbb&lt;/a&gt; el soporte mediante "bulletin boards" se facilitó enormemente al usar una interfaz web para hacer foros de consulta y soporte.&lt;br /&gt;&lt;br /&gt;El siguiente paso lógico era que a alguien se le ocurriera crear un motor que leyera los grupos de noticias NNTP y pudiera publicarlos en Web (Google fue la pionera en esto con su servicio &lt;a style="font-weight: bold; font-style: italic;" href="http://groups.google.com"&gt;groups.google.com&lt;/a&gt;) lo que hacía falta era que la interfaz de los foros fuera similar  la de PHPbb, que es la interfaz mas utilizada para foros web.&lt;br /&gt;&lt;br /&gt;El producto que hace esta interfaz es &lt;a style="font-style: italic;" href="http://fudforum.org"&gt;&lt;span style="font-weight: bold;"&gt;FUDForum&lt;/span&gt;&lt;/a&gt;, y como podrás apreciar en los &lt;a style="font-weight: bold; font-style: italic;" href="http://www.xailer.com/forum"&gt;nuevos Foros de Xailer,&lt;/a&gt; funciona bastante bien.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-2206010624926758834?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/2206010624926758834/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=2206010624926758834' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2206010624926758834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2206010624926758834'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/05/xailer-estrena-foros-web.html' title='Xailer estrena foros web.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-3344269251572530999</id><published>2010-05-15T22:08:00.002-05:00</published><updated>2010-05-16T00:03:15.247-05:00</updated><title type='text'>SAP compra Sybase.... junto con Advantage Database Server</title><content type='html'>No han pasado ni 18 meses de que Sybase comprara Extended Systems, y que con esta adquisición, Advantage Database Server pasara a ser parte de la familia de bases de datos de Sybase y el pasado 12 de Mayo del 2010, le tocó a Sybase ser comprada por &lt;a style="font-style: italic;" href="http://es.wikipedia.org/wiki/SAP_AG"&gt;&lt;span style="font-weight: bold;"&gt;SAP&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Sybase&lt;a style="font-weight: bold; font-style: italic;" href="http://www.sybase.com/detail?id=1038178"&gt; compró en su momento a Extended Systems&lt;/a&gt; (fabricante de ADS) y la compra no se debió a la base de datos ADS, sino a que Extended Systems desarrolló un poderoso motor de informática movil, que permite manejar en la memoria de los dispositivos la información proveniente de sus bases datos.&lt;br /&gt;&lt;br /&gt;Ahora,&lt;a href="http://www.sap.com/usa/about/newsroom/press.epx?pressid=13202"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; es esa tecnología móvil la que motiva a SAP a comprar Sybase,&lt;/span&gt;&lt;/a&gt; pero también es una respuesta de SAP  a la compra de Sun Microsystems por Oracle que se dió a finales del año pasado y que incluyó a MySQL (previamente comprado por Sun) en el paquete.&lt;br /&gt;&lt;br /&gt;En mis experiencias con SAP previas (algunas he tenido) la base de datos usada para almacenar los datos de SAP, era Oracle,como es bien sabido , SAP es el sistema informático que definió el concepto de ERP, es usado por las empresas mas importantes del mundo para administrarse y basten nombres como Hella, Volkswagen, Audi, BMW, Falabella, Liverpool, NH Hoteles, LAN Aerolíneas, El Corte Inglés, Iberia, Telcel, Telmex, Galleries Lafayette, Harrod's, etc, que son usuarios de SAP, obviamente por el calibre de los clientes, si piensas que SAP no es barato, estás en lo cierto, la inversión inicial ronda 1 millón de dólares, mas el costo de implementación.&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;SAP te busca a tí como cliente, tu no buscas a SAP como proveedor&lt;/span&gt;", eso me lo digo alguna vez un consultor de SAP con el que trabajé en una conexión con un sistema desarrollado en Harbour.&lt;br /&gt;&lt;br /&gt;Quiero suponer que además de la tecnología de informática móvil, la compra de Sybase también obedece a que SAP quiere contar con sus propios motores de base de datos, ya que una buena parte del gasto en la implementación de SAP se la llevaba la compra de la base de datos de Oracle.&lt;br /&gt;&lt;br /&gt;Si ahora Oracle, además de proveer la base de datos, provee también de los servidores donde va a correr la misma (por la compra que hizo de Sun Microsystems), entonces eso le deja a la solución de SAP muy poco margen de independencia con respecto a la base de datos.&lt;br /&gt;&lt;br /&gt;Sybase por su parte ofrece prácticamente productos de base de datos que corren en cualquier sistema operativo y sobre cualquier tipo de equipos, lo que convertiría lo que para SAP era un gasto de implantación (la compra de la base de datos a Oracle, mas el hardware necesario) en un ingreso adicional para la compañía.&lt;br /&gt;&lt;br /&gt;Y dado que las empresas que se pueden gastar 10 o 20 millones de dólares en implantar la solución de SAP ya se están acabando, SAP también ha hecho esfuerzos por entrar en el mercado PYME, y lo ha intentado hacer con productos cuyo precio ronda los 30,000 dólares (dudo que muchas PYMEs puedan pagar esa cantidad), con la compra de Sybase el precio de sus soluciones PYME podría bajar tremendamente ya que la base de datos es propiedad de SAP, y sí, se podría pensar  en una versión SAP para PYME que correría perfectamente usando Advantage Database Server.&lt;br /&gt;&lt;br /&gt;De acuerdo con&lt;a style="font-weight: bold; font-style: italic;" href="http://www.bloomberg.com/apps/news?pid=20601103&amp;amp;sid=ax0KKGnzjc_0"&gt; Bloomberg&lt;/a&gt;, SAP pago $ 5,800 millones de dólares por la compra de Sybase, esta operación es la quinta de mayor monto en los últimos 12 meses en operaciones de compras de empresas tecnológicas.&lt;br /&gt;&lt;br /&gt;SAP es dueña además de otro producto muy conocido por todos: &lt;a href="http://www.crystalreports.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Crystal Reports&lt;/span&gt;&lt;/a&gt; (BusinessObjects) que fue comprado por SAP en el año 2007 por 4,800 millones de Euros y cuya fusión se completó a principios del 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-3344269251572530999?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/3344269251572530999/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=3344269251572530999' title='11 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3344269251572530999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/3344269251572530999'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/05/sap-compra-sybase-junto-con-advantage.html' title='SAP compra Sybase.... junto con Advantage Database Server'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5906051312075383629</id><published>2010-05-09T14:55:00.002-05:00</published><updated>2010-05-09T15:54:09.085-05:00</updated><title type='text'>Porque soy tu madre !!!!!</title><content type='html'>10 Mayo, día de las madres en México.&lt;br /&gt;&lt;br /&gt;En realidad no se porqué en México las cosas deben ser distintas al resto del mundo donde el día de las madres se celebra el 1er o 2do domingo de Mayo (depende del país), aaaah no, Mexico is different !!!! por eso a ....... el 10 de Mayo es el día de las madres, caiga lunes, miercoles o viernes.&lt;br /&gt;&lt;br /&gt;Estoy en casa de mi abuela (porque aunque muchos lo duden tengo madre y tengo abuela), festejando su 75'vo día de las madres, sí leyeron bien,  mi abuela se hizo madre a los 25 años y esta es su 75 celebración del día de las madres.... efectivamente, mi abuela tiene 100 años.&lt;br /&gt;&lt;br /&gt;Y dado que su madre (mi bisabuela) murió de 104, pues por genética yo espero estar dando lata unos cuantos años mas, por lo menos 60 mas y espero que en tan buenas condiciones como ellas.&lt;br /&gt;&lt;br /&gt;Para celebrar este día de las madres, encontré en Facebook en el muro de mi amiga Katya Martínez este simpático video titulado....... PORQUE SOY TU MADRE:&lt;br /&gt;&lt;br /&gt;(traducción despues del vídeo)&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DHPuU9w5iQo&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/DHPuU9w5iQo&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Levantate ya&lt;br /&gt;levantate ya&lt;br /&gt;Sal de la cama&lt;br /&gt;Lavate la cara&lt;br /&gt;Cepillate los dientes&lt;br /&gt;Peinate el "almohadazo"&lt;br /&gt;Aquí estan tu ropa y tus zapatos&lt;br /&gt;Escucha lo que te digo&lt;br /&gt;Levántate YA !&lt;br /&gt;Levántate y haz tu cama !!!!&lt;br /&gt;¿ Tienes calor ?&lt;br /&gt;¿ No tienes frio ?&lt;br /&gt;¿ Te vas a poner eso ?&lt;br /&gt;¿ Donde dejaste tus libros ?&lt;br /&gt;¿ y tu almuerzo ?&lt;br /&gt;¿ Llevas la tarea ?&lt;br /&gt;Toma tu abrigo y tus guantes&lt;br /&gt;y tu bufanda y tu gorro&lt;br /&gt;No te olvides de darle de comer al gato !!!!!&lt;br /&gt;Cómete tu desayuno&lt;br /&gt;Los expertos dicen que es la comida mas importante&lt;br /&gt;Tómate tus vitaminas y algún día crecerás alto y fuerte&lt;br /&gt;Acuerdate de la cita con el ortodonsista&lt;br /&gt;La tieneshoy  a las 3 pm&lt;br /&gt;No te olvides de la clase de piano esta tarde, ¡ ya deberías de tocarlo !&lt;br /&gt;No sorbas&lt;br /&gt;Mastica despacio&lt;br /&gt;Apúrate, el autobus ya está aquí&lt;br /&gt;¡ Ten cuidado !&lt;br /&gt;¡ Regresa aquí !&lt;br /&gt;¿ Te lavaste detrás de las orejas ?&lt;br /&gt;¡ A jugar a afuera ! y no sean rudos&lt;br /&gt;¿ Vas a jugar sin trampas algun día  ?&lt;br /&gt;Sé educado&lt;br /&gt;Hazte su amigo&lt;br /&gt;Comparte&lt;br /&gt;Ganatelo&lt;br /&gt;Espera tu turno&lt;br /&gt;No apuestes&lt;br /&gt;Vete para allá&lt;br /&gt;No me hagas ir otra vez.&lt;br /&gt;Asea tu habitación&lt;br /&gt;Dobla tu ropa&lt;br /&gt;Quita tus cosas&lt;br /&gt;Haz tu cama AHORA&lt;br /&gt;¿ Crees que tenemos todo el día ?&lt;br /&gt;¿ Naciste en un establo ? ¿ No quieres paja también ?&lt;br /&gt;¿ Alguna vez escuchas lo que te digo ?&lt;br /&gt;Contesta el teléfono&lt;br /&gt;CUELGA el teléfono&lt;br /&gt;No te sientes tan cerca&lt;br /&gt;Apaga eso&lt;br /&gt;No envies mensajes cuando estamos en la mesa&lt;br /&gt;No mas computadora por esta noche&lt;br /&gt;Tu iPod va a ser MI iPod si no me haces caso&lt;br /&gt;¿ A donde vas ?&lt;br /&gt;¿ Con quien vas ?&lt;br /&gt;¿ A que hora vas a regresar ?&lt;br /&gt;Di gracias, por favor, y perdón, esas palabras te hacen bienvenido en todos lados.&lt;br /&gt;Cuando seas mayor apreciarás mis consejos.&lt;br /&gt;Espera a tener tus propios hijos&lt;br /&gt;Ya te quiero ver a tí con 2 niños pequeños&lt;br /&gt;Me vas a agradecer el consejo que te doy desinteresadamente&lt;br /&gt;Pero mientra yo te agradezco que no te hagas el tonto&lt;br /&gt;¡ Nos gustaría que cerraras la boca cuando mastiques !&lt;br /&gt;Mordidas pequeñas&lt;br /&gt;Pruebalo aunque no te guste&lt;br /&gt;Usa el tenedor&lt;br /&gt;No eructes&lt;br /&gt;Comete todo lo que te pongo&lt;br /&gt;Saca 10&lt;br /&gt;Abre la puerta&lt;br /&gt;No te quieras pasar de listo conmigo&lt;br /&gt;A la de 3 vienes para acá&lt;br /&gt;Consigue trabajo&lt;br /&gt;¡ Consiguete una vida !&lt;br /&gt;¡ Haz un doctorado !&lt;br /&gt;¡ Cómprate uno de esos !&lt;br /&gt;¡ No me importa quien empezó !, estás castigado hasta que cumplas 36&lt;br /&gt;Déjate de historias y dime la verdad por Dios Santo&lt;br /&gt;¿ Y si todos tus amigos saltan a un barranco tu también ?&lt;br /&gt;Te lo digo por última vez&lt;br /&gt;Te lo he dicho mil veces antes&lt;br /&gt;Ya estás grandecito para portarte así&lt;br /&gt;Te pareces a tu padre&lt;br /&gt;Mírame cuando te estoy hablando&lt;br /&gt;Camina derecho&lt;br /&gt;Un lugar para cada cosa y cada cosa en su lugar&lt;br /&gt;Deja de llorar o te voy a dar una buena razón para que llores&lt;br /&gt;Lavate la cara&lt;br /&gt;Cepillate los dientes&lt;br /&gt;Ponte la pijama&lt;br /&gt;Metete a la cama&lt;br /&gt;Dame un abrazo&lt;br /&gt;Reza&lt;br /&gt;No te olvides que te quiero&lt;br /&gt;Y mañana vuelta a lo mismo porque .....&lt;br /&gt;El trabajo de una madre no se termina nunca.&lt;br /&gt;Y no necesitas ninguna razón&lt;br /&gt;Porque&lt;br /&gt;Porque&lt;br /&gt;Porque&lt;br /&gt;Porque&lt;br /&gt;Digo yo&lt;br /&gt;digo yo&lt;br /&gt;digo yo&lt;br /&gt;y.....&lt;br /&gt;SOY TU MADRE&lt;br /&gt;&lt;br /&gt;Para todas las madres con cariño en su día&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5906051312075383629?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5906051312075383629/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5906051312075383629' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5906051312075383629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5906051312075383629'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/05/porque-soy-tu-madre.html' title='Porque soy tu madre !!!!!'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5394106379487515796</id><published>2010-05-05T20:00:00.004-05:00</published><updated>2010-05-06T01:10:49.397-05:00</updated><title type='text'>CiberSAT estrena portal</title><content type='html'>Acabamos de terminar la versión 2.0 de nuestro componente de facturación electrónica CiberSAT y para celebrarlo, ponemos a su disposición nuestro &lt;a style="font-weight: bold; font-style: italic;" href="http://www.ciber-tec.com/CiberSAT"&gt;nuevo portal para Facturación Electrónica CiberSAT&lt;/a&gt; donde hemos puesto ejemplos del uso de CiberSAT en distintos lenguajes de programación,  foros de consulta, un programa hecho en WebAS para la generación de licencias para los usuarios registrados y hasta un verificador de Facturas Electrónicas.&lt;br /&gt;&lt;br /&gt;La versión 2.0 tiene importantísimas mejoras con respecto a la versión 1.0:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;La DLL de CiberSAT ahora se puede cambiar de lugar, no es necesario que esté en una carpeta en particular, como en el caso de la versión anterior, donde forzosamente tenía que estar en la carpeta donde estaba el EXE, ahora la DLL puede ser colocada donde sea, y solo hace falta indicar la ruta donde se encuentra al momento de llamarla, gracias a Roberto Negrete de &lt;a style="font-weight: bold; font-style: italic;" href="http://www.solretroactivas.com.mx/"&gt;Solucomer&lt;/a&gt; por la sugerencia.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CiberSAT.DLL ahora puede usarse desde cualquier lenguaje de programación, no solo (x)Harbour y sus amigos. Ya hemos hecho las pruebas con Xbase++, Delphi, Visual FoxPro y C++ (Microsoft y Borland), estamos  probando con Visual Basic 6, pero si pudimos hacerlo funcionar con VFP (y sin tener NPI) con VB será mucho mas fácil.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Eliminamos la necesidad de tener un archivo .LIB externo que había que linkear al EXE. Esta LIB anteriormente contenía funciones de soporte escritas en (x)Harbour y los wrappers para las funciones de la DLL pero su uso nos estaba dando demasiados dolores de cabeza con todas las versiones de (x)Harbour que están rodando por ahí (el PCODE), así que decidimos escribir en "C" lo que estaba en (x)Harbour y meterlo en el DLL y los wrappers ahora están disponibles en código fuente y se pueden incluir fácilmente en los .PRGs que los necesiten con un #PRAGMA.&lt;/li&gt;&lt;li&gt;CiberSAT ahora "revisa" la correcta formación del archivo XML de entrada, de acuerdo con las reglas del SAT (definidas en un archivo XSD proporcionado por el mismo SAT), en caso de que algún nodo o valor obligatorio no coincida con lo establecido por el SAT, CiberSAT lo reporta y muestra la línea del XML donde se generó el error. Ningún producto de generación de facturación electrónica en México actualmente realiza esta comprobación.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CiberSAT ahora genera directamente la "cadena original". En la versión anterior, la clase TFacturaElectrónica era la encargada de generar la "cadena original" y lo hacía correctamente usando la clase TXMLDocument de (x)Harbour , peeeeeeero, ¿ y que pasa con los lenguajes que no tienen una clase o una función para manipular archivos XML , como es el caso de Xbase++ y Clipper ?, con eso en mente y aprovechando que el mismo SAT provee de un archivo con las reglas de generación para la cadena original, decidimos mover la generación de la cadena a la DLL usando las reglas del SAT, si mañana el SAT cambia la forma de genera la cadena original, nosotros simplemente cambiamos el archivo con las nuevas reglas del SAT y en 1 minuto tenemos la nueva cadena original lista.&lt;/li&gt;&lt;li&gt;La verificación de totales de la factura electrónica también es realizada por la DLL de CiberSAT, esta característica se implementó porque en varias facturas electrónicas que nos facilitaron para verificar con nuestra DLL y que fueron generadas con otro sistema, detectamos que ¡ las sumas de los totales eran erroneas ! de tal forma que decidimos hacer que CiberSAT verificara las operaciones matemáticas realizadas en el XML (p. ej. Cantidad x Precio unitario en los conceptos ó la suma del total - descuento + impuesto) ahora CiberSAT verifica que hayas sumado bien y que hayas puesto las cantidades correctas donde deben ir dentro del XML. Ningún otro producto de facturación electrónica hace esto. Gracias a  .... no te menciono, pero  te damos las gracias.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Creamos CIBERSAT3.EXE, este programa es un EXE externo que genera en un texto, con formato "array" de Clipper ({...}) la factura electrónica y todos sus componentes, para luego ser usados desde tu programa, este texto puede ser leído con un Memoread() y luego macrosustituido (&amp;amp;) y obtienes como resultado un ARRAY de Clipper que puedes usar desde tus programas "viejos" para generar facturación electrónica.&lt;/li&gt;&lt;li&gt;Creamos nuevos productos, como el CiberSAT SDK, que incluye la DLL de CiberSAT en formato LIB (COFF y OMF) en caso de que no quieras tener una DLL externa, código fuente del programa CIBERSAT3.EXE y código fuente de nuestro programa de autofacturación CiberCFD, también creamos nuevos esquemas de licenciamiento de la DLL.&lt;/li&gt;&lt;/ol&gt;Te invito a que visites nuestro portal de &lt;a href="http://www.ciber-tec.com/CiberSAT"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;CiberSAT Facturación Electrónica&lt;/span&gt;&lt;/a&gt;, seguramente tenemos la respuesta a tus necesidades en materia de facturación electrónica para México.&lt;br /&gt;&lt;br /&gt;Para no llenar de comentarios de Facturación Electrónica Objeto Persistente (no es el objetivo de este blog), el blog  para todo el tema de facturación electrónica se moverá también al portal de CiberSAT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5394106379487515796?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5394106379487515796/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5394106379487515796' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5394106379487515796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5394106379487515796'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/05/cibersat-estrena-portal.html' title='CiberSAT estrena portal'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-8348149784756444576</id><published>2010-04-30T10:27:00.002-05:00</published><updated>2010-04-30T12:36:55.934-05:00</updated><title type='text'>Quis custodiet ipsos custodes ?</title><content type='html'>¿ Quien vigila a los vigilantes ?&lt;br /&gt;&lt;br /&gt;La autoría de esta frase se la han colgado muchos, desde los Watchmen hasta modernos "gurús" del existencialismo social, personalmente me quedo con la que dice que esta frase la dijo Julio César cuando cuestionaba al Senado Romano sobre su capacidad de cuidar del pueblo, y quien realmente cuidaba de los que cuidaban a los demás: &lt;span style="font-style: italic;"&gt;Quis custodiet ipsos custodes ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Los acontecimientos de las últimas semanas en México en materia custodia de información me han llevado a pensar, ¿ realmente tu información está segura ?.&lt;br /&gt;&lt;br /&gt;Y no hablo de tu información operativa de tu trabajo o negocio, sino de tu información personal, cosas tan simples como tu domicilio, tu teléfono de casa, etc. etc. etc.&lt;br /&gt;&lt;br /&gt;Sabemos que información es poder, y quien domine la información puede ejercer un poder casi total sobre el resto de las personas.&lt;br /&gt;&lt;br /&gt;Quizá pudieras pensar.... bueno, pero eso no es realmente importante... mi número de teléfono está en el directorio, montones de gentes conocen mi correo electrónico, es mas, yo mismo publico mis datos en internet en el Facebook, ¿ que hay malo en ello ?.&lt;br /&gt;&lt;br /&gt;Haberlo no hay nada, cada quien su vida, lo preocupante de la cuestión es.... ¿ que pasa cuando le doy mi información a una entidad que "supuestamente" debe resguardarla y protegerla al igual que debe hacerlo con mi persona , como puede ser el gobierno y luego resulta que por 12 mil dolares se puede comprar dicha información en el mercado negro ? ¿ quien vigila a los vigilantes ?&lt;br /&gt;&lt;br /&gt;El pasado 19 de Abril, el periódico mexicano&lt;a style="font-weight: bold; font-style: italic;" href="http://www.eluniversal.com.mx/nacion/177126.html"&gt; El Universal, publicó&lt;/a&gt; un reportaje donde se señala que por "solo" 12 mil dolares, cualquiera puede tener acceso un grupo de bases de datos que incluyen desde las ordenes de aprehensión de delicuentes, pasando por los números telefónicos de los abonados de la empresa Telmex, hasta el padrón Federal Electoral (que se supone es la base de datos mas confiable de información sobre los mexicanos mayores de 18 años, la que se custodia con mayor sigilo y que actualmente, el documento emitido por esa entidad, que por su supuesta "seguridad"  actúa como Documento Nacional de Identidad en México, resulta que te la puedes comprar en un barrio marginal de México. ¿ Donde quedó la confidencialidad ? ¿ quien me dice a mi que esos datos no los van a usar para una extorsión telefónica, porque saben mis número de teléfono, donde vivo, quienes son mis padres y hermanos ? ¿ donde demonios están esas "entidades" que deben vigilar mi seguridad ? ¿ quen vigila que cumplan con su deber ?&lt;br /&gt;&lt;br /&gt;Las comparaciones nunca son buenas, por ejemplo, el registro de teléfonos móviles, en México (&lt;a href="http://www.renaut.gob.mx/RENAUT/"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;RENAUT (REgistro NAcional de Usuarios de Telefonía Móvil&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;/a&gt;) que sin duda ha sido uno de los fracasos mas grandes en materia de colecta de información del gobierno federal de México y sin embargo, la misma iniciativa en España funcionó correctamente porque la forma de hacerlo fue totalmente distinta.&lt;br /&gt;&lt;br /&gt;En México por ejemplo, bastaba con enviar un SMS desde tu teléfono a un número, indicando tu nombre y fecha de nacimiento, sin embargo del otro lado del SMS (secretaría de gobernación - ministerio del interior) NADIE se toma la molestia de verificar si el nombre existe, es mas pudiste haberte registrado como Mickey Mouse con fecha de nacimiento 4 de mayo de 1926 y el registro de tu teléfono hubiera colado perfectamente no se cuantos "Juan Pérez López" (naaaah, nadie en México se llama Juan Perez) se hayan registrado en el RENAUT.&lt;br /&gt;&lt;br /&gt;Para el registro en España lo hicieron de manera distinta, tenías que presentarte personalmente en cualquier tienda de telefonía móvil, llevar tu teléfono, tu tarjeta SIM y una identificación con fotografía, DNI o Pasaporte en mi caso, te rellenaban un formulario, lo imprimian, lo firmabas y en 10 minutos habías hecho el trámite (o bueno 10 minutos fue lo que me llevó a mi hacer el trámite de mi viejo móvil que uso cuando voy a España).&lt;br /&gt;&lt;br /&gt;En Colombia también me pidieron que me identificara y diera una dirección cuando compré una tarjeta SIM para usar en mi teléfono.&lt;br /&gt;&lt;br /&gt;Sin embargo en Estados Unidos, donde teóricamente tendrían que estar mas preocupados por el tema terrorismo y donde te toman huellas dactilares y foto cuando entras al país, me compré en un Walmart una Coca Cola y un teléfono móvil por $20.00 y nadie me dijo nada. Los Estados Unidos son ridicualmente contradictorios.... ¿ porqué te piden la licencia de conducir para comprar cerveza si se supone que está prohibido conducir bebido ?.&lt;br /&gt;&lt;br /&gt;Urge en México un Ley de Protección de datos, no se que tal funcione la&lt;a style="font-weight: bold; font-style: italic;" href="http://es.wikipedia.org/wiki/Ley_Org%C3%A1nica_de_Protecci%C3%B3n_de_Datos_de_Car%C3%A1cter_Personal_de_Espa%C3%B1a"&gt; LOPD&lt;/a&gt; en España, pero creo que por lo menos en México debería de existir una ley que obligara a todo el mundo a tratar los datos con la confidencialidad que se requiere. Creo que&lt;a href="http://www.netmedia.info/security/aprobo-ahora-senado-ley-de-proteccion-de-datos"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; el primer paso ya fue dado&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;y dentro de muy poco tiempo, si no es que durante este mismo año nos veremos obligados a implementar en nuestros programas esquemas de seguridad que garanticen la privacidad de los datos que manejamos, o bueno, al menos deberíamos de intentarlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-8348149784756444576?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/8348149784756444576/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=8348149784756444576' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/8348149784756444576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/8348149784756444576'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/04/quis-custodiet-ipsos-custodes.html' title='Quis custodiet ipsos custodes ?'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-4886914636863836008</id><published>2010-04-26T12:14:00.002-05:00</published><updated>2010-04-26T12:26:50.170-05:00</updated><title type='text'>11 años de Harbour en 9 minutos...!!!!</title><content type='html'>En Facebook he encontrado este video, publicado por &lt;a class="comment_author" href="http://www.facebook.com/profile.php?id=100000972710379" target=""&gt;Viktor  Szakáts&lt;/a&gt; que nos muestra gráficamente en aproximadamente 10 minutos, el desarrollo de Harbour desde 1999 hasta el 25 de Abril de 2010.&lt;br /&gt;&lt;br /&gt;El video fue creado con la bitacora de accesos al CVS  de Harbour mostrando las librerías que han sido tocadas y porque persona han sido modificadas, cada "nucleo" de puntos representa un modulo de Harbour y cada punto el codigo fuente.&lt;br /&gt;&lt;br /&gt;Una verdadera obra maestra y un bonito espectáculo visual creado simplemente con datos obtenidos de las bitácoras de acceso.&lt;br /&gt;&lt;br /&gt;Recomiendo verlo en Alta Definición y a pantalla completa, ¡ Que lo disfruten !&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4DrhrxPZhts&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/4DrhrxPZhts&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="640"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-4886914636863836008?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/4886914636863836008/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=4886914636863836008' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4886914636863836008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4886914636863836008'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/04/11-anos-de-harbour-en-9-minutos.html' title='11 años de Harbour en 9 minutos...!!!!'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5844602263061942807</id><published>2010-04-15T21:06:00.004-05:00</published><updated>2010-04-15T21:25:33.117-05:00</updated><title type='text'>Modulo de externo de Factura Electronica Listo !!!!</title><content type='html'>Dado el enorme interés de todos nuestros clientes y amigos en nuestros componentes de Facturación Electrónica, hemos desarrollado una aplicación que quizá les resulte de interés a todos aquellos que no usan (x)Harbour como su herramienta de programación.&lt;br /&gt;&lt;br /&gt;Hemos desarrollado un pequeño módulo EXE usando Xailer y nuestro componente de Facturación Electrónica el cual puede ser utilizado externamente a cualquier programa, sin importar en que lenguaje de programación haya sido realizado.&lt;br /&gt;&lt;br /&gt;El módulo EXE funciona de la siguente manera:&lt;br /&gt;&lt;br /&gt;c:&gt; CIBERSAT.EXE &lt;archivo.xml&gt;archivo.xml&lt;br /&gt;&lt;br /&gt;Este EXE puede ser ejecutado por ejemplo con un RUN de CA-Clipper desde dentro del mismo programa Clipper, o bien con un WinExec() desde cualquier programa para Windows.&lt;br /&gt;&lt;br /&gt;Recibe como parámetro un archivo XML (de texto) que debe contar con las especificaciones de la factura electrónica del SAT, no te preocupes, nosotros proporcionamos una "plantilla" en un archivo de texto, que con un simple MemoRead() y algunos StrTran() de CA-Clipper (o su equivalente de otros lenguajes de programación) puede rellenarse de acuerdo a las especificaciones del SAT, sin mucha complicación, también incluimos un PRG con un ejemplo para rellenar dicha plantilla.&lt;br /&gt;&lt;br /&gt;Este EXE genera como salida 3 archivos de Texto:&lt;br /&gt;&lt;br /&gt;Un archivo de texto con la "cadena original"&lt;br /&gt;Otro archivo de texto con el "sello digital"&lt;br /&gt;Y un tercer archivo con el XML sellado que ya es un comprobante fiscal digital hecho y derecho.&lt;br /&gt;&lt;br /&gt;Posteriormente tu programa puede leer estos archivos de texto y hacer con ellos lo necesario para terminar el proceso de facturación electrónica.&lt;br /&gt;&lt;br /&gt;Esta herramienta abre nuevas posibilidades a usuarios tanto de otros lenguajes de programación, a herramientas de 16 bits, como por ejemplo los viejos programas CA-Clipper y también puede ser utilizado por productos de código abierto como el Crescendo (CresWin, CresDOS o CresWeb) de Businessware, Admin de Abits, u otros ERPs que cuenten con el código fuente.&lt;br /&gt;&lt;br /&gt;Pénsandolo bien..... hasta un archivo .BAT podría utilizarlo...... hummmm. creo que voy a hacer experimentos para ver cuanto se puede explotar.&lt;br /&gt;&lt;br /&gt;Este módulo es gratuito para todos aquellos que han comprado nuestra solución de facturación electrónica, y estará disponible en la versión 1.5 misma que liberaremos la segunda semana de Mayo, junto con las mejoras a la DLL.&lt;br /&gt;&lt;br /&gt;Por otro lado, nuestros clientes que han comprado al versión 1.0 de nuestro componente de facturación electrónica, puede seguir usándolo sin problemas, la nueva versión NO NECESITA QUE CAMBIEN NADA DE LO QUE YA HAN HECHO, es totalmente compatible con todo lo implementado en la versión anterior.&lt;br /&gt;&lt;br /&gt;Seguimos trabajando en la DLL para otros lenguajes de programación que no deseen usar el EXE externo, esperamos tener noticias muy pronto.&lt;/archivo.xml&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5844602263061942807?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5844602263061942807/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5844602263061942807' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5844602263061942807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5844602263061942807'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/04/modulo-de-externo-de-factura.html' title='Modulo de externo de Factura Electronica Listo !!!!'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-6582553570776759575</id><published>2010-04-11T22:31:00.003-05:00</published><updated>2010-04-11T23:01:38.692-05:00</updated><title type='text'>Factura electronica para Xbase++ lista !!!!</title><content type='html'>Pues seguimos trabajando a toda máquina con los componentes para generación de los sellos digitales para facturación electrónica para México.&lt;br /&gt;&lt;br /&gt;Ahora hemos terminado ya el componente para Xbase++ mismo que es la base para el ActiveX que estamos desarrollando para todos los demás lenguajes y que esperamos liberar en la primer semana de mayo.&lt;br /&gt;&lt;br /&gt;Esta nueva DLL de CiberSAT tiene varias mejoras muy importantes:&lt;br /&gt;&lt;br /&gt;Ya que Xbase++ no tiene manera de usar archivos XML, como (x)Harbour, la versión de CiberSAT para Xbase genera las cadenas originales desde la misma DLL, y además es capaz de VERIFICAR y REPORTAR LOS ERRORES de los XMLs  de acuerdo a las definiciones establecidas en los XSDs del Servicio de Administración Tributaria, esto nos da la ventaja de poder verificar que nuestros XMLs con los Comprobantes Fiscales Digitales no omiten ningun atributo requerido por el SAT.&lt;br /&gt;&lt;br /&gt;Con esta nueva característica además eliminamos el uso de la CiberSAT.LIB y de las clases TFacturaElectronica y TCertificado que tenemos implementadas para (x)Harbour, y dejamos toda la generación del CFD  a nivel funciones en una DLL.&lt;br /&gt;&lt;br /&gt;Proximamente incluiremos estas mejoras en la versión de (x)Harbour, obviamente la actualización será sin costo a todos los usuarios actuales de nuestro producto.&lt;br /&gt;&lt;br /&gt;Una vez que terminemos las pruebas con Xbase++, el mismo código para la DLL será usado para crear el ActiveX para otros lenguajes de programación.&lt;br /&gt;&lt;br /&gt;En los proximos días publicaremos los demos para (x)Harbour Modo consola y para CA-Clipper de 16 bits.&lt;br /&gt;&lt;br /&gt;La versión ActiveX estará disponible a principios del mes de mayo y se podrá usar desde Delphi, Visual Basic, C++, C#, ASP y .NET, también estamos estudiando la posibilidad de hacer algo para PHP, pero de momento trabajamos en los componentes que nos han solicitado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-6582553570776759575?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/6582553570776759575/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=6582553570776759575' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6582553570776759575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6582553570776759575'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/04/factura-electronica-para-xbase-lista.html' title='Factura electronica para Xbase++ lista !!!!'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-360245000237590317</id><published>2010-03-16T22:59:00.003-06:00</published><updated>2010-09-18T15:32:58.552-05:00</updated><title type='text'>Factura electrónica para Xailer lista !!!!</title><content type='html'>Las cosas están sucediendo MUY rápido.&lt;br /&gt;&lt;br /&gt;Ayer publiqué la disponibilidad del demo de facturación electrónica para FiveWin, y  menos de 24 horas después ya tenemos listo un demo para Xailer.&lt;br /&gt;&lt;br /&gt;El demo está disponible haciendo &lt;a style="font-weight: bold; font-style: italic;" href="http://www.ciber-tec.d2g.com/CiberSAT/downloads/CiberSAT_Xailer.zip"&gt;CLICK AQUI.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El demo está basado en los mismos componentes de CiberSAT que se usaron para el demo de FiveWin, solo que la interfaz está un poco mejor trabajada (las cosas que tiene tener tiempo de sobra cuando programas visualmente).&lt;br /&gt;&lt;br /&gt;Este demo incorpora además un "plus", que es la generación de la factura impresa visualmente y la posibilidad de enviarla desde el mismo programa en formato PDF (u otros 11) usando la interfaz de vista previa de FastReport que hemos incorporado en el demo.&lt;br /&gt;&lt;br /&gt;Este demo esta construído con la versión 2.0 de Xailer, pero también puede funcionar con la versión 1.9x.&lt;br /&gt;&lt;br /&gt;Si observas detenidamente los códigos fuentes tanto del demo de Xailer como del demo de FiveWin, verás que utilizan EXACTAMENTE la misma filosofía de programación esto se debe a CiberSAT funciona con cualquier interfaz gráfica para (x)Harbour o bien con (x)Harbour puro y duro en modo consola.&lt;br /&gt;&lt;br /&gt;Hace unas horas me informó el buena amigo Oskar Lira que el ActiveX de CiberSAT ya está listo, pero no he tenido tiempo de probarlo, estoy agregando unos cambios de ultima hora a la documentación, corriendo con los demos de la herramienta y planeando cursos extra porque afortunadamente tenemos lista de espera.&lt;br /&gt;&lt;br /&gt;La próxima parada ...... el "plug in" de CiberSAT para CA-Clipper y FiveWin 16 bits, que estará listo a finales de esta semana,  luego el CiberSAT con interfaz web, construida con el poderoso WebAS, que la verdad, cuando lo construí  nunca me imaginé que diera para tanto, es una pena .... yo mismo subutilizo mis propias herramientas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-360245000237590317?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/360245000237590317/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=360245000237590317' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/360245000237590317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/360245000237590317'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/03/factura-electronica-para-xailer-lista.html' title='Factura electrónica para Xailer lista !!!!'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-6304641236105498030</id><published>2010-03-15T13:49:00.002-06:00</published><updated>2010-03-15T14:55:45.029-06:00</updated><title type='text'>Demo del sistema de facturación electrónica ya disponible</title><content type='html'>Ya lo sé, tengo esto un poco abandonado, mea culpa.&lt;br /&gt;&lt;br /&gt;Afortunadamente estamos desbordados de trabajo gracias al componente para emitir Comprobantes Fiscales Digitales (aunque todos los conocemos como "Facturas electrónicas") que junto con la inestimable ayuda de Oskar Lira desarrollamos para (x)Harbour de acuerdo a lo establecido por el SAT (Servicio de Administración Tributaria) para México.&lt;br /&gt;&lt;br /&gt;El éxito ha sido tal, que hemos tenido que cambiar la periodicidad de los cursos de nuestro componente para facturación electrónica  de 2 cursos a 4 al mes, todos con llenos completos y hasta con lista de espera.&lt;br /&gt;&lt;br /&gt;El componente (LIB y DLL) funciona tan bien, que nos hemos animado a hacer una versión ActiveX para otros lenguajes de programación ahora que ya el amigo Oskar descubrió el secreto del MD5 y del RAS, esperemos que esta nueva versión esté lista para finales de este mes.&lt;br /&gt;&lt;br /&gt;No habíamos tendido tiempo de hacer un demo en condiciones de nuestro componente porque como comenté, hemos estado atiborrados de trabajo, por lo pronto y para que vayan probando, aquí tienen el primer demo de nuestro componente disponible para descargar, haciendo&lt;a href="http://www.ciber-tec.d2g.com/CiberSAT/downloads/CiberSATFWH.zip"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; CLICK AQUI.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El demo incluye:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Código fuente con un ejemplo bastante completo de la generación de una factura electrónica usando archivos de datos DBFs y generando dinámicamente los archivos XML solicitados por el SAT.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Código fuente de las clases necesarias (TFacturaElectronica y TCertificado) para generar los distintos componentes de una  factura electrónica&lt;/li&gt;&lt;li&gt;LIB y DLL con lo algortimos de encriptamiento asiméticos exigidos por el SAT para generar los "sellos digitales" de las facturas.&lt;/li&gt;&lt;li&gt;Un ejemplo de un comprobante fiscal digital impreso usando las especifaciones del SAT&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Este primer ejemplo está hecho para FiveWin, aunque el componente se puede usar con cualquier GUI de (x)Harbour, en los próximos días tendremos  demos para Xailer y para (x)Harbour modo consola, así como la interfaz para CA-Clipper y FiveWin 16 bits.&lt;br /&gt;&lt;br /&gt;Muy Importante: Hemos notado que todos los programadores que han comprado nuestra solución de Facturación Electrónica usan una diversidad de versiones de (x)Harbour para aburrir, en un solo curso tuvimos a usuarios que tenían 5 versiones distintas de (x)Harbour, por lo tanto nuestra LIB tiene que ser generada para los distintos PCODEs de (x)Harbour, por favor, si pruebas nuestro componente y tienes un aviso de error de PCODE, ponte en contacto con nosotros para proporcionarte una librería compatible con la versión de tu PCODE.&lt;br /&gt;&lt;br /&gt;En cuanto al tema cursos, el viernes pasado estuvimos probando con Bingen el &lt;a style="font-weight: bold; font-style: italic;" href="http://www.adobe.com/products/acrobatconnectpro/"&gt;Adobe Acrobat Connect Pro,&lt;/a&gt; impresionante herramienta para e-learning y ampliamente recomendable.&lt;br /&gt;&lt;br /&gt;La intención es de usarlo para dar seminarios avanzados de Xailer, directamente impartidos por el Equipo Xailer, el experimento fue espectacular, tanto así que nosotros mismos nos hemos decidido a usarlo para formación a distancia, y lo vamos a hacer a partir del mes entrante con cursos de nuestro componente de facturación electrónica, para posteriormente extender el servicio a otros cursos de formación que ofrecemos especialmente para Centro y Sudamérica.&lt;br /&gt;&lt;br /&gt;De momento aquí está el demo para FiveWin, proximamente otros demos mas, incluyendo por su puesto, el de Internet  con WebAS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-6304641236105498030?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/6304641236105498030/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=6304641236105498030' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6304641236105498030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6304641236105498030'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/03/demo-del-sistema-de-facturacion.html' title='Demo del sistema de facturación electrónica ya disponible'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7088699891722936639</id><published>2010-02-11T16:37:00.002-06:00</published><updated>2010-02-11T16:57:30.731-06:00</updated><title type='text'>Lista la facturación electrónica para México.</title><content type='html'>En los proximos días, a mi regreso de España el día 22 de Febrero, pondremos a su disposicion los primeros módulos para la generación de facturas electrónicas siguiendo el estandar de México establecido por el SAT.&lt;br /&gt;&lt;br /&gt;Este trabajo es un proyecto conjunto entre CiberTec y 3 despachos de contadores: FSA, Grupo DAL, S.C.  y Lopez, Valero y Asociados los cuales nos han asesorado en todo el tema fiscal, y nosotros hemos hemos puesto  nuestro granito de arena con el tema informático.&lt;br /&gt;&lt;br /&gt;Así mismo tendremos a su disposición una DLL con todos lo algoritmos de encriptamiento necesarios, (probados contra el servidor del SAT), para la generación de la cadena original, del sello digital así como el ensobretado y envío de las facturas electronicas en archivos XML a los clientes.&lt;br /&gt;&lt;br /&gt;Hemos desarrollado una clase especial en (x)Harbour, compatible con las GUIS mas populares con (x)Harbour y probada exitosamente con FiveWin y con Xailer, la clase genera TODO, y se puede usar con FastReport para generar directamente facturas "selladas" y enviarlas por correo electrónico tanto como archivos XML como en PDF (requiere FastReport para esto último).&lt;br /&gt;&lt;br /&gt;Estamos trabajando en los destalles finales que son los temas de comunicaciones con los WebServices del SAT para subir las facturas al servidor del SAT y una interfaz basada en Web para que los clientes puedan recuperar sus facturas siempre que lo necesiten (según los requisitos establecidos por el SAT de 10 años de almacenamiento por parte del proveedor).&lt;br /&gt;&lt;br /&gt;La solución esta disponible en formato programador "listo para usar": Licencia de la DLL para generar el encriptamiento, y código fuente de la clase con todos sus métodos documentados para una generación fácil y rapida de comprobantes fiscales digitales tal cual lo establecen los requisitos del SAT.&lt;br /&gt;&lt;br /&gt;Para los que no programen en (x)Harbour, por ejemplo en CA-Clipper tenemos otra solución que les permitirá generar sus facturas electrónicas y administrarlas.&lt;br /&gt;&lt;br /&gt;La solución para programadores incluye un curso tanto a nivel fiscal (impartido por un experto fiscalista) como a nivel programador (impartido por el mismo autor de la clase) para la creación de facturas electrónicas que cumplan los requisitos establecidos por el SAT.&lt;br /&gt;&lt;br /&gt;Si estas interesado en mas información de nuestra solución de factura electrónica para (x)Harbour y CA-Clipper, puedes contactar con nosotros a partir del 23 de Febrero de 2010.&lt;br /&gt;&lt;br /&gt;Saludos desde la recta final de la Operación España 2010, próxima parada ..... Madrid.... y sí, sigue nevando en Donosti.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7088699891722936639?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7088699891722936639/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7088699891722936639' title='23 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7088699891722936639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7088699891722936639'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/02/lista-la-facturacion-electronica-para.html' title='Lista la facturación electrónica para México.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-2810133784001575840</id><published>2010-02-09T03:35:00.002-06:00</published><updated>2010-02-09T04:08:29.411-06:00</updated><title type='text'>Ya llegó.... ya está aqui....</title><content type='html'>Típico, no puedes confiar en las imprentas, pero bueno, con 2 días de demora sobre el horario planeado aquí está:&lt;br /&gt;&lt;br /&gt;La primera edición impresa en España del manual de Advantage Database Server para (x)Harbour:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/sany8416.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Después de unos cuantos meses sufriendo con los codigos en "C" del RDDADS y noches enteras traduciendo las ayudas del Advantage Data Architech y ajustando la sintaxis para que coincidiera con la del RDDADS de (x)Harbour, creo que ha merecido la pena, el trabajo de impresión es impecable.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/sany8418.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Mil gracias a Niko del Pozo y a Geroa Software por haberse comido el marrón de la publicación y haber conseguido a la imprenta para hacer el trabajo y  ¡ todo por internet ! (&lt;a href="http://www.e-impresion.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;www.e-impresion.com&lt;/span&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Y también gracias a Bingen Ulgadebere de &lt;a style="font-weight: bold; font-style: italic;" href="http://www.bisoft.es"&gt;BiSoft&lt;/a&gt; por la corrección de las erratas, el amigo Israel Solís y yo nos reunimos con Bingen en Noviembre en  Cancún le entregé el material de ADS que teníamos , y unos cuantos meses después de haberse leído el manual completo (no se a que horas) me ha devuelto uno corregido de erratas.&lt;br /&gt;&lt;br /&gt;Cosas de la globalización.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-2810133784001575840?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/2810133784001575840/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=2810133784001575840' title='8 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2810133784001575840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2810133784001575840'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/02/ya-llego-ya-esta-aqui.html' title='Ya llegó.... ya está aqui....'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7723128908241231541</id><published>2010-02-04T18:50:00.002-06:00</published><updated>2010-02-04T19:11:47.851-06:00</updated><title type='text'>Xailer 2.0... solo renueva tus servicios y lo tienes !!!</title><content type='html'>A ver, esta semana he recibido una avalancha de preguntas sobre la actualizacion de Xailer 2.0 y la gran mayoría de los que preguntan son usuarios que tienen vencido desde hace una buena temporada sus servicios de soporte y actualizaciones.&lt;br /&gt;&lt;br /&gt;No hay ningun problema, no importa que tus suscripción se encuentre vencida, ni cuanto tiempo tenga de vencida, si quieres Xailer 2.0, lo unico que requerimos es que renueves tus servicios de soporte y actualizacion y listo, en menos de 24 horas podras descargar y utilizar Xailer 2.0.&lt;br /&gt;&lt;br /&gt;Los precios para México:&lt;br /&gt;&lt;br /&gt;Versión Pro: $ 4,900.00&lt;br /&gt;Version Enterprise $ 5,900.00&lt;br /&gt;&lt;br /&gt;Los precios NO INCLUYEN EL 16% de IVA correspondiente, asi que no se olviden de agregarlo.&lt;br /&gt;&lt;br /&gt;Para el resto de América:&lt;br /&gt;&lt;br /&gt;Versión Pro: $ 335.00 USD&lt;br /&gt;Versión Enterprise: $ 405.00 USD&lt;br /&gt;&lt;br /&gt;En los proximos días actualizaré la pagina de compra de Xailer on-line con las opciones para renovar los servicios de soporte.&lt;br /&gt;&lt;br /&gt;Para mas información por favor contactenme en :&lt;a style="font-weight: bold; font-style: italic;" href="mailto:info@ciber-tec.com"&gt; info@ciber-tec.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y para todos aquellos que aun están dudando si Xailer funciona.... aqui les dejo un video de &lt;a style="font-weight: bold; font-style: italic;" href="http://www.bisoft.es/"&gt;BiSoft&lt;/a&gt;, empresa ganadora del premio &lt;a href="http://marketingycomercial.blogspot.com/2008/05/premios-lur-barriak-2008.html"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Lur Barriak&lt;/span&gt;&lt;/a&gt; (Tierras Nuevas) de inovación tecnológica y que son los autores de BiConta, sistema de Contabilidad, y de otro programa del que "solo" tienen mas de 10 mil copias instaladas y migrado de FiveWin a Xailer en solo 4 meses:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gzEGF6ZcNqw&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/gzEGF6ZcNqw&amp;amp;hl=es_MX&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7723128908241231541?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7723128908241231541/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7723128908241231541' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7723128908241231541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7723128908241231541'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/02/xailer-20-solo-renueva-tus-servicios-y.html' title='Xailer 2.0... solo renueva tus servicios y lo tienes !!!'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5101840934112832053</id><published>2010-02-03T17:29:00.004-06:00</published><updated>2010-02-03T17:51:12.182-06:00</updated><title type='text'>UE Aprueba sin condiciones la compra de Sun por Oracle</title><content type='html'>Pues justamente como lo habíamos venido especulando en Objeto Persistente, el día 21 de Enero de 2010, la comisión antimonopolio de la Unión Europea, ha aprobado "incondicionalmente" (nótense las comillas) la adquisición de Sun Microsystems por parte de Oracle.&lt;br /&gt;&lt;br /&gt;Según el &lt;a style="font-weight: bold; font-style: italic;" href="http://www.oracle.com/us/corporate/press/043873"&gt;comunicado de prensa de Oracle&lt;/a&gt;, esta "incondicionalidad" es relativa y alguna de las cosas que se establecieron para lograr la aprobación "pudieran" no cumplirse en el corto, largo o mediano plazo y sin embargo estas "pegas" no representan ningín impedimento para que la UE haya dado su visto bueno para la adquisición, quedando pendiente la aprovación por parte de Ruisa y China.&lt;br /&gt;&lt;br /&gt;Leyendo entre líneas esto quiere decir que los 5 años que le dan a MySQL como software OpenSource "pudieran" no llegar a 5 años y que la campaña de Widenius de&lt;a href="http://www.helpmysql.org/es/theissue/customerspaythebill"&gt; &lt;/a&gt;&lt;a href="http://www.helpmysql.org/es/theissue/customerspaythebill"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Save MySQL&lt;/span&gt;&lt;/a&gt; no ha servido para nada (cosa que ya sabíamos)&lt;br /&gt;&lt;br /&gt;Saludos desde San Sebastian - Donostia donde mañana comenzamos la operación España 2010.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5101840934112832053?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5101840934112832053/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5101840934112832053' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5101840934112832053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5101840934112832053'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/02/ue-aprueba-sin-condiciones-la-compra-de.html' title='UE Aprueba sin condiciones la compra de Sun por Oracle'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-9176298002441015025</id><published>2010-01-22T01:00:00.000-06:00</published><updated>2010-01-22T01:00:04.396-06:00</updated><title type='text'>Un vistazo a la operación España 2010, Parte 3</title><content type='html'>En el episodio anterior nuestro héroe (x)Harbour se ha conectado con FastReport y nos ha generado un página Web..... ni mas ni menos.&lt;br /&gt;&lt;br /&gt;Curiosamente para usar (x)Harbour con Internet, no necestias NADA, ni interfaces gráficas (you know which one I mean) y quien pretenda decir que específicamente necesitarías tal o cual herramienta para hacer que tus programas corran en Web, te esta mintiendo (siento arruinar nuevamente la fiesta, pero es así).&lt;br /&gt;&lt;br /&gt;Nosotros llevamos unos cuantos años ya haciendo programas que corren en navegadores Web usando lenguaje Xbase, incluso es posible hacerlo con Clipper 5.2 a 16 bits, de hecho tenemos complejísimos sistemas (una contabilidad completa con 200 usuarios concurrentes) hecha con Clipper que corre usando un navegador Web.&lt;br /&gt;&lt;br /&gt;Hace un par de años escribí &lt;a href="http://objetopersistente.blogspot.com/2007/02/el-mundo-de-los-32-bits-interfaces.html"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;un artículo en este mismo blog&lt;/span&gt;&lt;/a&gt;, donde explico un poco como funciona el invento de programar para internet con (x)Harbour y sus ventajas sobre la programación normal en entornos Windows.&lt;br /&gt;&lt;br /&gt;Con el paso del tiempo, hemos depurado esta técnica y creado nuestras propias herramientas para acelerar el proceso de programación para Internet, hoy tenemos creado WebAS (Web Application System), que no es mas que una clase escrita en (x)Harbour que se encarga de controlar todo el desarrollo web.&lt;br /&gt;&lt;br /&gt;WebAS no requiere de ninguna interfaz gráfica, ni FW, ni MIniGui, ni Xailer, ni naaaaaa, con (x)Harbour puro se puede hacer funcionar o bien usar tu GUI favorita por si necesitas alguna clase especifica, como la clase TDatabase o un DataSet de Xailer. Yo personalmente utilizo Xailer, por el tema del depurador ya que gracias al debugger de Xailer puedo detectar mas rápidamente los errores en mi código de internet.&lt;br /&gt;&lt;br /&gt;WebAS es un PRG, que contiene una clase para controlar la entrada/salida de datos por Web, simplemente lo incluyes en tu proyecto (x)Harbour y listo, aplicas unos cuantos métodos y tu aplicación sale caminando para Web.&lt;br /&gt;&lt;br /&gt;Al igual que cuando te mueves de MS-DOS a Windows, hay que cambiar toda la interfaz con el usuario, nada de tus pantallas actuales se pueden aprovechar porque toda la interfaz tiene que estar basada en archivos HTML, sin embargo el paso de MS-DOS a Web es mas sencillo, porque no hay eventos que controlar, por lo menos en la primera etapa, y además funciona como procesos batch, por lo tanto el control del flujo del programa es mucho mas simple.&lt;br /&gt;&lt;br /&gt;WebAS se complementa bien usando editores de HTML como DreamWeaver para generar tu intefaz con el usuario, y el uso de las paginas web, generadas con cualquier editor HTML, con WebAS es sumamente sencillo, tan simple como leer un archivo de texto con MemoEdit().&lt;br /&gt;&lt;br /&gt;Del lado del cliente (paginas web que se van visualizar en el navegador) puedes usar lo que quieras: Applets de Java, hojas de estilo, JavaScript, Ajax, incluso &lt;a style="font-weight: bold; font-style: italic;" href="http://xharbour.com/index.asp?page=add_on_xbscript&amp;amp;show_h=1&amp;amp;show_i=999"&gt;XBScript de xharbour.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Usando esta tecnología puedes usar hasta un teléfono movil, un iPhone por ejempo, para ejecutar programas hechos en xHarobur y que corran con interfaz web.&lt;br /&gt;&lt;br /&gt;Veamos algunos ejemplos:&lt;br /&gt;&lt;br /&gt;http://www.digaden.edu.mx&lt;br /&gt;&lt;br /&gt;En la parte inferior izquierda selecciona "&lt;span style="color: rgb(0, 0, 102);font-family:Courier New,Courier,mono;font-size:85%;"  &gt;&lt;a href="http://www.digaden.edu.mx/GradeWeb.htm"&gt;Sistema          de Consulta de calificaciones de cadetes y alumnos de nivel Licenciatura          y Técnico Profesional&lt;/a&gt;&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;En la seccion matrícula: puedes usar estos 2 números: INGE09001 ó INGM05002&lt;br /&gt;&lt;br /&gt;Esta pagina de consulta esta hecha usando (x)Harbour sobre Tablas ADT de Advantage database server.&lt;br /&gt;&lt;br /&gt;Otro ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.ciber-tec.d2g.com:90/sgs/"&gt;http://www.ciber-tec.d2g.com:90/sgs/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tienes varias opciones en esta web:&lt;br /&gt;&lt;br /&gt;Usuario: A-1111&lt;br /&gt;Usuario: A-12345678&lt;br /&gt;Usuario: A-32323232&lt;br /&gt;&lt;br /&gt;En todos los casos, el password es: 1111&lt;br /&gt;&lt;br /&gt;Ahi puedes ver como dependiendo del usuario, se generan pantallas distintas, todos los datos de esa web estan en archivos DBFs con indices CDX.&lt;br /&gt;&lt;br /&gt;Otro ejemplo mas:&lt;br /&gt;&lt;br /&gt;http://www.ciber-tec.d2g.com/rhshipping/&lt;br /&gt;&lt;br /&gt;Usuario: RUDOLF&lt;br /&gt;Password: RUDOLF&lt;br /&gt;&lt;br /&gt;Esta web requiere que tengas JAVA instalado en tu computadora ya que verás unos folders que hacen uso de un applet.&lt;br /&gt;&lt;br /&gt;Todos los listados de esta web provienen de archivos DBFs con índices CDX.&lt;br /&gt;&lt;br /&gt;Como verás el grado de complejidad que se puede lograr con WebAS es muy interesante, la imginación es el límite, lo puedes combinar con ADS, o con FastReport, los resultados saltan a la vista.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-9176298002441015025?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/9176298002441015025/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=9176298002441015025' title='13 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/9176298002441015025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/9176298002441015025'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/01/un-vistazo-la-operacion-espana-2010_22.html' title='Un vistazo a la operación España 2010, Parte 3'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-189022739627312845</id><published>2010-01-21T02:11:00.002-06:00</published><updated>2010-01-21T02:11:00.271-06:00</updated><title type='text'>Un vistazo a la operación España 2010, Parte 2</title><content type='html'>FastReport para (x)Harbour es quizá la herramienta mas revolucionaria y útil que he visto en los últimos años, y mira que he visto herramientas de programación en mis últimos 15 años como programador de tecnologías Xbase.&lt;br /&gt;&lt;br /&gt;¿ Porqué merece la pena mirar a FastReport ?, pues porque es un generador de informes visual que no le pide absolutamente nada a otros productos como Crystal Reports, List &amp;amp; Label, etc. su implementación es mas simple que el mecanismo de un chupete, solo copias una DLL, incluyes un PRG a tu proyecto, algunas llamadas a métodos, recompilas y estas listo para hacer reportes, además de que funciona con (x)Harbour puro y duro en modo consola y con cualquier interfaz gráfoca para Windows como Xailer, Visual xHarbour, MiniGUI, FiveWin, OOHG, etc.&lt;br /&gt;&lt;br /&gt;El problema del uso de FastReport, no es tanto contar con ejemplos que muestren todas sus posibilidades, sino la documentación de la clase que lo controla, y ahí es donde entramos nosotros.&lt;br /&gt;&lt;br /&gt;Hemos documentado al detalle los métodos, propiedades y eventos de FastReport totalmente en Español, lo que te permitirá tener el control absoluto tanto del generador visual de informes como de los motores de vista previa y de exportación de datos desde tu código fuente.&lt;br /&gt;&lt;br /&gt;FastReport tiene esa gran ventaja: te permite diseñar visualmente complejos reportes usando cualquier fuente de datos, archivos DBF con índices NTX o CDX, tablas ADT de Advantage Database Server o bien fuentes de datos SQL via ADO, y "alimentar" los datos a tus reportes desde tu código fuente, controlando además desde tu PRG todos los aspectos de generación de reportes.&lt;br /&gt;&lt;br /&gt;¿ Desilusionado porque tu motor de reportes actual no te permite exportar tus reportes ? No hay problema, FastReport puede exportar cualquier informe que tu diseñes a 11 formatos distintos, incluyendo envio por e-mail, PDF, XLS, RTF, HTML, cualquier formato de imagen (JPG, BMP, GIF, TIFF) y documentos de OpenOffice, sin necesidad de programar absolutamente nada.&lt;br /&gt;&lt;br /&gt;He aquí un pequeño ejemplo de lo que puedes hacer cuando mezclas el motor de exportación HTML de FastReport y un poco de programación para internet con (x)Harbour (que por cierto no tiene la mayor ciencia):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ciber-tec.d2g.com/frh/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Ejemplo del motor de exportación HTML de FastReport&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Los reportes fueron diseñados visualmente con el diseñador de FastReport usando Xailer, y luego se ha usado un pequeño programa (x)Harbour y nuestro frame de desarrollo Web, llamado WebAS, para publicarlo en internet, si eres observador, cuando llamas a cualquier informe, en la barra del navegador aparece algo como esto:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;http://www.ciber-tec.d2g.com/cgi-win/frh/frh.exe?func=rep(3)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La función Rep(&lt;valor&gt;) Está escrita en Harbour y para usarla solo hace falta....... bueno, creo que eso mejor lo vemos en el siguiente post.&lt;/valor&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-189022739627312845?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/189022739627312845/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=189022739627312845' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/189022739627312845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/189022739627312845'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/01/un-vistazo-la-operacion-espana-2010_21.html' title='Un vistazo a la operación España 2010, Parte 2'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1598101963772602552</id><published>2010-01-20T02:09:00.003-06:00</published><updated>2010-01-20T02:44:32.423-06:00</updated><title type='text'>Un vistazo a la Operación España 2010, Parte 1</title><content type='html'>Las últimas 2 semanas he estado revisando toda la documentación que vamos a utilizar en los cursos de este año en Donosti, las desveladas hasta las 2 am han merecido la pena, creo que por mucho los documentos que acompañarán a los cursos este año han sobrepasado incluso mis propias espectativas.&lt;br /&gt;&lt;br /&gt;El curso mejor documentado es sin duda el de Advantage Database Server, ya que hemos contado con la inestimable ayuda de Sybase iAnywhere en cuanto al tema de documentación se refiere.&lt;br /&gt;&lt;br /&gt;Sybase iAnywhere nos ha proporcionado para los asistentes al curso 2 valiosos recursos:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Un Ejemplar de libro: Advantage Database Server, a Developer's Guide&lt;/li&gt;&lt;li&gt;Un CD con el SKD (Software Developer Kit) con importantes herramientas para el desarrollador.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;El libro Advantage Database Server, a Developer's Guide, de Cary Jensen  y Loy Anderson es una estupenda referencia para uso de ADS con otros lenguajes de programación como .NET, Java, PHP, Delphi, etc. además contiene una referencia muy buena del uso de SQL con Advantage y de las herramientas incluídas con ADS.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/adsbook.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El CD con el SDK incluye, además de todos los clientes ADS para .NET, ADO, ODBC, Delphi, Clipper, Visual Objects, Crystal Reports, Java, ASP y PHP una licencia de 2 usuarios del Servidor de Datos Advantage Database Server para Linux, Novell y Windows, esto quiere decir que puedes instalarlo sobre cualquiera de estos sistemas operativos o sobre los 3 si quieres, también se incluye una licencia del servidor de replicación ADS, y todo SIN LIMITACIONES ni de tiempo de uso ni de funcionalidad.&lt;br /&gt;&lt;br /&gt;El libro de Jensen cubre muchos aspectos del uso de ADS, pero no incluye un apartado dedicado a (x)Harbour específicamente, por eso, en el curso incluiremos además la nueva versión 2010 de nuestro manual de Advantage Database Server para (x)Harbour.&lt;br /&gt;&lt;br /&gt;¿ Pues no que ya habías terminado la documentación desde Septiembre del año pasado ?&lt;br /&gt;&lt;br /&gt;Pues según yo sí, pero luego me di cuenta que "algo" no cuadraba cuando leí un comentario en el foro de ADS para (x)Harbour, en el cual se mencionaban una serie de funciones que no me sonaban a mí haberlas documentado (y miren que leí el código fuente unas cuantas veces), me entró la duda y me puse a revisar el código fuente del RDDADS de (x)Harbour y ahí fue donde me dí cuenta mi error: Mi documentación solo contaba con las funciones incluídas en el archivo &lt;span style="font-weight: bold;"&gt;ADSFUNC.C,&lt;/span&gt; este archivo contiene los wrappers para las funciones del archivo ACE32.DLL de ADS, que contiene, entre otras funciones, las funciones de manipulación de datos de ADS.&lt;br /&gt;&lt;br /&gt;Mi error fue haber omitido en la documentación las funciones contenidas en el archivo &lt;span style="font-weight: bold;"&gt;ADSMGMNT.C&lt;/span&gt;, en este archivo van contenidos los wrappers a las funciones DE ADMINISTRACION del servidor ADS, esas funciones también están contenidas en el ACE32.DLL, no tienen nada que ver con la manipulación de datos, por eso están en otro archivo, esas funciones sirven para obtener datos administrativos del servidor, como pueden ser: el número de usuarios conectados, número de licencias, tablas abiertas, conexiones activas, queries en ejecución etc.&lt;br /&gt;&lt;br /&gt;Pues se me había olvidado documentar esas funciones, que no son pocas, así que de vuelta al código fuente, al manual de ADS y a traducir para completar la documentación de las funciones faltantes y ahora sí, el manual está completo, pero ha subido un poco de peso porque se fué de 149 páginas a 252.&lt;br /&gt;&lt;br /&gt;Si tienes la versión 2009 de nuestra documentación de ADS, o eres usuario con licencia de la versión 8 ó 9 de Advantage Database Server, por favor, pídenos que te enviemos la versión 2010, lo haremos con mucho gusto y sin costo (sólo México y España). Para el resto de los paises la documentación está disponible para usarios con licencia de las versiones mencionadas, cubriendo unicamente los gastos de envío.&lt;br /&gt;&lt;br /&gt;Finalmente, Sybase iAnywhere nos vuelve a apoyar a los asistentes al curso, ofreciento un importante descuento si después del curso decides comprar tu licencia de Advantage Database Server, dependiendo del número de usuarios de la licencia que adquieras, el descuento puede ser hasta el importe pagado por el curso, con lo cual matas 2 pájaros de un tiro: Obtienes todo el conocimiento necesario y las herramientas para obtener el máximo provecho de ADS en el menor tiempo posible y adquieres tu licencia con un estupendo descuento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1598101963772602552?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1598101963772602552/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1598101963772602552' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1598101963772602552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1598101963772602552'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/01/un-vistazo-la-operacion-espana-2010_20.html' title='Un vistazo a la Operación España 2010, Parte 1'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5026450663862114553</id><published>2010-01-08T16:37:00.005-06:00</published><updated>2010-01-08T17:10:41.146-06:00</updated><title type='text'>Windows 7 y "la de dios".</title><content type='html'>OK. OK, ya se que en España el título de este artículo puede parecer un poco fuerte, pero por esta vez les voy a pedir a mis lectores europeos un poco de tolerancia, ya verán porqué.&lt;br /&gt;&lt;br /&gt;Tengo ya poco mas de un mes con Windows 7 (gracias Isra) y estoy ENCANTADO con el sistema operativo, nunca tuve problemas con Vista, pero Windows 7 lo siento bastante mas robusto y rápido.&lt;br /&gt;&lt;br /&gt;A excepción del driver de la $%/&amp;amp;?!"#%$ tarjeta de TV que viene integrada en mi LapTop nueva, todo en Windows 7 funciona rapido y bien, realmente estoy muy contento.&lt;br /&gt;&lt;br /&gt;Hace unas horas, via&lt;a href="http://www.facebook.com/"&gt;&lt;span style="font-weight: bold;"&gt; Facebook&lt;/span&gt;&lt;/a&gt; (ya le estoy encontrando utilidad a las redes sociales) mi amigo &lt;a style="font-weight: bold;" href="http://www.patrickmast.com/"&gt;Patrick Mast&lt;/a&gt; publicó una liga a un artículo de NeoWin.Net &lt;span style="font-weight: bold; font-style: italic;"&gt;(&lt;/span&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.neowin.net/"&gt;www.neowin.net&lt;/a&gt;) donde se explica como activar "la de dios" ó "modo dios" (God Mode) de Windows 7.&lt;br /&gt;&lt;br /&gt;El "modo dios" de Windows 7 te permite acceder a TODOS los aspectos de configuración y otras cosas mas que no están disponibles a simple vista, de tu Windows 7, desde una sola carpeta de una manera rápida y ordenada sin tener que pasar por el panel de control ni tener que buscar programas ocultos u otras cosas.&lt;br /&gt;&lt;br /&gt;He aquí la receta para activar el "modo dios" de Windows 7:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Crea una carpeta nueva en tu disco duro&lt;/li&gt;&lt;li&gt;Renombra la carpeta EXACTAMENTE con este nombre:&lt;/li&gt;&lt;/ol&gt;GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}&lt;br /&gt;&lt;br /&gt;y...... ¡ Sorpresa !!!!!!&lt;br /&gt;&lt;br /&gt;¿ Te gustó ?????&lt;br /&gt;&lt;br /&gt;Bueno aquí te va otra:&lt;br /&gt;&lt;br /&gt;Existen muchos "dioses" en el panteón de Windows 7, son estos:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Default Location -&lt;/b&gt; {00C6D95F-329C-409a-81D7-C46C66EA7F33}&lt;br /&gt;&lt;b&gt;Biometrics -&lt;/b&gt; {0142e4d0-fb7a-11dc-ba4a-000ffe7ab428}&lt;br /&gt;&lt;b&gt;Power Settings -&lt;/b&gt; {025A5937-A6BE-4686-A844-36FE4BEC8B6D}&lt;br /&gt;&lt;b&gt;Notification Area -&lt;/b&gt; {05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}&lt;br /&gt;&lt;b&gt;Manage Credentials -&lt;/b&gt; {1206F5F1-0569-412C-8FEC-3204630DFB70}&lt;br /&gt;&lt;b&gt;Get New Programs -&lt;/b&gt; {15eae92e-f17a-4431-9f28-805e482dafd4}&lt;br /&gt;&lt;b&gt;Default Programs -&lt;/b&gt; {17cd9488-1228-4b2f-88ce-4298e93e0966}&lt;br /&gt;&lt;b&gt;NET Framework Assemblies -&lt;/b&gt; {1D2680C9-0E2A-469d-B787-065558BC7D43}&lt;br /&gt;&lt;b&gt;Wireless Networks -&lt;/b&gt; {1FA9085F-25A2-489B-85D4-86326EEDCD87}&lt;br /&gt;&lt;b&gt;Network Neighborhood -&lt;/b&gt; {208D2C60-3AEA-1069-A2D7-08002B30309D}&lt;br /&gt;&lt;b&gt;My Computer - &lt;/b&gt;{20D04FE0-3AEA-1069-A2D8-08002B30309D}&lt;br /&gt;&lt;b&gt;Printers -&lt;/b&gt; {2227A280-3AEA-1069-A2DE-08002B30309D}&lt;br /&gt;&lt;b&gt;RemoteApp and Desktop&lt;/b&gt;&lt;span style="font-weight: bold;"&gt; - &lt;/span&gt;{241D7C96-F8BF-4F85-B01F-E2B043341A4B}&lt;br /&gt;&lt;b&gt;Windows Firewall -&lt;/b&gt; {4026492F-2F69-46B8-B9BF-5654FC07E423}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Performance&lt;/span&gt;&lt;b&gt; -&lt;/b&gt; {78F3955E-3B90-4184-BD14-5397C15F1EFC}&lt;br /&gt;&lt;br /&gt;Y todos se activan de la misma forma que como se hace con el "modo dios".&lt;br /&gt;&lt;br /&gt;Existe una &lt;a style="font-style: italic;" href="http://msdn.microsoft.com/en-us/library/ee330741%28VS.85%29.aspx"&gt;amplia documentación de los "nombres canonicos&lt;/a&gt;" de Windows 7 donde puedes obtener mas información sobre estos "dioses" de Windows 7.&lt;br /&gt;&lt;br /&gt;Los articulos completos de NeoWin están disponibles &lt;a style="font-weight: bold; font-style: italic;" href="http://www.neowin.net/news/main/10/01/05/windows-7-god-mode-so-to-speak-revealed"&gt;aquí &lt;/a&gt;y&lt;a style="font-weight: bold; font-style: italic;" href="http://www.neowin.net/news/main/10/01/07/windows-7-has-many-more-godmodes"&gt; aquí.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Espero que les sea de utilidad.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5026450663862114553?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5026450663862114553/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5026450663862114553' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5026450663862114553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5026450663862114553'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/01/windows-7-y-la-de-dios.html' title='Windows 7 y &quot;la de dios&quot;.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-6164716095563667829</id><published>2010-01-02T22:09:00.002-06:00</published><updated>2010-01-03T01:21:14.565-06:00</updated><title type='text'>¿ Se salvará MySQL ?</title><content type='html'>Primero fue &lt;a style="font-weight: bold; font-style: italic;" href="http://www.mysql.com/news-and-events/sun-to-acquire-mysql.html"&gt;la adquisición de MySQL AG por Sun MicroSystems&lt;/a&gt;, todos los interesados (o al menos la gran mayoría) consideraron esto un gran avance para MySQL peeeeero......&lt;br /&gt;&lt;br /&gt;¡ No contaban con Oracle ! quien &lt;a style="font-weight: bold; font-style: italic;" href="http://www.oracle.com/us/corporate/press/018363"&gt;adquirió el año pasado a Sun MicroSystems&lt;/a&gt; y por ende a MySQL.&lt;br /&gt;&lt;br /&gt;Una de las cosas que no me cabían en la cabeza y que aún no alcanzo a enteder, es como pretenden compatibilizar los intereses del fabricante de bases de datos mas caras y mas grande del mundo, con la base de datos OpenSource mas popular del mundo, productos similares y  competencia directa entre ellos.&lt;br /&gt;&lt;br /&gt;Según tengo entendido, Oracle compró Sun MicroSystems no por Java, ni por Open/Star Office, y mucho menos por MySQL, la adquisición de Sun por parte de Oracle se debió principalmente por su línea de servidores de hardware y por su sistema operativo Solaris, donde Oracle tiene instalados a sus mas grandes consumidores, el resto de los productos era un "plus", vamos, era "calderilla"  que venía incluida en la compra.&lt;br /&gt;&lt;br /&gt;En el mundo de las grandes bases de datos, es bien sabido que la combinación Oracle/Solaris es una combinación ganadora aunque por otro lado Oracle está haciendo grandes esfuerzos por entrar en el creciente mercado de los servidores Linux, lo quiera o no lo quiera, ya lo logró y lo hizo de "rebote"  al comprar a Sun y de paso a MySQL.&lt;br /&gt;&lt;br /&gt;El balón está ahora en la cancha de la Comisión Europea (EC),  que ha expresado su preocupación sobre el futuro de MySQL como producto OpenSource, Oracle ha ofrecido una&lt;a href="http://www.marketwire.com/press-release/Oracle-Corporation-NASDAQ-ORCL-1090000.html"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; serie de 10 puntos&lt;/span&gt;&lt;/a&gt; que garantizan que MySQL seguirá siendo un producto OpenSource, pero durante un período de tiempo limitado (5 años). Con Europa no pasa lo mismo que con Norteamérica, en Europa pocas tonterías con el tema monopolios y triquiñuelas, Microsoft ha tenido que ceder muchas veces a los requerimientos de la unión Europea, la última: En Europa el Windows 7 puede o no venir con Internet Explorer instalado. ( y si no viene con el Explorer Instalado.... ¿ como van a descargar el FireFox, Safari, Chrome o el Opera ?)&lt;br /&gt;&lt;br /&gt;Al parecer este ofrecimiento por parte de Oracle no termina de convencer a algunos usuarios de MySQL entre ellos a  uno de los autores originales: Michael "Monty" Widenius, quien  ha comenzado una campaña global bajo el nombre de "&lt;a href="http://www.helpmysql.org"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Salvemos MySQL&lt;/span&gt;&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;En su blog "&lt;a href="http://monty-says.blogspot.com/2009/12/oracle-gives-only-empty-promises-for.html"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Monty Says&lt;/span&gt;&lt;/a&gt;", Widenius ha lanzado en los últimos días de Diciembre una convocatoria a todos los usuarios de MySQL para devolver el producto a OpenSource argumentando primero que Internet tiene que seguir siendo libre y que dejar que una empresa con fines de lucro controle a la base de datos mas utilizada en Internet, ataría a sus usuarios a depender de sus caprichos ya  que Oracle se compromente a mantener a MySQL como producto OpenSource, a seguir desarrollandolo y darle mantenimiento únicamente por los próximos 5 años, después de los cuales, Oracle puede hacer lo que quiera con MySQL, desaparecerlo, regarlarlo, tirarlo a la basura, etc.&lt;br /&gt;&lt;br /&gt;Desde luego pensar que Oracle podría desaparecer en un momento dado a MySQL es una tontería, porque MySQL es la puerta de entrada de Oracle al mundo de las redes de PCs basadas en Windows, tenemos que recordar que MySQL NO ES GRATIS, hay que pagar una licencia por su uso para fines comerciales, y que dicha licencia es muy barata.&lt;br /&gt;&lt;br /&gt;Los productos de Oracle están normalmente fuera del alcance presupuestal de la mayoría de los usuarios de Windows, un usuario de servidores Windows normalmente se decantaría por usar SQL Server de Microsoft, y ahí es donde entra MySQL, es una excelente alternativa a los productos de Microsoft y tenemos que recordar que entre Larry Ellison (CEO de Oracle) y Bill Gates (CEO de .... tu sabes) existe una profunda rivalidad que raya en el odio.&lt;br /&gt;&lt;br /&gt; ¿ Y donde quedó el tema Open Source de MySQL ?&lt;br /&gt;&lt;br /&gt;Aquí el principal problema es que MySQL AG incluyó en el precio de venta a Sun los derechos de propiedad del código. Si estás pagando un dineral por una empresa, esa empresa tiene que tener algún valor o ser valiosa por algo, en este caso, por la base de datos, sin embargo al ser el producto un Open Source, la sesión de derechos de autoría a Sun le garantiza que realmente esta comprando "algo" y le da derechos sobre ese "algo".&lt;br /&gt;&lt;br /&gt; La gente de MySQL (Monty Widenius  incluído) cobró alegremente su billón de dólares (1,000 millones de dólares) y a todos les importó un ca....jo que iba a pasar en el futuro con el producto, desde luego hubo mucho  69 legal (como diría mi admirado &lt;a style="font-weight: bold; font-style: italic;" href="http://www.perspicalia.com/fuckowski-on-line"&gt;Fuckowsky&lt;/a&gt; en su "Proyecto bicicleta") entre los abogados de ambas partes y blah, blah, blah, para garantizar el futuro del producto, pero el mal estaba hecho, ellos recibieron un dinero por su empresa, y a cambio Sun se quedó con el producto y todo lo que con ello iba incluído, ahora esos derechos son propiedad de Oracle.&lt;br /&gt;&lt;br /&gt;Desde mi punto de vista creo que Widenius está tratando de salvar lo insalvable, su derecho de decisión sobre MySQL terminó el día que recibió  su dinero por la venta de la empresa, lo mismo que sucede con Linus Torvalds actualmente,  creó Linux, tiene un asteroide con su nombre y ha sido nombrado como uno de los hombres influyentes del siglo, pero actualmente no tiene ningún poder de decisión sobre el desarrollo de Linux.&lt;br /&gt;&lt;br /&gt;Por otro lado.... si el producto es OpenSource.... ¿ porqué no dejar de lado el viejo MySQL, que Oracle haga lo que le de la gana con su MySQL y se comienza otro proyecto ?.&lt;br /&gt;&lt;br /&gt;Esto se va a poner interesante en los próximos meses, veremos la ruta de los acontecimientos que sin duda serán interesantes para el futuro de MySQL.&lt;br /&gt;&lt;br /&gt;Moraleja: si quieres que un producto Open Source permanezca Open Source..... ¡¡¡ NO LO VENDAS !!!&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-6164716095563667829?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/6164716095563667829/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=6164716095563667829' title='6 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6164716095563667829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6164716095563667829'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2010/01/se-salvara-mysql.html' title='¿ Se salvará MySQL ?'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-6321204846466200636</id><published>2009-12-19T22:50:00.004-06:00</published><updated>2009-12-20T20:10:44.307-06:00</updated><title type='text'>Peregrinatio, Por el camino de la Luz.</title><content type='html'>En el transcurso de tu vida, según dicen por ahí, tienes que escribir un libro, plantar un árbol y tener un hijo.&lt;br /&gt;&lt;br /&gt;Yo agregaría algo más.... tienes que hacerte amigo de un artista.&lt;br /&gt;&lt;br /&gt;Yo tengo la fortuna de conocer y ser amigo de uno, &lt;a style="font-weight: bold; font-style: italic;" href="http://www.fotonatura.org/miembros/fichas/2317/"&gt;Juan Ramón Llavori&lt;/a&gt;, su arte es comparable a la pintura, pero en su versión moderna, Juan Ramón o como le llamamos los amigos, "JR",  es un artista del lente, un fotógrafo maravilloso.&lt;br /&gt;&lt;br /&gt;Tengo la fortuna de poseer 2 de sus obras y un collage de varias de ellas, y creánme, es complicado convencer a JR de deshacerse de una de fotografías, porque cada foto ha sido tomada con un cariño especial y tiene "ese"  toque,  no sabría decir como describirlo, que la hace única.&lt;br /&gt;&lt;br /&gt;En esta ocasión tengo en mis manos su última obra, su libro : PEREGRINATIO; POR EL CAMINO DE LA LUZ, una obra dedicada al&lt;a href="http://es.wikipedia.org/wiki/Camino_de_Santiago"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; Camino de Santiago&lt;/span&gt;&lt;/a&gt; y dicho sea de paso, uno de los trabajos de fotografía mas hermosos que he tenido que la oportunidad de ver.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/peregrinatio1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;A lo largo de los últimos 7 años, Juan Ramón ha recogido sus experiencias como peregrino del Camino de Santiago en una recopilación de maravillosas fotografías que ha publicado en su libro.&lt;br /&gt;&lt;br /&gt;Como todo buen artista, JR publica su arte para compartirlo con todo el mundo, y para ayudar a los demás, este libro es una edición de autor (lo publica por su cuenta), los ingresos generados por la venta del libro (sólo 35.00 Euros por cada ejemplar, portes incluidos), serán destinados primeramente a cubrir el costo de publicación, el resto de los ingresos será para construir una cocina para el Convento de las Monjas de Ponda y finalmente, si hay algún ingreso más, a montar una exposición sobre el libro.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/pereginatio3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Una de las cosas que mas me llama la atención es que JR es un fotográfo autodidacta y no se dedica a la fotografía como una forma de trabajo,  la fotografía es para él un pasatiempo al que se entrega con la pasión que solo se puede esperar de un artista, que mas que hacer lo quiere, quiere lo que hace.&lt;br /&gt;&lt;br /&gt;Para muestra, una de las fotografías que están en las portadas de libro:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/pereginatio2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Algunas tribus índigenas piensan que una fotografía les roba el alma, cuando veo el trabajo de Juan Ramón me doy cuenta que realmente el alma del ser humano se puede fotografiar, pero no para robarla, sino para compartirla y hacerla eterna por medio de su arte.&lt;br /&gt;&lt;br /&gt;Si quieres conocer un poco mas de la obra de Juan Ramón, puedes consultar:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.fotonatura.org/miembros/fichas/2317/" target="_blank"&gt;Juan Ramón Llavori&lt;/a&gt; en &lt;em&gt;Fotonatura&lt;/em&gt;, y su &lt;a href="http://www.fotonatura.org/galerias/1140/" target="_blank"&gt;galería&lt;/a&gt;,&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.terra.es/personal5/agrupacionfoto/html/autor/juan_ramon_llavori.htm" target="_blank"&gt;Juan Ramón Llavori&lt;/a&gt; en &lt;em&gt;terra&lt;/em&gt;, &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogseitb.com/rogeblasco/2009/12/05/juan-ramon-llavori-peregrination-por-el-camino-de-la-luz/" target="_blank"&gt;Juan Ramón Llavori&lt;/a&gt; en &lt;em&gt;El blog de Roge&lt;/em&gt;, &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.diariovasco.com/20070906/bajo-deba/exposicion-fotografica-juan-ramon-20070906.html" target="_blank"&gt;Juan Ramón Llavori&lt;/a&gt; en la sala Topaleku en 2007 en &lt;em&gt;ElDiarioVasco&lt;/em&gt;, &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.medicusmundi.es/index.php/gipuzkoa/educacion_y_sensibilizazion/exposiciones" target="_blank"&gt;Exposiciones de Juan Ramón Llavori&lt;/a&gt;  para &lt;em&gt;Medicus Mundi&lt;/em&gt;, &lt;/li&gt;&lt;li&gt;&lt;a href="http://www2.noticiasdegipuzkoa.com/ediciones/2008/04/27/vecinos/urola-kosta/d27uro42.1007016.php" target="_blank"&gt;Zumaia recuerda al Tíbet&lt;/a&gt;, en 2008, en &lt;em&gt;NoticiasDeGipuzkoa&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.elmundo.es/elmundo/2006/06/21/solidaridad/1150905569.html" target="_blank"&gt;La vasija agrietada&lt;/a&gt; en 2006 en &lt;em&gt;ElMundo&lt;/em&gt;, &lt;/li&gt;&lt;li&gt;&lt;a href="http://canales.diariovasco.com/ocio/meca/juan-ramon-llavori-foto-japon-200901140848.php" target="_blank"&gt;Primer premio en Japón&lt;/a&gt; en 2008 en &lt;em&gt;ElDiarioVasco&lt;/em&gt;, &lt;/li&gt;&lt;/ul&gt;Si deseas un ejemplar del libro, puedes ponerte en contacto directamente con Juan Ramón en su correo electrónico &lt;a href="mailto:jrllavori@euskaltel.net"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;jrllavori@euskaltel.net&lt;/span&gt;&lt;/a&gt;  y si estás en México (no me comprometo a hacerlo para otros países) y deseas un libro de Peregrinatio.... ponte en contacto conmigo (info@ciber-tec.com), porque seguramente quedaré con Juan Ramón en mi próximo viaje a España y podré traer conmigo algunos ejemplares.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-6321204846466200636?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/6321204846466200636/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=6321204846466200636' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6321204846466200636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6321204846466200636'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/12/peregrinatio-por-el-camino-de-la-luz.html' title='Peregrinatio, Por el camino de la Luz.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-4523901506645388347</id><published>2009-12-08T22:48:00.002-06:00</published><updated>2009-12-09T00:12:14.962-06:00</updated><title type='text'>Operación España 2010</title><content type='html'>En el año 1999 comenzamos a viajar a España.&lt;br /&gt;&lt;br /&gt;La primera vez que dí cursillos en España pensé que no se repetiría, que había sido un trabajo de formación como cualquier otro, pero la realidad fue muy distinta .... al 1999 siguió el 2000, y luego el 2001, y así sucesivamente, año tras año y a veces no una, sino dos y hasta 3 veces en el mismo año, he hecho las maletas, cruzado el charco y me he dedicado a dar formación en España, cosa que nunca hubiera sido posible sin la inestimable participación de la empresa Geroa Software y del buen amigo Niko del Pozo.&lt;br /&gt;&lt;br /&gt;El año 2010, no será la excepción, el año pasado cambiamos las fechas en las que solíamos dar los cursos (Mayo), para hacerlo a principio de año.&lt;br /&gt;&lt;br /&gt;Tenemos ya planeados nuestros cursos para 2010, los cuales se llevarán a cabo como tradicionalmente lo hacemos, en San Sebastián, Guipuzcoa, al norte de España, del 4 al 13 de Febrero del 2010.&lt;br /&gt;&lt;br /&gt;El próximo  año, los cursos que planeamos dar son:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Programación Orientada al Objeto con (x)Harbour:&lt;/span&gt; Los objetos con (x)Harbour son un pilar fundamental para desarrollar aplicaciones mas rápido y mejores, sin embargo hemos notado que casi nadie conoce como usar objetos con (x)Harbour, y por ello hemos diseñado este curso, además de aprender como usar los objetos de (x)Harbour y sus interfaces gráficas, como Xailer, Visual xHarbour y Fivewin, aprenderemos como usar componentes OLE para conectar por ejemplo con Office e incluso a usar ADO para conectar con otros formatos de base de datos, de una manera fácil. Este curso te facilitará enormemente el uso de Xailer, de FastReports (el cual está construido sobre una clase para (x)Harbour) y de otros componentes de programación.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Xailer 2.0 :&lt;/span&gt; Ya está disponible la versión 2.0 de esta estupenda herramienta de desarrollo, a lo largo de los últimos 3 años, hemos acumulado bastante experiencia en la herramienta y esta vez, hemos incluido en un solo curso TODO Xailer, desde los temas básicos para comenzar a utilizar Xailer de una manera rápida, hasta temas avanzados como el uso de DataControls para acceder a cualquier formato de base de datos tanto DBF como SQL. En este curso hemos incluido varias aplicaciones completas con código fuente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;SQL para archivos DBFs con Advantage Database Server:&lt;/span&gt; Mucha gente piensa que ADS es caro, no es cierto, hay una versión gratuita, y nosotros te vamos a regalar una para 2 usuarios,  muchos lo ven como un simple "cliente/servidor" para archivos DBF, no es cierto, ADS es un sistema completo de Gestión de bases de datos relacionales que no tiene nada que envidiar a productos como MySQL, SQL Server o cualquier otro SGBDR, y de eso se trata este curso: aprenderemos a usar todo el poder del SQL, pero sobre archivos DBFs, además de temas como procesos almacenados, seguridad de la información, replicación de datos, etc. Este curso incluye por su puesto, una copia de nuestro manual Advantage Database Server para (x)Harbour en Español, una copia del Libro Advantage Database Server a Developer's Guide de Cary Jensen y una licencia para 2 usuarios de Advantage Database Server, totalmente funcional y sin limitaciones.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Programación para internet con WebAS:&lt;/span&gt; Web Application System es un conjunto de clases para desarrollar aplicaciones para internet, usando un navegador Web para la interfaz con el usuario, fue diseñado originalmente usando el motor de objetos de FiveWin a 16 bits, pero eventualmente lo hemos modificado para que funcionara con (x)Harbour simplemente y con todas sus interfaces gráficas,  WebAS puede ser utilizado tanto con el modo consola de (x)Harbour y con cualquier interfaz gráfica para el mismo, como Xailer, MiniGUI, Visual xHarbour y FiveWin.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;FastReports:&lt;/span&gt;  hemos preparado un curso especial que te permitirá usar este estupendo generador de informes con (x)Harbour, tanto en modo consola, como en modo gráfico, con cualquier GUI. FastReport se integra fácilmente con cualquier herramienta visual para Harbour como Xailer, Visual xHarbour, MiniGUI, y Fivewin, utiliza CUALQUIER motor de base de datos, DBF, Advantage Database Server o cualquier SQL, funciona con (x)Harbour a través de una clase. En voz de mas de uno de sus usuarios, FastReports es la herramienta mas útil que existe para (x)Harbour.&lt;br /&gt;&lt;br /&gt;Opcionalmente también tenemos planeado un&lt;span style="font-weight: bold; font-style: italic;"&gt; curso de migración de 16 a 32 bits con (x)Harbour&lt;/span&gt;, porque nos hemos dado cuenta de que muchos programadores siguen trabjajando con Clipper en modo consola (aunque usted no lo crea) y con el surgimiento de los sistemas operativos de 64 bits, a pesar de los emuladores y la virtualización, siempre será mejor trabajar sin necesidad de tener "algo" de por medio entre la aplicación y el sistema operativo. Entendemos que muchos usuarios ya habrán saltado 32 bits, por lo que este curso se abrirá unicamente si hay bastantes interesados.&lt;br /&gt;&lt;br /&gt;Tenemos sitios disponibles, pueden contactar directamente con Geroa Software, nuestro representante en España para mas informes sobre fechas, precios, descuentos especiales y temarios de los cursos:&lt;br /&gt;&lt;br /&gt;Nicolás del Pozo&lt;br /&gt;info.es@ciber-tec.com&lt;br /&gt;Tel. 678 437 795&lt;br /&gt;&lt;br /&gt;Mas información de los cursos está disponible haciendo &lt;a href="http://www.geroa-software.com/cursos/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;click aquí&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-4523901506645388347?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/4523901506645388347/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=4523901506645388347' title='6 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4523901506645388347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4523901506645388347'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/12/operacion-espana-2010.html' title='Operación España 2010'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-4838143947040794836</id><published>2009-11-30T01:00:00.000-06:00</published><updated>2009-11-30T01:00:03.778-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 15)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Interface de POO para Arreglos Hash&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;xHarbour permite acceder a los elementos de un arreglo hash usando  una interfaz de POO. &lt;span style="font-family: courier new;"&gt;hVal["ABC"] := 100&lt;/span&gt; puede ser también expresada como &lt;span style="font-family: courier new;"&gt;hVal:ABC := 100.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Usar la interfaz POO es mas lento que usar el operador [] pero trabaja para todos los índices los cuales son identificadores válidos en mayúsculas para [x]Harbour.&lt;br /&gt;&lt;br /&gt;Por default el núcleo de Harbour no soporta esta funcionalidad, sin embargo tiene un API de POO suficientemente robusto para soportar la implementación de esta funcionalidad sin tocar el código del núcleo aún a nivel .PRG. Esta característica está implementada en XHB.LIB.&lt;br /&gt;&lt;br /&gt;Este código puede ser compilado y ejecutado por ambos compiladores:&lt;br /&gt;&lt;pre&gt;      #ifndef __XHARBOUR__&lt;br /&gt;        #include "xhb.ch"&lt;br /&gt;     #endif&lt;br /&gt;     proc main()&lt;br /&gt;        local hVal := {=&gt;}&lt;br /&gt;        hVal["ABC"] := 100&lt;br /&gt;        hVal:QWE := 200&lt;br /&gt;        hVal:ZXC := 300&lt;br /&gt;        hVal:QWE += 50&lt;br /&gt;        ? hVal:ABC, hVal:QWE, hVal:ZXC&lt;br /&gt;        ? hVal["ABC"], hVal["QWE"], hVal["ZXC"]&lt;br /&gt;     return&lt;br /&gt;&lt;/pre&gt;Algunos usuarios de Harbour suelen compilar el código del núcleo de Harbour con  la macro &lt;span style="font-family: courier new;"&gt;HB_HASH_MSG_ITEMS&lt;/span&gt; la cual activa esta funcionalidad directametne en el código del núcleo, pero esto no es necesario con el código actual y existe solo por razones históricas.&lt;br /&gt;&lt;br /&gt;Es posible que en un futuro el soporte para esa macro sea quitado o reemplazado por una opción de runtime la cual pueda ser habilitada o quitada para cada arreglo hash por separado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuará....&lt;/span&gt;&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-4838143947040794836?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/4838143947040794836/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=4838143947040794836' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4838143947040794836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4838143947040794836'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_30.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 15)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-2989577132222146956</id><published>2009-11-29T01:00:00.000-06:00</published><updated>2009-11-29T01:00:02.972-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 14)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Uso de un string de 1 caracter como valor numérico.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;xHarbour usa strings de 1 byte como valor numérico correspondiente al valor ASCII de dicho byte, por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;? "A" * 10 // 650&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por default el núcleo de Harbour no soporta esta funcionalidad, sin embargo tiene un API de POO suficientemente robusto para soportar la implementación de esta funcionalidad sin tocar el código del núcleo aún a nivel .PRG. Esta característica está implementada en XHB.LIB.&lt;br /&gt;&lt;br /&gt;El siguiente código se compila y se ejecuta correctamente en ambos compiladores:&lt;br /&gt;&lt;pre&gt;      #ifndef __XHARBOUR__&lt;br /&gt;       #include "xhb.ch"&lt;br /&gt;    #endif&lt;br /&gt;    proc main()&lt;br /&gt;       local c := "A"&lt;br /&gt;       ? c * 10, c - 10, c + 10, c * " ", chr( 2 ) ^ "!"&lt;br /&gt;    return&lt;br /&gt;&lt;/pre&gt;y en ambos casos da el mismo resultado.&lt;br /&gt;&lt;br /&gt;De cualquier manera la emulación no está completa en Harbour, funciona solo a nivel código .PRG.&lt;br /&gt;&lt;br /&gt;En xHarbour las funciones/macros estándar del API en "C" fueron modificadas para interpretar un string de un byte como un número.  Esto es una fuente potencial de muy serios problemas, por ejemplo &lt;span style="font-family:courier new;"&gt;OrdSetFocus("1")&lt;/span&gt; podría interpretarse como seleccionar el índice 1 o el índice 49. Los programadores de Harbour decidieron no añadir dicha funcionalidad a nivel núcleo, de tal forma que en Harbour, las funciones escritas en "C" no aceptan un string de 1 byte como parámetro numérico y código como este:&lt;br /&gt;&lt;pre&gt;      ? str( "0" )&lt;br /&gt;&lt;/pre&gt;Genera un error en tiempo de ejecución en ver de imprimir '          48'.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuará....&lt;/span&gt;&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-2989577132222146956?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/2989577132222146956/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=2989577132222146956' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2989577132222146956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2989577132222146956'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_29.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 14)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7626066220866188123</id><published>2009-11-28T01:00:00.000-06:00</published><updated>2009-11-28T01:00:01.154-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 13)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Indices negativos en el operador [ ] para acceder a los elementos de un arreglo por el final.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;xHarbour soporta índices negativos en el operador [ ]. Se utiliza para acceder a los elementos por el final de la lista, por ejemplo: &lt;span style="font-family: courier new;"&gt;aVal[-1]&lt;/span&gt; tiene el mismo efecto que &lt;span style="font-family: courier new;"&gt;aVal[len(aVal)-1].&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por default el núcleo de Harbour no tiene incorporada dicha funcionalidad, sin embargo su API de POO es lo suficientemente robusta para permitir añadir dicha extensión sin tocar el núcleo aún a nivel .PRG. Está implementado en Harbour en XHB.LIB.&lt;br /&gt;&lt;br /&gt;Este código puede ser compilado y ejecutado por ambos compiladores:&lt;br /&gt;&lt;pre&gt;    #ifndef __XHARBOUR__&lt;br /&gt;        #include "xhb.ch" // add support for negative indexes in Harbour&lt;br /&gt;     #endif&lt;br /&gt;     proc main()&lt;br /&gt;        local s := "ABCDEF", a := {"1", "2", "3", "4", "5", "6"}&lt;br /&gt;        ? s, "=&gt;", s[1], s[2], s[3], s[4], s[5], s[6], "=&gt;", ;&lt;br /&gt;          s[-1], s[-2], s[-3], s[-4], s[-5], s[-6]&lt;br /&gt;        ? a[1], a[2], a[3], a[4], a[5], a[6], "=&gt;", ;&lt;br /&gt;          a[-1], a[-2], a[-3], a[-4], a[-5], a[-6]&lt;br /&gt;     return&lt;br /&gt;&lt;/pre&gt;¡ Advertencia !: Vea la nota en el artículo anterior sobre los índices fuera de rango usados con el operador [] y los elementos en cadenas de caracteres.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuará....&lt;/span&gt;&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7626066220866188123?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7626066220866188123/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7626066220866188123' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7626066220866188123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7626066220866188123'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_28.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 13)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1727763013166757122</id><published>2009-11-27T01:00:00.000-06:00</published><updated>2009-11-27T01:00:01.018-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 12)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Uso del operador [] para elementos en cadenas de caracteres (strings)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;xHarbour soporta el uso del operador [] para acceder a cada elemento dentro de una cadena de caracteres. Harbour no lo hace por default, pero tiene un API de POO suficientemente robusto para permitir la introducción de dicha extensión sin tocar el código central, aún a nivel PRG. Esto se implementón en Harbour en la librería XHB.LIB.&lt;br /&gt;&lt;br /&gt;Este código puede ser compilado y ejecutado por ambos compiladores:&lt;br /&gt;&lt;pre&gt;      #ifndef __XHARBOUR__&lt;br /&gt;        #include "xhb.ch" // add xHarbour emulation to Harbour&lt;br /&gt;     #endif&lt;br /&gt;     proc main()&lt;br /&gt;        local s := "ABCDEFG"&lt;br /&gt;        ? s, "=&gt;", s[2], s[4], s[6]&lt;br /&gt;        s[2] := lower( s[2] )&lt;br /&gt;        s[4] := lower( s[4] )&lt;br /&gt;        s[6] := lower( s[6] )&lt;br /&gt;        ?? " =&gt;", s&lt;br /&gt;     return&lt;br /&gt;&lt;/pre&gt;¡Advertencia!: Existe una diferencia en la implementación anterior, introducida intencionalmente en Harbour. xHarbour nunca genera errores para índices incorrectos en el operador [] cuando es usado en cadenas de caracteres, si el índice es incorrecto, simplemente devuelve "", por ejemplo agregando esto al código anterior:&lt;br /&gt;&lt;pre&gt;      ? "&gt;" + s[0] + "&lt;", "&gt;" + s[1000] + "&lt;"&lt;br /&gt;&lt;/pre&gt;Si el operador [ ] es usado por otro tipo de elementos se genera un RTE. Harbour genera RTE en todos los casos. Si alguien necesita compatibilidad estricta XHB, entonces deberá usar código para sobrecargar el operador[] para cadenas de caracteres en la XHB.LIB para sus propias preferencias, removiendo el RTE.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuará...&lt;/span&gt;&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1727763013166757122?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1727763013166757122/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1727763013166757122' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1727763013166757122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1727763013166757122'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_27.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 12)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7838274614491720288</id><published>2009-11-26T01:00:00.000-06:00</published><updated>2009-11-26T01:00:03.294-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 11)</title><content type='html'>Macros Multivalor:&lt;br /&gt;&lt;br /&gt;En los primeros días de Harbour se agregó un soporte básico para macros multivalor los cuales pueden ser evaluados como una lista de valores, por ejemplo:&lt;br /&gt;&lt;pre&gt;      ? &amp;amp;("1,2,3")&lt;br /&gt;&lt;/pre&gt;Debería mostrar esto:&lt;br /&gt;&lt;pre&gt;      1,  2,  3&lt;br /&gt;&lt;/pre&gt;La implementación de esta extensión no fue aceptada por muchos desarrolladores de Harbour y fue una de las principales causas del surgimiento del "fork" xHarbour.&lt;br /&gt;&lt;br /&gt;En Harbour dicha funcionalidad fue removida posteriormente e implementada desde cero usando distintos algoritmos y estructuras internas. Ahora Harbour soporta macros multivalor en código como este:&lt;br /&gt;&lt;pre&gt;      proc main()&lt;br /&gt;        local s1 := "'a', 'b', 'c'", s2 := "1,3", a&lt;br /&gt;        ? &amp;amp;s1&lt;br /&gt;        a := { { "|", &amp;amp;s1, 'x', &amp;amp;s2, 'y' }, 'x', &amp;amp;s2 }&lt;br /&gt;        ? "a[1] items:"&lt;br /&gt;        aeval( a[1], { |x,i| qout( i, x ) } )&lt;br /&gt;        ? "a["+s2+"] =&gt;", a[ &amp;amp;s2 ]&lt;br /&gt;     return&lt;br /&gt;&lt;/pre&gt;xHarbour, que heredó la implementación original, después de 6 años, aún no puede ejecutar correctamente el código anterior.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuará....&lt;/span&gt;&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7838274614491720288?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7838274614491720288/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7838274614491720288' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7838274614491720288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7838274614491720288'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_26.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 11)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1814046654836127758</id><published>2009-11-25T01:00:00.000-06:00</published><updated>2009-11-25T01:00:00.893-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 10)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Macros como mensajes&lt;/span&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Ambos compiladores soportan macros como mensajes, Clipper no.&lt;br /&gt;&lt;br /&gt;Este ejemplo muestra el uso:&lt;br /&gt;&lt;pre&gt;      proc main()&lt;br /&gt;        memvar var&lt;br /&gt;        local o := errorNew(), msg:="cargo"&lt;br /&gt;        private var := "CAR"&lt;br /&gt;&lt;br /&gt;        o:&amp;amp;msg := "&lt;cargo&gt;"&lt;br /&gt;        o:&amp;amp;( upper( msg ) ) += "&lt;value&gt;"&lt;br /&gt;        ? o:&amp;amp;var.go&lt;br /&gt;&lt;/pre&gt;Los usuarios que quieran probar este código en xHarbour tienen que cambiar esto:&lt;br /&gt;&lt;pre&gt;      o:&amp;amp;( upper( msg ) ) += "&lt;value&gt;"&lt;br /&gt;&lt;/pre&gt;por esto:&lt;br /&gt;&lt;pre&gt;o:&amp;amp;( upper( msg ) ) := o:&amp;amp;( upper( msg ) ) + "&lt;value&gt;"&lt;br /&gt;&lt;/pre&gt;Porque el uso de macros como mensajes con operadores del tipo &lt;op&gt;= o (+=, -=) y pre/post incremento/decremento (&lt;var&gt;++, &lt;var&gt;--,++&lt;var&gt;,--&lt;var&gt;) causa que el compilador de xHarbour genere un GPF (General Protection Failure) en tiempo de compilación .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuará...&lt;/span&gt;&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1814046654836127758?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1814046654836127758/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1814046654836127758' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1814046654836127758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1814046654836127758'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_25.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 10)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1175377874296792190</id><published>2009-11-24T01:00:00.000-06:00</published><updated>2009-11-24T01:00:04.829-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 9)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Funciones con un número variable de parámetros.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ambos compiladores soportan esta característica, pero en xHarbour no hay soporte para parámetros sin nombre. En Harbour puedes declarar algunos parámetros con nombre y otros sin nombre, como en otros lenguajes de programación:&lt;br /&gt;&lt;pre&gt;      func f( p1, p2, p3, ... )&lt;br /&gt;&lt;/pre&gt;Los parámetros sin nombre puede ser usados en distintas instrucciones pasándolos usando el operador "...".&lt;br /&gt;&lt;br /&gt;Por ejemplo como elemenos de un arreglo:&lt;br /&gt;&lt;pre&gt;      proc main()&lt;br /&gt;        AEval( F( "1", "2", "A", "B", "C" ), {|x, i| qout( i, x ) } )&lt;br /&gt;     func f( p1, p2, ... )&lt;br /&gt;        ? "P1:", p1&lt;br /&gt;        ? "P2:", p2&lt;br /&gt;        ? "other parameters:", ...&lt;br /&gt;        return { "X", ... , "Y", ... "Z" }&lt;br /&gt;&lt;/pre&gt;Como índices de un arreglo:&lt;br /&gt;&lt;pre&gt;      proc main()&lt;br /&gt;        local a := { { 1, 2 }, { 3, 4 }, 5 }&lt;br /&gt;        ? aget( a, 1, 2 ), aget( a, 2, 1 ), aget( a, 3 )&lt;br /&gt;     func aget( aVal, ... )&lt;br /&gt;     return aVal[ ... ]&lt;br /&gt;&lt;/pre&gt;Como parámetros de una función.&lt;br /&gt;&lt;pre&gt;      proc main()&lt;br /&gt;        info( "test1" )&lt;br /&gt;        info( "test2", 10, date(), .t. )&lt;br /&gt;     proc info( msg, ... )&lt;br /&gt;        qout( "[" + msg +"]: ", ... )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El operador "..." guarda las referencias cuando se envían parámetros y puede ser usando también en bloques de código, por ejemplo:&lt;br /&gt;&lt;pre&gt;      bCode := { | a, b, c, ... | qout( a, b, c ), qout( "[", ..., "]" ) }&lt;br /&gt;&lt;/pre&gt;Todos los parámetros pueden ser accesados usando la función hb_aParams() pero en xHarbour esto funciona correctamente solo para funciones las cuales no usan ningún parámetro local, o declaradas con un número variable de parámetros, o cuando el número de parámetros declarados no es mas pequeño que el número de parámetros enviados, este código ilustra el comportamiento:&lt;br /&gt;&lt;pre&gt;      proc main()&lt;br /&gt;        p1("A","B","C")&lt;br /&gt;        p2("A","B","C")&lt;br /&gt;        p3("A","B","C")&lt;br /&gt;        p4("A","B","C")&lt;br /&gt;        p5("A","B","C")&lt;br /&gt;     proc p1&lt;br /&gt;        ? procname()+"(), parameters:", pcount()&lt;br /&gt;        aeval( hb_aParams(), {|x,i| qout(i,"=&gt;",x) } )&lt;br /&gt;     proc p2&lt;br /&gt;        local l&lt;br /&gt;        ? procname()+"(), parameters:", pcount()&lt;br /&gt;        aeval( hb_aParams(), {|x,i| qout(i,"=&gt;",x) } )&lt;br /&gt;     proc p3(x)&lt;br /&gt;        ? procname()+"(), parameters:", pcount()&lt;br /&gt;        aeval( hb_aParams(), {|x,i| qout(i,"=&gt;",x) } )&lt;br /&gt;     proc p4(...)&lt;br /&gt;        ? procname()+"(), parameters:", pcount()&lt;br /&gt;        aeval( hb_aParams(), {|x,i| qout(i,"=&gt;",x) } )&lt;br /&gt;     proc p5(a,b,c,d,e)&lt;br /&gt;        ? procname()+"(), parameters:", pcount()&lt;br /&gt;        aeval( hb_aParams(), {|x,i| qout(i,"=&gt;",x) } )&lt;br /&gt;&lt;/pre&gt;En xHarbour solo es posible declarar todos los parámetos sin nombre, ejemplo:&lt;br /&gt;&lt;pre&gt;      func f( ... )&lt;br /&gt;&lt;/pre&gt;y luego acceder a ellos usando las funciones  hb_aParams() o PVALUE() (en Harbour se llama HB_PVALUE()). No hay soporte para el uso simultáneo de variables con nombre y el operador "...".&lt;br /&gt;&lt;br /&gt;En xHarbour, debido al comportamiento revertido de referencias almacenadas en elementos de un arreglo, las operaciones de asignación a los elementos de un arreglo retornado por hb_aParams(), cambian los parámetros correspondientes pasados por referencia. Esto no sucede en Harbour donde las referencias a los elementos almacenados en un array funcionan como en Clipper.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuará...&lt;/span&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1175377874296792190?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1175377874296792190/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1175377874296792190' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1175377874296792190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1175377874296792190'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_24.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 9)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-4032475884314974940</id><published>2009-11-23T01:00:00.000-06:00</published><updated>2009-11-23T01:00:05.147-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 8)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Variables locales separadas (detached locals) y referencias.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuando se usan variables locales en bloques de código, existe la posibilidad de que dichos bloques de cóidgo existan después de salir de la función donde han sido creados. Esto es un problema potencial muy serio el cual tiene que ser resuelto para evitar corrupción de la estructura de la máquina virtual.&lt;br /&gt;&lt;br /&gt;En Clipper, Harbour y xHarbour, se utiliza un mecanismo especial en dicha situación. Las variables locales son "separadas" del stack de la máquina virtual de tal forma que se puede acceder a ellas despues de dejar la función donde fueron declaradas como locales, por ejemplo:&lt;br /&gt;&lt;pre&gt;      proc make_cb()&lt;br /&gt;        local n := 123&lt;br /&gt;        return {|| ++n  }&lt;br /&gt;&lt;/pre&gt;A esas variables se les llama "locales separadas" (detached locals).&lt;br /&gt;&lt;br /&gt;Aquí hay 2 importantes diferencias entre Clipper y [x]Harbour. En Clipper las varaibles son separadas cuando se sale de la función (return) y no tiene manera de saber cuales variables locales fueron usadas por un bloque de código, de tal forma que TODAS las variables locales se separan del stack de la máquina virtual. Es muy impornte saber que esto es el origen de varios problemas serios de memoria en sistemas operativos como DOS.&lt;br /&gt;&lt;br /&gt;Este código ilustra el comportamiento:&lt;br /&gt;&lt;pre&gt;     // linkee usando RTLINK y ejecuta con //e:0 //swapk:0&lt;br /&gt;    // repite una segunda vez con un parametro no vacío para la variable 'x'&lt;br /&gt;     #define N_LOOPS 15&lt;br /&gt;     #xcommand FREE MEMORY =&gt; ? 'free memory: ' + ;&lt;br /&gt;                                AllTrim( Str( Memory( 104 ) ) )&lt;br /&gt;     proc main( x )&lt;br /&gt;        local n, a&lt;br /&gt;        a := array( N_LOOPS )&lt;br /&gt;        FREE MEMORY&lt;br /&gt;        for n := 1 to N_LOOPS&lt;br /&gt;           a[n] := f( x )&lt;br /&gt;           FREE MEMORY&lt;br /&gt;        next&lt;br /&gt;     return&lt;br /&gt;     func f(x)&lt;br /&gt;        local cb, tmp, ref&lt;br /&gt;        tmp := space( 60000 )&lt;br /&gt;        if empty( x )&lt;br /&gt;           cb := {|| .t. }&lt;br /&gt;        else&lt;br /&gt;           cb := {|| ref }&lt;br /&gt;        endif&lt;br /&gt;     return cb&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si ejecutas el programa anterior sin parametros vacíos, entonces la variable 'tmp' se separa con el bloque de código que utiliza la variable 'ref' y no se libera mientras el bloque de código sea accesible. Esto significa que en unas pocas iteraciones se consume toda la memoria y el programa falla. Los programadores de Clipper deben saber esto y ser cuidados con el uso de locales separadas y si es necesario inicializar explicitamente otras variables locales antes de retornar de la función asignandoles un valor de NIL.&lt;br /&gt;&lt;br /&gt;En Harbour y xHarbour solo las variables explícitamente usadas en bloques de código son separadas y la separación ocurre cuando el bloque de código es creado y las variables locales originales son reemplazadas por "referencias". Esto es posible porque Harbour y xHarbour soportan cadenas de referencias multinivel, esto funciona correctamente también para parámetros locales pasados por referencia desde funciones padres.&lt;br /&gt;&lt;br /&gt;Clipper solo soporta un nivel de referencia lo que crea una segunda e importante diferencia:&lt;br /&gt;&lt;br /&gt;Cuando Clipper separa un conjunto de parámetros locales, tiene entonces que quitar toda las referencias existentes rompiéndolas. Este código lo ilustra:&lt;br /&gt;&lt;pre&gt;      proc main()&lt;br /&gt;        local cb, n := 100&lt;br /&gt;        mk_block( @cb, @n )&lt;br /&gt;        ? "after detaching:"&lt;br /&gt;        ? eval( cb ), n&lt;br /&gt;     return&lt;br /&gt;     proc mk_block( cb, n )&lt;br /&gt;        n := 100&lt;br /&gt;        cb := {|| ++n }&lt;br /&gt;        ? "before detaching:"&lt;br /&gt;        ? eval( cb ), n&lt;br /&gt;     return&lt;br /&gt;&lt;/pre&gt;El código anterior compilado con Clipper muestra&lt;br /&gt;&lt;br /&gt;Antes de separar:&lt;br /&gt;&lt;pre&gt;             101        101&lt;br /&gt;&lt;/pre&gt;Despues de separar:&lt;br /&gt;&lt;pre&gt;             102        101&lt;br /&gt;&lt;/pre&gt;Así pues, después de separar las referencias a la variable 'n', esta referencia se rompe y los bloques de código acceden a su propia copia la varaible.&lt;br /&gt;&lt;br /&gt;En Harbour funciona correctamente y los resultados son mostrados como debe ser:&lt;br /&gt;&lt;br /&gt;Antes de separar:&lt;br /&gt;&lt;pre&gt;             101        101&lt;br /&gt;&lt;/pre&gt;Después de separar :&lt;br /&gt;&lt;pre&gt;             102        102&lt;br /&gt;&lt;/pre&gt;En xHarbour (por razones desconocidas por mí) ¡ el bug de Clipper se emula explícitamente !, aunque en su momento fue posible corregirlo porque xHarbour heredó de Harbour el mismo mecanismo de separación de referencias multinivel, así que, tanto los programadores de Clipper, como los programadores de xHarobur tienen que ser cuidadosos con la posiblidad de que existan referencias rotas debido a las locales separadas y añadir correcciones de ser necsario.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuará....&lt;/span&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-4032475884314974940?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/4032475884314974940/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=4032475884314974940' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4032475884314974940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4032475884314974940'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_23.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 8)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-6715207801489024146</id><published>2009-11-22T01:00:00.000-06:00</published><updated>2009-11-22T01:00:00.816-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 7)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Paso de variables objeto por referencia&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Ambos compiladores soportan el paso de variables objeto por referencia, pero esta funcionalidad en xHarbour está limitada a una instancia pura de un objeto o únicamente a variables de la clase y no funciona para métodos SETGET. En Harbour funciona correctamente. Este código ilustra el problema:&lt;br /&gt;&lt;pre&gt;      proc main()&lt;br /&gt;        local oBrw := tbrowseNew()&lt;br /&gt;        ? oBrw:autoLite&lt;br /&gt;        oBrw:autoLite := !oBrw:autoLite&lt;br /&gt;        ?? "=&gt;", oBrw:autoLite&lt;br /&gt;        p( @oBrw:autoLite )&lt;br /&gt;        ?? "=&gt;", oBrw:autoLite&lt;br /&gt;&lt;br /&gt;     proc p( x )&lt;br /&gt;        x := !x&lt;br /&gt;&lt;/pre&gt;Harbour imprime:&lt;br /&gt;&lt;pre&gt;     .T.=&gt; .F.=&gt; .T.&lt;br /&gt;&lt;/pre&gt;pero xHarbour imprime:&lt;br /&gt;&lt;pre&gt;      .T.=&gt; .F.=&gt; .F.&lt;br /&gt;&lt;/pre&gt;Sin generar ningún error de compilación o de tiempo de ejecución.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuará....&lt;/span&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-6715207801489024146?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/6715207801489024146/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=6715207801489024146' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6715207801489024146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6715207801489024146'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_22.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 7)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-449119103568021640</id><published>2009-11-21T01:00:00.000-06:00</published><updated>2009-11-21T01:00:02.360-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 6)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Paso de elementos de arreglos (arrays) y hashes por referencia&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Harbour soporta el paso de elementos de arreglos y hashes por referencia, por ejemplo:&lt;br /&gt;&lt;pre&gt;         local aVal := { "abc", "klm", "xyz" }, ;&lt;br /&gt;              hVal := { "qwe"=&gt;"123", "asd"=&gt;"456", "zxc"=&gt;"789" }&lt;br /&gt;        ? aVal[1], aVal[2], aVal[3], hVal["qwe"], hVal["asd"], hVal["zxc"]&lt;br /&gt;        p( @aVal[2], @hVal["asd"] )&lt;br /&gt;        ? aVal[1], aVal[2], aVal[3], hVal["qwe"], hVal["asd"], hVal["zxc"]&lt;br /&gt;&lt;br /&gt;     proc p( p1, p2 )&lt;br /&gt;        p1 := '[1]'&lt;br /&gt;        p2 := '[2]'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Compilado con Harbour el código anterior muestra:&lt;br /&gt;&lt;pre&gt;      abc klm xyz 123 456 789&lt;br /&gt;     abc [1] xyz 123 [2] 789&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En xHarbour solo el paso de los elementos del arreglo por referencia funciona pero no funciona pasar los elementos de un hash por referencia y esto no genera errores ni en tiempo de compilación ni en tiempo de ejecución, de tal forma que el codigo anterior puede ser compilado y ejecutado, pero daría estos resultados:&lt;br /&gt;&lt;pre&gt;      abc klm xyz 123 456 789&lt;br /&gt;     abc [1] xyz 123 456 789&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic;"&gt;Continuará.....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-449119103568021640?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/449119103568021640/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=449119103568021640' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/449119103568021640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/449119103568021640'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_21.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 6)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-4215241244460431458</id><published>2009-11-20T01:00:00.001-06:00</published><updated>2009-11-20T10:58:11.468-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 5)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Referencias a variables almacenadas en arreglos (arrays)&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;En xHarbour el comportamiento de referencias almacendas en un arreglo es distinto a comparación con Clipper o Harbour.&lt;br /&gt;&lt;br /&gt;En Clipper y Harbour al ejecutar la máquina virtual un  código como:&lt;br /&gt;&lt;pre&gt;         aVal[ 1 ] := 100&lt;/pre&gt; Limpia incondicionalmente el valor del primer elemento en el arreglo aVal y asigna su valor a 100.&lt;br /&gt;&lt;br /&gt;xHarbour en cambio, verifica si aVal[1] es una referencia y en ese caso resuelve la referencia y entonces asigna 100 al elemento de destino.&lt;br /&gt;&lt;br /&gt;Al ejecutar este código en la máquina virtual de Clipper y Harbour:&lt;br /&gt;&lt;pre&gt;         x := aVal[ 1 ]&lt;/pre&gt; Se copia a "x" el valor exacto almacenado en aVal[1]. xHarbour primero revisa si aVal[1]  es una referencia y en ese caso resuelve dicha referencia y luego copia a "x" el valor de referencia del elemento del arreglo.&lt;br /&gt;&lt;br /&gt;Este comportamiento puede ser visto en este código:&lt;br /&gt;&lt;pre&gt;      proc main&lt;br /&gt;       local p1 := "A", p2 := "B", p3 := "C"&lt;br /&gt;       ? p1, p2, p3&lt;br /&gt;       p( { @p1, p2, @p3 } )&lt;br /&gt;       ? p1, p2, p3&lt;br /&gt;&lt;br /&gt;    proc p( aParams )&lt;br /&gt;       local x1, x2, x3&lt;br /&gt;&lt;br /&gt;       x1 := aParams[ 1 ]&lt;br /&gt;       x2 := aParams[ 2 ]&lt;br /&gt;       x3 := aParams[ 3 ]&lt;br /&gt;&lt;br /&gt;       x1 := lower( x1 ) + "1"&lt;br /&gt;       x2 := lower( x1 ) + "2"&lt;br /&gt;       x3 := lower( x1 ) + "3"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Harbour y Clipper muestran esto&lt;br /&gt;&lt;pre&gt;      A B C&lt;br /&gt;    a1 B a13&lt;/pre&gt;Pero xHarbour muestra esto:&lt;br /&gt;&lt;pre&gt;      A B C&lt;br /&gt;    A B C&lt;br /&gt;&lt;/pre&gt; Esto no es compatible con Clipper, asi que en algunos casos esto puede causar problemas de portabilidad, por ejemplo el código anterior fue usado en Clipper como una solución para el número limitado de parámetors (32 en Clipper). Pero permite asignar directamente directamente elementos de arreglos retornados por hb_Params() y actualizar las variables correspondientes pasadas por referencia.&lt;br /&gt;&lt;br /&gt;De cualquier forma el hecho de que xHarbour no tenga un operador "..." el cual pueda respetar referencias existentes en los parámetros pasados y que no soporte parametros por nombre en funciones con un numero variable de parámetros causa limitaciones,  por ejemplo no es posible hacer código como este:&lt;br /&gt;&lt;pre&gt;func f( ... )&lt;br /&gt;    local aParams := hb_aParams()&lt;br /&gt;    if len( aParams ) == 1&lt;br /&gt;       return f1( aParams[ 1 ] )&lt;br /&gt;    elseif len( aParams ) == 2&lt;br /&gt;       return f2( aParams[ 1 ], aParams[ 2 ] )&lt;br /&gt;    elseif len( aParams ) &gt;= 3&lt;br /&gt;       return f3( aParams[ 1 ], aParams[ 2 ], aParams[ 3 ] )&lt;br /&gt;    endif&lt;br /&gt; return 0&lt;/pre&gt;&lt;br /&gt;El cual respeta referencias en parametros pasados a la función f().&lt;br /&gt;&lt;br /&gt;Continuará.....&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-4215241244460431458?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/4215241244460431458/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=4215241244460431458' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4215241244460431458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4215241244460431458'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_20.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 5)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-8552575169073379961</id><published>2009-11-19T01:00:00.001-06:00</published><updated>2009-11-19T01:00:00.585-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 4)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Arreglos (arrays) tipo "hash"&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Ambos compiladores tienen soporte para arreglos tipo "hash". Estos son similares a los arreglos normales pero también permiten el uso de valores no enteros como índices de los arreglos, como cadenas de caracteres, fechas, números no enteros o apuntadores (en Harobur). Se crean usando el operador =&gt; para las listas de llaves y los valores se encierran entre {}. Ejemplo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    hVal := { "ABC"    =&gt; 123.45, ;&lt;br /&gt;              100.1    =&gt; date(), ;&lt;br /&gt;              100.2    =&gt; 10,     ;&lt;br /&gt;              100      =&gt; 5,      ;&lt;br /&gt;              date()-1 =&gt; .t. }&lt;/pre&gt;&lt;br /&gt;Y luego los elementos se accesan usando el operador [], así:&lt;br /&gt;&lt;pre&gt;      ? hVal[ "ABC" ]      // 123.45&lt;br /&gt;    ? hVal[ 100 ]        // 5&lt;br /&gt;    ? hVal[ date()-1 ]   // .t.&lt;br /&gt;    ? hVal[ 100.2 ]      // 10&lt;br /&gt;    ? hVal[ 100.1 ]      // date()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Por default, en ambos compiladores los arreglos hash soportan adición automática de nuevos elementos en operaciones de asignación. Esto se puede deshabilitar usando alguna de las funciones para hashes.&lt;br /&gt;&lt;br /&gt;Harbour tiene extensiones adicionales las cuales permiten habilitar la auto adición con valores por default tanta para operaciones de acceso como para operadores de acceso. También soporta el paso de elementos de un arreglo hash por referencia junto con otras extensiones menores.&lt;br /&gt;&lt;br /&gt;xHarbour no soporta auto adición en operciones de acceso o referencia y no funciona el paso de los elementos de un array hash por referencia. (véase pasnado elementos de un arreglo o de un hash por referencia ).&lt;br /&gt;&lt;br /&gt;xHarbour tiene una funcionalidad adicional la cual puede ser activada para cada arreglo hash. Se trata de un índice que almacena información sobre el orden en el cual los elementos del hash fueron añadidos y un conjunto de funciones para operar sobre este índice (HAA*()). Son llamdos "arreglos asociativos" en xHarbour. Harbour no tiene esta funcionalidad.&lt;br /&gt;&lt;br /&gt;Ambos compiladores tienen un conjunto de fuciones para hacer diferentes operaciones sobre arreglos hash con funcionalidad similar. En Harbour se usa el prefico HB_H (p.ej. HB_SCAN()) y en xHarbour el prefijo H (p.ej. HSCAN()).&lt;br /&gt;&lt;br /&gt;Continuará....&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-8552575169073379961?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/8552575169073379961/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=8552575169073379961' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/8552575169073379961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/8552575169073379961'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_19.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 4)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7662277380851967509</id><published>2009-11-18T01:00:00.000-06:00</published><updated>2009-11-18T01:00:02.034-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 3)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Bloques de código extendidos:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ambos compiladores soportan en tiempo de compilación bloques de código extendidos, para usar no solo funciones sino también instrucciones y comandos, pero con una pequeña diferencia. Harbour utiliza los delmitadores de bloque de código estándar de Clipper {}&lt;br /&gt;&lt;pre&gt;      ? eval( { | p1, p2, p3 |&lt;br /&gt;               ? p1, p2, p3&lt;br /&gt;               return p1 + p2 + p3&lt;br /&gt;             }, 1, 2, 3 )&lt;br /&gt;&lt;/pre&gt; Mientras que xHarbour utiliza los "&lt;&gt;"&lt;br /&gt;&lt;pre&gt;      ? eval( &lt; | p1, p2, p3 |&lt;br /&gt;               ? p1, p2, p3&lt;br /&gt;               return p1 + p2 + p3&lt;br /&gt;             &gt;, 1, 2, 3 )&lt;br /&gt;&lt;/pre&gt; En Harbour los bloques de código extendidos trabajan como funciones anidadas y soportan todos los atributos de una función, por ejemplo, pueden tener sus propias variables STATIC u otras declaraciones las cuales son locales al bloque de código extendido únicamente y no afectan al resto del código fuera del bloque.&lt;br /&gt;&lt;br /&gt;En xHarbour el compilador no fue totalmente optimizado para soportar dicha funcionalidad, y los bloques de código extendidos fueron agregados a las estructuras del compilador existentes lo que causa que no todas las construcciones del lenguaje trabajen con bloques de código extendidos creando un conjunto de bugs muy serios, por ejemplo, el siguiente código tiene serios errores de sintaxis y sin embargo xHarbour lo compila sin ningún error, lo que causa resultados inesperados en tiempo de ejecución:&lt;br /&gt;&lt;pre&gt;      #ifndef __XHARBOUR__&lt;br /&gt;        #xtranslate \&lt;|[&lt;x,...&gt;]| =&gt; {|&lt;x&gt;|&lt;br /&gt;        #xcommand &gt; [&lt;*x*&gt;]       =&gt; } &lt;x&gt;&lt;br /&gt;     #endif&lt;br /&gt;     proc main()&lt;br /&gt;        local cb, i&lt;br /&gt;        for i:=1 to 5&lt;br /&gt;           cb := &lt;| p |&lt;br /&gt;                    ? p&lt;br /&gt;                    exit&lt;br /&gt;                    return p * 10&lt;br /&gt;                 &gt;&lt;br /&gt;           ?? eval( cb, i )&lt;br /&gt;        next&lt;br /&gt;     return&lt;br /&gt;&lt;/pre&gt; Se pueden hacer varios ejemplos similares en xHarbour con errores que son causados principalmente por la falta de soporte a funciones anidadas en la estructura del compilador.&lt;br /&gt;&lt;br /&gt;Estos errores podrían ser corregidos si se invierte un poco de tiempo en depurar el compilador xHarbour.&lt;br /&gt;&lt;br /&gt;Continuará.....&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7662277380851967509?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7662277380851967509/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7662277380851967509' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7662277380851967509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7662277380851967509'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_18.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 3)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5060956369116311018</id><published>2009-11-17T01:00:00.000-06:00</published><updated>2009-11-17T01:00:01.401-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 2)</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Nuevas instrucciones del lenguaje:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;1. FOR EACH&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Harbour soporta toda la funcionalidad de xHarobur y ofrece también características adicionales  no disponibles en xHarbour:&lt;br /&gt;&lt;br /&gt;a) Permite iterar mas de una variable:&lt;br /&gt;&lt;pre&gt;         FOR EACH a, b, c IN aVal, cVal, hVal&lt;br /&gt;           ? a, b, c&lt;br /&gt;        NEXT&lt;br /&gt;&lt;/pre&gt; b) Permite establecer un orden descendente usando la clausula DESCEND:&lt;br /&gt;&lt;pre&gt;         FOR EACH a, v IN aVal, cVal DESCEND&lt;br /&gt;           ? a, b&lt;br /&gt;        NEXT&lt;br /&gt;&lt;/pre&gt; c) Tiene soporte nativo para hashes:&lt;br /&gt;&lt;pre&gt;         FOR EACH x IN { "ABC" =&gt; 123, "ASD" =&gt; 456, "ZXC" =&gt; 789 }&lt;br /&gt;           ? x, "@", x:__enumKey()&lt;br /&gt;        NEXT&lt;br /&gt;&lt;/pre&gt; d) Permite asignar elementos de cadenas de caracteres:&lt;br /&gt;&lt;pre&gt;         s := "abcdefghijk"&lt;br /&gt;        FOR EACH c IN @s&lt;br /&gt;           IF c $ "aei"&lt;br /&gt;              c := UPPER( c )&lt;br /&gt;           ENDIF&lt;br /&gt;        NEXT&lt;br /&gt;        ? s      // AbcdEfghIjk&lt;br /&gt;&lt;/pre&gt; e) Proporciona a la OOP control de variables enumerativas, lo cual es muy importante cuando mas de una variable es iterada o cuando FOR EACH es llamado recursivamente.&lt;br /&gt;&lt;pre&gt;         hVal := { "ABC" =&gt; 123, "ASD" =&gt; 456, "ZXC" =&gt; 789 }&lt;br /&gt;        FOR EACH x IN hVal&lt;br /&gt;           ? x:__enumIndex(), ":", x:__enumKey(), "=&gt;", x:__enumValue(), ;&lt;br /&gt;             "=&gt;", x:__enumBase()[ x:__enumKey() ]&lt;br /&gt;        NEXT&lt;br /&gt;&lt;/pre&gt; f) Proporciona un mecanismo OOP muy flexible para sobrecargar el comportamiento del FOR EACH para objetos definidos por el usuario añadiendo a los mótodos enumerativos los métodos &lt;span style="font-family: courier new;"&gt;__enumStart(), __enumStop(), __enumSkip()&lt;/span&gt; los cuales permiten implementar muchos algoritmos enumerativos distintos dependiendo de los datos usados.&lt;br /&gt;&lt;br /&gt;g) No tiene ninguna limitación codificada para llamadas recursivas (solo limitado por la memoria disponible y el tamaño del stack del HVM [Harbour Virtual Machine]):&lt;br /&gt;&lt;pre&gt;         proc main()&lt;br /&gt;           p( 0 )&lt;br /&gt;        return&lt;br /&gt;        proc p( n )&lt;br /&gt;           local s := "a", x&lt;br /&gt;           ? n&lt;br /&gt;           if n &lt; 1000&lt;br /&gt;              for each x in s&lt;br /&gt;                 p( n + 1 )&lt;br /&gt;              next&lt;br /&gt;           endif&lt;br /&gt;        return&lt;br /&gt;&lt;/pre&gt; En xHarbour existe la función &lt;span style="font-family: courier new;"&gt;HB_ENUMINDEX()&lt;/span&gt; la cual es portada por Harbour en la librería XHB.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;2. WITH OBJECT / END[WITH]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En harbour no tiene ninguna limitación codificada para llamadas recursivas (está limitada solo por la memoria disponible y por el tamaño del stack del HVM).&lt;br /&gt;&lt;pre&gt;      proc main()&lt;br /&gt;        p( 0 )&lt;br /&gt;     return&lt;br /&gt;     proc p( n )&lt;br /&gt;        ? n&lt;br /&gt;        if n &lt; 1000&lt;br /&gt;           with object n&lt;br /&gt;              p( n + 1 )&lt;br /&gt;           end&lt;br /&gt;        endif&lt;br /&gt;     return&lt;br /&gt;&lt;/pre&gt; También utiliza un interfaz OOP como FOR EACH, de tal forma que es posible usar :__withObject() para acceder/asignar el valor actual de WITH OBJECT.&lt;br /&gt;&lt;br /&gt;En xHarbour existen las funciones &lt;span style="font-family: courier new;"&gt;HB_QWITH(), HB_WITHBOJECTCOUNTER()&lt;/span&gt; y &lt;span style="font-family: courier new;"&gt;HB_RESETWITH()&lt;/span&gt; las cuales están soportadas por Harbour en la librería XHB.LIB&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;3. SWITCH / [CASE / [EXIT] / ...] OTHERWISE / END[SWITCH]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En Harbour se usa una tabla de saltos con valores predefinidos que proporciona un aumento de velocidad significativo en comparación con la evaluación secuencial de PCODE como la instrucción DO CASE hace.&lt;br /&gt;&lt;br /&gt;En xHarbour SWITCH no usa dicha tabla de saltos y genera un PCODE similar al usado por DO CASE o por IF / ELSESIF y solo el cálculo del valor principal del SWITCH es optimizado y reutilizado para todas las intrucciones de tal forma que el aumento de velocidad es relativamente pequeño.&lt;br /&gt;&lt;br /&gt;En xHarbour, en vez de utilizar la clausula OTHERWISE se utiliza DEFAULT.&lt;br /&gt;&lt;br /&gt;Los valores que el SWITCH de Harbour soporta números enteros y cadenas de caracteres, ejemplo:&lt;br /&gt;&lt;pre&gt;      switch x&lt;br /&gt;        case 1         ; [...]&lt;br /&gt;        case 10002     ; [...]&lt;br /&gt;        case "data"    ; [...]&lt;br /&gt;        otherwise      ; [...]&lt;br /&gt;     endswitch&lt;br /&gt;&lt;/pre&gt; xHarbour soporta unicamente numeros enteros y cadenas de caracteres con un solo caracter como "A", "!", "x", " ", ....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;4. BEGIN SEQUENCE [WITH &lt;errblock&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;[ RECOVER [ USING &lt;oerr&gt; ] ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;[ ALWAYS ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;END SEQUENCE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta estructura, similar a la de Clipper es unica para Harbour, en xHarbour existe una versión limitada de la estructura anterior de la forma:&lt;br /&gt;&lt;pre&gt;      TRY&lt;br /&gt;     [ CATCH [&lt;oerr&gt;] ]&lt;br /&gt;     [ FINALLY ]&lt;br /&gt;     END&lt;br /&gt;&lt;/pre&gt; TRY tiene exactamente la misma funcionalidad que:&lt;br /&gt;&lt;pre&gt;   BEGIN SEQUENCE WITH {|e| Break(e)}&lt;/pre&gt; Con excepción de la implementación de SWITCH, en todas las instrucciones descritas anteriormente, xHarbour causa una reducción del desempeño en la evaluación del PCODE, aun si el programador no las utiliza todas. En Harobur están implementadas de forma distinta de tal forma que no causan sobrecarga ni lentitud a otro código.&lt;br /&gt;&lt;br /&gt;Continuará.....&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5060956369116311018?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5060956369116311018/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5060956369116311018' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5060956369116311018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5060956369116311018'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias_17.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 2)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1592994774837594893</id><published>2009-11-13T18:00:00.003-06:00</published><updated>2009-11-13T19:16:04.461-06:00</updated><title type='text'>Harbour VS xHarbour, Las diferencias verdaderas  (Parte 1)</title><content type='html'>Esta semana, charlando con Ignacio Ortiz de Zúñiga por el tema de Xailer 2.0, me recomendó la lectura de un documento publicado por Przemyslaw Czerpak  sobre las diferencias mas notables entre Harbor y xHarbour.&lt;br /&gt;&lt;br /&gt;Mucho tiempo ha pasado desde que Harbour y xHarbour separaron sus caminos, mientras la idea alrededor de Harbour era hacer un compilador compatible con CA-Clipper y nada mas, la idea alrededor de xHarbour era hacer un compilador de CA-Clipper con eXtenciones (de ahí la "X" de xHarbour = eXtended Harbour) y crear sobre un proyecto Opensource una empresa para crear distribuciones del compilador ofreciendo "algo mas", como sucede con muchos productos OpenSource.&lt;br /&gt;&lt;br /&gt;xHarbour ofrecía varias ventajas contra Harbour, tenía mas instrucciones, estructuras como las del lenguaje "C", soporte nativo a OLE y otras florituras que a simple vista justificaban mas el uso de xHarbour contra el uso de Harbour y por ello MUCHOS usuarios nos decantamos por usar xHarbour en vez de usar Harbour.&lt;br /&gt;&lt;br /&gt;Hoy por hoy, las cosas han cambiado MUCHO, hace mas de un año, Przemyslaw Czerpak tomó las riendas del proyecto Harbour y decidió implementar TODAS las extensiones con las que contaba xHarbour, pero hacerlo de manera personal, es decir, sin que nadie, ningún otro programador,  le metiera mano al código de Harbour. El resultado es IMPRESIONANTE, al día de hoy, Harbour es un compilador mas completo, mas rápido y mas estable de xHarbour, y con las mismas extensiones.&lt;br /&gt;&lt;br /&gt;Entre muchas cosas, hay 2 en las que la versión actual de Harbour supera a xHarbour: La compilación a 64 bits, y los multihilos (Multithreating), ya que xHarbour no genera EXEs de 64 bits, ni tiene implementada de manera confiable la programación multihilo.&lt;br /&gt;&lt;br /&gt;En esta serie de artículos iré traduciendo el documento de Przemyslaw por partes para hacer mas entendible a todos las diferencias entre Harbour y xHarobur, lo haré en varios post ya que son mas de 3,000 líneas del documento y no tengo tiempo de hacer todo de un solo post, si no quieres esperar a la traducción, la versión completa en inglés del documento puede consultarse haciendo &lt;a href="http://harbour-project.svn.sourceforge.net/viewvc/harbour-project/trunk/harbour/doc/xhb-diff.txt"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;click aquí &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Comencemos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Soporte en tiempo de compilación para unir múltiples modulos .PRG&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Clipper permite compilar muchos modulos .PRG usando @&lt;nombre&gt;.clp y/o SET PROCEDURE TO... / DO ... [WITH ...] en un solo archivo de salida .OBJ. En tales compilaciones, soporta para cada archivo .PRG, declaraciones que afectan a todo el archivo cuando se utiliza la opción -n la cual permite usar mas de una función STATIC con el mismo nombre si dicha función es declarada en diferentes módulos PRG. Este código ilustra dicha situación:&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;/***** t1. prg *****/&lt;br /&gt;&lt;pre&gt;      static s  := "t01:s"&lt;br /&gt;     static s1 := "t01:s1"&lt;br /&gt;     proc main()&lt;br /&gt;        ? "===="&lt;br /&gt;        ? s, s1&lt;br /&gt;        p1();p2();p3()&lt;br /&gt;        ? "===="&lt;br /&gt;        do t2&lt;br /&gt;        ? "===="&lt;br /&gt;     return&lt;br /&gt;     proc p1        ; ? "t01:p1"&lt;br /&gt;     static proc p2 ; ? "t01:p2"&lt;br /&gt;     static proc p3 ; ? "t01:p3"&lt;br /&gt;     init proc pi ; ? "init t01:pi"&lt;br /&gt;     exit proc pe ; ? "exit t01:pe"&lt;br /&gt;&lt;br /&gt;     /***** t2. prg *****/&lt;br /&gt;     static s  := "t02:s"&lt;br /&gt;     static s2 := "t02:s2"&lt;br /&gt;     proc t2()&lt;br /&gt;        ? s, s2&lt;br /&gt;        p1();p2();p3()&lt;br /&gt;     return&lt;br /&gt;     static proc p1 ; ? "t02:p1"&lt;br /&gt;     proc p2        ; ? "t02:p2"&lt;br /&gt;     static proc p3 ; ? "t02:p3"&lt;br /&gt;     init proc pi ; ? "init t02:pi"&lt;br /&gt;     exit proc pe ; ? "exit t02:pe"&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Es necesario usar la opción -n para operaciones que afectan a todo el archivo y que usen funciones STATIC/INIT/EXIT con el mismo nombre, pero declaradas en distintos módulos. En Clipper y Harbour pueden ser compilados así:&lt;br /&gt;&lt;pre&gt;      cl t1.prg /n/w/es2&lt;br /&gt;&lt;/pre&gt; ó&lt;br /&gt;&lt;pre&gt;      hbmk2 t1.prg -n -w -es2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y luego se puede ejecutar.&lt;br /&gt;&lt;br /&gt;xHarbour no tiene esta funcionalidad y el código anterior tiene que ser adaptado para trabajar con este compilador. Adicionalmente no fuciona bien con sistemas de archivos sensitivos a las mayúsculas como Linux, lo cual se puede observar en los ejemplos anteriores, donde "t1" se cambia por "T1" y luego entonces xHarbour intentará incluir el archivo "T1.prg", el cual no existe.&lt;br /&gt;&lt;br /&gt;Para usuarios que tienen código antiguo en Clipper escrito para sistemas de archivos DOS, con mezclas de letras en mayúsculas y minúsculas en los nombres de los archivos usados directa o indirectamente por nombre de procedimiento, Harbour tiene opciones en tiempo de compilación las cuales permiten conversiones automáticas de nombres de archivos para todos los archivos abiertos por el compilador:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-fn[:[l|u]|-]    &lt;/span&gt;establece mayusculas/minúsculas para nombres de archivos&lt;br /&gt;(l = Minúscula  u = Mayúscula)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-fd[:[l|u]|-]&lt;/span&gt;    Establece mayúsculas/minúsculas para nombres de directorios&lt;br /&gt;(l = Minúscula  u= Mayúsucula)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-fp[:&lt;char&gt;] &lt;/span&gt; establece el separador de rutas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-fs[-]           &lt;/span&gt;Activa o desactiva el quitado de espacios en los nombres de los archivos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esta funcionalidad es local a Harbour y no puede ser usada por xHarbour. Pienso que esto puede ser fácil de implementar en xHarbour en un futuro.&lt;br /&gt;&lt;br /&gt;Ambos compiladores soportan opciones en tiempo de ejecución para conversión de nombres de archivos:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;      SET FILECASE LOWER | UPPER | MIXED&lt;br /&gt;     SET DIRCASE LOWER | UPPER | MIXED&lt;br /&gt;     SET DIRSEPARATOR &lt;cdirsep&gt;&lt;br /&gt;     set( _SET_TRIMFILENAME, &lt;lonoff&gt; )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Las cuales pueden ser usadas en programas que no pretendan trabajar con diferentes sistemas de archivos y con distintos sistemas operativos.&lt;br /&gt;&lt;br /&gt;Continuará .....&lt;br /&gt;&lt;img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1592994774837594893?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1592994774837594893/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1592994774837594893' title='9 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1592994774837594893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1592994774837594893'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/harbour-vs-xharbour-las-diferencias.html' title='Harbour VS xHarbour, Las diferencias verdaderas  (Parte 1)'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-486090750486303711</id><published>2009-11-06T15:47:00.002-06:00</published><updated>2009-11-06T17:16:10.996-06:00</updated><title type='text'>Lo que mata es la velocidad.</title><content type='html'>Viejo chiste: el tonto del pueblo coge una bala en su mano y se comienza a golpear con ella, al ver que no obtiene ninguna herida notable, concluye: "cierto, lo que te mata es la velocidad".&lt;br /&gt;&lt;br /&gt;¿ Cual es el mejor lugar para poner tu computadora portatil en tu coche ?, pues en la cajuela (maletero) seguro que no.&lt;br /&gt;&lt;br /&gt;Hace una semana tuve la mala fortuna de comprobar el daño que puede hacerle a una computadora un impacto a 40 km/h por muy metida que vaya en la cajuela en un accidente de coche que sufrí durante unos días de vacaciones que me estaba tomando.&lt;br /&gt;&lt;br /&gt;Unas imagenes dicen mas que 1000 palabras:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/toshibach1.jpg" /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/toshibach2.jpg" /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/toshibach3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;¿ Se salvó el disco duro ?.... NO&lt;br /&gt;&lt;br /&gt;El equipo prácticamente se "desintegró", la unidad de CD/DVD quedo como acordeón, y del teclado no sobrevivieron todas las teclas, de la pantalla ni hablamos, por romperse se rompió hasta la memoria. Bueno si, sobrevivió algo, el procesador "aparentemente" no sufrió daño, pero hasta no desmontarlo del motherboard y probarlo no sabremos si sobrevivió, por motivos del seguro tengo que seguir guardando el cadaver.&lt;br /&gt;&lt;br /&gt;Y si se están preguntando.... si así quedó el equipo.... ¿ cómo quedó René ?, pues solo con algunas lesiones que no ponen en riesgo la vida, pero fuera de circulación por algunos días.&lt;br /&gt;&lt;br /&gt;Así que si en los días pasados mis asiduos del Messenger y del Skype pensaron que los había bloqueado, pues no, no ha sido así, es simplemente que me quedé sin equipo y que pocas ganas tenía de hablar.&lt;br /&gt;&lt;br /&gt;Por cierto, después del accidente &lt;a style="font-weight: bold; font-style: italic;" href="http://objetopersistente.blogspot.com/2009/04/informatica-movil-laptop-vs-netpc-vs.html"&gt;la Netbook&lt;/a&gt; se ha comportado como una campeona, está haciendo su trabajo de computadora temporal para cosas de internet de manera sorprendente,  mientras termino de configurar mi nuevo juguete.&lt;br /&gt;&lt;br /&gt;Toda mi información estaba respaldada en una unidad de disco externa (benditas sean), mi unidad de resplado externa es un disco&lt;a href="http://www.lacie.com/es/products/product.htm?pid=11052"&gt; &lt;/a&gt;&lt;a href="hthttp://www.lacie.com/es/products/product.htm?pid=11052tp://"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;a href="http://www.lacie.com/es/products/product.htm?pid=11052"&gt;LaCie USB 2.0 de 1 Terabyte&lt;/a&gt; &lt;/span&gt;de capacidad.&lt;br /&gt;&lt;br /&gt;Si no eres de los que respalda tu equipo portatil de vez en cuando ¿ a que esperas ?, una unidad de $ 150 .00 USD o menos te puede ahorrar unos disgustos que no veas, solo perdí los correos de unos días (si me escribiste en los ultimos 10 días y no te he contestado, por favor vuelve a enviar tu correo) todo mi archivo de correos electrónicos, news groups, herramientas de programación, proyectos, trabajos de programación, documentos, música y fotos estaban perfectamente respaldados y se están integrando en el nuevo equipo, en unas horas estarán como estaban originalmente en mi Toshiba muerta, gracias al estupendo programa &lt;a style="font-weight: bold; font-style: italic;" href="http://www.2brightsparks.com/freeware/"&gt;SyncBack&lt;/a&gt; que me recomendó mi amigo José Luis Sanchez Navarro en su blog&lt;a href="http://www.avemundi.com/?p=234"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; AveMundi &lt;/span&gt;&lt;/a&gt;y que religiosamente he usado cada semana desde que lo conocí y seguramente después de la experiencia, lo usaré por lo menos 2 veces a la semana.&lt;br /&gt;&lt;br /&gt;Del aspecto económico ni hablar, un accidente siempre te deja algun agujerillo financiero, afortunadamente soy paranoico en el tema de los seguros y no me arrepiento de tener asegurado todo, mis seguros se hicieron cargo de todo, de la hospitalización y del coche, y ahora estoy esperando que me paguen la computadora, pero eso va a ser una batallatita con la aseguradora y no sabremos nada hasta dentro de 90 días que terminen el peritaje, por eso conservo el cadaver de la computadora.&lt;br /&gt;&lt;br /&gt;Y bueno, como tengo que seguir trabajando y las NetBooks no son precisamente los mejores equpos para trabajar mas de 12 horas diarias, pues me he comprado un &lt;a style="font-weight: bold; font-style: italic;" href="http://www.sonystyle.com.mx/pdf/VGNAR790FG_specs.pdf"&gt;VAIO VGN-AR790FG&lt;/a&gt; lo mas destacable es su pantalla de 17 pulgadas full HD1080, su unidad Blueray, y el sintonizador de TV integrado en el equipo, el teclado es amplio y se puede trabajar muy a gusto con él por mucho tiempo No voy a decir donde la compré porque ya no hay, pero pagué menos de $1,200 dólares por el equipo nuevo.&lt;br /&gt;&lt;br /&gt;Solo para efectos de comparación de tamaño: la Acer Netbook, comparada con la Vaio VGN:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/imag0037ch.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;En un rato veré que hay que instalaré de nuevo y comprobaré que todo corra como debe, el próximo lunes ya estaré trabajando en el nuevo equipo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-486090750486303711?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/486090750486303711/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=486090750486303711' title='7 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/486090750486303711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/486090750486303711'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/11/lo-que-mata-es-la-velocidad.html' title='Lo que mata es la velocidad.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-8964393972435690146</id><published>2009-10-04T16:43:00.003-05:00</published><updated>2009-10-04T17:51:41.201-05:00</updated><title type='text'>Nuevo manual de ADS para (x)Harbour listo !</title><content type='html'>De unos meses a la fecha, hemos estado trabajando arduamente con la gente de Sybase iAnywhere y nosotros mismos, creando una  documentación del RDDADS para (x)Harbour en Español.&lt;br /&gt;&lt;br /&gt;Tengo que estar agradecido con las personas que llevan el tema de Advantage Database Server en Sybase, por todo el apoyo que nos han venido brindando durante este año, primero al crear un foro para (x)Harbour directamente en su servidor de news y segundo por el apoyo en material, libros, licencias SDK y souvenirs (los boligrafos laser-usb-linterna son una pasada) que nos han facilitado para los asistentes a nuestros Open House en México y en Guadalajara.&lt;br /&gt;&lt;br /&gt;Siendo usuarios de (x)Harbour y representantes de Advantage Database Server para el mercado de habla hispana, nos hemos sentido con la responsabilidad de dar un mejor servicio a nuestros clientes para que puedan aprovechar  al máximo su inversión en ADS, y puesto que el RDDADS , al ser una contribución  propia del proyecto Harbour (no de Sybase iAnywhere) carece de una documentación adecuada,  por iniciativa propia y apoyados por Sybase iAnywhere, me dí hace 6 meses a la tarea de crear un manual para ADS totalmente en español.&lt;br /&gt;&lt;br /&gt;Para ello, hemos revisado A FONDO, todas las funciones incluidas en los códigos fuentes del RDDADS, las hemos comparado con la documentación de las funciones del Advantage Client Engine (ACE) y básandonos en dicha documentación, hemos creado nuestro propio manual de ADS para usar con (x)Harbour.&lt;br /&gt;&lt;br /&gt;Nuestro manual documenta, además de las mas de 120  funciones del RDDADS para xHarbour (funciones de administración del servidor, funciones del diccionario de datos y funciones de operaciones con tablas), las funciones de las librerías para CA-Clipper (sabemos que muchos de nuestros clientes usan ADS con Clipper aún), así como también documenta los comandos del Streamline SQL de ADS para utilizar con (x)Harbour.&lt;br /&gt;&lt;br /&gt;Hemos incluido además amplias explicaciones de las funciones de ADS mas solicitadas por los programadores de (x)Harbour, como son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Seguridad de los datos por encriptamiento y ocultamiento de archivos&lt;/li&gt;&lt;li&gt;Uso de SQL sobre tablas DBFCDX y ADTADI&lt;/li&gt;&lt;li&gt;Uso de los Filtros Optimizados Advantage (AOFs)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Manejo de imagenes y en general de cualquier tipo de archivo en campos BLOB de ADT&lt;/li&gt;&lt;li&gt;Acceso a los datos vía internet con el Advantage Internet Server &lt;/li&gt;&lt;li&gt;Como reconstruir las librerías del RDDADS de acuerdo a las diferentes versiones de ADS.&lt;/li&gt;&lt;/ul&gt;En total el manual cuenta con casi 300 páginas de documentación y es el resultado de mas de 6 meses de trabajo entre CiberTec y la gente de ADS, creo que hemos logrado un estupendo material que será de mucha ayuda para los programadores de xHarbour, y de todas sus GUIs.&lt;br /&gt;&lt;br /&gt;La distribución será &lt;span style="font-weight: bold; font-style: italic;"&gt;"SIN COSTO&lt;/span&gt;" pero existen ciertas condiciones que hemos comentado con la gente de ADS y están de acuerdo en que se apliquen.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;La documentación SOLO SE PROPORCIONARA IMPRESA Y PERSONALIZADA, nada de documentación electrónica, esto debido a los problemas que tuvimos con nuestra documentación anterior, que era distribuida ilegalmente con copias piratas de ADS, dando la impresión de que nosotros eramos los que fomentabamos la piratería del producto&lt;/li&gt;&lt;li&gt;En una primera etapa, solo entregaremos la documentación a los  usuarios actuales de ADS. Entendemos que los usuarios legales de los productos merecen un valor agregado y   como una muestra de nuestro agradecimiento por preferir ADS, ellos serán los primeros en recibir la nueva documentación, peeeero.......&lt;/li&gt;&lt;li&gt;La gente de ADS  nos ha pedido, dado que la versión 7.x se encuentra ya descatalogada, que la documentación solo sea entregada a los usuarios actuales de las versiones 8.x y 9.x para ello, al momento de solicitar tu documentación gratuita, necesitaremos que nos proporciones el número de serie de tu servidor y el código de activación, después de que se verifique la autenticidad de la licencia, haremos entrega de la documentación, solo se entregará un documento por número de serie.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Los primeros paises donde la documentación estará disponible serán México ( a través de nosotros) y España (a través de nuestro representante Geroa Software) y posteriormente  comenzaremos a entregar los manuales a los usuarios de ADS de los otros paises de habla hispana interesados, pero con costo (gastos de envío unicamente).&lt;/li&gt;&lt;li&gt;Nuestra documentación estará incluida en la compra de licencias de ADS que se realice con nosotros o con cualquiera de nuestros representantes o socios de negocios.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;La documentación NO ESTA A LA VENTA, sin embargo, pensamos crear un "kit de prueba ADS" que incluye todo lo necesario para probar el producto, incluyendo nuestro manual,  documentación adicional y licencia SDK, a un costo muy accesible, y como este material de apoyo tiene que ser gratis para los clientes de Advantage,  el importe pagado por este "kit" te será descontado en el momento que compres tu licencia de ADS.&lt;/li&gt;&lt;li&gt;Los derechos de autoría del manual permanecen en poder de CiberTec, por lo que nos reservamos el derecho de publicación y distribución de acuerdo a nuestros propios criterios.&lt;/li&gt;&lt;/ol&gt;El manual estará disponible en México y España a partir del 1ero de Noviembre y esperamos que a mediados de Diciembre estemos en posibilidad de comenzar la distribución en otros países.&lt;br /&gt;&lt;br /&gt;Aprovecha al máximo tu ADS, pide tu manual, es gratis. ADS tiene muchísimas características aprovechables desde (x)Harbour, que seguramente no estás usando.&lt;br /&gt;&lt;br /&gt;Se puede solicitar mas información para España en &lt;a style="font-weight: bold; font-style: italic;" href="mailto:info.es@ciber-tec.com"&gt;info.es@ciber-tec.com&lt;/a&gt; y para México y el resto de América en &lt;a style="font-style: italic;" href="mailto:info@ciber-tec.com"&gt;&lt;span style="font-weight: bold;"&gt;info@ciber-tec.com&lt;/span&gt;&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-8964393972435690146?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/8964393972435690146/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=8964393972435690146' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/8964393972435690146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/8964393972435690146'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/10/nuevo-manual-de-ads-para-xharbour-listo.html' title='Nuevo manual de ADS para (x)Harbour listo !'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-6909684280822581765</id><published>2009-09-27T22:05:00.002-05:00</published><updated>2009-09-27T22:41:52.584-05:00</updated><title type='text'>Y el imperio contraataca !!!!!</title><content type='html'>No se si fue casualidad, o efectivamente a alguien que yo me sé le hizo mucha gracia el comentario que hice sobre  ViaNEMO por la noche del pasado viernes.&lt;br /&gt;&lt;br /&gt;Unas horas después de que publiqué el anuncio del proyecto OPEN SOURCE de ViaOpen para su GUI compatible con FiveWin, aparece en el foro de FiveTech y de xHarbour la noticia de que FiveTech está ofreciendo una versión antigua de FiveWin "libre de costo", que no es lo mismo que "gratis", aunque no sé cual es la diferencia, lo que yo tengo muy claro y que todos estos años como persona de negocios me han enseñado es que &lt;span style="font-weight: bold; font-style: italic;"&gt;"nadie ofrece almuerzos gratis".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La versión de FiveWin Harbour "libre de costo" que ofrece FiveTech es la versión 6.12 (de hace poco menos de 3 años) y que funciona con una versión anterior de (x)Harbour, que también se puede descargar de la web de FiveTech.&lt;br /&gt;&lt;br /&gt;Me pregunto que es lo que van a regalar  cuando Xailer anuncie las novedades que vendrán acompañando a la versión 2.0 en los próximos meses y que también tienen que ver con los usuarios de FiveWin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-6909684280822581765?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/6909684280822581765/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=6909684280822581765' title='22 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6909684280822581765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6909684280822581765'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/09/y-el-imperio-contraataca.html' title='Y el imperio contraataca !!!!!'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-4851078131358733337</id><published>2009-09-25T15:00:00.000-05:00</published><updated>2009-09-27T22:04:09.587-05:00</updated><title type='text'>ViaNEMO.... ¿ por fin FiveWin OpenSource ?</title><content type='html'>Huy, huy, huy, huy ... que alegría le va a dar a alguien que yo me sé esta noticia (mas de uno será, estoy seguro).&lt;br /&gt;&lt;br /&gt;Quizá muchos de ustedes ya estén enterados, y no les voy a contar nada nuevo, yo sabía de este proyecto desde hace algunos meses por cuestiones de trabajo que tengo en España, pero como no me gusta publicar en OP rumores, decidí esperar hasta que se hiciera oficial por parte del autor.&lt;br /&gt;&lt;br /&gt;Fernando Mancera, de &lt;a style="font-weight: bold; font-style: italic;" href="http://www.viaopen.es/"&gt;ViaOpen&lt;/a&gt;, empresa dedicada en su momento al desarrollo de los controles &lt;a href="http://www.viaopen.es/vcoral_es.html"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;ViaCoral&lt;/span&gt;&lt;/a&gt; para FiveWin, y autor original de varios controles y del soporte "alpha channel" para FiveWin, ha anunciado oficialmente que ha terminado la primera versión funcional  de su Framework para Windows, llamado &lt;span style="font-size:130%;"&gt;&lt;a href="http://blog.viaopen.com/es/vianemo-new-gui-for-harbour/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;ViaNEMO.&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; (me encanta que todo esto que tiene que ver con Clipper tenga nombres marinos).&lt;br /&gt;&lt;br /&gt;Lo interesante de esto, no es que haya hecho un GUI nuevo (o Framework, como quieras llamarlo), la información sobre como hacer un módulo para "bombear" mensajes al núcleo de Windows está incluída con el código fuente de (x)Harbour, y un buen programador con suficientes conocimientos de lenguaje "C" se puede hacer su propia GUI, así han surgido productos como Xailer, FreeWin, Visual xHarbour, MiniGUI, OOHG, etc.&lt;br /&gt;&lt;br /&gt;Hay varias cosas interesantes en el proyecto de ViaNEMO: primero un diseño multiplataforma que de momento soporta Windows normal y Windows Mobile, pero que en un futuro promete soporte a Linux y Macintosh (donde habré yo visto esto, ¿ donde, donde, donde ?), y otra cosa interesante, yo creo que lo mas interesante, es que ViaNEMO, asegura su autor, podrá compilar código escrito para otras GUIs.&lt;br /&gt;&lt;br /&gt;Para hacer aún mas interesante el tema, sucede que la primer GUI con la que será compatible ViaNEMO será ni mas ni menos, FiveWin, quiero entender con esto que  "teóricamente hablando", podrás tomar tu código FiveWin, tal cual lo tienes en este momento (no se desde que versión de FW habrá compatibilidad), recompilarlo con (x)Harbour, y en vez de linkar las libs de FiveWin, linkear la lib de ViaNEMO y listo... sale tu programa caminando a 32 o 64 bits si así lo deseas.&lt;br /&gt;&lt;br /&gt;El punto aquí, es que parece que por fin se le va a cumplir el sueño a alguno que otro programador que yo conozco, porque ViaNEMO será un producto OPEN SOURCE, con lo cual todo el mundo podrá colaborar y sí, tendrás disponible TODO el código fuente, incluyendo los "núcleos" y las "funciones internas" de ViaNEMO, cosa que FiveWin actualmente no incluye.&lt;br /&gt;&lt;br /&gt;Conociendo el nivel de conocimientos de Fernando, no dudo para nada que  haya logrado hacer una GUI 100% compatible con FiveWin, pero con un núcleo mucho mas optimizado y depurado, y hacer que funcione con el código existente hecho en FiveWin no tendría porqué  ser complicado porque después de todo, el código fuente de los controles de FiveWin está incluido con el producto y  fuera del famoso "núcleo" todo el resto código fuente  está disponible.&lt;br /&gt;&lt;br /&gt;Esto no es la primera vez que sucede, pasó con &lt;a style="font-weight: bold; font-style: italic;" href="http://www.roessler-software.de/e195/e264/index_ger.html"&gt;WinDock&lt;/a&gt;, que es la versión de&lt;a style="font-weight: bold; font-style: italic;" href="http://www.hallogram.com/clip4win/index.html"&gt; Clip4Win&lt;/a&gt; a 32 bits, la empresa alemana Roessler Software desarrolló un núcleo totalmente optimizado para Windows con (x)Harbour que textualmente "se come" todo  el código de Clip4Win para Clipper de 16 bits y entrega un exe de 32 bits, mejorado con algunas clases reescritas por la gente de Roessler.&lt;br /&gt;&lt;br /&gt;Bueno chicos que usan FiveWin, váyanse preparando, porque seguramente se solicitarán beta testers para ViaNEMO, que esperamos que para final de año sea liberado.&lt;br /&gt;&lt;br /&gt;Mas información sobre ViaNEMO está disponible en el &lt;a href="http://blog.viaopen.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Blog de ViaOpen.&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-4851078131358733337?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/4851078131358733337/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=4851078131358733337' title='6 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4851078131358733337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4851078131358733337'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/09/vianemo-por-fin-fivewin-opensource.html' title='ViaNEMO.... ¿ por fin FiveWin OpenSource ?'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7201783705339268305</id><published>2009-09-24T12:10:00.002-05:00</published><updated>2009-09-24T20:23:04.580-05:00</updated><title type='text'>De los males, el menor.</title><content type='html'>Estas últimas semanas he estado trabajando convirtiendo viejos programas en Clipper MS-DOS a (x)Harbour, por el tema de los 64 bits y el Windows 7.&lt;br /&gt;&lt;br /&gt;Como comenté hace algún tiempo, en México, la empresa &lt;a style="font-weight: bold; font-style: italic;" href="http://www.abits.com/"&gt;ABITS&lt;/a&gt; vendió hace mas de 10 años una suite de productos administrativos (Facturación, Contabilidad, Nómina y Bancos) y tuvo la sensatez (o insensatez, depende del punto de vista) de vender sus programas con el código fuente en CA-Clipper incluido, excepto algunos módulos como por ejemplo el de impresión de reportes y el de manejo de los archivos en red, esos iban metidos en un archivo .LIB con alguna función "C" para el tema de los menús.&lt;br /&gt;&lt;br /&gt;El caso es que hoy, mas de 10 años después (ABITS dejó de producir los programas en Clipper hace mucho tiempo, ahora son los  representantes de Crystal Reports en México), me encuentro que en el mismo mes (Septiembre), me han llamado 4 empresas distintas, de distintas partes de la república, que a la fecha siguen usando los programas de ABITS en Clipper y MS-DOS ¿ porqué ?, esa es una muy buena pregunta y quizá encontremos la respuesta al final de este artículo.&lt;br /&gt;&lt;br /&gt;No me piden pasarlos a Windows, no no no, no me piden que se los desarrolle en web, tampoco, me piden simplemente que sigan funcionando como están, pero con Windows Vista, o con servidores Windows 2008 server de 64 bits y que no se les dañen las tablas de datos.&lt;br /&gt;&lt;br /&gt;¿ Y siguen usando modo consola ? (voy a llamarlo "modo consola" porque el MS-DOS oficialmente no existe en los sistemas operativos de 32 bits), pues sí,  y no les interesa que sea Windows o Web, lo que les interesa es que lo que hace (Contabilidad, Facturación y Nómina), lo hace muy bien, además de que al tener el código fuente disponible, muchos de ellos han modificado el programa para ajustarlo a sus propias necesidades o bien han creado sus módulos para su giro de negocio específico.&lt;br /&gt;&lt;br /&gt;Si tú como programador te haz disciplinado a seguir ciertos estándares y reglas para desarrollar tus programas, como usar notación húngara, identar el código, ordenar los nombres de tus PRGs de forma identificable, etc. y luego ves el código fuente de los programas de ABITS seguro te da un infarto (por decir lo menos), no hay estándares de programación, no hay módulo de carga definido, hay un montón de PRGs sin función predeterminada, las variables se llaman "x, y, z",  hay variables públicas sacadas de la manga a media función, vamos, por dentro el software es una falta de respeto a la  programación, y sin embargo, ¡ funciona !, les resuelve el problema a las personas, e incluso les permite meterle mano para hacer lo que la empresa requiera.&lt;br /&gt;&lt;br /&gt;Hoy mismo leía un post del blog de &lt;a style="font-weight: bold; font-style: italic;" href="http://www.joelonsoftware.com/"&gt;Joel Spolsky&lt;/a&gt;, sobre El programador "&lt;a style="font-weight: bold; font-style: italic;" href="http://en.wikipedia.org/wiki/Duct_tape"&gt;Duct Tape&lt;/a&gt;", (Duct Tape = Textualmente "Cinta para ductos",  cinta de tela adhesiva multiuso, usalmente de color gris, de alta resistencia, que sirve desde para reparar una cañería rota hasta para atar personas).&lt;br /&gt;&lt;br /&gt;Un programador Duct Tape, es aquel que resuelve los problemas de programación de la manera mas sencilla y práctica posible, evitando entrar en las complicaciones propias que pueden presentarse al utilizar una característica avanzada de un lenguaje de programación. El resultado de tener un programador de este tipo en tu equipo es que el producto final por dentro podrá parecer espantoso (después de todo está hecho con cinta de ductos, aflojatodo, pegamento escolar y botellas de PET) pero que funcionará espectacularmente bien y rápido porque se ha enfocado en la simplicidad y no en la complejidad que conlleva usar "florituras" del lenguaje de programación o de herramientas de terceros, mientras que si no tienes un programador Duct Tape en tu equipo seguramente estarás pensando en utilizar titanio, paladio, alguna aleación de metales raros, y combustible nuclear de plutonio en resumen: alguna técnica extraña de programación (bloques de código por ejemplo... ¿ bloque de que...????), sin pensar que construir un programa con tantas cosas y tan complejas de usar y de conseguir, demorará mas tiempo en la producción y resultará mas caro en costo.&lt;br /&gt;&lt;br /&gt;Los amigos de ABITS supieron ver esto muy bien en su momento, su código no es bonito, para nada bonito, pero el programa funciona muy bien, hace lo que tiene que hacer y punto, un programador con conocimientos básicos y medios de Clipper le puede meter mano sin ningún problema y hacer cosas productivas con él, porque no usa cosas "complejas" del lenguaje.&lt;br /&gt;&lt;br /&gt;Esto me lleva a otra reflexión: Si tu eres una empresa de software, el objetivo de tu empresa es primordialmente vender   programas que funcionen correctamente, punto. Te pagan por programar bien, no por programar bonito, porque a final de cuentas no le muestras al usuario final que bonito programas, ni que bien estructurados están tus fuentes, ni si hasta usas mayúsculas y minúsculas en el código y le pones acentos a los comentarios, ¿ que mas dá que salten Warnings cuando compilas ?, ¿ que mas dá usar un FOR... NEXT en vez de un AEVAL() ?, ¿ o un SELECT en vez de un ALIAS-&gt; ?,  seamos prácticos, lo que pone dinero en tu cuenta bancaria es la venta de tu producto, no que tan bonito ni que tan estético sea el código fuente de tu programa por dentro.&lt;br /&gt;&lt;br /&gt;Cuando compras un coche no te importa si los cables del sistema eléctrico están ordenados por colores o por calibre o por instrumento, es mas, te espantaría ver como están los cables del sistema eléctrico detrás del tablero de instrumentos, debajo de la alfombra del coche o detrás de los faros, porque lo que tu buscas en un coche es que el arranque cuando metas la llave y le des vuelta, y que te lleve de un lugar a otro de una manera rápida, segura y confortable, el sistema eléctrico es necesario para que funcione el coche, el cómo estén organizados los cables del sistema eléctrico no es importante, lo importante es que hagan lo que tienen que hacer.&lt;br /&gt;&lt;br /&gt;En el artículo de Joel también se comenta algo como esto: Una solución que resuelve un problema al 50% y   que está al alcance de todo el mundo, es mucho mejor y mas duradera que una solución que resuelva un problema al 99%, pero que nadie tenga acceso a ella, porque la tienes metida en un laboratorio haciéndola bonita, depurándola, ajustándola, etc. para además de que sea eficiente, sea estética pero nunca la liberas porque estás preocupado mas por la estética que por la eficiencia.&lt;br /&gt;&lt;br /&gt;La solución de ABITS dista mucho hoy en día de tener las técnicas "modernas" de programación (UML, SQL, arquitectura de 3 capas, etc), pero en su momento les solucionó la vida a muchas empresas (algunos cuantos miles de productos vendieron) y hoy en día sigue solucionando problemas, ya no a miles, pero yo calculo que a unos cientos sí, y por eso la siguen usando, quizá no es la mejor, no es para Windows, ni para Internet, pero es algo a lo que se tiene acceso, es fácil de usar y de configurar y sabemos que funciona y hace la facturación, la contabilidad y la nómina, y las hace bien, y si no las hace bien,  tienes el código fuente para corregir los errores.&lt;br /&gt;&lt;br /&gt;A petición de estos usuarios del software de ABITS hemos desarrollado una serie de soluciones para permitirles continuar trabajando por mucho tiempo mas, estas soluciones se pueden implementar en muy poco tiempo y sin dejar de utilizar el software que actualmente se usa, ni detener la operación de la empresa, es decir... podemos reparar el avión estando en vuelo.&lt;br /&gt;&lt;br /&gt;Para darle robustez a  los datos, usamos &lt;a href="http://www.ciber-tec.com./ads.htm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Advantage Database Server&lt;/span&gt;&lt;/a&gt;, hemos desarrollado un pequeño módulo .PRG que con solo agregarlo a la compilación del programa Clipper original, convierte a los programas de ABITS en programas  100% cliente servidor, incluso con acceso vía Internet a los datos (y desde CA-Clipper MS-DOS, no se lo pierdan. No es la solución optima, prefiero hacerlo a 32 bits, pero funciona) y  gracias a las modificaciones a los clientes TCP/IP que Sybase iAnywhere hizo para el cliente CA-Clipper de Advantage, migrar los programas de Abits a cliente/servidor solo lleva unas horas. Este mismo módulo lo tenemos ya listo para (x)Harbour, simplemente se cambia del código fuente, y listo, funcionan las tablas con el programa de 32 bits.&lt;br /&gt;&lt;br /&gt;Para el caso de los 32 y 64 bits, desarrollamos un proyecto en &lt;a style="font-weight: bold; font-style: italic;" href="http://xailer.info/esp/?p=189"&gt;XEdit&lt;/a&gt;, que permite recompilar los códigos fuentes de los programas Abits con (x)Harbour  y tenerlos funcionando en 32 bits en muy poco tiempo (usualmente medio día, hay que lidiar con algunas funciones con nombres largos que se les escaparon a los chicos de ABITS cuando hicieron el software, pero ya las tenemos muy bien ubicadas en que parte del código se encuentran), la maravilla de compilar en unas cuantas horas los códigos fuentes se debe a que los programas no utilizan absolutamente nada de complejidades del lenguaje de programación.&lt;br /&gt;&lt;br /&gt;Hay una parte del código fuente de ABITS que no se entregaba con el producto original, aunque lo compraras con el código fuente, para resolver esto  desarrollamos las funciones faltantes (incluso las que están en "C")   y que tienen la misma funcionalidad que sus equivalentes para CA-Clipper, bien dice el dicho que: &lt;span style="font-style: italic;"&gt;en esta vida lo importante no es saber, sino tener el teléfono del que sabe.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y finalmente para el tema de los reportes  usamos &lt;a href="http://www.paritetsoft.ru/frh.htm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;FastReports&lt;/span&gt;&lt;/a&gt; (que por cierto ha liberado una versión nueva para xHarbour, la 4.8, a la cual le han aumentado algunas cosillas interesantes para trabajar mejor con Xailer), la gran ventaja de FastReports es que se puede utilizar perfectamente desde un programa en modo consola de 32 bits con (x)Harbour, generando reportes para cualquier tipo de impresora (matriz de puntos incluida y para impresoras con puerto USB o bien conectadas en red), con 11 formatos de exportación distintos, y que además son muy simples de hacer.&lt;br /&gt;&lt;br /&gt;Conclusión: El código viejo no tiene nada de malo (el código fuente no se oxida, ni se hecha a perder con el tiempo), todo lo contrario, como los buenos vinos, con el tiempo, el código fuente se ha usado, se ha probado y se ha depurado, así que,  de los males el menor, en vez de tener que volver a programar todo en otro lenguaje,  ¿ Porqué no darle otra oportunidad a ese viejo código que todavía nos funciona ?.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7201783705339268305?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7201783705339268305/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7201783705339268305' title='5 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7201783705339268305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7201783705339268305'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/09/de-los-males-el-menor.html' title='De los males, el menor.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-917211732853969892</id><published>2009-09-07T18:36:00.005-05:00</published><updated>2009-09-20T14:40:27.847-05:00</updated><title type='text'>CiberTec.OpenHouse @  Guadalajara !!!!!</title><content type='html'>He tenido el blog un poco abandonado porque hemos estado con tanto trabajo que se nos sale por las orejas.&lt;br /&gt;&lt;br /&gt;Estamos trabajando en 2 proyectos grandes con ADS, y preparando la llegada de Xailer 2.0 que será durante este mes.&lt;br /&gt;&lt;br /&gt;Y como lo prometido es deuda, al principio de año ofrecí que haríamos nuestro famoso "Open House" en distintas ciudades de México y ya tenemos fecha para el primer evento.&lt;br /&gt;&lt;br /&gt;De la mano de Sybase Advantage Database Server, tenemos el agrado de invitarlos a nuestro primer Open House en la ciudad de Guadalajara, Jalisco.&lt;br /&gt;&lt;br /&gt;El Open House es una jornada de puertas abiertas, para que veas que lo nosotros y otros programadores de tu localidad están haciendo con herramientas como Xailer, Advantage Database Server y xHarbour en general.&lt;br /&gt;&lt;br /&gt;La cita es el próximo &lt;span style="font-weight: bold; font-style: italic;"&gt;sábado 3 de Octubre del 2009&lt;/span&gt; en el &lt;a href="http://www.cpguadalajara.com.mx"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Hotel Crown Plaza Guadalajara&lt;/span&gt;&lt;/a&gt;, a partir de las 9 de la mañana y hasta las 6 de la tarde.&lt;br /&gt;&lt;br /&gt;Los temas a tratar serán:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Presentación de Xailer 2.0&lt;/li&gt;&lt;li&gt;Advantage Database Server 9.1 y xHarbour&lt;/li&gt;&lt;li&gt;Aplicaciones internet con ADS y xHarbour&lt;/li&gt;&lt;li&gt;Generación de reportes profesionales con FastReports y (x)Harbour.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Obviamente tendremos una sesión de preguntas y respuestas y podemos hablar de todos los temas de interés para el programador de xHarbour.&lt;br /&gt;&lt;br /&gt;Como no tenemos oficinas en Guadalajara, hemos alquilado un salónn del Hotel Crown Plaza, por esa misma razón, por esta ocasión, nos vemos obligados a cobrar una cuota de recuperación de solo 460.00 pesos (IVA incluído), el precio incluye la comida del día, y los asistentes recibirán una copia de nuestro manual de ADS para xHarbour, una licencia SDK de ADS para 2 usuarios y CD de la versión demo de Xailer 2.0.&lt;br /&gt;&lt;br /&gt;Además estaremos rifando un descuento importante en compra de licencias de ADS y algunas otras cosas adicionales.&lt;br /&gt;&lt;br /&gt;Tenemos muy pocos lugares disponibles (esta vez si es en serio), por lo que les pedimos a todos los usuarios que estén interesados en asistir que reserven su lugar a mas tardar hasta el miércoles 30 de Septiembre, enviando un correo a&lt;a style="font-weight: bold; font-style: italic;" href="mailto:info@ciber-tec.com"&gt; info@ciber-tec.com&lt;/a&gt; o bien llamando al teléfono: &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;01 55 5560 0168&lt;/span&gt;&lt;/span&gt; de la cliudad de México, donde con gusto les daremos mas informes sobre como reservar su lugar y la forma de pago.&lt;br /&gt;&lt;br /&gt;Agradecemos a Desarrollo de Software Inteligente de Guadalajara y a Sybase iAnywhere las facilidades que nos están prestando para organizar este evento.&lt;br /&gt;&lt;br /&gt;Esperamos verlos por ahí para conocernos e intercambiar conocimientos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-917211732853969892?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/917211732853969892/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=917211732853969892' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/917211732853969892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/917211732853969892'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/09/cibertecopenhouse-guadalajara.html' title='CiberTec.OpenHouse @  Guadalajara !!!!!'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7627648760455648057</id><published>2009-07-30T16:28:00.002-05:00</published><updated>2009-07-30T18:25:21.106-05:00</updated><title type='text'>Precio especial de Advantage Database Server para usuarios Europeos</title><content type='html'>Hoy recibí una notificación de la gente de Sybase iAnywhere con los nuevos precios de Advantage Database Server para lo que resta del año 2009.&lt;br /&gt;&lt;br /&gt;El punto es, que revisando precios de los distribuidores de Advantage en Europa, me encuentro que nuestros nuevos precios (en dólares) son por mucho mas económicos que los precios a los que están vendiendo ADS en España por ejemplo.&lt;br /&gt;&lt;br /&gt;He comentado esto con Sybase iAnywhere y ellos nos han autorizado a ofrecer LOS MISMOS PRECIOS que tenemos en dólares, al tipo de cambio del Euro ( 1.00 USD = 0,71€),  para la compra de producto completo (actualizaciones y aumento de usuarios, por favor, preguntar precio), Por ejemplo, la licencia de 2 usuarios que se ofrece en 349€, nosotros la ofrecemos en 255€ (94€ de ahorro) y la licencia de 5 usuarios que se vende en 844€, nosotros la tenemos en 630€. (214€ de ahorro), en licencias mayores te puedes ahorrar entre 400 y 2.600€.&lt;br /&gt;&lt;br /&gt;Si estás interesado en adquirir el producto o quieres mas información, puedes preguntar el precio de actualizaciones y aumento de usuarios,  contactando con nuestro distribuidor en España: Niko del Pozo, tel. 678 437 795 o bien por correo electrónico: info.es@ciber-tec.com.&lt;br /&gt;&lt;br /&gt;Esta oferta también es válida para usuarios de centro y sudamérica, para mas informes pueden ponerse en contacto a info@ciber-tec.com con gusto les atendermos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7627648760455648057?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7627648760455648057/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7627648760455648057' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7627648760455648057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7627648760455648057'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/07/precio-especial-de-advantage-database.html' title='Precio especial de Advantage Database Server para usuarios Europeos'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-6796806063552846839</id><published>2009-07-26T12:54:00.003-05:00</published><updated>2009-07-26T16:24:05.568-05:00</updated><title type='text'>ADS 9.1... uno nunca termina de aprender.</title><content type='html'>Estos 3 últimos días he estado haciendo una implementación de Advantage Database Server para un importante grupo ferretero de México, cuya reseña haré en los próximos días.&lt;br /&gt;&lt;br /&gt;Es increíble la cantidad de usuarios de Clipper que aún existen, y en especial en México hay muchísmos usuarios de los sistemas de &lt;a style="font-weight: bold; font-style: italic;" href="http://www.abits.com/"&gt;Abits&lt;/a&gt;: Admin, Aconta, Anomina y Abancos. Abits es una empresa que hace unos 10 años se les ocurrió vender programas de gestión administrativa con código fuente hechos en CA-Clipper y que vendió unos cuantos miles de unidades,  aún hoy, muchas empresas usan esos programas, en algunos casos con bastantes usuarios y enormes volúmenes de datos, muchos de estos usuarios son clientes nuestros de Advantage Database Server, como en esta última implemenación.&lt;br /&gt;&lt;br /&gt;Tenía mucho tiempo de no hacer una implementación de Advantage con CA-Clipper, la mayoría de las implementaciones que hacemos son para (x)Harbour y otros lenguajes de programación.&lt;br /&gt;&lt;br /&gt;Yo creía que conocía todos los secretos de ADS, pero no cabe duda que cada día se aprende algo nuevo, como en el caso de esta implementación.&lt;br /&gt;&lt;br /&gt;Las últimas implemenaciones de ADS que hice con CA-Clipper fueron con la versión 7.1 de ADS, en esa versión se introdujo un "cliente" TCP/IP para aplicaciones MS-DOS llamado AdsDosIp. Este es un programa que permite a los programas en CA-Clipper conectarse al servidor remoto ADS usando protocolo TCP/IP, el problema de los programas en DOS, es que el sistema operativo no soporta envío de paquetes TCP, con lo cual es necesario este programa para que un programa CA-Clipper / DOS se conecte a un servidor ADS ya sea Novell, Linux o Windows usando protocolo TCP/IP.&lt;br /&gt;&lt;br /&gt;En esta versión el AdsDosIp si bien no daba mejor desempeño a la aplicación, si te ofrecía todas las ventajas de ADS excepto un aumento de velocidad, hay que ver las quejas que me tuve que comer porque muchos clientes cambiaron de Novell a Windows y la caida en la velocidad de la aplicación si que era notable.&lt;br /&gt;&lt;br /&gt;Para la versión 9.1 las cosas han cambiado radicalmente, por un lado el desempeño del servidor ADS se ha mejorado sustancialmente, pero también se hicieron algunos cambios en el cliente para IP de CA-Clipper, que hay que ser un poco mañosos para saber donde están.&lt;br /&gt;&lt;br /&gt;Si bien no existe un cliente CA-Clipper específico para la versión 9.1 de ADS (se sigue usando el cliente de la versión 7.1), el equpo de Sybase iAnywhere hizo algunos cambios en el  año 2008 para el cliente IP para Clipper que aceleran tremendamente la velocidad de las aplicaciones  al servidor Advantage usando el AdsDosIp.&lt;br /&gt;&lt;br /&gt;Buscando en la base de conocimientos de Advantage como acelerar el acceso a los datos y después de varias horas dándole vuelas al asunto en los grupos de noticias de ADS y en la base de conocimientos, me encontré con&lt;a style="font-weight: bold; font-style: italic;" href="http://devzone.advantagedatabase.com/dz/content.aspx?key=48&amp;amp;Relatives=%3C48d7ff51@solutions.advantagedatabase.com%3E%20%20or%20%3C6c56a92244a108caeb01a2dcff06@devzone.advantagedatabase.com%3E%20%20or%20%3C48d8f5e4@solutions.advantagedatabase.com%3E%20%20or%20%3C48d91aea@solutions.advantagedatabase.com%3E%20%20or%20%3CIKsEaQHRXS2IFwqG@woodrowhorsfall.plus.com%3E%20or%20%3C48d92c30@solutions.advantagedatabase.com%3E"&gt; este tema&lt;/a&gt;, que me llevó a &lt;a style="font-weight: bold; font-style: italic;" href="http://devzone.advantagedatabase.com/CodeCentral/Project.aspx?ProjID=138"&gt;esta página&lt;/a&gt; en la Central de código de ADS donde encontré las nuevas libs de comunicaciones IP para usar con CA-Clipper  y las versiones 8.1 y 9.1 de Advantage, estas librerías funcionan estupendamente y el acceso a los datos ahora sí es tremendamente rápido para aplicaciones CA-Clipper / MS-DOS, como en los viejos tiempos de los servidores Novell y lo mejor de todo SIN TOCAR EL CODIGO FUENTE, basta con relinkar el programa con las LIBs nuevas y listo, a funcionar, los resultados, como siempre, impresionantes.&lt;br /&gt;&lt;br /&gt;Otra cosa que aprendí en esta implementación, es que en la versión 9.1 ya no es necesario compartir una carpeta en el servidor para accesar a los datos y que también es posible utilizar discos duros externos tipo NAS (Network Attached Storage) con Advantage Database Server.&lt;br /&gt;&lt;br /&gt;Veamos la primer característica:&lt;br /&gt;&lt;br /&gt;En versiones anteriores de ADS, se podía proteger los datos simplemente no dándole acceso a los usuarios a la carpeta del servidor donde están almacenados los DBFs, sin embargo, sí era necesario compartir el recurso, pero sin asignarle usuarios, esto si bien era un mecanismo de protección eficiente, dejaba un recurso compartido a la vista del "entorno de red", aunque el cliente no tuviera acceso a ese recurso compartido, este quedaba a la vista de todo el mundo.&lt;br /&gt;&lt;br /&gt;En la versión 9.1 ADS introduce los &lt;span style="font-style: italic;"&gt;Alias del lado del Servidor&lt;/span&gt; (Server-Side Aliases), esta característica esta disponible para Linux, Novell y Windows, pero solo para los servidores remotos o internet, el servidor LOCAL no puede usar esta característica.&lt;br /&gt;&lt;br /&gt;Para crear un Server-side alias, basta con crear un archivo llamado ADSSERVER.INI en la misma carpeta que esté configurada para el archivo de errores de ADS (por default la unidad C:\ del servidor), este es un ejemplo del archivo ADSSERVER.INI:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;[ServerAliases]&lt;br /&gt;order_db=c:\data\orders&lt;br /&gt;bikes=\\server1\shared_drive\data&lt;br /&gt;flights_db=c:\data&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Este archivo .INI solo tiene una sección &lt;span style="font-family:courier new;"&gt;[ServerAliases]&lt;/span&gt;, cada entrada de la sección es el nombre del alias y la ruta donde están los datos CON RESPECTO AL SERVIDOR, las carpetas de los datos también pueden ser referenciadas por la UNC, pero no se pueden usar unidades de red MAPEADAS.&lt;br /&gt;&lt;br /&gt;Para usar estos servidores, en el código fuente se hace referencia a ellos al momento de conectar con el servidor, ya sea por medio de un diccionario, o de una ruta en un USE de un archivo DBF, siempre indicando el nombre del servidor, seguido del ALIAS. Ejemplos:&lt;br /&gt;&lt;br /&gt;USE \\servidor\flights_db\usuarios.dbf&lt;br /&gt;AdsConnect60("\\servidor\order_db\diccionario.add",3,"usuario","password")&lt;br /&gt;&lt;br /&gt;Es importante indicar el nombre del servidor (también se puede utilizar la dirección IP : PUERTO, para resolver la ubicación del server), porque ADS necesita saber donde buscar el archivo con los Alias del lado del servidor.&lt;br /&gt;&lt;br /&gt;De esta característica se desprende el poder usar un servidor NAS (disco duro externo) para almacenar archivos en estos dispositivos.&lt;br /&gt;&lt;br /&gt;Si el servidor NAS puede ser ubicado por medio de una UNC, entonces se puede crear un alias del lado del servidor para direccionar el almacenamiento al servidor NAS, hay que tener en cuenta que al ser un dispositivo externo, la velocidad de acceso a los datos no será la misma que si los datos estuvieran en un disco duro dentro del servidor, también tomar en cuenta que la comunicación al servidor NAS depende de la conexión de la red, si la comunicación con el NAS se pierde, se puede producir corrupción de los datos.&lt;br /&gt;&lt;br /&gt;Supongo que hay mas secretos en el servidor Advantage 9.1, pero tendré que irlos descubriendo poco a poco y por su puesto documentarlos en OP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-6796806063552846839?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/6796806063552846839/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=6796806063552846839' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6796806063552846839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6796806063552846839'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/07/ads-91-uno-nunca-termina-de-aprender.html' title='ADS 9.1... uno nunca termina de aprender.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-835665690510872525</id><published>2009-07-10T13:36:00.003-05:00</published><updated>2009-07-10T19:40:12.532-05:00</updated><title type='text'>Seguridad en bases de datos... otra cosa mas de que preocuparse</title><content type='html'>He estado desconectado un poco del blog por motivos de trabajo, 3 cursos casi seguidos de Advantage Database Server, junto con un proyecto de esta misma base de datos para un gobierno estatal de México me han tenido alejado de OP por algunas semanas.&lt;br /&gt;&lt;br /&gt;Esta semana con la entrega del proyecto a la dirección de informática del gobierno del estado, tuvimos una serie de reuniones con el personal de sistemas, y el comentario de esta semana surge precisamente a raíz de una de esas reuniones donde se nos cuestionaba sobre la seguridad implementada en la instalación de ADS que realizamos.&lt;br /&gt;&lt;br /&gt;Como en toda buena entidad gubernamental, y en general en todas las empresas, la seguridad de la información es un factor que tenemos que cuidar cuando desarrollamos programas, en algunos países la protección de datos es incluso una ley, como en el caso de España, donde existe una &lt;a href="http://civil.udg.es/normacivil/estatal/persona/PF/lo15-99.htm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Ley Orgánica de Protección de Datos&lt;/span&gt;&lt;/a&gt;, y comentando con la gente de informática nos decían que ellos habían dejado de usar bases de datos  Open Source (MySQL, FireBird, Postgre SQL y otras) precisamente por los riesgos de seguridad que ello conlleva.&lt;br /&gt;&lt;br /&gt;No me había yo puesto a pensar en eso..... sabemos que un software Open Source en un principio es confiable, es estable, se puede usar libremente sin tener que pagar por su uso, en general son productos de calidad excelente, no traen código "malicioso" dentro como spyware o troyanos porque el código fuente está disponible para que todo el mundo con los conocimientos adecuados vea lo que hay dentro.&lt;br /&gt;&lt;br /&gt;Si no confías en un binario pre-construido de un producto Open Source que descargaste de internet, puedes descargar el código fuente y construir tu propio EXE, de hecho, muchos programadores de (x)Harbour lo hacen, se descargan el código fuente del SVS o del CVS y se construyen su compilador fresquesito a partir del código fuente, el código fuente de (x)Harbour tiene incluso archivos .BAT para facilitarte el construirte el compilador o las contribuciones.&lt;br /&gt;&lt;br /&gt;¿ Que tan seguro a nivel información es usar no solo una base de datos Open Source, sino cualquier producto Open Source en general ?.&lt;br /&gt;&lt;br /&gt;En el caso de los usuarios finales de nuestros desarrollos, sabemos que serán muchos mas que las personas que intervinieron en hacer el programa, y su principal interés es resolver sus problemas, realmente no creo que algún usuario final esté buscando "romper" nuestro programa, sencillamente porque no les interesa o no tienen los conocimientos técnicos adecuados para hacerlo, sin embargo, hay gente para todo y como siempre he dicho: Si hay algo peor que un usuario, es un usuario con iniciativa.&lt;br /&gt;&lt;br /&gt;A nivel programación y programadores, todos estamos interesados en saber "como se hacen las cosas", y los códigos fuentes de los programas son usualmente excelentes fuentes de conocimiento para aprender un poco más, el código Open Source aporta conocimientos invaluables a los programadores porque no oculta nada del funcionamiento de un producto, TODO está allí y nos permite saber como se hace tal o cual cosa o bien  saber como se soluciona tal o cual problema.&lt;br /&gt;&lt;br /&gt;Pero no siempre la gente que revisa los códigos fuentes lo hace con buenas intenciones, si bien como programadores de (x)Harbour por ejemplo, difícilmente nos meteremos a las tripas del compilador para ver como funciona el DBUseArea() (tenemos otros problemas que resolver y no tenemos el tiempo de hacerlo o bien los conocimiento en "C" para interpretar el código) sí hay gente que está dispuesta a hacerlo, y lo hace, muchas veces con la nada sana intención de encontrar vulnerabilidades o de crear herramientas que puedan aprovechar para "atacar" al programa o para obtener la información que dichos programas custodian, como es el caso las bases de datos.&lt;br /&gt;&lt;br /&gt;En esto de las vulnerabilidades no se salva nadie, ni los programas "propietarios" (los que no son Open Source), baste como ejemplo el Internet Explorer de Microsoft, ¿ cuantos "parches" de seguridad tienes instalados y que dice su descripción?:  "parche que corrije la vulnerabilidad tal o cual", solo que mientras en un programa propietario la vulnerabilidad puede ser difícil de encontrar partiendo del EXE final, en un producto Open Source los hackers tienen la vida resuelta,  tienen a mano el código fuente, les entregamos las armas en bandeja. Si planeas un asalto a la bóveda de un banco, es mas fácil hacerlo con los planos del lugar que mirando simplemente el edificio desde afuera.&lt;br /&gt;&lt;br /&gt;En las comunidades Open Source, cuando se descubre una vulnerabilidad, esta suele corregirse muy rápido (después de todo tienen el código fuente), pero mientras la gente que usa el programa actualiza la versión, la vulnerabilidad sigue presente ahí, poniendo en riesgo a los usuarios del producto que presenta ese fallo.&lt;br /&gt;&lt;br /&gt;Por otro lado teniendo el código fuente a la mano, ¿ quien te garantiza la seguridad de tus datos ?, por ejemplo en el caso de PostgreSQL, Firebird o el mismo MySQL, quien me garantiza que no haya un hacker por ahí que tenga  una versión del manejador de base de datos que pueda saltarse el proceso de autenticación del usuario y  que pueda leer los datos de cualquier servidor, después de todo, la información para hacerlo es pública, disponible para todos los usuarios, y todos los servidores utilizan el mismo código fuente.&lt;br /&gt;&lt;br /&gt;Explorando un poco mas el tema, (basta con poner en Google "hacking MySQL", por ejemplo) y te salen un montón de páginas web donde lo mismo te dicen como conectar con el servidor para leer datos como usuario "root" sin necesidad de tener password, así como herramientas y programas de hackeo, códigos fuentes para listar todas las bases de datos de un servidor, etc..&lt;br /&gt;&lt;br /&gt;Una vulnerabilidad que me llamo mucho la atención fue la llamada "SQL injection" que consiste en utilizar los datos capturados en un programa "cliente" para introducir código SQL malicioso al servidor MySQL o bien para dañar  las tablas, veamos un ejemplo:&lt;br /&gt;&lt;br /&gt;Tenemos un programa hecho por ejemplo en (x)Harbour que pide el usuario y password para permitirnos acceder a un sistema que almacena los datos en MySQL (donde he visto yo eso, donde, donde), aparece nuestra ventana, pedimos los datos y luego ejecutamos un query para verificar que tanto el usuario como el password existan y sean válidos, por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Select count(*) from usuarios where nombre = '&lt;nombre&gt;[nombre]' and password = '[password]&lt;password&gt;'&lt;/password&gt;&lt;/nombre&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si el &lt;usuario&gt; [nombe] y [password]&lt;password&gt; son correctos, entonces COUNT(*) devolverá "1", si alguna de las 2 condiciones falla, ya sea que no exista el usuario, o que el password no sea el correcto, COUNT(*) devuelve "0" por lo tanto el usuario no tiene acceso al sistema, ya que si tecleamos por ejemplo: Usuario: &lt;span style="font-weight: bold; font-style: italic;"&gt;Pepe&lt;/span&gt; password: &lt;span style="font-weight: bold; font-style: italic;"&gt;pepito&lt;/span&gt; entonces nuestra sentencia SQL quedaria como:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Select count(*) from usuarios where nombre = 'Pepe' and password = 'pepito'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si existe el usuario Pepe con el password pepito, podemos entrar al sistema, ahora vamos a hackear esta sentencia usando SQL injection, para que no me valide el password, para ello, el nombre del usuario que usaremos será: &lt;span style="font-style: italic; font-weight: bold;font-family:courier new;" &gt;Pepe'#&lt;/span&gt; (sí, con el ' y el signo de # en el nombre)&lt;br /&gt;&lt;br /&gt;La sentencia SQL entonces quedaría como:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Select count(*) from usuarios where nombre = '&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:courier new;" &gt;Pepe'#&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; ' and password = ''&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;El signo de # en MySQL indica comentario, con lo cual, a partir del #, el resto de la línea en esta sentencia es tomada como un comentario y se ignora, así pues, NO HAY VALIDACION DEL PASSWORD !!!! y si hay un nombre de usuario Pepe, entonces entraremos al sistema sin mucho problema porque Count(*) devolverá "1".&lt;br /&gt;&lt;br /&gt;¿ Quieres toda la información de la tabla usuarios, obtenida desde el programa ?, usemos nuevamente al usuario Pepe para lograr nuestros malevolos planes, ahora Pepe se llama: &lt;span style="font-weight: bold;font-family:courier new;" &gt;Pepe'; Select * from usuarios INTO OUTFILE 'c:\share\micarpeta\usuarios.txt' #&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La sentencia SQL que se ejecuta quedaría como:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Select count(*) from usuarios where nombre = '&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:courier new;" &gt;Pepe'; Select * from usuarios INTO OUTFILE 'c:\share\micarpeta\usuarios.txt'  #&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; ' and password = ''&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con esto generaremos un archivo llamado usuarios.txt en el servidor, y si tengo acceso a la carpeta "micarpeta" en el servidor, pues nada, la lista de los usuarios del sistema entregada a domicilio.&lt;br /&gt;&lt;br /&gt;Vamos a ser mas dramáticos, y vamos a usar la misma técnica ahora para borrar la tabla de usuarios ( después de todo, ¿ que sería de la vida sin un poco de caos alrededor ?), ahora el usuario será: &lt;span style="font-weight: bold;font-family:courier new;" &gt;Pepe'; Drop usuarios #&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y la sentencia SQL:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Select count(*) from usuarios where nombre = '&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:courier new;" &gt;Pepe'; Drop usuarios #&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; ' and password = ''&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y con esto ya nos cargó el payaso, porque el select se ejecuta primero, y después el DROP, y con eso le decimos adiós a la tabla de usuarios.&lt;br /&gt;&lt;br /&gt;Obviamente este es un ejemplo demasiado simplista, para empezar el nombre del usuario debería estar limitado en el número de caracteres a teclear,  pero sirve para ilustrar algo que en realidad puede suceder si somos poco dedicados en esa parte del diseño de sistemas llamado "análisis de la base de datos".&lt;br /&gt;&lt;br /&gt;Esto se podría evitar si en vez de tener las instrucciones SQL metidas dentro del programa fuente tuvieramos procesos almacenados,  o bien si ponemos especial cuidado en la creación y configuración de los usuarios de la base de datos, indicando qué usuario tiene acceso a qué tablas y con que privilegios (update, delete, drop, etc), pero siendo francos.... ¿ quien hace eso ?, ya no digas en MySQL, en CUALQUIER base de datos.&lt;br /&gt;&lt;br /&gt;Este es solo un ejemplo de una sola vulnerabilidad (la cual es conocida y está documentada), buscando en internet una tarde puedes encontrar otros muchos ejemplos mas interesantes y no solo para MySQL, sino para casi cualquier producto popular Open Source.&lt;br /&gt;&lt;br /&gt;Y ojo, no se me malinterprete, no solo los programas Open Source están afectados, como ya mencioné los programas propietarios también tienen dichas vulnerabilidades, y también hay programas externos que permiten extraer los datos controlados por ellos, pero como también mencioné, es mucho mas fácil saber como hackear un producto, cuando tienes el código fuente a la mano.&lt;/password&gt;&lt;/usuario&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-835665690510872525?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/835665690510872525/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=835665690510872525' title='9 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/835665690510872525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/835665690510872525'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/07/seguridad-en-bases-de-datos-otra-cosa.html' title='Seguridad en bases de datos... otra cosa mas de que preocuparse'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1856956775406817083</id><published>2009-06-05T12:30:00.003-05:00</published><updated>2009-06-05T20:36:47.804-05:00</updated><title type='text'>Windows 64bits.... el fin de los programas de 16 bits.</title><content type='html'>Esta  última semana he recibido por lo menos 10 llamadas de clientes y correos electrónicos que me dicen que sus programas que estaban funcionando sin problemas en Windows XP y en algunos casos con Vista, no están funcionando en computadoras nuevas (compradas de 3 meses a la fecha) que vienen con Windows Vista preinstalado (lo cual no es de extrañar, pero bueno, esa es otra historia).&lt;br /&gt;&lt;br /&gt;Investigando mas al respecto con mis proveedores de Hardware, me estoy enterando que muchos equipos que se están vendiendo de unos meses a la fecha, vienen con el Windows Vista 64, es decir, el sistema operativo no es de 32 bits, sino de 64 bits ¿ será cierto ?.&lt;br /&gt;&lt;br /&gt;No bien me enteré de esto, me lancé a mi tienda de computadoras favorita: &lt;a style="font-weight: bold; font-style: italic;" href="http://www.bestbuy.com.mx/"&gt;Best Buy&lt;/a&gt; y me puse a mirar unas 20 computadoras que estaban en exhibición entre escritorios, portátiles y NetBooks y efectivamente, un 60% de esos equipos ya viene con Windows Vista 64 preinstalado, salvo los NetBooks que vienen con XP Home y algunos portátiles de gama baja, el resto de los equipos que miré tenía Windows Vista 64.&lt;br /&gt;&lt;br /&gt;Esto presenta un problema que ya anticipaba yo hace como 2 años en un artículo de este blog Titulado &lt;a href="http://objetopersistente.blogspot.com/2007/02/porqu-tengo-que-cambiar-de-clipper.html"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;¿ Porqué tengo que cambiar de Clipper a (x)Harbour ?&lt;/span&gt;&lt;/a&gt; en el cual exponía las limitaciones de los programas hechos en CA-Clipper de 16 bits ejecutandose en plataformas de 32 bits.&lt;br /&gt;&lt;br /&gt;Ahora el problema vendrá porque los programas en 16 bits, entiéndase los programas en CA-Clipper modo consola NO CORREN EN WINDOWS 64, y entiéndase por Windows 64 toda la nueva generación  de sistemas opertivos: Windows 2008 Server 64, Vista 64, XP 64 y muy seguramente en Windows 7 también veremos una versión de 64 bits.&lt;br /&gt;&lt;br /&gt;Lo mas interesante de esto es que los fabricantes de hardware de unos meses a la fecha han dejado de distribuir equipos con versiones de 32 bits del sistema operativo y han comenzado a distribuir muchos equipos con versiones de 64 bits pre instaladas.&lt;br /&gt;&lt;br /&gt;El usuario final de estos equipos quizá no note la diferencia, pero nosotros como programadores si que la notaremos, porque de una forma u otra nos veremos afectados.&lt;br /&gt;&lt;br /&gt;¿ Como me afecta esto como programador de CA-Clipper y de Xbase en general ?&lt;br /&gt;&lt;br /&gt;Los primeros afectados serán los programadores de CA-Clipper, porque para empezar, el compilador, es decir. el CLIPPER.EXE. no funciona bajo Windows de 64 bits, por lo tanto no te será posible compilar tus programas.&lt;br /&gt;&lt;br /&gt;Lo mismo pasará con los programas con FiveWin o con Clip4Win compilados usando CA-Clipper, aunque sean aplicaciones Windows, no funcionan en Win64, el problema va un poco mas allá, pues si eres usuario del Borland Resource Workshop, tampoco podrás usar esta herramienta para editar tus DLLs o tus archivos RC, porque el BRW también es una aplicación de 16 bits.&lt;br /&gt;&lt;br /&gt;Tus alternativas no son muchas, de hecho solo es una: tienes que migrar por tus programas por lo menos para que funcionen a 32 bits, ya sea con (x)Harbour o Xbase++ o algún otro compilador compatible con Clipper a 32 bits para modo consola, o con WinDock si trabajas con Clip4Win y con FiveWin Harbour. El editor de recursos BRW puede ser sustituido por el de &lt;a style="font-weight: bold; font-style: italic;" href="http://www.smorgasbordet.com/pellesc/"&gt;Pelles C&lt;/a&gt; o bien por algún otro como el &lt;a href="http://www.resource-builder.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Resource Builder&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Los programas de 32 bits, hechos con (x)Harbour no se ven afectados por este cambio, es decir, tus programas en modo consola, o para Windows hechos con Xailer, MiniGUI o FiveWin para (x)Harbour seguirán ejecutandose sin problema alguno bajo sistemas operativos de 64 bits.&lt;br /&gt;&lt;br /&gt;Hay que ir tomando precauciones con respeto a esto, aún si ya estás trabajando a 32 bits, hay que comenzar a pensar en pasar a 64 bits tus programas con la menor cantidad de molestias posibles, de momento esto no es crítico ni de urgencia, tus programas a 32 bits, como ya lo mencioné anteriormente, correrán sin problemas por lo menos con la siguiente generación de Windows, es decir en Windows 7, ya he visto programas en Xailer corriendo en el beta de Windows 7 y de momento no parece haber ningun problema.&lt;br /&gt;&lt;br /&gt;De momento no se habla mucho del tema de los 64 bits en la comunidad de (x)Harbour, aunque es bien sabido que existen versiones de 64 bits por lo menos de Harbour, aunque de (x)Harbour 64 bits no se dicen muchas cosas.&lt;br /&gt;&lt;br /&gt;Existe otro "pequeño" incoveniente hablando de aplicaciones de 64 bits, el problema no es tanto de los compiladores (x)Harbour, viene del lado de los compiladores de "C" utilizados para generar los EXE finales después de la compilación con (x)Harbour, porque no todos los compiladores de "C" generan EXEs de 64 bits.&lt;br /&gt;&lt;br /&gt;El Borland C++ 5.5 que usamos la mayoría de los programadores de (x)Harbour NO GENERA EXEs de 64 bits, pero hay otros compiladores de C que si lo hacen, como el Microsoft C/C++ 64 (que es el mismo que utiliza FiveWin 64), el PellesC, el MinGW, Watcom, etc.&lt;br /&gt;&lt;br /&gt;El equipo Xailer está tomando precauciones al respecto, planteándose un cambio de compilador de "C" para la próxima versión, muy seguramente en la versión 2.0 de Xailer veremos la posiblidad de compilar nuestras aplicaciones con 3 compiladores de C distintos: Borland C++, MinGW y Pelles C, los motivos, ventajas y otras razones por las que se cambia el compilador de C con Xailer las puedes leer en&lt;a style="font-style: italic;" href="http://xailer.info/esp/?p=179"&gt;&lt;span style="font-weight: bold;"&gt; Xailer.Info.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Así las cosas, ahora si ha llegado el momento de de darle las gracias a nuestro querido Clipper, mandarlo a "repisaware", y comenzar a buscar nuevas alternativas de por lo menos 32 bits.&lt;br /&gt;&lt;br /&gt;Y no quiero dentro de 1 año, o en menos tiempo, a la velocidad a la que van sucediendo las cosas, escribir un artículo que se llame .... SE LOS DIJE, NO LE QUEDABA MUCHO TIEMPO A CA-CLIPPER, ya saben que odio tener razón.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1856956775406817083?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1856956775406817083/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1856956775406817083' title='6 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1856956775406817083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1856956775406817083'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/06/windows-64bits-el-fin-de-los-programas.html' title='Windows 64bits.... el fin de los programas de 16 bits.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-910186214094094309</id><published>2009-05-29T11:28:00.002-05:00</published><updated>2009-05-29T17:49:50.265-05:00</updated><title type='text'>CiberTec: 15 años al servicio de la comunidad Xbase</title><content type='html'>Feliz cumpleaños a CiberTec !!!!!&lt;br /&gt;&lt;br /&gt;El día Martes 31 de Mayo de 1994 dimos comienzo a esta aventura a la que algunos difícilmente le veían futuro.&lt;br /&gt;&lt;br /&gt;Nuestro primero proyecto: La Revista Clipper Plus, que comenzó como un proyecto para llevar información en español, durante el boom del lenguaje Xbase, en un momento donde programar todavía era un arte y los programadores unos artesanos.&lt;br /&gt;&lt;br /&gt;A la publicación de la revista siguió integrar a la línea de productos de la empresa la venta y asesoría en el uso de herramientas de programación de terceros, las famosas "librerías" de terceros para Clipper, nuestra consigna en aquel tiempo era no vender un producto que nosotros mismos no supieramos usar o que no utilizaramos en algún desarrollo, mas de 250 productos pasaron por nuestras manos, fueron evaluados en nuestra revista y utilizados en proyectos en producción.&lt;br /&gt;&lt;br /&gt;Y así sin querer, la consultoría y formación se integró como parte de nuestro esquema de servicios y al día de hoy seguimos ofreciendo estos servicios.&lt;br /&gt;&lt;br /&gt;Un parte aguas muy importante en la historia de CiberTec sucedió en el año de 1999, cuando conocí por algo llamado "internet" a alguien llamado Niko del Pozo, hasta el 1 de Mayo de 1999 yo no sabía ni quien ni como era, y me invitó a dar cursos de FiveWin con apoyo de su empresa: Geroa Informatica (hoy Geroa Server) a San Sebastián (Donostia) en el País Vasco, para el 15 de Mayo, ya eramos amigos, amistad que se ha mantenido a lo largo de estos 10 años,  mismos 10 años que tengo viajando a Europa a dar cursos.&lt;br /&gt;&lt;br /&gt;¿ Quién dice que un cliente no puede ser tu amigo ?, si los que opinan eso supieran....., aún conservo a mi cliente No. 1 y no es porque sea el mas importante, es que simplemente tiene mi factura 1, la primera que hicimos en la empresa: una suscripción de 1 año a nuestra revista, mi querido y apreciado Alejandro Villanueva Reinbeck o como le llamo entre amigos "el Inge" Villanueva, hoy en día seguimos trabajando juntos y sigo asesorandolo en sus proyectos de programación.&lt;br /&gt;&lt;br /&gt;Historias como estas tengo por montones, como con la gente de &lt;a href="http://www.vision-dsi.com"&gt;DSI de Colombia&lt;/a&gt; y las familias López y Acosta de Manizales, con quien además de haber hecho el proyecto mas grande de Advantage Database Server que hemos realizado, nos une una gran amistad.&lt;br /&gt;&lt;br /&gt;Y bueno que decir de mis "hijos" favoritos y herederos tecnológicos: Israel y Carolina, de &lt;a href="http://www.sanroms.com/"&gt;Sanrom's Software de México&lt;/a&gt;, cuyos productos y concepto empresarial  son un productos totalmente "made-in" CiberTec.&lt;br /&gt;&lt;br /&gt;O mi amigo Armando García de&lt;a href="http://www.apsi.com.mx/"&gt; APSI&lt;/a&gt;, que comenzamos casi juntos en estos andares y fue quien me conveció de dar cursos fuera de México, y que me ha prestado siempre su ayuda incondicional, sus productos son obra de la gran visión de Armando y de la habilidad de sus talentosísimos programadores y como no, también un poquito obra de CiberTec.&lt;br /&gt;&lt;br /&gt;Y tantas empresas y tantos amigos que han pasado por nuestra historia, hemos dado mas de 1000 cursos de formación en tecnología Xbase, en varios  paises: Estados Unidos, México, España, Guatemala, Costa Rica, Panamá, Colombia, Venezuela, Chile y Argentina y mas de 5 mil programadores han pasado por nuestras manos en estos 15 años, hemos realizado proyectos de programación para empresas privadas del tamaño de Bayer, Ford, Honda, SGS, KLM Airlines,  gubernamentales como la Administración Tributaria de España, AENA, Gobierno de los estados de Guanajuato y Quintana Roo en México, y las Secretarías de la Defensa y Marina de México, estos últimos con proyectos que vinculan esquemas de seguridad nacional y si, (x)Harbour se adapta a todos esos requerimientos.&lt;br /&gt;&lt;br /&gt;Y aunque no todo ha sido miel sobre hojuelas, porque también hemos pasado por muy malos ratos, como crisis económicas, robos de equipo, accidentes, enfermedades, aquí seguimos y esperamos hacerlo por mucho tiempo más.&lt;br /&gt;&lt;br /&gt;Prometimos llevar a CA-Clipper al siglo XXI y aquí estamos, a casi 10 años de haber comenzado el nuevo milenio, los Clippersaurios seguimos vivos y gozando de cabal salud, hoy ya no solo trabajamos con DBFs, podemos hacerlo con cualquier motor de base de datos SQL, ya no estamos atados a MS-DOS hoy trabajamos en Windows, Linux y hasta sobre la misma Internet, salvo algunas cosas, estamos a la altura de la mayoría de los lenguajes de programación "modernos".&lt;br /&gt;&lt;br /&gt;Nos mueve la pasión por lo que hacemos, nos apasiona programar en (x)Harbour, en Advantage, en Xailer, nos gusta investigar, evaluar, escribir y enseñar lo que hemos aprendido, alguna vez leí por ahí que &lt;span style="font-style: italic;"&gt;la felicidad no consiste en hacer lo que se quiere, sino en querer lo que se hace&lt;/span&gt;, y sí, es una verdad como la copa de un pino, yo he sido muy feliz estos últimos 15 años.&lt;br /&gt;&lt;br /&gt;Y vamos por más, la tecnología de programación va a cambiar mucho en los próximos años pero si queda hueco para un USE, para un APPEND o para un SELECT * FROM con una instrucción XBase detrás, ahí estaremos nosotros, para averiguar como, donde y porqué.&lt;br /&gt;&lt;br /&gt;Muchas gracias a todos los amigos que han estado con nosotros estos 15 años, muchas gracias a todos nuestros enemigos por que nos enseñan a no confiarnos y estar siempre listos para que lo que puede venir, muchas gracias a nuestros socios tecnológicos en México, Estados Unidos y España, por confiar en nuestra honradez y capacidad para hacer negocios en el mercado de América Latina y muchas a gracias a nuestra competencia, porque sin ellos no podríamos demostrar lo buenos que somos haciendo nuestro trabajo.&lt;br /&gt;&lt;br /&gt;Y a tí lector de Objeto Persistente, muchas gracias por tu apoyo en estos 5 años que lleva el blog, no te fallaremos, mientras exista un Xbase en el mundo, seguiremos aquí.&lt;br /&gt;&lt;br /&gt;Cumplimos 15 y vamos por lo menos por otros 30. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-910186214094094309?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/910186214094094309/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=910186214094094309' title='13 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/910186214094094309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/910186214094094309'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/05/cibertec-15-anos-al-servicio-de-la.html' title='CiberTec: 15 años al servicio de la comunidad Xbase'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1027940194962728161</id><published>2009-05-28T11:37:00.004-05:00</published><updated>2009-05-28T21:04:58.402-05:00</updated><title type='text'>Agotados los lugares para el curso Advantage Database Server nueva fecha abierta.</title><content type='html'>Es muy raro que los lugares para los cursos se nos agoten tan rápido (tomando en cuenta que nuestras instalaciones son mas bien pequeñas).&lt;br /&gt;&lt;br /&gt;El caso es que los lugares para el curso de Advantage Database Server, para los días 3, 4 y 5 de Junio se agotaron el día de ayer miércoles.&lt;br /&gt;&lt;br /&gt;Como sabíamos que esto iba a suceder, hemos abierto una nueva fecha los días 24, 25 y 26 de Junio, pocos lugares disponibles.&lt;br /&gt;&lt;br /&gt;Los asistentes a este segundo curso también recibirán además del material impreso una licencia SDK de Advantage Database Server para 2 usuarios totalmente funcional, y un descuento que puede ir desde 100 hasta 500 dólares en la compra de su licencia de Advantage, dependiendo del número de usuarios que adquieran.&lt;br /&gt;&lt;br /&gt;El temario:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Introducción&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Arquitectura distribuida&lt;br /&gt;Cliente / Servidor&lt;br /&gt;Cliente / servidor y archivos DBFs&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Formatos de archivos soportados&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;DBF / NTX / DBT&lt;br /&gt;DBF / CDX / FPT&lt;br /&gt;ADT / ADI / ADM&lt;br /&gt;AdsSetFileType()&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Servidores&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Servidor Local&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Uso y limitaciones&lt;br /&gt;ADSLOC32.DLL&lt;br /&gt;ADSLOC32.CFG &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Servidor Remoto &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Instalación&lt;br /&gt;Configuración&lt;br /&gt;Balance de parámetros de configuracion&lt;br /&gt;Puertos de comunicacion&lt;br /&gt;Firewalls y antivirus &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Servidor Internet &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Requerimientos&lt;br /&gt;Configuración de puertos&lt;br /&gt;Configuración de router (INFINITUM / CABLE)&lt;br /&gt;Configuracion para VPN&lt;br /&gt;Acceso a los datos via internet&lt;br /&gt;Limitaciones &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AdsSetServerType() &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Advantage Data Architech (ARC)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tablas libres &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Creación y modificación de estructuras&lt;br /&gt;Creación de índices&lt;br /&gt;Filtros y búsquedas incrementales &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conexiones&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Conexión a carpeta de datos&lt;br /&gt;Conexión a diccionario de datos&lt;br /&gt;Conexiones via internet a los datos &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Diccionario de datos &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Definición&lt;br /&gt;Creación y modificación de Diccionarios de datos&lt;br /&gt;Usuarios y atributos de acceso a los datos&lt;br /&gt;Definición de tablas&lt;br /&gt;Integridad referencial de los datos&lt;br /&gt;Triggers, Vistas y Procesos almacenados sobre tablas DBF y ADT &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SQL Sobre tablas DBF y ADT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Manejo de conexiones para SQL&lt;br /&gt;Streamline SQL de Advantage&lt;br /&gt;Indices bajo SQL&lt;br /&gt;Mejorando la velocidad de acceso a los datos con SQL &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Advantage Database Server y (x)Harbour&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;La tecnología RDD de CA-Clipper y xHarbour &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Librerias de manejo de datos&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;RDDADS.LIB &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;ACE32 LIB y DLL&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;AXWCS32.DLL comunicaciones &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Programación&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Carga del cliente ADS en el programa&lt;br /&gt;Formato de datos (DBF / ADT)&lt;br /&gt;Tipos de servidor&lt;br /&gt;Consideraciones de programación&lt;br /&gt;Browses y lectura por anticpado (cache de tablas)&lt;br /&gt;Diccionarios de datos por programación&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Funciones de manejo de DDs &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Tablas e indices &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Usuarios y propiedades &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Programación de características especiales&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Filtros optimizados Advantage(AOF)&lt;br /&gt;Seguridad por ocultamiento de carpetas&lt;br /&gt;Seguridad por encriptamiento de datos&lt;br /&gt;Conexion por internet&lt;br /&gt;Transacciones &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;ADS Streamline SQL con (x)Harbour&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Conexión a la base de datos&lt;br /&gt;Preparación y ejecución de sentencias SQL&lt;br /&gt;Recuperación de datos desde (x)Harbour&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Interfaces Graficas &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Xailer&lt;br /&gt;Visual xHarbour&lt;br /&gt;FiveWin y MiniGUI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para mas informes sobre este curso favor de contactarnos en info@ciber-tec.com o a los telefonos 01 55 5560 0168.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1027940194962728161?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1027940194962728161/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1027940194962728161' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1027940194962728161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1027940194962728161'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/05/agotados-los-lugares-para-el-curso.html' title='Agotados los lugares para el curso Advantage Database Server nueva fecha abierta.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1116669151012632678</id><published>2009-05-17T12:57:00.006-05:00</published><updated>2010-01-26T11:54:48.845-06:00</updated><title type='text'>FastReport.... Desde Rusia con amor para xHarbour</title><content type='html'>Odio hacer informes.&lt;br /&gt;&lt;br /&gt;Así de fácil, me encanta programar, me encanta resolver problemas de cálculo, de acceso a datos, me fascina diseñar pantallas, pero ODIO hacer los informes.&lt;br /&gt;&lt;br /&gt;Ese odio me viene desde los tiempos de Clipper, de aquellos tiempos lejanos de las impresoras de matriz de puntos guardo mi utilísima regla de metal para medir caracteres, que si condensado caben tantos caracteres por pulgada, que si expandido tantos, que si normal otros, que si el reporte va en hojas de 10 pulgadas o de 15 y luego a nivel programación las famosas "secuencia de escape" para los distintos tipos de letra, vamos, que era una alegría eso de hacer informes en los tiempos del ms-dos.&lt;br /&gt;&lt;br /&gt;Vi la gloria cuando comencé a utilizar Band-IT, sin duda el mejor generador de informes para CA-Clipper, simple de usar y poderoso.&lt;br /&gt;&lt;br /&gt;Pero entramos a programar en Windows y vamos de vuelta al problema de los informes, las impresoras dejaron de ser un problema, ahora el problema de los informes es mas simple de solucionar, pero cada día hay que darles mas versatilidad a los dichosos informes.&lt;br /&gt;&lt;br /&gt;En Xailer y FiveWin el problema se soluciona relativamente fácil a través de la clase TReport y de los Objetos Printer y Device:Canvas, pero ahora, conforme vamos añadiendo complejidad a los sistemas, hay que añadir complejidad a los informes, y para esto de hacer difícil lo complicado y lo complicado imposible, los usuarios se pintan solos.&lt;br /&gt;&lt;br /&gt;Ahora no solo hay que hacer informes sobre DBFs, hay que hacerlos sobre tablas SQL, ya no basta con hacer una vista previa de como se verá el reporte en pantalla, hay que enviar de la pagina tal a tal únicamente, hay que exportar los informes a Excel (de cajón) a PDF, a Word, enviarlos por correo, publicarlos en internet.... POR FAVOR !!!!! son solo INFORMES.&lt;br /&gt;&lt;br /&gt;Tengo un cliente que se queja amargamente conmigo.... tiene un sistema que genera mas de 400 informes distintos, y no pasa un mes sin que alguno de sus clientes le pida un nuevo informe o que modifique alguno de los existentes, como todos los informes están en código, cada vez que hay que mover un reporte, pues hay que volver a generar un nuevo EXE..... bueno si estás ocupado, haz un generador visual de reportes y déjame hacerlos a mí.... como si fuera tan fácil tanto hacer el diseñador visual, como aprender a usarlo.&lt;br /&gt;&lt;br /&gt;Hay numerosos generadores de informes visuales para Windows, la mayoría son "genéricos", enfocados para usarse con cualquier lenguaje de programación y con cualquier base de datos.&lt;br /&gt;&lt;br /&gt;Yo comencé con esto de los informes visuales con &lt;a href="http://es.wikipedia.org/wiki/Crystal_reports" target="_blank"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Crystal Reports&lt;/span&gt;&lt;/a&gt; versión 4.0 y lo abandoné en la versión 7.x, porque las versiones posteriores sencillamente perdieron el piso, ya no es Crystal Reports, ahora es&lt;a href="http://www.crystaldecisions.com/" target="_blank"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; Crystal Decisions&lt;/span&gt;&lt;/a&gt;.... y aquel generador de informes se convirtió en una parte de una herramienta que es un MONSTRUO y encima con unos precios extremos. Luego fue adquirido por SAP y ahora es un división de la empresa alemana.&lt;br /&gt;&lt;br /&gt;Luego hice algunos experimentos con &lt;a href="http://www.combit.net/en"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;List &amp;amp; Labels&lt;/span&gt;&lt;/a&gt;, me gustó la filosofía de programación: el informe visual solo es una plantilla, y el programa "alimenta" los datos al informe por programación y en tiempo de ejecución, de tal manera que nosotros siempre tenemos control de los datos a imprimir desde programa por medio de filtros, scopes o queries SQL, luego estos datos se "bombean" al motor de informes, y el motor de informes hace el resto, estupenda filosofía,  el generador es poderoso y se pueden hacer muchas cosas con él, sin embargo al igual que Crystal Reports, es un MARTIRIO la distribución del run-time para que el usuario pueda ver los informes, requiere de mas de 10 DLLs que hay que ir instalando equipo por equipo, si usas la version OCX, ir registrando en cada equipo el OCX del visualizador, instalar la licencia en los clientes, si quieres modificar un informe, hay que comprar licencias del diseñador, y todo por tener la facilidad de hacer reportes rápido y bonitos.&lt;br /&gt;&lt;br /&gt;Hace unos meses me llegó por parte de un programador ruso llamado Sergey Spirin un demo de un producto llamado &lt;a href="http://www.paritetsoft.ru/frh.htm" target="_blank"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;FastReport para xHarbour&lt;/span&gt;&lt;/a&gt;, en su momento no le dí toda la importancia que se merecía por falta de tiempo (de lo cual me arrepiento ahora), desde mi punto de vista FastReport es la solución IDEAL para la generación de informes con xHarbour.&lt;br /&gt;&lt;br /&gt;Pero no adelantemos vísperas, en primer lugar .... ¿ quién o qué está detrás de FastReport ?, esa fue mi primer "sospecha" porque como habrás visto, la página de FastReport para xHarbour no es precisamente una maravilla, así que me puse a investigar detenidamente y averigué que &lt;a href="http://www.fast-report.com/" target="_blank"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;FastReport &lt;/span&gt;&lt;/a&gt;es producido por una empresa Rusa, y que además es uno de los productos mas famosos y populares para los programadores de Delphi, bueno, eso para mí ya es un buen principio.&lt;br /&gt;&lt;br /&gt;Si revisas la página de FastReport verás que es un generador de informes genérico, para usar con varios lenguajes de programación, y aquí es donde entra en acción Sergey Spirin, quien es un programador que además de programar, distribuye FastReport para (x)Harbour&lt;br /&gt;con licencia OEM (confirmando por mí directamente con la gente de FastReport).&lt;br /&gt;&lt;br /&gt;Sergey ha desarrollado interfaces para FastReport para Xbase++ y mas recientemente para (x)Harbour y aquí es donde comienza la magia de FastReport para (x)Harbour.&lt;br /&gt;&lt;br /&gt;Para empezar me ENCANTO el producto por una simple y sencilla razón: TODO el generador de informes, incluyendo el diseñador visual y el motor de vista previa junto con los 13 motores de exportación vienen contenidos EN UNA SOLA DLL, lo asombroso no es que sea una sola DLL, lo realmente asombroso es que dicha DLL no mide mas de 3.5 Mbytes y no requiere ningún proceso de instalación ni de registro, simplemente la copias donde tienes tu archivo EXE de tu programa hecho en (x)Harbour y listo, ya tienes tu generador de informes.&lt;br /&gt;&lt;br /&gt;El segundo punto a favor de FastReport es que la integración y manipulación del generador es mas simple que el mecanismo de un chupete, para integrarlo en tu programa (x)Harbour, y por programa (x)Harbour entendamos CUALQUIER programa que use este compilador, ya sea en modo consola, o para Windows hecho con Xailer, MiniGUI o FiveWin, Sergey ha creado una clase, la cual te la entrega con todo y el código fuente en un  .PRG y un archivo de cabecera .CH, basta con agregar este archivo a tus programas (x)Harbour y la integración con FastReport está hecha.&lt;br /&gt;&lt;br /&gt;Para usar FastReport en tu programa (x)Harbour, primero hay que crear la clase, la cual carga el DLL y luego hay que configurarlo para trabajar en el idioma que desees:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;oFrPrn := frReportManager():new()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Los idiomas en FastReport se configuran a través de un archivo en XML, FastReport viene con 32 archivos de configuración de idioma:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;oFrPrn:LoadLangRes("spanish.xml")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El idioma configurado será valido para la interfaz del diseñador, del motor de vistas previas y de los diálogos para la exportación de los informes. En productos como List &amp;amp; Label, los módulos de traducción de idioma te los venden por separado, y te cobran por cada idioma que quieras manejar, en FastReport están incluidos sin costo adicional.&lt;br /&gt;&lt;br /&gt;Una vez configurado FastReport, entonces podemos elegir entre diseñar un informe nuevo, visualizar uno ya diseñado, o modificarlo.&lt;br /&gt;&lt;br /&gt;Si queremos activar el diseñador visual, para hacer un informe nuevo, basta con hacer:&lt;br /&gt;&lt;br /&gt;oFrPrn:DesignReport()&lt;br /&gt;&lt;br /&gt;y aparece el diseñador en una ventana por separado:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Si queremos modificar un reporte previamente hecho, hacemos:&lt;br /&gt;&lt;br /&gt;oFrPrn:LoadFromFile("archivo.fr3")&lt;br /&gt;oFrPrn:DesignReport()&lt;br /&gt;&lt;br /&gt;Y finalmente para visualizar un informe hacemos:&lt;br /&gt;&lt;br /&gt;oFrPrn:LoadFromFile("archivo.fr3")&lt;br /&gt;oFrPrn:ShowReport()&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;El diseñador de informes es 100% configurable, tanto con respecto a la forma de obtener los datos, que pueden ser DBF, ADT, o SQLs via ADO, también puedes añadir tus propias constantes y fórmulas, una cosa increíble de FastReport es que puede llamar a una función contenida en tu EXE.... así como lo lees, tu puedes escribir una función en (x)Harbour, compilarla en tu programa, y FastReport puede llamarla, ejecutarla y obtener el resultado para incluirlo en el informe al momento de la vista previa.&lt;br /&gt;&lt;br /&gt;Lo mas complejo y desde mi punto de vista lo mas importante para aprovechar al máximo FastReport, es aprender como utilizar el diseñador visual, el cual es muy completo y no le pide nada a productos como Crystal o List&amp;amp;Labels, el manual del diseñador son mas de 300 páginas y en él vienen perfectamente documentados el uso de todas las características del diseñador, tenerlo a mano en los primeros pasos con el producto es muy necesario, de ser posible lo recomendable es tratar de leerlo previamente antes de comenzar a aventurarnos a hacer nuestros propios informes, tengo que admitir que el grado de complejidad que se puede lograr en un informe es bastante alto.&lt;br /&gt;&lt;br /&gt;Todo lo contrario en cuanto a voluminosidad es el manual del programador: es de tan solo 50 páginas, pero en esas 50 páginas son oro molido para el desarrollador porque vienen documentados absolutamente todos los métodos, eventos y propiedades del objeto FastReport para su manipulación desde tu código fuente.&lt;br /&gt;&lt;br /&gt;Hablemos un poco ahora del diseñador, el cual es "basado en bandas", cada banda corresponde a una parte del informe, la cabecera es una banda, el cuerpo es una banda, y el pie de página es otra banda, puedes agregar todas las bandas que quieras, por otro lado FastReport sabe perfectamente como hacer informes Maestro-detalle, con tablas DBF relacionadas, vamos, se entiende con los DBFs y ADTs de manera extraordinaria:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr9.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Es importante tocar el tema de como se alimentan los datos tanto al diseñador como al motor de vista previa, lo cual se hace mediante el método ::SetWorkArea() de la propia clase:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;USE Customer SHARED NEW&lt;br /&gt;SET INDEX TO CustA, CustB&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;oFrPrn:SetWorkArea(&lt;span style="font-weight: bold;"&gt;"customer"&lt;/span&gt;,1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Asignar a través de este método el "Alias" de la tabla DBF o ADT al objeto FastReport cumple con 2 funciones: La primera es cuando llamas al diseñador de informes a través del método ::DesignReport(). En el diseñador visual la estructura de la base de datos aparece para que puedas seleccionar los campos visualmente para integrarlos en el diseño del informe:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr11.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Y al mismo tiempo el hecho de asignar el alias al reporte, le indica al motor de vista previa, LOS DATOS A IMPRIMIR, el motor de vista previa tomará los datos del área de trabajo y los pondrá en el informe a presentar, por esta razón tu puedes organizar los datos de la forma en que mas te convenga, ya sea indexados, filtrados, con un Scope, etc.&lt;br /&gt;&lt;br /&gt;También es posible asignar mas de un solo "alias" al mismo informe, con sus repectivas relaciones previamente establecidas por código para lograr reportes aún mas complejos que vinculen datos de mas de una sola tabla.&lt;br /&gt;&lt;br /&gt;Esta técnica también es válida para alimentar al infomre trayendo datos vía ADO y SQL y con los DataSets de Xailer (puedes generar informes a partir de un DataSet de Xailer sin importar sobre que base de datos trabaje), y para rizar el rizo, puedes definir tu mismo la manera en que se alimenta el informe con los datos, por ejemplo, cuando generas un informe a partir de un array, tu le puedes "enseñar" a FastReport la manera en que tiene que moverse sobre los elementos del array para ponerlos en el informe esto se hace por medio del método ::SetUserDataSet(), y FastReport generá un informe a partir de un array generado por tu programa, aquí un ejemplo de la función Directory():&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr10.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;FastReport también te permite generar gráficas de negocios a partir de los datos del informe:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr7.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;También puedes diseñar etiquetas, imprimir códigos de barra y añadir imágenes a tus informes tales como fotografías, logos, etc. También puedes hacer reportes para formatos pre-impresos como facturas o formularios, y hasta diseñar un informe por programa, tal como lo harías con un objeto Report de Xailer o de FiveWin.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr8.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;El motor de vista previa se cuece aparte, los informes los presenta de manera perfecta, incluso con miniaturas como lo hace por ejemplo el Acrobat Reader cuando te muestra un PDF con varias  páginas:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr4.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Desde el motor de vista previa también es posible exportar el informe a 13 formatos distintos, puedes generar un informe para impresora de matriz de puntos, pero también para: Excel, Word, PDF, Imagenes (BMP, JPG, GIF, TIFF), Txt, XML, RTF, HTML, etc.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr5.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Las exportaciones son PERFECTAS con donde las mires, en el caso de la exportación a Excel la exportación es hecha celda por celda, hasta el mas mínimo detalle.&lt;br /&gt;&lt;br /&gt;FastReport tiene su propio cliente de correo electrónico, lo que te permite enviar el informe por correo desde el motor de vista previa en cualquier formato de los contemplados en la exportación:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr6.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Otra característica "peligrosa" pero que alguna vez ya un cliente me la había pedido, es la capacidad de modificar el reporte DESPUES de generado, esta característica se puede anular por su puesto desde la configuración del informe desde tu programa:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/fr3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;A diferencia de otros generadores de informes, no es necesario pasar por la vista previa para imprimir o exportar un informe, puedes enviar un informe directamente a la impresora y en el caso de la exportación, todos los componentes de FastReport son manipulables a nivel individual, por ejemplo puedes hacer envíos masivos de correo a partir de los informes generados por FastReport, usando el mismo cliente de correo del producto.&lt;br /&gt;&lt;br /&gt;Yo he aprovechado esta capacidad para hacerme un pequeño programa con Xailer para publicación en internet de los informes generados por FastReport, &lt;a href="http://www.ciber-tec.d2g.com/frh/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;haz click aquí &lt;/span&gt;&lt;/a&gt;para ver los informes publicados en web.&lt;br /&gt;&lt;br /&gt;Me tomé la libertad de descargar de la web de Sergey los ejemplos de FastReport para Xailer y FiveWin y generar un demo listo para funcionar, puedes descargarlos de aquí:&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.ciber-tec.d2g.com/frhdemoxailer.zip" target="_blank"&gt;Ejemplo con Xailer&lt;/a&gt;&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.ciber-tec.d2g.com/fastreports.rar" target="_blank"&gt;Ejemplo con FiveWin&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ciber-tec.d2g.com/frh/" target="_blank"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Ejemplo en Internet&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Simplemente descarga los archivos comprimidos, desempácalos en cualquier directorio y ejecuta el programa EXE incluído, los ejemplos ya vienen construidos, pero también se ha incluido el código fuente del programa de ejemplo tanto del proyecto Xailer y como de FiveWin.&lt;br /&gt;&lt;br /&gt;¿ Y cuanto cuesta todo este poder ?, pues solo 300€, realmente un regalo, tomando en cuenta que no hay que pagar por la distribución, tu compras una sola vez tu licencia OEM de FastReport para desarrollador y puedes distribuir libremente la DLL con todos tus desarrollos. Solo para darte una idea, la versión mas básica de List&amp;amp;Label cuesta $ 725.00 USD y Crystal Reports 10 Developer cuesta $995.00 USD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1116669151012632678?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1116669151012632678/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1116669151012632678' title='19 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1116669151012632678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1116669151012632678'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/05/fastreport-desde-rusia-con-amor-para.html' title='FastReport.... Desde Rusia con amor para xHarbour'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-185708289965385292</id><published>2009-05-08T01:00:00.003-05:00</published><updated>2009-05-08T01:00:06.314-05:00</updated><title type='text'>Informática Móvil: El problema de la energía.</title><content type='html'>Hasta aquí hemos visto a groso modo los distintos dispositivos y tecnologías para llevar toda nuestra información "a cuestas" cuando estamos fuera de nuestro centro trabajo.&lt;br /&gt;&lt;br /&gt;Todos estos "gadgets" (el NetPC, la LapTop, el teléfono móvil y el router 3G) son maravillosos, pero presentan una "pequeña" falla de diseño...... requieren energía para trabajar, y lo que es peor, tienen tendencia a quedarse sin ella conforme los vas usando.&lt;br /&gt;&lt;br /&gt;Como no hemos podido meter aún un átomo de plutonio y una central nucleoeléctrica en miniatura dentro de una batería y aun estamos muy lejos de lograrlo, entonces tendremos que tirar de la tecnología de alimentación eléctrica con la que contamos actualmente.&lt;br /&gt;&lt;br /&gt;En muchos sitios te ofrecen "internet gratis", muchas cafeterías y restaurantes te ofrecen el servicio como "gancho" para atraer mas clientes, aún mas, la internet está presente aún en la calle, por ejemplo: en &lt;a href="http://www.nycwireless.net/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Nueva York&lt;/span&gt;&lt;/a&gt; todos los parques públicos tienen servicio de Internet inalámbrica gratis, incluso hay webs que promueven la instalación de HotSpots para los habitantes de la ciudad.&lt;br /&gt;&lt;br /&gt;Muchos países y ciudades toman conciencia de la necesidad de estar conectados, sobre todo últimamente en América Latina. En mi último viaje a Sudamérica me encontré con esta grata sorpresa adentro del metro de Santiago de Chile y no pude resistirme a hacerle una foto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/wifichile.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Y en el barrio de Polanco en el México D.F. tienes WiMax gratis con cobertura sobre las 12 manzanas que tiene ese lugar.&lt;br /&gt;&lt;br /&gt;Peeeero, mucha WiFi, mucha WiMax, pero energía eléctrica MUY POCA.&lt;br /&gt;&lt;br /&gt;Supongo que poner contactos de corriente eléctrica a diestra y siniestra en los restaurantes los convertiría en la oficina fija de mas de uno, a los únicos que no parece importarles eso es a la cadena Starbuck's, en todos sus locales tienes Internet gratis y además tienes contactos eléctricos (y hasta dos) en todas y cada una de las mesas.&lt;br /&gt;&lt;br /&gt;¿ Haz estado en algún aeropuerto últimamente ?&lt;br /&gt;&lt;br /&gt;Casi todos los aeropuertos en México ofrecen conexión WiFi a Internet, pero intenta localizar un enchufe para cargar la computadora..... simplemente NO LOS HAY y los pocos que llegan a haber o no sirven o bien ya los está usando otra persona.&lt;br /&gt;&lt;br /&gt;Eso ha presentado estupendas oportunidades para quien las sepa aprovechar, en mi último viaje por Estados Unidos hice una escala en el aeropuerto de Miami, ahí, la empresa Samsung tiene "kioskos" de carga gratuitos para poner a cargar ya sea tu teléfono o bien tu laptop, a cambio solo tienes que ver algún modelito que te exhiben en el kiosko y recordar que Samsung "patrocina" las cargas gratis:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/samsungcharge.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;En Colombia en el aerouerto El Dorado de Bogotá encontré sitios de carga grautitos que están específicamente puestos ahí para ese propósito, ¡¡¡¡ muy bien Colombia !!!!:&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/bogota2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Lugares como estos cada día son mas comunes en aeropuertos y estaciones de autobús, por la creciente necesidad que hay de "recargar" los aparatos.&lt;br /&gt;&lt;br /&gt;¿ Hay alguna forma de llevar energía suficiente cuando estamos en movimiento ?&lt;br /&gt;&lt;br /&gt;Sí, hay varias opciones que pueden ser tan baratas o tan caras dependiendo de la necesidad.&lt;br /&gt;&lt;br /&gt;La mas barata y mas común es el "inversor" de corriente para el coche:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/bdinversor.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Este apartito se enchufa en el encendedor (mechero) del coche y puede generar suficiente voltaje para alimentar una computadora portátil, con todo y su batería, y puedes hasta recargar el iPhone o el teléfono celular con tu cargador que usas normalmente en casa.&lt;br /&gt;&lt;br /&gt;Algunos de estos inversores incluyen además un puerto USB energizado para recargar "ese" dispositivo que se puede cargar por USB.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/bdusb.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Son muy baratos, los hay desde 30 o 40 dólares los mas sencillos hasta 150 dependiendo de la capacidad de voltaje de salida que quieras obtener.&lt;br /&gt;&lt;br /&gt;Si vas a comprar alguno de esos inversores de corriente asegúrate de que incluya también el adaptador para avión tipo EmPower:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/empower.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;En la mayoría de los aviones mas o menos modernos cuentas con un alimentador de este tipo colocado ya sea en el descansabrazos del asiento o bien debajo del mismo, si tienes un poco mas de suerte y si tu avión es mas moderno, entonces quizá venga equipado con algo como esto:&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/multipower.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Un adaptador universal de corriente para todos los tipos de enchufes que hay en el mundo mundial.&lt;br /&gt;&lt;br /&gt;¿ No es esto ya demasiado ?, ¿ para que quiero conectarme en un avión ?, si además los aviones no tienen conexión a internet..... Yo no estaría tan seguro, el año pasado &lt;a href="http://www.aa.com/content/amrcorp/pressReleases/2008_08/20_gogo.jhtml"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;American Airlines&lt;/span&gt;&lt;/a&gt; inició el servicio de conexión a Internet en algunos de sus vuelos de larga distancia dentro del territorio norteamericano, de momento es un principio que seguramente seguirán otras compañías aereas.&lt;br /&gt;&lt;br /&gt;Un inversor de buena marca, como Jensen, Black&amp;amp;Decker, Radio Shack, etc. con el adaptador EmPower y conector para el encendedor de coche no debe pasar, ya muy caro, de los 150 dólares.&lt;br /&gt;&lt;br /&gt;Y finalmente, la solución futurista que yo veo además que es la mas "verde" (ahora que lo verde está de moda), son estas fabulosas maletas para computadora portátil de la marca &lt;a style="font-weight: bold; font-style: italic;" href="http://www.voltaicsystems.com/"&gt;VOLTAIC&lt;/a&gt;:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/voltaic1.jpg" /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/voltaic2.jpg" /&gt;&lt;br /&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/voltaic3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Las mochilas están hechas de PET reciclado (el material de las botellas de refresco) y como puedes apreciar, llevan una celda fotovoltaica que además es reemplazable.&lt;br /&gt;&lt;br /&gt;No son nada baratas, el modelo mas barato cuesta 199.00 USD y genera suficiente energía para recargar pequeños aparatos como el teléfono celular, el iPhone, la PDA etc.&lt;br /&gt;&lt;br /&gt;La joya de la corona es la de la última foto, obviamente es el modelo mas caro (499.00 USD) es el modelo "Generator", viene equipada con una celda solar capaz de generar hasta 15 watts de electricidad, que es suficiente energía para mantener funcionando la mayoría de las computadoras portátiles.&lt;br /&gt;&lt;br /&gt;Un detalle interesante que tiene esta maleta, es que que aprovecha al maximo la exposición a los rayos solares, ya que viene equipada además con una batería recargable:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/voltaic4.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Puedes conectar tu Laptop directamente a la celda fotovoltaica, si hay suficiente luz solar, o bien, conectarte a la batería, la duración de la misma es de 2 horas aproximadamente y según las especificaciones se recarga totalmente en unas 5 horas.&lt;br /&gt;&lt;br /&gt;Estas son algunas opciones interesantes para tener energía eléctrica constante, aunque creo que la última opción ya es ir demasiado lejos ¿ no crees ?, pero la informática móvil lo justifica.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-185708289965385292?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/185708289965385292/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=185708289965385292' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/185708289965385292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/185708289965385292'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/05/informatica-movil-el-problema-de-la.html' title='Informática Móvil: El problema de la energía.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-2508585829499487289</id><published>2009-05-04T01:00:00.001-05:00</published><updated>2009-05-04T01:00:06.403-05:00</updated><title type='text'>Mas informática móvil.... conexión 3G</title><content type='html'>Ante los últimos acontecimientos sanitarios en la Ciudad de México, me he visto obligado a estar metido en casa los últimos 3 días.&lt;br /&gt;&lt;br /&gt;Sin embargo sigo conectado con el mundo y a muy buena velocidad gracias a la tecnología 3G de telefonía celular.&lt;br /&gt;&lt;br /&gt;Para bien o para mal, los que nos dedicamos a esto de la programación y los consultores tenemos que estar forzosamente conectados a Internet TODO EL TIEMPO, nos guste o no, Internet es el gran liberador, pero a la vez el gran esclavista, no entiendo como hace 10 años programábamos y éramos productivos sin internet y hoy no podemos vivir sin ella.&lt;br /&gt;&lt;br /&gt;El caso es que debido a mi trabajo como consultor, para mí es indispensable estar conectado en todo momento y a todas horas a internet.&lt;br /&gt;&lt;br /&gt;Como suelo salir mucho en viajes de trabajo para cursos o consultorías, sí hay varias cosas con respecto a internet que me j*den un rato cuando me hospedo en un hotel, por mas lujoso que este sea:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Que el hotel no tenga internet (Hotel que no tiene internet no merece que te hospedes en él)&lt;/li&gt;&lt;li&gt;Que la internet sea gratis, pero que la señal inalambrica sea mala y dentro de la habitación la señal sea malísima  (como sucede en el 90% de los casos, como no te vayas a la recepción o abras la puerta de la habitación no te conectas ni rezando)&lt;/li&gt;&lt;li&gt;Que te cobren un precio abusivo por el uso de la internet y que encima la señal inalambrica sea mala (la última que pagué: 12 € por 24 horas de conexión).&lt;/li&gt;&lt;/ol&gt;Por estas razones desde hace un par de años me apunté a los servicios de conexión a internet de mi compañía celular, primero a los servicio GPRS y EDGE y mas recientemente, de unos 18 meses a la fecha, a los servicios 3G de banda ancha.&lt;br /&gt;&lt;br /&gt;Y se acabaron los problemas, tengo internet de banda ancha en mi teléfono celular (1.5 mbps de bajada y 512 kbps de subida), consulto y contesto mi correo electrónico "en movimento", llevo Skype, Messenger, y Navegación Web en mi teléfono y lo mejor de todo: puedo usar mi teléfono como módem conectado a mi computadora portátil sin perder velocidad de acceso a Internet.&lt;br /&gt;&lt;br /&gt;Mas de una vez me ha tocado hacer algún viaje en autobús o en coche de varias horas, y poder ir conectado a internet con mi laptop es una gozada (la alimentación de energía es otro problema, pero lo trataremos en un artículo posterior).&lt;br /&gt;&lt;br /&gt;Claro que hay un precio a pagar, el costo de la conexión a internet vía celular SIN UN PAQUETE DE SERVICIOS DE DATOS es un suicidio para tu bolsillo, el costo por 1 Kbyte descargado es de aproximadamente 0.01 USD, descargar 1 Mbytes te puede costar unos 10.24 USD. He sabido de casos de gente que cuando salió el iPhone 3G en México que han tenido que pagar mas de 1,700 dólares de factura de telefonía celular por los famosos servicios de conexión a internet.&lt;br /&gt;&lt;br /&gt;Por ello las compañías celulares han armado "paquetes" de conexión a internet por precios "mas o menos" razonables, por ejemplo en México Telcel y Iusacell te ofrecen un paquete de conexión "ilimitada" a internet por unos 30.00 dólares al mes adicionales a tu contrato de servicios telefónicos. Puse la palabra "ilimitada" entre comillas porque como en todo hay que leer las "letras pequeñas del contrato", que dicen que la velocidad de conexión será la maxima disponible hasta llegar a descargar 3 Gbytes de información, llegando al límite de descarga la velocidad de navegación se degradará hasta 128 kbps hasta que inicie el siguiente período de facturación  y la velocidad se reestablezca a la máxima disponible, pero bueno, he visto que todas las compañías celulares establecen el límite de alta velocidad entre 3 y 5 Gbytes.&lt;br /&gt;&lt;br /&gt;También puedes contratar los servicios de intenet de banda ancha en la modalidad "prepago" es decir con recarga de saldo, el precio varía entre los proveedores pero ronda sobre $ 2.50 USD por día de conexión en México, peeeero......&lt;br /&gt;&lt;br /&gt;Si tu teléfono no es 3G o no puede funcionar como módem entonces tendrás que comprar un modem 3G, que puede venir en distintas presentaciones: puede ser una tarjeta Express, PCMCIA o USB, el precio del modem es de alrededor de $ 150.00 USD.&lt;br /&gt;&lt;br /&gt;¿ Merece la pena el gasto ? ¡ claro que sí !, la informática movil es el futuro, y personalmente la tecnología 3G me ha ayudado mucho  en mi trabajo por ejemplo cuando voy a dar un curso a un sitio donde no hay conexión a Internet, o bien, cuando por alguna razón se interrumpe el servicio ADSL en la oficina (alguna vez ha pasado), de hecho este post lo estoy escribiendo desde mi casa en estos días de encierro forzoso (quité el ADSL de casa... si nunca estoy en casa... ¿ porqué pagar por el servicio de internet ?, mejor usar el del móvil, que siempre lo traigo conmigo).&lt;br /&gt;&lt;br /&gt;¿ Que sigue ?, bueno, pues viene la tecnología 3.5 y 4G que prometen velocidades de acceso mayores a internet y los "routers 3G", que ya se pueden comprar hoy en día de marcas tan reconocidas como LinkSys, DLink o tan desconocidas como las chinas &lt;a href="http://www.cradlepoint.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Cradlepoint&lt;/span&gt;&lt;/a&gt;, ZTE y &lt;a href="http://www.huawei.com/"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Huawei&lt;/span&gt;&lt;/a&gt;, con estos routers además de tener movilidad, puedes compartir la conexión a internet con otros usuarios de manera alámbrica o inalambrica, estos routers tienen su propia batería, como si fueran un teléfono celular y basta con que les conectes tu modem 3G y ellos hacen el restro del trabajo para conectarse. Estoy pensando muy seriamente instalar uno de estos routers en el coche para ver que cosillas puedo hacer con el Smartphone, la LapTop, la NetPC y hasta con el navegador GPS, ahora sí, en una verdadera oficina movil.... jejeje.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-2508585829499487289?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/2508585829499487289/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=2508585829499487289' title='8 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2508585829499487289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2508585829499487289'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/05/mas-informatica-movil-conexion-3g.html' title='Mas informática móvil.... conexión 3G'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-4924255195618924899</id><published>2009-04-29T18:58:00.004-05:00</published><updated>2009-04-30T11:37:36.104-05:00</updated><title type='text'>Aviso sobre contingencia de Salud.</title><content type='html'>A todos nuestros clientes y amigos.&lt;br /&gt;&lt;br /&gt;Les informamos que debido a la reciente contingencia de salud decretada por nuestras autoridades, los siguientes cursos programados para las próximas semanas en nuestras instalaciones quedan suspendidos, hasta nuevo aviso:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Curso de ADO con xHarbour&lt;/span&gt; ( 4 y 5 de Mayo)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Curso de programación para Internet con xHarbour&lt;/span&gt; ( 7 y 8 de Mayo)&lt;/li&gt;&lt;/ul&gt;Los cursos que quedan pendientes de confirmar son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Curso básico de Xailer&lt;/span&gt; ( 13, 14 y 15 de Mayo)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Curso avanzado de Xailer&lt;/span&gt; ( 21 y 22 de Mayo)&lt;/li&gt;&lt;/ul&gt;Confirmaremos la celebración de estos dos últimos cursos de acuerdo a como las autoridades santiarias vayan dando mas información, no descartamos la suspensión de estos eventos, pero dependerá de las información que tengamos el día 6 de Mayo.&lt;br /&gt;&lt;br /&gt;Nuestras oficinas se encuentran laborando en sus horarios normales y los servicios on-site de Advantage Database Server se siguen ofreciendo sin cambio alguno.&lt;br /&gt;&lt;br /&gt;Si ustedes tienen reservados lugares para los cursos que se suspenderán, favor de comunicarse a nuestra oficina (01 55 5560 0168) para informarse sobre las nuevas fecha o en su defecto para la devolución de sus pagos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-4924255195618924899?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/4924255195618924899/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=4924255195618924899' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4924255195618924899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/4924255195618924899'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/04/aviso-sobre-contingencia-de-salud.html' title='Aviso sobre contingencia de Salud.'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-5664501242609719021</id><published>2009-04-24T15:02:00.003-05:00</published><updated>2009-04-24T19:18:07.644-05:00</updated><title type='text'>OLE con Office y xHarbour de la manera fácil</title><content type='html'>Una de las mejores características de xHarbour es el soporte nativo a OLE (Object Linking and Embeding) el cual nos permite tener acceso a muchos componentes interesantes como librerías de terceros como Funcky, el acceso a distintos formatos de bases de datos con ADO (ActiveX Data Objects) y el acceso a los componentes de Office de Microsoft, entre otros.&lt;br /&gt;&lt;br /&gt;La conectividad con Office hoy en día es fundamental, nuestros programas tienen que hablarse con Excel, con Word o con el Outlook, y es aquí donde entra en acción OLE.&lt;br /&gt;&lt;br /&gt;Como  es materialmente imposible saberse todos los objetos, métodos y propiedades de Excel o de Word, existe una manera fácil de saber con exactitud qué metodos y propieades utilizar para hacer determinados trabajos con estos productos.&lt;br /&gt;&lt;br /&gt;La forma mas fácil de hacerlo, es utilizar el grabador de "macros" tanto de Word, como de Excel.&lt;br /&gt;&lt;br /&gt;El grabador de macros lo que hace es ir "atrapando" todas las acciones y pulsos de teclas durante determinadas operaciones, hasta que detengas la grabación de la macro.&lt;br /&gt;&lt;br /&gt;Una vez detenida la grabación de la "macro", todas las operaciones realizadas se "traducen" a un código fuente en Visual Basic for Applications, y a partir de ese código fuente es muy fácil traducirlo a código de OLE con (x)Harbour, con esto, nuestro programa puede hacer las mismas operaciones que grabamos en la macro.&lt;br /&gt;&lt;br /&gt;Hasta aquí todo parece estar bien, pero el problema viene porque muchos métodos y propiedades utilizan constantes predefinidas (que están en archivos .h normalmente) aún en lo manuales de los objetos OLE de Excel se hace mención a dichas variables PERO NO A SU VALOR.&lt;br /&gt;&lt;br /&gt;Veamos el ejemplo que me hizo escribir este artículo:&lt;br /&gt;&lt;br /&gt;Supongamos que yo quiero poner bordes en un rango de celdas pero no sé como hacerlo, entonces creo una macro, selecciono un rango de celdas, oprimo los botones de la barra que dibujan los bordes, y listo, tengo mi macro, dentengo el grabador de macros y luego edito la macro graba y obtengo algo como esto:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;    Selection.Borders(xlDiagonalDown).LineStyle = xlNone&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    Selection.Borders(xlDiagonalUp).LineStyle = xlNone&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    With Selection.Borders(xlEdgeLeft)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .LineStyle = xlContinuous&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .ColorIndex = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .TintAndShade = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .Weight = xlThin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    End With&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    With Selection.Borders(xlEdgeTop)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .LineStyle = xlContinuous&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .ColorIndex = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .TintAndShade = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .Weight = xlThin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    End With&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    With Selection.Borders(xlEdgeBottom)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .LineStyle = xlContinuous&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .ColorIndex = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .TintAndShade = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .Weight = xlThin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    End With&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    With Selection.Borders(xlEdgeRight)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .LineStyle = xlContinuous&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .ColorIndex = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .TintAndShade = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .Weight = xlThin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    End With&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    With Selection.Borders(xlInsideVertical)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .LineStyle = xlContinuous&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .ColorIndex = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .TintAndShade = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .Weight = xlThin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    End With&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    With Selection.Borders(xlInsideHorizontal)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .LineStyle = xlContinuous&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .ColorIndex = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .TintAndShade = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        .Weight = xlThin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    End With&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Con algunos cambios mínimos, como por ejemplo cambiar los "." por ":" y los "=" por ":=" y algunas cosillas mas y este código en VBA puede ejecutarse desde xHarbour.&lt;br /&gt;&lt;br /&gt;El problema es que hay un montón de constantes predefinas de las cuales desconozco el valor y que son:&lt;br /&gt;&lt;ul style="font-family: courier new;"&gt;&lt;li&gt;xlDiagonalDown &lt;/li&gt;&lt;li&gt;xlDiagonalUp        &lt;/li&gt;&lt;li&gt;xlNone             &lt;/li&gt;&lt;li&gt;xlEdgeLeft          &lt;/li&gt;&lt;li&gt;xlEdgeTop          &lt;/li&gt;&lt;li&gt;xlEdgeBottom     &lt;/li&gt;&lt;li&gt;xlEdgeRight         &lt;/li&gt;&lt;li&gt;xlContinuous       &lt;/li&gt;&lt;li&gt;xlInsideVertical    &lt;/li&gt;&lt;li&gt;xlInsideHorizontal &lt;/li&gt;&lt;/ul&gt;Encontrar el valor de dichas constantes en el MSDN (Microsoft Developers Network) te puede llevar muchas horas porque en mucha documentación se hace referencia al nombre, pero no al valor.&lt;br /&gt;&lt;br /&gt;Visto lo visto, decidí investigar un poco por internet la manera de obtener dichos valores, y me encontré con el método mas tonto de hacerlo y no solo para estas constantes sino para TODAS las constantes que en un momento dado se pueden llegar a necesitar..... ¿ porqué no se me ocurrió antes ?, dicen por ahí que las soluciones mas simples a los problemas suelen ser siempre las correctas.&lt;br /&gt;&lt;br /&gt;La receta:&lt;br /&gt;&lt;br /&gt;Crear una nueva macro en excel, y escribir lo siguiente en el editor de código:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;Sub test3()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlNone&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlContinuous&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlMedium&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlAutomatic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlDiagonalDown&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlDiagonalUp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlEdgeLeft&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlEdgeTop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlEdgeBottom&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlEdgeRight&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlInsideVertical&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; MsgBox xlInsideHorizontal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; End Sub&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La macro simplemente consiste en desplegar en un MsgBox el valor de la constante buscada, y listo, luego con los valores devueltos podemos hacer las constantes predefinidas equivalentes en xHarbour:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlDiagonalDown     5 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlDiagonalUp       6 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlNone             -4142 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlEdgeLeft         7 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlEdgeTop          8 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlEdgeBottom       9 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlEdgeRight        10 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlContinuous       1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlInsideVertical   11 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlInsideHorizontal 12 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#DEFINE xlThin        &lt;/span&gt;             2&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Y listo, con esto podemos usar el código de las macros generadas por excel en nuestro programa xHarbour.&lt;br /&gt;&lt;br /&gt;Mejor... imposible !!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-5664501242609719021?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/5664501242609719021/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=5664501242609719021' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5664501242609719021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/5664501242609719021'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/04/ole-con-office-y-xharbour-de-la-manera.html' title='OLE con Office y xHarbour de la manera fácil'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1125127038634862289</id><published>2009-04-19T14:46:00.006-05:00</published><updated>2009-04-19T18:57:45.129-05:00</updated><title type='text'>Informática Móvil: LapTop VS NetPc VS Pocket Pc</title><content type='html'>Informática o computación móvil, el término de moda, vamos a hablar un poco de ello en este post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;LapTop VS NetPC:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LapTop:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como comenté en algún artículo anterior, yo no utilizo una computadora de escritorio, porque simplemente no es práctica para mí, yo necesito movilidad y poder de cómputo portátil por mi tipo de trabajo como consultor y tengo que llevar a cuestas TODO lo que he desarrollado. Desde hace 10 años aproximadamente sólo utilizo una computadora portátil del tipo Notebook.&lt;br /&gt;&lt;br /&gt;Mi equipo actual de trabajo es una Toshiba Satellite A215 como esta:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/toshiba215.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Mejorada con un cambio de disco duro a 2oo GBytes, y con la memoria ampliada a 4 Gbytes de RAM.&lt;br /&gt;&lt;br /&gt;Aunque mi próximo equipo "portatil" será esta bestia de HP:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/hphdx.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Este "monstruo" es la "laptop" gigante de HP, la Pavilion HDX, Intel Core 2 Extreme X7800, su monitor es de 20 pulgadas (sí leiste bien: VEINTE PULGADAS), tiene un teclado completo, incluyendo teclado numérico, y un control remoto multimedia infrarrojo, incluye toda la conectividad de siempre, LAN, WiFi, Bluetooth, CD BlueRay, sintonizador de TV HDMI (alta definición), cámara, micrófono, Windows Vista Ultimate de 64 bits, haaa y un discote duro de 400 Gbytes, pesa "solo" 7 Kilos y cuesta aprox. 3,000.00 USD.&lt;br /&gt;&lt;br /&gt;Pero dejando de lado los sueños guajiros, regresemos al tema:&lt;br /&gt;&lt;br /&gt;La portabilidad de los equipos de un arma de 2 filos, por un lado es buena, porque siempre llevas todo a mano, por otro lado es mala porque no te permite "desconectar" totalmente de las cosas de trabajo, hay que ver los problemas personales que he tenido en muchas vacaciones o fines de semana por traer la computadora como compañera, porque claro, nunca desconecto del todo del trabajo con lo cual, las vacaciones no se disfrutan tanto, ni yo, ni mis acompañantes.&lt;br /&gt;&lt;br /&gt;Sin embargo la "compu" siempre es útil en vacaciones, por ejemplo para buscar restaurantes para cenar, para leer las reseñas de los mismos, obtener direcciones, teléfonos, mapas, hacer reservaciones, buscar atracciones y visitas guiadas, si estás en el extranjero para comunicarte a casa, en unas vacaciones llevar una computadora te puede ahorrar mucho dinero y salvar de muchos problemas, y como siempre lo he dicho.... Hotel que no tiene internet, no merece la pena que te quedes en él.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NetPC:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ayer compré mi primer NetPC, una ACER One como esta:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/aceraspireone.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;La compré primero porque estaba super barata (menos de 500.00 USD) y en segundo porque me llamó muchísmo la atención su tamaño, su peso (1.26 kilos) y su capcidad: 1 GByte de memoria RAM y 160 GBytes de Disco duro, Windows XP Home, la pantalla es de 8.9 pulgadas (lo cual se te hace incómodo cuando estas acostumbrado a 2 monitores de 19 pulgadas), tiene conexión WiFi, LAN, 4 puertos USB, salida para un monitor externo y la batería con la sorpendente duración de casi 4 horas. No tiene CD pero le puedes poner uno externo por menos de 30 dólares.&lt;br /&gt;&lt;br /&gt;No la compré para trabajar en ella todos los días, está clarísimo, la compre como "complemento" de mi portatil actual, algo así como Batman y Robin, cuando no puedes contar con Batman, siempre puedes pedir ayuda a Robin.&lt;br /&gt;&lt;br /&gt;No pienso instalar absolutamente nada de cosas de trabajo en ella, si acaso el Office, la NetPc es para llevármela de vacaciones o usarla en frivolidades como por ejemplo chatear, navegar por internet un rato por la noche o los fines de semana, subastar en Ebay y poder estar conectado sin necesidad de estar "atado", leer mi correo y contestarlo,  conectarla al "AUX" del radio del coche para escuchar MP3 en un viaje y hasta usarla en un momento dado como navegador GPS, vamos las cosas no de trabajo para las que se puede usar una computadora ultra portátil.&lt;br /&gt;&lt;br /&gt;La cosa es: viaje de negocios o curso: me llevo la LapTop, vacaciones y ocio, me llevo la NetPC y adiós a los problemas en las vacaciones, como no llevo cosas de trabajo en la NetPC, pues me dedicaré a vacacionar sin estar desconectado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;NetPC vs Pocket PC:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pocket PC:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mi teléfono actual es un IPaq 900 Business Messenger:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/ipaq900.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Como su nombre lo indica es un "mensajero para negocios", lo prefiero contra un Blackberry, porque el simple hecho de que tiene Windows Mobile 6.0 y es totalmente compatible con mis otros 2 juguetes (la Lap y la Net)&lt;br /&gt;&lt;br /&gt;Lo uso como teléfono móvil, puedo enviar SMS muy rápido porque tiene un teclado completo, al ser un equipo "liberado" lo puedo usar con cualquier operador de telefonia celular GSM del mundo, de hecho cuando viajo a algún otro país por mas de 5 días, siempre compro una tarjeta SIM de prepago de algún operador local para estar siempre comunicado.&lt;br /&gt;&lt;br /&gt;Lo uso como agenda y directorio telefónico, cámara de fotos, y hasta como linterna con el flash de la cámara, realmente un "gadget" en toda la extensión de la palabra (creo que con un aparato de estos y una navaja a Suiza, Cerebro y su amigo Pinky hubieran conquistado el mundo).&lt;br /&gt;&lt;br /&gt;Por el lado de Internet, tiene correo electrónico con soporte de Hotmail, Outlook y POP3, por lo que puedo revisar mi correo en cualquier momento. Los otros programas, como en navegador de internet, o el messenger simplemente "apestan", pero con muy poco dinero y productos como Skype, Opera Mobile,  y IM+ for Skype las deficiencias de estos quedan totalmente superadas, algún otro software es necesario como por ejemplo un lector de News, o Google Maps que siempre son bienvenidos y que se pueden descargar sin costo desde internet.&lt;br /&gt;&lt;br /&gt;La conectividad a Internet en este equipo puede venir por 2 partes, por la tarjeta WiFi de 54 mbps que está integrada en el equipo o bien por la conexión 3G incluida en el teléfono (se recomienda contratar un plan de datos ilimitado con el operador de telefonía, de lo contrario las consecuencias se pueden pagar muy caras $$$$€€€€€), el teléfono a su vez, puede utilizarse como módem 3G y conectarlo por USB ya sea a la LapTop o bien a la NetPC, la velocidad de acceso a Internet, aun usandolo como módem no se degrada.&lt;br /&gt;&lt;br /&gt;La ventaja de esto es que si salgo a ver a un cliente o estoy atascado en el tráfico (cosa que ocurre demasiado seguido en la ciudad de México y mas ahora que estamos de obras por todos lados para el "Bicentenario"), es que puedo sacar mi teléfono, descargar mi correo, contestar lo que sea de urgencia,  y bueno, si paras en un Starbuck's o en algún otro lugar que tenga conexión a Internet  se pueden hacer algunas otras cosas que requiren internet de banda ancha, como por ejemplo, chatear mientras te tomas un café y sin necesidad de cargar con una computadora.&lt;br /&gt;&lt;br /&gt;Para unas vacaciones, simplemente conectas el teléfono a la NetPC o a la LapTop y puedes ir navegando por internet en el coche (obvio, tus acompañantes, tu no, tu debes ir conduciendo), esa es una de las ventajas de la tecnología 3G de banda ancha.&lt;br /&gt;&lt;br /&gt;El dispositivo también trae una antena GPS, con el programa adecuado y los mapas necesarios te ahorras tener que comprar un GPS por separado, el mismo teléfono te sirve.&lt;br /&gt;&lt;br /&gt;Y bueno, también utilizo el teléfono como iPod, le cargo la música y las películas en la tarjeta micro SD de 4 GBytes y lo puedo usar como dispositivo de entretenimiento en un viaje en avión, en autobus o tren, como tiene también conexión Bluetooth, puedes usar auriculares inalámbricos estéreo o bien si vas en el el coche, puedes conectar la salida de audio del teléfono al "AUX" del radio del coche.&lt;br /&gt;&lt;br /&gt;Pero ahora hablems del aspecto del desarrollo de aplicaciones en estos 2 dispositivos que nos presenta un reto interesante, en cuanto a movilidad se refiere.&lt;br /&gt;&lt;br /&gt;El precio de un dispositivo Windows Mobile (llámese como se llame) con conectividad via telefónica, o WiFi, puede sobrepasar tranquilamente los 800 dólares, hay Smartphones con Windows que cuestan mas que una LapTop de las mas simples , y casi lo doble que una NetPC.&lt;br /&gt;&lt;br /&gt;Si hablamos de desarrollar aplicaciones para dispositivos con Windows Mobile ó CE, yo tengo clarísimo que la mejor opción es hacer el desarrollo basado en Internet, por ejemplo una toma de inventarios en un almacén solo requeriría de dispositivos y antenas WiFi, la carga de los datos se haría mediante paginas Web que arrojan los resultados directamente a un servidor el cual va procesando la información conforme le va llegando, evitando con esto primero, tener que desarrollar un programa específico para el sistema operativo, segundo, tener que instalar dicho programa en cada dispositivo y tercero, después de recolectar los datos, tener que "sincronizar"  los dispositivos para descargar la información y posteriormente procesar dicha información mediante otro programa. Haciendo las cosas basados en una aplicación Web, se puede hacer todo en un solo paso y en caso de que el programa tenga modificaciones, no tienes que irlo instalado en todos los dispositivos uno a uno, tampoco neceistas ASP o PHP o algún otro producto de desarrollo para Internet un programita en xHarbour puede hacer el trabajo.&lt;br /&gt;&lt;br /&gt;La excepción al modelo anterior, sería por ejemplo la "autoventa" es decir, los vendedores que van levantando pedidos en los establecimientos comerciales de manera itinerante, como por ejemplo los vendedores de refrescos, cervezas, pan, etc. Ellos llevan dispositivos móviles que almacenan la información en el mismo dispositivo, y que posteriormente descargan a una computadora, para procesar los pedidos, aun con los precios actuales de los servicios de conexión a internet vía celular, para estos modelos lo ideal es tener un programa instalado en el dispositivo que almacene la información y sincronizar posteriormente, esto por motivos de costos.&lt;br /&gt;&lt;br /&gt;Y aquí es donde entra la NetPC en sustitución del PockePc.&lt;br /&gt;&lt;br /&gt;Primero, tenemos el aspecto del precio del dispositivo: Una NetPc cuesta mas o menos la mitad de lo que cuestan otros dispositivos móviles basados en Windows Mobile o CE, además incluyen varias opciones de conectividad (LAN, WiFi, Bluetooth), un dispositivo Windows Mobile, puede superar los 1,000 USD por el simple hecho de tener conectividad WiFi o lector de código de barras.&lt;br /&gt;&lt;br /&gt;Segundo, el desarrollo o la compra de una aplicación específica para dispostivos Windows Mobile, es mas cara que una aplicación para una PC común y corriente, cualquier aplicación comercial desarrollada para Windows puede correr en un NetPC, pero no en un PocketPc.&lt;br /&gt;&lt;br /&gt;Tercero, la capacidad de almacenamiento. En una PocketPC, el almacenamiento tanto de programas como de información está limitado a la memoria con que cuente el dispositivo. Si el dispositivo es "cerrado" es decir, sin capacidad de expansión, pues estás atado a ajustar tanto el programa como el almacenamiento a la capacidad del aparato en cuestión, si por el contrario la capacidad de almacenamiento de tu dispositivo es ampliable por ejemplo, si tienes un dispositivo que acepte tarjetas de memoria SD, entonces no tendrías problema, sin embargo la mayoría de los dispositivos para autoventa o tomas de inventario no son expandibles.&lt;br /&gt;&lt;br /&gt;Desde mi punto de vista, nos estamos aproximando a una era de especialización de los dispositivos móviles, vamos a dejar a los Smartphones y Pocke PC que evolucionen por su lado, y vamos a dejar a los NetPC que tomen el lugar que actualmente ocupan los PocketPC para el procesamiento de datos, desde el punto de vista económico la NetPC es mucho mas rentable que un PocketPC y son buenas noticias también para nosotros como desarrolladores de aplicaciones, no necesitamos comprar software para desarrollar con PocketPC, el que tenemos para la PC nos funciona.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1125127038634862289?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1125127038634862289/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1125127038634862289' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1125127038634862289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1125127038634862289'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/04/informatica-movil-laptop-vs-netpc-vs.html' title='Informática Móvil: LapTop VS NetPc VS Pocket Pc'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-2458331815181217698</id><published>2009-04-15T15:04:00.002-05:00</published><updated>2009-04-15T15:37:26.442-05:00</updated><title type='text'>Sybase crea nuevo foro de soporte para xHarbour</title><content type='html'>Estupendas noticias para todos aquellos que usamos &lt;a href="http://www.ciber-tec.com/ads.htm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Advantage Database Server&lt;/span&gt;&lt;/a&gt; en nuestros desarrollos con (x)Harbour.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.advantagedatabase.com"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Sybase&lt;/span&gt;&lt;/a&gt;, los nuevos dueños de Advantage Database Server, han creado un nuevo foro de soporte para (x)Harbour.&lt;br /&gt;&lt;br /&gt;Después de insistir bastante por parte de muchos usuarios de ADS con (x)Harbour, Sybase iAnywhere ha cedido a la presión y nos ha regalado un lugar en su grupo de noticias (newsgroup) para soportar ADS con xHarbour.&lt;br /&gt;&lt;br /&gt;Tomando en cuenta que el cliente ADS para (x)Harbour fue creado por los mismos programadores de xHarbour, es un gran avance por parte de Sybase el reconocer a (x)Harbour como una plataforma seria y creciente de desarrollo.&lt;br /&gt;&lt;br /&gt;Para acceder a los foros de Advantage Database Server con (x)Harbour, puedes utilizar un "news reader" como el Outlook Express o el Mozilla Thunderbird, el nombre del servidor es:&lt;br /&gt;&lt;br /&gt;devzone.advantagedatabase.com&lt;br /&gt;&lt;br /&gt;No requiere autenticación y ahi puedes encontrar grupos en distintos idiomas y lenguajes de programación para Advantage Database Server.&lt;br /&gt;&lt;br /&gt;También puedes acceder a la página de soporte de ADS para realizar la conexión con el servidor de noticias en &lt;a href="http://devzone.advantagedatabase.com"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;http://devzone.advantagedatabase.com.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y finalmente si quieres tener acceso por web a los foros la pagina &lt;a href="http://delphi.newswhat.com/forumlistgroups?area=Advantage%20Database"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Newswhat&lt;/span&gt;&lt;/a&gt; te ofrece un acceso directo a los foros de ADS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-2458331815181217698?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/2458331815181217698/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=2458331815181217698' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2458331815181217698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/2458331815181217698'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/04/sybase-crea-nuevo-foro-de-soporte-para.html' title='Sybase crea nuevo foro de soporte para xHarbour'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1244358181689760599</id><published>2009-04-08T18:12:00.002-05:00</published><updated>2009-04-08T18:13:59.550-05:00</updated><title type='text'>De vacaciones de Pascua</title><content type='html'>Les informamos que nuestras oficinas estarán cerradas del Jueves 9 al lunes 13 de abril del presente.&lt;br /&gt;&lt;br /&gt;Volveremos a prestar nuestros servicios a partir del día 13.&lt;br /&gt;&lt;br /&gt;Felices pascuas !!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-1244358181689760599?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/1244358181689760599/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=1244358181689760599' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1244358181689760599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/1244358181689760599'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/04/de-vacaciones-de-pascua.html' title='De vacaciones de Pascua'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-7879890854367950290</id><published>2009-04-04T16:03:00.002-06:00</published><updated>2009-04-04T16:28:23.368-06:00</updated><title type='text'>Nuevo "servicio" XBase Guru</title><content type='html'>Gracias a nuestro proveedor de estadísticas &lt;a style="font-weight: bold; font-style: italic;" href="http://www.motigo.com"&gt;MOTIGO, &lt;/a&gt;puedo saber muchas cosas interesantes sobre la gente que visita Objeto Persistente.&lt;br /&gt;&lt;br /&gt;Una de las características mas interesantes de MOTIGO es su sección de &lt;a style="font-weight: bold; font-style: italic;" href="http://webstats.motigo.com/s?tab=1&amp;amp;link=4&amp;amp;id=4395326"&gt;FUENTES DE TRAFICO&lt;/a&gt;, donde me da un listado de las consultas que mis lectores hacen en Google y otros buscadores y que finalmente los traen a Objeto Persistente.&lt;br /&gt;&lt;br /&gt;He visto que muchas de esas preguntas se repiten semana tras semana y no son difíciles de constestar, así que he decidido abrir un nuevo servicio llamado &lt;a style="font-weight: bold; font-style: italic;" href="http://www.xbaseguru.blogspot.com"&gt;Xbase Guru&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En este nuevo blog, voy a responder a las preguntas MAS INTERESANTES y MAS FRECUENTES que me llegan por medio de las fuentes de tráfico de Motigo sobre programación en Xbase, ya sea Clipper, Xailer, (x)Harbour, FiveWin, y en general las preguntas que entren dentro de mi ámbito de "expertise".&lt;br /&gt;&lt;br /&gt;No voy a dar un curso, no voy a explicar como hacer sistemas completos ni voy a explicar nada a detalle, tampoco voy a responder preguntas particulares ni voy a enviarles respuestas privadas a nadie,  simplemente te daré las pistas para que tu continúes tu investigación y que puedas soluciona tu problema de programación, como lo saben todos los que han tomado curso conmigo: &lt;span style="font-style: italic;"&gt;yo no les regalo pescados, yo les enseño a pescar.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por supuesto hay una sección de comentarios (moderada) para cada comentario en los cuales podrás pedir mas información.&lt;br /&gt;&lt;br /&gt;No prometo que el blog se actualice diario ni mucho menos, pero sí que cada semana habrá preguntas contestadas, quizá 3 o mas de un solo golpe.&lt;br /&gt;&lt;br /&gt;Esta semana las preguntas contestadas son:&lt;br /&gt;&lt;br /&gt;Convertir DBF a XLS con Clipper 5.x&lt;br /&gt;Soporte de SQLite con Xailer&lt;br /&gt;Documentación de xHarbour&lt;br /&gt;Lenguajes de programación mas usados&lt;br /&gt;Crack para Xailer&lt;br /&gt;&lt;br /&gt;Si tu quieres preguntar algo y quieres que responda en &lt;a style="font-weight: bold; font-style: italic;" href="http://www.xbaseguru.blogspot.com"&gt;Xbase Guru&lt;/a&gt;, simplemente ve a Google, o a cualquier buscador y teclea lo que quieras preguntar, y si en las respuestas sale un link a OBJETO PERSISTENTE simplemente haz click ahí y listo, tu pregunta me llega y yo la contesto.&lt;br /&gt;&lt;br /&gt;Espero que este nuevo servicio sea de su agrado, visitanos en &lt;a href="http://www.xabaseguru.blogspot.com"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;www.xbaseguru.blogspot.com&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-7879890854367950290?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/7879890854367950290/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=7879890854367950290' title='3 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7879890854367950290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/7879890854367950290'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/04/nuevo-servicio-xbase-guru.html' title='Nuevo &quot;servicio&quot; XBase Guru'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-6306737011217611589</id><published>2009-03-30T14:07:00.005-06:00</published><updated>2009-03-30T15:19:54.799-06:00</updated><title type='text'>Prodigy Infinitum aumenta su velocidad, Buenas noticias para Advantage Database Server</title><content type='html'>El servicio de Internet ADSL de Banda Ancha de Telmex en México: Prodigy Infinitum va a aumentar su velocidad de acceso a la red en los próximos días, las nuevas velocidades serán:&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="5" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Infinitum 512&lt;/td&gt;&lt;td&gt;Anterior&lt;/td&gt;&lt;td&gt;Nueva&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Vel. Bajada&lt;/td&gt;&lt;td&gt;512 kbps&lt;/td&gt;&lt;td&gt;784 kbps&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Vel. Subida&lt;/td&gt;&lt;td&gt;128 kbps&lt;/td&gt;&lt;td&gt;256 kbps&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="1" cellpadding="5" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Infinitum 1000&lt;/td&gt;&lt;td&gt;Anterior&lt;/td&gt;&lt;td&gt;Nueva&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Vel. Bajada&lt;/td&gt;&lt;td&gt;1024 kbps&lt;/td&gt;&lt;td&gt;1536 kbps&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Vel. Subida&lt;/td&gt;&lt;td&gt;128 kbps&lt;/td&gt;&lt;td&gt;384 kbps&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="1" cellpadding="5" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Infinitum 2000&lt;/td&gt;&lt;td&gt;Anterior&lt;/td&gt;&lt;td&gt;Nueva&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Vel. Bajada&lt;/td&gt;&lt;td&gt;2048 kbps&lt;/td&gt;&lt;td&gt;3072 kbps&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Vel. Subida&lt;/td&gt;&lt;td&gt;256 kbps&lt;/td&gt;&lt;td&gt;512 kbps&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="1" cellpadding="5" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Infinitum 4000&lt;/td&gt;&lt;td&gt;Anterior&lt;/td&gt;&lt;td&gt;Nueva&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Vel. Bajada&lt;/td&gt;&lt;td&gt;4096 kbps&lt;/td&gt;&lt;td&gt;6144 kbps&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Vel. Subida&lt;/td&gt;&lt;td&gt;768 kbps&lt;/td&gt;&lt;td&gt;1024 kbps&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Como siempre el aumento de velocidad será paulatino y de momento no está disponible en todo el país, ya sabes, las principales ciudades (México, Guadalajara y Monterrey) y algunas otras localidades.&lt;br /&gt;&lt;br /&gt;Para verificar la nueva velocidad es necesario apagar y encender el modem/router y luego puedes verificar la velocidad en &lt;a style="font-weight: bold; font-style: italic;" href="http://www.speedtest.net/"&gt;www.speedtest.net&lt;/a&gt; este sitio tiene un velocímetro de internet bastante confiable.&lt;br /&gt;&lt;br /&gt;La buena noticia para los usuarios de Advantage Database Server,  es que con las nuevas velocidades de Infinitum, el acceso al Advantage Internet Server se hace mucho mas eficiente, al estar dentro de la misma red (la de Prodigy Infinitum) la velocidad de respuesta es como si estuvieras dentro de una LAN de 10 mbps,  perfectamente manejable, lo que te permite conectar sucursales remotas con tus archivos DBFs con una velocidad muy buena, sin necesidad de VPN ni de instalar nada del lado del cliente, solo tu servidor ADS que ya tiene incluido el Advantage Internet Server.&lt;br /&gt;&lt;br /&gt;Prueba&lt;a href="http://www.ciber-tec.d2g.com/ads/demos/"&gt; estos demos&lt;/a&gt; que se conectan a nuestra base de datos en la Ciudad de México, la respuesta debe ser bastante buena ya que nuestra conexión de 6 megas de bajada y 1 de subida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11070235-6306737011217611589?l=objetopersistente.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://objetopersistente.blogspot.com/feeds/6306737011217611589/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11070235&amp;postID=6306737011217611589' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6306737011217611589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11070235/posts/default/6306737011217611589'/><link rel='alternate' type='text/html' href='http://objetopersistente.blogspot.com/2009/03/prodigy-infinitum-aumenta-su-velocidad.html' title='Prodigy Infinitum aumenta su velocidad, Buenas noticias para Advantage Database Server'/><author><name>Rene Flores</name><uri>http://www.blogger.com/profile/14824376932972599596</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://4.bp.blogspot.com/_HI3aCbIDUfY/SU7k5ZPauuI/AAAAAAAAAAk/Ft3zdbKZPJA/S220/blogger.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11070235.post-1975084939404801942</id><published>2009-03-26T15:49:00.002-06:00</published><updated>2009-03-26T17:55:21.697-06:00</updated><title type='text'>Nombre Código: XaC5</title><content type='html'>"Xa" se convertido en el prefijo genérico que últimamente el equipo Xailer le ha dado a sus productos.&lt;br /&gt;&lt;br /&gt;Así por ejemplo tenemos XaDbu, el nuevo DBU hecho en Xailer, el XaScript (merece la pena hecharle un vistazo, te soluciona un montón de problemas), y bueno XEdit, que sugerí en el Open House de Madrid que se renombrara como XaEdit porque existe en la distribución de xHarbour.com un producto similar que no tiene nada que ver con la herramienta de compilación hecha por el Equipo Xailer.&lt;br /&gt;&lt;br /&gt;Hace unos días decidí comenzar un proyecto nuevo llamado XaC5 (pronunciese: "Sexy Five"), pero antes de tirarme a la piscina decidí primero ver si tenía agua, y por lo mismo fuí a pedir ayuda al padre de la criatura,  mi admirado Paco "CanalFive" García (de ahí el C5), quien después de que le pasé un medio botón mal hecho y mal pintado hecho por mí, para mostrarle como hacer controles en Xailer, se puso a jugar, y en menos de 24 horas, me manda por correo esto:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.ciber-tec.d2g.com/objeto/xac51.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://www.ciber-tec.d2g.com/objeto/ribon.rar"&gt;Click aquí &lt;/a&gt;para descargar EXE y código fuente del ejemplo anterior.&lt;br /&gt;&lt;br /&gt;Ni mas ni menos que su control RibbonBar ah
