<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2759718539343901077</id><updated>2025-10-19T11:18:59.871-07:00</updated><category term="GNU/Linux"/><category term="Java"/><category term="PHP"/><category term="VirtualBox"/><category term="sql server"/><category term="ubuntu"/><category term="Servidor"/><category term="android"/><category term="apt-get"/><category term="cake"/><category term="cakephp"/><category term="distrital"/><category term="ieee"/><category term="lider"/><category term="universidad"/><category term="AES"/><category term="Analisis amplificador BJT 2n2222 emisor comun"/><category term="Cocina"/><category term="D-Bus"/><category term="DHCP"/><category term="Encriptar"/><category term="Fourier"/><category term="Hilbert y Laplace en Latex"/><category term="JavaScript"/><category term="Only"/><category term="OpenOffice"/><category term="PHP Bash scripts CRON Linux Ubuntu Ejecucion automatica"/><category term="PHP array key arreglo"/><category term="Pfsense"/><category term="Proxy"/><category term="TinyDHCP"/><category term="Windows"/><category term="action &quot;start&quot; failed. xampp lampp mysql apache php phpmyadmin"/><category term="add"/><category term="agregar"/><category term="amazon"/><category term="apache"/><category term="apple"/><category term="archivo"/><category term="arreglos"/><category term="base de datos"/><category term="bluefish"/><category term="calculadora"/><category term="code"/><category term="compartir"/><category term="configurar"/><category term="created"/><category term="crontab"/><category term="desencriptar"/><category term="directorio"/><category term="display"/><category term="ec2"/><category term="eclipse"/><category term="enum"/><category term="excel"/><category term="fecha"/><category term="filechooser"/><category term="filetype"/><category term="filezilla"/><category term="firefly"/><category term="formulas"/><category term="ftp"/><category term="fuente"/><category term="glassfish"/><category term="hierarchy"/><category term="hora"/><category term="id"/><category term="invoke-rc.d: initscript mysql"/><category term="ios"/><category term="javac"/><category term="javax.net.ssl.SSLHandshakeException"/><category term="knryco"/><category term="latex"/><category term="latex real complejo natural entero"/><category term="lenguaje matematico"/><category term="linux"/><category term="longitud"/><category term="mac"/><category term="mysql"/><category term="máscara"/><category term="oledb"/><category term="original .thread"/><category term="packettracer packet tracer ubuntu 10.04 qt callManager Segmentation fault (core dumped)"/><category term="pankeke"/><category term="panqueque"/><category term="pestaña"/><category term="problema"/><category term="ram"/><category term="receta"/><category term="restaurar"/><category term="rollback"/><category term="ruta"/><category term="servidor nfs ubuntu slack slackware ntfs-3g fuse"/><category term="serviro vinculado"/><category term="sftp"/><category term="solución"/><category term="source"/><category term="squashfs"/><category term="squid"/><category term="ssh"/><category term="sshd"/><category term="tab"/><category term="tabhost"/><category term="tipo de archivo"/><category term="tmpfs"/><category term="trigger"/><category term="upgrade"/><category term="variable"/><category term="view"/><category term="views"/><category term="virtualbox xinit terminal grafica aparte"/><category term="vlsm"/><category term="wicd"/><category term="widget"/><category term="xmessage"/><title type='text'>firefly + thaednevol</title><subtitle type='html'>Sitio para difundir y compartir nuestras experiencias en linux, tecnología, ciencia y en general.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>65</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-6442962846814842326</id><published>2025-01-24T08:40:00.004-08:00</published><updated>2025-01-24T08:47:59.797-08:00</updated><title type='text'>¿Qué es arquitectura de software?</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&amp;nbsp;Escribir sobre arquitectura de software, que destila la experiencia de muchas personas, presupone que:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Tener una arquitectura de software razonable es importante para el desarrollo exitoso de un sistema de software, y&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Existe un cuerpo de conocimiento suficiente sobre arquitectura de software para llenar un libro.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Hubo un tiempo en el que ambas suposiciones necesitaban ser justificadas. Hoy en día, parece haber poca controversia sobre ambos objetivos..&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;El principio básico de la arquitectura de software es que todo sistema de software se construye para satisfacer los objetivos empresariales de una organización, y que la arquitectura de un sistema es un puente entre esos objetivos (a menudo abstractos) y el sistema final (concreto) resultante. Aunque el camino de los objetivos abstractos a los sistemas concretos puede ser complejo, la buena noticia es que las arquitecturas de software pueden diseñarse, analizarse y documentarse utilizando técnicas conocidas que apoyan el logro de estos objetivos empresariales. La complejidad puede ser domada y hecha manejable.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b style=&quot;font-size: large;&quot;&gt;Qué es y qué no es la arquitectura de software&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Existen muchas definiciones de arquitectura de software, fácilmente accesibles con una búsqueda en la web, pero la que más nos gusta es esta:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La arquitectura de software de un sistema es el conjunto de estructuras necesarias para razonar sobre el sistema. Estas estructuras comprenden elementos de software, relaciones entre ellos y propiedades de ambos.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Esta definición contrasta con otras que mencionan las decisiones &quot;tempranas&quot;, &quot;principales&quot; o &quot;importantes&quot; del sistema. Si bien es cierto que muchas decisiones arquitectónicas se toman temprano en el proceso, no todas lo son, especialmente en proyectos con desarrollo ágil o en espiral. También es cierto que muchas decisiones tomadas al inicio no son lo que consideraríamos arquitectónicas. Además, no siempre es fácil determinar si una decisión es &quot;principal&quot;. A veces, solo el tiempo lo revela. Y dado que decidir sobre una arquitectura es una de las responsabilidades más importantes del arquitecto, necesitamos saber cuáles decisiones forman parte de una arquitectura.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;En cambio, las estructuras son relativamente fáciles de identificar en el software y constituyen una herramienta poderosa para el diseño y análisis del sistema.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Así que aquí estamos: la arquitectura trata de estructuras que permiten razonar.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Veamos algunas de las implicaciones de nuestra definición.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;La arquitectura es un conjunto de estructuras de software&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Esta es la primera y más obvia implicación de nuestra definición. Una estructura es, simplemente, un conjunto de elementos unidos por una relación. Los sistemas de software están compuestos por muchas estructuras, y ninguna de ellas puede reclamar ser la arquitectura. Las estructuras pueden agruparse en categorías, y estas categorías proporcionan maneras útiles de conceptualizar la arquitectura. Las estructuras arquitectónicas pueden organizarse en tres categorías útiles, que desempeñarán un papel importante en el diseño, documentación y análisis de arquitecturas:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Estructuras de componentes y conectores&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Estructuras de módulos&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Estructuras de asignación&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Aunque el software contiene un suministro casi interminable de estructuras, no todas son arquitectónicas. Por ejemplo, el conjunto de líneas de código fuente que contienen la letra “z”, ordenadas por longitud de menor a mayor, es una estructura de software. Pero no es una muy interesante, ni tampoco arquitectónica.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Una estructura es arquitectónica si apoya el razonamiento sobre el sistema y sus propiedades. Este razonamiento debe centrarse en un atributo del sistema que sea importante para algunos de los interesados. Estos atributos incluyen propiedades como:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La funcionalidad que el sistema logra,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La capacidad del sistema para seguir funcionando de manera útil frente a fallos o intentos de ataque,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La facilidad o dificultad de realizar cambios específicos en el sistema,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La capacidad del sistema para responder a solicitudes de los usuarios,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Y muchas más.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Por lo tanto, el conjunto de estructuras arquitectónicas no está fijado ni es limitado. Lo que se considera arquitectónico depende de lo que sea útil para razonar en tu contexto y para tu sistema.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;La arquitectura es una abstracción&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Dado que la arquitectura consiste en estructuras, y las estructuras se componen de elementos y relaciones, se deduce que una arquitectura incluye los elementos de software y cómo estos se relacionan entre sí. Esto significa que la arquitectura omite, de manera específica e intencionada, cierta información sobre los elementos que no es útil para razonar sobre el sistema. Por lo tanto, una arquitectura es, ante todo, una abstracción de un sistema que selecciona ciertos detalles y suprime otros.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;En todos los sistemas modernos, los elementos interactúan entre sí a través de interfaces que dividen los detalles de un elemento en partes públicas y privadas. La arquitectura se ocupa del lado público de esta división; los detalles privados de los elementos—aquellos relacionados exclusivamente con la implementación interna—no son considerados arquitectónicos.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Esta abstracción es esencial para manejar la complejidad de una arquitectura: simplemente no podemos, ni queremos, lidiar con toda la complejidad todo el tiempo. Queremos—y necesitamos—que la comprensión de la arquitectura de un sistema sea varios órdenes de magnitud más sencilla que entender cada detalle de ese sistema.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;No puedes retener todos los detalles de un sistema, incluso de tamaño modesto, en tu mente; el propósito de la arquitectura es hacer que no sea necesario hacerlo.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Arquitectura versus diseño&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La arquitectura es diseño, pero no todo diseño es arquitectura. Es decir, muchas decisiones de diseño no están determinadas por la arquitectura—ya que, después de todo, esta es una abstracción—y dependen del criterio y buen juicio de los diseñadores posteriores e incluso de los implementadores.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Todo sistema de software tiene una arquitectura de software&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Todo sistema tiene una arquitectura, porque todo sistema tiene elementos y relaciones. Sin embargo, esto no significa que la arquitectura sea conocida por alguien. Tal vez todas las personas que diseñaron el sistema se hayan ido hace tiempo, la documentación se haya perdido (o nunca se haya producido), el código fuente haya desaparecido (o nunca se haya entregado) y todo lo que tengamos a mano sea el código binario en ejecución.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Esto revela la diferencia entre la arquitectura de un sistema y la representación de esa arquitectura. Dado que una arquitectura puede existir de manera independiente de su descripción o especificación, esto destaca la importancia de la documentación de la arquitectura.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;No todas las arquitecturas son buenas arquitecturas&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Nuestra definición es neutral respecto a si la arquitectura de un sistema es buena o mala. Una arquitectura puede tanto apoyar como dificultar el cumplimiento de los requisitos importantes de un sistema.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Asumiendo que no aceptamos el ensayo y error como la mejor manera de elegir una arquitectura para un sistema—es decir, seleccionar una arquitectura al azar, construir el sistema a partir de ella y luego modificarla improvisadamente con la esperanza de obtener buenos resultados—esto resalta la importancia del diseño de arquitectura y de la evaluación de arquitectura.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;La arquitectura incluye el comportamiento&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;El comportamiento de cada elemento forma parte de la arquitectura en la medida en que este comportamiento pueda ayudarte a razonar sobre el sistema. El comportamiento de los elementos refleja cómo interactúan entre sí y con el entorno. Esto claramente está incluido en nuestra definición de arquitectura y tiene un impacto en las propiedades que exhibe el sistema, como su rendimiento en tiempo de ejecución.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Algunos aspectos del comportamiento están por debajo del nivel de preocupación del arquitecto. Sin embargo, en la medida en que el comportamiento de un elemento influya en la aceptabilidad del sistema en su conjunto, este comportamiento debe considerarse parte del diseño arquitectónico del sistema y documentarse como tal.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Arquitecturas de sistemas y de empresas&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Dos disciplinas relacionadas con la arquitectura de software son la arquitectura de sistemas y la arquitectura empresarial. Ambas tienen preocupaciones más amplias que el software y afectan a la arquitectura de software mediante el establecimiento de restricciones dentro de las cuales un sistema de software, y su arquitecto, deben operar.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;b&gt;Arquitectura de sistemas&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La arquitectura de un sistema es una representación del sistema en la que hay un mapeo de la funcionalidad en componentes de hardware y software, un mapeo de la arquitectura de software en la arquitectura de hardware, y una consideración de la interacción humana con estos componentes. Es decir, la arquitectura de sistemas se ocupa de la totalidad del hardware, el software y los humanos.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Por ejemplo, la arquitectura de sistemas influirá en:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La funcionalidad asignada a diferentes procesadores,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Los tipos de redes que conectan esos procesadores.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La arquitectura de software determinará cómo se estructura esta funcionalidad y cómo interactúan los programas de software que residen en los distintos procesadores.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Una descripción de la arquitectura de software, mapeada a los componentes de hardware y redes, permite razonar sobre cualidades como el rendimiento y la confiabilidad. Una descripción de la arquitectura de sistemas permitirá razonar sobre cualidades adicionales como:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Consumo de energía,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Peso,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Dimensiones físicas.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Al diseñar un sistema en particular, es común que haya una negociación entre el arquitecto de sistemas y el arquitecto de software sobre la distribución de la funcionalidad y, en consecuencia, las restricciones impuestas a la arquitectura de software.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/6442962846814842326/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/6442962846814842326' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/6442962846814842326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/6442962846814842326'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2025/01/que-es-arquitectura-de-sotware.html' title='¿Qué es arquitectura de software?'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-313122747490102108</id><published>2024-07-31T21:07:00.000-07:00</published><updated>2024-07-31T21:11:36.634-07:00</updated><title type='text'>Conceptos básicos de Java: variables, tipos de datos, operadores, estructuras de control (if, switch, for, while).</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: white; font-size: small;&quot;&gt;What will the following code print when run?&lt;/span&gt;&lt;/p&gt;&lt;br style=&quot;background-color: white; font-family: &amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif; font-size: small;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;public class TestClass {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) throws Exception { //1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var flag&amp;nbsp;&amp;nbsp;= true; //2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch (flag){ //3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case true -&amp;gt; System.out.println(&quot;true&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default -&amp;gt; System.out.println(&quot;false&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: #ccffcc; font-size: small;&quot;&gt;Compilation error at line marked //3.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: #ccffcc; font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table aria-hidden=&quot;false&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;option_withanswer&quot; style=&quot;border: none; margin-top: 20px; padding-top: 10px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot; style=&quot;font-family: &amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif; font-size: small; vertical-align: top;&quot;&gt;&lt;div aria-hidden=&quot;false&quot; class=&quot;optionComment&quot; style=&quot;background-color: lightgrey; border: thin dashed black; color: blue; display: inline-block; margin-left: 19px; padding: 2px;&quot;&gt;A boolean cannot be used for a switch statement/expression. It needs an integral type (including wrappers), an enum, or a String.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: #ccffcc; font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: #ccffcc; font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: #ccffcc; font-size: small;&quot;&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: white; font-size: small;&quot;&gt;Using a&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;continue&lt;/span&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: white; font-size: small;&quot;&gt;&amp;nbsp;in a while loop causes the loop to break the current iteration and start the next iteration of the loop&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: #ccffcc; font-size: small;&quot;&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: white; font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: #ccffcc; font-size: small;&quot;&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: white; font-size: small;&quot;&gt;&lt;span style=&quot;background-color: #ccffcc; font-family: &amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif; font-size: small;&quot;&gt;True&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: #ccffcc; font-size: small;&quot;&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: white; font-size: small;&quot;&gt;&lt;span style=&quot;background-color: #ccffcc; font-family: &amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif; font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: #ccffcc; font-size: small;&quot;&gt;&lt;span face=&quot;&amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif&quot; style=&quot;background-color: white; font-size: small;&quot;&gt;&lt;span style=&quot;background-color: #ccffcc; font-family: &amp;quot;Arial Unicode MS&amp;quot;, Arial, sans-serif; font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/313122747490102108/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/313122747490102108' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/313122747490102108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/313122747490102108'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2024/07/conceptos-basicos-de-java-variables.html' title='Conceptos básicos de Java: variables, tipos de datos, operadores, estructuras de control (if, switch, for, while).'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-4327325493302471502</id><published>2024-07-31T21:02:00.000-07:00</published><updated>2024-07-31T21:02:21.057-07:00</updated><title type='text'>Java champion path (de acuerdo a Chat-GPT)</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;Día 1: Fundamentos y Preparación&lt;/h3&gt;&lt;h4&gt;1. &lt;strong&gt;Revisión de Fundamentos&lt;/strong&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Duración:&lt;/strong&gt; 2 horas&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Actividades:&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Repasar conceptos básicos de Java: variables, tipos de datos, operadores, estructuras de control (if, switch, for, while).&lt;/li&gt;&lt;li&gt;Ejercicios prácticos en estos temas para asegurar comprensión y fluidez.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;2. &lt;strong&gt;Configuración del Entorno de Desarrollo&lt;/strong&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Duración:&lt;/strong&gt; 1 hora&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Actividades:&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Instalar o actualizar el JDK (Java Development Kit) a la última versión.&lt;/li&gt;&lt;li&gt;Configurar un IDE (Eclipse, IntelliJ IDEA o VS Code con extensiones para Java).&lt;/li&gt;&lt;li&gt;Configurar las herramientas de línea de comandos necesarias (Maven, Gradle).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;3. &lt;strong&gt;Lectura Técnica&lt;/strong&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Duración:&lt;/strong&gt; 1.5 horas&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Actividades:&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Leer capítulos iniciales de un libro recomendado para desarrolladores avanzados de Java, como &quot;Effective Java&quot; de Joshua Bloch.&lt;/li&gt;&lt;li&gt;Tomar notas sobre las mejores prácticas y los principios fundamentales discutidos en el libro.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;4. &lt;strong&gt;Práctica de Programación&lt;/strong&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Duración:&lt;/strong&gt; 2 horas&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Actividades:&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Escribir programas simples que incorporen los conceptos repasados en la revisión de fundamentos.&lt;/li&gt;&lt;li&gt;Resolver problemas de programación en plataformas como HackerRank o LeetCode, enfocándose en problemas de dificultad baja a media.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;5. &lt;strong&gt;Participación en la Comunidad&lt;/strong&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Duración:&lt;/strong&gt; 1 hora&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Actividades:&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Unirse a foros y comunidades en línea de Java, como Stack Overflow, Reddit (r/java), y grupos en LinkedIn.&lt;/li&gt;&lt;li&gt;Leer y participar en discusiones relevantes, plantear preguntas y compartir conocimientos.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;6. &lt;strong&gt;Reflexión y Planificación&lt;/strong&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Duración:&lt;/strong&gt; 30 minutos&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Actividades:&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Escribir un diario o un blog breve sobre lo aprendido durante el día y cualquier desafío encontrado.&lt;/li&gt;&lt;li&gt;Planificar las actividades del día siguiente basado en los aprendizajes y ajustes necesarios.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;¿Listo para comenzar? Si tienes alguna pregunta específica o necesitas más detalles sobre alguna de estas actividades, no dudes en preguntar.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/4327325493302471502/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/4327325493302471502' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/4327325493302471502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/4327325493302471502'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2024/07/java-champion-path-de-acuerdo-chat-gpt.html' title='Java champion path (de acuerdo a Chat-GPT)'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-4298387154069512827</id><published>2019-10-09T10:31:00.000-07:00</published><updated>2019-10-09T17:09:21.979-07:00</updated><title type='text'>Procedimientos para realizar revisiones sistemáticas</title><content type='html'>&lt;h2&gt;
&lt;br&gt;&lt;/h2&gt;&lt;h2&gt;Revisiones sistemáticas&lt;/h2&gt;
&lt;div&gt;
&lt;br&gt;&lt;/div&gt;&lt;div&gt;Una revisión sistemática de la literatura es un medio para identificar, evaluar e interpretar toda la investigación disponible relevante para una pregunta de investigación en particular, un área temática o un fenómeno de interés. Los estudios individuales que contribuyen a una revisión sistemática se denominan estudios primarios; Una revisión sistemática es un estudio secundario.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;h3&gt;
Razones para realizar revisiones sistemáticas&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br&gt;&lt;/div&gt;&lt;div&gt;Hay muchas razones para emprender una revisión sistemática. Las razones más comunes son:&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Resumir la evidencia existente sobre un tratamiento o tecnología, por ejemplo para resumir la evidencia empírica de los beneficios y limitaciones de un método ágil específico.&lt;/li&gt;
&lt;li&gt;Identificar las lagunas en la investigación actual para sugerir áreas para futuras investigaciones.&lt;/li&gt;
&lt;li&gt;Proporcionar un marco / antecedentes para posicionar adecuadamente nuevas actividades de investigación.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br&gt;&lt;/div&gt;&lt;div&gt;Sin embargo, también se pueden realizar revisiones sistemáticas para examinar en qué medida la evidencia empírica apoya o contradice las hipótesis teóricas, o incluso para ayudar a la generación de nuevas hipótesis.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;h3&gt;
La importancia de las revisiones sistemáticas&lt;/h3&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;
La mayoría de las investigaciones comienzan con una revisión de la literatura de algún tipo. Sin embargo, a menos que una revisión de la literatura sea exhaustiva y justa, tiene poco valor científico. Esta es la razón principal para realizar revisiones sistemáticas. Una revisión sistemática sintetiza el trabajo existente de manera justa y considerada justa. Por ejemplo, las revisiones sistemáticas deben realizarse de acuerdo con una estrategia de búsqueda predefinida. La estrategia de búsqueda debe permitir evaluar la integridad de la búsqueda. En particular, los investigadores que realizan una revisión sistemática deben hacer todo lo posible para identificar e informar la investigación que no respalda su hipótesis de investigación preferida, así como identificar e informar la investigación que la respalda.&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;&lt;/h3&gt;&lt;h3&gt;Ventajas y desventajas&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br&gt;&lt;/div&gt;&lt;div&gt;Las revisiones sistemáticas requieren mucho más esfuerzo que las revisiones tradicionales. Su principal ventaja es que proporcionan información sobre los efectos de algún fenómeno en una amplia gama de entornos y métodos empíricos. Si los estudios dan resultados consistentes, las revisiones sistemáticas proporcionan evidencia de que el fenómeno es robusto y transferible. Si los estudios dan resultados inconsistentes, se pueden estudiar las fuentes de variación.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;
&lt;div&gt;
Una segunda ventaja, en el caso de los estudios cuantitativos, es que es posible combinar datos utilizando técnicas metaanalíticas. Esto aumenta la probabilidad de detectar efectos reales que los estudios individuales más pequeños no pueden detectar. Sin embargo, el aumento de potencia también puede ser una desventaja, ya que es posible detectar pequeños sesgos y efectos reales.&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;&lt;/h3&gt;&lt;h3&gt;Características de las revisiones sistemáticas&lt;/h3&gt;&lt;p&gt;
Algunas de las características que diferencian una revisión sistemática de una revisión de literatura convencional son:&lt;br&gt;
&lt;/p&gt;&lt;p&gt;• Las revisiones sistemáticas comienzan definiendo un protocolo de revisión que especifica la pregunta de investigación que se está abordando y los métodos que se utilizarán para realizar la revisión.&lt;br&gt;
&lt;/p&gt;&lt;p&gt;• Las revisiones sistemáticas se basan en una estrategia de búsqueda definida que tiene como objetivo detectar la mayor cantidad de literatura relevante posible.&lt;br&gt;
&lt;/p&gt;&lt;p&gt;• Las revisiones sistemáticas documentan su estrategia de búsqueda para que los lectores puedan acceder a su rigor e integridad.&lt;br&gt;
&lt;/p&gt;&lt;p&gt;• Las revisiones sistemáticas requieren criterios de inclusión y exclusión explícitos para evaluar cada posible estudio primario.&lt;br&gt;
&lt;/p&gt;&lt;p&gt;• Las revisiones sistemáticas especifican la información que se obtendrá de cada estudio primario, incluidos los criterios de calidad para evaluar cada estudio primario.&lt;br&gt;
&lt;/p&gt;&lt;p&gt;• Una revisión sistemática es un requisito previo para el metanálisis cuantitativo.&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;&lt;h3&gt;El proceso de revisión&lt;/h3&gt;&lt;p&gt;Una revisión sistemática involucra varias actividades discretas. Las pautas existentes para las revisiones sistemáticas tienen diferentes sugerencias sobre el número y el orden de las actividades (ver Apéndie 1). Este documento resume las etapas de una revisión sistemática en tres fases principales: planificación de la revisión, realización de la revisión, informe de la revisión.&lt;/p&gt;
&lt;p&gt;Las etapas asociadas con la planificación de la revisión son:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Identificación de la necesidad de una revisión.&lt;/li&gt;&lt;li&gt;Desarrollo de un protocolo de revisión.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Las etapas asociadas con la realización de la revisión son:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Identificación de la investigación.&lt;/li&gt;&lt;li&gt;Selección de estudios primarios.&lt;/li&gt;&lt;li&gt;Estudio de evaluación de calidad&lt;/li&gt;&lt;li&gt;Extracción y monitoreo de datos.&lt;/li&gt;&lt;li&gt;Síntesis de datos.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;Informar la revisión &lt;/em&gt;es una fase de una sola etapa&lt;em&gt;. &lt;/em&gt;&lt;/p&gt;&lt;p&gt;Cada fase se analiza en detalle en las siguientes secciones. Otras actividades identificadas en las pautas discutidas en el Apéndice 1 están fuera del alcance de este documento. &lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Las etapas enumeradas anteriormente pueden parecer secuenciales, pero es importante reconocer que muchas de las etapas involucran iteración. En particular, muchas actividades se inician durante la etapa de desarrollo del protocolo y se refinan cuando tiene lugar la revisión adecuada. Por ejemplo:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;La selección de los estudios primarios se rige por los criterios de inclusión y exclusión. Estos criterios se especifican inicialmente cuando se define el protocolo, pero se pueden refinar después de definir los criterios de calidad&lt;br&gt;
 &lt;/li&gt;&lt;li&gt;Los formularios de extracción de datos preparados inicialmente durante la construcción del protocolo se modificarán cuando se acuerden los criterios de calidad.&lt;/li&gt;&lt;li&gt;Los métodos de síntesis de datos definidos en el protocolo pueden modificarse una vez que se hayan recopilado los datos.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;La hoja de ruta de revisiones sistemáticas preparada por el Grupo de Revisiones Sistemáticas en Berkley demuestra la naturaleza iterativa del proceso de revisión sistemática muy claramente&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h2&gt;Planificación&lt;/h2&gt;
&lt;h3&gt;&lt;br&gt;&lt;/h3&gt;&lt;h3&gt;La necesidad de una revisión sistemática&lt;/h3&gt;&lt;p&gt;&lt;br&gt;
La necesidad de una revisión sistemática surge del requisito de los investigadores de resumir toda la información existente sobre algún fenómeno de manera exhaustiva e imparcial. Esto puede ser para sacar una conclusión más general sobre algún fenómeno de lo que es posible a partir de estudios individuales, o como un preludio para futuras actividades de investigación.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Antes de emprender una revisión sistemática, los investigadores deben asegurarse de que sea necesaria una revisión sistemática. En particular, los investigadores deben identificar y revisar cualquier revisión sistemática existente del fenómeno de interés contra los criterios de evaluación apropiados. CRC [12] sugiere la siguiente lista de verificación:&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt; ¿Cuáles son los objetivos de la revisión?&lt;/li&gt;&lt;li&gt;¿Qué fuentes se buscaron para identificar estudios primarios? ¿Hubo alguna restricción?&lt;/li&gt;&lt;li&gt;¿Cuáles fueron los criterios de inclusión / exclusión y cómo se aplicaron?&lt;/li&gt;&lt;li&gt;¿Qué criterios se usaron para evaluar la calidad de los estudios primarios y cómo se aplicaron?&lt;/li&gt;&lt;li&gt;¿Cómo se extrajeron los datos de los estudios primarios&lt;/li&gt;&lt;li&gt;¿Cómo se sintetizaron los datos? &lt;/li&gt;&lt;li&gt;¿Cómo se investigaron las diferencias entre los estudios? ¿Cómo se combinaron los datos? &lt;/li&gt;&lt;li&gt;¿Fue razonable combinar los estudios? &lt;/li&gt;&lt;li&gt;¿Las conclusiones fluyen de la evidencia? &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Desde un punto de vista más general, Greenlaugh [9] sugiere las siguientes preguntas:&lt;br&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;¿Puede encontrar una pregunta clínica importante, que la revisión abordó? (Claramente, en ingeniería de software, esto debería adaptarse para referirse a una pregunta importante de ingeniería de software).&lt;/li&gt;&lt;li&gt;¿Se realizó una búsqueda exhaustiva de las bases de datos apropiadas y se exploraron otras fuentes potencialmente importantes?&lt;/li&gt;&lt;li&gt;¿Se evaluó la calidad metodológica y los ensayos se ponderaron en consecuencia?&lt;/li&gt;&lt;li&gt;¿Cuán sensibles son los resultados a la forma en que se realizó la revisión?&lt;/li&gt;&lt;li&gt;¿Se han interpretado los resultados numéricos con sentido común y con la debida consideración a los aspectos más amplios del problema?&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Desarrollo de un protocolo de revisión&lt;/h3&gt;
&lt;p&gt;Un protocolo de revisión especifica los métodos que se utilizarán para llevar a cabo una revisión sistemática específica. Es necesario un protocolo predefinido para reducir la posibilidad de sesgo del investigador. Por ejemplo, sin un protocolo, es posible que la selección de los estudios individuales o el análisis puedan estar impulsados ​​por las expectativas del investigador. En medicina, los protocolos de revisión generalmente se someten a una revisión por pares.&lt;/p&gt;
&lt;p&gt;Los componentes de un protocolo incluyen todos los elementos de la revisión más información adicional de planificación:&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Antecedentes. La justificación de la encuesta.&lt;/li&gt;&lt;li&gt;Las preguntas de investigación que la revisión pretende responder.La estrategia que se utilizará para buscar estudios primarios, incluidos los términos de búsqueda y los recursos a buscar, los recursos incluyen bases de datos, revistas específicas y actas de congresos. Un estudio de alcance inicial puede ayudar a determinar una estrategia adecuada.&lt;/li&gt;&lt;li&gt;Estudiar criterios y procedimientos de selección. Los criterios de selección de estudios determinan los criterios para incluir o excluir un estudio de la revisión sistemática. Por lo general, es útil probar los criterios de selección en un subconjunto de estudios primarios. El protocolo debe describir cómo se aplicarán los criterios, por ejemplo, cuántos evaluadores evaluarán cada estudio primario prospectivo y cómo se resolverán los desacuerdos entre los evaluadores.&lt;/li&gt;&lt;li&gt;Estudie las listas de verificación y los procedimientos de evaluación de calidad. Los investigadores deben desarrollar listas de verificación de calidad para evaluar los estudios individuales. El propósito de la evaluación de calidad guiará el desarrollo de listas de verificación.&lt;br&gt;&lt;/li&gt;&lt;li&gt;Estrategia de extracción de datos. Esto debería definir cómo se obtendría la información requerida de cada estudio primario. Si los datos requieren manipulación o se deben hacer suposiciones e inferencias, el protocolo debe especificar un proceso de validación apropiado&lt;/li&gt;&lt;li&gt;Síntesis de los datos extraídos. Esto debería definir la estrategia de síntesis. Esto debería aclarar si se pretende o no un metanálisis formal y, de ser así, qué técnicas se utilizarán&lt;/li&gt;&lt;li&gt;Calendario del proyecto. Esto debería definir el plan de revisión.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;La pregunta de investigación&lt;/h3&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h4&gt;Tipos de preguntas&lt;/h4&gt;&lt;h4&gt;&lt;br&gt;&lt;/h4&gt;&lt;p&gt;La actividad más importante durante el protocolo es formular la pregunta de investigación. Las Directrices australianas de NHMR [1] identifican seis tipos de preguntas de atención médica que pueden abordarse mediante revisiones sistemáticas:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Evaluar el efecto de la intervención.&lt;/li&gt;&lt;li&gt;Evaluar la frecuencia o tasa de una afección o enfermedad.&lt;/li&gt;&lt;li&gt;Determinación del desempeño de una prueba de diagnóstico.&lt;/li&gt;&lt;li&gt;Identificar la etiología y los factores de riesgo.&lt;/li&gt;&lt;li&gt;Identificar si una condición puede predecirse.&lt;/li&gt;&lt;li&gt;Evaluar el valor económico de una intervención o procedimiento&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;En ingeniería de software, no está claro cuál sería el equivalente de una prueba de diagnóstico, pero las otras preguntas se pueden adaptar a los problemas de ingeniería de software de la siguiente manera:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Evaluar el efecto de una tecnología de ingeniería de software.&lt;br&gt;
&lt;/li&gt;&lt;li&gt;Evaluar la frecuencia o tasa de un factor de desarrollo del proyecto, como la adopción de una tecnología, o la frecuencia o tasa de éxito o fracaso del proyecto.&lt;br&gt;
&lt;/li&gt;&lt;li&gt;Identificar los costos y los factores de riesgo asociados con una tecnología.&lt;br&gt;
&lt;/li&gt;&lt;li&gt;Identificar el impacto de las tecnologías en los modelos de confiabilidad, rendimiento y costo.&lt;/li&gt;&lt;li&gt;Análisis de costo beneficio de las tecnologías de software.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Las pautas médicas a menudo proporcionan diferentes pautas y procedimientos para diferentes tipos de preguntas. Este documento no llega a este nivel de detalle. El tema crítico en cualquier revisión sistemática es hacer la pregunta correcta. En este contexto, la pregunta correcta suele ser una que:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Sea significativo e importante tanto para los profesionales como para los investigadores. Por ejemplo, los investigadores podrían estar interesados ​​en saber si una técnica de análisis específica conduce a una estimación significativamente más precisa de los defectos restantes después de las inspecciones de diseño.&lt;br&gt;
Sin embargo, un profesional puede querer saber si la adopción de una técnica de análisis específica para predecir defectos restantes es más efectiva que la opinión de expertos para identificar documentos de diseño que requieren una nueva inspección.&lt;/li&gt;&lt;li&gt;Conduzca a cambios en la práctica actual de ingeniería de software o a una mayor confianza en el valor de la práctica actual. Por ejemplo, los investigadores&amp;nbsp; y los profesionales desearían saber en qué condiciones un proyecto puede adoptar con seguridad tecnologías ágiles y en qué condiciones no debería.&lt;/li&gt;&lt;li&gt;Identificar discrepancias entre las creencias comunes y la realidad.&lt;br&gt;
Sin embargo, hay revisiones sistemáticas que hacen preguntas que son principalmente de interés para los investigadores. Dichas revisiones hacen preguntas que identifican y/o abarcan futuras actividades de investigación. Por ejemplo, una revisión sistemática en una tesis de doctorado debe identificar la base existente para el trabajo del estudiante de investigación y dejar en claro dónde encaja la investigación propuesta en el cuerpo de conocimiento actual.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h4&gt;Estructura de preguntas&lt;/h4&gt;&lt;h4&gt;&lt;br&gt;&lt;/h4&gt;&lt;p&gt;Las pautas médicas recomiendan considerar una pregunta de tres puntos de vista:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;La población, es decir, las personas afectadas por la intervención.
 &lt;/li&gt;&lt;li&gt;Las intervenciones suelen ser una comparación entre dos o más tratamientos alternativos.&lt;/li&gt;&lt;li&gt;Los resultados, es decir, los factores clínicos y económicos que se utilizarán para comparar las intervenciones.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Además, se pueden identificar los diseños de estudio apropiados para responder las preguntas de revisión.&lt;/p&gt;&lt;h5&gt;Población&lt;/h5&gt;&lt;p&gt;En experimentos de ingeniería de software, las poblaciones pueden ser cualquiera de los siguientes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Una función específica de ingeniería de software, p. probadores, gerentes.&lt;/li&gt;&lt;li&gt;Un tipo de ingeniero de software, p. Un ingeniero novato o experimentado.&lt;/li&gt;&lt;li&gt;Un área de aplicación, p. Sistemas informáticos, sistemas de mando y control.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Una pregunta puede referirse a grupos de población muy específicos, por ejemplo, evaluadores novatos o arquitectos de software con experiencia que trabajan en sistemas de TI. En medicina, las poblaciones se definen para reducir el número de estudios primarios prospectivos. En ingeniería de software, se realizan estudios mucho menos primarios, por lo tanto, es posible que debamos evitar cualquier restricción en la población hasta que lleguemos a considerar las implicaciones prácticas de la revisión sistemática.&lt;/p&gt;&lt;h5&gt;Intervención&lt;/h5&gt;&lt;p&gt;Las intervenciones serán tecnologías de software que aborden problemas específicos, por ejemplo, tecnologías para realizar tareas específicas, como la especificación de requisitos, las pruebas del sistema o la estimación de costos de software.&lt;/p&gt;&lt;h5&gt;Resultados&lt;/h5&gt;&lt;p&gt;Los resultados deben relacionarse con factores de importancia para los profesionales, como una mayor confiabilidad, menores costos de producción y menor tiempo de comercialización. Se deben especificar todos los resultados relevantes. Por ejemplo, en algunos casos requerimos intervenciones que mejoren algún aspecto de la producción de software sin afectar a otro, por ejemplo, mayor confiabilidad sin aumento en el costo.&lt;/p&gt;&lt;p&gt;Un problema particular para los experimentos de ingeniería de software es el uso de medidas sustitutas, por ejemplo, defectos encontrados durante las pruebas del sistema como un sustituto de la calidad,&lt;/p&gt;&lt;h3&gt;Apéndice 1: Pasos para una revisión sistemática&lt;/h3&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/4298387154069512827/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/4298387154069512827' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/4298387154069512827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/4298387154069512827'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2019/10/procedimientos-para-realizar-revisiones.html' title='Procedimientos para realizar revisiones sistemáticas'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-6506161771854401069</id><published>2017-07-01T21:40:00.000-07:00</published><updated>2017-07-01T21:40:25.953-07:00</updated><title type='text'>Optimizar Eclipse Neon</title><content type='html'>Pasos para optimizar Eclipse Neon&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Instalar Java en RAM&lt;/li&gt;
&lt;li&gt;Deshabilitar AppXRay&lt;/li&gt;
&lt;li&gt;Deshabilitar SpellChecking&lt;/li&gt;
&lt;li&gt;Deshabilitar Animaciones&lt;/li&gt;
&lt;li&gt;Deshabilitar Programas que se inician&lt;/li&gt;
&lt;/ol&gt;
</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/6506161771854401069/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/6506161771854401069' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/6506161771854401069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/6506161771854401069'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2017/07/optimizar-eclipse-neon.html' title='Optimizar Eclipse Neon'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-1601692135282262589</id><published>2017-07-01T18:57:00.000-07:00</published><updated>2017-07-01T18:57:28.037-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apt-get"/><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="javac"/><category scheme="http://www.blogger.com/atom/ns#" term="ram"/><category scheme="http://www.blogger.com/atom/ns#" term="squashfs"/><category scheme="http://www.blogger.com/atom/ns#" term="tmpfs"/><title type='text'>Instalar Java en la memoria RAM</title><content type='html'>Pasos para instalar Java en la memoria RAM:&lt;br /&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Asegurar que se tiene tmpfs: se digita el comando &lt;b&gt;mount&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Se crea un directorio donde se alojará java: &lt;b&gt;sudo mkdir /media/java_ram&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Se monta el directorio: &lt;b&gt;sudo mount -t tmpfs tmpfs /media/java_ram&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Se instala squashfs: &lt;b&gt;sudo apt install squashfs&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Se crea el archivo de squash:&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;sudo mksquashfs /opt/java/jdk1.8.0_131/ /opt/java/java.sqsh&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Se monta la partición:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;sudo mount /opt/java/java.sqsh /media/java_ram/ -t squashfs -o loop&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Se instala la nueva versión en las alternativas:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;sudo update-alternatives --install /usr/bin/java java /media/java_ram/bin/java 1;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;sudo update-alternatives --install /usr/bin/javac javac /media/java_ram/bin/javac 1&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Se selecciona:&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;background-color: white;&quot;&gt;sudo update-alternatives --config java;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;sudo update-alternatives --config javac&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Para hacer los cambios permanentes, se hace:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Se edita fstab: &lt;b&gt;sudo nano /etc/fstab&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Se agrega:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;tmpfs &amp;nbsp;&amp;nbsp;/media/java_ram/ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmpfs &amp;nbsp;&amp;nbsp;defaults,mode=1777 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0
&lt;/span&gt;&lt;br /&gt;/opt/java/java.sqsh &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/media/java_ram squashfs &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ro,defaults,loop &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/1601692135282262589/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/1601692135282262589' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/1601692135282262589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/1601692135282262589'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2017/07/instalar-java-en-la-memoria-ram.html' title='Instalar Java en la memoria RAM'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-6634567829797841686</id><published>2016-03-14T13:45:00.005-07:00</published><updated>2016-03-14T14:02:36.113-07:00</updated><title type='text'>La delincuencia y el caos: Aplicación de los principios dinámicos no lineales a los problemas en la criminología</title><content type='html'>Glenn D. Walters&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;Abstract&lt;/b&gt;: &lt;i&gt;Holism, nonlinear dynamics, sensitive dependence on initial conditions, and self-&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;organization are examined in an effort to determine whether these concepts have applicability&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;to research and theory on crime, criminals, and the criminal justice system. It is concluded that&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;these concepts, all part of a growing science of chaos, show promise of clarifying conflicting&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;empirical findings and resolving important theoretical issues within the general field of crimi-&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;nology. The topics covered in this article include empiricism and the problem of prediction, the&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;reconciliation of polar opposites, reaffirming choice, and learning and socialization. A case&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;example is used to illustrate how a chaotic interpretation of individual criminal behavior and&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;change differs from the traditional positivist, classical, and rehabilitative perspectives.&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Nonlinear dynamical systems theory, better known as chaos, has been used to&lt;/div&gt;
&lt;div&gt;
explain such elusive and diverse phenomena as human brain waves (Basar, 1990),&lt;/div&gt;
&lt;div&gt;
cardiac arrhythmias (May, 1989), ecosystems (Bak &amp;amp; Chen, 1991), international&lt;/div&gt;
&lt;div&gt;
relations (Grossmann &amp;amp; Mayer-Kress, 1989), and the New York stock exchange&lt;/div&gt;
&lt;div&gt;
(Corcoran, 1991). Insomuch as chaos appears to have clarified the behavior of&lt;/div&gt;
&lt;div&gt;
inorganic systems, the next logical step would seem to be an examination of its&lt;/div&gt;
&lt;div&gt;
ability to elucidate the behavior of organic, in this case, criminal, systems. Being a&lt;/div&gt;
&lt;div&gt;
systems theory, chaos focuses on relationships between variables and seeks to&lt;/div&gt;
&lt;div&gt;
explain how these variables interact to form larger systems of influence. This article will consider whether principles borrowed from chaos theory can help clarify&lt;/div&gt;
&lt;div&gt;
several long-standing problems in criminology. First, however, crime must be&lt;/div&gt;
&lt;div&gt;
defined and key chaotic concepts described.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;DEFINING CRIMINAL BEHAVIOR&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div&gt;
There is probably no definition of crime that will satisfy all criminologists. The&lt;/div&gt;
&lt;div&gt;
present definition is therefore offered with the understanding that it suffers from&lt;/div&gt;
&lt;div&gt;
obvious limitations. Crime will be defined in this article as a quantifiable behavioral act that violates an established societal norm and is of sufficient severity&lt;/div&gt;
&lt;div&gt;
and/or frequency to elicit a corrective response from the governing structure of&lt;/div&gt;
&lt;div&gt;
that particular society. Violations of societal norms that do not come to the atten-&lt;/div&gt;
&lt;div&gt;
tion of criminal justice authorities are consequently not covered under this defini-&lt;/div&gt;
&lt;div&gt;
tion. It should be noted that this is a practical, rather than moral, definition, and&lt;/div&gt;
&lt;div&gt;
one that reflects the fluidity and relativity of human behavior. Laws change, as do&lt;/div&gt;
&lt;div&gt;
those in authority. Revolutionaries are often classified as criminals by those cur-&lt;/div&gt;
&lt;div&gt;
rently in power because they threaten the existing power structure. However, if&lt;/div&gt;
&lt;div&gt;
successful in overthrowing the existing government, the revolutionaries become&lt;/div&gt;
&lt;div&gt;
the lawmakers and the outgoing leaders become the criminals. Prior to the com-&lt;/div&gt;
&lt;div&gt;
munist takeover in Cuba, the supporters of Castro were portrayed as criminals by&lt;/div&gt;
&lt;div&gt;
the sitting Cuban government. However, once Castro assumed power, the sup-&lt;/div&gt;
&lt;div&gt;
porters of Batista suddenly became the criminals.&lt;/div&gt;
&lt;div&gt;
The practical definition of crime employed in this article, although it may be&lt;/div&gt;
&lt;div&gt;
viewed with skepticism by some, is actually in keeping with a chaotic view of the&lt;/div&gt;
&lt;div&gt;
universe. Chaos theory contends that people are in continual interaction with their&lt;/div&gt;
&lt;div&gt;
environment. As such, human behavior can only be understood with respect to&lt;/div&gt;
&lt;div&gt;
this environment. Conclusions based on an analysis of the person independent of&lt;/div&gt;
&lt;div&gt;
his or her current physical, social, or political environment are artificial and mis-&lt;/div&gt;
&lt;div&gt;
leading. Criminologists must consequently consider the behavior of the victim&lt;/div&gt;
&lt;div&gt;
and offender, the actions of the criminal justice system, and the general cultural&lt;/div&gt;
&lt;div&gt;
context of the interaction before crime can be understood. In the final analysis, no&lt;/div&gt;
&lt;div&gt;
single definition of crime is capable of capturing the complexity of the act for&lt;/div&gt;
&lt;div&gt;
which it was intended. Be this as it may, there is still a need to define crime in as&lt;/div&gt;
&lt;div&gt;
precise terms as possible. Mindful of the fact that any definition of crime will be&lt;/div&gt;
&lt;div&gt;
incomplete and less than fully satisfactory, the present article defines crime as a&lt;/div&gt;
&lt;div&gt;
behavioral act in violation of a societal rule, which is of sufficient severity and/or&lt;/div&gt;
&lt;div&gt;
frequency, that if known to the authorities would, in most cases, be followed by a&lt;/div&gt;
&lt;div&gt;
negative or corrective response from the societal body responsible for dispensing&lt;/div&gt;
&lt;div&gt;
criminal “justice.”&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;THE CHAOTIC PERSPECTIVE&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div&gt;
In proposing chaos as a paradigm for criminology, it is important to keep in&lt;/div&gt;
&lt;div&gt;
mind that chaos is actually a compilation of assorted beliefs, ideas, and principles&lt;/div&gt;
&lt;div&gt;
connected by a common interest in holism, universality, and the behavior of sys-&lt;/div&gt;
&lt;div&gt;
tems. Accordingly, it is uncertain whether chaos has achieved the level of concep-&lt;/div&gt;
&lt;div&gt;
tual elegance and integration to be called a theory. Furthermore, because this&lt;/div&gt;
&lt;div&gt;
model asserts that order frequently arises out of disorder, the term chaos is some-&lt;/div&gt;
&lt;div&gt;
what misleading. Whether we decide on the term chaos, complexity, or unpredict-&lt;/div&gt;
&lt;div&gt;
ability, or call the ideas developed by Lorenz, Feigenbaum, Mandelbröt, and oth-&lt;/div&gt;
&lt;div&gt;
ers, a theory, a model, or a set of loosely connected ideas, chaotic interpretations&lt;/div&gt;
&lt;div&gt;
of the universe have had a major impact on the physical sciences. Chaos is actually&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
the third revolution in physics to take place in the 20th century, having been pre-&lt;/div&gt;
&lt;div&gt;
ceded by relativity and quantum mechanics (Gleick, 1987), and has all but&lt;/div&gt;
&lt;div&gt;
replaced the Newtonian view of an ordered universe. Unfortunately, the social sci-&lt;/div&gt;
&lt;div&gt;
ences have lagged behind the physical sciences in appreciating the nature of cha-&lt;/div&gt;
&lt;div&gt;
otic phenomena. In fact, many of the more popular models of human behavior still&lt;/div&gt;
&lt;div&gt;
rely on reductionistic principles borrowed from Newtonian physics. The goal of&lt;/div&gt;
&lt;div&gt;
this article is to demonstrate how chaotic principles like holism, nonlinearity, sen-&lt;/div&gt;
&lt;div&gt;
sitive dependence on initial conditions, bifurcation, and self-organization can be&lt;/div&gt;
&lt;div&gt;
applied to criminal systems, and in so doing address problems that have long&lt;/div&gt;
&lt;div&gt;
plagued the field of criminology.&lt;/div&gt;
&lt;div&gt;
HOLISM&lt;/div&gt;
&lt;div&gt;
Chaos is concerned with the behavior of systems. As such, it holds that the&lt;/div&gt;
&lt;div&gt;
actions of any single part of the system can only be understood with reference to&lt;/div&gt;
&lt;div&gt;
the entire system. Owing to the fact that every variable in a system is potentially&lt;/div&gt;
&lt;div&gt;
capable of influencing every other variable, chaos provides researchers with a&lt;/div&gt;
&lt;div&gt;
mechanism for evaluating variable interaction, without having to resort to the&lt;/div&gt;
&lt;div&gt;
cumbersome task of measuring each potentially relevant variable. Proponents of&lt;/div&gt;
&lt;div&gt;
chaos would argue that the universe is both ordered and disordered, simple and&lt;/div&gt;
&lt;div&gt;
complex, predictable and unpredictable. Chaos, it would seem, is a science of&lt;/div&gt;
&lt;div&gt;
contradiction and the reconciliation of seemingly antithetical phenomena and&lt;/div&gt;
&lt;div&gt;
processes. Whereas Aristotle and his followers were drawn to the separation of&lt;/div&gt;
&lt;div&gt;
opposites, Newton to the mutual neutralization of opposites, and Freud to the con-&lt;/div&gt;
&lt;div&gt;
flict between opposites, chaos is concerned with synthesizing opposites. It is the&lt;/div&gt;
&lt;div&gt;
complementary nature and potential union of opposing forces, according to&lt;/div&gt;
&lt;div&gt;
Sabelli and Carlson-Sabelli (1989), that stimulate growth and move the organism&lt;/div&gt;
&lt;div&gt;
toward increased levels of differentiation and adaptability. This dynamic interac-&lt;/div&gt;
&lt;div&gt;
tion of variables gives rise to what advocates of this approach refer to as system&lt;/div&gt;
&lt;div&gt;
flow, a process that requires both sensitivity and flexibility (Weiss, 1973). Sensi-&lt;/div&gt;
&lt;div&gt;
tivity encompasses a system’s overall awareness of the need for change, whereas&lt;/div&gt;
&lt;div&gt;
flexibility is an estimate of the system’s ability to implement such change.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
NONLINEAR DYNAMICS&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Linear models of mathematics assume that solutions are contained in multi-&lt;/div&gt;
&lt;div&gt;
variable equations. Unfortunately, open systems may not operate along linear&lt;/div&gt;
&lt;div&gt;
lines and so are frequently unamenable to simple linear analysis. Research on&lt;/div&gt;
&lt;div&gt;
open systems—an open system being defined as one that is influenced by and/or&lt;/div&gt;
&lt;div&gt;
interacts with other systems—demands a working knowledge of nonlinear&lt;/div&gt;
&lt;div&gt;
mathematics. Owing to the fact that nonlinear equations are nonadditive, they&lt;/div&gt;
&lt;div&gt;
often yield more than one solution (Barton, 1994). However, because nonlinear&lt;/div&gt;
&lt;div&gt;
equations frequently do a better job of modeling the behavior of open systems,&lt;/div&gt;
&lt;div&gt;
theorists operating out of a chaotic framework generally prefer nonlinear models to the more simplistic linear procedures employed by most behavioral scientists.&lt;/div&gt;
&lt;div&gt;
The principle of nonlinearity suggests that there is no single cause of an event and&lt;/div&gt;
&lt;div&gt;
no simple way to conceptualize the behavior of systems.&lt;/div&gt;
&lt;div&gt;
SENSITIVE DEPENDENCE ON INITIAL CONDITIONS&lt;/div&gt;
&lt;div&gt;
It has been speculated that a butterfly flapping its wings in Brazil could poten-&lt;/div&gt;
&lt;div&gt;
tially set off a tornado in Texas a month later (Lorenz, 1979). This seemingly&lt;/div&gt;
&lt;div&gt;
absurd scenario, although admittedly improbable, illustrates the principle of sen-&lt;/div&gt;
&lt;div&gt;
sitive dependence on initial conditions. Succinctly stated, this means that seem-&lt;/div&gt;
&lt;div&gt;
ingly insignificant events can sometimes have a major impact on the long-term&lt;/div&gt;
&lt;div&gt;
behavior of systems. This is because small differences can become amplified over&lt;/div&gt;
&lt;div&gt;
time and are therefore potentially capable of radically altering the movement of&lt;/div&gt;
&lt;div&gt;
the entire system. Sensitive dependence on initial conditions is most commonly&lt;/div&gt;
&lt;div&gt;
observed in unstable systems like the stock market, the weather, and human&lt;/div&gt;
&lt;div&gt;
behavior. Also known as the “Butterfly Effect,” in honor of Lorenz’s original flap-&lt;/div&gt;
&lt;div&gt;
ping butterfly wings analogy, sensitive dependence on initial conditions makes it&lt;/div&gt;
&lt;div&gt;
exceedingly difficult to predict the long-term behavior of open, relatively unstable&lt;/div&gt;
&lt;div&gt;
systems.&lt;/div&gt;
&lt;div&gt;
BIFURCATION&lt;/div&gt;
&lt;div&gt;
System growth depends on a process known as bifurcation. Around the middle&lt;/div&gt;
&lt;div&gt;
of the last century, P. F. Verhulst discovered that a population grows in linear fash-&lt;/div&gt;
&lt;div&gt;
ion until it reaches a certain critical level. The “Verhulst Process,” as it is now&lt;/div&gt;
&lt;div&gt;
called, occurs when a change in an important parameter drives the system to even&lt;/div&gt;
&lt;div&gt;
greater rates of growth despite the presence of certain limiting external conditions&lt;/div&gt;
&lt;div&gt;
(Peitgen &amp;amp; Richter, 1986). As a consequence of this process, population growth&lt;/div&gt;
&lt;div&gt;
tends to fluctuate between higher and lower values on successive years, a process&lt;/div&gt;
&lt;div&gt;
known as bifurcation or period doubling. Bifurcation involves the doubling of&lt;/div&gt;
&lt;div&gt;
points and contributes to the development and transformation of a system’s out-&lt;/div&gt;
&lt;div&gt;
come field (Feigenbaum, 1978).&lt;/div&gt;
&lt;div&gt;
SELF-ORGANIZATION&lt;/div&gt;
&lt;div&gt;
Self-organization is the capacity of a dynamic system to generate new forms. A&lt;/div&gt;
&lt;div&gt;
system will become unstable when infused with energy sufficient to bring about&lt;/div&gt;
&lt;div&gt;
changes in time, temperature, or space. However, this instability often gives rise to&lt;/div&gt;
&lt;div&gt;
system growth owing to the fact that systems possess the ability to self-organize&lt;/div&gt;
&lt;div&gt;
(Prigogine &amp;amp; Stengers, 1984). Self-organization requires communication&lt;/div&gt;
&lt;div&gt;
between individual cells for the purpose of establishing a common solution to a&lt;/div&gt;
&lt;div&gt;
problem, and the creation of a new and more complex pattern of organization.&lt;/div&gt;
&lt;div&gt;
Systems that vacillate between different values are in a better position to process&lt;/div&gt;
&lt;div&gt;
information, shift into an alternative mode of activity and adapt, than systems that&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
remain fixed on a specific value, action, or idea (Packard, 1988). That unstable&lt;/div&gt;
&lt;div&gt;
systems enjoy greater opportunities for adaptation than stable ones is underscored&lt;/div&gt;
&lt;div&gt;
by the fact that epileptics exhibit less flexibility and variety in their EEG patterns&lt;/div&gt;
&lt;div&gt;
than nonepileptics, and heart patients manifest less variation in EKG than healthy&lt;/div&gt;
&lt;div&gt;
adults (Freedman, 1995).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;THE CHAOTIC PARAMETERS&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;OF CRIMINOLOGIC PHENOMENA&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
With a rapidly expanding base of information, it would stand to reason that&lt;/div&gt;
&lt;div&gt;
criminology should be in a position to answer many of the questions that have&lt;/div&gt;
&lt;div&gt;
plagued the field since its inception. However, with only a few exceptions (e.g.,&lt;/div&gt;
&lt;div&gt;
Gottfredson &amp;amp; Hirschi, 1990), the theories that have been generated by this prolif-&lt;/div&gt;
&lt;div&gt;
eration of criminologic data have been of the mini-model variety in which circum-&lt;/div&gt;
&lt;div&gt;
scribed features or aspects of crime or criminal justice are scrutinized. Although&lt;/div&gt;
&lt;div&gt;
these mini-models have furnished researchers with new insights and have encour-&lt;/div&gt;
&lt;div&gt;
aged further data collection, they have also added to the growing sense of theoreti-&lt;/div&gt;
&lt;div&gt;
cal fragmentation that appears to characterize the field of criminology. Williams&lt;/div&gt;
&lt;div&gt;
(1984), in fact, takes the field to task for what he sees as its lack of theoretical&lt;/div&gt;
&lt;div&gt;
imagination. Arguing that criminology has sacrificed innovation and intuition for&lt;/div&gt;
&lt;div&gt;
methodological rigor and statistical precision, Williams calls for renewed interest&lt;/div&gt;
&lt;div&gt;
in creative theorizing as a means of understanding crime, criminals, and the crimi-&lt;/div&gt;
&lt;div&gt;
nal justice system. It is proposed here that chaos may be capable of supplying&lt;/div&gt;
&lt;div&gt;
criminology with an organizing framework from whence disparate theoretical tra-&lt;/div&gt;
&lt;div&gt;
ditions and empirical findings might be integrated.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
EMPIRICISM AND THE PROBLEM OF PREDICTION&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In an effort to determine the “causes of crime,” positivists have taken the&lt;/div&gt;
&lt;div&gt;
empirical road to knowledge acquisition. Scholars adhering to a positivist&lt;/div&gt;
&lt;div&gt;
philosophy of criminological investigation assume that absolute or flawless pre-&lt;/div&gt;
&lt;div&gt;
diction is possible with the proper combination of variables, save the variance&lt;/div&gt;
&lt;div&gt;
attributable to measurement error. Identifying the variables that predict who will&lt;/div&gt;
&lt;div&gt;
become delinquent is therefore one of the primary goals of empirical criminology.&lt;/div&gt;
&lt;div&gt;
Exploring such issues as parental deviance, social class, genetics, intelligence,&lt;/div&gt;
&lt;div&gt;
and peers, positivists have been able to identify, with modest success, those&lt;/div&gt;
&lt;div&gt;
individuals who eventually become delinquent. However, as Rutter and Giller&lt;/div&gt;
&lt;div&gt;
(1984) point out, a substantial number of juveniles classified by investigators as&lt;/div&gt;
&lt;div&gt;
“high risk” on the basis of their background and behavior never become delin-&lt;/div&gt;
&lt;div&gt;
quent, and a fair number of youth classified as “low risk” become seriously delin-&lt;/div&gt;
&lt;div&gt;
quent despite predictions to the contrary. Thus, although certain conditions and&lt;/div&gt;
&lt;div&gt;
characteristics may distinguish between delinquents who do and do not go on to&lt;/div&gt;
&lt;div&gt;
become adult offenders, the percent of variance these predictors account for is&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/6634567829797841686/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/6634567829797841686' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/6634567829797841686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/6634567829797841686'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2016/03/crime-and-chaos-applying-nonlinear.html' title='La delincuencia y el caos: Aplicación de los principios dinámicos no lineales a los problemas en la criminología'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-9092900601846290000</id><published>2015-10-13T06:14:00.000-07:00</published><updated>2015-10-13T06:48:34.993-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="glassfish"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="javax.net.ssl.SSLHandshakeException"/><title type='text'>Solución de javax.net.ssl.SSLHandshakeException a lo dummy para glassfish</title><content type='html'>Hola! Hace un rato que no escribo y hoy os vengo a contaros la historia de cuando tuve que enfrentarme al problema de que el servidor glassfish (o java en general), necesita consumir algún servicio de una página web segura. La bitácora (o log) que nos entrega glassfish nos muestra el error&amp;nbsp;&lt;span style=&quot;background-color: white; font-family: Monaco, &#39;Lucida Console&#39;, monospace; font-size: 13px; line-height: 18.2px; white-space: nowrap;&quot;&gt;javax.net.ssl.SSLHandshakeException&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
el cual, como su nombre loo indica, significa que no se ha podido hacer el apretón de manos entre los servidores. Para que esto suceda, ellos deben entender que cada uno es confiable. Es decir, no le voy a dar la mano a cualquiera, salvo que yo confíe en él. Claro, si él me muestra su identificación y ésta es válida en todo el territorio nacional (como la cédula) o internacional (como el pasaporte), es más fácil confiar en él. Ahora, que no hace falta el amigo retardado que piensa que mostrando el carnet del colegio se puede identificar en cualquier parte. Yo confío en él, pero porque se que tiene sus problemas, pero, ya le expliqué que eso no está bien, que lo mejor es que él saque su identificación en una entidad certificadora. Claro, eso implica tener que pagar, y que la entidad lo vea (salvo que seas hijo del registrador).&lt;br /&gt;
&lt;br /&gt;
Ahora bien, todos confíamos en la registraduría o en la central que expide los pasaportes, pero si no, explícitamente tenemos que decirle a los demás que confíe (por favor), en nosotros. Y para ésto hacemos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
Primero, identificar dónde está ese archivo, carpeta o en nuestros recuerdos, que nos muestra quiénes son confiables. En glassfish, normalmente está en el archivo domains.xml (&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;glassfish/domains/domain1/config/domain.xml&lt;/span&gt;) y buscamos la línea que dice:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Generalmente está configurada con el archivo cacerts.jks&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Entonces, nos bajamos ese archivo, y luego lo abrimos con un programa similar a key store explorer&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;[1]&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw1Jmr9oSpjb0_Pkz2eTcR5jFhsepdQvWwwpvvNeu5KbhFOEsVJGx44nPi194lN1YUG_XnXR9h9IEhATTioS0B_STLh5E1JpdcpttEbVvqShfKlcaRptmLEOa5wpShMWf8H1Mfj8kF1D0B/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;173&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw1Jmr9oSpjb0_Pkz2eTcR5jFhsepdQvWwwpvvNeu5KbhFOEsVJGx44nPi194lN1YUG_XnXR9h9IEhATTioS0B_STLh5E1JpdcpttEbVvqShfKlcaRptmLEOa5wpShMWf8H1Mfj8kF1D0B/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcGOAIGi0RuNCt3bbQTbfFZTuDOR0tqwR8aSkZBNi_xQwLoYtl0ir6g4xSiZef3RB_TpLeBOzPD9AsN7PB9Q3b-DaqOELd4S3aVHnHUFKg6-FdTmu3NbKpiQUm0P5U_QBqgExetfn3c1-h/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;173&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcGOAIGi0RuNCt3bbQTbfFZTuDOR0tqwR8aSkZBNi_xQwLoYtl0ir6g4xSiZef3RB_TpLeBOzPD9AsN7PB9Q3b-DaqOELd4S3aVHnHUFKg6-FdTmu3NbKpiQUm0P5U_QBqgExetfn3c1-h/s320/2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
Entonces, la idea es agregar el certificado a este depósito de certificados de confianza. Conseguimos el certificado, así, en chrome, hacemos click en:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLnpt12aceYeh8CBy0BDA87QRekxd4qbKc_c3KRJTDVsgB_toDmTi5nn23R9jWnpomn8SR3VfFj3c-_FHOYlrQE7-AwUVoUc8GevGrqpqjN4zM-ZivQo6F5nSvCzPZcI4RS_LEr0fn25Ap/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLnpt12aceYeh8CBy0BDA87QRekxd4qbKc_c3KRJTDVsgB_toDmTi5nn23R9jWnpomn8SR3VfFj3c-_FHOYlrQE7-AwUVoUc8GevGrqpqjN4zM-ZivQo6F5nSvCzPZcI4RS_LEr0fn25Ap/s1600/3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf2-eYH_Amr7oeBxZFN6SYzSQ-JLJVFenQe4c7O7h5g7HCCcvVIL7IQ8tAvFKGZFcDfqXWDua-hNum2g8uKJNw6Na2FSSOjJMiSmEUZITXEMcDzYIPTDxyPI9o8B1j08Rkb0-mZSyktFIT/s1600/envio_toda_la_info2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;177&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf2-eYH_Amr7oeBxZFN6SYzSQ-JLJVFenQe4c7O7h5g7HCCcvVIL7IQ8tAvFKGZFcDfqXWDua-hNum2g8uKJNw6Na2FSSOjJMiSmEUZITXEMcDzYIPTDxyPI9o8B1j08Rkb0-mZSyktFIT/s320/envio_toda_la_info2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghM0lItycdByuscoyB-7rPWVEeOjS2F6WDuDPCzE3b4GBbuYjtVCSYfy5YKS1ihIzGihvEVZPfKACakdqgcYyRKgEuLxG0M81E397IW5mZQPIx0BpUuqoDfRN42aYYtbQ-Dz5BrsH1Mr_g/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghM0lItycdByuscoyB-7rPWVEeOjS2F6WDuDPCzE3b4GBbuYjtVCSYfy5YKS1ihIzGihvEVZPfKACakdqgcYyRKgEuLxG0M81E397IW5mZQPIx0BpUuqoDfRN42aYYtbQ-Dz5BrsH1Mr_g/s1600/4.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnydIv64kSw-gdQlw0vj6Je9vmvNRtPJnz6i1NKBKa3npL77kQzuhD2zpmAMWNueoH6v5Av7UemSA_FTsfo74ee4yP_b-iFuHMMafrjMd8nwj36mNN032uN6LqC-xMJw5aNhziNZNNA2Uq/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnydIv64kSw-gdQlw0vj6Je9vmvNRtPJnz6i1NKBKa3npL77kQzuhD2zpmAMWNueoH6v5Av7UemSA_FTsfo74ee4yP_b-iFuHMMafrjMd8nwj36mNN032uN6LqC-xMJw5aNhziNZNNA2Uq/s320/5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Lo exportamos, luego vamos al programa antes mencionado, lo importamos con Tools-&amp;gt;Import trusted certificate, Le damos Aceptar, OK, Aceptar. Luego guardamos el archivo cacerts, lo subimos y reiniciamos glassfish. Dudas? Comentarios? Felicitaciones? Escríbanme! :-)&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;background-color: white; font-family: monospace;&quot;&gt;[1]&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;http://keystore-explorer.sourceforge.net/downloads.php&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/9092900601846290000/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/9092900601846290000' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/9092900601846290000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/9092900601846290000'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2015/10/solucion-de-javaxnetsslsslhandshakeexce.html' title='Solución de javax.net.ssl.SSLHandshakeException a lo dummy para glassfish'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw1Jmr9oSpjb0_Pkz2eTcR5jFhsepdQvWwwpvvNeu5KbhFOEsVJGx44nPi194lN1YUG_XnXR9h9IEhATTioS0B_STLh5E1JpdcpttEbVvqShfKlcaRptmLEOa5wpShMWf8H1Mfj8kF1D0B/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-7289539105739271183</id><published>2014-11-11T10:11:00.001-08:00</published><updated>2014-11-11T10:11:51.009-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cake"/><category scheme="http://www.blogger.com/atom/ns#" term="cakephp"/><category scheme="http://www.blogger.com/atom/ns#" term="enum"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>Imprimir datos de tipo enum en una lista desplegable en cakephp</title><content type='html'>Supongamos que se debe tener &#39;datos conocidos&#39; de una tabla, algo así como en una tabla llamada &#39;sexo&#39; y los campos son &#39;Masculino&#39; y &#39;Femenino&#39;, pero todavía no tenemos la tabla. Se puede implementar &#39;mientras tanto&#39; un campo de tipo enum[1] con esos datos.&lt;br /&gt;
&lt;br /&gt;
Ahora, supongamos que tenemos dos o mas tablas y queremos traer datos de ellas para luego mostrarlos en una lista desplegable, entonces podemos hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
En el controlador se define una función llamada addEnums que toma como parámetros el nombre del campo de la tabla y el modelo que se va a usar:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;public function addEnums($name, $modelo){&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;$this-&amp;gt;loadModel($modelo);&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;$type = $this-&amp;gt;$modelo-&amp;gt;getColumnType($name);&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;preg_match_all(&quot;/&#39;(.*?)&#39;/&quot;, $type, $enums);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;foreach ($enums[1] as $n){&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;$data[$n]=$n;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;$this-&amp;gt;set($name, $data);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Luego, en el mismo controlador, se llama de la siguiente forma (tengo dos tablas, Users y Players. Users tiene un campo que se llama &#39;sex&#39; y Player un campo que se llama &#39;position&#39;):&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;$this-&amp;gt;addEnums(&#39;sex&#39;,&#39;User&#39;);&lt;br /&gt;$this-&amp;gt;addEnums(&#39;position&#39;, &#39;Player&#39;);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Y luego, en la vista, se muestran de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;echo $this-&amp;gt;Form-&amp;gt;input(&#39;sex&#39;, array(&#39;options&#39;=&amp;gt;$sex));&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;echo $this-&amp;gt;Form-&amp;gt;input(&#39;position&#39;, array(&#39;options&#39;=&amp;gt;$position));&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Y listo!&lt;br /&gt;
&lt;br /&gt;
[1]&amp;nbsp;http://dev.mysql.com/doc/refman/5.0/en/enum.html</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/7289539105739271183/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/7289539105739271183' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/7289539105739271183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/7289539105739271183'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2014/11/imprimir-datos-de-tipo-enum-en-una.html' title='Imprimir datos de tipo enum en una lista desplegable en cakephp'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-2122373433338329652</id><published>2014-10-31T09:27:00.000-07:00</published><updated>2014-10-31T09:27:17.714-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="add"/><category scheme="http://www.blogger.com/atom/ns#" term="agregar"/><category scheme="http://www.blogger.com/atom/ns#" term="bluefish"/><category scheme="http://www.blogger.com/atom/ns#" term="cake"/><category scheme="http://www.blogger.com/atom/ns#" term="cakephp"/><category scheme="http://www.blogger.com/atom/ns#" term="filetype"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="tipo de archivo"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Agregar tipos de archivo a Bluefish</title><content type='html'>Uno de los editores por defecto que tiene ubuntu es bluefish. Cuenta con resaltado de sintaxis y reconoce muchos lenguajes, pero no los tiene todos, por ejemplo la extensión ctp, que es la que usa CakePHP[1] para mostrar las vistas. Entonces, éste tipo de archivo se ve en blanco y negro. Horrible.&lt;br /&gt;&lt;br /&gt;Otra de las cosas que tiene bluefish es que no se puede añadir otro tipo de archivo desde la interfaz gráfica, por lo que aquí está una solución a ese problema.&lt;br /&gt;
&lt;br /&gt;
Lo hacemos con ctp, que es igual a php, pero para cake.&lt;br /&gt;&lt;br /&gt;Se copia el archivo donde se especifica cómo se comportará el editor para un lenguaje (php) con el nombre que queremos que aparezca (ctp)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;sudo cp /usr/share/bluefish/bflang/php.bflang2 /usr/share/bluefish/bflang/ctp.bflang2&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Luego se edita ese archivo&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;sudo gedit /usr/share/bluefish/bflang/ctp.bflang2&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;Y reemplazamos &lt;b&gt;con coincidencias de capitalización &lt;/b&gt;las palabras &lt;b&gt;PHP&lt;/b&gt; por &lt;b&gt;CTP&lt;/b&gt; y &lt;b&gt;php&lt;/b&gt; por &lt;b&gt;ctp&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Y listo!&lt;br /&gt;
&lt;br /&gt;
Al iniciar bluefish coloreará nuestro ctp&lt;br /&gt;
&lt;br /&gt;
[1]http://cakephp.org/</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/2122373433338329652/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/2122373433338329652' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/2122373433338329652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/2122373433338329652'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2014/10/agregar-tipos-de-archivo-bluefish.html' title='Agregar tipos de archivo a Bluefish'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-196747185229576880</id><published>2014-10-29T13:35:00.002-07:00</published><updated>2014-10-29T13:36:37.282-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="amazon"/><category scheme="http://www.blogger.com/atom/ns#" term="apache"/><category scheme="http://www.blogger.com/atom/ns#" term="ec2"/><category scheme="http://www.blogger.com/atom/ns#" term="filezilla"/><category scheme="http://www.blogger.com/atom/ns#" term="ftp"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="sftp"/><category scheme="http://www.blogger.com/atom/ns#" term="ssh"/><category scheme="http://www.blogger.com/atom/ns#" term="sshd"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>SFTP con otra instancia de SSH</title><content type='html'>Buen día&lt;br /&gt;
&lt;br /&gt;
Supongamos que se contrata un servicio de VPS al que se puede acceder solo por ssh y con una llave como en amazon ec2, y que este VPS va a ser un servidor web. Los usuarios desarrolladores del VPS necesitan acceder a este servidor, pero el administrador no puede dar la llave por seguridad. ¿Solución? Un servidor ftp, por ejemplo, pero ftp es inseguro [1], pero podemos asegurar mediante ssl o pasarlo por un túnel ssh. Supongamos que no queremos todavía ssl, y accedemos a la segunda opción. ¿Cómo hacerlo en la instancia de amazon?&lt;br /&gt;
&lt;br /&gt;
Bueno, he aquí una solución:&lt;br /&gt;
&lt;br /&gt;
Seleccionamos un puerto que no esté siendo usado y lo abrimos en el firewall de amazon añadiéndolo a las reglas de seguridad del grupo. Para el ejemplo será el &lt;b&gt;2221&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Se crea un usuario para editar los archivos web. En amazon el usuario por defecto es www-data. Así que podemos cambiarlo. Para nuestro ejemplo, creamos el usuario con nombre &lt;b&gt;http. &lt;/b&gt;Hacemos que apache arranque con este usuario.&lt;br /&gt;
&lt;br /&gt;
Detenemos apache&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;sudo service apache2 stop&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Editamos&amp;nbsp;/etc/apache2/envvars&lt;br /&gt;
&lt;br /&gt;
Cambiamos www-data por http&lt;br /&gt;
&lt;br /&gt;
Editamos /etc/passwd&lt;br /&gt;
&lt;br /&gt;
Cambiamos /home/http por /var/www&lt;br /&gt;
&lt;br /&gt;
Cambiamos los permisos del directorio /var/www PERO no del directorio en si. Este debe ser de root&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;chown http:http -R /var/www&lt;br /&gt;chown root:root /var/www&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Reiniciamos apache&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;sudo service apache2 start&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Copiamos&amp;nbsp;/etc/ssh/sshd_config con otro nombre&amp;nbsp;/etc/ssh/sshd_ftp_config y editamos ese archivo&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;sudo cp&amp;nbsp;/etc/ssh/sshd_config&amp;nbsp;/etc/ssh/sshd_ftp_config&lt;br /&gt;&lt;br /&gt;sudo nano&amp;nbsp;/etc/ssh/sshd_ftp_config&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Cambiamos &lt;b&gt;22&lt;/b&gt; por &lt;b&gt;2221&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Cambiamos &lt;b&gt;ChallengeResponseAuthentication no&lt;/b&gt; por &lt;b&gt;ChallengeResponseAuthentication yes&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Cambiamos&lt;b&gt;&amp;nbsp;PasswordAuthentication no&lt;/b&gt; por &lt;b&gt;PasswordAuthentication yes&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
Cambiamos&amp;nbsp;&lt;b&gt;Subsystem sftp /usr/lib/openssh/sftp-server&lt;/b&gt; por&amp;nbsp;&lt;b&gt;Subsystem sftp internal-sftp&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Y agregamos al final&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Match User http&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; ChrootDirectory /var/www&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; ForceCommand internal-sftp&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; AllowTCPForwarding no&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; X11Forwarding no&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Y arrancamos el nuevo servicio&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;sudo /usr/sbin/sshd -f /etc/ssh/sshd_ftp_config&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Y listo, Ya podemos conectarnos por filezilla por sftp&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;sftp://[ip]&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
[1]http://juan0022.blogspot.com/2012/09/ftp-es-un-protocolo-inseguro.html</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/196747185229576880/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/196747185229576880' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/196747185229576880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/196747185229576880'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2014/10/sftp-con-otra-instancia-de-ssh.html' title='SFTP con otra instancia de SSH'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-1785851562432883081</id><published>2014-10-28T12:46:00.000-07:00</published><updated>2014-10-28T12:46:58.031-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apple"/><category scheme="http://www.blogger.com/atom/ns#" term="code"/><category scheme="http://www.blogger.com/atom/ns#" term="fuente"/><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="source"/><title type='text'>Descargar fuentes de Mac y iOS</title><content type='html'>Esto es para que no se me olvide y, para futuras referencias. Para descargar las fuentes de Mac e iOS, proporcionadas oficialmente por Apple, ir a la página:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://opensource.apple.com/tarballs/&quot; style=&quot;background: rgb(255, 255, 255); border: 0px; color: #4a6b82; cursor: pointer; font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif; font-size: 14px; line-height: 17.8048000335693px; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;http://opensource.apple.com/tarballs/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/1785851562432883081/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/1785851562432883081' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/1785851562432883081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/1785851562432883081'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2014/10/descargar-fuentes-de-mac-y-ios.html' title='Descargar fuentes de Mac y iOS'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-2548676478976339026</id><published>2012-09-19T23:57:00.002-07:00</published><updated>2012-09-19T23:57:39.008-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AES"/><category scheme="http://www.blogger.com/atom/ns#" term="desencriptar"/><category scheme="http://www.blogger.com/atom/ns#" term="Encriptar"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><title type='text'>Encriptar y desencriptar entre java y php con AES</title><content type='html'>Para pode recuperar una contraseña haciendo cifrado simétrico entre java y php, encontré esta solución, pero se me perdió la fuente, tan pronto la sepa la pongo....&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Java encriptación:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
&amp;nbsp;* To change this template, choose Tools | Templates&lt;br /&gt;
&amp;nbsp;* and open the template in the editor.&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
&lt;br /&gt;
package cifrado;&lt;br /&gt;
&lt;br /&gt;
import javax.crypto.Cipher;&lt;br /&gt;
import javax.crypto.spec.IvParameterSpec;&lt;br /&gt;
import javax.crypto.spec.SecretKeySpec;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* @author thaednevol&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class Crypto {&lt;br /&gt;
//iv length should be 16 bytes&lt;br /&gt;
private String iv = &quot;fedcba9876543210&quot;;&lt;br /&gt;
private String key = null;&lt;br /&gt;
private Cipher cipher = null;&lt;br /&gt;
private SecretKeySpec keySpec = null;&lt;br /&gt;
private IvParameterSpec ivSpec = null;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* Constructor&lt;br /&gt;
*&lt;br /&gt;
* @throws Exception&lt;br /&gt;
*/&lt;br /&gt;
public Crypto(String key) throws Exception {&lt;br /&gt;
this.key = key;&lt;br /&gt;
&lt;br /&gt;
// Make sure the key length should be 16&lt;br /&gt;
int len = this.key.length();&lt;br /&gt;
if(len &amp;lt; 16) {&lt;br /&gt;
int addSpaces = 16 - len;&lt;br /&gt;
for (int i = 0; i &amp;lt; addSpaces; i++) {&lt;br /&gt;
this.key = this.key + &quot; &quot;;&lt;br /&gt;
}&lt;br /&gt;
} else {&lt;br /&gt;
this.key = this.key.substring(0, 16);&lt;br /&gt;
}&lt;br /&gt;
this.keySpec = new SecretKeySpec(this.key.getBytes(), &quot;AES&quot;);&lt;br /&gt;
this.ivSpec = new IvParameterSpec(iv.getBytes());&lt;br /&gt;
this.cipher = Cipher.getInstance(&quot;AES/CBC/NoPadding&quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* Bytes to Hexa conversion&lt;br /&gt;
*&lt;br /&gt;
* @param data&lt;br /&gt;
* @return&lt;br /&gt;
*/&lt;br /&gt;
public String bytesToHex(byte[] data) {&lt;br /&gt;
if (data == null) {&lt;br /&gt;
return null;&lt;br /&gt;
} else {&lt;br /&gt;
int len = data.length;&lt;br /&gt;
String str = &quot;&quot;;&lt;br /&gt;
for (int i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
if ((data[i] &amp;amp; 0xFF) &amp;lt; 16)&lt;br /&gt;
str = str + &quot;0&quot; + java.lang.Integer.toHexString(data[i] &amp;amp; 0xFF);&lt;br /&gt;
else&lt;br /&gt;
str = str + java.lang.Integer.toHexString(data[i] &amp;amp; 0xFF);&lt;br /&gt;
}&lt;br /&gt;
return str;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** Encrpt the goven string&lt;br /&gt;
*&lt;br /&gt;
* @param plainData&lt;br /&gt;
* @throws Exception&lt;br /&gt;
*/&lt;br /&gt;
public String encrypt(String plainData) throws Exception {&lt;br /&gt;
&lt;br /&gt;
// Make sure the plainData length should be multiple with 16&lt;br /&gt;
int len = plainData.length();&lt;br /&gt;
int q = len / 16;&lt;br /&gt;
int addSpaces = ((q + 1) * 16) - len;&lt;br /&gt;
for (int i = 0; i &amp;lt; addSpaces; i++) {&lt;br /&gt;
plainData = plainData + &quot; &quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
this.cipher.init(Cipher.ENCRYPT_MODE, this.keySpec, this.ivSpec);&lt;br /&gt;
byte[] encrypted = cipher.doFinal(plainData.getBytes());&lt;br /&gt;
&lt;br /&gt;
return bytesToHex(encrypted);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public static void main(String[] args) throws Exception {&lt;br /&gt;
Crypto c = new Crypto(&quot;D4:6E:AC:3F:F0:BE&quot;);&lt;br /&gt;
String encrStr = c.encrypt(&quot;Hello World&quot;);&lt;br /&gt;
System.out.println(&quot;Encrypted Str :&quot; + encrStr);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Java desencriptación&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
/*&lt;br /&gt;
&amp;nbsp;* To change this template, choose Tools | Templates&lt;br /&gt;
&amp;nbsp;* and open the template in the editor.&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
&lt;br /&gt;
package cifrado;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* @author thaednevol&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
import javax.crypto.Cipher;&lt;br /&gt;
import javax.crypto.spec.IvParameterSpec;&lt;br /&gt;
import javax.crypto.spec.SecretKeySpec;&lt;br /&gt;
&lt;br /&gt;
public class Decrypto {&lt;br /&gt;
//iv length should be 16 bytes&lt;br /&gt;
private String iv = &quot;fedcba9876543210&quot;;&lt;br /&gt;
private String key = null;&lt;br /&gt;
private Cipher cipher = null;&lt;br /&gt;
private SecretKeySpec keySpec = null;&lt;br /&gt;
private IvParameterSpec ivSpec = null;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* Constructor&lt;br /&gt;
*&lt;br /&gt;
* @throws Exception&lt;br /&gt;
*/&lt;br /&gt;
public Decrypto(String key) throws Exception {&lt;br /&gt;
this.key = key;&lt;br /&gt;
&lt;br /&gt;
// Make sure the key length should be 16&lt;br /&gt;
int len = this.key.length();&lt;br /&gt;
if(len &amp;lt; 16) {&lt;br /&gt;
int addSpaces = 16 - len;&lt;br /&gt;
for (int i = 0; i &amp;lt; addSpaces; i++) {&lt;br /&gt;
this.key = this.key + &quot; &quot;;&lt;br /&gt;
}&lt;br /&gt;
} else {&lt;br /&gt;
this.key = this.key.substring(0, 16);&lt;br /&gt;
}&lt;br /&gt;
this.keySpec = new SecretKeySpec(this.key.getBytes(), &quot;AES&quot;);&lt;br /&gt;
this.ivSpec = new IvParameterSpec(iv.getBytes());&lt;br /&gt;
this.cipher = Cipher.getInstance(&quot;AES/CBC/NoPadding&quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* Hexa to Bytes conversion&lt;br /&gt;
*&lt;br /&gt;
* @param str&lt;br /&gt;
* @return&lt;br /&gt;
*/&lt;br /&gt;
public byte[] hexToBytes(String str) {&lt;br /&gt;
if (str == null) {&lt;br /&gt;
return null;&lt;br /&gt;
} else if (str.length() &amp;lt; 2) {&lt;br /&gt;
return null;&lt;br /&gt;
} else {&lt;br /&gt;
int len = str.length() / 2;&lt;br /&gt;
byte[] buffer = new byte[len];&lt;br /&gt;
for (int i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
buffer[i] = (byte) Integer.parseInt(str.substring(i * 2, i * 2 + 2), 16);&lt;br /&gt;
}&lt;br /&gt;
return buffer;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** Decrypt the given excrypted string&lt;br /&gt;
*&lt;br /&gt;
* @param encrStr&lt;br /&gt;
* @throws Exception&lt;br /&gt;
*/&lt;br /&gt;
public String decrypt(String encrData) throws Exception {&lt;br /&gt;
this.cipher.init(Cipher.DECRYPT_MODE, this.keySpec, this.ivSpec);&lt;br /&gt;
byte[] outText = this.cipher.doFinal(hexToBytes(encrData));&lt;br /&gt;
&lt;br /&gt;
String decrData = new String(outText).trim();&lt;br /&gt;
return decrData;&lt;br /&gt;
}&lt;br /&gt;
public static void main(String[] args) throws Exception {&lt;br /&gt;
Decrypto c = new Decrypto(&quot;D4:6E:AC:3F:F0:BE&quot;);&lt;br /&gt;
String decrStr = c.decrypt(&quot;1f50a943601d8e29206c716f82e58b8d&quot;);&lt;br /&gt;
System.out.println(&quot;Decrypted Str :&quot; + decrStr);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Encripción en PHP&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$cipher = &quot;rijndael-128&quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$mode = &quot;cbc&quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$secret_key = &quot;D4:6E:AC:3F:F0:BE&quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;//iv length should be 16 bytes&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$iv = &quot;fedcba9876543210&quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;// Make sure the key length should be 16 bytes&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$key_len = strlen($secret_key);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;if($key_len &amp;lt; 16 ){&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$addS = 16 - $key_len;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;for($i =0 ;$i &amp;lt; $addS; $i++){&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$secret_key.=&quot; &quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;}else{&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$secret_key = substr($secret_key, 0, 16);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$td = mcrypt_module_open($cipher, &quot;&quot;, $mode, $iv);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;mcrypt_generic_init($td, $secret_key, $iv);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$cyper_text = mcrypt_generic($td, &quot;Hello World&quot;);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;mcrypt_generic_deinit($td);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;mcrypt_module_close($td);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;echo bin2hex($cyper_text);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;?&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;b&gt;Desencriptar en PHP&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$cipher = &quot;rijndael-128&quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$mode = &quot;cbc&quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$secret_key = &quot;D4:6E:AC:3F:F0:BE&quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;//iv length should be 16 bytes&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$iv = &quot;fedcba9876543210&quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;// Make sure the key length should be 16 bytes&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$key_len = strlen($secret_key);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;if($key_len &amp;lt; 16 ){&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$addS = 16 - $key_len;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;for($i =0 ;$i &amp;lt; $addS; $i++){&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$secret_key.=&quot; &quot;;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;}else{&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$secret_key = substr($secret_key, 0, 16);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;}&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$td = mcrypt_module_open($cipher, &quot;&quot;, $mode, $iv);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;mcrypt_generic_init($td, $secret_key, $iv);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;$decrypted_text = mdecrypt_generic($td, hex2bin(&quot;444e6969a269829a3e59a86300614fc5&quot;));&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;mcrypt_generic_deinit($td);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;mcrypt_module_close($td);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;echo trim($decrypted_text);&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;br style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot; /&gt;&lt;span style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot;&gt;function hex2bin($data){&lt;/span&gt;&lt;br style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot; /&gt;&lt;span style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot;&gt;$bin = &quot;&quot;;&lt;/span&gt;&lt;br style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot; /&gt;&lt;span style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot;&gt;$i = 0;&lt;/span&gt;&lt;br style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot; /&gt;&lt;span style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot;&gt;do {&lt;/span&gt;&lt;br style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot; /&gt;&lt;span style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot;&gt;$bin .= chr(hexdec($data{$i}.$data{($i + 1)}));&lt;/span&gt;&lt;br style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot; /&gt;&lt;span style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot;&gt;$i += 2;&lt;/span&gt;&lt;br style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot; /&gt;&lt;span style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot;&gt;} while ($i &amp;lt; strlen($data));&lt;/span&gt;&lt;br style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot; /&gt;&lt;br style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot; /&gt;&lt;span style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot;&gt;return $bin;&lt;/span&gt;&lt;br style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot; /&gt;&lt;span style=&quot;color: #666666; font-family: Verdana, sans-serif; font-size: 11px; line-height: 16.566667556762695px; text-align: justify;&quot;&gt;}&lt;/span&gt;&lt;strlen br=&quot;&quot; hexdata=&quot;hexdata&quot; i=&quot;i&quot; style=&quot;color: #333333; font-family: Verdana, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;&lt;br /&gt;?&amp;gt;&amp;nbsp;&lt;/strlen&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/2548676478976339026/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/2548676478976339026' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/2548676478976339026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/2548676478976339026'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2012/09/encriptar-y-desencriptar-entre-java-y.html' title='Encriptar y desencriptar entre java y php con AES'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-5194721079454187331</id><published>2012-09-19T23:42:00.000-07:00</published><updated>2012-09-19T23:42:36.063-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="id"/><category scheme="http://www.blogger.com/atom/ns#" term="pestaña"/><category scheme="http://www.blogger.com/atom/ns#" term="tab"/><category scheme="http://www.blogger.com/atom/ns#" term="tabhost"/><category scheme="http://www.blogger.com/atom/ns#" term="widget"/><title type='text'>Quitar una pestaña (o tab) de un tabhost en android</title><content type='html'>Para quitar una pestaña en un tabhost en android, se situa el widget en la pestaña cero, y luego se borra la que queremos borrar, eso si, sabiendo el id, así:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;post-text&quot; style=&quot;background-color: white; border: 0px; margin: 0px 5px 5px 0px; padding: 0px; vertical-align: baseline; width: 660px;&quot;&gt;
&lt;pre class=&quot;default prettyprint&quot; style=&quot;background-color: #eeeeee; border: 0px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;&quot;&gt;&lt;code style=&quot;border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; font-size: 14px; line-height: 18px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;&quot;&gt;tabhost.setCurrentTab(0);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;default prettyprint&quot; style=&quot;background-color: #eeeeee; border: 0px; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, serif; font-size: 14px; line-height: 18px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;&quot;&gt;&lt;code style=&quot;border: 0px; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&amp;nbsp;tabHost&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;getTabWidget&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;removeView&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;tabHost&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;getTabWidget&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;getChildTabViewAt&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;span style=&quot;color: maroon;&quot;&gt;ID&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;));&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;font-family: Arial, &#39;Liberation Sans&#39;, &#39;DejaVu Sans&#39;, sans-serif; font-size: 14px; line-height: 18px;&quot;&gt;
&lt;code style=&quot;border: 0px; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Donde ID es el id de la pestaña que queremos borrar&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/5194721079454187331/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/5194721079454187331' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/5194721079454187331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/5194721079454187331'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2012/09/quitar-una-pestana-o-tab-de-un-tabhost.html' title='Quitar una pestaña (o tab) de un tabhost en android'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-8121102370989736017</id><published>2012-09-19T23:38:00.005-07:00</published><updated>2012-09-19T23:43:24.686-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="created"/><category scheme="http://www.blogger.com/atom/ns#" term="hierarchy"/><category scheme="http://www.blogger.com/atom/ns#" term="Only"/><category scheme="http://www.blogger.com/atom/ns#" term="original .thread"/><category scheme="http://www.blogger.com/atom/ns#" term="view"/><category scheme="http://www.blogger.com/atom/ns#" term="views"/><title type='text'>Android “Only the original thread that created a view hierarchy can touch its views.”</title><content type='html'>Si les sale esto en android, significa que se ha &amp;nbsp;creado o se han creado elementos en un hilo y se trata de modificar en otro. Para resolverlo haz:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;default prettyprint&quot; style=&quot;background-color: #eeeeee; border: 0px; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, serif; font-size: 14px; line-height: 18px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;&quot;&gt;&lt;code style=&quot;border: 0px; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;runOnUiThread&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;background-color: transparent; border: 0px; color: darkblue; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;background-color: transparent; border: 0px; color: #2b91af; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Runnable&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;background-color: transparent; border: 0px; color: darkblue; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;background-color: transparent; border: 0px; color: darkblue; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; run&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;background-color: transparent; border: 0px; color: grey; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;//El código que hace lo que vos querás....&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;});&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/8121102370989736017/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/8121102370989736017' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/8121102370989736017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/8121102370989736017'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2012/09/android-only-original-thread-that.html' title='Android “Only the original thread that created a view hierarchy can touch its views.”'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-215870056411134677</id><published>2012-01-08T22:11:00.000-08:00</published><updated>2012-01-08T22:13:32.516-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PHP Bash scripts CRON Linux Ubuntu Ejecucion automatica"/><title type='text'>CRON en Ubuntu: Tareas autómaticas scripst (PHP, Bash) y lanzar programas con interfaz gráfica</title><content type='html'>Si necesitas que una tarea se ejecute a intervalos regulares o en determinado momento en el futuro CRON es lo que buscas.&lt;br /&gt;
CRON es un demonio, un proceso que se ejecuta permanentemente en segundo plano y que ejecuta una tarea en un determinado momento que ha sido previamente programado.&lt;br /&gt;
&lt;br /&gt;
Para instalarlo puedes ir a Synaptic y para comprobar si esta corriendo escribes en la consola:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; service cron status&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Si tienes instalado service), Si se esta ejecutando retorna algo como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cron start/running, process 1581&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si no tambien puedes arrancarlo con:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sudo service cron start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora, para entrar en materia escribimos en la consola:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sudo crontab -e &lt;br /&gt;
&lt;br /&gt;
Que te da la opción de editar el archivo donde CRON busca las tareas que va a ejecutar, al final de los comentarios debes poner las tareas así:&lt;br /&gt;
&lt;br /&gt;
15 23 * * * &lt;comando&gt;&lt;/comando&gt;&lt;br /&gt;
&lt;br /&gt;
donde el orden es minutos, horas, día del mes, mes, día de la semana y el comando a ejecutar, antes es bueno agregar:&lt;br /&gt;
&lt;br /&gt;
SHELL=/bin/bash&lt;br /&gt;
PATH=/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;
MAILTO=root&lt;br /&gt;
HOME=/&lt;br /&gt;
&lt;br /&gt;
Que configura las variables de entorno, como el shell que se va a usar, el home, donde están los ejecutables.&lt;br /&gt;
&lt;br /&gt;
Puedes probar con esto:&lt;br /&gt;
&lt;br /&gt;
15 23 * * * halt &lt;br /&gt;
&lt;br /&gt;
ATENCIÓN!!!!! esto va&amp;nbsp; a apagar tu compu todos los días a las 11:15 pm, pero es una buena prueba.&lt;br /&gt;
&lt;br /&gt;
Ahora puedes querer ejecutar un programa que tiene interfaz gráfica, esto va a ser un poco mas complicado por que CRON ejecuta como root y no puedes ejecutar un programa gráfico en algunos entornos como root, para esto usamos:&lt;br /&gt;
&lt;br /&gt;
su -c vlc usuario&lt;br /&gt;
&lt;br /&gt;
que permite ejecutar vlc como usuario ahi donde se esta ejecutando CRON como root.&lt;br /&gt;
&lt;br /&gt;
15 23 * * * su -c vlc usuario&lt;br /&gt;
&lt;br /&gt;
Guardamos esto al final del archivo poniendo la hora a la que queremos que se ejecute. Esto igual no va a funcionar :), pero podemos aprender algo útil y es a generar un log de errores para CRON, para esto, primero guardamos la instrucción en un script de bash en un archivo con extensión sh y al que daremos permisos de ejecución, la instruccion es (su -c vlc usuario), y escribimos esto en el archivo de CRON:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
46 00 * * * sh /donde esta el script/script.sh 2&amp;gt;~/var/log/crontab.err&lt;br /&gt;
&lt;br /&gt;
Si revisamos&amp;nbsp; /var/log/crontab.err hay cosas como [0x94dd994] main interface error: no suitable interface module y mas cosas con interface, resulta que tenemos que aclar en que pantalla se va a mostar, para saber que pantallas hay disponibles imprimos esta variable:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo $DISPLAY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lo que me imprime :0.0, así que aclaramos que se va a mostar ahi:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
46 00 * * * DISPLAY=:0.0 sh /donde esta el script/script.sh 2&amp;gt;~/var/log/crontab.err&lt;br /&gt;
&lt;br /&gt;
Entonces en resumen, para ejecutar programas que tienen interfaz gráfica es importante no hacerlo como root y decir en que pantalla se va a mostar.&lt;br /&gt;
&lt;br /&gt;
Ahora para ejecutar scripts de PHP, primero hay que averiguar donde esta el ejecutable de PHP del servicio que usamos.&lt;br /&gt;
Esto por que como yo, se puede tener instalado Apache 2 y al mismo tiempo Lampp y pues ambos no se ejecutan al tiempo, entonces, sabiendo cual es el que usamos la cosa es así:&lt;br /&gt;
&lt;br /&gt;
25 18 * * * /opt/lampp/bin/php /opt/lampp/htdocs/htdocs/cron.php&amp;nbsp; 2&amp;gt;~/var/log/crontab.err&lt;br /&gt;
&lt;br /&gt;
donde /opt/lampp/bin/php es donde yo tengo mi ejecutable de PHP y el resto donde tengo mi script de php y pues lo que ya vimos del log.&lt;br /&gt;
&lt;br /&gt;
Gracias, y me cuentan como les resulta&lt;br /&gt;
&lt;br /&gt;
Luisa</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/215870056411134677/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/215870056411134677' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/215870056411134677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/215870056411134677'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2012/01/cron-en-ubuntu-tareas-automaticas.html' title='CRON en Ubuntu: Tareas autómaticas scripst (PHP, Bash) y lanzar programas con interfaz gráfica'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-7507474695886092272</id><published>2012-01-04T10:21:00.000-08:00</published><updated>2012-01-04T10:21:37.449-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PHP array key arreglo"/><title type='text'>Nombres de indices de arreglos en PHP</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: url(http://assets.tumblr.com/images/input_bg.gif); background-origin: initial; background-position: 50% 0%; background-repeat: repeat no-repeat; color: black; font-family: &#39;Lucida Grande&#39;, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; font-weight: normal; line-height: 1.4; margin-bottom: 8px; margin-left: 12px; margin-right: 12px; margin-top: 8px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;En PHP podemos tener arreglo como el siguiente:&lt;br /&gt;
&lt;br /&gt;
$nombres=array(&#39;perro&#39;=&amp;gt;&#39;tintin&#39;,&#39;gato&#39;=&amp;gt;&#39;tom&#39;,&#39;raton&#39;=&amp;gt;&#39;jerry&#39;);&lt;br /&gt;
&lt;br /&gt;
Y podemos obtener el contenido del arreglo, por ejemplo así:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
foreach($nombres as $n){&lt;br /&gt;
&amp;nbsp; &amp;nbsp;echo $n.&quot;/n&quot;;&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
lo cual dará por resultado algo asi:&lt;br /&gt;
&lt;br /&gt;
&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;tintin&lt;/span&gt;&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;tom&lt;/span&gt;&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;jerry&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
pero por algún motivo podríamos querer saber los nombres de los indices del arreglo, para esto podemos usar la función key, así:&lt;br /&gt;
&lt;br /&gt;
while ($animal = current($nombres)) {//es un puntero interno que apunta al primer elemento //del array&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;echo key($nombres).&quot; &quot;. $animal.&#39;/n&#39;; //key devuelve el nombre del indice&lt;br /&gt;
&amp;nbsp; next($nombres); //Avanza el puntero interno del array al siguiente elemento&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
lo que da por resultado:&lt;br /&gt;
&lt;br /&gt;
&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;perro tintin&lt;/span&gt;&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;gato tom&lt;/span&gt;&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span _mce_style=&quot;font-family: &#39;Times New Roman&#39;; line-height: normal; font-size: medium;&quot; class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: small; line-height: normal;&quot;&gt;raton jerry&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Gracias&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/7507474695886092272/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/7507474695886092272' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/7507474695886092272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/7507474695886092272'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2012/01/nombres-de-indices-de-arreglos-en-php.html' title='Nombres de indices de arreglos en PHP'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-6634928691681001079</id><published>2012-01-03T16:33:00.001-08:00</published><updated>2012-01-03T16:33:30.298-08:00</updated><title type='text'>Etiqueta select con optgroup HTML en Cakephp</title><content type='html'>La etiqueta optgroup &amp;nbsp;ofrece la posibilidad de agrupar los option de un select (Las opciones de un drop-down agrupadas con etiquetas). Así:&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;&amp;lt;select&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;optgroup label=&quot;Swedish Cars&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value=&quot;volvo&quot;&amp;gt;Volvo&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value=&quot;saab&quot;&amp;gt;Saab&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/optgroup&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;optgroup label=&quot;German Cars&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value=&quot;mercedes&quot;&amp;gt;Mercedes&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value=&quot;audi&quot;&amp;gt;Audi&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/optgroup&amp;gt;&lt;br /&gt;
&amp;lt;/select&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Dado que en Cakephp tenemos&amp;nbsp;métodos&amp;nbsp;para darle formato a estos elementos, la forma de optener dichos optgroups es la siguiente:&lt;br /&gt;
&lt;br /&gt;
Se usan arreglos de 2 dimensiones -&amp;gt; $opt=array(&#39;Swedish Cars&#39;=&amp;gt;array(&#39;volvo&#39;=&amp;gt;&#39;Volvo&#39;,&#39;saab&#39;=&amp;gt;&#39;Saab&#39;),&#39;German Cars&#39;=&amp;gt;array(&#39;mercedes&#39;=&amp;gt;&#39;Mercedes&#39;,&#39;audi&#39;=&amp;gt;&#39;Audi&#39;));&lt;br /&gt;
&lt;br /&gt;
y el elemento como siempre:&lt;br /&gt;
&lt;br /&gt;
echo $this-&amp;gt;Form-&amp;gt;select(&#39;carros&#39;,$opt);&lt;br /&gt;
&lt;br /&gt;
Gracias&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/6634928691681001079/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/6634928691681001079' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/6634928691681001079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/6634928691681001079'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2012/01/etiqueta-select-con-optgroup-html-en.html' title='Etiqueta select con optgroup HTML en Cakephp'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-3216583482295693739</id><published>2011-12-13T20:46:00.000-08:00</published><updated>2011-12-13T20:46:19.879-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Java: Nombrar correctamente un identificador</title><content type='html'>Son las palabras que se usaran para dar nombre a una clase, método, interface, variable o constante, y aunque existen mucha flexibilidad debes tener en cuenta las siguientes reglas para escoger un nombre:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Deben ser caracteres Unicode (Amplia posibilidad)&lt;/li&gt;
&lt;li&gt;Debe comenzar con letra, signo $, o signo _ (underscore), nunca por un numero&lt;/li&gt;
&lt;li&gt;Luego del primer carácter, puede estar compuesto de letras, números y cualquier carácter luego de 0X00C0 (Esto ultimo es por los carácteres que no son letras (de 0X0041 a 0X007A) y numeros (de 0X0030 a 0X0039) y que estan antes de 0X00C0 como por ejemplo # = 0X0023, &amp;lt; = 0X003C, &amp;gt; = 0X003E, los cuales no se pueden usar como identificadores)&lt;/li&gt;
&lt;li&gt;La longitud del identificador no importa&lt;/li&gt;
&lt;li&gt;No puede contener espacios.&lt;/li&gt;
&lt;li&gt;Java es case-sensitive.&lt;/li&gt;
&lt;li&gt;Las palabras reservadas de Java no pueden usarse como identificadores.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Son correctos:&lt;br /&gt;
&lt;br /&gt;
$nombre;&lt;br /&gt;
_nombre;&lt;br /&gt;
____largo;&lt;br /&gt;
_$;&lt;br /&gt;
&lt;br /&gt;
Incorrecto:&lt;br /&gt;
&lt;br /&gt;
4numeros;&lt;br /&gt;
:d;&lt;br /&gt;
mayor&amp;gt;;&lt;br /&gt;
public;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fuentes Java 2,&amp;nbsp; &lt;span style=&quot;font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: Arial,sans-serif;&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;/span&gt;Benjamin Aumaille&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/3216583482295693739/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/3216583482295693739' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/3216583482295693739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/3216583482295693739'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2011/12/java-nombrar-correctamente-un.html' title='Java: Nombrar correctamente un identificador'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-2005758873118696155</id><published>2011-06-14T11:44:00.000-07:00</published><updated>2011-06-14T11:44:21.300-07:00</updated><title type='text'>Usar un controlador sin tener una tabla asociada CakePHP</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;, Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
En&amp;nbsp;ocasiones&amp;nbsp;he necesitado tener un controlador que no tiene un modelo (tabla en la base de datos asociado). La forma de lograrlo sin que arroje el error:&lt;br /&gt;
&lt;blockquote style=&quot;border-left-color: rgb(228, 228, 228); border-left-style: solid; border-left-width: 4px; margin-left: 30px; padding-left: 15px;&quot;&gt;&lt;strong&gt;Error:&amp;nbsp;&lt;/strong&gt;Database table&amp;nbsp;&lt;em&gt;home&lt;/em&gt;&amp;nbsp;for model&amp;nbsp;&lt;em&gt;Home&lt;/em&gt;&amp;nbsp;was not found. &lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;Poner el siguiente codigo en la definición del controlador:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;class HomeController extends AppController {&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;span _mce_style=&quot;white-space: pre;&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;var $name = &#39;Home&#39;;&lt;br /&gt;
&lt;em&gt;&lt;span _mce_style=&quot;white-space: pre;&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;strong&gt;var $uses = array();&lt;/strong&gt;&lt;/em&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;  //Asi estamos definiendo que modelos usara y al dejarlo vació pues no busca ninguno.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span _mce_style=&quot;white-space: pre;&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;function index(){&lt;br /&gt;
&lt;span _mce_style=&quot;white-space: pre;&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
}&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
Gracias,&lt;br /&gt;
Luisa Quiroga&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/2005758873118696155/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/2005758873118696155' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/2005758873118696155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/2005758873118696155'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2011/06/usar-un-controlador-sin-tener-una-tabla.html' title='Usar un controlador sin tener una tabla asociada CakePHP'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-3921095638658292798</id><published>2011-06-13T13:34:00.000-07:00</published><updated>2011-06-13T13:34:25.785-07:00</updated><title type='text'>Tablas con nombres compuestos por dos palabras en CakePhp</title><content type='html'>Programando en el framework cakephp me tomo un tiempo averiguar cual era realmente la convención para usar nombres compuestos por dos palabras para tablas en el framework, dado que la documentación no es muy precisa al respecto, pero la cosa es asi:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Nombre de tabla:&lt;/strong&gt;&lt;br /&gt;
celulas_cuerpos &amp;nbsp; &amp;nbsp; //Las tablas se nombran en plural y separadas por underscore&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Nombre del controlador:&lt;/strong&gt;&lt;br /&gt;
celulas_cuerpos_controller.php //Se nombra en plural y separado por underscore&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Sintaxis en el controlador:&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt; class CelulasCuerposController extends AppController { &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp; var $name = &#39;CelulasCuerpos&#39;; &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp; function add(){ &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;if(!empty($this-&amp;gt;data)){ &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if($this-&amp;gt;CelulasCuerpo-&amp;gt;save($this-&amp;gt;data)) { &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$this-&amp;gt;Session-&amp;gt;setFlash(&quot;Registro guardado!&quot;); &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$this-&amp;gt;redirect(&#39;/celulas&#39;);    }&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&amp;nbsp;}&lt;/code&gt;&lt;br /&gt;
Lo mas importante en la&amp;nbsp;sintaxis&amp;nbsp;dentro del controlador es que para acceder al modelo debe ser en Camel Case pero contrario a toda lógica humana o del cook book es la primera en plural y la segunda en singular.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Nombre de la vista&lt;/strong&gt;&lt;br /&gt;
La vista debe ir en una carpeta llamada /views/celulas_cuerpos y dentro los nombres de las vistas normalito&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Acceso URL&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;
Para acceder a la funcion es www.ejemplo.com/celulas_cuerpos/add&lt;br /&gt;
Y eso es, me funciono!!!!&lt;br /&gt;
&lt;br /&gt;
Gracias,&lt;br /&gt;
&lt;br /&gt;
Luisa</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/3921095638658292798/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/3921095638658292798' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/3921095638658292798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/3921095638658292798'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2011/06/tablas-con-nombres-compuestos-por-dos.html' title='Tablas con nombres compuestos por dos palabras en CakePhp'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-7074997576285564808</id><published>2011-02-01T15:46:00.000-08:00</published><updated>2011-02-01T16:01:33.114-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="excel"/><category scheme="http://www.blogger.com/atom/ns#" term="oledb"/><category scheme="http://www.blogger.com/atom/ns#" term="serviro vinculado"/><category scheme="http://www.blogger.com/atom/ns#" term="sql server"/><title type='text'>Insertar desde un archivo de excel en SQL Sever</title><content type='html'>Para insertar los datos que hay en un archivo de Excel en una tabla de SQL server puede resultar mas fácil de lo que parece.&lt;br /&gt;
&lt;br /&gt;
Primero vamos a usar el archivo de Excel como un Servidor Vinculado.&lt;br /&gt;
Un Servidor Vinculado es una definición de una Cadena de Conexión OLEDB y un Proveedor OLEDB que asociamos a un nombre lógico, es decir, nos permite definir un nombre para el servidor vinculado, y a dicho nombre especificarle qué Proveedor OLEDB y qué Cadena de Conexión se debe utilizar para acceder al correspondiente Origen de Datos OLEDB cuando se solicite acceso a dicho Servidor Vinculado. Como hablamos, un Servidor Vinculado sirve para acceder a Orígenes de Datos OLEDB desde SQL Server (es decir, para ejecutar Consultas Distribuidas, ejecutar Procedimientos Almacenados en servidores remotos, etc.). &lt;a href=&quot;http://www.guillesql.es/Articulos/SQLServerFAQ_Servidor_Vinculado_OPENQUERY_Notacion_4_Partes.aspx&quot;&gt;Ver&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Para definir el Servidor Vinculado podemos usar el asistente de SQL Server o usar un procedimiento almacenado (lo que a mi me funciono mejor), la sintanxis es:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;DECLARE @RC int
DECLARE @server nvarchar(128)
DECLARE @srvproduct nvarchar(128)
DECLARE @provider nvarchar(128)
DECLARE @datasrc nvarchar(4000)
DECLARE @location nvarchar(4000)
DECLARE @provstr nvarchar(4000)
DECLARE @catalog nvarchar(128)
-- Set parameter values
SET @server = &#39;XLTEST_SP&#39;  -- Nombre para el servidor
SET @srvproduct = &#39;Excel&#39;  --Nombre del producto
SET @provider = &#39;Microsoft.Jet.OLEDB.4.0&#39;  --Proveedor
SET @datasrc = &#39;c:\book1.xls&#39;  --Ruta completa del&lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;--Origen de datos
SET @provstr = &#39;Excel 8.0&#39;   -- Origen de los datos
EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server,@srvproduct, &lt;/pre&gt;&lt;pre class=&quot;code&quot;&gt;@provider, @datasrc, @location, @provstr, @catalog&lt;/pre&gt;&lt;br /&gt;
Puedes dejar solo igual, y con cambiar el nombre del servidor, @server, por cualquier nombre y @datasrc por la ruta completa donde esta el archivo de Excel.&lt;br /&gt;
&lt;br /&gt;
Al ejecutar esta sentencia en el el Explorador de Objetos se puede encontrar en Objetos del Servidor en Servidores vinculados en Tablas encontraras&lt;br /&gt;
las hojas que tenga el archivo y se pueden consultar como tablas con la siguiente sintaxis:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;SELECT [F1]
FROM [XLTEST_SP]...[Hoja2$]
GO
&lt;/pre&gt;Donde XLTEST_SP es el nombre del Servidor Vinculado.&lt;br /&gt;
&lt;br /&gt;
Ya que podemos consultar el archivo como una tabla solo es insertarla normalmente en el destino:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;code&quot;&gt;insert into Nintranet.dbo.Empleado_Atributos_Intranet
SELECT *
FROM [XLTEST_SP]...[Hoja2$]
GO&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://support.microsoft.com/kb/306397/EN-US&quot;&gt;Ver&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/7074997576285564808/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/7074997576285564808' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/7074997576285564808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/7074997576285564808'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2011/02/insertar-desde-un-archivo-de-excel-en.html' title='Insertar desde un archivo de excel en SQL Sever'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-190777078641232388</id><published>2011-01-11T16:53:00.000-08:00</published><updated>2011-01-11T16:53:08.029-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefly"/><category scheme="http://www.blogger.com/atom/ns#" term="rollback"/><category scheme="http://www.blogger.com/atom/ns#" term="sql server"/><category scheme="http://www.blogger.com/atom/ns#" term="trigger"/><title type='text'>Entradas duplicadas sql server F</title><content type='html'>Estoy corrigiendo defectos de una aplicación y uno de los que me reportaron me ha dado muchos dolores de cabeza.&lt;br /&gt;
Es una aplicación web y cuando un usuario realiza cierta operación que debe generar un registro en una tabla, se generan 2 o 3 entradas duplicadas, con 100 milisegundos de diferencia, lo se por que tengo una columna con un getdate al insertar, además de que queda con diferente id&lt;br /&gt;
&lt;br /&gt;
Tratando de corregir el problema puse una llave compuesta por 4 campos, pero no funciona por la diferencia en milisengundos de la fecha de inserción, y el problema continuaba generando inconsistencias serias en la aplicacion.&lt;br /&gt;
&lt;br /&gt;
Mi solución un trigger, tomo los campos con los que cotrolo la inserción duplicada y dado el caso si se halla duplicado hago un rollback. Asi:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ALTER TRIGGER SOL_REPETIDAS&lt;br /&gt;
&lt;br /&gt;
on Solicitud_vac&lt;br /&gt;
&lt;br /&gt;
AFTER INSERT&lt;br /&gt;
&lt;br /&gt;
AS&lt;br /&gt;
&lt;br /&gt;
BEGIN&lt;br /&gt;
&lt;br /&gt;
    -- SET NOCOUNT ON &lt;br /&gt;
&lt;br /&gt;
    SET NOCOUNT ON;&lt;br /&gt;
    &lt;br /&gt;
    DECLARE @fecha_in datetime&lt;br /&gt;
    DECLaRE @usu_crea varchar(20)&lt;br /&gt;
     DECLARE @fecha_inicio datetime&lt;br /&gt;
     declare @sol_id int&lt;br /&gt;
    select @sol_id=sol_id, @fecha_in = Sol_Fecha, @usu_crea=Sol_Usu_Crea, @fecha_inicio=Sol_Fecha_Ini from inserted &lt;br /&gt;
    print @fecha_in&lt;br /&gt;
&lt;br /&gt;
--Condicion  para determinar un registro similar en la tabla&lt;br /&gt;
    if((select count( sol_id) from solicitud_vac where DATEDIFF(mi,sol_fecha,@fecha_in) &lt; 4 and sol_usu_crea=@usu_crea and Sol_Fecha_Ini=@fecha_inicio and sol_id &lt;&gt;@sol_id) &gt;0  )&lt;br /&gt;
     ROLLBACK   /*Si se encontraron registros similares se hace un rollback, que echa atras la transaccion, incluyendo el insert, update o delete que lanzo el trigger*/&lt;br /&gt;
&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
Otra arma en nuestra linea de batalla para evitar inconsistencias.&lt;br /&gt;
&lt;br /&gt;
Bye</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/190777078641232388/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/190777078641232388' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/190777078641232388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/190777078641232388'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2011/01/entradas-duplicadas-sql-server-f.html' title='Entradas duplicadas sql server F'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-1639557676302447968</id><published>2010-10-23T14:00:00.000-07:00</published><updated>2010-10-23T14:00:44.975-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="base de datos"/><category scheme="http://www.blogger.com/atom/ns#" term="restaurar"/><category scheme="http://www.blogger.com/atom/ns#" term="sql server"/><title type='text'>Restaurar base de datos a una con diferente SQL Server</title><content type='html'>Trabajando en SQL Server 2008 el otro día necesite tener una base de datos de prueba de una que manejo regularmete, hice un back up y me encontre al intentar restaurar con que no podia cambiar el nombre de la base de datos, y que ademas el proceso intentaba situar los archivos de la nueva bd donde estan los de la vieja y pues obviamente la vieja los esta usando. Así que decidi usar el siguiente script que soluciono mi problema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USE master&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
RESTORE FILELISTONLY&lt;br /&gt;
FROM disk  =&#39;C:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup\Vacaciones.bak&#39;&lt;br /&gt;
&lt;br /&gt;
From disk es para poder restaurar nombrando la ubicacion del archivo de back up. &lt;br /&gt;
&lt;br /&gt;
Este primero me muestra los nombre que tiene el back up para los archivos de la bd, me retorno lo siguiente entre otra informacion que ahora no es relevante:&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;3px&quot;&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
Vacaciones_Data&lt;/td&gt; &lt;td&gt;&lt;br /&gt;
c:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQLDATA\Vacaciones backup.MDF&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
Vacaciones_Log&lt;/td&gt; &lt;td&gt;&lt;br /&gt;
c:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\Vacaciones backup_1.LDF&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;br /&gt;
Vacaciones_idx&lt;/td&gt; &lt;td&gt;&lt;br /&gt;
c:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\Vacaciones backup_2.LDF&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Ahora para restaurar la base de datos use lo siguiente, lo que pone los nuevos archivos donde uno quiera, importante las extensiones:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USE master&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
RESTORE DATABASE Nintranet --Este es el nombre de la bd de destino, en mi caso no la cree antes de&lt;br /&gt;
--ejecutar el script&lt;br /&gt;
FROM disk  =&#39;C:\Archivos de programa\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup\Vacaciones.bak&#39;&lt;br /&gt;
WITH RECOVERY,&lt;br /&gt;
MOVE &#39;Vacaciones_Data&#39; TO &#39;C:\Vacaciones_Data.mdf&#39;, &lt;br /&gt;
MOVE &#39;Vacaciones_Log&#39; TO &#39;C:\Vacaciones_Log.ldf&#39;,&lt;br /&gt;
MOVE &#39;Vacaciones_idx&#39; TO &#39;C:\Vacaciones_Log_2.ldf&#39;&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
Gracias.</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/1639557676302447968/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/1639557676302447968' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/1639557676302447968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/1639557676302447968'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2010/10/restaurar-base-de-datos-una-con.html' title='Restaurar base de datos a una con diferente SQL Server'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2759718539343901077.post-523036796607755286</id><published>2010-10-05T04:19:00.000-07:00</published><updated>2010-10-05T04:19:09.438-07:00</updated><title type='text'>Instalación muy básica de Debian en VirtualBox</title><content type='html'>Instalación muy básica de Debian en VirtualBox, dejando una máquina completamente lista para copiarla en cualquier máquina tipo servidor, y destinada a cualquier servicio, bien sea DHCP, proxy, DNS, web o cualquier otra cosa&lt;br /&gt;
&lt;br /&gt;
&lt;iframe title=&quot;YouTube video player&quot; class=&quot;youtube-player&quot; type=&quot;text/html&quot; width=&quot;425&quot; height=&quot;320&quot; src=&quot;http://www.youtube.com/embed/yParA9COJ3k&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe title=&quot;YouTube video player&quot; class=&quot;youtube-player&quot; type=&quot;text/html&quot; width=&quot;425&quot; height=&quot;320&quot; src=&quot;http://www.youtube.com/embed/b3CL9c3z1pM&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://knryco.blogspot.com/feeds/523036796607755286/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2759718539343901077/523036796607755286' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/523036796607755286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2759718539343901077/posts/default/523036796607755286'/><link rel='alternate' type='text/html' href='http://knryco.blogspot.com/2010/10/instalacion-muy-basica-de-debian-en.html' title='Instalación muy básica de Debian en VirtualBox'/><author><name>thaednevol &amp;amp; Firefly</name><uri>http://www.blogger.com/profile/04238912002863527951</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLN-Q8hyUCIzZnzachdmtXa-btn0oZfBkyvrzIGBJf04PnHuU0ETPAaf-PuXhxVBoxRAoCi-AiHid2waFcobV4_H2nFu6eqFa8p6sCqbkF_qwrgDHKww_TVPZCKZ5ZldE/s220/n613408164_875200_8616.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/yParA9COJ3k/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>