tag:blogger.com,1999:blog-84652890302598477152023-11-16T05:46:07.238-05:00Apps Multi-plataforma con C++ | Embarcadero.comunique_ptr<FMA> blogs(new FMA());
Gerente de Proyectos especializado en automatización de procesos de negocio y de TI; mejora de procesos; 25+ años de experiencia y mi vida desarrollando software para desktop y móviles. Experto en Web API y Web Services. Últimamente con C#, C++, Java y PHP. MVP en http://www.embarcadero.comfranciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-8465289030259847715.post-23417512446651577522020-12-20T21:42:00.005-05:002020-12-20T21:43:09.237-05:00RAD Studio 10.4.1 Sidney (Release 1)<div><a href="https://www.embarcadero.com/" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;" target="_blank"><img alt="RAD Studio 10.4.1" border="0" data-original-height="487" data-original-width="800" height="244" src="https://i1.wp.com/blogs.embarcadero.com/wp-content/uploads/2020/08/RAD_Box_Image.png?resize=1140%2C694&ssl=1" title="RAD Studio 10.4.1" width="400" /></a></div><div><br /></div>MUY IMPORTANTE:<div>Esta versión 10.4.1 lanzada en septiembre de 2020 incluye tres actualizaciones posteriores a la versión 10.4. Aquí las actualizaciones en caso quieras saber de los detalles:</div><div><ul style="text-align: left;"><li><a href="http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page#RAD_Studio_10.4_Patch_1" target="_blank">Actualización 1</a></li><li><a href="http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page#RAD_Studio_10.4_Patch_2" target="_blank">Actualización 2</a></li><li><a href="http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page#RAD_Studio_10.4_Patch_3" target="_blank">Actualización 3</a></li></ul></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div>Delphi 10.4.1, C ++ Builder 10.4.1 y RAD Studio 10.4.1 están disponibles para descargar a cualquier cliente con suscripción activa. En la versión 10.4.1 hay más de 800 mejoras de calidad, incluidas más de 500 mejoras para problemas reportados públicamente en el sitio <a href="https://quality.embarcadero.com/" target="_blank">Quallity Portal</a>. </div><div><br /></div><div>Algunas mejoras relevantes de esta versión, según mi parecer:</div><div><ul style="text-align: left;"><li>El rendimiento de IDE mejoró al realizar pasos cuando hay cientos de subprocesos.</li><li>Se mejora el manejo de las excepciones del sistema operativo.</li><li>El depurador basado en Win64 LLDB tiene varias mejoras, especialmente en la captura y revisión de excepciones, así como en el rendimiento de las mismas (especialmente cuando hay muchos subprocesos). </li><li>El enlazador Win64 (ilink64) ha tenido una revisión significativa de su manejo de memoria. Esto debería reducir los errores de memoria insuficiente en proyectos grandes o con compilaciones de depuración.</li><li>Mejoras en RTL, principalmente para eliminar la macro de compatibilidad de MFC y exportar siempre estos símbolos, así como problemas de compatibilidad encontrados al admitir bibliotecas de C ++ comunes.</li><li>Compatibilidad mejorada con <i>FireDAC</i> para parámetros de función de SQL Server</li><li><i>TFDQuery</i> mejorado con campos calculados y BLOB</li><li>Mejor orden de campo de índice de múltiples columnas <i>TFDTable</i> PostgreSQL</li><li>Se ha abordado una cantidad significativa de problemas de DataSnap, incluidos algunos problemas de rendimiento y fugas de memoria, problemas de MidasLib, DatasetProvider y <i>TClientDataSet</i>,</li><li>Winapi.Winsock2 ahora incluye <i>inet_ntop</i> para soportar mejor las direcciones IPv6</li><li>Soporte mejorado para enumeraciones en <i>TJSONSerializer</i></li><li>Varias mejoras en el componente <i>TRestResponseDataSetAdapter</i>.</li><li>Importador SOAP WSDL, se mejoró la lógica de importación de WSDL y también la invocación de clientes SOAP.</li><li>Muchas correcciones para <i>TThread.WaitFor</i>, <i>TParallel.For</i>, <i>TParallel.Join</i>, <i>TConditionVariableMutex.WaitFor</i> para Linux, <i>TTask.WaitForAny</i> y la clase <i>TPoolThread</i> <i>IdleWorkerThreadCount</i>. También abordamos algunos problemas con <i>TThreadedQueue</i> relacionados con <i>PopItem</i>, el uso de una gran cantidad de subprocesos y...</li><li>mucho más, para revisar la lista completa de mejoras haz clic <a href="http://docwiki.embarcadero.com/RADStudio/Sydney/en/New_features_and_customer_reported_issues_fixed_in_RAD_Studio_10.4.1" target="_blank">aquí</a>.</li></ul></div><div><br /></div><div>PARA DESCARGAR LA ÚLTIMA VERSIÓN IR A <a href="https://my.embarcadero.com/">my.embarcadero.com</a></div><div><br /></div><div><b>Descargas gratuitas de Embarcadero:</b></div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixve8lBv03_qbC6chpkJz5QXnDPXrdCezryMEx4i36r1DgTYjYyzv7RSdBTE_YXEzdB9HMKxFi15cZU8YGnCCXWUsPplPcvNM0eUTiP3X-1vWeUpWt5EuqVkUSreuKAjfxwoSO0H13-Ew/s959/Screenshot_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Free Tools" border="0" data-original-height="359" data-original-width="959" height="120" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixve8lBv03_qbC6chpkJz5QXnDPXrdCezryMEx4i36r1DgTYjYyzv7RSdBTE_YXEzdB9HMKxFi15cZU8YGnCCXWUsPplPcvNM0eUTiP3X-1vWeUpWt5EuqVkUSreuKAjfxwoSO0H13-Ew/w320-h120/Screenshot_3.png" title="Herramientas gratuitas para desarrolladores" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;">\\\</div></div><div><br /></div><div style="text-align: center;"><a href="https://www.embarcadero.com/free-tools" target="_blank">Clic Aquí</a></div><div><div class="separator" style="clear: both; text-align: center;"><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><br /></div><br /><br /></div><div><br /></div>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-70295886246709629892020-04-26T20:45:00.000-05:002020-12-20T20:47:26.616-05:00Novedades en RAD Studio 10.4 Denali (Beta)<div><span face="Verdana, sans-serif" style="font-size: medium;"><b>RAD Studio 10.4 Denali</b></span></div><span face="Verdana, sans-serif">Esta fue una versión beta bastante prometedora por las novedades que estará incluyendo la versión final de RAD Studio 10.4.</span><div><span face="Verdana, sans-serif"><br /></span></div><div><span face="Verdana, sans-serif"><div>10.4 introduce un nuevo depurador para C ++ para Win64, basado en <a href="http://lldb.llvm.org/index.html" target="_blank">LLDB</a> 9. El objetivo con</div><div>este trabajo es para mejorar la estabilidad del depurador; para mejorar la evaluación, inspección y</div><div>otro comportamiento del depurador, a través de una nueva tecnología de depuración y la depuración</div><div>información generada.</div></span></div><div><span face="Verdana, sans-serif"><br /></span></div><div><span face="Verdana, sans-serif"><div><b>Hay muchas mejoras de calidad significativas en varias áreas del producto.</b></div><div><b>Las características nuevas clave adicionales incluyen las siguientes, para listar algunas, las cuales considero son de las mejores:</b></div><div><br /></div><div><ul style="text-align: left;"><li><a href="https://www.aplicacionespara.org/app-para-tethering/" target="_blank">App Thetering</a></li><ul><li>Ahora hay una opción para establecer tiempos de espera de conexión (time outs)</li><li></li><li>Ahora tenemos el mecanismo para saber cuándo la comunicación ha terminado.</li></ul><li><a href="https://blogs.embarcadero.com/c-builder-common-libraries-run-time-library-parallel-programming-library-%e2%80%8b/" target="_blank">Biblioteca de programación paralela y de subprocesos</a></li><ul><li></li><li>Nuevo parámetro <i>AMinTimeToWait</i> en <i>ForceQueue</i> para retrasar el ejecución de código sin crear un subproceso</li></ul><li>Para Internet</li><ul><li> Ahora <i>TNetHTTPClient</i> soporte <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security" target="_blank">TLS 1.3</a> (<b>SEGURIDAD AL LÍMITE</b>)</li><li>Hemos actualizado Indy a la versión actual en el repositorio oficial (a principios de marzo de 2020).</li><li>Capacidad para configurar el certificado de cliente para todos los clientes HTTP SOAP (<i>TStreamLoader</i>)</li></ul></ul></div></span></div><div><span face="Verdana, sans-serif"><br /></span></div><div><span face="Verdana, sans-serif">Quieres saber todo el detalle de esta versión en particular, puedes ingresar aquí:</span></div><div><span face="Verdana, sans-serif"><a href="http://altd.embarcadero.com/releases/studio/Beta/Denali/Denali_doc_build_9181.pdf">Denali_doc_build_9181.pdf (embarcadero.com)</a></span></div><div><br /></div>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-43538078404937561462020-04-10T21:58:00.003-05:002020-04-10T22:25:29.243-05:00C++ Builder - Memory leak detection (Deleaker)<br />
<span style="font-family: "verdana" , sans-serif;"><b>Deleaker Application for C++ Builder y Delphi utilizando RAD Studio</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;"><b>Deleaker</b> detecta fugas en Delphi y C ++ Builder. Como una extensión para RAD Studio, Deleaker muestra memoria asignada, objetos, identificadores y recursos GDI. Repare todas las fugas sin salir de RAD Studio.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;">De hecho, <b>Deleaker</b> es una herramienta para desarrolladores de C++ Builder, Visual C++, .Net y Delphi diseñada para ayudar a encontrar varios tipos de pérdidas, pérdidas de memoria en el código. Para cada fuga o "leak", muestra una trazabilidad del codigo asociado. En este proceso y siempre que sea posible, muestra la línea y el archivo fuente exactos. Numerosas opciones de esta herramienta permiten encontrar fugas de manera rápida y eficiente.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;">Deleaker puede monitorear tanto el código de 32 bits como el de 64 bits y admite todas las versiones de Visual Studio a partir de VS 2005, Qt Creator y Delphi / C++ Builder / RAD Studio.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;"></span><br />
<a name='more'></a><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;">Soporta los siguientes tipos de fuga:</span><br />
<ul>
<li><span style="font-family: "verdana" , sans-serif;">Memory: memory blocks allocated by heap functions, virtual memory, OLE memory: BSTR, SAFEARRAY, etc.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">GDI: HBITMAP, HDC, HPEN, etc.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">User32: HICON, HCURSOR, etc.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Handles: file handles, events, mutexes, etc.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">FileView: views of file mappings.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">ActCtxCookie: cookies of activation contexts.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Fiber: fibers made by CreateFiber, etc.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">CriticalSection: critical sections (<b>si uno llamó a InitializeCriticalSection pero olvidó llamar a DeleteCriticalSection</b>).</span></li>
<li><span style="font-family: "verdana" , sans-serif;">EnvironmentString: ANSI and UNICODE environment strings.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">FlsSlot: fls slots.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">TlsSlot: tls slots.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Atom: atoms.</span></li>
</ul>
<span style="color: blue; font-family: verdana, sans-serif;"><i>Deleaker es compatible con Visual C ++ 6.0, Visual Studio 2005, 2008, 2010, 2012, 2013, 2015, 2017 y 2019, Delphi / C ++ Builder / RAD Studio.</i></span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;"><i><span style="color: blue;">Ambas aplicaciones x86 y x64 son compatibles</span></i>.</span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="color: blue; font-family: verdana, sans-serif;"><i>Deleaker encuentra fugas de memoria de almacenamiento dinámico, memoria virtual, memoria OLE, objetos GDI, objetos USER, identificadores en general.</i></span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">Mira aquí cómo puedes empezar con <b>Deleaker</b>:</span><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/suyJfoSeRrQ/0.jpg" src="https://www.youtube.com/embed/suyJfoSeRrQ?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;"><b>¿Quieres saber más?</b></span><br />
<span style="font-family: verdana, sans-serif;">Este tutorial explica cómo encontrar pérdidas de memoria en C ++ Builder sin salir del IDE. También encontrarás cómo navegar hasta la fuente de las filtraciones y comparar instantáneas "snapshots" para encontrar el código que ocasiona la filtración.</span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">Cada instantánea se guarda de manera automática para mostrarte toda la trazabilidad del código ejecutado, con lo cual te permitirá compararlas y sin duda te permitirá identificar las líneas de código que presentan alguna fuga.</span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;"></span><br />
<span style="font-family: verdana, sans-serif;">A pesar de utilizar técnicas modernas como RAII y punteros inteligentes, aún es posible tener pérdida de memoria incluso si no se utilizan funciones de asignación de memoria sin procesar como malloc, calloc, new y delete: por ejemplo, las referencias circulares de pointers inteligentes hacen fugas fácilmente. Para proyectos antiguos, es típico que el código heredado simplemente no se pueda reescribir en C ++ moderno, y al mismo tiempo se filtre y se debe corregir de inmediato.</span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">Sigue este vínculo donde encontrarás mayor detalle de cómo instalar y realizar tus primeros búsquedas de fuga de memoria: </span><a href="https://www.deleaker.com/docs/deleaker/cplusplus_builder_memory_leak_detection.html">C++ Builder Memory Leak Detection</a><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;"><b>¿Te gusta las líneas de comando?</b></span><br />
<span style="font-family: verdana, sans-serif;">La importancia de las líneas de comando van más allá a que te pueda gustar realizar actividades a través de una consola. Con esta opción la clave está en que podrás automatizar tareas para obtener instantáneas de la aplicación que estás desarrollando.</span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">Mira más detalles de las líneas de comando de Deleaker en el siguiente vínculo: </span><a href="https://www.deleaker.com/docs/deleaker/command_line_tools/deleakerconsole.html">Deleaker - Command Line Tools</a><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<div style="text-align: center;">
<span style="font-family: verdana, sans-serif;">Página principal: </span><a href="https://www.deleaker.com/">https://www.deleaker.com/</a></div>
<div style="text-align: center;">
<span style="font-family: verdana, sans-serif;"><br /></span></div>
<div style="text-align: center;">
<span style="font-family: verdana, sans-serif;">¡Buen provecho!</span></div>
<span style="font-family: verdana, sans-serif; text-align: center;"><br /></span>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-62063079096129233972019-12-14T16:24:00.000-05:002020-04-20T20:45:33.705-05:00Novedades en RAD Studio 10.3 Rio<span style="font-family: "verdana" , sans-serif;"><b>10.3 Rio - Release 3</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br />
</b></span> <span style="font-family: "verdana" , sans-serif;"><b>Lanzamiento de RAD Studio 10.3 Rio actualizado disponible (21 de noviembre de 2019).</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;"><br />
</span> <br />
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;">RAD Studio 10.3 Rio - Release 3 (también conocido como 10.3.3), está disponible para ser instalado. La versi[on 10.3.3 se basa en el conjunto de características de 10.3, 10.3.1 y 10.3.2 al agregar nuevas capacidades en todo el producto. Delphi 10.3.3, C ++ Builder 10.3.3 y RAD Studio 10.3.3 están disponibles para cualquier cliente con suscripción activa.</span></div>
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <br />
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;">Si ya instaló 10.3 Rio (22 de noviembre de 2018), 10.3 Rio - Release 1 (14 de febrero de 2019) o 10.3 Rio - Release 2 (18 de julio de 2019), la instalación de 10.3 Rio - <b>Release 3 requiere una desinstalación y reinstalación completa</b>. Como parte del proceso de desinstalación, verá una opción para preservar su configuración. Por separado, también puede preservar la configuración con la Herramienta de migración de configuración.</span></div>
<span style="font-family: "verdana" , sans-serif;"><br />
</span><br />
<a name='more'></a><span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;"></span><br />
<span style="font-family: verdana, sans-serif;"><b>Nuevas características clave de RAD Studio 10.3.3</b></span><br />
<br />
<ul>
<li><span style="font-family: verdana, sans-serif;">Soporte para Android de 64 bits con Delphi.</span></li>
<li><span style="font-family: verdana, sans-serif;">Soporte para iOS 13 y macOS Catalina (Delphi).</span></li>
<li><span style="font-family: verdana, sans-serif;">Implementación de Docker para el servidor RAD</span></li>
<li><span style="font-family: verdana, sans-serif;">Conectores empresariales en ediciones Enterprise y Architect Edition</span></li>
</ul>
<br />
<span style="font-family: "verdana" , sans-serif;"></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;"><b>Instalación</b></span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">RAD Studio Rio 10.3 - Versión 3, está disponible como instalador en línea (ejecuta y descarga los archivos necesarios) y como ISO (Instalación sin conexión).</span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">Los instaladores están disponibles para descargar en las siguientes páginas de descarga para usuarios registrados:</span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<br />
<ul>
<li><span style="font-family: verdana, sans-serif;">RAD Studio: <a href="https://cc.embarcadero.com/reg/rad_studio">https://cc.embarcadero.com/reg/rad_studio</a></span></li>
<li><span style="font-family: verdana, sans-serif;">Delphi Rio: <a href="https://cc.embarcadero.com/reg/delphi">https://cc.embarcadero.com/reg/delphi</a></span></li>
<li><span style="font-family: verdana, sans-serif;">C ++ Builder Rio: <a href="https://cc.embarcadero.com/reg/c_builder">https://cc.embarcadero.com/reg/c_builder</a></span></li>
</ul>
<br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<div style="text-align: justify;">
<span style="font-family: verdana, sans-serif;"><b>PASOS CLAVE:</b> Para preservar la configuración de instalación existente, se recomienda instalar 10.3 Rio - Release 3, utilizando el mismo instalador (instalador fuera de línea o instalador de funciones) que utilizó al instalar 10.3 Rio. Para determinar qué instalador usó, verifique si el IDE muestra la opción Administrar plataformas en el menú Herramientas. Si el elemento del menú está disponible, significa que usó el Instalador de funciones.</span></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: verdana, sans-serif;">10.3 Rio con su versión 3 incluye los siguientes mejoras y revisiones incluídas en la versión 10.3.2 Rio:</span><br />
<span style="font-family: verdana, sans-serif;"><br /></span>
<br />
<ul>
<li><span style="font-family: verdana, sans-serif;">10.3.2 parche de depuración de macOS (lanzado el 8 de agosto de 2019)</span></li>
<li><span style="font-family: verdana, sans-serif;">Parche de compatibilidad de paquetes de tiempo de ejecución 10.3.2 (lanzado el 8 de agosto de 2019)</span></li>
<li><span style="font-family: verdana, sans-serif;">y Delphi 10.3.2 Building Patch de archivos modificados (lanzado el 13 de agosto de 2019)</span></li>
<li><span style="font-family: verdana, sans-serif;">C ++ y Delphi Toolchain Patch (lanzado el 13 de agosto de 2019)</span></li>
<li><span style="font-family: verdana, sans-serif;">10.3.2 C ++ Debugging Patch (lanzado el 25 de septiembre de 2019)</span></li>
</ul>
<br />
<span style="font-family: "verdana" , sans-serif;"></span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;">Ejemplos para C++ builder 10.3.3 Rio</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">seguir el siguiente vínculo: <a href="http://docwiki.embarcadero.com/CodeExamples/Rio/en/Code_Examples_Index#C">C++ Examples (557 total)</a></span><br />
<br />
<br />
<div style="text-align: center;">
<span style="font-family: Verdana, sans-serif;"><b>Herramientas gratuitas C++ Compiler y más...</b></span></div>
<div style="text-align: center;">
<span style="font-family: Verdana, sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<img border="0" data-original-height="334" data-original-width="309" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKWYW8YOoCD5KNzJiAmGt4M7XPsIt7BH8JycCbtlELMUP-P29rPsA8UAENB-8pToD2OksiKqAGtqxZt_NjU1qagfFIiu73MdDNb773TTctX20iwgrsOLRzpDHB9_Qhu9q8E4p9YgVCLdI/s320/Screenshot_5.png" width="296" /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.embarcadero.com/">https://www.embarcadero.com/</a></div>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-14864778756700725672019-06-30T22:19:00.000-05:002020-04-10T22:25:29.184-05:00Anunciando el lanzamiento de RAD Studio 10.3.2 - Julio de 2019<br />
<span style="font-family: "verdana" , sans-serif;">RAD Studio 10.3 Rio - Release 2 (también conocido como 10.3.2), está disponible para la instalación. 10.3.2 se basa en el conjunto de características de 10.3 y 10.3.1 al agregar nuevas capacidades en todo el producto. Es una actualización para Delphi 10.3 Rio, C ++ Builder 10.3 Rio y RAD Studio 10.3 Rio disponible para cualquier cliente activo de la suscripción de actualización.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;"></span><br />
<span style="font-family: "verdana" , sans-serif;">Si ya instaló 10.3 Rio (22 de noviembre de 2018) o 10.3 Rio - Versión 1 (14 de febrero de 2019), la instalación de 10.3 Rio - Versión 2 requiere una desinstalación y reinstalación completas para preservar su configuración. También puede conservar la configuración con la Herramienta de migración de configuración.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;">Soporta: <b>Delphi macOS 64-bit</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;">Soporte: <b>C++17 for Windows 64-bit</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <br />
<a name='more'></a><blockquote class="tr_bq">
<span style="font-family: "verdana" , sans-serif;">Lo nuevo en 10.3.2 es la compatibilidad con C ++ 17 para Windows de 64 bits para C ++ Builder. C ++ Builder y RAD Studio 10.3.2 presentan un compilador actualizado mejorado de Clang con soporte C ++ 17 para Windows de 64 bits. Como parte de nuestra actualización progresiva del compilador, ahora puede usar las últimas características del lenguaje C ++ para obtener un código más potente y conciso, más optimizaciones del compilador que le brindan un código más rápido y acceso a más bibliotecas de C ++ de terceros para crear aplicaciones más potentes.</span></blockquote>
<blockquote class="tr_bq">
<span style="font-family: "verdana" , sans-serif;">Soporte de la biblioteca Boost para Win32 y Win64 (Boost v1.68).</span></blockquote>
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;">Vea lo nuevo de esta versión para desarrolladores avanzados:</span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;"><br />
</span> <br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/3tQ9KDpGsRQ/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/3tQ9KDpGsRQ?feature=player_embedded" width="320"></iframe></div>
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;"><br />
</span>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.comtag:blogger.com,1999:blog-8465289030259847715.post-47883544023560744492018-03-14T23:20:00.003-05:002020-04-10T22:25:29.271-05:00Anunciando el lanzamiento de RAD Studio 10.2.3 - Marzo de 2018<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://delphi.org/mvp/logo/PoweredBy/RAD%20Studio/Powered_by_RADStudio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://delphi.org/mvp/logo/PoweredBy/RAD%20Studio/Powered_by_RADStudio.png" data-original-height="212" data-original-width="521" height="161" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Me complace anunciar el lanzamiento de <a href="http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_3" target="_blank">Delphi, C ++ Builder y RAD Studio 10.2.3</a>.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">10.2 Tokio, Versión 3 (también conocido como 10.2.3) es una actualización de Delphi 10.2 Tokyo, C ++ Builder 10.2 Tokyo y RAD Studio 10.2 Tokyo.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><b>Características clave de RAD Studio 10.2.3:</b></span><br />
<a name='more'></a><ul>
<li><b style="font-family: Verdana, sans-serif;">Compatibilidad con CMake Command-Line:</b><span style="font-family: "verdana" , sans-serif;"> CMake es una popular herramienta de compilación de C ++. RAD Studio 10.2.3 Tokyo proporciona soporte para construir proyectos CMake en la línea de comando utilizando compiladores RAD Studio. 10.2.3 también admite específicamente el uso de Ninja con CMake, lo que permite compilaciones paralelas muy rápidas.</span></li>
</ul>
<ul>
<li><b style="font-family: Verdana, sans-serif;">Cambiar nombres "refactorización" en C++ Builder:</b><span style="font-family: "verdana" , sans-serif;"> En C++ 10.2 Tokyo Release 3 renombrar "refactorización" le permite hacer clic derecho en un identificador en la vista de código y cambiarle el nombre rápidamente para mejorar la legibilidad del código, reducir errores al cambiar el nombre y disminuir el esfuerzo para mantener el proyecto.</span></li>
</ul>
<ul>
<li><span style="font-family: "verdana" , sans-serif;"><b>Inclusión de Mobile Support en Delphi y C ++ Builder Pro:</b> Nuevo para la versión 10.2.3 para Delphi y C++ Builder <b><u>Professional Edition.</u></b> Esta nueva inclusión de soporte móvil para compras </span><span style="font-family: "verdana" , sans-serif;">nuevas</span><span style="font-family: "verdana" , sans-serif;"> </span><span style="font-family: "verdana" , sans-serif;">y para clientes con suscripción</span><span style="font-family: "verdana" , sans-serif;"> activa. Anteriormente se vendía como un paquete adicional (por separado) para la edición Professional. El soporte móvil permite a los desarrolladores de Delphi y C++ apuntar a iOS y Android, además de Windows y macOS, todo desde una sola base de código.</span></li>
</ul>
<ul>
<li><b style="font-family: Verdana, sans-serif;">Plantillas de interfaz de usuario de FireMonkey:</b><span style="font-family: "verdana" , sans-serif;"> 10.2.3 incluye una serie de nuevas plantillas de interfaz de usuario de FireMonkey, diseñadas para resaltar las capacidades de dispositivos múltiples de FMX, mostrar las mejores prácticas y ayudar a los nuevos usuarios a comenzar más rápido.</span></li>
</ul>
<ul>
<li><b style="font-family: Verdana, sans-serif;">Ahora incluye soporte para RAD Server y Sencha Ext JS:</b><span style="font-family: "verdana" , sans-serif;"> en 10.2.3, simplificamos aún más el desarrollo de un servidor RAD para un cliente Sencha Ext JS, agregando la capacidad de alojar archivos HTML, JS, CSS estáticos (y cualquier otro archivo) en el servidor de depuración y desarrollo del Servidor RAD.</span></li>
</ul>
<span style="font-family: "verdana" , sans-serif;">También se incluyen mejoras adicionales en varias áreas de productos y más de 100 correcciones de errores para </span><a href="http://edn.embarcadero.com/article/44774" style="font-family: verdana, sans-serif;" target="_blank">problemas informados públicamente</a><span style="font-family: "verdana" , sans-serif;">.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">RAD Studio 10.2.3 también incluye todas las excelentes características y mejoras que presentamos en RAD Studio 10.2, 10.2.1 y 10.2.2.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Docwiki para 10.2.3: <a href="http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_3" target="_blank">http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_3</a></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/4n5AZdRx788/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/4n5AZdRx788?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "verdana" , sans-serif;">¡Buen provecho!</span></div>
<br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-69712370814988252432017-12-31T17:05:00.000-05:002018-01-02T00:52:56.632-05:00Números aleatorios y probabilidades en C++<span style="font-family: "verdana" , sans-serif;">Cómo obtener la probabilidad para de manera aleatoria? Esto te podría servir para tomar ciertas decisiones en tu aplicación o sistema, como por ejemplo actualizar una barra de progreso a fin que no sean tan demandante la interacción con el UI.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
</span> <span style="font-family: "verdana" , sans-serif;"></span><br />
<a name='more'></a><span style="font-family: "verdana" , sans-serif;">Aquí algunas pruebas....</span><br />
<br />
<ul>
<li><span style="font-family: "verdana" , sans-serif;">Para generar los números aleatorios sólo presiona la tecla [Enter].</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Para pasar de una prueba a otra presiona la tecla [x] y presion [Enter]</span></li>
</ul>
<span style="font-family: verdana, sans-serif;">En la última prueba se genera 1 y 0 y por otro lado miramos cuántos veces se generó todas las veces el valor 1 (diez veces según el ejemplo). Quiere decir que hay una probabilidad para que todas las veces salga siempre 1.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br />
<!-- HTML generated using hilite.me --></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39</pre>
</td><td><pre style="line-height: 125%; margin: 0;"> <span style="color: #333399; font-weight: bold;">int</span> xRnd <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span>;
randomize(); <span style="color: #888888;">//stdlib.h</span>
<span style="color: #008800; font-weight: bold;">do</span> {
std<span style="color: #333333;">::</span>cout <span style="color: #333333;"><<</span> xRnd <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"</span><span style="background-color: #fff0f0; color: #666666; font-weight: bold;">\n</span><span style="background-color: #fff0f0;">"</span>;
xRnd <span style="color: #333333;">=</span> rand();
std<span style="color: #333333;">::</span>cout <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"Random number: "</span> <span style="color: #333333;"><<</span> xRnd <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"</span><span style="background-color: #fff0f0; color: #666666; font-weight: bold;">\n</span><span style="background-color: #fff0f0;">"</span>;
std<span style="color: #333333;">::</span>cout <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"Random 0~99 : "</span> <span style="color: #333333;"><<</span> xRnd <span style="color: #333333;">%</span> <span style="color: #0000dd; font-weight: bold;">100</span> <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"</span><span style="background-color: #fff0f0; color: #666666; font-weight: bold;">\n</span><span style="background-color: #fff0f0;">"</span>;
xRnd <span style="color: #333333;">=</span> std<span style="color: #333333;">::</span>getchar();
} <span style="color: #008800; font-weight: bold;">while</span> (xRnd<span style="color: #333333;">!=</span><span style="color: #0000dd; font-weight: bold;">120</span>); <span style="color: #888888;">//120 = tecla x</span>
Randomize(); <span style="color: #888888;">//System.hpp</span>
<span style="color: #008800; font-weight: bold;">do</span> {
std<span style="color: #333333;">::</span>cout <span style="color: #333333;"><<</span> xRnd <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"</span><span style="background-color: #fff0f0; color: #666666; font-weight: bold;">\n</span><span style="background-color: #fff0f0;">"</span>;
xRnd <span style="color: #333333;">=</span> Random(<span style="color: #0000dd; font-weight: bold;">100</span>);
std<span style="color: #333333;">::</span>cout <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"Random 0~99 : "</span> <span style="color: #333333;"><<</span> xRnd <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"</span><span style="background-color: #fff0f0; color: #666666; font-weight: bold;">\n</span><span style="background-color: #fff0f0;">"</span>;
xRnd <span style="color: #333333;">=</span> std<span style="color: #333333;">::</span>getchar();
} <span style="color: #008800; font-weight: bold;">while</span> (xRnd<span style="color: #333333;">!=</span><span style="color: #0000dd; font-weight: bold;">120</span>);
<span style="color: #333399; font-weight: bold;">int</span> Tot<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span>, TotTot<span style="color: #333333;">=</span><span style="color: #0000dd; font-weight: bold;">0</span>;
<span style="color: #008800; font-weight: bold;">do</span> {
<span style="color: #888888;">//std::cout << xRnd << "\n";</span>
<span style="color: #333399; font-weight: bold;">int</span> Cnt<span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span>;
<span style="color: #008800; font-weight: bold;">for</span> (<span style="color: #333399; font-weight: bold;">int</span> i <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span>; i <span style="color: #333333;"><</span> <span style="color: #0000dd; font-weight: bold;">10</span>; i<span style="color: #333333;">++</span>) {
xRnd <span style="color: #333333;">=</span> Random(<span style="color: #0000dd; font-weight: bold;">2</span>); <span style="color: #888888;">//0 ó 1</span>
<span style="color: #888888;">//std::cout << i << ": " << xRnd << "\n";</span>
<span style="color: #008800; font-weight: bold;">if</span> (xRnd<span style="color: #333333;">==</span><span style="color: #0000dd; font-weight: bold;">1</span>) Cnt<span style="color: #333333;">++</span>;
}
TotTot<span style="color: #333333;">++</span>;
<span style="color: #008800; font-weight: bold;">if</span> (Cnt<span style="color: #333333;">></span><span style="color: #0000dd; font-weight: bold;">7</span>) { <span style="color: #888888;">//70% de probabilidad</span>
Tot<span style="color: #333333;">++</span>;
std<span style="color: #333333;">::</span>cout <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"Prob. del 70% alcanzada.\n"</span>;
std<span style="color: #333333;">::</span>cout <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"Prob.: "</span> <span style="color: #333333;"><<</span> Tot<span style="color: #333333;">*</span><span style="color: #6600ee; font-weight: bold;">100.0</span><span style="color: #333333;">/</span>TotTot <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"% - "</span> <span style="color: #333333;"><<</span> Tot <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"/"</span> <span style="color: #333333;"><<</span> TotTot <span style="color: #333333;"><<</span> <span style="background-color: #fff0f0;">"</span><span style="background-color: #fff0f0; color: #666666; font-weight: bold;">\n</span><span style="background-color: #fff0f0;">"</span>;
xRnd <span style="color: #333333;">=</span> std<span style="color: #333333;">::</span>getchar();
Tot<span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span>;
TotTot<span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span>;
}
} <span style="color: #008800; font-weight: bold;">while</span> (xRnd<span style="color: #333333;">!=</span><span style="color: #0000dd; font-weight: bold;">120</span>);
<span style="color: #008800; font-weight: bold;">return</span> <span style="color: #0000dd; font-weight: bold;">0</span>;
</pre>
</td></tr>
</tbody></table>
</div>
<span style="font-family: "verdana" , sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">En el último do-while...</span><br />
<span style="font-family: Verdana, sans-serif;">Se está buscando coincidencias donde la probabilidad haya sido igual o mayor a siete (70%).</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">TotTot muestra la frecuencia con que la condición del párrafo anterior, o de la línea 30, ocurre... ésta también es una probabilidad.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">En un siguiente post quizás (no estoy seguro si lo haré) verifique este TotTot en los dos primeras do-while.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Feliz Año 2018!!!</span><br />
<span style="font-family: Verdana, sans-serif;">Cheers!</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-24347311692110205912017-11-04T21:08:00.001-05:002017-11-04T21:09:23.934-05:00Coderage XII: Some code to start building C++ applications using RAD Studio<span style="font-family: "verdana" , sans-serif;">Participen de Coderage XII, <a href="https://community.embarcadero.com/all-events/viewevent/1668-coderage-xii-register-now" target="_blank">registrarse aquí</a></span><br />
<span style="font-family: "verdana" , sans-serif;">Aquí parte de lo que compartiré...</span><br />
<div style="display: block; font-family: "helvetica" , "arial" , sans-serif; font-size: 14px; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; margin: 12px auto 6px auto;">
<a href="https://www.scribd.com/presentation/363476907/FMuro-Some-code-to-start-building-C-applications#from_embed" style="text-decoration: underline;" title="View FMuro - Some code to start building C++ applications on Scribd">FMuro - Some code to start building C++ applications</a> by <a href="https://www.scribd.com/user/355191688/Francisco-M-Muro-A#from_embed" style="text-decoration: underline;" title="View Francisco M. Muro A.'s profile on Scribd">Francisco M. Muro A.</a> on Scribd</div>
<iframe class="scribd_iframe_embed" data-aspect-ratio="1.7790927021696252" data-auto-height="false" frameborder="0" height="600" id="doc_36042" scrolling="no" src="https://www.scribd.com/embeds/363476907/content?start_page=2&view_mode=scroll&access_key=key-D4VBdjM8c83p3crCaZ2r&show_recommendations=true" title="FMuro - Some code to start building C++ applications" width="100%"></iframe><br />
<br />
<span style="font-family: Verdana, sans-serif;">Algunos links de interés:</span><br />
<br />
<ul>
<li><span style="font-family: Verdana, sans-serif;"><a href="https://community.embarcadero.com/all-events/viewevent/1668-coderage-xii-register-now" target="_blank">Registrarse AHORA!</a></span></li>
<li><span style="font-family: Verdana, sans-serif;"><a href="https://community.embarcadero.com/article/16578-coderage" target="_blank">Últimos artículos de la comunidad</a></span></li>
<li><span style="font-family: Verdana, sans-serif;"><a href="https://community.embarcadero.com/blogs/entry/coderage-xii-sessions-and-schedule" target="_blank">La agenda para los 3 días, del 7 al 9 de Noviembre</a></span></li>
<li><span style="font-family: Verdana, sans-serif;"><a href="https://www.embarcaderoacademy.com/p/coderage-xii" target="_blank">Embarcadero Academy... síguelo de aquí...</a></span></li>
</ul>
<br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Espero les sea de utilidad, saludos.</span>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-44663510616901626352017-08-09T11:15:00.000-05:002017-08-09T11:15:42.466-05:00RAD Studio 10.2 Tokyo Release 1 (Nuevas funciones, mejoras y correcciones de errores)<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- FMA Blog -->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-5430597769909759" data-ad-format="auto" data-ad-slot="6797487202" style="display: block;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<span style="font-family: "verdana" , sans-serif;">Aquí les transcribo en español un extracto de la actualización de <b>RAD Studio 10.2 Tokyo Release 1</b>.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Este lanzamiento (release) es una actualización a la versión 10.2 Tokyo que incluye Delphi 10.2 Tokyo, C++ Builder 10.2 Tokyo y Rad Studio 10.2 Tokyo. La misma que está disponible para clientes con suscripción activa.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Entrar para ver detalle y vínculos de descarga.</span><br />
<span style="font-family: "verdana" , sans-serif;"></span><br />
<a name='more'></a><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><u><b>TENER EN CUENTA:</b> Esta actualización requiere de una desinstalación completa de la versión previa 10.2 Tokyo antes de instalar <b>10.2 Tokyo Release 1</b>. Estos dos pasos son realmente sencillos.</u></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><b>10.2 Tokyo - Release 1</b> incluye las siguientes nuevas características, mejoras, y corrección de errores o bug fixes:</span><br />
<ul>
<li><span style="font-family: "verdana" , sans-serif;">Mejoras en el rendimiento del servidor Delphi Linux para RAD Server y para DataSnap.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Actualizaciones a los compiladores Delphi y C++ y al "linker" que resuelven problemas de carga de paquetes, especialmente al depurar, en Windows 10 Creators Update.</span></li>
<li></li>
<li><span style="font-family: "verdana" , sans-serif;">Soporte a las últimas versiones de iOS y Xcode (iOS 10.3 y XCode 8.3.2 respectivamente) referente a iOS App Store.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Soporte de <a href="http://docwiki.embarcadero.com/Status/en/FireDAC_Database_Support" target="_blank">FireDAC para MSSQL 2012, 2014, 2016 y al controlador ODBC Driver 13</a>.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Mejoras significativas del linker de C++ relacionadas a vincular (linkear) proyectos grandes.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Correcciones y mejoras a la Runtime Library y VCL.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Mejoras adicionales en Android en torno a la renderización y la eficiencia de ejecución de controles y, correcciones de problemas en TEdit para Android N.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Soporte de FireDAC para Interbase 2017 con <a href="http://docwiki.embarcadero.com/InterBase/2017/en/Exclusive_Isolation_Level" target="_blank">Nivel de aislamiento exclusivo</a> y <a href="http://docwiki.embarcadero.com/InterBase/2017/en/Wait_time" target="_blank">Tiempo de Espera de Transacción</a>.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Cambios en <a href="http://docwiki.embarcadero.com/Libraries/Tokyo/en/Data.DB.TField.DataSize" target="_blank">DataSize</a> para los campos de tipo ftInteger y ftLongWord a fin de evitar el uso del tipo LongInt y LongWord dependientes de la plataforma (el cambio afecta sólo a las plataformas Linux de 64 bits y iOS de 64 bits) además de incluir cambios relacionados para <a href="http://docwiki.embarcadero.com/Libraries/Tokyo/en/Data.DB.TDataSet.SetFieldData" target="_blank">SetFieldData</a> y <a href="http://docwiki.embarcadero.com/Libraries/Tokyo/en/Data.DB.TDataSet.GetFieldData" target="_blank">GetFieldData</a>.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Finalmente precisamos que existen correcciones de más de 150 problemas reportados por los clientes en <a href="https://quality.embarcadero.com/" target="_blank">Quality Portal</a>. Vea la lista a continuación.</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Incluye las mejoras de la revisión Toolchain de Tokyo (lanzada el 3 de mayo de 2017) y el parche de compatibilidad de Android (publicado el 22 de junio de 2017).</span></li>
</ul>
<span style="font-family: "verdana" , sans-serif;">La lista completa de las correcciones y mejoras las pueden revisar <a href="http://edn.embarcadero.com/article/44763" target="_blank">aquí en el sitio oficial de Embarcadero</a>.</span><br />
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">La actualización la pueden descargar <a href="http://cc.embarcadero.com/item/30783" target="_blank">aquí en CodeCentral de Embarcadero</a>.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">Necesitas mayor detalle de descargas y de instalación de <b>Tokyo 10.2 Release 1</b> haz <a href="http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_1" target="_blank">clic aquí (en inglés)</a>.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">Un saludo.</span></div>
franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-60996304002433189462017-07-17T03:46:00.001-05:002017-07-17T03:49:45.167-05:00¿Cómo procesar/parse un objeto JSON ya creado?<span style="font-family: "verdana" , sans-serif;">Siguiendo el ejemplo anterior <a href="http://franciscomuro.blogspot.pe/2017/06/como-crear-objetos-json-de-cero.html" target="_blank">¿Cómo crear objetos JSON de cero?</a> ahora vamos a suponer que tenemos el siguiente objeto o string JSON:</span><br />
<span style="font-family: "verdana" , sans-serif;">
<!-- HTML generated using hilite.me --></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="font-family: "verdana" , sans-serif;">{
<span style="color: #007700;">"Book-1"</span>:{
<span style="color: #007700;">"id"</span>:<span style="color: #0000dd; font-weight: bold;">2587</span>,
<span style="color: #007700;">"titulo"</span>:<span style="background-color: #fff0f0;">"Dalila la bella"</span>,
<span style="color: #007700;">"subtitulo"</span>:<span style="background-color: #fff0f0;">"Poesia sobre Dalila."</span>,
<span style="color: #007700;">"autor"</span>:<span style="background-color: #fff0f0;">"Sr. Juan Perez"</span>,
<span style="color: #007700;">"isbn"</span>:<span style="background-color: #fff0f0;">"777345934500023"</span>,
<span style="color: #007700;">"categoria"</span>:[<span style="background-color: #fff0f0;">"arte"</span>,<span style="background-color: #fff0f0;">"poesia"</span>]
},
<span style="color: #007700;">"Book-2"</span>:{
<span style="color: #007700;">"id"</span>:<span style="color: #0000dd; font-weight: bold;">3700</span>,
<span style="color: #007700;">"titulo"</span>:<span style="background-color: #fff0f0;">"Simbad el Marino"</span>,
<span style="color: #007700;">"subtitulo"</span>:<span style="background-color: #fff0f0;">"Aventuras de Simbad."</span>,
<span style="color: #007700;">"autor"</span>:<span style="background-color: #fff0f0;">"Agustin Sanchez Aguilar"</span>,
<span style="color: #007700;">"isbn"</span>:<span style="background-color: #fff0f0;">"9788431668594"</span>,
<span style="color: #007700;">"categoria"</span>:[<span style="background-color: #fff0f0;">"arte"</span>,<span style="background-color: #fff0f0;">"historietas"</span>]
}
}
</span></pre>
</div>
<span style="font-family: "verdana" , sans-serif;">
</span><br />
<span style="font-family: "verdana" , sans-serif;">Y queremos procesar, navegar o "parse" su contenido elemento por elemento: libro por libro y atributo por atributo.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"></span><br />
<a name='more'></a><span style="font-family: "verdana" , sans-serif;">Para empezar, p</span><span style="font-family: "verdana" , sans-serif;">ega el objeto JSON mostrado líneas arriba en un objeto Memo de un formulario, digamos que es Memo1 dentro de Form1.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<h4>
<span style="font-family: "verdana" , sans-serif;">Compilador clásico de Borland</span></h4>
<span style="font-family: "verdana" , sans-serif;">Veamos el siguiente código utilizando el compilador clásico de Borland:</span><br />
<span style="font-family: "verdana" , sans-serif;">El siguiente código funcionará sin problema en CLANG C++11.</span><br />
<span style="font-family: "verdana" , sans-serif;">
<!-- HTML generated using hilite.me --></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: #333399; font-weight: bold;">void</span> <span style="color: #008800; font-weight: bold;">__fastcall</span> TForm1<span style="color: #333333;">::</span>SpeedButton2Click(TObject <span style="color: #333333;">*</span>Sender)
{
TJSONObject <span style="color: #333333;">*</span>mainObj <span style="color: #333333;">=</span> (TJSONObject<span style="color: #333333;">*</span>) TJSONObject<span style="color: #333333;">::</span>ParseJSONValue(
TEncoding<span style="color: #333333;">::</span>ASCII<span style="color: #333333;">-></span>GetBytes(Memo1<span style="color: #333333;">-></span>Lines<span style="color: #333333;">-></span>Text),<span style="color: #0000dd; font-weight: bold;">0</span>);
TJSONPair <span style="color: #333333;">*</span>xBookPair <span style="color: #333333;">=</span> <span style="color: #007020;">NULL</span>;
TJSONObject <span style="color: #333333;">*</span>xBook <span style="color: #333333;">=</span> <span style="color: #007020;">NULL</span>;
try {
<span style="color: #008800; font-weight: bold;">for</span> (<span style="color: #333399; font-weight: bold;">int</span> idx <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span>; idx <span style="color: #333333;"><</span> mainObj<span style="color: #333333;">-></span>Size(); idx<span style="color: #333333;">++</span>) {
xBookPair <span style="color: #333333;">=</span> (TJSONPair<span style="color: #333333;">*</span>) mainObj<span style="color: #333333;">-></span>Get(idx);
xBook <span style="color: #333333;">=</span> (TJSONObject<span style="color: #333333;">*</span>) xBookPair<span style="color: #333333;">-></span>JsonValue;
<span style="color: #008800; font-weight: bold;">for</span> (<span style="color: #333399; font-weight: bold;">int</span> idy <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span>; idy <span style="color: #333333;"><</span> xBook<span style="color: #333333;">-></span>Count ; idy<span style="color: #333333;">++</span>) {
ShowMessage(xBookPair<span style="color: #333333;">-></span>JsonString<span style="color: #333333;">-></span>ToString() <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">": "</span> <span style="color: #333333;">+</span></pre>
<pre style="line-height: 125%; margin: 0;"> xBook<span style="color: #333333;">-></span>Get(idy)<span style="color: #333333;">-></span>JsonString<span style="color: #333333;">-></span>ToString() <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">": "</span> <span style="color: #333333;">+</span>
xBook<span style="color: #333333;">-></span>Get(idy)<span style="color: #333333;">-></span>JsonValue<span style="color: #333333;">-></span>ToString());
}
}
} <span style="color: #008800; font-weight: bold;">__finally</span> {
<span style="color: #008800; font-weight: bold;">delete</span> mainObj<span style="color: #888888;">;</span>
}
}
</pre>
</td></tr>
</tbody></table>
</div>
<span style="font-family: "verdana" , sans-serif;">
</span><br />
<span style="font-family: "verdana" , sans-serif;">Nota que no es necesario eliminar con la cláusula <b>delete</b> las variables xBookPair y xBook, porque éstas sólo son referencias de memoria del objeto principal mainObj. Es decir al eliminar mainObj estarás borrando de memoria toda esta variable el cual es todo su contenido.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<h4>
<span style="font-family: "verdana" , sans-serif;">CLANG C++v11</span></h4>
<span style="font-family: "verdana" , sans-serif;">Ahora veamos el siguiente código utilizando CLANG C++v11:</span>
<br />
<span style="font-family: "verdana" , sans-serif;">Si has seguido el <a href="http://franciscomuro.blogspot.pe/2017/06/como-crear-objetos-json-de-cero.html" target="_blank">ejemplo anterior</a> mencionado en las primeras líneas de esta entrada encontrarás que, para utilizar CLANG debemos desactivar el compilador clásico de Borland que viene </span><span style="font-family: "verdana" , sans-serif;">activado </span><span style="font-family: "verdana" , sans-serif;">por defecto.</span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: #333399; font-weight: bold;">void</span> <span style="color: #008800; font-weight: bold;">__fastcall</span> TForm1<span style="color: #333333;">::</span>SpeedButton3Click(TObject <span style="color: #333333;">*</span>Sender)
{
<span style="color: #008800; font-weight: bold;">auto</span> <span style="color: #333333;">*</span>mainObj <span style="color: #333333;">=</span> (TJSONObject<span style="color: #333333;">*</span>)TJSONObject<span style="color: #333333;">::</span>ParseJSONValue(
TEncoding<span style="color: #333333;">::</span>ASCII<span style="color: #333333;">-></span>GetBytes(Memo1<span style="color: #333333;">-></span>Lines<span style="color: #333333;">-></span>Text),
<span style="color: #0000dd; font-weight: bold;">0</span>);
<span style="color: #008800; font-weight: bold;">for</span> (<span style="color: #008800; font-weight: bold;">auto</span> <span style="color: #333333;">*</span>xObj <span style="color: #333333;">:</span> mainObj) {
<span style="color: #008800; font-weight: bold;">for</span> (<span style="color: #008800; font-weight: bold;">auto</span> <span style="color: #333333;">*</span> xBook <span style="color: #333333;">:</span> (TJSONObject<span style="color: #333333;">*</span>) xObj<span style="color: #333333;">-></span>JsonValue) {
ShowMessage(xObj<span style="color: #333333;">-></span>JsonString<span style="color: #333333;">-></span>ToString() <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">": "</span> <span style="color: #333333;">+</span>
xBook<span style="color: #333333;">-></span>JsonString<span style="color: #333333;">-></span>ToString() <span style="color: #333333;">+</span> <span style="background-color: #fff0f0;">": "</span> <span style="color: #333333;">+</span></pre>
<pre style="line-height: 125%; margin: 0;"> xBook<span style="color: #333333;">-></span>JsonValue<span style="color: #333333;">-></span>ToString());
}
}</pre>
<pre style="line-height: 125%; margin: 0;"></pre>
<pre style="line-height: 125%; margin: 0;">}</pre>
</td></tr>
</tbody></table>
</div>
<span style="font-family: "verdana" , sans-serif;">
</span><br />
<span style="font-family: "verdana" , sans-serif;">Al utilizar este compilador el código se reduce notablemente, de 21 a 13 líneas de código. Notarás también que no es necesario utilizar <b>try...__finally</b>. Esto porque, con la cláusula <b>auto </b>las variables son eliminadas automáticamente cuando su contexto <b>{}</b> llega a su fin.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><span style="font-family: "verdana" , sans-serif;">En ambos casos el código es multiplataforma.</span>
</span><span style="font-family: "verdana" , sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: verdana, sans-serif;">Es todo, e</span></span><span style="font-family: "verdana" , sans-serif;">spero sirva de ayuda.</span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-81102157743005071722017-06-30T12:58:00.000-05:002017-07-13T21:23:15.133-05:00¿Cómo crear objetos JSON de cero?<span style="font-family: "verdana" , sans-serif;">Antes de seguir les recomiendo dar una leída a la información del sitio oficial de esta estructura de datos: <a href="http://www.json.org/" target="_blank">JSON</a>.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Notarás que en resumen, un objeto del tipo JSON puede contener los siguientes:</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://json.org/value.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://json.org/value.gif" data-original-height="278" data-original-width="598" height="185" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Y esto es recursivo, es decir cada nuevo valor del objeto </span><span style="font-family: "verdana" , sans-serif;">puede</span><span style="font-family: "verdana" , sans-serif;"> </span><span style="font-family: "verdana" , sans-serif;">a su ver contener cualquiera de los valores mostrados en la imagen anterior.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Haremos un ejemplo en C++, que como siempre es multiplataforma :D</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"></span><br />
<a name='more'></a><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Les haré un ejemplo muy sencillo en C++.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span><span style="font-family: "verdana" , sans-serif;">Digamos que queremos armar lo siguiente:</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">
<!-- HTML generated using hilite.me --></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="font-family: "verdana" , sans-serif;">{
<span style="color: #007700;">"Book-1"</span>: {
<span style="color: #007700;">"id"</span>:<span style="color: #0000dd; font-weight: bold;">2587</span>,
<span style="color: #007700;">"titulo"</span>:<span style="background-color: #fff0f0;">"Dalila la bella"</span>,
<span style="color: #007700;">"subtitulo"</span>:<span style="background-color: #fff0f0;">"Poesia sobre Dalila."</span>,
<span style="color: #007700;">"autor"</span>:<span style="background-color: #fff0f0;">"Sr. Juan Perez"</span>,
<span style="color: #007700;">"isbn"</span>:<span style="background-color: #fff0f0;">"777345934500023"</span>,
<span style="color: #007700;">"categoria"</span>:[<span style="background-color: #ffaaaa; color: red;">arte</span>,<span style="background-color: #ffaaaa; color: red;">poesia</span>]
}
}
</span></pre>
</div>
<span style="font-family: "verdana" , sans-serif;">
</span><br />
<span style="font-family: "verdana" , sans-serif;"></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<span style="font-family: "verdana" , sans-serif;">Para empezar incluimos lo siguiente en tu archivo "xyz.cpp" o en "xyz.h" dependiendo del uso y alcance que quieras darle a la declaración de tus variables. Por ejemplo si vas a usar objetos JSON como parámetros de funciones, pues tendrás que incluir la siguiente línea en el archivo de cabeceras "xyz.h":</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">
<!-- HTML generated using hilite.me --></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="font-family: "verdana" , sans-serif;">#include <span style="color: #333333;"><</span>System.JSON.hpp<span style="color: #333333;">></span>
</span></pre>
</div>
<span style="font-family: "verdana" , sans-serif;">
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span><span style="font-family: "verdana" , sans-serif;">Paso siguiente. Nota detenidamente que todas las variables son punteros, quiere decir que cada variable apunta directamente a una dirección de memoria y cualquier acción que realices sobre ellas impactará directamente en su contenido, en memoria.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">El siguiente código lo podrías poner en el evento clic de algún botón.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="font-family: "verdana" , sans-serif;"> <span style="color: #008800; font-weight: bold;">auto</span> <span style="color: #333333;">*</span>mainObj <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> TJSONObject;
<span style="color: #008800; font-weight: bold;">auto</span> <span style="color: #333333;">*</span>Obra1 <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> TJSONObject;
mainObj<span style="color: #333333;">-></span>AddPair(<span style="background-color: #fff0f0;">"Book-1"</span>, Obra1);
Obra1<span style="color: #333333;">-></span>AddPair(<span style="background-color: #fff0f0;">"id"</span>, <span style="color: #008800; font-weight: bold;">new</span> TJSONNumber(<span style="color: #0000dd; font-weight: bold;">2587</span>));
Obra1<span style="color: #333333;">-></span>AddPair(<span style="background-color: #fff0f0;">"titulo"</span>, <span style="background-color: #fff0f0;">"Dalila la bella"</span>);
Obra1<span style="color: #333333;">-></span>AddPair(<span style="background-color: #fff0f0;">"subtitulo"</span>, <span style="background-color: #fff0f0;">"Poesia sobre Dalila."</span>);
Obra1<span style="color: #333333;">-></span>AddPair(<span style="background-color: #fff0f0;">"autor"</span>, <span style="background-color: #fff0f0;">"Sr. Juan Perez"</span>);
Obra1<span style="color: #333333;">-></span>AddPair(<span style="background-color: #fff0f0;">"isbn"</span>, <span style="background-color: #fff0f0;">"777345934500023"</span>);
<span style="color: #008800; font-weight: bold;">auto</span> <span style="color: #333333;">*</span>CatArray <span style="color: #333333;">=</span> <span style="color: #008800; font-weight: bold;">new</span> TJSONArray();
Obra1<span style="color: #333333;">-></span>AddPair(<span style="background-color: #fff0f0;">"categoria"</span>, CatArray);
CatArray<span style="color: #333333;">-></span>Add(String(<span style="background-color: #fff0f0;">"arte"</span>));
CatArray<span style="color: #333333;">-></span>Add(String(<span style="background-color: #fff0f0;">"poesia"</span>));
ShowMessage(mainObj<span style="color: #333333;">-></span>ToString());
</span></pre>
</div>
<span style="font-family: "verdana" , sans-serif;">
</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span><span style="font-family: "verdana" , sans-serif;">Antes de compilar, es muy importante que desactives el compilador clásico de Boland para que entre en acción C++11 o CLANG. </span><span style="font-family: "verdana" , sans-serif;">En CLANG no es necesario liberar los objectos porque se libran solos</span><span style="font-family: "verdana" , sans-serif;"> 😄. En caso uses el compilador clásico, no podrás usar la clave "auto", cámbialas al tipo de objeto a crear, y al final de usar los objetos elimínalos, Ej. "delete mainObj;". Te recomiendo usar la cláusula try... __finally para controlar adecuadamente esta acción.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span><span style="font-family: "verdana" , sans-serif;">Para esto ve al menú "Project->Options..." o simplemte presiona la combinación de teclas Ctrl+Shift+F11. En la izquierda ve a "C++ Compiler". Luego cambia de true a false la opción del compilador clásico como se muestra en la siguiente imagen.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK71B-itv2ehjtVmFzcZ1zrlRXGTPTYBNQMkHTJ9yeG0kMffwsUtaYq6ThDVuzWf2QAa8ZTDn_wbxyTQ5ysW8TGUlsFuE68wKZr0r-1NVppBvft457s2_r08Eu3o6FEvp4I1yDc7eSSzw/s1600/clang-cbuilder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="275" data-original-width="741" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK71B-itv2ehjtVmFzcZ1zrlRXGTPTYBNQMkHTJ9yeG0kMffwsUtaYq6ThDVuzWf2QAa8ZTDn_wbxyTQ5ysW8TGUlsFuE68wKZr0r-1NVppBvft457s2_r08Eu3o6FEvp4I1yDc7eSSzw/s640/clang-cbuilder.png" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Luego de ejecutar nuestro ejemplo obtendremos el siguiente resultado:</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIc4ntB7lvPBwTY75zYO_TAFaEvlLweHlaORTjJDlymjY4-Fw2LvHp40BHltCkhpuHIMpKZEJ83u971eHWElMHCuzTg2WeQ1Nk91vPS4o92ed4YZRUSBb-mEL0rAgbreqNgMPR95bdhxQ/s1600/objeto-json-tostring.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="173" data-original-width="419" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIc4ntB7lvPBwTY75zYO_TAFaEvlLweHlaORTjJDlymjY4-Fw2LvHp40BHltCkhpuHIMpKZEJ83u971eHWElMHCuzTg2WeQ1Nk91vPS4o92ed4YZRUSBb-mEL0rAgbreqNgMPR95bdhxQ/s400/objeto-json-tostring.png" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Muy bueno eh!!</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Seguramente notarás que como "Book-1" podrías tener "n" números de books.</span><br />
<br />
<span style="font-family: "verdana" , sans-serif;">Un saludos y bendiciones!</span>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-57951615562210587102017-05-31T10:37:00.000-05:002017-05-31T10:39:14.781-05:00Raspberry Pi - RAD Studio - Delphi - C++<h2>
<span style="font-family: Verdana, sans-serif;">Raspberry Pi - RAD Studio - Delphi - C++</span></h2>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Raspberry Pi es un ejemplo de una computadora en una tarjeta :D.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://images-na.ssl-images-amazon.com/images/I/81ggiTljGJL._SX522_.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="349" data-original-width="522" height="212" src="https://images-na.ssl-images-amazon.com/images/I/81ggiTljGJL._SX522_.jpg" width="320" /></a></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Éstos hobbies de bajo costo o proyectos de computadora son un ejemplo básico del IoT (Internet of Things). Raspberry Pi es más potente que un Arduido, pero a la vez no es una computadora desktop completa (Obviamente!). Usualmente suelen tener limitaciones o hardware (partes) específicas algo diferentes, pero por otro lado, su tamaño "pequeño" y de "bajo" costo los hacen ideales para el desarrollo de aplicaciones empotradas (embedded) en otros entornos, industriales o no, o sistemas en general. RAD Studio soporta procesadores ARM e Intel con una variedad de sistemas operativos (OS). Este video webinar explorará la combinación de hardware y sistema operato ideales para <b>Delphi y C++</b>. Luego también se muestra algunos ejemplos básicos y proporciona recursos para que puedas realizar tus pruebas ya mismo!</span></div>
<div style="text-align: justify;">
</div>
<a name='more'></a><span style="font-family: Verdana, sans-serif;"><br /></span><br />
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">Aquí el video, está en inglés, sin embargo puedes activar los subtítulos para que te ayudes con lo que se dice.</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/f_Wjqin9SXU/0.jpg" src="https://www.youtube.com/embed/f_Wjqin9SXU?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;">¿Ahora, qué harás? 😃</span></div>
<div style="text-align: justify;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-86827443891736803202017-05-26T17:40:00.000-05:002017-05-31T10:38:55.294-05:00Cómo simular mensajes Toast en Android, iOS, Windows y OSX usando C++<span style="font-family: "verdana" , sans-serif;">Si vienes de programar en Java para Android seguramente buscarás alguna función similar en Delphi o C++ Builder. Sin embargo ésta función no existe de manera predeterminada. Lo que encontrarás son los típicos mensajes de pantalla al estilo de Windows como por ejemplo ShowMessage("..."); los mismos que requieren que el usuario los atiendan, para ello muestran uno o más botones (dependiendo del tipo de función utilizado para generar el mensaje) para que el usuario presione (clic) en algún botón para que así puedan desaparecer.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijPgWOAbJc7rfsBKaCn6SnCYmSjR3gvjIjw9KXGOAjRNVg7rAjKcIgm3uaMl1rqDs37Llc5T6HvM3pL25nZct1ts-L72CIevuYYBqJokycCXHtBv5ugpmzpXkMastbsTpXkvxEUlFdyt8/s1600/WhatsApp+Image+2017-05-26+at+16.49.18.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1280" data-original-width="720" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijPgWOAbJc7rfsBKaCn6SnCYmSjR3gvjIjw9KXGOAjRNVg7rAjKcIgm3uaMl1rqDs37Llc5T6HvM3pL25nZct1ts-L72CIevuYYBqJokycCXHtBv5ugpmzpXkMastbsTpXkvxEUlFdyt8/s320/WhatsApp+Image+2017-05-26+at+16.49.18.jpeg" width="180" /></a><span style="font-family: "verdana" , sans-serif;">En cambio, los mensajes Toast de Android son muy buenos ya que muestran información corta al usuario y se desvanecen automáticamente, lo cual, en ciertas situaciones los hacen muy prácticos y de mucha utilidad.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Hoy veremos cómo hacer esto en C++ de manera muy fácil para que desde cualquier aplicación que estés desarrollando los puedas instanciar como a cualquier objeto y, con una línea de código podrás mandar mensajes tipo Toast a la pantalla del usuario.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span><span style="font-family: "verdana" , sans-serif;">Mira la imagen de la izquierda, el texto se auto ajusta al ancho y alto del mensaje enviado sin requerir mayor código. Inclusive si agregas algunas propiedades adicionales a este ejemplo podrías cambiar el fondo del mensaje, el borde, el color del texto así como el tipo de letra y otras de sus propiedades.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"></span><br />
<span style="font-family: "verdana" , sans-serif;">Además al utilizar C++/Delphi de embarcadero.com este código prácticamente funcionará en cualquier plataforma 😀😀😀</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<a name='more'></a><span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Empecemos...</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<h3>
<span style="font-family: "verdana" , sans-serif;"><b>¿Qué usaremos?</b></span></h3>
<ul>
<li><span style="font-family: "verdana" , sans-serif;">TFrame</span></li>
<li><span style="font-family: "verdana" , sans-serif;">TFloatAnimation</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Anonymous Thread y </span></li>
<li><span style="font-family: "verdana" , sans-serif;">Sincronizacón con el UI</span></li>
<li><span style="font-family: "verdana" , sans-serif;"><a href="http://franciscomuro.blogspot.pe/2015/10/expresion-lambda-en-c11.html" target="_blank">Función Lambda</a></span></li>
<li><span style="font-family: "verdana" , sans-serif;">TPlatformServices</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Algo de <b>C++ 11</b> / <b>Clang</b></span></li>
</ul>
<div>
<br />
<h3>
<span style="font-family: "verdana" , sans-serif;">Ahora agregamos los componentes y definiremos sus propiedades:</span></h3>
</div>
<span style="font-family: "verdana" , sans-serif;">En la ventana "Object Inspector" podrán definir las propiedades.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">
1. Crear un nuevo proyecto multiplataforma C++<br />
2. Agregar del "Tool Palette" el componente "Speedbutton"</span><br />
<ul>
<li><span style="font-family: "verdana" , sans-serif;">Align: Center</span></li>
<li><span style="font-family: "verdana" , sans-serif;">StyleLookup: buttonstyle</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Text: Show Toast!</span></li>
</ul>
<span style="font-family: "verdana" , sans-serif;">
3. En la ventana "Project Manager"</span><br />
<ul><span style="font-family: "verdana" , sans-serif;">
<li>Clic derecho al Proyect1.exe</li>
<li>Add new -> Other...</li>
<li>En el folder "C++Builder Files</li>
<li>Seleccionar "FireMonkey Frame"</li>
<li>Clic en el botón [Ok]</li>
</span></ul>
<span style="font-family: "verdana" , sans-serif;">
4. En la ventana "Object Inspector"</span><br />
<ul><span style="font-family: "verdana" , sans-serif;">
<li>Name: fToastMsg</li>
<li>Visible: false</li>
</span></ul>
<span style="font-family: "verdana" , sans-serif;">
5. Agregar del "Tool Palette" el componente "FloatAnimation"</span><br />
<ul><span style="font-family: "verdana" , sans-serif;">
<li>PropertyName: Position.Y</li>
<li>Trigger: IsVisible=true</li>
</span></ul>
<span style="font-family: "verdana" , sans-serif;">
6. Agregar del "Tool Pallete" el componente "TRoundRect"</span><br />
<ul><span style="font-family: "verdana" , sans-serif;">
<li>Align: Client</li>
<li>Fill: (a gusto del coder)</li>
<li>Stroke: (a gusto del coder)</li>
</span></ul>
<span style="font-family: "verdana" , sans-serif;">
7. Agregar del "Tool Pallete" el componente "TLabel"; dentro del componente anterior.</span><br />
<ul><span style="font-family: "verdana" , sans-serif;">
<li>Align: Center</li>
<li>AutoSize: True</li>
<li>Name: lblWaitMsg</li>
<li>TextSettings->HorzAlign: Center</li>
<li>TextSettings->WordWrap: False</li>
</span></ul>
<span style="font-family: "verdana" , sans-serif;">Te debe de quedar algo así:</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL3K7He1ZryuHhG3Uv5BgUX0qYrnEapTWn6vf_8JxB5b7G8K0wEaZxJUeeIOLIu2CgYXkGSeW7A-Kk3zeqqVvd_YojWO7UVsnqRCdA7umHdBjS7asYUKGykWTuhDmpJgDmLcSPOeYvICM/s1600/2017-05-29+%25282%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="c++ embarcadero" border="0" data-original-height="278" data-original-width="514" height="215" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL3K7He1ZryuHhG3Uv5BgUX0qYrnEapTWn6vf_8JxB5b7G8K0wEaZxJUeeIOLIu2CgYXkGSeW7A-Kk3zeqqVvd_YojWO7UVsnqRCdA7umHdBjS7asYUKGykWTuhDmpJgDmLcSPOeYvICM/s400/2017-05-29+%25282%2529.png" title="GUI" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">
</span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Ok. </span><br />
<h3>
<span style="font-family: "verdana" , sans-serif;">Ahora un poco de código C++</span></h3>
<span style="font-family: "verdana" , sans-serif;">8. Agregar en Unit2.h, en la sección public la siguiente línea:</span><br />
<span style="font-family: "verdana" , sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>void __fastcall ShowToast(String pMsg);</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Te debe de quedar algo así:</span><br />
<span style="font-family: "verdana" , sans-serif;">
<!-- HTML generated using hilite.me --></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-weight: bold;">class</span> <span style="color: #bb0066; font-weight: bold;">TfToastMsg</span> <span style="color: #333333;">:</span> <span style="color: #008800; font-weight: bold;">public</span> TFrame
{
<span style="color: #997700; font-weight: bold;">__published:</span> <span style="color: #888888;">// IDE-managed Components</span>
TFloatAnimation <span style="color: #333333;">*</span>FloatAnimation1;
TRoundRect <span style="color: #333333;">*</span>RoundRect1;
TLabel <span style="color: #333333;">*</span>lblWaitMsg;
<span style="color: #997700; font-weight: bold;">private:</span> <span style="color: #888888;">// User declarations</span>
<span style="color: #997700; font-weight: bold;">public:</span> <span style="color: #888888;">// User declarations</span>
<span style="color: #008800; font-weight: bold;">__fastcall</span> <span style="color: #0066bb; font-weight: bold;">TfToastMsg</span>(TComponent<span style="color: #333333;">*</span> Owner);
<span style="color: #333399; font-weight: bold;">void</span> <span style="color: #008800; font-weight: bold;">__fastcall</span> <span style="color: #0066bb; font-weight: bold;">ShowToast</span>(String pMsg);
};
</pre>
</td></tr>
</tbody></table>
</div>
<span style="font-family: "verdana" , sans-serif;">
</span><br />
<span style="font-family: "verdana" , sans-serif;">9. Agregar en Unit2.cpp, al final, final:</span><br />
<span style="font-family: "verdana" , sans-serif;">
<!-- HTML generated using hilite.me --></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: #333399; font-weight: bold;">void</span> <span style="color: #008800; font-weight: bold;">__fastcall</span> TfToastMsg<span style="color: #333333;">::</span>ShowToast(String pMsg)
{
<span style="color: #008800; font-weight: bold;">auto</span> <span style="color: #333333;">*</span>xForm <span style="color: #333333;">=</span> ((TForm<span style="color: #333333;">*</span>)<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>Owner);
lblWaitMsg<span style="color: #333333;">-></span>Text <span style="color: #333333;">=</span> pMsg;
<span style="color: #008800; font-weight: bold;">if</span> ( xForm<span style="color: #333333;">-></span>Width <span style="color: #333333;"><</span> lblWaitMsg<span style="color: #333333;">-></span>Width ) {
lblWaitMsg<span style="color: #333333;">-></span>WordWrap <span style="color: #333333;">=</span> <span style="color: #007020;">true</span>;
lblWaitMsg<span style="color: #333333;">-></span>Width <span style="color: #333333;">=</span> xForm<span style="color: #333333;">-></span>Width<span style="color: #333333;">*</span><span style="color: #6600ee; font-weight: bold;">0.8</span>;
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>Width <span style="color: #333333;">=</span> lblWaitMsg<span style="color: #333333;">-></span>Width<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">15</span>;
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>Height <span style="color: #333333;">=</span> lblWaitMsg<span style="color: #333333;">-></span>Height<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">8</span>;
} <span style="color: #008800; font-weight: bold;">else</span> {
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>Width <span style="color: #333333;">=</span> lblWaitMsg<span style="color: #333333;">-></span>Width<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">15</span>;
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>Height <span style="color: #333333;">=</span> lblWaitMsg<span style="color: #333333;">-></span>Height<span style="color: #333333;">+</span><span style="color: #0000dd; font-weight: bold;">8</span>;
}
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>Position<span style="color: #333333;">-></span>X <span style="color: #333333;">=</span> (xForm<span style="color: #333333;">-></span>Width<span style="color: #333333;">/</span><span style="color: #0000dd; font-weight: bold;">2</span>) <span style="color: #333333;">-</span> (<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>Width<span style="color: #333333;">/</span><span style="color: #0000dd; font-weight: bold;">2</span>);
<span style="color: #333399; font-weight: bold;">int</span> xDistFromBottom<span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">120</span>;
<span style="color: #008800; font-weight: bold;">if</span> (<span style="color: #007020;">false</span>) {
FloatAnimation1<span style="color: #333333;">-></span>StartValue <span style="color: #333333;">=</span> <span style="color: #0000dd; font-weight: bold;">0</span>;
FloatAnimation1<span style="color: #333333;">-></span>StopValue <span style="color: #333333;">=</span> xDistFromBottom;
} <span style="color: #008800; font-weight: bold;">else</span> {
FloatAnimation1<span style="color: #333333;">-></span>StartValue <span style="color: #333333;">=</span> xForm<span style="color: #333333;">-></span>Height;
FloatAnimation1<span style="color: #333333;">-></span>StopValue <span style="color: #333333;">=</span> xForm<span style="color: #333333;">-></span>Height<span style="color: #333333;">-</span>xDistFromBottom;
}
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>Visible<span style="color: #333333;">=</span><span style="color: #007020;">true</span>; <span style="color: #888888;">//Starts animation.</span>
Application<span style="color: #333333;">-></span>ProcessMessages(); <span style="color: #888888;">//pase a otros procesos</span>
}
</pre>
</td></tr>
</tbody></table>
</div>
<span style="font-family: "verdana" , sans-serif;">
</span><br />
<span style="font-family: "verdana" , sans-serif;">Quizás aquí puedas mejorar el código utilizando las propiedades Padding y Margin de los componentes, si es así me dejas saber :)</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">10. Presionar la tecla F12 o simplemente ir al modo "Diseño", seleccionar el componente "FloatAnimation1".</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">11. En la ventana "Object Inspector", pestaña "Events", dale doble clic a la derecha del evento "OnFinish"</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">12. Incluir el siguiente código de tal forma que quede así:</span><br />
<span style="font-family: "verdana" , sans-serif;">
<!-- HTML generated using hilite.me --></span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: #333399; font-weight: bold;">void</span> <span style="color: #008800; font-weight: bold;">__fastcall</span> TfToastMsg<span style="color: #333333;">::</span>FloatAnimation1Finish(TObject <span style="color: #333333;">*</span>Sender)
{
<span style="color: #008800; font-weight: bold;">if</span>(<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>FloatAnimation1<span style="color: #333333;">-></span>Inverse) {
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>FloatAnimation1<span style="color: #333333;">-></span>Inverse<span style="color: #333333;">=</span><span style="color: #007020;">false</span>;
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>Visible<span style="color: #333333;">=</span><span style="color: #007020;">false</span>;
} <span style="color: #008800; font-weight: bold;">else</span> {
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>FloatAnimation1<span style="color: #333333;">-></span>Inverse<span style="color: #333333;">=</span><span style="color: #007020;">true</span>;
TThread<span style="color: #333333;">::</span>CreateAnonymousThread([<span style="color: #008800; font-weight: bold;">this</span>]() <span style="color: #333333;">-></span> <span style="color: #333399; font-weight: bold;">void</span> {
Sleep(<span style="color: #0000dd; font-weight: bold;">1000</span>); <span style="color: #888888;">//Segundos que se muestra el mensaje al usuario</span>
TThread<span style="color: #333333;">::</span>Synchronize(TThread<span style="color: #333333;">::</span>CurrentThread, [<span style="color: #008800; font-weight: bold;">this</span>]() <span style="color: #333333;">-></span> <span style="color: #333399; font-weight: bold;">void</span> {
<span style="color: #008800; font-weight: bold;">this</span><span style="color: #333333;">-></span>FloatAnimation1<span style="color: #333333;">-></span>Start();
});
})<span style="color: #333333;">-></span>Start();
}
}
</pre>
</td></tr>
</tbody></table>
</div>
<span style="font-family: "verdana" , sans-serif;">
</span><br />
<span style="font-family: "verdana" , sans-serif;">Ésta es la parte bella y mágica para dejar animar correctamente la desaparición del mensaje Toast mostrado al usuario, porque sin el soporte de la función <b>Anónima</b>, <b>lambda </b>y la <b>sincronización </b>con el UI, no sería posible la definición de este código de esta manera tan sencilla.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Al final, ese pedacito de código sólo permite que el mensaje se mantenga visible </span><span style="font-family: "verdana" , sans-serif;">al usuario </span><span style="font-family: "verdana" , sans-serif;">por un segundo (1s), para que NO desaparezca tan inmediatamente después de aparecer... inclusive podrían definir alguna propiedad para reemplazar la línea 9 "Sleep(1000)" por algo así como "Sleep(TimeUP)".</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Analicen que dentro de la función <b>Anónima</b>, que es <b>multi-thread</b>, está definida la función <b>lambda</b> y dentro de esta <b>lambda </b>se define una función <b>Sincronizar</b>, con otra función <b>lambda </b>para actualizar correctamente el UI al iniciar la desaparición del mensaje Toast. En ambos casos en lugar de éstas funciones <b>lambda </b>se podrían usar funciones estándar del tipo "void __fastcall funct1(void);", pero por suerte con las <b>lambda </b>esto se simplifica enormemente. Yes, I 💖 <b>lambda</b>!</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">13. Hacer el proyecto compatible a <b>Clang </b>/ <b>C++11</b> :)</span><br />
<ul>
<li><span style="font-family: "verdana" , sans-serif;">Ir al Menú Project->Options</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Sección "<b>C++ Compiler</b>"</span></li>
<li><span style="font-family: "verdana" , sans-serif;">"Use 'classic' Borland compiler": False (Desmarcarlo)</span></li>
<li><span style="font-family: "verdana" , sans-serif;">Clic en [ Ok ]</span></li>
</ul>
<span style="font-family: "verdana" , sans-serif;">14. Ahora vamos a Unit1.cpp</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">15. Agregar "#include "Unit2.h" debajo de "#include "Unit1.h" en "Unit1.cpp"</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">16. En modo diseño (F12), Doble clic al botón "Show Toast!" para crear el evento clic y agregaremos la siguiente línea de código:</span><br />
<span style="font-family: "verdana" , sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>(new TfToastMsg(this))->ShowToast("Hola Mundo!");</span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3
4</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: #333399; font-weight: bold;">void</span> <span style="color: #008800; font-weight: bold;">__fastcall</span> TForm1<span style="color: #333333;">::</span>SpeedButton1Click(TObject <span style="color: #333333;">*</span>Sender)
{
(<span style="color: #008800; font-weight: bold;">new</span> TfToastMsg(<span style="color: #008800; font-weight: bold;">this</span>))<span style="color: #333333;">-></span>ShowToast(<span style="background-color: #fff0f0;">"Hola Mundo!"</span>);
}
</pre>
</td></tr>
</tbody></table>
</div>
<br />
<span style="font-family: "verdana" , sans-serif;">LISTO!!!</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Presionamos F9 para correr la aplicación y obtendremos el mensaje Toast flotante...</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgojdACPnJ7VoLbGZlBq4SAlaunaQIw679EDJbwuHeuxUJVRpaGKrgk9retutJkBX9RsP-msFDdBRBqHbMJDJes0PvhcAW_LxNUtKyNWmfCtSSSPf5S3pHMOdMFWz148UPhogVNDtCaff4/s1600/2017-05-29+%25284%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="320" data-original-width="229" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgojdACPnJ7VoLbGZlBq4SAlaunaQIw679EDJbwuHeuxUJVRpaGKrgk9retutJkBX9RsP-msFDdBRBqHbMJDJes0PvhcAW_LxNUtKyNWmfCtSSSPf5S3pHMOdMFWz148UPhogVNDtCaff4/s1600/2017-05-29+%25284%2529.png" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span><span style="font-family: "verdana" , sans-serif;">Recuerden, este código correrá del mismo modo en Android, iOS, OSX y en Windows 10 👌👍</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><a href="http://franciscomuro.blogspot.pe/p/codigo-completo-c-builder-esta-pagina.html" target="_blank">Más detalles del proyecto C++</a></span>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-50410466447498108502017-04-18T17:18:00.001-05:002017-05-31T10:38:55.276-05:00Enviar una URL a otra App en Android/iOS usando C++<span style="font-family: "verdana" , sans-serif;">Algunos protocolos comunes que se asocian a esta acción:</span><br />
<ul>
<li><span style="font-family: "verdana" , sans-serif;">http, tel, sms, fb, mailto, twitter, geo, etc.</span></li>
</ul>
<div>
<span style="font-family: "verdana" , sans-serif;">Ejemplos soportados según cada plataforme:</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Android:</b></span></div>
<div>
<ul>
<li><span style="font-family: "verdana" , sans-serif;">content://contacts/people/</span></li>
<li><span style="font-family: "verdana" , sans-serif;">content://contacts/people/1</span></li>
<li><span style="font-family: "verdana" , sans-serif;">geo://0,0?q=5617 Scotts Valley Drive, Scotts Valley, CA 95066</span></li>
<li><span style="font-family: "verdana" , sans-serif;">geo://46.191200, -122.194400 </span></li>
</ul>
</div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>iOS:</b></span></div>
<div>
<ul>
<li><span style="font-family: "verdana" , sans-serif;">http://maps.apple.com?q=5617 Scotts Valley Drive, Scotts Valley, CA 95066</span></li>
</ul>
<div>
<span style="font-family: "verdana" , sans-serif;"></span><br />
<a name='more'></a></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Para ambos:</b></span></div>
</div>
<div>
<ul>
<li><span style="font-family: "verdana" , sans-serif;">http://www.embarcadero.com/</span></li>
<li><span style="font-family: "verdana" , sans-serif;">tel://(01)734-3131</span></li>
<li><span style="font-family: "verdana" , sans-serif;">sms://1234</span></li>
<li><span style="font-family: "verdana" , sans-serif;">http://twitter.com/coderage (Abre el cliente twitter)</span></li>
<li><span style="font-family: "verdana" , sans-serif;">mailto:jim.mckeeth@embarcadero.com</span></li>
<li><span style="font-family: "verdana" , sans-serif;">twitter://user?screen_name=coderage</span></li>
<li><span style="font-family: "verdana" , sans-serif;">fb://profile/34960937498 (ID del usuario Facebook)</span></li>
<li><span style="font-family: "verdana" , sans-serif;">fb-messenger://share?link=http://www.embarcadero.com</span></li>
<li><span style="font-family: "verdana" , sans-serif;">whatsapp://send?text=Hola</span></li>
</ul>
</div>
<div>
</div>
<div>
<span style="font-family: "verdana" , sans-serif;">El código es una base para que lo perfeccionen, en algunos casos se requiere URLEncode y en otros no, juega con ello en cada caso.</span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">OpenURL.h:</span></div>
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-style: italic;">//---------------------------------------------------------------------------</span>
<span style="color: teal;">#ifndef OpenURLH</span>
<span style="color: teal;">#define OpenURLH</span>
<span style="color: #008800; font-style: italic;">//---------------------------------------------------------------------------</span>
<span style="color: teal;">#include <System.Classes.hpp></span>
<span style="color: teal;">#include <System.SysUtils.hpp></span>
<span style="color: teal;">#include <IdURI.hpp></span>
<span style="color: teal;">#include <FMX.Dialogs.hpp></span>
<span style="color: teal;">#if defined(__ANDROID__)</span>
<span style="background-color: #e3d2d2; color: #a61717;">#</span>include <Androidapi.Helpers.hpp>
<span style="background-color: #e3d2d2; color: #a61717;">#</span>include <FMX.Helpers.Android.hpp>
<span style="background-color: #e3d2d2; color: #a61717;">#</span>include <Androidapi.JNI.GraphicsContentViewText.hpp>
<span style="background-color: #e3d2d2; color: #a61717;">#</span>include <Androidapi.JNI.Net.hpp>
<span style="background-color: #e3d2d2; color: #a61717;">#</span>include <Androidapi.JNI.JavaTypes.hpp>
<span style="color: teal;">#endif</span>
<span style="color: teal;">#if defined(__APPLE__)</span>
<span style="background-color: #e3d2d2; color: #a61717;">#</span>include <Macapi.Helpers.hpp>
<span style="background-color: #e3d2d2; color: #a61717;">#</span>include <iOSapi.Foundation.hpp>
<span style="background-color: #e3d2d2; color: #a61717;">#</span>include <FMX.Helpers.iOS.hpp>
<span style="color: teal;">#endif</span>
<span style="color: navy; font-weight: bold;">class</span> TOpenURL : <span style="color: navy; font-weight: bold;">public</span> TObject
{
private:
public:
<span style="color: navy; font-weight: bold;">__fastcall</span> TOpenURL();
<span style="color: navy; font-weight: bold;">__fastcall</span> ~TOpenURL();
<span style="color: navy; font-weight: bold;">bool</span> OpenURL(<span style="color: navy; font-weight: bold;">const</span> String pURL, <span style="color: navy; font-weight: bold;">const</span> <span style="color: navy; font-weight: bold;">bool</span> pDisplayError=false);
};
<span style="color: teal;">#endif</span>
</pre>
</td></tr>
</tbody></table>
</div>
<div>
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;">OpenURL.cpp</span></div>
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;"> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44</pre>
</td><td><pre style="line-height: 125%; margin: 0;"><span style="color: #008800; font-style: italic;">//---------------------------------------------------------------------------</span>
<span style="color: teal;">#pragma hdrstop</span>
<span style="color: teal;">#include "OpenURL.h"</span>
<span style="color: #008800; font-style: italic;">//---------------------------------------------------------------------------</span>
<span style="color: teal;">#pragma package(smart_init)</span>
<span style="color: #008800; font-style: italic;">//---------------------------------------------------------------------------</span>
<span style="color: navy; font-weight: bold;">__fastcall</span> TOpenURL::TOpenURL()
{
}
<span style="color: #008800; font-style: italic;">//---------------------------------------------------------------------------</span>
<span style="color: navy; font-weight: bold;">__fastcall</span> TOpenURL::~TOpenURL()
{
}
<span style="color: #008800; font-style: italic;">//---------------------------------------------------------------------------</span>
<span style="color: navy; font-weight: bold;">bool</span> TOpenURL::OpenURL(<span style="color: navy; font-weight: bold;">const</span> String pURL, <span style="color: navy; font-weight: bold;">const</span> <span style="color: navy; font-weight: bold;">bool</span> pDisplayError)
{
<span style="color: teal;">#if defined(__ANDROID__)</span>
String xURL = (pURL.Pos(<span style="color: blue;">"mailto:"</span>)==<span style="color: blue;">0</span>) ? pURL : TIdURI::URLEncode(pURL);
_di_JIntent xIntent = TJIntent::JavaClass->init(
TJIntent::JavaClass->ACTION_VIEW,
TJnet_Uri::JavaClass->parse(StringToJString(xURL)) );
try {
SharedActivity()->startActivity(xIntent);
<span style="color: navy; font-weight: bold;">return</span> true;
} <span style="color: navy; font-weight: bold;">catch</span> (<span style="color: navy; font-weight: bold;">const</span> Exception &e) {
<span style="color: navy; font-weight: bold;">if</span> (pDisplayError) ShowMessage(<span style="color: blue;">"Error: "</span> + e.Message);
<span style="color: navy; font-weight: bold;">return</span> false;
}
<span style="color: teal;">#elif defined(__APPLE__)</span>
NSUrl NSU = StrToNSUrl(TIdURI::URLEncode(pURL));
<span style="color: navy; font-weight: bold;">if</span> (SharedApplication()->canOpenURL(NSU)) {
<span style="color: navy; font-weight: bold;">return</span> SharedApplication()->openUrl(NSU);
} <span style="color: navy; font-weight: bold;">else</span> {
<span style="color: navy; font-weight: bold;">if</span> (pDisplayError) ShowMessage(<span style="color: blue;">"Error, no se pudo abrir el URL:\n" + pURL</span>);
<span style="color: navy; font-weight: bold;">return</span> false;
}
<span style="color: teal;">#else</span>
<span style="color: navy; font-weight: bold;">throw</span>(Exception(<span style="color: blue;">"Platform not supported!"</span>));</pre>
<pre style="line-height: 125%; margin: 0;"><span style="color: teal;">#endif</span>
}
</pre>
</td></tr>
</tbody></table>
</div>
<div>
<br /></div>
<div>
<span style="font-family: "verdana" , sans-serif;">El ejemplo original la encontré en código Delphi XE5 </span><a href="http://delphi.org/2013/10/sending-a-url-to-another-app-on-android-and-ios-with-delphi-xe5/" style="font-family: Verdana, sans-serif;" target="_blank">aquí</a><span style="font-family: "verdana" , sans-serif;">.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">¿Cómo usarla? aquí unas pocas líneas de código:</span><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2</pre>
</td><td><pre style="line-height: 125%; margin: 0;"> std::unique_ptr<TOpenURL> xOURL(<span style="color: navy; font-weight: bold;">new</span> TOpenURL());
xOURL->OpenURL(<span style="color: blue;">"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZZKU4L2CD2Y28"</span>);
</pre>
</td></tr>
</tbody></table>
</div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><b>Nota:</b> No tuve opción de</span><span style="font-family: "verdana" , sans-serif;"> probarlo en iPhone.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-50260125856757649172017-03-22T10:10:00.000-05:002017-05-31T10:38:55.273-05:00Configurar RAD Studio con RedHat o Ubuntu para el desarrollo en Linux<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div style="text-align: center;">
<span style="font-family: "verdana" , sans-serif;"><b><a href="http://chapmanworld.com/wp-content/uploads/2016/12/2e1ax_embarcadero_entry_Ubuntu-Tux.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEh7ocTj8gUF2NTWO01c7HV-kLeBlJs25QxUyF5Ti5wl-iugl9SYzba1efHAPxmVlripIlaBPT26Ox4pO-1Gx-y7JZJf_3fZjLVNOe7mL3NQZfpDdAqrrCACBRt0aP65DTTgBi3ZZ2_kBaQsoA5S3wevMGPLHvloKzj9xVbaI-Bzpj2pSQFQwbZ3gqjDNYZ96qvHQD0iGBwM05M" /></a></b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<a name='more'></a><span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Este post es una traducción del post original escrito por <a href="http://chapmanworld.com/author/administrator/">CRAIG CHAPMAN</a>. En caso prefieran leer la versión en inglés, vayan a <a href="http://chapmanworld.com/2016/12/29/configure-delphi-and-redhat-or-ubuntu-for-linux-development/">chapmanworld.com</a>.<br /><br />Una de las características más emocionantes de la nueva versión 10.2 de RAD Studio, la misma que ya se liberó en versión RTM (Release to Manufacturer), es la compatibilidad con Linux. En este post vamos a guiarlos a través de la configuración del entorno de desarrollo para crear y publicar aplicaciones en RedHat Enterprise o Ubuntu versión 16.04 utilizando RAD Studio.<br /><br />A partir de aquí me referiré a RAD Studio, Delphi y C++ Builder como sinónimos. Tengan en cuenta que es muy probable que los usuarios con suscripción activa puedan ya recibir esta versión, es decir, probablemente cualquier usuario activo de la versión Berlín, la podrá tener, o muy pronto la tendrá<br /><br />Este post va a ser algo largo, y puede haber partes que no sean relevantes para ti. Por ejemplo, si ya tienes un servidor RedHat en ejecución, es probable que no necesites dicha sección. Del mismo modo, es posible que ya estés familiarizado con algún software de virtualización y no necesitarás las instrucciones para instalar un VirtualBox de Oracle, compondré este post en secciones para que puedas saltar a las partes que te interesan.</b></span><br />
<ol><span style="font-family: "verdana" , sans-serif;"><b>
<li>Seleccionar una versión Linux a utilizar (Se explica algunas diferencias)</li>
<li>Lo que necesitarás</li>
<li>Instalar Virtual Box de Oracle</li>
<li>Crear una Máquina Virtual para el Desarrollo</li>
<li>Instalar RedHat</li>
<li>Instalar Ubuntu (sólo necesitas uno!)</li>
<li>Instalar PAServer (obligatorio)</li>
<li>Publicar una aplicación</li>
<li>Sobre el directorio "scratch-dir"</li>
</b></span></ol>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Como ven, son varias secciones a cubrir!<br />Como el tema es largo con muchas instrucciones, evitaremos entrar en mucho detalle y proveeré sobre las opciones y configuraciones específicas a esta prueba. En caso tengan sugerencias, o si encuentran problemas siguiendo estas instrucciones, o mejor aún tienen soluciones a potenciales problemas o a problemas conocidos, por favor comenta aquí en el el blog original de Craig arriba señalado. Recuerda que otros se pueden beneficiar de tus comentarios.<br /><br /><br />Empecemos!<br /><br /><br /><span style="font-size: large;">1. Seleccionar una versión de Linux</span><br />Su primera decisión será sobre cuál es la distribución de Linux que le gustaría utilizar para la implementación de su aplicación. La versión RAD Studio ofrece dos opciones que serán soportadas oficialmente: RedHat Enterprise y Ubuntu 16.04. (Nota: Otras versiones de Linux puedan no funcionar igual de bien, pero debido a que existe una amplia variación entre los sistemas operativos basados en Linux, el soporte oficial se limita a estas dos distribuciones populares).<br /><br />Entonces, ¿cuál es la diferencia entre las dos distribuciones? No entraremos en muchos detalles sobre este tema, ya que puedes investigar cada plataforma para decidir qué preferirías utilizar, pero te daremos algunos consejos básicos para empezar.<br /><br />Para entender... Hace mucho tiempo, cuando los sistemas operativos Linux se estaban convirtiendo en populares, hubieron dos distribuciones líderes que comenzaron a surgir de entre todas las otras opciones. Éstas eran Debian y RedHat. Debian fue fundada por Ian Murdock bajo un manifiesto que detallaba su naturaleza de código abierto y estándares abiertos, y bajo la Licencia Pública GNU con intenciones de alentar contribuciones hacia el desarrollo del sistema operativo, con el apoyo de su comunidad de usuarios.<br /><br />En contraste, la compañía Red Hat lanzó su "RedHat Commercial Linux", que más tarde fue renombrado como "RedHat Enterprise Linux (RHEL)", con un modelo más comercial, pero con ediciones libres de uso, gratuitas denominadas Fedora o Centos. Su modelo parecía dirigido a la fusión de los beneficios del desarrollo comercial y de código abierto, al tiempo que promovía la relevancia de Linux para los clientes empresariales. RedHat, por lo tanto, ofrece soporte empresarial para RHEL, mientras que honra la naturaleza de código abierto de Linux con Fedora y/o Centos. Si seleccionas RedHat puedes comenzar de forma gratuita con su suscripción de desarrollador, pero tendrás que pagar una licencia comercial antes de implementar tu aplicación en tu empresa. Por supuesto, puedes intentar usar una de sus opciones libres de costo de Fedora o Centos, que debería ser en gran parte compatible, pero éstas no son oficialmente soportadas por RedHat ni Embarcadero.<br /><br />Ubuntu es una bifurcación del sistema operativo Debian que es desarrollado y mantenido por la empresa británica Canonical Ltd, fundada y financiada originalmente por Mark Shuttleworth, un empresario de Sudáfrica. Canonical también ofrece soporte comercial para usuarios empresariales, sin embargo, debido al manifiesto presentado por primera vez para el sistema Debian por Ian Murdock, no existe una versión comercial del sistema operativo. Los usuarios domésticos y los miembros de la comunidad obtienen la misma versión del sistema operativo que hacen los clientes comerciales, pero con soporte comunitario en lugar de soporte comercial. Si selecciona Ubuntu para su aplicación, puede desarrollar e incluso implementar su aplicación sin tener que pagar por el sistema operativo, pero si lo hace, estará a merced del apoyo de la comunidad que ha renunciado a la opción de soporte comercial.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><span style="font-size: large;"><br /></span></b></span>
<span style="font-family: "verdana" , sans-serif;"><b><span style="font-size: large;">2. Lo que necesitarás</span></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>2.1. RedHat o Ubuntu</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br />A menos que tengas un servidor existente, necesitarás una imagen ISO (imagen de disco) de RedHat o Ubuntu lista para ser instalada en una máquina virtual.</b></span><br />
<ul><span style="font-family: "verdana" , sans-serif;"><b>
<li>Para RedHat, usaremos una edición de desarrollador, que se puede descargar aquí (es de suscripción gratuita): <a href="https://developers.redhat.com/blog/2016/03/31/no-cost-rhel-developer-subscription-now-available/">https://developers.redhat.com/blog/2016/03/31/no-cost-rhel-developer-subscription-now-available/</a></li>
<li>Para Ubuntu, usaremos la edición de servidor (LTS) que se puede descargar aquí: <a href="https://www.ubuntu.com/download/server">https://www.ubuntu.com/download/server</a></li>
</b></span></ul>
<span style="font-family: "verdana" , sans-serif;"><b>
2.2. Software de Virtualización</b></span><br />
<ul><span style="font-family: "verdana" , sans-serif;"><b>
<li>Estaremos utilizando Oracles VirtualBox que puede descargarse aquí: <a href="https://www.virtualbox.org/wiki/Downloads">https://www.virtualbox.org/wiki/Downloads</a></li>
<li>Descargar el VirtualBox para host de Windows, y el paquete de extensión.</li>
</b></span></ul>
<span style="font-family: "verdana" , sans-serif;"><b>
2.3. WinSCP (SFTP)<br /><br />Necesitaremos una forma de transportar la parte PAServer de RAD Studio a la máquina Linux. Para esto utilizaremos WinSCP que utiliza SSH para transferir archivos a nuestro servidor Linux. Ambas versiones de Linux soportan un servidor SSH que hace esto conveniente. Puede descargar WinSCP aquí: <a href="https://winscp.net/eng/download.php">https://winscp.net/eng/download.php</a> <i><-*Advertencia* Si bien esta es una excelente herramienta gratuita, tiene un irritante sitio web con anuncios que aparecen como enlaces de descarga, tenga cuidado en descargar WinSCP y no otra cosa.</i><br /><br />2.4. Edición de RAD Studio 10.2 Enterprise o superior.<br /><br />Disculpas a aquellos que no están en el Programa Beta y por lo tanto tendrán que esperar el lanzamiento oficial, espero que haya pasado suficiente tiempo entre escribir esto y leerlo, para que tengan acceso a una versión compatible con Linux de RAD Studio.<br /><br /><br /><span style="font-size: large;">3. Instalar Virtual Box de Oracle</span><br /><br />La instalación de VirtualBox es bastante fácil, pero antes de empezar debería darle una advertencia. La instalación de VirtualBox implicará la instalación de controladores de software para gráficos, audio, redes y otros. Esto interrumpirá el uso normal de su sistema. Por ejemplo, si está descargando algo en segundo plano, su descarga puede ser interrumpida por la instalación del controlador de red. Si está escuchando música o quizás escuchando un tutorial de audio sobre la integración de técnicas de generación de procedimientos en su próximo proyecto de desarrollo de videojuegos, o algún otro audio, puede congelarse mientras se instalan los controladores de audio. En resumen, detener lo que está haciendo y cerrar tantos programas como sea posible antes de empezar... (así evitará situaciones raras o de error)<br /><br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_1.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEjtwmFr1N3A90HAy94uoZD2ugmL7TfZGHblEbEe2Ufr7QFq-sca3IuktV-oG3PHIvQQr6OvfQVkVuIZ7rRPfP8uIkZhCWvASseq-9JGEFNtH5tO0-7xu1a0DqwY4J86mEiX3nOvN4OinBLrI6YNbVSghttMCKA8E7wPZdQeBeNVihZCNgvPfICNFLc" /></a><br /><br />Clic "Next >"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_2.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEhpbG6ETkaZtqfbQjL23BlKVvwAA2M1Kwi2H55FydkKSHcKeg1OjVetgVO9cp2GlmC9hc8SGDtMgglB7dhe8cyH-PWW1rD2DN_8JlhR_EHTVLFTT7Go0yqi7j0yGvB2oD07Pv7vXNvkgDj2vbh88lIA3lS363i5bIlWWGVEBH0rdx0JQN0kieZAwoc" /></a><br /><br />Clic "Next >"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_3.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEjJZDLQOECyKBQynSytqrEQs3vYfMWPJg-D2rHO8yUs_JYaRFlcNpGgPYT2ZjupVKd2HvnvVcV8x8WVNq1zuVlCyhgbvIOUdtNKAwIg-X15H7GlWTOJsl0uu8r0scTj-luYTKloVuTUM4SCRf1JFxhzNVVoawduTrVdsDsJjN0YofuUmiwsxo-V9Ew" /></a></b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Clic "Next >"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_4.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEh8YipDZRJhykykiZQcpAs67onzCpU5l3lNqTUztEVdn1N9lXLG5l1I5xI4vBaxgT-ViytRATWV6dJEXW5pDuoxoPzC3ptHaWK0fd0bSLj2_lkRsoQevMlBXxMCtLBiMtD3KAOJxDZ78iwmpl4XNpta84L_sHrY1OjkxCyAsYB0Fr-ktClt624Wm8c" /></a><br /><br />Clic "Yes"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_5.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEh1-QNvBTb2IeGdI_rh4DTskDRiV8ji6sqLoZOyKPqC0UglxY01da_2z4lAHvB9xiNcufT-XG0MhbddZz5-v6BtLY0cONWRpp5yJ8iKVnhe6bAixG0qs4HrZ9k-mjP-ZXIglYo73lm99MTyZw_owNBCz_9iKAZSzezjKhBUUlgoi1gI6HpSsL-1KYk" /></a><br /><br />Clic "Install"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_6.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEgu4fRPLPbkSzUsODFWQX9L_jnKuKy5dEbiF5g5dBUpRbERZqZ1Cg3GP0rwzO9zD0iMn0_xNLG0M0QpjunT9vggHNL1rzb7kDtyeHMqMQYICyhjooha4nFP9GCavXIRYqhAIfuso9go-_EnULafyB7n1Y-EtgyaOB3nT3-nnZ9PjnayvAlANX1ZjGk" /></a><br /><br />Ahora a esperar, y mientras acepta los permisos de seguridad de Windows que muestra el instalador.<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_7.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEjw8U8DeJElGhdW1PC-IlqYECHYu_HRHMSAFmE4fdf5LJ2MTVpSlthV5RJz4G3n6k0oVgvNZpHrSL7cHFPV9bxZZQ9oqlSc5mgpv3OCCBLyivyH358gYVKjqEy3yLOoFRYX73yoPELs6nlBb-Nuq7BT7nLQOixpElcjLUjlpz_Phyphenhyphen2eiZLVe8vm1no" /></a><br /><br />Si la casilla de verificación "Always trust software from 'Oracle Corporation'" no está marcada, márquela ahora para que no obtenga una advertencia para cada controlador. <br /><br />Clic "Install" para continuar.<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_8.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEi-JPHTiQuX2wVITSNHTHBMD3uaJ2-3lYpmTVoWCoDgBR6SK9D3jy0HH4qj_B-i7yqw_VQpYpyvuulhmDejtPlnljw3ENhf7HgARxOkQmO3FmGYE5gxDPj7WiipN0CfizfDOmlWBNh5XtmlBVUXsphW8mSRQL8Fw_GBbjbWZ_xRvjUdqsujv1wxQhc" /></a><br /><br />Clic "Finish"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_9.png"><img border="0" height="420" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEgmtznzGxdoQR_Xk1ref8viio8YnfzJQBK-BO8UYF6dgJPmfTI55lGHLod7jMP4LBn5n_aqybZCkoX-16vZCLc0qGeLn47bTAeC4uJZQcvSSVVxDp5aEJv9SMSd02x4n0vnFp0VLiIqAePkcNhM8PmryOsYIaU625h2XLCJVtnm_4Tktca64T3Dh4k" width="640" /></a><br /><br />VirtualBox ahora debe abrirse y aparecer como en la captura de pantalla anterior. En este punto se le puede presentar un cuadro de diálogo como este ...<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_10.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEh5aLsvk3rg7v2wbtJ74Fza9pOU0DnBsZd16oY5FTChlBL2FbLqmqFiYSi33XoT2uAjkexv-MwzgdkM2M-1PVjC6F2AGoE7u3wHkfHCnG2Ky5gZXgc0rO-rbrahxygCOyT5rL1_z8ALy0-BHtuQlTreoybyMcCWt2Ml4H8UHKw600vWnwEFENmydC9v" /></a><br /><br />Este cuadro de diálogo te pregunta si desea descargar el paquete de extensión VirtualBox. Si seguiste nuestro consejo en la sección "2. Lo que necesitarás", ya tendrás esta descarga, de lo contrario haz clic en "Download". Si ya descargó el paquete de extensión, simplemente haga doble clic en el archivo que descargó para así instalarlo.<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBoxInstall_11.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEiPoGeJvHu9hDSItO0pphDTLBT194fc_ohHviUW912Pt0HVnHZd9mY8kp8FX0QbEpd0JZdzSwpN36D2FRL0edXY_kLhTajZnoyOHbnJvvzbQDNKicWNBBodZpWCmWW5w2FZvikvaFuSjSb9STbNjjlpm6vapXUoq1JS1vXckLNgtx4IN5yf4f28kAM7" /></a><br /><br />Listo!<br /><br /><br /><span style="font-size: large;">4. Crear una Máquina Virtual para el Desarrollo</span><br /><br />Antes de instalar RedHat o Ubuntu en una máquina virtual, debemos crear una máquina virtual adecuada para que el SO funcione bien.<br /><br />Para esto, crear una máquina virtual dentro de "Oracle VM Virtualbox Manager"...<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_1.png"><img border="0" height="483" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEg8xFY8tXslAX23NpAW1iv0oy1O90zqedaRwO8NYei0-tpexZmy_5K4fSyWcSr_MPop8heMNsZDp9RhRPmy61Bdvw2lE0ir6j7IewornK0G3EAaEuKOE5czSEK3qhVMIfyqOyrGQJwZVgE_WlDWIgGlv2-cUjquw7BeKZT3h3eCqiWF" width="640" /></a><br /><br />Clic "New"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_2.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEi7ut2a93myDwMNw8Wfbw2fA_ztpSyXx5v_FQj3C2nYnzhesGLU_VkY0wnrH9CHCGX_TVFjsbXUw0Wbt4i1AJBfmE0Sibdd3yhACBrPO76OYfyb_oZKaO8_vJrJ356IiWcV3QLCGR3FuZGydnVR8x568xUZkNZORSSoXeZRHL0EEi82" /></a><br /><br />Puedes llamar a tu máquina virtual como quieras, sin embargo, tiendo a nombrar mis máquinas utilizando el nombre del SO que voy a instalar. En la captura de pantalla se puede ver que he llamado este "Ubuntu".<br /><br />En los cuadros desplegables, si no se actualizan automáticamente según el nombre dado, seleccione "Linux" y luego "Ubuntu (64 bits)" o "Red Hat (64 bits)". A continuación clic "Next"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_3.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEiyQ1mbnW04MhKpvZaKr1awJkg2zUn9yrt1R4IET0eH52x7qe0XjmfLBG4AOqx_l5xtNYyk77Et66Q_Wba06yDiHk3bXuVjNHFMxPSWzC2vu-JnN7dp05yBr_frtRuGOUoKZtNQzVIN0Tn82qe_6XzgTvnzxqcBP4ELmRSsXAwF5DQa" /></a><br /><br />Ahora necesitarás definir la cantidad de memoria que se asignará. En ambos casos, RedHat o Ubuntu, se requiere como mínimo 4096MB (4GB).<br />Clic "Next"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_4.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEgXbaU0Ze9-g2RXJPiGAcVLk4B4UMeq-q28Oj66QF8mLVXccP8CI24Zny6d46PQcG-MgvkK9HMP1Yq8FjjI47AAs68CzEIGriiXjZiFeqB25PC4eZvjWTa6sRBLDj-ifr5jV6WPH53SFr00Zfx9G_1IRPoNOS3rVYAgLOiBZhGjvr2o" /></a><br /><br />Asegúrate de seleccionar “Create a virtual disk now” y luego clic “Create”<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_5.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEiVrMwc-XwbMaNoh4DrlRz12gUaPuDXdcRbGSW_UQsLFE2DsMbs9I_hikisuq28MpUrhRHCAmlVuVZQ0-BSjK17n7OPa74l84esSd8qQMy_gzceiSUMcH1QaSxDS4DrdQVLZuhdhwHtiLKEGcnYTKigEcTBVk1_hLcwez9pIoqGGGmw" /></a><br /><br />VirtualBox crea un archivo en su disco que representa todo el disco duro de la máquina virtual (en el que se ejecutará el sistema operativo Linux). VirtualBox admite varios formatos para este archivo, algunos de los cuales son compatibles con otros programas de virtualización como "VMDK", que es compatible con paralelos, por ejemplo. Sin embargo, el formato de archivo "VDI" es el formato de archivo nativo de Virtualbox y, por lo tanto, ofrece la mayor flexibilidad al trabajar con Oracle VirtualBox. A menos que esté planeando compartir su imagen con otro software de virtualización selecciones las otras opciones, pero para este caso seguiremos adelante con "VDI (VirtualBox Disk Image)" y luego clic "Next"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_6.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEjvLm6FAJJBQPRwChQTzvtaVdBTw57lKi9PJKU26T2zc908HfbPJTq2OzItJslqR3p2zkOILiDezdIJ7Iuc4BTH6-zCGVGgd2idp7J2MMebHckbJud3EMxiTaL7ZUNZ8Ge4Qr-S18ntkNaCmJbHTI0hibOnoh6bt65gZGMqoWPfDe7o" /></a><br /><br />Suponiendo que está creando una imagen VDI (ver paso anterior), se le dará la opción de crear un archivo de imagen que esté "asignado dinámicamente" o que tenga un "tamaño fijo". En el siguiente paso explicaremos estas opciones, pero por ahora, simplemente seleccione "Asignado dinámicamente" y haga clic "Next". (O si gustas puedes leer líneas bajo para averiguar el por qué ...)<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_8.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEjVB5WMItTXux-nWTT047gjxujdZmSK-VSIuQ3PJWKINCF8NeRSb_eiczoGJlm6RHhuFsbNNzDd-X_qe5J1rykLHJ8lWiVFf553ho8G3B5zYnzsepVo78pl4YpAly1ZtzRbnV7K4sA4YeN85H4_Sdl0OkhJkq_Xc-C5fkA0L6Pc4R5W" /></a><br /><br />En este paso se le pedirá que proporcione un nombre de la imagen de disco que se creará para su máquina virtual. De forma predeterminada, coincidirá con el nombre de la máquina virtual que ingresó inicialmente, por lo que mi captura de pantalla muestra "Ubuntu".<br /><br />También se le pedirá que especifique un tamaño de archivo para la máquina virtual, y en este caso ingresamos manualmente "100GB" en el cuadro de edición de tamaño.<br /><br />En el paso anterior, decidimos si el archivo de imagen del disco duro sería una imagen "asignada dinámicamente" o "tamaño fijo". Si hubiéramos seleccionado "Tamaño fijo" y, al definir 100GB aquí, se generaría un archivo vacío de 100 GB para alojar la máquina virtual. Esto es útil en los casos en los que desea asegurar una cantidad de espacio en particular a su máquina virtual, pero, si por ejemplo, su máquina virtual sólo utiliza 40GB del disco virtual, estaría desperdiciando un enorme espacio de 60GB de su disco físico de la máquina hosts.<br /><br />Es por eso que seleccionamos "Asignado dinámicamente" en el paso anterior, el tamaño de 100GB especificado en este paso no consumirá 100GB de espacio en disco de inmediato, sino que permitirá que el disco duro virtual crezca hasta un máximo de 100GB.<br /><br />Nuestro sistema operativo Linux es probable que requiera alrededor de 30-40GB para una instalación mínima, tomando esto como base decidimos utilizar una asignación mayor de disco. Tenga cuidado de no establecer este tamaño demasiado pequeño, porque el sistema operativo no se instalará si no encuentra espacio suficiente.<br /><br />Seleccione un tamaño adecuado y haga clic en "Create"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_9.png"><img border="0" height="470" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEhLbL2fdEdo5mk2d2MokfY-qViQltU9EUCASl2fvwLN5lMVSR6NBSeyJuv94KfGkX3B6lfQEkUi-f0DIY4j6mOHboSEzI-XB21GfZ7-c78EoHn23CnD0KDwTWf5DB1oz4F2IvEAGbzN8Fek0yCLsx52gxRUqnsr4Bx0cZPhlKHJhma7" width="640" /></a><br /><br />Hasta aquí ya debe de tener una máquina virtual en la lista de VirtualBox Manager. En la captura de pantalla se puede ver que hemos creado dos máquinas virtuales, una para alojar Ubuntu y la otra para alojar RedHat.<br /><br />Sin embargo, aún no hemos terminado, necesitamos configurar la configuración de red de nuestra máquina invitada (RedHat/Ubuntu), a fin que podamos accederlas desde nuestra máquina host que ejecutará RAD Studio. Asegúrese de que su máquina virtual esté seleccionada haciendo clic en él, y luego haga clic en "Settings"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_10.png"><img border="0" height="422" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEhXjHqIkYWapjZJ3xCOoOFNjWypZAr8DG1PNzmTGJD-BC_jn2zSsvoEK1J7WTNA7wil5OUg8cetj0n7sHOafDBwxdUNpwQY5A5rgiyZp94aGi86gkjJFOH47CEhLbfV8dXwcOaMm0rbImN_D1iBog47vx7MWhfpc1Rgz6BXANWPRhsktw" width="640" /></a><br /><br />En la lista de la izquierda Clic en "Network"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_11.png"><img border="0" height="422" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEi05bEvUmeG0Xu0IAN6Ft0_nVa3vT1V_-FhsadFAFOJmyzRgmsYCVlGxvZJQe-y7e4ht8RoeKL22kSQBJDDrGV0YiuvtyQzRHaITNFJIp7RweyW4lyi0MQfV6AmD8j-iLgXsg7wi8v4NHayVFeKOi691ZlCuPa-dnWNM0fhY6n_nLJVog" width="640" /></a><br /><br />Cambiar la opción "Attached to:" a "Bridged Adapter"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_12.png"><img border="0" height="422" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEjvnovTlPN0s8iIK1UyjfIs5xstjQOyqpwReNBSMsGa8gD8fWWgvNl_zkGjgujAt4kG1xKT9Pbw8YYCoXmrhwc3Db2G9NFIrJe-tg9PpUo6scfwfWZvXLACtGH7rMijNycu4mm5D3ia93C-qWOHcFXdoBxm0XqOcXvJIOb42q-6E9jEMw" width="640" /></a><br /><br />En la misma pantalla expande la opción "Advanced" y cambia el "Adapter Type" a "Paravirtualized Network (virtio-net)"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_13.png"><img border="0" height="422" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEgu29-29VAlBCzbnyDyrzlHlo1wFHZ6t1mkCc_lUT9M60PXTutYbIqSYmIUpld0tpKlsXQoYhkxxuMi8NUQuNwMscQbdSxLiyyWzkQKydTUvkDhMCGaUUGAPkCwJkkiBA1FhzsYtQu-MBjjNa_mPR96Nr24-te52OF0kPC6K9bv_-A_QA" width="640" /></a><br /><br />Ahora necesitaremos insertar nuestros medios de instalación Ubuntu o RedHat. Ese es el archivo ISO que descargamos para el sistema operativo en la sección "2. Lo que necesitará" de este post. Cambie a la pestaña "Storage" de la lista a su izquierda...<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_14.png"><img border="0" height="422" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEhpNuhQSYzrxgJsor8sTveqJc_2XLqtDvIqWaMDW-kdqCqLClOAe3PAY44acio0TtphH290PmSqyEFfjULZ8o8kh8OCOqYaXTgfy19PBAayVpg922JpKyOM1ju4_KCSSIGwBxBP_Ik8JGXbEAmZDguST7BUFWg7etUJWxytkE5y5exiQQ" width="640" /></a><br /><br />De la lista "Storge Tree" seleccione el elemento "Empty" del "Controller: IDE"<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_15.png"><img border="0" height="422" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEgWnzvpGYdAcIq5fU5UJYDf31dlcYtorV5kHCc367rFBSKuG14Bs6Ypp05x0GWBq6tKshKOCM8m7GEMnKw0Lbs2eNF8Fqnh71c8GekHE0OCO4O73fJNw1Lytx0bJzC5cMDbNZ_uxqbR48Ehmu5FsvV3gwUu0Rfm29s55eIwdljqIUb3iw" width="640" /></a><br /><br />A la derecha, bajo "Attributes" puede ver que tenemos una "Unidad Óptica" que se lee como "IDE Secondary y Master", y a la derecha de ese menú desplegable hay un icono que se parece a un CD y tiene un menú desplegable indicado con una flecha. Haga clic en ese icono en forma de CD y seleccione "Choose Virtual Optical Disk File…"<br /><br />NOTA: Recuerde cómo encontrar este menú contextual. Como puede ver, también hay una opción para remover la imagen, "Remove Disck from Virtual Drive", a la que volveremos al final de cualquiera de las secciones "Instalar Ubunutu" o "Instalar RedHat" según lo que decida seguir. Al finalizar la instalación tendrá que volver aquí y quitar la imagen ISO Linux que haya utilizado.<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_16.png"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEgI_eXlOgDjP6wELirLaCUXKZ9uf5txRl_Fgb5-ad2DmD1nqUxyd5BfhzEkzDXXccKW2rUdWK6F1Tt6kgkTILe6ih__IcUxtF7Pu8kwbhKqK6kwW-0ZVjg-bUC9cKdSWWeNG5yz_RoCkOapxtfO8nG7anuMzPQfVX4-LarJ_jeRy17NGA" /></a><br /><br />Ahora navegue hasta donde haya guardado su archivo de imagen de instalación Linux (el .ISO que descargó durante la sección "2. Lo que necesitará"), seleccione el archivo ISO y haga clic en "Open"...<br /><br />(*Su nombre de archivo ISO puede diferir de las capturas de pantalla. En particular, voy a instalar la edición de servidor de Ubuntu, pero la captura de pantalla muestra un nombre de archivo ISO como "desktop". Por favor, ignore esto, era una descarga de archivos incorrectos, voy a utilizar la edición "Server" en éstas instrucciones mas adelante).<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_17.png"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEgKxmpax3U6FU-z94hMKw0QWxT3K0FuImod4-QR8n41viEKRTlNoxhe4uWwxzbYsxPb-tFsFjCOPXIIpPZYLVcJ5idUs80ESVXJLTxPEaREbit7gU9v9fQGSmr8YdmW5bqGfJnh67A0oP7t6GnmC7KtE_v40Wiz3mbQoFvZ7uadDi2eTA" width="640" /></a><br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_18.png"><img border="0" height="422" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEh82Rp4zWq-Rs4-AzxDymq0l0e6uoIa7bpDMdne6Kmo-_JMRiEjO9_TpR5Zb3NsldDUtA9YIBLsAzUOBBiHkb3cYRXRRpgZfEA15u34h4M7Y1lnVPWDbnCJSI-YbnpClEATYssCKNhsG90ij3L-lDyOJQpcCLOPBydVQCCk4gxZF5LyWw" width="640" /></a><br /><br />Por último, haga clic en "OK" para salir de la configuración de su máquina virtual.<br /><br />Ahora está listo para comenzar a instalar en su Máquina Virtual el sistema operativo Linux, RedHat o Ubuntu según su elección. Una vez más, asegúrese de que su máquina virtual esté selecciona al darle clic sobre él, y haga clic en el botón/flecha "Start"...<br /><br /><a href="http://chapmanworld.com/wp-content/uploads/2016/12/vboxsetup_19.png"><img border="0" height="470" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEinw_j2WmM0vspf_S3BLSkIe3k8__8zG_J1KyGbmwDhEFWAD3vzI2qGr79699X0iXP6fsC-zmMdYZ74Vv336dVltLq4O0xglzL3krVuTQd7s9TUdSg2f-o05FrSTInV6XtsV5GfHFAN4CFRu1jw0mMMzHHy8S0gpEFv2LsD1HYe5pSFyA" width="640" /></a><br /><br />Ahora, si está instalando RedHat, continúe con la siguiente sección para obtener instrucciones específicas de la instalación. Si está instalando Ubuntu, siga hasta la sección "6. Instalar Ubuntu" para ver las instrucciones correspondientes.</b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span><span style="font-family: "verdana" , sans-serif; font-size: large;"><b>5. Instalar RedHat</b></span><br />
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Bueno, ya has creado una máquina virtual, ahora inserta el disco de instalación "RedHat" (en este caso asigna la imagen ISO), y haz clic en "Start" para iniciar el proceso de instalación...</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Primero verás este menú con un contador de tiempo regresivo...</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_1.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Espere a que finalice el contador, o haga clic dentro de la ventana de la máquina virtual y presione [ENTER] / [RETURN] para comenzar la instalación. Después de unos segundos, la pantalla debe rellenarse con texto mientras el sistema realiza sus verificaciones de inicio, espere un poco más, eventualmente aparecerá un diálogo de selección de idioma ...</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Nota: Usted puede también haber perdido el puntero del ratón en la máquina virtual en este momento. La máquina virtual ha adquirido el dispositivo de ratón por sí mismo y no lo devolverá hasta que mantenga pulsada la tecla [CTRL] derecha de su teclado. Esta situación es conocida por VirtualBox como la clave "host". Se pueden instalar extensiones para el sistema operativo "invitado" a fin que evite que se adueñe del puntero del ratón y, en su lugar, compartan el puntero entre la máquina host y el sistema operativo invitado, pero, no pueden instalarse hasta que se haya instalado el sistema operativo invitado. Por ahora, recuerde la tecla [CTRL] derecha.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_2.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione el idioma que desee utilizar de forma predeterminada en RedHat. Obviamente, debes hacer la selección más apropiada para tu caso, aquí vamos a proceder en Inglés (EE.UU.). Una vez realizada la selección, haz clic en "Continue".</b></span></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_3.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>En este cuadro de diálogo pueden mostrarse varias advertencias. Espera un poco ya que la mayoría de las advertencias deben desaparecer por sí mismas (si no lo hacen, tendrás que investigar más con la documentación de Red Hat). Es este caso la única advertencia que queda es la del ícono "Installation Destination". Haz clic en este icono ...</b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_4.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>La advertencia en la que hicimos clic fue porque no habíamos configurado cómo nuestra unidad de disco virtual debía ser particionada. Haciendo clic en la advertencia nos llevan al diálogo de partición del disco. No necesitas hacer nada en este diálogo, las opciones de particionamiento por defecto deberían estar bien para nuestros propósitos, así que simplemente haz clic en el botón "Done" en la esquina superior izquierda y regresa al cuadro de diálogo de resumen anterior...</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_5.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>La configuración de partición predeterminada ahora se aplica para nosotros, la advertencia ha desaparecido y el botón "Begin Installation" ha aparecido.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Antes de continuar, recomiendo configurar algunos ajustes de red. haz clic en el icono "Network & Host Name".</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_6.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Aquí basta con cambiar la conexión Ethernet (eth0) a la posición "On". Tenga en cuenta que una dirección IP debe adquirirse automáticamente cuando se activa la conexión...</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_7.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Si no ha aparecido una dirección IP, ¿es posible que no tenga habilitado DHCP en su red? (Verifica esto con el proveedor de Internet/WiFi) Tendrá que comprobar la documentación de RedHat sobre cómo configurar una conexión de red manualmente, pero por ahora, proceda con la instalación.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Suponiendo que la dirección IP haya aparecido, anote la dirección en algún lugar, lo necesitará más tarde.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Haga clic en "Done" en la esquina superior izquierda para volver al cuadro de diálogo de configuración principal.</b></span></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_5.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Ahora haz clic en "Begin Installation"</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_8.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>En este punto, la instalación ha comenzado y verás una barra de progreso avanza a lo largo de la parte inferior de la pantalla. Sin embargo, en "ROOT PASSWORD" y para "USER CREATION". Vamos a realizar cada una de estas acciones a su vez mientras esperamos la instalación para completar.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Comience haciendo clic en el icono "ROOT PASSWORD".</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_9.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Recomendamos ingresar una contraseña suficientemente compleja en el cuadro "Root Password" y repetirla en el cuadro "Confirm". Cuando haya terminado haga clic en el botón "Done" en la parte superior izquierda de la pantalla.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Nota: Puede anular la complejidad de la contraseña introduciendo una contraseña simple y haciendo doble clic en el botón "Done", dos veces en vez de una sola vez.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_10.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Ahora hagamos clic en el botón "USER CREATION"</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_11-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_11-1.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>En esta página, proporcione su nombre, un nombre de usuario y establezca los campos de contraseña.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Lo más importante, marque la casilla de verificación "Make this user administrator".</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Haga clic en "Done" arriba a la izquierda para continuar con la instalación.</b></span></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_12.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Una vez establecida la contraseña "root" y creado una cuenta de usuario administrador, dejamos el instalador ejecutando hasta que complete la instalación y se habilite la opción "Finish configuration". Cuando se habilite haga clic en dicho botón.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_13.png" height="480" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Cuando aparezca el botón "Reboot", haga clic en él.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Su máquina virtual se reiniciará, espere un momento mientras se inicia y eventualmente se le mostrará el "prompt"...</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<b style="font-family: Verdana, sans-serif;">Nota: En este punto recomiendo eliminar el medio de instalación ISO de la página de configuración de la máquina virtual (recuerda sobre el elemento que le dije debe recordar para llegar en la sección sobre la configuración de la máquina virtual?). Si su máquina virtual no inicia y no le muestra el "prompt", es probable que el medio ISO de instalación esté todavía ahí, apague la máquina (haga clic para cerrar la ventana) y elimine los medios de instalación antes de volver a hacer clic en "Inicio".</b></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_15.png" height="354" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Dependiendo de la versión de RedHat que está instalando, puede mostrarle un inicio de sesión gráfico.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>En este punto, escriba el nombre de usuario según el usuario que creó durante la instalación y presione [ENTER] / [RETURN], luego ingrese la contraseña para ese usuario y de nuevo [ENTER] / [RETURN] ... (O si tiene una pantalla gráfica , Iniciar sesión a través de ella)</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_16.png" height="354" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>O bien se mostrará a un indicador similar a la anterior, o se mostrará un escritorio gráfico.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Si se introduce en el escritorio gráfico, abra una sesión de terminal desde el menú para continuar con las instrucciones restantes.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><i>TIP: [CTRL] + [ALT] + [T] es un acceso rápido conocido para abrir una sesión de terminal en muchos escritorios gráficos de Linux.</i></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>De acuerdo con la documentación, ahora se le pedirá que registre su sistema usando su suscripción RedHat (la que usted se inscribió para descargar RedHat). En mi caso esto no sucedió, pero puede ser inicializado desde la línea de comandos usando la siguiente instrucción ...</b></span></div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">subscription-manager register --username <span style="border: 0px; color: red; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">username </span>--password <span style="border: 0px; color: red; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">secret <span style="border: 0px; color: black; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">--autosubscribe</span> </span></pre>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Es posible que se le solicite su contraseña "root" para registrarse ...</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_17-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_17-1.png" height="354" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Comprobemos que la suscripción sea válida y funcione actualizando el software del sistema. Para ello i</b></span><b style="font-family: Verdana, sans-serif;">ntroduzca la instrucción:</b></div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;"> sudo yum update</pre>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>*Nota: Siempre que ingrese instrucciones que comiencen con "sudo", se le pedirá nuevamente su contraseña, si es así, ingrese la contraseña para la cuenta de usuario que creó durante la instalación.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>A continación verá una serie de paquetes que se listarán...</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_18.png" height="354" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>A continuación, se le pedirá que confirme que está bien descargar e instalar algunos paquetes ....</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_19.png" height="354" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Presione "Y" para permitir que se instalen dichas actualizaciones ...</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>(Es posible que se le pida varias veces durante el proceso, sólo mantenga presionando "Y" hasta que se instalen...)</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_20.png" height="354" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_21.png" height="354" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Felicidades! RedHat está instalado y actualizado. Estás casi listo para desarrollar software en tu Linux, pero primero, hay aún hay información que necesitarás. Necesitas la dirección IP del servidor RedHat. Es posible que hayas tomado nota de ello durante la instalación, pero en caso de que no, escriba la siguiente instrucción:</b></span></div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">sudo ip addr show</pre>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Se le debe presentar una pantalla que se parece a la imagen de siguiente. Necesitas la dirección IP para "eth0" que se resalta en la captura de pantalla.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_RedHat_22.png" height="354" width="640" /></a></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>En una red DHCP, su dirección IP puede cambiar con cierta frecuencia, si se vuelve a conectar a la red o reinicia el sistema, aunque por lo general permanece igual. Anote la instrucción en caso que necesite saber la nueva dirección IP. También puede identificar esta información desde la aplicación PAServer, como veremos más adelante. Por ahora, anote la dirección IP (en mi caso 10.90.1.78), ya que lo necesitará pronto.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Ahora ya está listo para implementar la aplicación "PAServer" en su servidor RedHat. Vaya a la sección titulada "7. Instalar PAServer".</b></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif; font-size: large;"><b>6. Instalar Ubuntu </b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Así que en este momento ya tienes creada una máquina virtual para instalar Ubuntu, inserta el medio de instalación, y pulsa el botón "Start" para encender tu máquina virtual. Instalemos Ubuntu ...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b><span style="color: blue;">Nota1:</span> El instalador de la versión del servidor Ubuntu es una interfaz de usuario basada en texto que puede navegar usando las teclas de cursor, [TAB] para cambiar las opciones y [RETURN] / [ENTER] para aceptar una opción.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><span style="color: blue;">Nota2:</span> Al hacer clic dentro en la ventana de la máquina virtual, virtualbox tomará su ratón y no lo devolverá a menos que presione la tecla [CTRL] del lado derecho de su teclado. Ésta combinación se conoce como la tecla 'host'. Hay extensiones que impiden que VirtualBox tome acceso exclusivo del ratón, pero primero debe instalarse en el sistema operativo "invitado", que apenas lo vamos a instalar.</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>El primer diálogo al que verás es así...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_01.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Este diálogo es para seleccionar el idioma del instalador (no es del sistema operativo a instalar), por ello más adelante podrás seleccionar el idioma apropiado del SO para ti, es mi caso estaré seleccionando inglés. A continuación, pulse [ENTER] / [RETURN] para aceptar esta opción ...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_02.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Ahora tenemos el menú de arranque de Ubuntu, seleccionamos la opción "Install Ubuntu Server"...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_03.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Este diálogo de idioma es para seleccionar el idioma predeterminado que utilizará el sistema operativo Linux una vez termine la instalación. Por lo tanto, selecciona el idioma deseado y continúe.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_04.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione su ubicación y continúe.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_05.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>El instalador de Ubuntu va a intentar detectar qué teclado tienes. Siga adelante y seleccione "Sí" y continúe, además se mostrará una serie de solicitudes para presionar determinadas teclas en su teclado, o preguntará si su teclado tiene ciertas teclas. Continúa con las opciones, se verán como estas capturas de pantalla ...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_06.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_08.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_10.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>En este punto, el instalador debe haber detectado el teclado adecuada para tu caso, en mi caso "US", suponiendo que es correcto, selecciona "Continuar" y proceda ...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_11.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Barra de progreso, sólo queda espera...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_12.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>El instalador de Ubuntu ahora quiere nombrar su máquina en la red. Introduzca algo apropiado y continúe.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_13.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>El instalador de Ubuntu ahora va a crear una cuenta de usuario para iniciar sesión. Adelante e ingrese su nombre, o el de la persona que va a usar esta máquina virtual, y continúe.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_14.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<b style="font-family: verdana, sans-serif;">Introduzca un nombre de usuario para su cuenta de usuario y continúe...</b><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_15.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Introduzca una contraseña para su cuenta de usuario y continúe...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_16.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Vuelva a introducir la contraseña y continúe...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_17.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Cualquiera de las opciones estará bien, pero como no estoy particularmente preocupado por la seguridad del sistema de archivos (es una máquina de desarrollo, no un servidor de producción), estoy seleccionando para no cifrar el directorio de inicio.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_18.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione su zona horaria y continúe...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_19.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Barra de progreso, espera un poco más.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_20.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>El instalador de Ubuntu pregunta cómo desea particionar el sistema de archivos, ya que este sistema de archivos es un archivo de imagen dedicado, seleccione "Guided – use entire disk and set up LVM" y continúe.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione "SCSI3 (0,0,0) (sda) - 107,4 GB ATA VBOX HARDDISK" y continúe...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_22.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione "Yes" y continúe ...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_23.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Continúe...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_24.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione "Yes" y continúe...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_25.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Más barras de progreso, espera un poco más...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_26.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Selecciona "Continue" y siga...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_27.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione "IInstall security updates automatically" (a menos que sepas lo que estás haciendo y prefieras otra opción) en cualquier caso continúe...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_28.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Otra barra de progreso, espera un poco más...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_29.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>En este cuadro de diálogo asegúrese de activar "OpenSSH Server" con la tecla [SPACE] para activar la opción. Continuar…</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_30.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Otra barra de progreso, espera un poco más!</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_31.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione "Yes" y continúe ... (Esto es para instalar el cargador de arranque "boot loader" en el sistema de archivos virtual).</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_32.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_32.png" height="480" width="640" /></a></div>
<br />
<span style="font-family: "verdana" , sans-serif;"><b>Otra barra de progreso ... Ya sabes qué hacer aquí.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_33.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_33.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>En este punto, el instalador le pide que remueva la imagen o medio de instalación. ¿Recuerdas que te dije cómo hacerlo cuando insertamos los medios de instalación en primer lugar? De hecho, más que probable que no es necesario hacer esto porque la caja virtual preferirá reiniciar desde el disco duro ahora que hay un cargador de arranque, pero es un buen momento para removerla, así que ve a eliminar la imagen ISO de La configuración de la caja virtual. Luego continúa ...</b></span><br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_34.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_34.png" height="480" width="640" /></a></div>
<div>
<br /></div>
<span style="font-family: "verdana" , sans-serif;"><b>Oh wow, una barra de progreso! Espere…</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>Su equipo se reiniciará por sí mismo, y siempre y cuando el medio de instalación se haya eliminado (y probablemente si no lo fuera) verá este diálogo...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_35.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Presione [ENTER] / [RETURN] para arrancar en Ubuntu, o espere a que el temporizador cuente abajo, lo hará automáticamente por ti.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_36.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_36.png" height="354" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Esperar a que el sistema se inicie...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_37.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_37.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Eventualmente, te encontrarás aquí en el indicador de inicio de sesión.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>Siga adelante e inicie sesión con las credenciales que configuró durante el proceso de instalación...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_38.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_38.png" height="480" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Bueno, antes de ir más lejos, necesitamos saber si su sistema se ha conectado correctamente a la red y veremos si tiene una dirección IP.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>Escribe esta instrucción para comprobar...</b></span><br />
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;"> ifconfig</pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_39.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_39.png" height="480" width="640" /></a></div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Mi interfaz de red se llama 'enp0s3' el suyo puede ser diferente (ignore esta parte, es el "loopback"), y en mi sistema tengo una dirección IP de 10.90.1.98. Deberá anotar su dirección IP. Si su sistema no tiene una dirección IP o le falta una interfaz de red, es posible que su red no tenga DHCP habilitado, o que algo salió mal. Consulte la documentación de Ubuntu para configurar una interfaz de red.</b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Ahora es el momento de realizar algunas actualizaciones y la instalación del software para preparar el sistema Ubuntu para su uso.</b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Empezar con:</b></span></div>
</div>
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;"> sudo apt-get update</pre>
</div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><span style="color: blue;">Nota:</span> Siempre que ingrese una instrucción que comience con 'sudo' se le pedirá que vuelva a ingresar su contraseña de usuario.</b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_40.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_40.png" height="480" width="640" /></a></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Si todo va bien, tu pantalla debería verse como la imagen de arriba, hemos descargado el catálogo de paquetes de Ubuntu, así que ahora vamos a realizar actualizaciones ...</b></span></div>
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;"> sudo apt-get upgrade</pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_41.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_41.png" height="480" width="640" /></a></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Es posible que se le pida "¿Desea continuar? [Y / n] "una o más veces, simplemente presione "Y" para cada petición.</b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_42.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_42.png" height="480" width="640" /></a></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Una gran cantidad de texto debe verse en toda la pantalla, espere a que finalice para que nuevamente vea el "prompt". Busque mensajes de error en las últimas líneas de texto, si ve alguno, consulte la documentación de Ubuntu. Si todo ha ido bien, vamos a seguir haciendo una actualización de la distribución...</b></span></div>
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">sudo apt-get dist-upgrade</pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_43.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_43.png" height="480" width="640" /></a></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Otra vez, presione "Y" para cualquier pregunta.</b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Cuando el proceso esté completo, instalaremos los paquetes de dependencia para el PAServer que permite la comunicación entre el RAD IDE y el sistema Linux ...</b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; font-weight: 300; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: "verdana" , sans-serif;"><b>sudo apt-get install joe wget p7zip-full curl build-essential zlib1g-dev libcurl4-gnutls-dev</b></span></pre>
</div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_44.png" height="480" width="640" /></a></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Acepte cualquier mensaje con "Y"</b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b>En este punto hemos instalado todos los paquetes que necesitamos, vamos a realizar un par de instrucciones de mantenimiento para limpiar el sistema de instalación.</b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; font-weight: 300; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;"><span style="font-family: "verdana" , sans-serif;"><b>sudo apt-get autoremove</b></span></pre>
</div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "verdana" , sans-serif;"><b><a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_46.png" height="480" width="640" /></a></b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
<div>
<br /></div>
<div>
e ingresemos este otro comando...</div>
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; font-weight: 300; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">sudo apt-get autoclean</pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/VirtualBox_Ubuntu_47.png" height="480" width="640" /></a></div>
<div>
<br /></div>
<div>
Y finalmente está todo terminado con esta sección. Continúe con "7. Instalar PAServer".<br />
<br /></div>
</b></span></div>
</div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif; font-size: large;"><b>7. Instalar PAServer (obligatorio)</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>El PAServer, o "Platform Assist", es un software que se suministra con RAD Studio, el cual puede ser desplegado en plataformas de destino, para proporcionar al RAD IDE un medio de desplegar y depurar aplicaciones en dichos destinos. La versión de Linux del PAServer se puede encontrar en el directorio siguiente después de instalar RAD en su ubicación predeterminada...</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>“C:\Program Files (x86)\Embarcadero\Studio\<span style="color: blue;">19.0</span>\PAServer”</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><i><span style="color: blue;">Nota:</span> Si está utilizando una versión más reciente de RAD, simplemente ajuste el número de versión en la ruta de acuerdo a lo que ha instalado.</i></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>La aplicación PAServer para linux está contenida en un archivo llamado "LinuxPAServer<span style="color: blue;">19.0</span>.tar", pero es poco útil este archivo tar en nuestra máquina Windows. Necesitamos una forma de moverlo a la máquina de destino de Linux. Aquí es donde entra WinSCP:</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>WinSCP es una aplicación que se puede conectar a cualquier equipo Linux que esté ejecutando un "daemon" SSH (es un servidor SSH para gente de Windows), y luego podrás transferir archivos desde y hacia ese computador. Debiste haber descargado WinSCP en la sección "2. Lo que Necesitarás" de este post, así que sigue adelante y haz doble clic en el instalador e instala WinSCP ...</b></span><br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_1.png" height="310" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Clic en "Accept >"...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_2.png" height="310" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Selecciona </b></span><span style="font-family: "verdana" , sans-serif;"><b>“Typical Installation (recommended)” and click “Next”...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_3.png" height="310" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione la interfaz "Commander", esta es una preferencia que puede cambiar si lo desea, pero mis instrucciones serán para esa interfaz.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>Haga clic en "Next >"...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_4.png" height="310" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Clic "Install"</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_5.png" height="310" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Quite la casilla de verificación antes de "Open Getting started page" a menos que realmente quiera ir a leer el manual 🙂</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>Haga clic en "Finalizar".</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>WinSCP ahora se abrirá y le presentará con una pantalla de inicio de sesión que se ve algo así...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_6.png" height="270" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>Introduzca la dirección IP de su servidor Linux en el cuadro "Host name:", pero omita los cuadros "User name:" y "Password:". Estas cajas son útiles si deseas guardar la IP de la máquina y las credenciales para facilitar el inicio de sesión la próxima vez, pero por el bien de estas instrucciones sólo vamos a conectar a nuestro servidor Linux una vez desde WinSCP...</b></span><br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_7.png" height="237" width="400" /></a></div>
<div>
<br /></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Si se presenta esta advertencia, haga clic en "Yes". Esto está importando el certificado de seguridad que se utilizará para cifrar la conexión entre WinSCP y el servidor.</b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_8.png" height="320" width="400" /></a></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div>
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Introduzca un nombre de usuario para conectarse a su servidor Linux (el que configuró durante la instalación si).</b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b>Haga clic en "OK"</b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<br />
<div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
</b></span>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "verdana" , sans-serif;"><b><a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_9.png" height="320" width="400" /></a></b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b>
<div>
<br /></div>
<div>
<div>
Introduzca la contraseña correspondiente y haga clic en "OK"</div>
<div>
<br /></div>
<div>
Si todo va según el plan, usted debe verá WinSCP conectado en su servidor, será algo así ...</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_10.png" height="411" width="640" /></a></div>
<div>
<br /></div>
<div>
<div>
A la izquierda de la ventana de WinSCP verá un navegador de directorios que apunta a alguna ubicación en el disco local de su computadora; y a la derecha verá un navegador de directorios que apunta al directorio "Home" o de inicio del usuario en su servidor Linux. Puede navegar por estos navegadores y arrastrar y soltar archivos de un lado a otro para que se carguen o descarguen según sea necesario.</div>
<div>
<br /></div>
<div>
En nustro caso no permitirá cargar/enviar la aplicación PAServer.</div>
<div>
En el lado izquierdo de WinSCP, vaya a la ubicación del archivo de instalación PAServer:</div>
</div>
<div>
<br /></div>
<div>
“C:\Program Files (x86)\Embarcadero\Studio\<span style="color: blue;">19.0</span>\PAServer”</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_11.png" height="384" width="640" /></a></div>
<div>
<br /></div>
<div>
Ahora simplemente arrastre el archivo "LinuxPAServer19.0.tar" de la izquierda a la derecha de WinSCP...</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_12.png" height="168" width="400" /></a></div>
<div>
<br /></div>
<div>
Click en "OK"...</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/winscp_install_13.png" height="412" width="640" /></a></div>
<div>
<br /></div>
<div>
<div>
Como verás, el archivo de instalación PAServer se ha copiado en su servidor.</div>
<div>
Si todavía no está conectado a una sesión de terminal en su servidor (de haber seguido mi guía para la instalación), vaya a iniciar sesión en su servidor ahora usando el mismo usuario que utilizó para conectarse desde WinSCP e ingrese la instrucción:</div>
</div>
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; font-weight: 300; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">ls</pre>
</div>
<div>
Debe ver el archivo de instalación de PAServer...</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_1.png" height="354" width="640" /></a></div>
<div>
<br /></div>
<div>
<div>
El archivo .tar que se muestra es un archivo empacado, (piense en el archivo .zip pero sin compresión si eso ayuda), necesitamos descomprimirlo o desempacarlo.</div>
<div>
Escribe la instrucción:</div>
</div>
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; font-weight: 300; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">tar xvf LinuxPAServer19.0.tar</pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_2.png" height="354" width="640" /></a></div>
<div>
<br /></div>
<div>
Verás una lista de los archivos que fueron descomprimidos, y si escribes la instrucción "ls" verás el directorio que los contiene...</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_3.png" height="354" width="640" /></a></div>
<div>
<br /></div>
<div>
<div>
Puede ser difícil de ver en la captura de pantalla debido al esquema de colores por defecto, pero a lo largo del archivo "LinuxPAServer19.0.tar" se ha creado un nuevo directorio "PAServer19.0"</div>
<div>
Vamos a cambiar a ese directorio con la instrucción de directorio de cambios (cd) y luego emitir la instrucción "ls" de nuevo...</div>
</div>
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; font-weight: 300; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">cd PAServer19.0
ls</pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_4.png" height="354" width="640" /></a></div>
<div>
<br /></div>
<div>
<div>
En este punto, si está ejecutando un servidor RedHat hay un par de instrucciones adicionales que necesitará ejecutar antes de que podamos iniciar el PAServer. Debe abrir un agujero en el "firewall" de red a través del cual el PAServer podrá comunicarse con el IDE de RAD.</div>
<div>
<br /></div>
<div>
Omita estas instrucciones si está ejecutando Ubuntu (ya que de forma predeterminada el "firewall" de ubuntu está deshabilitado)</div>
</div>
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; font-weight: 300; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">sudo firewall-cmd --zone=public --add-port=64211/tcp --permanent
sudo firewall-cmd --reload</pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_5.png" height="354" width="640" /></a></div>
<div>
<div>
<br /></div>
<div>
Los usuarios de Ubuntu que saltaron las instrucciones anteriores, continúen aquí.</div>
<div>
<br /></div>
<div>
Ahora es el momento de ejecutar el PAServer, ingrese la siguiente instrucción:</div>
</div>
<div>
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; font-weight: 300; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">./paserver</pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_6.png" height="354" width="640" /></a></div>
<div>
<br /></div>
<div>
Se le pedirá que proporcione una contraseña de perfil, esta contraseña es opcional, por lo que para estas instrucciones voy a sugerirle simplemente que presione [ENTER] / [RETURN] para dejarlo en blanco. Si introduce una contraseña aquí, la necesitará más tarde al configurar el IDE de RAD para comunicarse con el PAServer.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_7.png" height="354" width="640" /></a></div>
<div>
<br /></div>
<div>
<div>
El PAServer se está ejecutando y está listo para que el IDE de RAD se comunique con él.</div>
<div>
<br /></div>
<div>
Para comunicarse con el PAServer, su IDE necesitará la dirección IP del servidor Linux, que por ahora ya tiene, pero por favor, escriba la instrucción "i" en el indicador de comandos PAServer...</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_8.png" height="354" width="640" /></a></div>
<div>
<br /></div>
<div>
<span style="color: blue;">Sugerencia:</span> Recuerde que puede utilizar la instrucción "i" dentro de PAServer, le puede ser útil si posteriormente vuelve a conectar el servidor a su red o reinicia el servidor, ya que con esto dirección IP puede haber cambiado.</div>
<div>
<br /></div>
<div>
Terminamos esta sección!</div>
<div>
<br /></div>
</b></span></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif; font-size: large;"><b>8. Publicar una aplicación</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>Vamos a crear una simple aplicación "Hello World" para poder implementarla en nuestro servidor Linux y por supuesto verla funcionando.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Dentro de RAD, vaya a "File / New / Other..."</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_1.png" height="300" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Se mostrará...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_2.png" height="484" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Seleccione la rama "Delphi Projects" a la izquierda y "Application Console" a la derecha y haga clic en "OK"</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Debajo de la línea verde "TODO" comentada según la plantilla de aplicación que la genera, agregue las siguientes dos líneas de código.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"></span><br />
<pre style="background: rgb(255, 255, 255); border: 1px solid rgb(221, 221, 221); font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">Writeln<span style="border: 0px; color: #808030; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span style="border: 0px; color: #0000e6; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">'Hello Linux World'</span><span style="border: 0px; color: #808030; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span style="border: 0px; color: purple; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
Readln<span style="border: 0px; color: purple; font-family: inherit; font-size: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">;</span></pre>
<span style="font-family: "verdana" , sans-serif;"><b>Su programa debería tener este aspecto ...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_3.png" height="317" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Bajo el Administrador de proyectos (arriba a la derecha), haga clic con el botón derecho en "Plataformas de destino (Win32)" y seleccione "Add Platform"</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_4.png" height="220" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Elija "Linux 64 bits" en el cuadro desplegable y haga clic en "OK"</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>(Asegúrese de que la casilla de verificación "Make the selected platform active" esté marcada para así quede activa esta plataforma agregada)</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_5.png" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Pulse el botón "Run with debugging" (o presione F9 en su teclado).</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_6.png" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Se le presentará el siguiente cuadro de diálogo ...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_7.png" height="315" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Asigne un nombre a su perfil de conexión, el mío es "deploy_linux" y presione "Next"</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_8.png" height="316" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Introduzca la dirección IP de su servidor Linux y haga clic en el botón "Test Connection".</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_9.png" height="106" width="320" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Si ve este cuadro de diálogo indicando que la conexión tuvo éxito, ¡Felicitaciones! Si no lo hace, tendrá que revisar sus pasos para averiguar qué hizo mal, ya que su IDE no puede hablar con el PAServer en su servidor Linux.</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>Haga clic en "OK" y luego haga clic en "Finish" para terminar, debería ver un cuadro de diálogo como este...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_10.png" height="311" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Asegúrese de que todo esté correcto aquí. En particular, el cuadro desplegable "Select an SDK version" el cual debe reflejar la versión de Linux que estás utilizando. A continuación, haga clic en "OK"</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_11.png" height="273" width="400" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Después de importar el SDK adecuado, se le debería presentar un cuadro de diálogo similar al anterior. En mi sistema, porque ya he realizado esto antes, hay mucho menos salidas de lo que esperaría en el suyo. Una vez hecho esto, haga clic en "Cerrar"</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>En este momento, su IDE debe cambiar en modo de depuración y la salida de consola deberá aparecer en la parte inferior del registro de sucesos IDE ...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>(Si esto no sucede de inmediato, dale un momento.)</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/radlinux_12.png" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>¡Excelente, acabas de publicar una aplicación Delphi a un servidor Linux!</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b></b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b>(Ya puedes presionar el botón "Stop debugging" para dejar de depurar en el IDE, ya que no va a hacer nada más 🙂</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<b><span style="font-family: "verdana" , sans-serif;"></span></b></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif; font-size: large;"><b>9. Sobre el directorio "scratch-dir"</b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><b>En este momento has visto una aplicación desplegada en tu servidor Linux, pero la salida a la consola fue redirigida a través de PAServer a la IDE de RAD Studio. ¿Qué tal si deseas ver la aplicación ejecutándose directamente en el mismo servidor Llinux?</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<span style="font-family: "verdana" , sans-serif;"><b>Vaya a servidor y navegue al directorio PAServer (ya está allí si ha seguido esta guía secuencialmente, simplemente presione "q" seguido de [ENTER] / [RETURN] para salir del PAServer) y emita La instrucción "ls" una vez más ...</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_9.png" height="354" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><b><br /></b></span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;">Una vez más, es difícil de ver debido a la combinación de colores por defecto que usa Linux, pero notarás que un nuevo directorio se ha creado con el nombre "scratch-dir", repetidamente ingresar los comandos "cd" y "ls", puedes navegar hasta el fondo del directorio y subdirectorio del scratch-dir hasta que eventualmente encuentres el archivo ejecutable de tu proyecto. En la captura de pantalla llamada "Project1" como la tuya debería ser. Tenga en cuenta que no tiene una extensión '.EXE', ya que es específico de MS Windows...</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_10.png" height="354" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Ahora puedes ingresar una instrucción para ejecutar este proyecto en el servidor...</span><br />
<span style="font-family: "verdana" , sans-serif;"></span><br />
<pre style="background: rgb(221, 221, 221); border: 1px; font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; font-size: 0.6875em; font-stretch: inherit; font-variant-numeric: inherit; line-height: 19px; margin-bottom: 30px; margin-top: 30px; overflow-x: auto; overflow-y: hidden; padding: 18px 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">./Project1</pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://chapmanworld.com/wp-content/uploads/2016/12/PAServer_11.png" height="354" width="640" /></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">¡Y ahí está, tu aplicación "Hello World" corriendo en tu servidor Linux!</span><br />
<span style="font-family: "verdana" , sans-serif;">Siga adelante y haz aplicaciones Linux con Delphi o C++.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Como siempre,</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"></span><br />
<span style="font-family: "verdana" , sans-serif;">¡Gracias por leer!</span><br />
<span style="font-family: "verdana" , sans-serif;">Craig</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
</div>
<!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_3.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEjJZDLQOECyKBQynSytqrEQs3vYfMWPJg-D2rHO8yUs_JYaRFlcNpGgPYT2ZjupVKd2HvnvVcV8x8WVNq1zuVlCyhgbvIOUdtNKAwIg-X15H7GlWTOJsl0uu8r0scTj-luYTKloVuTUM4SCRf1JFxhzNVVoawduTrVdsDsJjN0YofuUmiwsxo-V9Ew" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_16.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEgI_eXlOgDjP6wELirLaCUXKZ9uf5txRl_Fgb5-ad2DmD1nqUxyd5BfhzEkzDXXccKW2rUdWK6F1Tt6kgkTILe6ih__IcUxtF7Pu8kwbhKqK6kwW-0ZVjg-bUC9cKdSWWeNG5yz_RoCkOapxtfO8nG7anuMzPQfVX4-LarJ_jeRy17NGA" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_1.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEg8xFY8tXslAX23NpAW1iv0oy1O90zqedaRwO8NYei0-tpexZmy_5K4fSyWcSr_MPop8heMNsZDp9RhRPmy61Bdvw2lE0ir6j7IewornK0G3EAaEuKOE5czSEK3qhVMIfyqOyrGQJwZVgE_WlDWIgGlv2-cUjquw7BeKZT3h3eCqiWF" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_3.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEiyQ1mbnW04MhKpvZaKr1awJkg2zUn9yrt1R4IET0eH52x7qe0XjmfLBG4AOqx_l5xtNYyk77Et66Q_Wba06yDiHk3bXuVjNHFMxPSWzC2vu-JnN7dp05yBr_frtRuGOUoKZtNQzVIN0Tn82qe_6XzgTvnzxqcBP4ELmRSsXAwF5DQa" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_7.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEjw8U8DeJElGhdW1PC-IlqYECHYu_HRHMSAFmE4fdf5LJ2MTVpSlthV5RJz4G3n6k0oVgvNZpHrSL7cHFPV9bxZZQ9oqlSc5mgpv3OCCBLyivyH358gYVKjqEy3yLOoFRYX73yoPELs6nlBb-Nuq7BT7nLQOixpElcjLUjlpz_Phyphenhyphen2eiZLVe8vm1no" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_11.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEiPoGeJvHu9hDSItO0pphDTLBT194fc_ohHviUW912Pt0HVnHZd9mY8kp8FX0QbEpd0JZdzSwpN36D2FRL0edXY_kLhTajZnoyOHbnJvvzbQDNKicWNBBodZpWCmWW5w2FZvikvaFuSjSb9STbNjjlpm6vapXUoq1JS1vXckLNgtx4IN5yf4f28kAM7" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_6.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEgu4fRPLPbkSzUsODFWQX9L_jnKuKy5dEbiF5g5dBUpRbERZqZ1Cg3GP0rwzO9zD0iMn0_xNLG0M0QpjunT9vggHNL1rzb7kDtyeHMqMQYICyhjooha4nFP9GCavXIRYqhAIfuso9go-_EnULafyB7n1Y-EtgyaOB3nT3-nnZ9PjnayvAlANX1ZjGk" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_14.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEhpNuhQSYzrxgJsor8sTveqJc_2XLqtDvIqWaMDW-kdqCqLClOAe3PAY44acio0TtphH290PmSqyEFfjULZ8o8kh8OCOqYaXTgfy19PBAayVpg922JpKyOM1ju4_KCSSIGwBxBP_Ik8JGXbEAmZDguST7BUFWg7etUJWxytkE5y5exiQQ" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_1.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEjtwmFr1N3A90HAy94uoZD2ugmL7TfZGHblEbEe2Ufr7QFq-sca3IuktV-oG3PHIvQQr6OvfQVkVuIZ7rRPfP8uIkZhCWvASseq-9JGEFNtH5tO0-7xu1a0DqwY4J86mEiX3nOvN4OinBLrI6YNbVSghttMCKA8E7wPZdQeBeNVihZCNgvPfICNFLc" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_6.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEjvLm6FAJJBQPRwChQTzvtaVdBTw57lKi9PJKU26T2zc908HfbPJTq2OzItJslqR3p2zkOILiDezdIJ7Iuc4BTH6-zCGVGgd2idp7J2MMebHckbJud3EMxiTaL7ZUNZ8Ge4Qr-S18ntkNaCmJbHTI0hibOnoh6bt65gZGMqoWPfDe7o" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_15.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEgWnzvpGYdAcIq5fU5UJYDf31dlcYtorV5kHCc367rFBSKuG14Bs6Ypp05x0GWBq6tKshKOCM8m7GEMnKw0Lbs2eNF8Fqnh71c8GekHE0OCO4O73fJNw1Lytx0bJzC5cMDbNZ_uxqbR48Ehmu5FsvV3gwUu0Rfm29s55eIwdljqIUb3iw" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_2.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEi7ut2a93myDwMNw8Wfbw2fA_ztpSyXx5v_FQj3C2nYnzhesGLU_VkY0wnrH9CHCGX_TVFjsbXUw0Wbt4i1AJBfmE0Sibdd3yhACBrPO76OYfyb_oZKaO8_vJrJ356IiWcV3QLCGR3FuZGydnVR8x568xUZkNZORSSoXeZRHL0EEi82" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_13.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEgu29-29VAlBCzbnyDyrzlHlo1wFHZ6t1mkCc_lUT9M60PXTutYbIqSYmIUpld0tpKlsXQoYhkxxuMi8NUQuNwMscQbdSxLiyyWzkQKydTUvkDhMCGaUUGAPkCwJkkiBA1FhzsYtQu-MBjjNa_mPR96Nr24-te52OF0kPC6K9bv_-A_QA" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_5.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEiVrMwc-XwbMaNoh4DrlRz12gUaPuDXdcRbGSW_UQsLFE2DsMbs9I_hikisuq28MpUrhRHCAmlVuVZQ0-BSjK17n7OPa74l84esSd8qQMy_gzceiSUMcH1QaSxDS4DrdQVLZuhdhwHtiLKEGcnYTKigEcTBVk1_hLcwez9pIoqGGGmw" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_8.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEjVB5WMItTXux-nWTT047gjxujdZmSK-VSIuQ3PJWKINCF8NeRSb_eiczoGJlm6RHhuFsbNNzDd-X_qe5J1rykLHJ8lWiVFf553ho8G3B5zYnzsepVo78pl4YpAly1ZtzRbnV7K4sA4YeN85H4_Sdl0OkhJkq_Xc-C5fkA0L6Pc4R5W" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_4.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEh8YipDZRJhykykiZQcpAs67onzCpU5l3lNqTUztEVdn1N9lXLG5l1I5xI4vBaxgT-ViytRATWV6dJEXW5pDuoxoPzC3ptHaWK0fd0bSLj2_lkRsoQevMlBXxMCtLBiMtD3KAOJxDZ78iwmpl4XNpta84L_sHrY1OjkxCyAsYB0Fr-ktClt624Wm8c" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_17.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEgKxmpax3U6FU-z94hMKw0QWxT3K0FuImod4-QR8n41viEKRTlNoxhe4uWwxzbYsxPb-tFsFjCOPXIIpPZYLVcJ5idUs80ESVXJLTxPEaREbit7gU9v9fQGSmr8YdmW5bqGfJnh67A0oP7t6GnmC7KtE_v40Wiz3mbQoFvZ7uadDi2eTA" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_4.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEgXbaU0Ze9-g2RXJPiGAcVLk4B4UMeq-q28Oj66QF8mLVXccP8CI24Zny6d46PQcG-MgvkK9HMP1Yq8FjjI47AAs68CzEIGriiXjZiFeqB25PC4eZvjWTa6sRBLDj-ifr5jV6WPH53SFr00Zfx9G_1IRPoNOS3rVYAgLOiBZhGjvr2o" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_9.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEhLbL2fdEdo5mk2d2MokfY-qViQltU9EUCASl2fvwLN5lMVSR6NBSeyJuv94KfGkX3B6lfQEkUi-f0DIY4j6mOHboSEzI-XB21GfZ7-c78EoHn23CnD0KDwTWf5DB1oz4F2IvEAGbzN8Fek0yCLsx52gxRUqnsr4Bx0cZPhlKHJhma7" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_11.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEi05bEvUmeG0Xu0IAN6Ft0_nVa3vT1V_-FhsadFAFOJmyzRgmsYCVlGxvZJQe-y7e4ht8RoeKL22kSQBJDDrGV0YiuvtyQzRHaITNFJIp7RweyW4lyi0MQfV6AmD8j-iLgXsg7wi8v4NHayVFeKOi691ZlCuPa-dnWNM0fhY6n_nLJVog" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2F2e1ax_embarcadero_entry_Ubuntu-Tux.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEh7ocTj8gUF2NTWO01c7HV-kLeBlJs25QxUyF5Ti5wl-iugl9SYzba1efHAPxmVlripIlaBPT26Ox4pO-1Gx-y7JZJf_3fZjLVNOe7mL3NQZfpDdAqrrCACBRt0aP65DTTgBi3ZZ2_kBaQsoA5S3wevMGPLHvloKzj9xVbaI-Bzpj2pSQFQwbZ3gqjDNYZ96qvHQD0iGBwM05M" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_19.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEinw_j2WmM0vspf_S3BLSkIe3k8__8zG_J1KyGbmwDhEFWAD3vzI2qGr79699X0iXP6fsC-zmMdYZ74Vv336dVltLq4O0xglzL3krVuTQd7s9TUdSg2f-o05FrSTInV6XtsV5GfHFAN4CFRu1jw0mMMzHHy8S0gpEFv2LsD1HYe5pSFyA" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_18.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEh82Rp4zWq-Rs4-AzxDymq0l0e6uoIa7bpDMdne6Kmo-_JMRiEjO9_TpR5Zb3NsldDUtA9YIBLsAzUOBBiHkb3cYRXRRpgZfEA15u34h4M7Y1lnVPWDbnCJSI-YbnpClEATYssCKNhsG90ij3L-lDyOJQpcCLOPBydVQCCk4gxZF5LyWw" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_8.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEi-JPHTiQuX2wVITSNHTHBMD3uaJ2-3lYpmTVoWCoDgBR6SK9D3jy0HH4qj_B-i7yqw_VQpYpyvuulhmDejtPlnljw3ENhf7HgARxOkQmO3FmGYE5gxDPj7WiipN0CfizfDOmlWBNh5XtmlBVUXsphW8mSRQL8Fw_GBbjbWZ_xRvjUdqsujv1wxQhc" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_9.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEgmtznzGxdoQR_Xk1ref8viio8YnfzJQBK-BO8UYF6dgJPmfTI55lGHLod7jMP4LBn5n_aqybZCkoX-16vZCLc0qGeLn47bTAeC4uJZQcvSSVVxDp5aEJv9SMSd02x4n0vnFp0VLiIqAePkcNhM8PmryOsYIaU625h2XLCJVtnm_4Tktca64T3Dh4k" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_10.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEhXjHqIkYWapjZJ3xCOoOFNjWypZAr8DG1PNzmTGJD-BC_jn2zSsvoEK1J7WTNA7wil5OUg8cetj0n7sHOafDBwxdUNpwQY5A5rgiyZp94aGi86gkjJFOH47CEhLbfV8dXwcOaMm0rbImN_D1iBog47vx7MWhfpc1Rgz6BXANWPRhsktw" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_5.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEh1-QNvBTb2IeGdI_rh4DTskDRiV8ji6sqLoZOyKPqC0UglxY01da_2z4lAHvB9xiNcufT-XG0MhbddZz5-v6BtLY0cONWRpp5yJ8iKVnhe6bAixG0qs4HrZ9k-mjP-ZXIglYo73lm99MTyZw_owNBCz_9iKAZSzezjKhBUUlgoi1gI6HpSsL-1KYk" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_2.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEhpbG6ETkaZtqfbQjL23BlKVvwAA2M1Kwi2H55FydkKSHcKeg1OjVetgVO9cp2GlmC9hc8SGDtMgglB7dhe8cyH-PWW1rD2DN_8JlhR_EHTVLFTT7Go0yqi7j0yGvB2oD07Pv7vXNvkgDj2vbh88lIA3lS363i5bIlWWGVEBH0rdx0JQN0kieZAwoc" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2Fvboxsetup_12.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEjvnovTlPN0s8iIK1UyjfIs5xstjQOyqpwReNBSMsGa8gD8fWWgvNl_zkGjgujAt4kG1xKT9Pbw8YYCoXmrhwc3Db2G9NFIrJe-tg9PpUo6scfwfWZvXLACtGH7rMijNycu4mm5D3ia93C-qWOHcFXdoBxm0XqOcXvJIOb42q-6E9jEMw" --><!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fchapmanworld.com%2Fwp-content%2Fuploads%2F2016%2F12%2FVirtualBoxInstall_10.png&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEh5aLsvk3rg7v2wbtJ74Fza9pOU0DnBsZd16oY5FTChlBL2FbLqmqFiYSi33XoT2uAjkexv-MwzgdkM2M-1PVjC6F2AGoE7u3wHkfHCnG2Ky5gZXgc0rO-rbrahxygCOyT5rL1_z8ALy0-BHtuQlTreoybyMcCWt2Ml4H8UHKw600vWnwEFENmydC9v" -->franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com2tag:blogger.com,1999:blog-8465289030259847715.post-66638107341571182162017-03-11T17:30:00.002-05:002017-05-31T10:38:55.287-05:00Herramienta Multiplataforma para Desarrolladores<i>Después de 10 años, ya sé sobre qué escribiré...</i><br />
<i>(Si has visto mi primera entrada de blog sabrás a que me refiero)</i><br />
<br />
<div style="text-align: justify;">
A los que nos apasiona escribir y escribir líneas de código, a los que nos gusta hacerlo como hobby o quizá lo hacemos por encargo de algún trabajo, sabemos que las horas frente al computador pueden ser largas y a pesar de disfrutarlas no nos gusta hacer lo mismo dos veces. En realidad cada situación que vemos en nuestras vidas realmente queremos automatizarlas jajajja o no? (...) me ha pasado mucho! Pero por falta de tiempo generalmente no podemos cumplir nuestros deseos. Imaginemos que ya tienes tu Sistema o App ya terminada para una plataforma X, e imagina si te piden exactamente la misma App para otra plataforma, esto no es nada inusual. Pues bien, el sólo hecho de pensarlo nos da mucha flojera, se nos cambia la cara... y por supuesto lo primero que se nos viene a la mente es cierta tranquilidad porque sabemos que muchas cosas podremos reutilizarlas y en otros casos no, pero al menos nos queda la lógica ya escrita y sobre ello tocará traducirla para que funcione en la otra plataforma solicitada. Por ejemplo si pasamos de <a href="https://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)" target="_blank"><span id="goog_1648869657"></span>Java</a> para <a href="https://developer.android.com/index.html" target="_blank">Android</a> a <a href="https://es.wikipedia.org/wiki/Objective-C" target="_blank">Objective C</a> de <a href="https://developer.apple.com/" target="_blank">iOS</a>, o viceversa.<br />
<br />
<a name='more'></a><br /></div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvI-I0V1uerlO5KZqXbrn1p8A-0VP_4QnFqDDUJy8xA7GOnH-56Sy5CyOKHh8mU_fwbClrmQHCP3bTnyesicsa0AYH_ksIfXH4dZhOEKSDMa_dHAOo7SJwiUqKwpO5R4-TmimZmzmNSRE/s1600/tim-gouw-68319.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvI-I0V1uerlO5KZqXbrn1p8A-0VP_4QnFqDDUJy8xA7GOnH-56Sy5CyOKHh8mU_fwbClrmQHCP3bTnyesicsa0AYH_ksIfXH4dZhOEKSDMa_dHAOo7SJwiUqKwpO5R4-TmimZmzmNSRE/s200/tim-gouw-68319.jpg" width="200" /></a></div>
<br /></div>
<div style="text-align: justify;">
Volver a escribir los procedimientos, funciones, conexiones a BD, <a href="https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional" target="_blank">REST</a>, procesar los <a href="https://es.wikipedia.org/wiki/Extensible_Markup_Language" target="_blank">XML</a> o <a href="https://es.wikipedia.org/wiki/JSON" target="_blank">JSON</a> y sobre esto volver a hacer la interfaz del usuario, programar sus eventos, efectos, formas y colores que tenía... pufffff qué pesar!!</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<b>Un sueño...</b><br />
Que tal si les digo que con un sólo código fuente y con una GUI "clonable" puedes generar aplicaciones para hasta cinco (5) plataformas, varias totalmente diferentes entre ellas.<br />
<br />
Pues sí existe y su código es 100% reutilizable! No volverás a escribir todo de nuevo, ni la interfaz del usuario, <a href="https://es.wikipedia.org/wiki/Interfaz_gr%C3%A1fica_de_usuario" target="_blank">GUI</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV4xrTYU5wSO4kg8NRg7PstsNfeM1U8mvxGHmyD49BVQWeUjHrv4ks4vQ66Onx0to0TRjEzfNK6IwANrEV1rMCKPCBRP42j62X4t3vHM_QT7GF1dhm6W0UFeseJCiUpH3rh-gNUjOsVOg/s1600/home-office-336378_640.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV4xrTYU5wSO4kg8NRg7PstsNfeM1U8mvxGHmyD49BVQWeUjHrv4ks4vQ66Onx0to0TRjEzfNK6IwANrEV1rMCKPCBRP42j62X4t3vHM_QT7GF1dhm6W0UFeseJCiUpH3rh-gNUjOsVOg/s200/home-office-336378_640.jpg" width="200" /></a></div>
<div style="text-align: justify;">
Lo mejor de todo es que existe una versión gratuita que podrás descargar para que empieces tu entrenamiento de inmediato, a cero costo.</div>
<br />
<div style="text-align: center;">
<a href="https://www.embarcadero.com/products/cbuilder/starter/promotional-download">https://www.embarcadero.com/products/cbuilder/starter/promotional-download</a></div>
<div style="text-align: center;">
<a href="https://www.embarcadero.com/products/delphi/starter/promotional-download">https://www.embarcadero.com/products/delphi/starter/promotional-download</a></div>
<br />
<div style="text-align: justify;">
Te recomiendo descargar el primer link ya que me centraré en ese lenguaje principalmete. Delphi es un lenguaje excelente pero C++ lo es más aún! Y además es un lenguaje que no morirá, al menos no lo hará en las próximas décadas.</div>
<br />
<b>Características más resaltantes:</b><br />
<br />
<ul>
<li>Desarrolla para varias plataformas</li>
<li>Compilador <a href="https://es.wikipedia.org/wiki/Clang" target="_blank">Clang</a> moderno</li>
<li>C++ es poderoso, está mejorado y totalmente integrado a la IDE de desarrollador</li>
<li>Ejecuta tu código en paralelo sin congelar la ventana del usuario</li>
<li>Diseña la interfaz de usuario (GUI) una sola vez</li>
<li>Depura con total tranquilidad, paso a paso y más</li>
<li>Componentes mejorados para la conectividad a bases de datos</li>
<li>REST, cloud, IoT, tethering, Bluetooth, etc.</li>
<li>Permite una rápida programación y lanzamiento de tus Apps</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqUjyYLrrV1zpDU6lh7rc-rzWg3e1Ya51B2OX77hdWoZVWaOwuux_Uz509ko2dqpnrWrCPTrWP6672TeIMwo2EzLIRrgWfZqLCpwGI_xCwUyXBxahChcf51ZRXQwxP4asrZRgTPBdQanY/s1600/modern-c--clang-enhanced-c--compiler.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="183" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqUjyYLrrV1zpDU6lh7rc-rzWg3e1Ya51B2OX77hdWoZVWaOwuux_Uz509ko2dqpnrWrCPTrWP6672TeIMwo2EzLIRrgWfZqLCpwGI_xCwUyXBxahChcf51ZRXQwxP4asrZRgTPBdQanY/s400/modern-c--clang-enhanced-c--compiler.png" width="400" /></a></div>
<br />
<div style="text-align: justify;">
Regístrate, descarga e instala utilizando el número de serie que te enviarán a tu correo.</div>
<div style="text-align: justify;">
Las inquietudes que tengan me las hacen llegar y con gusto los trataré de ayudar.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Suscribete a este blog para que estés atengo a mis siguientes publicaciones. Esto es sólo el inicio y mi idea es llevarlos de la mano para que puedan desarrollar sus propias aplicaciones. Verán lo sencillo que es. No se asusten del nombre C++, puede ser algo intimidante, pero cuando noten que realmente podrán hacer lo que quieran, les encantará!</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://devnewsnow.com/mvp/logo/PoweredBy/RAD%20Studio/Powered_by_RADStudio.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://devnewsnow.com/mvp/logo/PoweredBy/RAD%20Studio/Powered_by_RADStudio.png" height="129" width="320" /></a></div>
<br />
<br />franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-51826728241169646552015-10-01T01:47:00.001-05:002017-05-31T10:38:55.280-05:00Expresión Lambda en C++11<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- FMA Blog -->
<br />
<ins class="adsbygoogle" data-ad-client="ca-pub-5430597769909759" data-ad-format="auto" data-ad-slot="6797487202" style="display: block;"></ins><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br />
<div dir="ltr">
Aquí dejo este pequeño detalle según las pruebas que he realizado con la expresión de tipo lambda de las librerías de C++11. La forma general es bastante simple, está conformada de tres partes, la intermedia es inclusive opcional, haciéndola más simple aún, como verán: </div>
<div dir="ltr">
<br />
<a name='more'></a><br />
<br />
Introducer declaración(Opcional) cuerpo<br />
•Forma1: [ ] { } //Sin parte declaración.<br />
•Forma2: [ ] ( ) { }</div>
<div dir="ltr">
<br />
Al menos esa es la forma general que conozco, no dudo que encuentren alguna por ahí con otra forma... les tocará googlear para salir de sus dudas. Yo de pronto he estado trabajando con la forma general que he mostrado lineas arriba, aqui dejo mas detalles:</div>
<div dir="ltr">
<br />
▪ "[ ]" podria ser<br />
[ ]<br />
[&]<br />
[=]<br />
[variable]<br />
[&variable]<br />
[this]<br />
[&, variable, ...]<br />
[=, &variable, ...]</div>
<div dir="ltr">
<br />
Nota:<br />
☆ '&' significa que captura por referencia todas las variables de su contexto.<br />
☆ '=' similar al anterior pero por valor, o copia de las variables del co texto. </div>
<div dir="ltr">
<br />
▪ "( )" podría ser:<br />
( )<br />
(int param1, String param2, etc )</div>
<div dir="ltr">
Se puede indicar el retorno, Ej.:<br />
(int param1, String param2, etc ) -> void<br />
( ) -> int</div>
<div dir="ltr">
<br />
▪ "{ }" cuerpo del procedimiento, Ej.:<br />
{return param1 + param2}<br />
<br />
EJEMPLO1:<br />
<!-- HTML generated using hilite.me --><br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3
4</pre>
</td><td><pre style="line-height: 125%; margin: 0;"> <span style="color: navy; font-weight: bold;">auto</span> lambda = [<span style="color: navy; font-weight: bold;">this</span>] (String pTitulo) -> <span style="color: navy; font-weight: bold;">void</span> {
<span style="color: navy; font-weight: bold;">this</span>->Speedbutton1->Text = pTitulo;
};
lambda(<span style="color: blue;">"Hola mundo"</span>);
</pre>
</td></tr>
</tbody></table>
</div>
<br />
Nota:<br />
☆ 'auto' permite declarar las variables de manera automática, es decir que identifica el tipo de variable que debe autoasignarse dependiendo de qué se crea a su derecha. He tenido inconvenientes con cierto tipo de variables al usar este tipo de declaración en Android, al menos esto me pareció en las pruebas iniciales que he realizado; seguiré probando mas adelante. <br />
☆ Éstas expresiones lambda son muy útiles para simplificar código, por ejemplo cuando pretendes hacer pequeñas funciones o métodos para objetos TThread. Muy recomendable! </div>
<div dir="ltr">
<br />
EJEMPLO2:<br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3
4
5
6
7
8
9</pre>
</td><td><pre style="line-height: 125%; margin: 0;"> TTask::Run(
[<span style="color: navy; font-weight: bold;">this</span>]() -> <span style="color: navy; font-weight: bold;">void</span> {
Sleep(<span style="color: blue;">6000</span>);
<span style="color: navy; font-weight: bold;">int</span> i = <span style="color: blue;">7</span>;
TThread::Synchronize(<span style="color: blue;">0</span>,
[<span style="color: navy; font-weight: bold;">this</span>, i]() -> <span style="color: navy; font-weight: bold;">void</span> {
ShowMessage(IntToStr(i));
});
});
</pre>
</td></tr>
</tbody></table>
</div>
<br />
EJEMPLO3:<br />
<div style="background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;">
<table><tbody>
<tr><td><pre style="line-height: 125%; margin: 0;">1
2
3
4
5
6
7</pre>
</td><td><pre style="line-height: 125%; margin: 0;">fShowToast(u<span style="color: blue;">"'Por favor ingresar tu número de identificación"</span>,<span style="color: blue;">2</span>);
TThread::CreateAnonymousThread([&]() -> <span style="color: navy; font-weight: bold;">void</span> {
Sleep(<span style="color: blue;">2000</span>);
TThread::Synchronize(TThread::CurrentThread, [&]()-><span style="color: navy; font-weight: bold;">void</span> {
edt_DocID->SetFocus();
});
})->Start();
</pre>
</td></tr>
</tbody></table>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.embarcadero.com/products/cbuilder" target="_blank"><img border="0" src="http://delphi.org/mvp/logo/PoweredBy/C++Builder/Powered_by_C++Builder.png" height="130" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.embarcadero.com/" target="_blank"><img border="0" src="http://delphi.org/mvp/logo/EMBT/Primary_EMBT_Logo/Primary_EMBT_Logo_Black_RGB_500px.png" height="85" width="320" /></a></div>
<br /></div>
franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-68262045039302919872007-10-15T16:50:00.001-05:002017-05-31T10:39:01.949-05:00Mica y Fran preparándose para la foto.<div xmlns="http://www.w3.org/1999/xhtml"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoS1vfLvokGRvcS5qxtk9Y5sZRDEJzRSEddoAs5Nd4TbQvTcRhINTlKHqMj8te2lBepyqSiDwto-jTOJvAlTeklQIvQ2G6935w6kZEbqwlZsgNj29vgfsnt4uZ5xOzUW7jTRaqj02GmQY/s1600-h/image-upload-75-708430.jpe"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoS1vfLvokGRvcS5qxtk9Y5sZRDEJzRSEddoAs5Nd4TbQvTcRhINTlKHqMj8te2lBepyqSiDwto-jTOJvAlTeklQIvQ2G6935w6kZEbqwlZsgNj29vgfsnt4uZ5xOzUW7jTRaqj02GmQY/s320/image-upload-75-708430.jpe"/></a><br /><span>Listos? Dientecitos, miren la camara...</span><br /></div>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-36936796346982958672007-10-15T16:41:00.001-05:002017-05-31T10:39:01.880-05:00Mica y Fran<div xmlns="http://www.w3.org/1999/xhtml"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrKF6YOoOxqsl9PZHu5mcy6VkdEXRk4w_IObksFHwvrYEiZJuMTD-GFXPOLYWBNV4QDq5nPe5K5NqktylkQxl_kZu1rUkvDUg9UF3IdqZr8Yd40DLC9C7iMVEKAuFLEUkUURh1Nwmarv4/s1600-h/image-upload-6-710454.jpe"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrKF6YOoOxqsl9PZHu5mcy6VkdEXRk4w_IObksFHwvrYEiZJuMTD-GFXPOLYWBNV4QDq5nPe5K5NqktylkQxl_kZu1rUkvDUg9UF3IdqZr8Yd40DLC9C7iMVEKAuFLEUkUURh1Nwmarv4/s320/image-upload-6-710454.jpe"/></a><br /><span>Un dia de juegos</span><br /></div>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-29116005630127425862007-10-15T16:29:00.001-05:002017-05-31T10:39:01.867-05:00Francesco con chullo<div xmlns="http://www.w3.org/1999/xhtml"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinEhTO_SnsJA4OpfbLX-DXUERMHuhDEsg0zShTe-yVIdttrvFC4c3N0RdZHfca4iRlRcg04XPr3egnuB7WAff0jnQ1_jKm-hJQdcjj6RHBqUQJ1sxLUEjnahID1G1mJIBcttKQqFLiyYg/s1600-h/image-upload-57-764076.jpe"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinEhTO_SnsJA4OpfbLX-DXUERMHuhDEsg0zShTe-yVIdttrvFC4c3N0RdZHfca4iRlRcg04XPr3egnuB7WAff0jnQ1_jKm-hJQdcjj6RHBqUQJ1sxLUEjnahID1G1mJIBcttKQqFLiyYg/s320/image-upload-57-764076.jpe"/></a><br /><span>Posando con el chullo</span><br /></div>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-45476183127054060252007-09-19T18:49:00.001-05:002007-09-19T19:25:59.741-05:00Peugeot<div xmlns="http://www.w3.org/1999/xhtml"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ2TZglEVY_BOmwol1XkH0UnGHpt8PbwLPXxquwXZhneclf-3EVgBxAWXd8ZfpYO-Fumzl_ZHnfkLFrFBrYVTB01AmrIHojtFc9QCT9C_UFmM_SzN0_jPZdlIeG86Dfw51QxU6QO22wuk/s1600-h/image-upload-24-782975.jpe"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZ2TZglEVY_BOmwol1XkH0UnGHpt8PbwLPXxquwXZhneclf-3EVgBxAWXd8ZfpYO-Fumzl_ZHnfkLFrFBrYVTB01AmrIHojtFc9QCT9C_UFmM_SzN0_jPZdlIeG86Dfw51QxU6QO22wuk/s320/image-upload-24-782975.jpe"/></a><br /><span>Io sono</span><br /></div>franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0tag:blogger.com,1999:blog-8465289030259847715.post-22682422498304091002007-07-07T11:18:00.000-05:002007-07-07T11:48:53.981-05:00Bienvenidos a este web log..Este es la primera vez que creo un blog así que este texto inicial es sólo de prueba para probar y ver cómo funciona....<br /><br /><br /><br />No tengo la menos idea de qué publicar, ya se me ocurrirá algo.<br /><br /><br /><br />Por el momento es todo.<br /><br /><br /><br />Que tengan un buen día.franciscomurohttp://www.blogger.com/profile/03337982482965269755noreply@blogger.com0