<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-8107960283713266625</id><updated>2009-11-02T20:29:43.760-06:00</updated><title type="text">BLOG-A-TECH</title><subtitle type="html">revisiones, comentarios u opiniones sobre sistemas</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://sartigas.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/blog-a-tech" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-8624850361471847965</id><published>2009-11-02T20:23:00.004-06:00</published><updated>2009-11-02T20:29:43.772-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="productividad" /><title type="text">Algunos consejos al desarrollador de PL/SQL - 2da parte</title><content type="html">&lt;img style="float:left; margin:5px 10px 0px 0px;width: 200px; height: 100px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s200/oracle.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5351467101110248818" /&gt;&lt;div style="text-align: justify;"&gt;&lt;h3&gt;Que no te de miedo pedir ayuda&lt;/h3&gt;Es probable que, si eres un profesional del software, seas una persona muy inteligente. Estudiaste muy duro, perfeccionaste tus habilidades y ahora te das la buena vida escribiendo código. Resuelves casi cualquier problema que tocas y eso te enorgullece. Desafortunadamente, el éxito puede también hacerte egoísta, arrogante, y renuente a pedir ayuda cuando te atoras. Esta dinámica es uno los aspectos más peligrosos y destructivos del desarrollo de software.&lt;br /&gt;&lt;br /&gt;El software es escrito por seres humanos; y por lo tanto, es importante reconocer que la psicología humana juega un papel importante en el desarrollo de software. Un ejemplo de esto es el siguiente.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Joe, un desarrollador con antigüedad en un equipo de seis, tiene un problema con su código. Lo ha revisado por horas, incrementando su frustración y sin poder encontrar donde está el bug. No se le ocurre ni siquiera pensar el pedir ayuda a sus compañeros porque ninguno de ellos tiene la experiencia de él. Finalmente, su cabeza no le da más y termina "dándose por vencido". Suspirando, levanta su teléfono y marca una extensión: "Sandra, ¿podrías venir y darle una revisada a mi código? tengo un problema el cual no encuentro en donde puede estar". Sandra pasa por su lugar y, de una rápida revisada al código de Joe, señala lo que para él debió ser obvio desde hace mucho. ¡Hurra! El código funciona, y Joe le da las gracias, aunque de hecho se siente apenado en su interior.&lt;br /&gt;&lt;br /&gt;Pensamientos como "¿Cómo es que no lo vi antes?" y "Si hubiera pasado otros cinco minutos haciendo mis pruebas lo hubiera encontrado" pasan por la mente de Joe. Es entendible aunque también muy estúpido. El punto aquí es que con frecuencia no alcanzamos a ver nuestros problemas porque estamos muy metidos en nuestro propio código. Algunas veces todo lo que necesitamos es una nueva perspectiva, la visión relativamente objetiva de alguien sin nada en juego. No tiene nada que ver con la antigüedad, pericia o competencia.&lt;br /&gt;&lt;br /&gt;Steven recomienda fuertemente establecer dentro de la organización los siguientes lineamientos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Retribuye admisiones de ignorancia&lt;/span&gt;&lt;br /&gt;Ocultar lo que no sabes acerca de una aplicación o su código es muy peligroso. Desarrolla una cultura de preguntas y peticiones de ayuda.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Pide ayuda&lt;/span&gt;&lt;br /&gt;Si no puedes encontrar la causa de un bug en 30 minutos, pide ayuda inmediata. Puedes incluso idear un "sistema amigo", de tal manera que cada quien tiene asignado a alguien del grupo a quien &lt;span style="font-style:italic;"&gt;se espera&lt;/span&gt; se le pida soporte. No te permitas (o a otros en tu grupo) estar por horas golpeándote contra la pared en una infructuosa búsqueda de respuestas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Establece un proceso de revisión de código por un compañero&lt;/span&gt;&lt;br /&gt;No permitas que ningún código se suba a producción sin que sea leído y criticado (en una manera positiva y constructiva) por uno o más desarrolladores en tu equipo&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-8624850361471847965?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/27IpocJujUc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/8624850361471847965/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/11/algunos-consejos-al-desarrollador-de.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/8624850361471847965" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/8624850361471847965" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/27IpocJujUc/algunos-consejos-al-desarrollador-de.html" title="Algunos consejos al desarrollador de PL/SQL - 2da parte" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s72-c/oracle.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/11/algunos-consejos-al-desarrollador-de.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-1099781507955928142</id><published>2009-10-31T14:15:00.000-06:00</published><updated>2009-10-31T14:33:06.527-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="productividad" /><title type="text">Algunos consejos al desarrollador de PL/SQL - 1ra parte</title><content type="html">&lt;img style="margin: 5px 0px 0px 10px; float: right; width: 200px; height: 100px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s200/oracle.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5364399772137510626" /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight:bold;"&gt;Leyendo el libro de Steven Feuerstein Oracle PL/SQL Programming 5ta ed. -el cual es dicho sea de paso material de referencia altamente recomendado para quienes desarrollan en PL- comparte los siguientes consejos que en su opinión son el resultado de haber capacitado, enseñar y trabajar con miles de desarrolladores en PL y en cuyo proceso ha obtenido algunas conclusiones sobre la forma en la que todos hacemos nuestro trabajo en el mundo de PL/SQL.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;¡No desarrolles a las prisas!&lt;/h3&gt;Casi siempre estamos trabajando con tiempos de entrega apretados, o poniéndonos al día por alguno que otro contratiempo. No tenemos tiempo que perder y si mucho código que escribir. Asi que manos a la obra—¿cierto?&lt;br /&gt;&lt;br /&gt;Falso. Si nos metemos así de pronto y de lleno a construir código convirtiendo al pie de la letra los requerimientos en cientos, miles o incluso cientos de miles de líneas de código, vamos a terminar con un caos total que es casi imposible de depurar y mantener.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;No hay que entrar en pánico ante las fechas de entrega; lo más probable es que cumplas si haces una cuidadosa planeación.&lt;br /&gt;&lt;br /&gt;Steven recomienda a resistir la presión de la entrega y a asegurarse de hacer lo siguiente antes de comenzar una nueva aplicación, o inclusive alguna parte específica de la aplicación:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Construir casos y scripts de prueba antes de escribir el código&lt;/span&gt;&lt;br /&gt;Debes determinar como vas a verificar una implementación exitosa antes de escribir una sola línea código del programa. Haciéndolo, es más probable que la interfaz de tu programa sea la correcta, e identifiques plenamente qué es lo que tu programa necesita hacer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Establecer reglas claras de como los desarrolladores escribirán las sentencias SQL en la aplicación&lt;/span&gt;&lt;br /&gt;En general, Steven no recomienda que cada desarrollador escriba montones de SQL. En vez de eso, los queries que regresan un solo registro, inserts y updates deberían estar "ocultos" en procedimientos y funciones preconstruídos y bien probados (llamado &lt;span style="font-style:italic;"&gt;encapsulamiento de información&lt;/span&gt;). Estos programas se pueden probar, optimizar y mantener de una manera más efectiva que solo sentencias SQL (algunas de ellas redundantes) desparramadas por todo el código.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Establecer reglas claras de como los desarrolladores manejarán las excepciones en la aplicación&lt;/span&gt;&lt;br /&gt;Todos los desarrolladores del equipo deberían lanzar, manejar y registrar los errores de la misma manera. Para lograrlo, lo mejor es crear un solo paquete de manejo-de-errores que oculte los detalles de como se registran estos, que establezca como se lanzan y propagan las excepciones hacia arriba a través de bloques anidados, y que evite la codificación en duro de excepciones específicas-de-la-aplicación. Asegurarse de que todos usen ese paquete y que &lt;span style="font-style:italic;"&gt;no&lt;/span&gt; escriban su propio código de manejo de errores complicado, que consume tiempo y que es propenso a errores.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Usar el "refinamiento paso a paso" (también llamado diseño top-down) para limitar la complejidad de los requerimientos a enfrentar en un momento dado&lt;/span&gt;&lt;br /&gt;Si utilizas este enfoque, verás que las partes ejecutables de tus módulos son cortos y fáciles de entender, lo que hace que el código sea fácil de mantener y de mejorarlo con el tiempo. Los módulos locales o anidados juegan un papel clave en el seguimiento de este principio de diseño.&lt;br /&gt;&lt;br /&gt;Estas son solo unas cuantas cosas importantes a tener en cuenta para &lt;span style="font-style:italic;"&gt;antes&lt;/span&gt; de comenzar a escribir todo ese código. Solo recuerda: en el mundo del desarrollo de software, la prisa no solo hace cosas frágiles, prácticamente garantiza un generoso ofrecimiento de bugs y de fines de semana perdidos.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-1099781507955928142?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/XgO3c649y0s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/1099781507955928142/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/10/algunos-consejos-1ra-parte.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/1099781507955928142" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/1099781507955928142" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/XgO3c649y0s/algunos-consejos-1ra-parte.html" title="Algunos consejos al desarrollador de PL/SQL - 1ra parte" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s72-c/oracle.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/10/algunos-consejos-1ra-parte.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-5668247279859038669</id><published>2009-09-03T12:01:00.021-05:00</published><updated>2009-09-03T18:48:50.636-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sistemas" /><category scheme="http://www.blogger.com/atom/ns#" term="productividad" /><title type="text">Fundamentos de Rendimiento de Software - Referencia rápida</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Muchas veces cuando nos ponemos a programar nos olvidamos que no solo se trata de escribir líneas de código que "hagan algo" y ya, nos olvidamos que el ambiente de desarrollo en el que trabajamos no tiene ni la décima parte de la carga de trabajo que tiene un ambiente productivo y es en este último que sucede lo que no consideramos -en el peor de los casos- y tenemos que hacer una revisión de los puntos donde podría estarse presentando el cuello de botella. Leyendo una entrada en el blog de Cary Millsap me encontré con lo que él llama una &lt;a href="http://carymillsap.blogspot.com/2009/07/fundamentals-of-software-performance.html"&gt;"Referencia rápida sobre los Fundamentos de Rendimiento del Software"&lt;/a&gt; de los términos que deberíamos tener presentes cuando algo no funciona eficientemente.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Glosario&lt;/h3&gt;&lt;b&gt;eficiencia&lt;/b&gt; Es la medida de cuantos recursos está consumiendo la ejecución de una tarea. Eficiencia es lo inverso a cuanto del tiempo total de servicio de la ejecución de la tarea puede eliminarse sin incrementar su capacidad ni sacrificar la función de negocio.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ocupación&lt;/b&gt; Es el valor de utilización de un recurso cuya tasa de transferencia se maximiza con un mínimo impacto en los tiempos de respuesta. El valor de ocupación para un número dado de canales de servicio es menor o igual que el valor mostrado a continuación:&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="3" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-top-width: medium;border-top-style: solid;"&gt;# de canales de servicio&lt;/td&gt;&lt;td style="border-top-width: medium;border-top-style: solid;" align="center"&gt;1&lt;/td&gt;&lt;td style="border-top-width: medium;border-top-style: solid;" align="center"&gt;2&lt;/td&gt;&lt;td style="border-top-width: medium;border-top-style: solid;" align="center"&gt;4&lt;/td&gt;&lt;td style="border-top-width: medium;border-top-style: solid;" align="center"&gt;8&lt;/td&gt;&lt;td style="border-top-width: medium;border-top-style: solid;" align="center"&gt;16&lt;/td&gt;&lt;td style="border-top-width: medium;border-top-style: solid;" align="center"&gt;32&lt;/td&gt;&lt;td style="border-top-width: medium;border-top-style: solid;" align="center"&gt;64&lt;/td&gt;&lt;td style="border-top-width: medium;border-top-style: solid;" align="center"&gt;128&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-bottom-width: medium;border-bottom-style: solid;" align="center"&gt;Ocupación&lt;/td&gt;&lt;td style="border-bottom-width: medium;border-bottom-style: solid;"&gt;50%&lt;/td&gt;&lt;td style="border-bottom-width: medium;border-bottom-style: solid;"&gt;57%&lt;/td&gt;&lt;td style="border-bottom-width: medium;border-bottom-style: solid;"&gt;66%&lt;/td&gt;&lt;td style="border-bottom-width: medium;border-bottom-style: solid;"&gt;74%&lt;/td&gt;&lt;td style="border-bottom-width: medium;border-bottom-style: solid;"&gt;81%&lt;/td&gt;&lt;td style="border-bottom-width: medium;border-bottom-style: solid;"&gt;86%&lt;/td&gt;&lt;td style="border-bottom-width: medium;border-bottom-style: solid;"&gt;89%&lt;/td&gt;&lt;td style="border-bottom-width: medium;border-bottom-style: solid;"&gt;92%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;b&gt;carga&lt;/b&gt; Competencia por un recurso inducido por las ejecuciones concurrentes de tareas, medida como utilización.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;rendimiento&lt;/b&gt; Velocidad de ejecución de la tarea, medido ya sea como tasa de transferencia o tiempo de respuesta.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;perfil&lt;/b&gt; Descomposición tabular del tiempo de respuesta, listado comúnmente en orden descendente de la aportación del tiempo de respuesta del componente.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;demora en la cola&lt;/b&gt; Duración que una tarea pasa encolada en un recurso dado, a la espera de su oportunidad de consumirlo, medido en tiempo de ejecución por tarea: &lt;i&gt;segundos por click&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tiempo de respuesta&lt;/b&gt; Duración de ejecución de una tarea, medido en tiempo por tarea: &lt;i&gt;segundos por click&lt;/i&gt;. El tiempo de respuesta es la suma de la demora en la cola y el tiempo de servicio.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;diagrama de secuencia&lt;/b&gt; Es un diagrama especificado en el Lenguaje de Modelado Unificado (UML), usado para mostrar las interacciones entre objetos en el orden secuencial en que estas ocurren.  Este diagrama es útil para visualizar el tiempo de respuesta.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;canal de servicio&lt;/b&gt; Un sub-recurso que comparte una sola cola con otros sub-recursos, como una cabina de cuota en un centro comercial o un CPU en una computadora SMP.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tiempo de servicio&lt;/b&gt; Duración que una tarea pasa consumiendo un recurso dado, medido en tiempo por ejecución de tarea: &lt;i&gt;segundos por click&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tarea&lt;/b&gt; Unidad de trabajo orientada al negocio. Éstas pueden anidarse: &lt;i&gt;imprimir facturas&lt;/i&gt; es una tarea; &lt;i&gt;imprimir una factura&lt;/i&gt;—subtarea— es también un tarea.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tasa de transferencia&lt;/b&gt; Conteo de las ejecuciones completadas por la tarea dentro de un intervalo específico de tiempo: &lt;i&gt;clicks por segundo&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;utilización&lt;/b&gt; Uso de recurso dividido por capacidad por un intervalo de tiempo específico; una medida cuantitativa de carga.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;h3&gt;Principios&lt;/h3&gt;1. Un &lt;i&gt;diagrama de secuencia&lt;/i&gt; es una herramienta útil para conceptualizar el tiempo de respuesta, sin embargo, para tareas que ejecutan miles de invocacioes (incluso docenas), es más útil el &lt;i&gt;perfil&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;2. La tasa de transferencia es el recíproco del tiempo de respuesta. Si agregas carga para crear altas tasas de transferencia &lt;i&gt;cambias&lt;/i&gt; el tiempo de respuesta ya que añades &lt;i&gt;espera en la cola&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;3. La diferencia entre el tiempo de respuesta de una tarea que tiene un recurso con carga ligera y su tiempo de respuesta con carga pesada es la espera en la cola.&lt;br /&gt;&lt;br /&gt;4. La duración de una tarea en la cola para obtener un recurso depende del número de &lt;i&gt;canales de servicio&lt;/i&gt; de ese recurso además de su &lt;i&gt;carga&lt;/i&gt;:&lt;br /&gt;&lt;ol type="a"&gt;&lt;li&gt;Agregar canales de servicio reduce la espera en la cola para una carga dada. Sin embargo, el beneficio disminuye cuando los agregas.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Reducir la carga disminuye la espera en la cola para una determinada arquitectura. No hay un límite de escalabilidad para reducir la carga&lt;/li&gt;&lt;/ol&gt;5. La ocupación es el valor de utilización que define el umbral entre carga ligera y carga pesada sobre un recurso.&lt;br /&gt;&lt;ol type="a"&gt;&lt;li&gt;En un recurso con carga pesada, los tiempos de respuesta se degradan exponencialmente cuando la carga crece.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;En un recurso con carga pesada, los tiempos de respuesta mejoran exponencialmente cuando la carga disminuye&lt;/li&gt;&lt;/ol&gt;6. Para sistemas con peticiones de servicio de tiempo aleatorio, permitir excesivas cargas sostenidas en los recursos con respecto al valor de ocupación resulta en tiempos de respuesta severamente degradados y tasas de transferencia que fluctúan constantemente con cambios microscópicos en la carga.&lt;br /&gt;&lt;br /&gt;7. Para un conjunto de recursos de una computadora, no se puede mejorar el rendimiento haciendo que el código se &lt;i&gt;ejecute velózmente&lt;/i&gt;; se puede mejorar el rendimiento &lt;i&gt;solamente&lt;/i&gt; eliminando las instrucciones innecesarias en el código, o en el código que compite contra tu código para hacerse de recursos.&lt;br /&gt;&lt;br /&gt;8. Mejorar el enfoque de tu código de manera eficiente reduce el tiempo de servicio &lt;i&gt;y&lt;/i&gt; carga, los cuales mejoran el tiempo de respuesta, los cuales mejoran exponencialmente el rendimiento en recursos con demasiada carga pesada.&lt;br /&gt;&lt;br /&gt;9. No se puede optimizar la tasa de transferencia de una tarea ineficaz. Para analizar la eficiencia de una tarea, se debe analizar su tiempo de respuesta. De aquí que, para optimizar la tasa de transferencia primero se debe analizar el tiempo de respuesta.&lt;br /&gt;&lt;br /&gt;10. No le atinarás a la primera en donde es que un programa consume su tiempo, y que es ineficaz tratar de optimizar cualquier cosa que le veas. Analizar su comportamiento ayuda a escribir código que sea más veloz.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-5668247279859038669?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/bs_3NQx-kWU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/5668247279859038669/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/09/fundamentos-de-rendimiento-de-software.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/5668247279859038669" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/5668247279859038669" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/bs_3NQx-kWU/fundamentos-de-rendimiento-de-software.html" title="Fundamentos de Rendimiento de Software - Referencia rápida" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/09/fundamentos-de-rendimiento-de-software.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-6946905215984102378</id><published>2009-08-05T22:24:00.014-05:00</published><updated>2009-08-05T23:24:28.797-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title type="text">Creador y colaboradores de CentOS llegan a acuerdo</title><content type="html">&lt;div style="text-align: justify;"&gt;Vaya que sí resonó la carta publicada por el equipo de desarrolladores del proyecto CentOS ya que finalmente estos y Lance Davis se reunieron para llegar a acuerdos sobre los puntos mencionados en un post anterior donde los primeros solicitaban entre otros puntos, el que hubiera un delegado tanto para la administración del dominio 'centos.org' como de los canales IRC.&lt;br /&gt;&lt;br /&gt;Ahora el proyecto está en control de los dominios 'centos.org' y 'centos.info', además de tener todos los derechos sobre las marcas registradas, materiales y trabajo gráfico contenido en las distribuciones de CentOS.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Por supuesto que no muere el proyecto, hay un plan de acción elaborado de mutuo acuerdo para los casos extraordinarios.&lt;br /&gt;&lt;br /&gt;El proyecto es llevado completamente por voluntarios y están conscientes de que requiere un estilo diferente de administración. Han y continúan trabajando para evitar que situaciones como estas ocurran en el futuro.&lt;br /&gt;&lt;br /&gt;Los desarrolladores están completamente comprometidos con el proyecto, por lo que seguiremos viendo actualizaciones sobre las versiones actuales, esperando también, por supuesto, nuevos releases.&lt;br /&gt;&lt;br /&gt;Enhorabuena&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-6946905215984102378?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/6YN-9NNWSR4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/6946905215984102378/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/08/creador-y-colaboradores-de-centos.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/6946905215984102378" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/6946905215984102378" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/6YN-9NNWSR4/creador-y-colaboradores-de-centos.html" title="Creador y colaboradores de CentOS llegan a acuerdo" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/08/creador-y-colaboradores-de-centos.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-5824526972302264513</id><published>2009-07-30T18:34:00.006-05:00</published><updated>2009-08-05T23:25:04.060-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><title type="text">¿Adiós a CentOS?</title><content type="html">&lt;img style="margin: 5px 0px 0px 10px; float: right; width: 200px; height: 100px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SnItK8NxVuI/AAAAAAAAAJo/QJdRx5RKwXI/s320/linux.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5364399772137510626" /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.centos.org/"&gt;CentOS&lt;/a&gt; es una distro Linux -nacida del código fuente del Red Hat Enterprise(RHEL)- el cual cobró fuerza cuando Red Hat comenzó a comercializar su sistema operativo por medio de lincencias de uso y de soporte. CentOS por su parte surge como una alternativa de software libre ofreciendo la calidad y robustes de RHEL sin pagar costosas licencias y pólizas de soporte sosteniéndo el proyecto únicamente a base de donaciones.&lt;br /&gt;&lt;br /&gt;El día de hoy el equipo base de desarrolladores de este proyecto, hizo pública una carta dirigida a su fundador Lance Davis.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;blockquote&gt;Julio 30, 2009 04:39 GMT&lt;br /&gt;&lt;br /&gt;Carta abierta a Lance Davis de los miembros que desarrollan CentOS.&lt;br /&gt;&lt;br /&gt;Es lamentable que nos veamos obligados a escribir esta carta no nos quedó otra opción. De algún tiempo a la fecha hemos tratado de arreglar estos problemas:&lt;br /&gt;&lt;br /&gt;Parece que te arrastraste hacia un agujero ... y no es aceptable.&lt;br /&gt;&lt;br /&gt;Por mucho tiempo diste por hecho que habría fondos para el proyecto CentOS; al día de hoy no hemos visto nada.&lt;br /&gt;&lt;br /&gt;Sólo tú tienes control del dominio 'centos.org' sin nadie más delegado; no es lo apropiado.&lt;br /&gt;&lt;br /&gt;Sólo tú, así parece, eres el único que tiene privilegios de 'Fundador' en los canales de IRC sin nadie más delegado; no es lo apropiado.&lt;br /&gt;&lt;br /&gt;Cuando traté de comunicarme (Russ) a los números telefónicos de Linux UK o a tu número, he escuchado el mensaje 'Líneas temporalmente ocupadas' durante las últimas dos semanas. Finalmente ayer, me respondió una máquina contestadora en la cual te dejé un mensaje solicitando que me regreses la llamada con caracter urgente. Karanbir reportó que también te ha llamado dejándote mensajes sin respuesta.&lt;br /&gt;&lt;br /&gt;Por favor no mates CentOS sólo por el hecho de tener miedo en querer compartir la administración del proyecto.&lt;br /&gt;&lt;br /&gt;Está claro que el proyecto muere si todos los desarrolladores se van.&lt;br /&gt;&lt;br /&gt;Contáctame de favor, o a cualquiera de los demás que firman esta carta para ponernos de acuerdo sobre la información arriba mencionada y mantener vivo el proyecto con el dominio 'centos.org'.&lt;br /&gt;&lt;br /&gt;Firman,&lt;br /&gt;&lt;br /&gt;Russ Herrold&lt;br /&gt;Ralph Angenendt&lt;br /&gt;Karanbir Singh&lt;br /&gt;Jim Perrin&lt;br /&gt;Donavan Nelson&lt;br /&gt;Tim Verhoeven&lt;br /&gt;Tru Huynh&lt;br /&gt;Johnny Hughes&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;CentOS ha sido adoptado por empresas de todos los calibres demostrando su calidad, sería una verdadera pena que por actitudes de esta naturaleza pudiera ver su fin un proyecto tan bueno como este.&lt;br /&gt;&lt;br /&gt;Vía&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/tips/centos-linux-project-in-trouble.html"&gt;CentOS Linux Project In Trouble&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-5824526972302264513?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/0K3oharBIR8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/5824526972302264513/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/07/adios-centos.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/5824526972302264513" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/5824526972302264513" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/0K3oharBIR8/adios-centos.html" title="¿Adiós a CentOS?" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SnItK8NxVuI/AAAAAAAAAJo/QJdRx5RKwXI/s72-c/linux.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/07/adios-centos.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-2961775255745751885</id><published>2009-07-15T16:55:00.011-05:00</published><updated>2009-07-15T18:32:44.996-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title type="text">¿Quien bloqueó mi sesión?</title><content type="html">&lt;img style="float:left; margin:5px 10px 0px 0px;width: 200px; height: 100px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s200/oracle.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5351467101110248818" /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight:bold;"&gt;Recientemente me encontré con el siguiente &lt;a href="http://www.orafaq.com/node/854" target="_blank"&gt;artículo de Natalka Roshak&lt;/a&gt; publicado en orafaq.com que espero les sea de utilidad.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuando un usuario o desarrollador te dice que tiene su sesión bloqueada, —entendiendo por bloqueo la ejecución de una instrucción &lt;a href="http://en.wikipedia.org/wiki/Data_Manipulation_Language"&gt;DML&lt;/a&gt; la cual después de lanzarla deja de responder— sabes cuan útil puede ser identificar no solo quien lo está haciendo, sino también cual objeto es ó mejor aún, puedes identificar el registro exacto que tu sesión está esperando bloquear.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Creando el bloqueo&lt;/h3&gt;Usaré la tabla &lt;span style="font-family:courier new;"&gt;emp&lt;/span&gt; del esquema &lt;span style="font-family:courier new;"&gt;SCOTT&lt;/span&gt;. Abro una sesión de SQL*Plus y configuro los siguiente parámetros&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt; set sqlprompt "SESION1&amp;gt; "&lt;br /&gt;SESION1&amp;gt; set linesize 200&lt;/div&gt;&lt;br /&gt;actualizo todos los registros&lt;br /&gt;&lt;div class="code_block"&gt;SESION1&amp;gt;&amp;nbsp;update&amp;nbsp;emp&lt;br /&gt;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;set&amp;nbsp;sal=1000*1.05;&lt;br /&gt;&lt;br /&gt;14 rows updated.&lt;/div&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;span style="font-weight:bold;"&gt;sin dar commit&lt;/span&gt; abro otra sesión de SQL*Plus actualizo la variable&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt;&amp;nbsp;set&amp;nbsp;sqlprompt&amp;nbsp;"SESION2&amp;gt;&amp;nbsp;"&lt;br /&gt;SESION2&amp;gt;&lt;/div&gt;&lt;br /&gt;y en esta actualizo sólo un registro&lt;br /&gt;&lt;div class="code_block"&gt;SESION2&amp;gt;&amp;nbsp;update&amp;nbsp;emp&lt;br /&gt;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;set&amp;nbsp;sal=1000&lt;br /&gt;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;where&amp;nbsp;empno=7369;&lt;/div&gt;&lt;br /&gt;después de presionar ENTER no regresa de immediato al prompt, he aquí el bloqueo.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Identificando la sesión que está bloqueando&lt;/h3&gt;En una nueva sesión de SQL*Plus revisas el contenido de &lt;span style="font-family:courier new;"&gt;v$lock&lt;/span&gt; que muestra los bloqueos que existen actualmente en la base así como la relación entre quien bloquea a quien aunque no de manera explícita&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt;&amp;nbsp;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;v$lock;&lt;br /&gt;&lt;br /&gt;ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SID&amp;nbsp;TY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID2&amp;nbsp;&amp;nbsp;&amp;nbsp;LMODE&amp;nbsp;&amp;nbsp;&amp;nbsp;REQUEST&amp;nbsp;&amp;nbsp;&amp;nbsp;CTIME&amp;nbsp;&amp;nbsp;&amp;nbsp;BLOCK&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;.......&lt;br /&gt;2887B03C&amp;nbsp;2887B068&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;144&amp;nbsp;TX&amp;nbsp;&amp;nbsp;196639&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3891&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;323&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;0E3CBE90&amp;nbsp;0E3CBEC0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;144&amp;nbsp;TM&amp;nbsp;&amp;nbsp;&amp;nbsp;69948&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;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&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;323&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;0E3CBE90&amp;nbsp;0E3CBEC0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;137&amp;nbsp;TM&amp;nbsp;&amp;nbsp;&amp;nbsp;69948&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;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&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;570&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;27CF5D14&amp;nbsp;27CF5D54&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;137&amp;nbsp;TX&amp;nbsp;&amp;nbsp;196639&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3891&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&amp;nbsp;&amp;nbsp;&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;570&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-weight:bold;"&gt;1&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;observa la última columna &lt;span style="font-family:courier new;"&gt;BLOCK&lt;/span&gt;, si una sesión mantiene un bloqueo que a su vez bloquea a otra verás que &lt;span style="font-family:courier new;"&gt;BLOCK=1&lt;/span&gt;. Llendo más allá, puedes ver cuál sesión es la que está siendo bloqueada comparando &lt;span style="font-family:courier new;"&gt;ID1&lt;/span&gt; e &lt;span style="font-family:courier new;"&gt;ID2&lt;/span&gt;. La sesión bloqueada tendrá los mismos valores en &lt;span style="font-family:courier new;"&gt;ID1&lt;/span&gt; e &lt;span style="font-family:courier new;"&gt;ID2&lt;/span&gt; que la que bloquea, y, ya que está haciendo la petición de bloqueo que no puede obtener, tendrá &lt;span style="font-family:courier new;"&gt;REQUEST&gt;0&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;En el query anterior puedes ver que el SID 137 está bloqueando al SID 144. SID 137 corresponde a SESION1 y SID 144 es SESION2 que está bloqueada.&lt;br /&gt;&lt;br /&gt;Para no hacer la comparación sólo viendo los datos de ese query puedes ejecutar lo siguiente&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt;&amp;nbsp;select&amp;nbsp;l1.sid&amp;nbsp;||&amp;nbsp;'&amp;nbsp;ESTA&amp;nbsp;BLOQUEANDO&amp;nbsp;'&amp;nbsp;||&amp;nbsp;l2.sid&lt;br /&gt;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;from&amp;nbsp;v$lock&amp;nbsp;l1,&amp;nbsp;v$lock&amp;nbsp;l2&lt;br /&gt;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;where&amp;nbsp;l1.block&amp;nbsp;=&amp;nbsp;1&lt;br /&gt;&amp;nbsp;&amp;nbsp;4&amp;nbsp;&amp;nbsp;and&amp;nbsp;l2.request&amp;nbsp;&gt;&amp;nbsp;0&lt;br /&gt;&amp;nbsp;&amp;nbsp;5&amp;nbsp;&amp;nbsp;and&amp;nbsp;l1.id1&amp;nbsp;=&amp;nbsp;l2.id1&lt;br /&gt;&amp;nbsp;&amp;nbsp;6&amp;nbsp;and&amp;nbsp;l1.id2&amp;nbsp;=&amp;nbsp;l2.id2;&lt;br /&gt;&lt;br /&gt;L1.SID||'ESTABLOQUEANDO'||L2.SID&lt;br /&gt;-----------------------------------&lt;br /&gt;137&amp;nbsp;ESTA&amp;nbsp;BLOQUEANDO&amp;nbsp;144&lt;/div&gt;&lt;br /&gt;ó mejor aún, si se incluye la tabla &lt;span style="font-family:courier new;"&gt;v$session&lt;/span&gt; la información es aún más legible&lt;br /&gt;&lt;div class="code_block"&gt;SQL&gt;&amp;nbsp;select&amp;nbsp;s1.username&amp;nbsp;||&amp;nbsp;'@'&amp;nbsp;||&amp;nbsp;s1.machine&lt;br /&gt;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;||&amp;nbsp;'&amp;nbsp;(&amp;nbsp;SID='&amp;nbsp;||&amp;nbsp;s1.sid&amp;nbsp;||&amp;nbsp;'&amp;nbsp;)&amp;nbsp;esta&amp;nbsp;bloqueando&amp;nbsp;'&lt;br /&gt;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;||&amp;nbsp;s2.username&amp;nbsp;||&amp;nbsp;'@'&amp;nbsp;||&amp;nbsp;s2.machine&amp;nbsp;||&amp;nbsp;'&amp;nbsp;(&amp;nbsp;SID='&amp;nbsp;||&amp;nbsp;s2.sid&amp;nbsp;||&amp;nbsp;'&amp;nbsp;)&amp;nbsp;'&amp;nbsp;as&amp;nbsp;estado_bloqueos&lt;br /&gt;&amp;nbsp;&amp;nbsp;4&amp;nbsp;&amp;nbsp;from&amp;nbsp;v$lock&amp;nbsp;l1,&amp;nbsp;v$session&amp;nbsp;s1,&amp;nbsp;v$lock&amp;nbsp;l2,&amp;nbsp;v$session&amp;nbsp;s2&lt;br /&gt;&amp;nbsp;&amp;nbsp;5&amp;nbsp;&amp;nbsp;where&amp;nbsp;s1.sid&amp;nbsp;=&amp;nbsp;l1.sid&lt;br /&gt;&amp;nbsp;&amp;nbsp;6&amp;nbsp;&amp;nbsp;and&amp;nbsp;s2.sid&amp;nbsp;=&amp;nbsp;l2.sid&lt;br /&gt;&amp;nbsp;&amp;nbsp;7&amp;nbsp;&amp;nbsp;and&amp;nbsp;l1.block&amp;nbsp;=&amp;nbsp;1&lt;br /&gt;&amp;nbsp;&amp;nbsp;8&amp;nbsp;&amp;nbsp;and&amp;nbsp;l2.request&amp;nbsp;&gt;&amp;nbsp;0&lt;br /&gt;&amp;nbsp;&amp;nbsp;9&amp;nbsp;&amp;nbsp;and&amp;nbsp;l1.id1&amp;nbsp;=&amp;nbsp;l2.id1&lt;br /&gt;&amp;nbsp;10&amp;nbsp;&amp;nbsp;and&amp;nbsp;l2.id2&amp;nbsp;=&amp;nbsp;l2.id2;&lt;br /&gt;&lt;br /&gt;ESTADO_BLOQUEOS&lt;br /&gt;-------------------------------------------------------------------------------------------&lt;br /&gt;SCOTT@TESTSERVER&amp;nbsp;(&amp;nbsp;SID=137&amp;nbsp;)&amp;nbsp;esta&amp;nbsp;bloqueando&amp;nbsp;SCOTT@TESTSERVER&amp;nbsp;(&amp;nbsp;SID=144&amp;nbsp;)&lt;/div&gt;&lt;br /&gt;Hay aún más información en la tabla &lt;span style="font-family:courier new;"&gt;v$lock&lt;/span&gt;, pero para leerla, es neceario entender un poquito más sobre los tipos de bloqueos y los crípticas columnas &lt;span style="font-family:courier new;"&gt;ID1&lt;/span&gt; e &lt;span style="font-family:courier new;"&gt;ID2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Tipo de bloqueo y las columnas ID1 / ID2&lt;/h3&gt;En este caso el tipo de bloqueo es DML exclusivo ya que fuí yo quien lanzó la instrucción que bloquea. Sin embargo, su puede obtener esta información de &lt;span style="font-family:courier new;"&gt;v$lock&lt;/span&gt; sin tanto esfuerzo.&lt;br /&gt;&lt;br /&gt;Lo primero es ver la columna &lt;span style="font-family:courier new;"&gt;TYPE&lt;/span&gt;. Hay decenas de tipos de bloqueos, sin embargo, la gran mayoría son de sistema. Estos últimos por lo general son muy breves y no ayuda mucho ajustar el library cache, undo logs, etc. si te metes con &lt;span style="font-family:courier new;"&gt;v$lock&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Sólo hay tres tipos de bloqueos de usuario, TX, TM y UL. UL es un bloqueo definido por el usuario —aquel definido con el paquete DBMS_LOCK. TX es un bloqueo de transacción de registros; se obtiene cada vez que hay una transacción para alterar datos, sin importar la cantidad de objetos que intervendrán en esa transacción. Las columnas &lt;span style="font-family:courier new;"&gt;ID1&lt;/span&gt; e &lt;span style="font-family:courier new;"&gt;ID2&lt;/span&gt; apuntan a los segmentos de rollback y a la tabla de entradas de transacciones de esa transacción.&lt;br /&gt;&lt;br /&gt;TM es un bloqueo DML. Se obtiene cada vez que un objeto es alterado. La columna &lt;span style="font-family:courier new;"&gt;ID1&lt;/span&gt; identifica el objeto en cuestión.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Modos de bloqueo&lt;/h3&gt;Se puede ver más información observando los modos de bloqueo TM y TX. Las columnas &lt;span style="font-family:courier new;"&gt;LMODE&lt;/span&gt; y &lt;span style="font-family:courier new;"&gt;REQUEST&lt;/span&gt; usan ambas la misma numeración que los modos de bloqueo, en orden de exclusividad incremental: desde 0 para sin bloqueo, hasta 6 para bloqueo exclusivo. Una sesión debe hacerse de un bloqueo exclusivo TX para que pueda alterar los datos; &lt;span style="font-family:courier new;"&gt;LMODE&lt;/span&gt; será 6. Si no puede obtener el bloqueo exclusivo debido a que algunos de los registros que quiere alterar están bloqueados por otra sesión, entonces hará la petición TX en modo exclusivo; &lt;span style="font-family:courier new;"&gt;LMODE&lt;/span&gt; será 0 ya que no está bloqueando, y &lt;span style="font-family:courier new;"&gt;REQUEST&lt;/span&gt; será 6. Esto se puede observar en el query ejecutado anteriormente&lt;br /&gt;&lt;div class="code_block"&gt;ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SID&amp;nbsp;TY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LMODE&amp;nbsp;&amp;nbsp;REQUEST&amp;nbsp;&amp;nbsp;&amp;nbsp;CTIME&amp;nbsp;&amp;nbsp;&amp;nbsp;BLOCK&lt;br /&gt;--------&amp;nbsp;--------&amp;nbsp;-------&amp;nbsp;--&amp;nbsp;-------&amp;nbsp;-------&amp;nbsp;--------&amp;nbsp;--------&amp;nbsp;-------&amp;nbsp;-------&lt;br /&gt;2887B03C&amp;nbsp;2887B068&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;144&amp;nbsp;TX&amp;nbsp;&amp;nbsp;196639&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3891&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;323&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;27CF5D14&amp;nbsp;27CF5D54&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;137&amp;nbsp;TX&amp;nbsp;&amp;nbsp;196639&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3891&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&amp;nbsp;&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;570&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/div&gt;&lt;br /&gt;Observa en SESION2 que &lt;span style="font-family:courier new;"&gt;ID1&lt;/span&gt; e &lt;span style="font-family:courier new;"&gt;ID2&lt;/span&gt;, la cual está solicitando un bloqueo TX (&lt;span style="font-family:courier new;"&gt;LMODE&lt;/span&gt;=0, &lt;span style="font-family:courier new;"&gt;REQUEST&lt;/span&gt;=6), apunta hacia las entradas de transacciones y rollback de SESION1 que es lo que permite determinar la sesión que bloquea a SESION2.&lt;br /&gt;&lt;br /&gt;Es posible que te encuentres también con bloqueos TX en modo 4 de modo compartido(Shared). Si un bloqueo no encuentra ninguna entrada disponible en la Lista de Transacciones Invocadas(ITL - Interest Transaction List) y tiene registros que va a alterar, entonces la sesión obtiene un bloqueo TX en modo 4 mientras espera por la entrada(ITL). Si notas que hay contención sobre un objeto por bloqueos TX-4, es probable que necesites incrementar su parámetro &lt;span style="font-family:courier new;"&gt;INITRANS&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Los bloqueos TM generalmente son requeridos y adquiridos en modo 3, también llamado registro compartido exclusivo(Shared-Row Exclusive) y modo 6. Las operaciones &lt;a href="http://en.wikipedia.org/wiki/Data_Definition_Language"&gt;DDL&lt;/a&gt; requieren de un bloqueo TM exclusivo. (Nótese que la instrucción CREATE TABLE no requiere de un bloqueo TM —y no lo necesita ya que el objeto en cuestión ¡no existe todavía!) Las operaciones DML requieren de un bloqueo Shared-Row Exclusive. De los registros seleccionados arriba sobre &lt;span style="font-family:courier new;"&gt;v$lock&lt;/span&gt;, puedes ver por lo niveles de bloqueo TM que son de tipo DML&lt;br /&gt;&lt;div class="code_block"&gt;ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SID&amp;nbsp;TY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID2&amp;nbsp;&amp;nbsp;&amp;nbsp;LMODE&amp;nbsp;&amp;nbsp;REQUEST&amp;nbsp;&amp;nbsp;&amp;nbsp;CTIME&amp;nbsp;&amp;nbsp;&amp;nbsp;BLOCK&lt;br /&gt;--------&amp;nbsp;--------&amp;nbsp;-------&amp;nbsp;--&amp;nbsp;--------&amp;nbsp;--------&amp;nbsp;-------&amp;nbsp;--------&amp;nbsp;-------&amp;nbsp;-------&lt;br /&gt;0E3CBE90&amp;nbsp;0E3CBEC0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;144&amp;nbsp;TM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;69948&amp;nbsp;&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;&amp;nbsp;3&amp;nbsp;&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;323&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;0E3CBE90&amp;nbsp;0E3CBEC0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;137&amp;nbsp;TM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;69948&amp;nbsp;&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;&amp;nbsp;3&amp;nbsp;&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;570&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;Encontrando el objeto bloqueado&lt;/h3&gt;Ahora que sabemos que cada registro TM apunta a un objeto bloqueado, se puede usar el campo &lt;span style="font-family:courier new;"&gt;ID1&lt;/span&gt; para identificarlo.&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt;&amp;nbsp;select&amp;nbsp;object_name&amp;nbsp;from&amp;nbsp;dba_objects&amp;nbsp;where&amp;nbsp;object_id=69948;&lt;br /&gt;&lt;br /&gt;OBJECT_NAME&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;EMP&lt;/div&gt;&lt;br /&gt;A veces es suficiente con sólo saber de cuál objeto se trata; sin embargo, su puede ahondar aún más, identificando no solo el objeto, sino también el bloque de datos e incluso el registro exacto por el que espera SESION2.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Encontrando el registro bloqueado&lt;/h3&gt;Esta información se obtiene de &lt;span style="font-family:courier new;"&gt;v$session&lt;/span&gt; mediante la entrada de la sesión bloqueada&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt;&amp;nbsp;select&amp;nbsp;row_wait_obj#,&amp;nbsp;row_wait_file#,&amp;nbsp;row_wait_block#,&amp;nbsp;row_wait_row#&lt;br /&gt;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;from&amp;nbsp;v$session&lt;br /&gt;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;where&amp;nbsp;sid=144;&lt;br /&gt;&lt;br /&gt;ROW_WAIT_OBJ#&amp;nbsp;ROW_WAIT_FILE#&amp;nbsp;ROW_WAIT_BLOCK#&amp;nbsp;ROW_WAIT_ROW#&lt;br /&gt;-------------&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;69948&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;4&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;147&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;0&lt;/div&gt;&lt;br /&gt;esto regresa el ID del objeto, el número relativo de archivo, el bloque en el archivo de datos y el registro en el bloque que está esperando la sesión. Si estos datos te suenan conocidos, es porque estos son los cuatro componentes de un ROWID extendido. Se puede construir el ROWID extendido de dicho registro a partir de estos componentes usando el paquete DBMS_ROWID. La función ROWID_CREATE toma esos datos como argumentos para regresar el ROWID&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt;&amp;nbsp;select&amp;nbsp;do.object_name,&amp;nbsp;row_wait_obj#,&amp;nbsp;row_wait_file#,&amp;nbsp;row_wait_block#,&amp;nbsp;row_wait_row#,&lt;br /&gt;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;dbms_rowid.rowid_create(1,&amp;nbsp;row_wait_obj#,&amp;nbsp;row_wait_file#,&amp;nbsp;row_wait_block#,&amp;nbsp;row_wait_row#)&lt;br /&gt;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;from&amp;nbsp;v$session&amp;nbsp;s,&amp;nbsp;dba_objects&amp;nbsp;do&lt;br /&gt;&amp;nbsp;&amp;nbsp;4&amp;nbsp;&amp;nbsp;where&amp;nbsp;sid&amp;nbsp;=&amp;nbsp;144&lt;br /&gt;&amp;nbsp;&amp;nbsp;5&amp;nbsp;&amp;nbsp;and&amp;nbsp;s.row_wait_obj#&amp;nbsp;=&amp;nbsp;do.object_id;&lt;br /&gt;&lt;br /&gt;OBJECT_NAM&amp;nbsp;ROW_WAIT_OBJ#&amp;nbsp;ROW_WAIT_FILE#&amp;nbsp;ROW_WAIT_BLOCK#&amp;nbsp;ROW_WAIT_ROW#&amp;nbsp;DBMS_ROWID.ROWID_C&lt;br /&gt;----------&amp;nbsp;-------------&amp;nbsp;--------------&amp;nbsp;---------------&amp;nbsp;-------------&amp;nbsp;------------------&lt;br /&gt;EMP&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;69948&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;4&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;147&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;0&amp;nbsp;AAARE8AAEAAAACTAAA&lt;/div&gt;&lt;br /&gt;con el cual podemos inspeccionar directamente el registro&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt;&amp;nbsp;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;scott.emp&amp;nbsp;where&amp;nbsp;rowid='AAARE8AAEAAAACTAAA';&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EMPNO&amp;nbsp;ENAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JOB&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;MGR&amp;nbsp;HIREDATE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SAL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COMM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEPTNO&lt;br /&gt;----------&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;7369&amp;nbsp;SMITH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLERK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7902&amp;nbsp;17-DEC-80&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;800&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Con lo anterior puedes identificar una sesión que está bloqueando y cómo llegar hasta el registro que está esperando la sesión bloqueada.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-2961775255745751885?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/PISWn1vsZQY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/2961775255745751885/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/07/quien-bloquea-mi-intento-de-bloqueo.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2961775255745751885" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2961775255745751885" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/PISWn1vsZQY/quien-bloquea-mi-intento-de-bloqueo.html" title="¿Quien bloqueó mi sesión?" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s72-c/oracle.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/07/quien-bloquea-mi-intento-de-bloqueo.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-2928551693412639025</id><published>2009-07-06T15:25:00.011-05:00</published><updated>2009-07-16T00:59:34.859-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="seguridad" /><title type="text">Qué es una 'fork bomb' y como prevenirla</title><content type="html">&lt;div style="text-align: justify;"&gt;En términos computacionales, 'fork' es la referencia a cuando un proceso(denominado &lt;a href="http://en.wikipedia.org/wiki/Parent_process"&gt;proceso padre&lt;/a&gt;) crea una copia de sí mismo(&lt;a href="http://en.wikipedia.org/wiki/Child_process"&gt;proceso hijo&lt;/a&gt;). En ambientes &lt;a href="http://en.wikipedia.org/wiki/Multithreading"&gt;multihilos&lt;/a&gt; esto significa que el hilo en ejecución(padre) es duplicado(hijo).&lt;br /&gt;&lt;br /&gt;Una &lt;a href="http://en.wikipedia.org/wiki/Fork_(operating_system)"&gt;operación 'fork'&lt;/a&gt; aparta un espacio de memoria para el hijo. Este último, es una copia exacta de todos los segmentos de memoria del proceso padre, y, a pesar de que se trate de una implementación semántica &lt;a href="http://en.wikipedia.org/wiki/Copy-on-write"&gt;copy-on-write&lt;/a&gt;, la memoria física podría no ser asignada(p.e. ambos procesos podrían llegar a compartir los mismos segmentos de memoria física durante algún tiempo). Tanto el proceso padre como el proceso hijo poseen los mismos segmentos de código, pero se ejecutan uno independiente del otro.&lt;br /&gt;&lt;br /&gt;Teniendo una breve idea de lo que significa 'fork' a nivel de sistema operativo, &lt;a href="http://en.wikipedia.org/wiki/Fork_bomb"&gt;'fork bomb'&lt;/a&gt; es un ataque de tipo Denegación de Servicio o &lt;a href="http://en.wikipedia.org/wiki/Denial_of_service"&gt;DoS (Denial of Service)&lt;/a&gt; en inglés, que implementa la operación fork (o una funcionalidad equivalente).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/SlJLAcvdx9I/AAAAAAAAAJQ/Yx9PAQ2Hf0g/s1600-h/fork_bomb.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 197px;" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/SlJLAcvdx9I/AAAAAAAAAJQ/Yx9PAQ2Hf0g/s320/fork_bomb.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5355425377984301010" /&gt;&lt;/a&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Una 'fork bomb' no se trata de un &lt;a href="http://en.wikipedia.org/wiki/Computer_virus"&gt;virus&lt;/a&gt; ya que no infecta otros programas o documentos, tampoco se trata de un &lt;a href="http://en.wikipedia.org/wiki/Computer_worm"&gt;gusano&lt;/a&gt; ya que no usa los recusos de red de la máquina para esparcirse, entra más bien en la categoría de &lt;a href="http://en.wikipedia.org/wiki/Wabbit"&gt;'wabbit'&lt;/a&gt;. El término 'wabbit' se atribuye probablemente a la pronunciación que hace Elmer Gruñón(caricaturas de Bugs Bunny) -en la versión en inglés- queriendo decir 'rabbit', que en español significa conejo y que al igual que los conejos una 'fork bomb' tiene la habilidad de multiplicarse rápidamente y "tumbar"(incapacitar) un sistema que confía en la asunción(generalmente válida) de que los programas y procesos que puede ejecutar simultáneamente tienen un límite.&lt;br /&gt;&lt;br /&gt;Esta crea rápidamente una gran cantidad de procesos con el fin de saturar los espacios disponibles en la lista de procesos que guarda el sistema operativo. Si esta se satura, no podrá ejecutarse otro programa hasta que termine otro proceso y aún si esto sucediera, no es muy probable que este programa se ejecute ya que cada una de las instancias de la bomba tratarán por sí mismas de ocupar cualquier espacio disponible.&lt;br /&gt;&lt;br /&gt;El siguiente código muestra la que podría considerarse una de las 'fork bomb' más elegantes. Presentada por &lt;a href="http://en.wikipedia.org/wiki/Jaromil"&gt;Jaromil&lt;/a&gt; como una pieza de arte de código abierto en 2002. Ejecutas los siguientes 13 caracteres en un shell tipo Unix como bash o zsh.&lt;br /&gt;&lt;div class="code_block"&gt;:(){ :|:&amp; };:&lt;/div&gt;&lt;br /&gt;Lo cual significa&lt;br /&gt;&lt;div class="code_block"&gt;:()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# define ':' -- lo que sea que digamos ':', haz esto:&lt;/span&gt;&lt;br /&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# inicio de lo que dijimos que tiene que hacer ':'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# carga otra copia de la función ':' en memoria...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# ...lo cual será entrada para...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# ...otra copia de la función ':', que tiene que cargarse en memoria&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# (por lo tanto, ':|:' sencillamente carga dos copias de ':' como sea que ':' se llame)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# libera las funciones -- si matan la primera ':', todas las demás que esta inició NO &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;deberían auto-matarse&lt;/span&gt;&lt;br /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# fin de lo que hace ':'&lt;/span&gt;&lt;br /&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# Habiendo definido ':', ahora debería...&lt;/span&gt;&lt;br /&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-style:italic;"&gt;# ...llamar a ':', iniciando una reacción en cadena: cada ':' iniciará dos más.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Dado que ':' es un nombre arbitrario para la función, una versión más entendible sería:&lt;br /&gt;&lt;div class="code_block"&gt;forkbomb(){ forkbomb|forkbomb &amp; };forkbomb&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Otros ejemplos.&lt;/span&gt;&lt;br /&gt;Versión en Windows usando lenguaje batch&lt;br /&gt;&lt;div class="code_block"&gt;%0|%0&lt;/div&gt;&lt;br /&gt;ó un ejemplo que reaccione rápidamente&lt;br /&gt;&lt;div class="code_block"&gt;:s&lt;br /&gt;start %0&lt;br /&gt;%0|%0&lt;br /&gt;goto :s&lt;/div&gt;&lt;br /&gt;un poema en Perl&lt;br /&gt;&lt;div class="code_block"&gt;fork while fork&lt;/div&gt;&lt;br /&gt;en Haskell&lt;br /&gt;&lt;div class="code_block"&gt;import Control.Monad&lt;br /&gt;import System.Posix.Process&lt;br /&gt; &lt;br /&gt;forkBomb = forever $ forkProcess forkBomb&lt;/div&gt;&lt;br /&gt;en Python&lt;br /&gt;&lt;div class="code_block"&gt;import os&lt;br /&gt; &lt;br /&gt;while True:&lt;br /&gt;     os.fork()&lt;/div&gt;&lt;br /&gt;en Ruby&lt;br /&gt;&lt;div class="code_block"&gt;loop { fork }&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Prevención&lt;/h3&gt;Una manera de prevenirlas es limitando el número de procesos que puede manejar un usuario. Cuando un proceso intente crear uno nuevo y el usuario esté al límite de procesos permitidos, este fallará. Los administradores deben configurar este tope lo suficientemente bajo de tal manera que si todos los usuarios lanzan una bomba simultáneamente, queden suficientes recursos para evitar el desastre; lo cual es prácticamente improbable(que todos los usuarios al mismo tiempo lancen una bomba).&lt;br /&gt;&lt;br /&gt;Los sistemas tipo Unix, usualmente tienen un límite de procesos controlado por el comando de shell &lt;span style="font-style:italic;"&gt;ulimit&lt;/span&gt;. Los kernels Linux configuran y respetan la variable &lt;span style="font-weight:bold;"&gt;RLIMIT&lt;/span&gt;(límite de recursos) de un proceso. De igual manera tanto en Linux como en *BSD puedes editar el archivo de configuración de pam_limits: &lt;span style="font-family:courier;"&gt;/etc/security/limits.conf&lt;/span&gt; y agregar la siguiente línea. Sin embargo, verifica que está habilitado ya que no todas las distribuciones de Linux vienen con pam_limits configurado por default.&lt;br /&gt;&lt;div class="code_block"&gt;&amp;lt;os_user&amp;gt; hard nproc 200&lt;/div&gt;&lt;br /&gt;Si no tienes PAM habilitado intenta poniendo la siguiente línea en tu archivo de configuración &lt;span style="font-family:courier;"&gt;/etc/profile.conf&lt;/span&gt;&lt;br /&gt;&lt;div class="code_block"&gt;ulimit -u 200&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Limitar el número de procesos que un proceso puede crear no previene de una 'fork bomb' ya que se quedarán ahí a la espera de crear más y más procesos. Un sistema que distribuya los recursos por cuota compartiendo los recursos del proceso padre podría funcionar, aunque este tipo de sistemas no son muy comunes.&lt;br /&gt;&lt;br /&gt;Fuentes&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Fork_bomb"&gt;Fork bomb&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/tips/linux-limiting-user-process.html"&gt;How to: Prevent a fork bomb by limiting user process&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-2928551693412639025?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/RZo1Oy5UO-I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/2928551693412639025/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/07/que-es-una-fork-bomb-y-como-prevenirla.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2928551693412639025" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2928551693412639025" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/RZo1Oy5UO-I/que-es-una-fork-bomb-y-como-prevenirla.html" title="Qué es una 'fork bomb' y como prevenirla" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_t1WQBJYuFhI/SlJLAcvdx9I/AAAAAAAAAJQ/Yx9PAQ2Hf0g/s72-c/fork_bomb.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/07/que-es-una-fork-bomb-y-como-prevenirla.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-6259263779888356417</id><published>2009-07-02T17:54:00.008-05:00</published><updated>2009-07-07T10:27:42.362-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="Solaris" /><title type="text">De cuando el botón 'Finish' del Oracle Database Configuration Asistant (dbca) en 11g no funciona</title><content type="html">&lt;img style="margin: 5px 0px 0px 10px; float: right; width: 200px; height: 100px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s200/oracle.jpg" alt="" id="BLOGGER_PHOTO_ID_5351467101110248818" border="0" /&gt;&lt;div style="text-align: justify;"&gt;Hace un par de días me pidieron cambiar una base de datos que estaba montada en una lap con Windows XP y 11g a un servidor con Solaris 10 y mismo motor (11g), trabajo para no más de medio día -dije yo-. Pues bien, dejé haciendo un export en la lap y puse a transferir la instalación y parches al servidor. Configuré el ambiente en Solaris, levanté el ambiente X en mi máquina con Cygwin y ejecuté la instalación gráfica(dbca), me tomé mi tiempo para configurar todo lo requerido y cuando finalmente llegué a la última pantalla y presioné el botón 'Finish' me doy cuenta de que no aparece ni hace nada, dudando de si me había hecho falta algo -cosa que no es posible sino no puedes avanzar- me regresé ingénuamente a revisar cada pantalla y todo estaba en orden(como era de esperarse).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/Sk00SixlVNI/AAAAAAAAAJA/PUj7oxmXM34/s1600-h/dbca_p14.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 229px;" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/Sk00SixlVNI/AAAAAAAAAJA/PUj7oxmXM34/s320/dbca_p14.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5353993025190450386" /&gt;&lt;/a&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Cerré el instalador y lo volví a lanzar con la esperanza de que esta vez si funcionara pero no fue así. Lo lancé una tercera vez pero en esta ocasión puse atención a cualquier detalle, pista o mensaje de error, siendo lo siguiente lo primero que observé&lt;br /&gt;&lt;div class="code_block"&gt;$ dbca&lt;br /&gt;Warning: Cannot convert string "-monotype-arial-regular-r-normal--*-140-*-*-p-*-iso8859-1" to type FontStruct&lt;/div&gt;&lt;br /&gt;¿Un aviso no un mensaje de error propiamente podría ser el casusante de dicho comportamiento? Veamos que dice el archivo log &lt;span style="font-family: courier new;"&gt;[ORACLE_BASE]/cfgtoollogs/dbca/&amp;lt;dbname&amp;gt;/trace.log&lt;/span&gt;&lt;br /&gt;&lt;div class="code_block"&gt;[AWT-EventQueue-0] [11:20:29:828] [DBCAWizard.onFinish:1139] m_bFinishClicked: true&lt;br /&gt;[AWT-EventQueue-0] [11:20:30:2] [DBCAWizard.onFinish:1139] m_bFinishClicked: true&lt;br /&gt;[AWT-EventQueue-0] [11:20:35:126] [SQLEngine.done:1958] Done called&lt;/div&gt;&lt;br /&gt;El evento de presionar el botón si aparace ¿Entonces por qué no continua?&lt;br /&gt;&lt;br /&gt;Buscando en Metalink información al respecto encontré la nota &lt;a href="https://metalink2.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&amp;p_id=727290.1"&gt;727290.1&lt;/a&gt; la cual básicamente te dice que el problema está en tu cliente X(Cygwin en mi caso) y te sugieren que intentes con otro cliente X o con VNC.&lt;br /&gt;&lt;br /&gt;¿Cambiar de ambiente X en tu máquina sólo porque un insignificante botón no continua con la creación de la base? No se justifica -creo yo- y por la parte de VNC pues tampoco es opción ya que no soy quien administra el servidor.&lt;br /&gt;&lt;br /&gt;Opción 2, crear la base con el &lt;span style="font-family: courier new;"&gt;dbca&lt;/span&gt; usando el modo "silencioso". Antes de usar la opción 2 es necesario crear un template -para no tener que especificar variable por variable en la línea de comandos- con el mismo &lt;span style="font-family: courier new;"&gt;dbca&lt;/span&gt;. Ejecuta el asistente, configura todo lo necesario y en la última pantalla selecciona la opción "Save as a Database Template" presiona el botón 'Finish' y listo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_t1WQBJYuFhI/Sk03BMPWxZI/AAAAAAAAAJI/azBuYJxyCGg/s1600-h/dbca_p14_temp.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 229px;" src="http://2.bp.blogspot.com/_t1WQBJYuFhI/Sk03BMPWxZI/AAAAAAAAAJI/azBuYJxyCGg/s320/dbca_p14_temp.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5353996025618417042" /&gt;&lt;/a&gt;&lt;br /&gt;Desde línea de comando ejecutas&lt;br /&gt;&lt;div class="code_block"&gt;$ dbca -silent -createDatabase -templateName &lt;b&gt;testdb.dbc&lt;/b&gt; -gdbName testdb -sid testdb -sysPassword syspass -systemPassword systempass -emConfiguration LOCAL -dbsnmpPassword dbsnmppass -sysmanPassword sysmanpass&lt;/div&gt;&lt;br /&gt;el cual sólo te mostrará el porcentaje de avance y los eventos más significativos&lt;br /&gt;&lt;div class="code_block"&gt;Copying database files&lt;br /&gt;DBCA_PROGRESS : 1%&lt;br /&gt;DBCA_PROGRESS : 3%&lt;br /&gt;DBCA_PROGRESS : 11%&lt;br /&gt;DBCA_PROGRESS : 18%&lt;br /&gt;DBCA_PROGRESS : 26%&lt;br /&gt;DBCA_PROGRESS : 37%&lt;br /&gt;Creating and starting Oracle instance&lt;br /&gt;DBCA_PROGRESS : 40%&lt;br /&gt;DBCA_PROGRESS : 45%&lt;br /&gt;DBCA_PROGRESS : 50%&lt;br /&gt;DBCA_PROGRESS : 55%&lt;br /&gt;DBCA_PROGRESS : 56%&lt;br /&gt;DBCA_PROGRESS : 60%&lt;br /&gt;DBCA_PROGRESS : 62%&lt;br /&gt;Completing Database Creation&lt;br /&gt;DBCA_PROGRESS : 66%&lt;br /&gt;DBCA_PROGRESS : 70%&lt;br /&gt;DBCA_PROGRESS : 73%&lt;br /&gt;DBCA_PROGRESS : 77%&lt;br /&gt;DBCA_PROGRESS : 88%&lt;br /&gt;DBCA_PROGRESS : 100%&lt;br /&gt;Database creation complete. For details check the logfiles at:&lt;br /&gt;&amp;nbsp;/opt/oracle/product/cfgtoollogs/dbca/testdb.&lt;br /&gt;Database Information:&lt;br /&gt;Global Database Name:testdb&lt;br /&gt;System Identifier(SID):testdb&lt;br /&gt;&lt;br /&gt;The Database Control URL is https://&amp;lt;SERVER_NAME&amp;gt;:1158/em&lt;br /&gt;&lt;br /&gt;Management Repository has been placed in secure mode wherein Enterprise Manager data will be encrypted.  The encryption key has been placed in the file: /opt/oracle/product/rdbms/11.1.0.7.0/testserver_testdb/sysman/config/emkey.ora. Please ensure this file is backed up as the encrypted data will become unusable if this file is lost.&lt;/div&gt;&lt;br /&gt;Lo anterior se graba en el archivo&lt;br /&gt;&lt;div class="code_block"&gt;$ cat [ORACLE_BASE]/cfgtoollogs/dbca/&amp;lt;DBNAME&amp;gt;/testdb.log&lt;/div&gt;&lt;br /&gt;Listo, base creada y lista para lanzar el import -por la tarde noche- en el servidor con el archivo dmp generado en la lap. Por supuesto que ya no quedó en medio día como lo tenía previsto, pero la experiencia cuenta para próximas ocasiones.&lt;br /&gt;&lt;br /&gt;La nota de Metalink que puse arriba, menciona que este comportamiento puede presentarse también en 10g versiones 10.2.0.1 a 10.2.0.4 y en cualquier plataforma.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-6259263779888356417?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/St-VjBHLmpY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/6259263779888356417/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/07/de-cuando-el-boton-finish-del-oracle.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/6259263779888356417" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/6259263779888356417" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/St-VjBHLmpY/de-cuando-el-boton-finish-del-oracle.html" title="De cuando el botón 'Finish' del Oracle Database Configuration Asistant (dbca) en 11g no funciona" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s72-c/oracle.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/07/de-cuando-el-boton-finish-del-oracle.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-4445999777920387169</id><published>2009-06-23T10:23:00.051-05:00</published><updated>2009-06-25T22:53:00.333-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="Solaris" /><title type="text">Arreglando el error: ORA-27102: out ot memory en Oracle y Solaris 10</title><content type="html">&lt;img style="float:left; margin:5px 10px 0px 0px;width: 200px; height: 100px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s200/oracle.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5351467101110248818" /&gt;&lt;div style="text-align: justify;"&gt;Al cambiar los archivos de una base de datos Oracle en un servidor con Solaris 9 a uno con Solaris 10 y querer levantarla me encontré con el siguiente error&lt;br /&gt;&lt;div style="width:69%; float:right;" class="code_block"&gt;SQL&amp;gt; startup&lt;br /&gt;ORA-27102: out of memory&lt;br /&gt;SVR4 Error: 22: Invalid argument&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;según el mensaje de error el servidor no tiene memoria suficiente, veamos que dice la documentación al respecto&lt;br /&gt;&lt;div class="code_block"&gt;$ oerr ORA 27102&lt;br /&gt;27102, 00000, "out of memory"&lt;br /&gt;// *Cause: Out of memory&lt;br /&gt;// *Action: Consult the trace file for details&lt;/div&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;nada alentador el panorama. Revisemos lo último que se registró en el archivo alert.log&lt;br /&gt;&lt;div class="code_block"&gt;$ cat alert.log&lt;br /&gt;Fri Jun  5 18:19:45 2009&lt;br /&gt;Starting ORACLE instance (normal)&lt;br /&gt;Fri Jun  5 18:19:46 2009&lt;br /&gt;WARNING: EINVAL creating segment of size 0x000000008c400000&lt;br /&gt;fix shm parameters in /etc/system or equivalent&lt;/div&gt;&lt;br /&gt;Oracle está tratando de crear un segmento de memoria compartida de 2G (dependiendo del tamaño de SGA/PGA), pero el sistema operativo respondió con un mensaje de error de argumento no válido (EINVAL). Se muestra además una pequeña pista sobre configurar los parámetros shm en &lt;span style="font-family:courier new;"&gt;/etc/system&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Antes de Solaris 10, se configuraba el parámetro &lt;span style="font-family:courier new;"&gt;shmsys:shminfo_shmmax&lt;/span&gt; en &lt;span style="font-family:courier new;"&gt;/etc/system&lt;/span&gt; con el tamaño máximo de segmento de memoria que puede crearse. El valor por default en Solaris 9 y versiones anteriores es de 8M; mientras que en Solaris 10 o superior es 1/4 de la memoria física. Lo puedes verificar de la siguiente manera:&lt;br /&gt;&lt;div class="code_block"&gt;$ prtconf | grep Mem&lt;br /&gt;Memory size: 2048 Megabytes&lt;br /&gt;$ id -p&lt;br /&gt;uid=110(oracle) gid=201(dba) projid=&lt;b&gt;3&lt;/b&gt;(default)&lt;br /&gt;$ prctl -n project.max-shm-memory -i project &lt;b&gt;3&lt;/b&gt;&lt;br /&gt;project: 3: default&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIVILEGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLAG&amp;nbsp;&amp;nbsp;&amp;nbsp;ACTION&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RECIPIENT&lt;br /&gt;project.max-shm-memory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;privileged&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;479M&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;nbsp;&amp;nbsp;deny&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;&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;-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;16.0EB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max&amp;nbsp;&amp;nbsp;&amp;nbsp;deny&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;&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;-&lt;/div&gt;&lt;br /&gt;He ahí el problema, el sistema está usando el valor por default de 479M para este caso, cuando Oracle está tratando de crear un segmento de memoria (2G) mayor a 479M.&lt;br /&gt;&lt;br /&gt;La solución es configurar el sistema con un tamaño suficientemente grande para que el segmento de memoria compartida sea creado y Oracle pueda levantar la instancia.&lt;br /&gt;&lt;br /&gt;En Solaris 9 y versiones anteriores, esto puede hacerse agregando la siguiente línea en &lt;span style="font-family: courier new;"&gt;/etc/system&lt;/span&gt;, teniendo que reiniciar el sistema para que tome el nuevo valor.&lt;br /&gt;&lt;div class="code_block"&gt;set shminfo_shmmax = 0x000000008c400000&lt;/div&gt;&lt;br /&gt;En Solaris 10 el parámetro &lt;span style="font-family: courier new;"&gt;shminfo_shmmax&lt;/span&gt; es obsoleto y Sun no recomienda configurarlo en &lt;span style="font-family: courier new;"&gt;/etc/system&lt;/span&gt; aún a pesar de que funcione como se espera.&lt;br /&gt;&lt;br /&gt;En Solaris 10 y posterior, este valor puede cambiarse dinámicamente por proyecto con la ayuda de los servicios de control de recursos. Así es como se hace en Solaris 10 y posterior&lt;br /&gt;&lt;div class="code_block"&gt;$ prctl -n project.max-shm-memory -r -v &lt;b&gt;2G&lt;/b&gt; -i project 3&lt;br /&gt;$ prctl -n project.max-shm-memory -i project 3&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIVILEGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VALUE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLAG&amp;nbsp;&amp;nbsp;&amp;nbsp;ACTION&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RECIPIENT&lt;br /&gt;project.max-shm-memory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;privileged&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.0G&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;nbsp;&amp;nbsp;deny&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;&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;-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;system&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;16.0EB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max&amp;nbsp;&amp;nbsp;&amp;nbsp;deny&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;&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;-&lt;/div&gt;&lt;br /&gt;Todos los cambios hechos con el comando &lt;span style="font-family: courier new;"&gt;prctl&lt;/span&gt; se aplican al sistema de manera temporal por lo que se perderán cuando se reinicie. Para hacerlo permanente, crea un proyecto con el comando &lt;span style="font-family: courier new;"&gt;projadd&lt;/span&gt;&lt;br /&gt;&lt;div class="code_block"&gt;$ projadd -p 200 -c 'Oracle config' -U oracle -G dba -K 'project.max-shm-memory=(privileged,2G,deny)' oracle&lt;/div&gt;&lt;br /&gt;Finalmente cerciórate que fue creado con el comando &lt;span style="font-family: courier new;"&gt;projects -l&lt;/span&gt; ó &lt;span style="font-family: courier new;"&gt;cat /etc/project&lt;/span&gt;&lt;br /&gt;&lt;div class="code_block"&gt;$ projects -l&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;oracle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;projid&amp;nbsp;:&amp;nbsp;200&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;comment:&amp;nbsp;"Oracle&amp;nbsp;config"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;users&amp;nbsp;&amp;nbsp;:&amp;nbsp;oracle&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;groups&amp;nbsp;:&amp;nbsp;dba&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attribs:&amp;nbsp;project.max-shm-memory=(priv,2147483648,deny)&lt;br /&gt;$ cat /etc/project&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;oracle:200:Oracle config:oracle:dba:project.max-shm-memory=(priv,2147483648,deny)&lt;/div&gt;&lt;br /&gt;Con estos cambios, Oracle debería arrancar la base de datos de manera normal.&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt;&amp;nbsp;startup&lt;br /&gt;ORACLE&amp;nbsp;instance&amp;nbsp;started.&lt;br /&gt;&lt;br /&gt;Total&amp;nbsp;System&amp;nbsp;Global&amp;nbsp;Area&amp;nbsp;2333054160&amp;nbsp;bytes&lt;br /&gt;Fixed&amp;nbsp;Size&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;&amp;nbsp;&amp;nbsp;734416&amp;nbsp;bytes&lt;br /&gt;Variable&amp;nbsp;Size&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1191182336&amp;nbsp;bytes&lt;br /&gt;Database&amp;nbsp;Buffers&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1073741824&amp;nbsp;bytes&lt;br /&gt;Redo&amp;nbsp;Buffers&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;67395584&amp;nbsp;bytes&lt;br /&gt;Database&amp;nbsp;mounted.&lt;br /&gt;Database&amp;nbsp;opened.&lt;/div&gt;&lt;br /&gt;Otro caso que puede presentar el mismo síntoma es cuando aumentas la SGA en la instancia resultado posiblemente de un tuning el cual si es mayor al segmento de memoria configurada para el sistema, cuando intentes levantar la instancia tendrá este mismo comportamiento.&lt;br /&gt;&lt;br /&gt;Vía&lt;br /&gt;&lt;a href="http://technopark02.blogspot.com/2006/09/solaris-10oracle-fixing-ora-27102-out.html"&gt;Mandalika's scratchpad&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-4445999777920387169?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/VnkqapXfM9U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/4445999777920387169/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/06/arreglando-el-error-ora-27102-out-ot.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/4445999777920387169" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/4445999777920387169" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/VnkqapXfM9U/arreglando-el-error-ora-27102-out-ot.html" title="Arreglando el error: ORA-27102: out ot memory en Oracle y Solaris 10" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ6-aTdpXI/AAAAAAAAAI4/FV-4OuhPSSQ/s72-c/oracle.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/06/arreglando-el-error-ora-27102-out-ot.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-7063855375698461583</id><published>2009-06-22T10:51:00.018-05:00</published><updated>2009-07-07T10:30:07.222-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="seguridad" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="apache" /><title type="text">Autenticación por base de datos en Apache 2.2.x usando mod_dbd, mod_authn_dbd y mod_auth_user en Windows 2003 Server</title><content type="html">&lt;img style="MARGIN: 5px 0px 0px 10px; WIDTH: 200px; FLOAT: right; HEIGHT: 100px;" id="BLOGGER_PHOTO_ID_5351459470255739826" border="0" alt="" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ0CPJ-U7I/AAAAAAAAAIw/L8aTC2TtBwo/s200/apache.jpg" /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;En un post anterior, explico cómo configurar el &lt;a href="http://sartigas.blogspot.com/2009/01/seguridad-bsica-de-apache.html"&gt;acceso a un directorio usando la utilería htpasswd&lt;/a&gt; el cual funciona para pocos usuarios ya que debe hacerse manualmente por cada uno. La autenticación por base de datos ofrece una configuación más flexible, menos laboriosa e ideal para ambientes donde la cantidad de usuarios es elevada.&lt;br /&gt;&lt;br /&gt;Para este ejercicio usaré una base de datos Oracle 11g(11.1.0.7.0) el cual está soportado de acuerdo con la documentación de Apache que viene en el archivo &lt;span style="font-family:courier new;"&gt;[APACHE_HOME]\README-win32.txt&lt;/span&gt;. Es necesario tener instalado el cliente de Oracle y configurar adecuadamente una cadena de conexión(tnsnames) como la de la siguiente imagen&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t1WQBJYuFhI/Sj7-uvoNIgI/AAAAAAAAAIY/h855LucXD3M/s1600-h/net_manager.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 244px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5349993486375264770" border="0" alt="" src="http://4.bp.blogspot.com/_t1WQBJYuFhI/Sj7-uvoNIgI/AAAAAAAAAIY/h855LucXD3M/s320/net_manager.jpg" /&gt;&lt;/a&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;abre una sesión de sqlplus&lt;br /&gt;&lt;div class="code_block"&gt;C:\&amp;gt;sqlplus sys as sysdba&lt;br /&gt;&lt;br /&gt;SQL*Plus: Release 11.1.0.7.0 - Production on Sun Jun 21 23:17:37 2009&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2008, Oracle. All rights reserved.&lt;br /&gt;&lt;br /&gt;Enter password:&lt;br /&gt;&lt;br /&gt;Connected to:&lt;br /&gt;Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production&lt;br /&gt;With the Partitioning, OLAP, Data Mining and Real Application Testing options&lt;br /&gt;&lt;br /&gt;SQL&amp;gt;&lt;/div&gt;&lt;br /&gt;crea un usuario&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt; create user apache identified by test account unlock;&lt;br /&gt;&lt;br /&gt;User created&lt;/div&gt;&lt;br /&gt;asígnale los correspondientes privilegios&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt; grant create session to apache;&lt;br /&gt;&lt;br /&gt;Grant succeeded.&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; grant resource to apache;&lt;br /&gt;&lt;br /&gt;Grant succeeded.&lt;/div&gt;&lt;br /&gt;conéctate con el usuario apache, crea la tabla e inserta un registro que servirá para las pruebas de conexión&lt;br /&gt;&lt;div class="code_block"&gt;SQL&amp;gt; conn apache/test&lt;br /&gt;Connected.&lt;br /&gt;SQL&amp;gt; create table users (&lt;br /&gt;2 username varchar2(10 byte),&lt;br /&gt;3 passwd varchar2(10 byte)&lt;br /&gt;4 );&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; insert into users(username, passwd) values ('sergio', 'test');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; commit;&lt;br /&gt;&lt;br /&gt;Commit complete.&lt;/div&gt;&lt;br /&gt;Actualiza tu archivo de configuración de Apache &lt;span style="font-family:courier new;"&gt;[APACHE_HOME]\conf\httpd.conf&lt;/span&gt; para activar las siguientes líneas&lt;br /&gt;&lt;div class="code_block"&gt;LoadModule authn_dbd_module modules/mod_authn_dbd.so&lt;br /&gt;LoadModule dbd_module modules/mod_dbd.so&lt;/div&gt;&lt;br /&gt;y al final agrega lo siguiente. No olvides crear el directorio &lt;span style="font-family:courier new;"&gt;C:\Apache22\htdocs\private&lt;/span&gt;&lt;br /&gt;&lt;div class="code_block"&gt;# mod_dbd configuration&lt;br /&gt;DBDriver oracle&lt;br /&gt;DBDParams "host=testserver port=1521 user=apache pass=test dbname=testdb"&lt;br /&gt;&lt;br /&gt;DBDMin 4&lt;br /&gt;DBDKeep 8&lt;br /&gt;DBDMax 20&lt;br /&gt;DBDExptime 300&lt;br /&gt;&lt;br /&gt;&amp;lt;Directory "C:/Apache22/htdocs/private"&amp;gt;&lt;br /&gt;# core authentication and mod_auth_basic configuration&lt;br /&gt;# for mod_authn_dbd&lt;br /&gt;AuthType Basic&lt;br /&gt;AuthName "Private directory"&lt;br /&gt;AuthBasicProvider dbd&lt;br /&gt;&lt;br /&gt;# core authorization configuration&lt;br /&gt;Require valid-user&lt;br /&gt;&lt;br /&gt;# mod_authn_dbd SQL query to authenticate a user&lt;br /&gt;AuthDBDUserPWQuery "SELECT passwd FROM users WHERE username = %s"&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/div&gt;&lt;br /&gt;Levanta Apache, pero hazlo desde línea de comandos ya que si lo haces desde la consola no apreciarías algún mensaje de error que pudiera ocurrir.&lt;br /&gt;&lt;div class="code_block"&gt;C:\Apache22\bin&amp;gt;httpd -k start&lt;/div&gt;&lt;br /&gt;si no se muestra ningún mensaje de error no está de más revisar el archivo &lt;span style="font-family:courier new;"&gt;[APACHE_HOME]\logs\error.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y finalmente hacer la prueba de conexión desde un navegador&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t1WQBJYuFhI/Sj8R4ws0uNI/AAAAAAAAAIg/ZqM_-wC98LA/s1600-h/test_user.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 240px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5350014549182691538" border="0" alt="" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/Sj8R4ws0uNI/AAAAAAAAAIg/ZqM_-wC98LA/s320/test_user.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/Sj8SVevYhaI/AAAAAAAAAIo/vk62uCgARZs/s1600-h/test_user2.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 240px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5350015042577794466" border="0" alt="" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/Sj8SVevYhaI/AAAAAAAAAIo/vk62uCgARZs/s320/test_user2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Resolviendo problemas&lt;/span&gt;&lt;br /&gt;P: Aparece el siguiente mensaje cuando trato de levantar Apache:&lt;br /&gt;&lt;div class="code_block"&gt;C:\Apache22\bin&amp;gt;httpd -k start&lt;br /&gt;Syntax error on line 485 of C:/Apache22/conf/httpd.conf:&lt;br /&gt;Invalid command 'DBDriver', perhaps misspelled or defined by a module not included in the server configuration&lt;/div&gt;&lt;br /&gt;R: No has activado en tu archivo &lt;span style="font-family:courier new;"&gt;[APACHE_HOME]\conf\httpd.conf&lt;/span&gt; la línea&lt;br /&gt;&lt;div class="code_block"&gt;LoadModule dbd_module modules/mod_dbd.so&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;P: Aparece el siguiente mensaje cuando trato de levantar Apache:&lt;br /&gt;&lt;div class="code_block"&gt;C:\Apache22\bin&amp;gt;httpd -k start&lt;br /&gt;Syntax error on line 498 of C:/Apache22/conf/httpd.conf:&lt;br /&gt;Unknown Authn provider: dbd&lt;/div&gt;&lt;br /&gt;R: No has activado en tu archivo &lt;span style="font-family:courier new;"&gt;[APACHE_HOME]\conf\httpd.conf&lt;/span&gt; la línea&lt;br /&gt;&lt;div class="code_block"&gt;LoadModule authn_dbd_module modules/mod_authn_dbd.so&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;P: Ya levantó Apache pero no se conecta con la base de datos, reviso el archivo &lt;span style="font-family:courier new;"&gt;[APACHE_HOME]\logs\error.log&lt;/span&gt; y aparece el siguiente error&lt;br /&gt;&lt;div class="code_block"&gt;(20014)Internal error: DBD: Can't connect to oracle&lt;br /&gt;(20014)Internal error: DBD: failed to initialise&lt;/div&gt;&lt;br /&gt;R: El mensaje de error es genérico y sólo te informa lo que sucedió sin ninguna pista de la causa, es aquí donde donde debes revisar lo que hiciste desde el principio para determinar qué sucede y cómo solucionarlo.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Revisa el archivo &lt;span style="font-family:courier new;"&gt;[APACHE_HOME]\README-win32.txt&lt;/span&gt; y verifica que la versión del motor de base de datos que estás usando está soportada por la versión de Apache que instalaste.&lt;/li&gt;&lt;li&gt;Revisa que los parámetros en &lt;span style="font-family:courier new;"&gt;DBDParams&lt;/span&gt; estén correctos. A este respecto, la &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_dbd.html#dbdparams"&gt;documentación de Apache&lt;/a&gt; no es la correcta en cuanto a los de Oracle ya que especifica&lt;br /&gt;&lt;br /&gt;&lt;div class="lbluebox"&gt;Oracle&lt;br /&gt;   user, pass, dbname, server&lt;/div&gt;sin embargo, especificamente "server" no lo reconoce como válido y por lo tanto es necesario usar "host" y "port" en su lugar.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;P: El navegador me pide el usuario y la contraseña pero después de escribirlos me aparece el mensaje de error "Internal Server Error"&lt;br /&gt;&lt;br /&gt;R: Revisa tu archivo &lt;span style="font-family:courier new;"&gt;[APACHE_HOME]\logs\error.log&lt;/span&gt; en busca de detalles específicos. Te puedes encontrar, por ejemplo, con que el query que especificaste en el parámetro &lt;span style="font-family:courier new;"&gt;AuthDBDUserPWQuery&lt;/span&gt; no está correcto&lt;br /&gt;&lt;div class="code_block"&gt;(20014)Internal error: DBD: failed to prepare SQL statements: ORA-00904: "USER_NAME": invalid identifier&lt;br /&gt;(20014)Internal error: DBD: failed to initialise&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Referencia&lt;br /&gt;&lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_authn_dbd.html"&gt;http://httpd.apache.org/docs/2.2/mod/mod_authn_dbd.html&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-7063855375698461583?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/FaXEfiuheso" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/7063855375698461583/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/06/autenticacion-por-base-de-datos-en.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/7063855375698461583" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/7063855375698461583" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/FaXEfiuheso/autenticacion-por-base-de-datos-en.html" title="Autenticación por base de datos en Apache 2.2.x usando mod_dbd, mod_authn_dbd y mod_auth_user en Windows 2003 Server" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ0CPJ-U7I/AAAAAAAAAIw/L8aTC2TtBwo/s72-c/apache.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/06/autenticacion-por-base-de-datos-en.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-3889678623893563964</id><published>2009-06-15T19:25:00.012-05:00</published><updated>2009-06-23T10:44:03.539-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="ssh" /><category scheme="http://www.blogger.com/atom/ns#" term="seguridad" /><title type="text">Instalando SSH en Windows 2003 Server</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Ssh"&gt;SSH&lt;/a&gt; o Secure Shell, es un protocolo de red que permite el intercambio de información usando un canal seguro entre el cliente y el servidor. SSH se usa comunmente para accesar de manera remota y ejecutar comandos, sin embargo, permite también crear túneles, rutear puertos TCP y conexiones X11, además de poder transferir archivos usando los protocolos &lt;a href="http://en.wikipedia.org/wiki/SSH_file_transfer_protocol"&gt;SFTP&lt;/a&gt; y &lt;a href="http://en.wikipedia.org/wiki/Secure_copy"&gt;SCP&lt;/a&gt;. Usado principalmente en sistemas Unix y Linux, SSH fue diseñado como reemplazo de Telnet y otros shells remotos no confiables los cuales transfieren información -como contraseñas- en texto plano pudiendo ser interceptados por una tercera persona.&lt;br /&gt;&lt;br /&gt;Aquí trataré de explicar como instalar este servicio en Windows 2003 Server usando Cygwin y OpenSSH.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Primero, te descargas el instalador de Cygwin:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbI_jC5RWI/AAAAAAAAAGg/omElcCb0OQo/s1600-h/desc_cygwin_exe.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 224px; height: 182px;" src="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbI_jC5RWI/AAAAAAAAAGg/omElcCb0OQo/s320/desc_cygwin_exe.jpg" alt="" id="BLOGGER_PHOTO_ID_5347682601613739362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;lo ejecutas y sigues el asistente para descargar OpenSSH junto con las utilerías necesarias, ajustando por supuesto los parámetros que consideres necesario&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t1WQBJYuFhI/SjbJl3cVIGI/AAAAAAAAAGo/JqP3OJkI8ew/s1600-h/welcome_cyg.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SjbJl3cVIGI/AAAAAAAAAGo/JqP3OJkI8ew/s320/welcome_cyg.jpg" alt="" id="BLOGGER_PHOTO_ID_5347683259924160610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_t1WQBJYuFhI/SjbKXEIZ9iI/AAAAAAAAAGw/tVr6udtOI34/s1600-h/down_source.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://2.bp.blogspot.com/_t1WQBJYuFhI/SjbKXEIZ9iI/AAAAAAAAAGw/tVr6udtOI34/s320/down_source.jpg" alt="" id="BLOGGER_PHOTO_ID_5347684105143842338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t1WQBJYuFhI/SjbLFfVPI0I/AAAAAAAAAG4/y8l8VngMosw/s1600-h/install_dir.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SjbLFfVPI0I/AAAAAAAAAG4/y8l8VngMosw/s320/install_dir.jpg" alt="" id="BLOGGER_PHOTO_ID_5347684902719398722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/SjbL0Ei2s6I/AAAAAAAAAHA/6t90fuRCyuE/s1600-h/local_pack_dir.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/SjbL0Ei2s6I/AAAAAAAAAHA/6t90fuRCyuE/s320/local_pack_dir.jpg" alt="" id="BLOGGER_PHOTO_ID_5347685702982611874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbMNLGbWpI/AAAAAAAAAHI/PMPojHfikLA/s1600-h/intern_conn.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbMNLGbWpI/AAAAAAAAAHI/PMPojHfikLA/s320/intern_conn.jpg" alt="" id="BLOGGER_PHOTO_ID_5347686134239156882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t1WQBJYuFhI/SjbND9w5o_I/AAAAAAAAAHQ/Crlh4NE9dt8/s1600-h/down_site.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SjbND9w5o_I/AAAAAAAAAHQ/Crlh4NE9dt8/s320/down_site.jpg" alt="" id="BLOGGER_PHOTO_ID_5347687075552011250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbQeF2rHJI/AAAAAAAAAHY/2hnGcbqbW1s/s1600-h/sel_pack.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbQeF2rHJI/AAAAAAAAAHY/2hnGcbqbW1s/s320/sel_pack.jpg" alt="" id="BLOGGER_PHOTO_ID_5347690822935190674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_t1WQBJYuFhI/SjbShT0kWgI/AAAAAAAAAHg/gvlINjKvcN4/s1600-h/sel_pack2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://2.bp.blogspot.com/_t1WQBJYuFhI/SjbShT0kWgI/AAAAAAAAAHg/gvlINjKvcN4/s320/sel_pack2.jpg" alt="" id="BLOGGER_PHOTO_ID_5347693077247318530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbTXTUaF3I/AAAAAAAAAHo/8oiDKFF-DHc/s1600-h/sel_pack3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbTXTUaF3I/AAAAAAAAAHo/8oiDKFF-DHc/s320/sel_pack3.jpg" alt="" id="BLOGGER_PHOTO_ID_5347694004825364338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/SjbT30LfcpI/AAAAAAAAAHw/socYlbsYqbg/s1600-h/progress.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/SjbT30LfcpI/AAAAAAAAAHw/socYlbsYqbg/s320/progress.jpg" alt="" id="BLOGGER_PHOTO_ID_5347694563402150546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t1WQBJYuFhI/SjbUdPMcUDI/AAAAAAAAAH4/fL4VNQN6gmg/s1600-h/progress2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SjbUdPMcUDI/AAAAAAAAAH4/fL4VNQN6gmg/s320/progress2.jpg" alt="" id="BLOGGER_PHOTO_ID_5347695206309056562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbU1rTxWsI/AAAAAAAAAIA/yg-qv3_FUE0/s1600-h/crea_icons.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbU1rTxWsI/AAAAAAAAAIA/yg-qv3_FUE0/s320/crea_icons.jpg" alt="" id="BLOGGER_PHOTO_ID_5347695626172848834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Edita el archivo c:\cygwin\Cygwin.bat y añade lo siguiente&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/SjbXN7Oz0iI/AAAAAAAAAII/wnedy8rU0NU/s1600-h/edit_bat.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 146px;" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/SjbXN7Oz0iI/AAAAAAAAAII/wnedy8rU0NU/s320/edit_bat.jpg" alt="" id="BLOGGER_PHOTO_ID_5347698241787122210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Abre una sesión de Cygwin -doble click al ícono creado en tu escritorio de Windows- ó desde una sesión de línea de comandos de Windows (&lt;span style="font-family:courier new;"&gt;cmd&lt;/span&gt;) ejecuta el archivo &lt;span style="font-family:courier new;"&gt;c:\cygwin\Cygwin.bat&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t1WQBJYuFhI/Sjbaf6JZ5LI/AAAAAAAAAIQ/GXyXoPbU5xk/s1600-h/open_session.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 158px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/Sjbaf6JZ5LI/AAAAAAAAAIQ/GXyXoPbU5xk/s320/open_session.jpg" alt="" id="BLOGGER_PHOTO_ID_5347701849268544690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ejecuta el siguiente comando para cambiar el prefijo de montaje de "/cygdrive" a "/". Cierras esta sesión y abres una nueva para resetear la variable de ambiente PATH.&lt;br /&gt;&lt;div class="code_block"&gt;$ mount -s --change-cygdrive-prefix /&lt;/div&gt;&lt;br /&gt;crea el archivo de usuarios&lt;br /&gt;&lt;div class="code_block"&gt;$ mkpasswd -l &gt; /etc/passwd&lt;/div&gt;&lt;br /&gt;el archivo de grupos&lt;br /&gt;&lt;div class="code_block"&gt;$ mkgroup -l &gt; /etc/group&lt;/div&gt;&lt;br /&gt;asigna privilegio de lectura sobre ambos&lt;br /&gt;&lt;div class="code_block"&gt;$ chmod +r /etc/passwd&lt;br /&gt;$ chmod +r /etc/group&lt;/div&gt;&lt;br /&gt;asigna los siguientes privilegios sobre el directorio /var&lt;br /&gt;&lt;div class="code_block"&gt;$ chmod 755 /var&lt;/div&gt;&lt;br /&gt;si no existe el directorio /home es recomendable que lo crees ya que ahí se guardarán los archivos de los usuarios, la ubicación por default es el directorio "Documents and Settings". Al crear el directorio /home usando la opción -p hará que cuando se cree un usuario su directorio de trabajo estará dentro del directorio c:\cygwin.&lt;br /&gt;&lt;div class="code_block"&gt;$ mkdir -p /home&lt;br /&gt;$ mkdir /home/Administrator&lt;br /&gt;$ cd&lt;/div&gt;&lt;br /&gt;Hasta aquí tienes configurado tu ambiente, lo siguiente es instalar el servicio de ssh ejecutando el comando &lt;span style="font-family: courier new;"&gt;ssh-host-config&lt;/span&gt; el cual genera los archivos llave de ssh del host dentro de /etc. Nota que se crean dos usuarios, uno llamado sshd para manejar la separación de privilegios y otro llamado sshd_server requerido por Windows 2003 para correr el servicio y proveer de autenticación por llave pública. Tu salida debe ser algo parecida a esta&lt;br /&gt;&lt;div class="code_block"&gt;$ &lt;b&gt;ssh-host-config&lt;/b&gt;&lt;br /&gt;*** Info: Generating /etc/ssh_host_key&lt;br /&gt;*** Info: Generating /etc/ssh_host_rsa_key&lt;br /&gt;*** Info: Generating /etc/ssh_host_dsa_key&lt;br /&gt;*** Info: Creating default /etc/ssh_config file&lt;br /&gt;*** Info: Creating default /etc/sshd_config file&lt;br /&gt;*** Info: Privilege separation is set to yes by default since OpenSSH 3.3.&lt;br /&gt;*** Info: However, this requires a non-privileged account called 'sshd'.&lt;br /&gt;*** Info: For more info on privilege separation read /usr/share/doc/openssh/README.privsep.&lt;br /&gt;*** Query: Should privilege separation be used? (yes/no) &lt;b&gt;yes&lt;/b&gt;&lt;br /&gt;*** Info: Note that creating a new user requires that the current account have&lt;br /&gt;*** Info: Administrator privileges.  Should this script attempt to create a&lt;br /&gt;*** Query: new local account 'sshd'? (yes/no) &lt;b&gt;yes&lt;/b&gt;&lt;br /&gt;*** Info: Updating /etc/sshd_config file&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*** Warning: The following functions require administrator privileges!&lt;br /&gt;&lt;br /&gt;*** Query: Do you want to install sshd as a service?&lt;br /&gt;*** Query: (Say "no" if it is already installed as a service) (yes/no) &lt;b&gt;yes&lt;/b&gt;&lt;br /&gt;*** Info: Note that the CYGWIN variable must contain at least "ntsec"&lt;br /&gt;*** Info: for sshd to be able to change user context without password.&lt;br /&gt;*** Query: Enter the value of CYGWIN for the daemon: [ntsec] &lt;b&gt;ntsec&lt;/b&gt;&lt;br /&gt;*** Info: On Windows Server 2003, Windows Vista, and above, the&lt;br /&gt;*** Info: SYSTEM account cannot setuid to other users -- a capability&lt;br /&gt;*** Info: sshd requires.  You need to have or to create a privileged&lt;br /&gt;*** Info: account.  This script will help you do so.&lt;br /&gt;&lt;br /&gt;*** Info: You appear to be running Windows 2003 Server or later.  On 2003&lt;br /&gt;*** Info: and later systems, it's not possible to use the LocalSystem&lt;br /&gt;*** Info: account for services that can change the user id without an&lt;br /&gt;*** Info: explicit password (such as passwordless logins [e.g. public key&lt;br /&gt;*** Info: authentication] via sshd).&lt;br /&gt;&lt;br /&gt;*** Info: If you want to enable that functionality, it's required to create&lt;br /&gt;*** Info: a new account with special privileges (unless a similar account&lt;br /&gt;*** Info: already exists). This account is then used to run these special&lt;br /&gt;*** Info: servers.&lt;br /&gt;&lt;br /&gt;*** Info: Note that creating a new user requires that the current account&lt;br /&gt;*** Info: have Administrator privileges itself.&lt;br /&gt;&lt;br /&gt;*** Info: No privileged account could be found.&lt;br /&gt;&lt;br /&gt;*** Info: This script plans to use 'cyg_server'.&lt;br /&gt;*** Info: 'cyg_server' will only be used by registered services.&lt;br /&gt;*** Query: Do you want to use a different name? (yes/no) &lt;b&gt;yes&lt;/b&gt;&lt;br /&gt;*** Query: Enter the new user name: &lt;b&gt;sshd_server&lt;/b&gt;&lt;br /&gt;*** Query: Reenter: &lt;b&gt;sshd_server&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;*** Query: Create new privileged user account 'sshd_server'? (yes/no) &lt;b&gt;yes&lt;/b&gt;&lt;br /&gt;*** Info: Please enter a password for new user sshd_server.  Please be sure&lt;br /&gt;*** Info: that this password matches the password rules given on your system.&lt;br /&gt;*** Info: Entering no password will exit the configuration.&lt;br /&gt;*** Query: Please enter the password:&lt;br /&gt;*** Query: Reenter:&lt;br /&gt;&lt;br /&gt;*** Info: User 'sshd_server' has been created with password 'welcome'.&lt;br /&gt;*** Info: If you change the password, please remember also to change the&lt;br /&gt;*** Info: password for the installed services which use (or will soon use)&lt;br /&gt;*** Info: the 'sshd_server' account.&lt;br /&gt;&lt;br /&gt;*** Info: Also keep in mind that the user 'sshd_server' needs read permissions&lt;br /&gt;*** Info: on all users' relevant files for the services running as 'sshd_server'&lt;br /&gt;.&lt;br /&gt;*** Info: In particular, for the sshd server all users' .ssh/authorized_keys&lt;br /&gt;*** Info: files must have appropriate permissions to allow public key&lt;br /&gt;*** Info: authentication. (Re-)running ssh-user-config for each user will set&lt;br /&gt;*** Info: these permissions corrently. [Similary restrictions apply, for&lt;br /&gt;*** Info: instance, for .rhosts files if the rshd server is running, etc].&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*** Info: The sshd service has been installed under the 'sshd_server'&lt;br /&gt;*** Info: account.  To start the service now, call `net start sshd' or&lt;br /&gt;*** Info: `cygrunsrv -S sshd'.  Otherwise, it will start automatically&lt;br /&gt;*** Info: after the next reboot.&lt;br /&gt;&lt;br /&gt;*** Info: Host configuration finished. Have fun!&lt;/div&gt;&lt;br /&gt;para levantarlo desde línea de comando ejecutas&lt;br /&gt;&lt;div class="code_block"&gt;$ net start sshd&lt;/div&gt;&lt;br /&gt;ó&lt;br /&gt;&lt;div class="code_block"&gt;$ cygrunsrv -S sshd&lt;/div&gt;&lt;br /&gt;o desde "Control Panel -&gt; Administrative Tools -&gt; Services" el servicio llamado "CYGWIN sshd".&lt;br /&gt;&lt;br /&gt;Nunca está de más una prueba antes de avisar que ya lo configuraste. La salida debería parecerse a la siguiente:&lt;br /&gt;&lt;div class="code_block"&gt;$ &lt;b&gt;ssh -v localhost&lt;/b&gt;&lt;br /&gt;OpenSSH_5.1p1, OpenSSL 0.9.8k 25 Mar 2009&lt;br /&gt;debug1: Reading configuration data /etc/ssh_config&lt;br /&gt;debug1: Connecting to localhost [127.0.0.1] port 22.&lt;br /&gt;debug1: Connection established.&lt;br /&gt;debug1: identity file /home/Administrator/.ssh/identity type -1&lt;br /&gt;debug1: identity file /home/Administrator/.ssh/id_rsa type -1&lt;br /&gt;debug1: identity file /home/Administrator/.ssh/id_dsa type -1&lt;br /&gt;debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1&lt;br /&gt;debug1: match: OpenSSH_5.1 pat OpenSSH*&lt;br /&gt;debug1: Enabling compatibility mode for protocol 2.0&lt;br /&gt;debug1: Local version string SSH-2.0-OpenSSH_5.1&lt;br /&gt;debug1: SSH2_MSG_KEXINIT sent&lt;br /&gt;debug1: SSH2_MSG_KEXINIT received&lt;br /&gt;debug1: kex: server-&gt;client aes128-cbc hmac-md5 none&lt;br /&gt;debug1: kex: client-&gt;server aes128-cbc hmac-md5 none&lt;br /&gt;debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024&lt;1024&lt;8192)&lt;br /&gt;Warning: Permanently added 'localhost' (RSA) to the list of known hosts.&lt;br /&gt;debug1: ssh_rsa_verify: signature correct&lt;br /&gt;debug1: SSH2_MSG_NEWKEYS sent&lt;br /&gt;debug1: expecting SSH2_MSG_NEWKEYS&lt;br /&gt;debug1: SSH2_MSG_NEWKEYS received&lt;br /&gt;debug1: SSH2_MSG_SERVICE_REQUEST sent&lt;br /&gt;debug1: SSH2_MSG_SERVICE_ACCEPT received&lt;br /&gt;debug1: Authentications that can continue: publickey,password,keyboard-interacti&lt;br /&gt;ve&lt;br /&gt;debug1: Next authentication method: publickey&lt;br /&gt;debug1: Trying private key: /home/Administrator/.ssh/identity&lt;br /&gt;debug1: Trying private key: /home/Administrator/.ssh/id_rsa&lt;br /&gt;debug1: Trying private key: /home/Administrator/.ssh/id_dsa&lt;br /&gt;debug1: Next authentication method: keyboard-interactive&lt;br /&gt;debug1: Authentications that can continue: publickey,password,keyboard-interacti&lt;br /&gt;ve&lt;br /&gt;debug1: Next authentication method: password&lt;br /&gt;Administrator@localhost's password:&lt;br /&gt;debug1: Authentication succeeded (password).&lt;br /&gt;debug1: channel 0: new [client-session]&lt;br /&gt;debug1: Requesting no-more-sessions@openssh.com&lt;br /&gt;debug1: Entering interactive session.&lt;br /&gt;&lt;br /&gt;Administrator@testserver ~&lt;br /&gt;$&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Fuente&lt;br /&gt;&lt;a href="http://ist.uwaterloo.ca/~kscully/CygwinSSHD_W2K3.html"&gt;http://ist.uwaterloo.ca/~kscully/CygwinSSHD_W2K3.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fuente con tips de solución a problemas en XP&lt;br /&gt;&lt;a href="http://pigtail.net/LRP/printsrv/cygwin-sshd.html"&gt;http://pigtail.net/LRP/printsrv/cygwin-sshd.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-3889678623893563964?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/JFiZD_JHwJQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/3889678623893563964/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/06/instalando-ssh-en-windows-2003-server.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/3889678623893563964" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/3889678623893563964" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/JFiZD_JHwJQ/instalando-ssh-en-windows-2003-server.html" title="Instalando SSH en Windows 2003 Server" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_t1WQBJYuFhI/SjbI_jC5RWI/AAAAAAAAAGg/omElcCb0OQo/s72-c/desc_cygwin_exe.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/06/instalando-ssh-en-windows-2003-server.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-5099107656481721423</id><published>2009-06-12T10:06:00.012-05:00</published><updated>2009-06-25T22:54:57.953-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="apache" /><title type="text">Sobre binarios de Apache 1.3.x</title><content type="html">&lt;img style="MARGIN: 5px 10px 0px 0px; WIDTH: 200px; FLOAT: left; HEIGHT: 100px;" id="BLOGGER_PHOTO_ID_5351459470255739826" border="0" alt="" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ0CPJ-U7I/AAAAAAAAAIw/L8aTC2TtBwo/s200/apache.jpg" /&gt;&lt;div style="text-align: justify;"&gt;Los binarios aquí presentados son para fines educativos, de ninguna manera deben ser usados en servidores productivos. Se ofrecen COMO SON. El administrador no se responsabiliza por ningún daño que pueda causar en tu máquina el uso de este software el cual ha sido probado antes de estar disponible para su descarga.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/243546204/Apache_1.3.41-mod_ssl_2.8.31-OpenSSL_0.9.8k-Win32.zip"&gt;Apache_1.3.41-mod_ssl_2.8.31-OpenSSL_0.9.8k-Win32.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: line-through;"&gt;Apache_1.3.41-mod_ssl_2.8.31-OpenSSL_0.9.8j-Win32.zip&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Última actualización: 12-Jun-2009&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-5099107656481721423?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/7HWVlm4NjXg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/5099107656481721423/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/06/sobre-binarios-de-apache-13x.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/5099107656481721423" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/5099107656481721423" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/7HWVlm4NjXg/sobre-binarios-de-apache-13x.html" title="Sobre binarios de Apache 1.3.x" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ0CPJ-U7I/AAAAAAAAAIw/L8aTC2TtBwo/s72-c/apache.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/06/sobre-binarios-de-apache-13x.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-9126157887157690103</id><published>2009-01-18T12:56:00.009-06:00</published><updated>2009-06-25T22:55:10.545-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="seguridad" /><category scheme="http://www.blogger.com/atom/ns#" term="apache" /><title type="text">Seguridad básica de Apache htpasswd/htaccess en Win32</title><content type="html">&lt;img style="MARGIN: 5px 0px 0px 10px; WIDTH: 200px; FLOAT: right; HEIGHT: 100px;" id="BLOGGER_PHOTO_ID_5351459470255739826" border="0" alt="" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ0CPJ-U7I/AAAAAAAAAIw/L8aTC2TtBwo/s200/apache.jpg" /&gt;&lt;div style="text-align: justify;"&gt;El servidor web Apache cuenta con un esquema de seguridad sencillo pero eficiente para establecer autenticación sobre directorios en los que se desea restringir el acceso mediante un usuario y contraseña. Este procedimiento funciona para Apache 1.3.x, del cual puedes descargarte la última versión &lt;a href="http://archive.apache.org/dist/httpd/binaries/win32/"&gt;aquí&lt;/a&gt; o descargarte el paquete de archivos ejecutables que hice a partir de los fuentes de Apache, mod_ssl y OpenSSL de &lt;a href="http://sartigas.blogspot.com/2009/06/sobre-binarios-de-apache-13x.html"&gt;aquí&lt;/a&gt; el cual sólo descomprimes y corres. Para efectos de este tutorial utilizaré este último.&lt;br /&gt;&lt;br /&gt;Abre una sesión de línea de comandos y desplázate al directorio &lt;code&gt;[APACHE_HOME]\bin&lt;/code&gt; que es donde encontrarás el archivo &lt;code&gt;htpasswd.exe&lt;/code&gt;, ejecuta la instrucción:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;htpasswd -c apache.usr estergios&lt;/code&gt;&lt;br /&gt;Escribes la contraseña para el usuario estergios y la confirmas reescribiéndola nuevamente.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t1WQBJYuFhI/SXNy8tNBU1I/AAAAAAAAAEo/vLywbHOGPLo/s1600-h/htpasswd1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 198px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SXNy8tNBU1I/AAAAAAAAAEo/vLywbHOGPLo/s400/htpasswd1.png" alt="" id="BLOGGER_PHOTO_ID_5292700374342390610" border="0" /&gt;&lt;/a&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Puedes verificar el contenido del archivo con el comando &lt;code&gt;type apache.usr&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t1WQBJYuFhI/SXNzMB3Kh8I/AAAAAAAAAEw/q8fc4hKmRq0/s1600-h/htpasswd2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 198px;" src="http://4.bp.blogspot.com/_t1WQBJYuFhI/SXNzMB3Kh8I/AAAAAAAAAEw/q8fc4hKmRq0/s400/htpasswd2.png" alt="" id="BLOGGER_PHOTO_ID_5292700637585901506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Si necesitas agregar más de un usuario ejecuta la instrucción:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;htpasswd -b apache.usr invitado invitado&lt;/code&gt;&lt;br /&gt;después de la opción &lt;code&gt;-b&lt;/code&gt; va el nombre del archivo de usuarios previamente creado seguido del usuario y por último la contraseña, en el caso del ejemplo el usuario y contraseña son iguales.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t1WQBJYuFhI/SXNzX3TbvqI/AAAAAAAAAE4/najnF-v4efk/s1600-h/htpasswd3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 198px;" src="http://4.bp.blogspot.com/_t1WQBJYuFhI/SXNzX3TbvqI/AAAAAAAAAE4/najnF-v4efk/s400/htpasswd3.png" alt="" id="BLOGGER_PHOTO_ID_5292700840910110370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Poniéndole atención al archivo apache.usr podrás observar, hasta este momento, un par de líneas de caracteres de las cuales sólo se distinguen del lado izquierdo los nombres de usuarios. El resto pertenece a la contraseña la cual &lt;code&gt;htpasswd.exe&lt;/code&gt; en automático encripta usando el algoritmo &lt;a href="http://es.wikipedia.org/wiki/MD5"&gt;MD5&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Una vez creado el archivo de usuarios, el siguiente paso es configurar el archivo &lt;code&gt;[APACHE_HOME]\conf\httpd.conf&lt;/code&gt;. Verifica que la directiva &lt;code&gt;AccessFileName&lt;/code&gt; exista o no esté comentada(#).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#&lt;br /&gt;# AccessFileName: The name of the file to look for in each directory&lt;br /&gt;# for access control information.&lt;br /&gt;#&lt;br /&gt;AccessFileName .htaccess&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Lo que hace es establecer el nombre del archivo donde Apache buscará los accesos sobre el directorio. Ahora bien, cada directorio que deseas restringir debe tener un archivo &lt;code&gt;.htaccess&lt;/code&gt;. Un ejemplo sencillo sería restringir el acceso al directorio &lt;code&gt;c:\aplicacion&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Dentro del directorio &lt;code&gt;c:\aplicacion&lt;/code&gt; crearé un archivo &lt;code&gt;.htaccess&lt;/code&gt; con directivas específicas para el contexto llamado &lt;code&gt;mod_auth&lt;/code&gt;. Más información en &lt;a href="http://httpd.apache.org/docs/mod/mod_auth.html"&gt;http://httpd.apache.org/docs/mod/mod_auth.html&lt;/a&gt; y &lt;a href="http://httpd.apache.org/docs/mod/core.html#authname"&gt;http://httpd.apache.org/docs/mod/core.html#authname&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/SXN1CkibFyI/AAAAAAAAAFA/AFmz2iwA_vM/s1600-h/htpasswd4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 198px;" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/SXN1CkibFyI/AAAAAAAAAFA/AFmz2iwA_vM/s400/htpasswd4.png" alt="" id="BLOGGER_PHOTO_ID_5292702674118711074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Las directivas del archivo &lt;code&gt;.htaccess&lt;/code&gt; son:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;AuthName "Mi Aplicación"&lt;br /&gt;AuthType Basic&lt;br /&gt;AuthUserFile C:\Apache\bin\apache.usr&lt;br /&gt;require user estergios invitado&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;En la tercera directiva especificas la ruta del archivo de usuarios que creaste y en la última línea especificas a quienes les permitirás el acceso. Hasta este momento Apache tiene información suficiente de los usuarios, no así del directorio, ya que si desde tu navegador intentas ver el directorio, se mostrará sin mayor contratiempo.&lt;br /&gt;&lt;br /&gt;El siguiente paso es configurar en Apache el directorio cómo restringido, abre tu archivo &lt;code&gt;[APACHE_HOME]\conf\httpd.conf&lt;/code&gt; y busca:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Control access to UserDir directories. The following is an example&lt;br /&gt;# for a site where these directories are restricted to read-only.&lt;br /&gt;#&lt;br /&gt;#&amp;#60;directory "/Apache/users"&amp;#62;&lt;br /&gt;# AllowOverride FileInfo AuthConfig Limit&lt;br /&gt;# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec&lt;br /&gt;# &amp;#60;Limit GET POST OPTIONS PROPFIND&amp;#62;&lt;br /&gt;#  Order allow,deny&lt;br /&gt;#  Allow from all&lt;br /&gt;# &amp;#60;/limit&amp;#62;&lt;br /&gt;# &amp;#60;limitexcept GET POST OPTIONS PROPFIND&amp;#62;&lt;br /&gt;#  Order deny,allow&lt;br /&gt;#  Deny from all&lt;br /&gt;# &amp;#60;/limitexcept&amp;#62;&lt;br /&gt;#&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Quita los comentarios(#) que van de la directiva &amp;#60;directory&amp;#62; hasta &amp;#60;/directory&amp;#62;, cambia la ruta &lt;code&gt;"/Apache/users"&lt;/code&gt; por &lt;code&gt;"c:/aplicacion"&lt;/code&gt; que es la ruta donde se encuentra el archivo &lt;code&gt;.htaccess&lt;/code&gt;, es decir, el directorio restringido el cual quedaría como:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# Control access to UserDir directories. The following is an example&lt;br /&gt;# for a site where these directories are restricted to read-only.&lt;br /&gt;#&lt;br /&gt;&amp;#60;directory "c:/aplicacion"&amp;#62;&lt;br /&gt; AllowOverride FileInfo AuthConfig Limit&lt;br /&gt; Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec&lt;br /&gt; &amp;#60;limit GET POST OPTIONS PROPFIND&amp;#62;&lt;br /&gt;  Order allow,deny&lt;br /&gt;  Allow from all&lt;br /&gt; &amp;#60;/limit&amp;#62;&lt;br /&gt; &amp;#60;limitexcept GET POST OPTIONS PROPFIND&amp;#62;&lt;br /&gt;  Order deny,allow&lt;br /&gt;  Deny from all&lt;br /&gt; &amp;#60;/limitexcept&amp;#62;&lt;br /&gt;&amp;#60;/directory&amp;#62;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Por último, el directorio &lt;code&gt;c:\aplicacion&lt;/code&gt; no está configurado para que Apache lo pueda accesar, por lo que será necesario que busques la directiva &lt;code&gt;&amp;#60;IfModule mod_alias.c&amp;#62;&lt;/code&gt; e immediatamente después de esta escribas la línea:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Alias /aplicacion "C:/aplicacion/"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Lo anterior crea un alias, por lo que ahora puedes acceder desde tu navegador la ruta protegida: http://testserver/aplicacion&lt;br /&gt;&lt;br /&gt;Inicia Apache o bájalo y vuélvelo a levantar si es que lo tenías arriba e intenta acceder a la ruta: http://testserver/aplicacion si tu configuración es correcta te aparecerá la ventana de acceso:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/SXN4YmFjUqI/AAAAAAAAAFI/OPbrD4GYrk8/s1600-h/htpasswd5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 320px;" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/SXN4YmFjUqI/AAAAAAAAAFI/OPbrD4GYrk8/s400/htpasswd5.png" alt="" id="BLOGGER_PHOTO_ID_5292706351026492066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Si presionas el botón Cancelar, veras una pantalla como esta:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t1WQBJYuFhI/SXN4wjPppVI/AAAAAAAAAFQ/tBnAuxZiB-s/s1600-h/htpasswd6.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 320px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SXN4wjPppVI/AAAAAAAAAFQ/tBnAuxZiB-s/s400/htpasswd6.png" alt="" id="BLOGGER_PHOTO_ID_5292706762580403538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;o si escribes un usuario y contraseña correctos, ingresarás al directorio:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t1WQBJYuFhI/SXN5hcdmoCI/AAAAAAAAAFY/rXuu4MAtJyE/s1600-h/htpasswd7.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 320px;" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SXN5hcdmoCI/AAAAAAAAAFY/rXuu4MAtJyE/s400/htpasswd7.png" alt="" id="BLOGGER_PHOTO_ID_5292707602573467682" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-9126157887157690103?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/u9xGlc48aE8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/9126157887157690103/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/01/seguridad-bsica-de-apache.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/9126157887157690103" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/9126157887157690103" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/u9xGlc48aE8/seguridad-bsica-de-apache.html" title="Seguridad básica de Apache htpasswd/htaccess en Win32" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ0CPJ-U7I/AAAAAAAAAIw/L8aTC2TtBwo/s72-c/apache.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/01/seguridad-bsica-de-apache.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-2534304691130970131</id><published>2009-01-14T13:37:00.024-06:00</published><updated>2009-06-25T22:55:22.601-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mod_ssl" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="ssl" /><category scheme="http://www.blogger.com/atom/ns#" term="seguridad" /><category scheme="http://www.blogger.com/atom/ns#" term="apache" /><title type="text">Cómo configurar Apache+SSL en Win32</title><content type="html">&lt;img style="MARGIN: 5px 10px 0px 0px; WIDTH: 200px; FLOAT: left; HEIGHT: 100px;" id="BLOGGER_PHOTO_ID_5351459470255739826" border="0" alt="" src="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ0CPJ-U7I/AAAAAAAAAIw/L8aTC2TtBwo/s200/apache.jpg" /&gt;&lt;div style="text-align: justify;"&gt;Versión 1.6.6&lt;br /&gt;&lt;br /&gt;Un nuevo y esperemos que actualizado con más frecuencia ‘Cómo configurar’ el cual cubre Apache 2 está disponible en &lt;a href="http://raibledesigns.com/tomcat/ssl-howto.html"&gt;http://raibledesigns.com/tomcat/ssl-howto.html&lt;/a&gt;(en inglés). Checa además &lt;a href="http://www.thompsonbd.com/tutorials/apachessl.php"&gt;este tutorial que cubre Apache 2 en Windows 2003 Server&lt;/a&gt;(en inglés también) si es que usas ese.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://netsafe.free.fr/index.php?Chap=A1"&gt;Traducción al francés&lt;/a&gt; mantenida por &lt;a href="mailto:jfmoreau@ifrance.com"&gt;Jean-Francois Moreau&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.thorsnet.dk/?m=Ops?t_webserver&amp;amp;side=setup_mod_ssl"&gt;Traducción al danés&lt;/a&gt; mantenida por &lt;a href="mailto:morten@THORSNET.dk"&gt;Morten Fischer-Nielsen&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Panorama general&lt;/h3&gt;Esta página describe la instalación de Apache para Windows con la extensión mod_ssl. La versión más reciente debería estar siempre disponible en &lt;a href="http://tud.at/programm/apache-ssl-win32-howto.php3"&gt;http://tud.at/programm/apache-ssl-win32-howto.php3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Este proceso le funcionó a varias personas en Windows NT, 98, ME, 2000 y XP. Puedes inclusive instalar Apache con SSL además del servidor Microsoft Internet Information Server si así lo necesitas.&lt;br /&gt;&lt;br /&gt;Nota: algunas veces, hay cambios entre distribuciones precompiladas de Apache en las cuales este ‘Cómo configurar’ no aplica. En este caso, si la versión actual no te funciona, prueba con una versión anterior – una que sea anterior a la fecha de modificación de este ‘Cómo configurar’. O, si prefieres la aventura, trata de hacer que funcione.&lt;br /&gt;&lt;br /&gt;Nótese que Apache 1.3.x en Win32 se considera calidad beta ya que no alcanza la estabilidad y rendimiento de las plataformas Un*x. Las versiones 2.x quizas sean mejores sin embargo este ‘Cómo configurar’ no lo cubre.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;h3&gt;1.: Instalando Apache&lt;/h3&gt;Obtén la versión para Windows del servidor web Apache de alguna de las ubicaciones &lt;a href="http://archive.apache.org/dist/httpd/binaries/win32/"&gt;alternas&lt;/a&gt;. Se llama algo ásí como &lt;code&gt;apache_x_y_z_win32-x86-no_src.msi&lt;/code&gt;. Se trata de un archivo auto-instalable que contiene el sistema base de Apache y archivos de configuración de ejemplo.&lt;br /&gt;&lt;br /&gt;¡No mezcles versiones de Apache 1.3 y 2! No funcionan. Si encuentras 1.3.x en modssl.org, no puedes esperar que funcione con 2.0.x.&lt;br /&gt;&lt;br /&gt;Instala Apache como se describe en &lt;a href="http://www.apache.org/docs/windows.html"&gt;http://www.apache.org/docs/windows.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Cambia al menos los siguientes parámetros en el archivo de configuración [&lt;code&gt;APACHE_HOME]/conf/httpd.conf&lt;/code&gt;:&lt;br /&gt;&lt;strong&gt;[No olvides reemplazar &lt;code&gt;www.my-server.dom&lt;/code&gt; con el nombre de dominio real]&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;Port 80&lt;/code&gt; a &lt;code&gt;&lt;b&gt;#&lt;/b&gt; Port 80&lt;/code&gt; (Pónlo cómo comentario(#); no se necesita &lt;code&gt;Port&lt;/code&gt;, &lt;code&gt;Listen&lt;/code&gt; lo sobreescribe más adelante.) &lt;/li&gt;&lt;li&gt;(Si no está además del IIS) &lt;code&gt;Listen 80&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;Listen 443&lt;/code&gt; (Para que el servidor escuche por el puerto SSL estándar) &lt;/li&gt;&lt;li&gt;&lt;code&gt;ServerName&lt;/code&gt; &lt;b&gt;www.my-server.dom&lt;/b&gt;&lt;/li&gt;&lt;li&gt;(Si está además del IIS) &lt;code&gt;DocumentRoot&lt;/code&gt; y el correspondiente &lt;code&gt;&amp;lt;Directory&lt;/code&gt; algún-dir&lt;code&gt;&amp;gt;&lt;/code&gt; a tu &lt;code&gt;Inetpub\wwwroot&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Instala el servicio de Apache(sólo NT/2000/XP) y levántalo. Verifica que todo funciona antes de proceder con la instalación de SSL para limitar los posibles errores.&lt;br /&gt;&lt;br /&gt;Intenta &lt;u&gt;&lt;b&gt;http://www.my-server.dom:443/&lt;/b&gt;&lt;/u&gt;. No estará encriptado todavía pero si funciona quiere decir que la configuración del puerto 443 es correcta.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;2.: Obteniendo OpenSSL y mod_ssl&lt;/h3&gt;Los archivos binarios(librerías/ejecutables) de donde usualmente se descargaban ya no están disponibles &lt;strike&gt;http://www.modssl.org/contrib/&lt;/strike&gt; o &lt;strike&gt;http://hunter.campbus.com/&lt;/strike&gt; y el sitio de OpenSSL sólo distribuye el código fuente pero ofrece la opción de un tercero para instalar los binarios en: &lt;a href="http://www.openssl.org/related/binaries.html"&gt;http://www.openssl.org/related/binaries.html&lt;/a&gt;. Sólo tienes que seguir las instrucciones para instalarlo (Sólo OpenSSL).&lt;br /&gt;&lt;br /&gt;&lt;span class="lbluebox"&gt;Puesto que no encontré ningún paquete con los binarios de Apache, OpenSSL y mod_ssl listo para ejecutarse, me di a la tarea de bajar los fuentes y generar un paquete probado y funcionando. Este lo puedes descargar visitando:&lt;br /&gt;&lt;a href="http://sartigas.blogspot.com/2009/06/sobre-binarios-de-apache-13x.html"&gt;Sobre binarios de Apache 1.3.x&lt;/a&gt; descomprimes en C:\, actualizas el archivo &lt;code&gt;[APACHE_HOME]\conf\httpd.conf&lt;/code&gt; con tu configuración y listo.&lt;/span&gt;Copia los archivos &lt;code&gt;ssleay32.dll&lt;/code&gt; y &lt;code&gt;libeay32.dll&lt;/code&gt; del directorio de distribución de OpenSSL [OPENSSL_HOME]\bin al directorio &lt;code&gt;WINNT\System32&lt;/code&gt; ó &lt;code&gt;WINDOWS\System32&lt;/code&gt; en XP. Esto es importante ya que en muchos casos olvidan hacerlo experimentando problemas posteriores.&lt;br /&gt;&lt;br /&gt;Actualmente no es necesario un archivo de configuración(.cnf) para que &lt;code&gt;openssl.exe&lt;/code&gt; pueda crear la petición de certificado(archivo .csr), si aún así crees que lo necesitas puedes descargarlo de &lt;a href="http://tud.at/programm/openssl.cnf"&gt;aquí&lt;/a&gt; o de &lt;a href="http://www.geocities.com/sartigas/openssl.cnf"&gt;aquí&lt;/a&gt;. Este es un archivo de texto normal, sin embargo, algunas versiones de Windows insisten en ocultarte la extensión. Puedes editarlo con el Notepad de Windows o un buen editor, aunque no debería ser necesario.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;3.: Creando un certificado de prueba&lt;/h3&gt;Puedes crear la petición de certificado (archivo .csr) de dos maneras, la primera es usando el archivo de configuración &lt;code&gt;openssl.cnf&lt;/code&gt; mencionado en el punto anterior y la otra es sin usar este archivo.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Para crear el archivo de petición de certificado usando el archivo de configuración:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Las instrucciones siguientes son de &lt;a href="http://www.apache-ssl.org/#FAQ"&gt;http://www.apache-ssl.org/#FAQ&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;openssl req -config openssl.cnf -new -out my-server.csr&lt;/code&gt;&lt;br /&gt;Esto crea el acrhivo de petición y una llave privada. Para crearlo openssl necesita que ingreses la información solicitada, un ejemplo de esta información solicitada es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;quote&gt;&lt;code&gt;-----&lt;br /&gt;Country Name (2 letter code) [AU]: GB&lt;br /&gt;State or Province Name (full name) [Some-State]: Yorks&lt;br /&gt;Locality Name (eg, city) []: York&lt;br /&gt;Organization Name (eg, company) [Internet Widgits Pty Ltd]: MyCompany Ltd&lt;br /&gt;Organizational Unit Name (eg, section) []: IT&lt;br /&gt;Common Name (eg, YOUR name) []: www.my-server.dom&lt;br /&gt;Email Address []:&lt;br /&gt;&lt;br /&gt;Please enter the following 'extra' attributes to be sent with your certificate request&lt;br /&gt;&lt;br /&gt;A challenge password []:&lt;br /&gt;An optional company name []:&lt;br /&gt;-----&lt;/code&gt;&lt;/quote&gt;&lt;br /&gt;&lt;br /&gt;Cuando llegas a “&lt;code&gt;Common Name (eg, YOUR name) []: www.my-server.dom”&lt;/code&gt; da el nombre de dominio exacto de tu servidor web (p.e. &lt;strong&gt;www.my-server.dom&lt;/strong&gt;) o si estás en una máquina de pruebas usa el nombre de red que tenga(p.e. testserver). Habrá un valor por default para algunos campos, si sólo pones un ‘.’(punto) en estos, serán manejados como campos vacíos. El certificado pertenece a este nombre de servidor y los navegadores muestran un mensaje o niegan mostrar el contenido si el nombre no coincide.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;openssl rsa -in privkey.pem -out my-server.key&lt;/code&gt;&lt;br /&gt;Esto quita password de la llave privada. DEBES entender lo que significa esto; &lt;code&gt;my-server.key&lt;/code&gt; debería ser sólo visible por el servidor Apache y el administrador. Elimina el archivo &lt;code&gt;.rnd&lt;/code&gt; ya que contiene información entrópica para crear la llave y podría ser usado para ataques criptográficos contra la llave privada.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Para crear el archivo de petición de certificado sin archivo de configuración:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;openssl req -new -nodes -keyout my-server.key -out my-server.csr&lt;/code&gt;&lt;br /&gt;Esto crea dos archivos. El archivo my-server.key que contiene la llave privada. En particular, asegúrate de respaldar la llave privada, ya que no hay manera de recuperarla si la pierdes. Ingresar la información solicitada por openssl.&lt;br /&gt;&lt;br /&gt;Usa el nombre del servidor web como Nombre Común o Common Name (CN). Los campos email address, optional company name y challenge password pueden dejarse vacíos para un certificado de pruebas.&lt;br /&gt;&lt;br /&gt;Una vez creado el archivo de petición de ceritificado continuas con lo siguiente.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 365&lt;/code&gt;&lt;br /&gt;Esto crea un certificado auto-firmado que puedes usar hasta que obtengas uno “real” de una autoridad certificada. (El cual es opcional, si sabes quienes son tus usuarios, puedes decirles que instalen el certificado en sus navegadores). Nótese que el certificado expira después de un año, puedes cambiar &lt;code&gt;-days 365&lt;/code&gt; al valor que tú especifiques.&lt;br /&gt;&lt;br /&gt;Si tienes usuarios con MS Internet Explorer 4.x y quieres que sean capaces de instalar tu certificado (descargándolo y abriéndolo), necesitas crear una versión del certificado codificada en DER:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;openssl x509 -in my-server.cert -out my-server.der.crt -outform DER&lt;/code&gt;&lt;br /&gt;Crea el directorio [APACHE_HOME]\conf\ssl y mueve &lt;code&gt;my-server.key&lt;/code&gt; y &lt;code&gt;my-server.cert&lt;/code&gt; a esa ubicación.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;4.: Configurando Apache y mod_ssl&lt;/h3&gt;Copia el archivo mod_ssl.so al directorio [APACHE_HOME]\modules.&lt;br /&gt;&lt;br /&gt;Encuentra las directivas LoadModule en tu archivo &lt;code&gt;httpd.conf&lt;/code&gt; y agrega lo siguiente a las que ya existen, de acuerdo al archivo proporcionado para tu distribución:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LoadModule ssl_module modules/ApacheModuleSSL.dll&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;o&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LoadModule ssl_module modules/ApacheModuleSSL.so&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;o&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LoadModule ssl_module modules/mod_ssl.so&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;en versiones recientes.&lt;br /&gt;&lt;br /&gt;En versiones recientes de la distribución, podría también ser necesario agregar&lt;br /&gt;&lt;code&gt;AddModule mod_ssl.c&lt;/code&gt;&lt;br /&gt;después de las líneas AddModule que ya existentes.&lt;br /&gt;&lt;br /&gt;Añade lo siguiente al final del archivo &lt;code&gt;httpd.conf&lt;/code&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;i&gt;# see &lt;a href="http://www.modssl.org/docs/2.8/ssl_reference.html"&gt;http://www.modssl.org/docs/2.8/ssl_reference.html&lt;/a&gt; for more info&lt;/i&gt;&lt;br /&gt;SSLMutex sem&lt;br /&gt;SSLRandomSeed startup builtin&lt;br /&gt;SSLSessionCache none&lt;br /&gt;&lt;br /&gt;SSLLog logs/SSL.log&lt;br /&gt;SSLLogLevel info&lt;br /&gt;&lt;i&gt;# You can later change "info" to "warn" if everything is OK&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;VirtualHost &lt;b&gt;www.my-server.dom&lt;/b&gt;:443&amp;gt;&lt;br /&gt;SSLEngine On&lt;br /&gt;SSLCertificateFile conf/ssl/my-server.cert&lt;br /&gt;SSLCertificateKeyFile conf/ssl/my-server.key&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;No olvides levantar Apache con &lt;code&gt;-D SSL&lt;/code&gt; si la directiva &lt;code&gt;IfDefine&lt;/code&gt; está activa en el archivo de configuración.&lt;br /&gt;&lt;br /&gt;Puede que necesites usar &lt;code&gt;regedit&lt;/code&gt; para cambiar la clave &lt;code&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Apache Group\Apache\X.Y.Z&lt;/code&gt; con el número de versión correcto de Apache si el &lt;code&gt;apache.exe&lt;/code&gt; de tu distribución no coincide con la clave. (Esto parece no ser necesario con versiones recientes)&lt;br /&gt;&lt;br /&gt;También, si usas las directivas IfDefine y levantas Apache como servicio, necesitas editar la línea de comando de Apache en el registro (&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2&lt;/code&gt;)(Esto no lo he intentado).&lt;br /&gt;&lt;br /&gt;Levanta el servidor, esta vez desde la línea de comandos (no como servicio) para ver los mensajes de error que impidan que Apache arranque. Si todo sale bien, (opcionalmente) presiona CTRL+C o desde otra sesión de línea de comando ejecuta: &lt;code&gt;apache –k stop&lt;/code&gt; para detener el servidor e iniciarlo como servicio si así lo definiste.&lt;br /&gt;&lt;br /&gt;Si no arranca, Apache debería mostrar mensajes descriptivos en la pantalla y/o en los archivos error.log y ssl.log del directorio [APACHE_HOME]\logs. Si algo no funciona, configura todos los &lt;code&gt;LogLevel&lt;/code&gt;s al máximo y &lt;em&gt;échale un ojo a los archivos log&lt;/em&gt;. Son de mucha ayuda.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Depurando problemas de conexión&lt;/h3&gt;Los problemas de conexión al servidor desde un navegador pueden tener varias causas, varias de ellas en el lado del cliente (proxy, DNS, alguna tontería del IE).&lt;br /&gt;&lt;br /&gt;Así que si encuentras problemas para conectarte con SSL, inténtalo desde otro navegador y/o revisa tu configuración. Si nada de eso funciona, puedes usar OpenSSL para depurar el problema.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;code&gt;bb@www$ &lt;b&gt;openssl s_client -connect no-such-machine:443&lt;/b&gt;&lt;br /&gt;gethostbyname failure &lt;i&gt;# Error al resolver este nombre DNS. Conéctate con la dirección IP.&lt;/i&gt;&lt;br /&gt;connect:errno=2&lt;br /&gt;&lt;br /&gt;bb@www$ &lt;b&gt;openssl s_client -connect www1.tud.at:443&lt;/b&gt;&lt;br /&gt;connect: Connection refused&lt;br /&gt;connect:errno=111&lt;br /&gt;&lt;i&gt;# No hay servidor SSL en este puerto. Revisa las directivas &lt;b&gt;Listen&lt;/b&gt; y &lt;b&gt;Port&lt;/b&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;bb@www$ &lt;b&gt;openssl s_client -connect &lt;/b&gt;apcenter.apcinteractive.net&lt;b&gt;:443&lt;/b&gt;&lt;br /&gt;&lt;i&gt;# Todo está OK. OpenSSL muestra la información obtenida del servidor.&lt;/i&gt;&lt;br /&gt;CONNECTED(00000003)&lt;br /&gt;depth=0 /C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net&lt;br /&gt;verify error:num=18:self signed certificate&lt;br /&gt;verify return:1&lt;br /&gt;depth=0 /C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net&lt;br /&gt;verify return:1&lt;br /&gt;---&lt;br /&gt;Certificate chain&lt;br /&gt;0 s:/C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net&lt;br /&gt;  i:/C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net&lt;br /&gt;---&lt;br /&gt;Server certificate&lt;br /&gt;-----BEGIN CERTIFICATE-----&lt;br /&gt;MIIC0TCCAjoCAQAwDQYJKoZIhvcNAQEEBQAwgbAxCzAJBgNVBAYTAmF0MQ0wCwYDV&lt;br /&gt;[...]&lt;br /&gt;9ucXUnk=&lt;br /&gt;-----END CERTIFICATE-----&lt;br /&gt;subject=/C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net&lt;br /&gt;issuer=/C=at/ST=Wien/L=Wien/O=APC interactive/OU=Lifecycle Management/CN=apcenter.apcinteractive.net/Email=bb@apcinteractive.net&lt;br /&gt;---&lt;br /&gt;No client certificate CA names sent&lt;br /&gt;---&lt;br /&gt;SSL handshake has read 1281 bytes and written 320 bytes&lt;br /&gt;---&lt;br /&gt;New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA&lt;br /&gt;Server public key is 1024 bit&lt;br /&gt;SSL-Session:&lt;br /&gt;   Protocol  : TLSv1&lt;br /&gt;   Cipher    : EDH-RSA-DES-CBC3-SHA&lt;br /&gt;   Session-ID: 49ACE1CF484A67D2C476B923D52110A6FCA1A7CE53D76DF7F233DEBF2333D4FB&lt;br /&gt;   Session-ID-ctx:&lt;br /&gt;   Master-Key: 00E9FA964253752294ECD69C18ADBA527B7170C112E2B3BCB25EA8F4FD847EC46E1FF0194EF8E16985B5E38BF6F12131&lt;br /&gt;   Key-Arg   : None&lt;br /&gt;   Start Time: 980696025&lt;br /&gt;   Timeout   : 300 (sec)&lt;br /&gt;   Verify return code: 0 (ok)&lt;br /&gt;---&lt;br /&gt;&lt;b&gt;[Escribe:&lt;br /&gt;GET / HTTP/1.0&lt;br /&gt;y presiona ENTER dos veces]&lt;/b&gt;&lt;br /&gt;HTTP/1.1 200 OK&lt;br /&gt;Date: Sun, 28 Jan 2001 15:34:58 GMT&lt;br /&gt;Server: Apache/1.3.9 (Win32) mod_ssl/2.4.9 OpenSSL/0.9.4&lt;br /&gt;Cache-Control: no-cache, no-store, must-revalidate, private&lt;br /&gt;Expires: 0&lt;br /&gt;Pragma: no-cache&lt;br /&gt;X-Powered-By: PHP/4.0.4&lt;br /&gt;Last-Modified: Sun, 28 Jan 2001 15:35:00 GMT&lt;br /&gt;Connection: close&lt;br /&gt;Content-Type: text/html&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&lt;i&gt;# El servidor muestra su página principal&lt;/i&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Problemas comunes&lt;/h3&gt;P: Veo lo siguiente cuando arranca Apache:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Syntax error on line [some number] of ...httpd.conf&lt;br /&gt;Cannot load apache/modules/mod_ssl.so into server&lt;br /&gt;(126) The module could not be found:&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;R: ¿Copiaste las DLLs de OpenSSL a WINNT\System32 (o WINDOWS\System32 en Win9x/ME/XP)?&lt;br /&gt;Puedes verificar esto copiando &lt;code&gt;openssl.exe&lt;/code&gt; a un directorio propio y ejecutarlo. Si marca error por no poder encontrar algunas DLLs, quiere decir que no las has copiado al directorio correcto.&lt;br /&gt;Un usuario alguna vez comentó que tenía este problema aún cuando había hecho todo bien. Encontró que el problema eran las DLLs de OpenSSL que se corrompieron. Así que si tienes este error a pesar de haber hecho todo correctamente, intenta usar las DLLs de otra versión de OpenSSL.&lt;br /&gt;&lt;br /&gt;P: Veo lo siguiente cuando arranca Apache:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Syntax error on line [some number] of apache/conf/httpd.conf:&lt;br /&gt;Cannot load apache/modules/apachemodulessl.dll into server:&lt;br /&gt;(127) The specified procedure could not be found:&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;o:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Syntax error on line [some number] of apache/conf/httpd.conf:&lt;br /&gt;Invalid command 'SSLMutex', perhaps mis-spelled or defined by a module not&lt;br /&gt;included in the server configuration&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;R: No añadiste la línea AddModule (o no donde debe ir, lo cual es debajo de las otras líneas AddModule).&lt;br /&gt;&lt;br /&gt;P: SSL no funciona en el navegador y veo lo siguiente en algún archivo log:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[Fri Nov 16 15:46:30 2001] [error] OpenSSL: error:1407609C:SSL&lt;br /&gt;routines:SSL23_GET_CLIENT_HELLO:http request [Hint: speaking HTTP to&lt;br /&gt;HTTPS port!?]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;R: ¿Qué más claro puede ser un mensaje de error? Tu configuración de VirtualHost o Listen no es la correcta.&lt;br /&gt;&lt;br /&gt;&lt;span class="lbluebox"&gt;&lt;b&gt;Preguntas sobre la compilación de Apache, OpenSSL y mod_ssl&lt;/b&gt;&lt;br /&gt;Sólo contestaré preguntas donde haya un trabajo de por medio, la documentación que estos proporcionan es bastante clara y sencilla de seguir aunque no apta para principiantes debo decir.&lt;br /&gt;&lt;br /&gt;Como tip si es que tienes la curiosidad de hacerlo, utiliza los fuentes de todo, es decir, genera los binarios desde cero.&lt;/span&gt;&lt;h3&gt;Enlaces&lt;/h3&gt;Servidor Web Apache: &lt;a href="http://www.apache.org/"&gt;http://www.apache.org/&lt;/a&gt;&lt;br /&gt;mod_ssl: &lt;a href="http://www.modssl.org/"&gt;http://www.modssl.org/&lt;/a&gt;&lt;br /&gt;Configuración de mod_ssl: &lt;a href="http://www.modssl.org/docs/2.8/ssl_reference.html"&gt;http://www.modssl.org/docs/2.8/ssl_reference.html&lt;/a&gt;&lt;br /&gt;OpenSSL: &lt;a href="http://www.openssl.org/"&gt;http://www.openssl.org/&lt;/a&gt;&lt;br /&gt;PHP preprocesador de hypertexto: &lt;a href="http://www.php.net/"&gt;http://www.php.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Autor de este documento: &lt;a href="mailto:balazs@tud.at"&gt;Balázs Bárány&lt;/a&gt; (&lt;a href="http://tud.at/"&gt;http://tud.at&lt;/a&gt;)&lt;br /&gt;(envíame tus preguntas, pero sólo después de haber echado un vistazo a los errores en los logs con &lt;code&gt;LogLevel debug&lt;/code&gt;. Puedes escribirme en Inglés, Alemán y Húngaro. Si constantemente ignoro sus correos, lean todas las pistas de este ‘Cómo configurar’ acerca de cómo escribirme).&lt;br /&gt;&lt;br /&gt;Colaborador: &lt;a href="mailto:Horst.Braeuner@t-online.de"&gt;Horst Bräuner&lt;/a&gt; (Configuración de OpenSSL en NT)&lt;br /&gt;Colaborador: &lt;a href="mailto:admin@liquid-attack.com"&gt;Christoph Zich&lt;/a&gt; (Windows 98)&lt;br /&gt;Colaborador: &lt;a href="mailto:Torsten.Stanienda@datadesign.de"&gt;Torsten Stanienda&lt;/a&gt; (Prueba con 1.3.12, directiva IfDefine)&lt;br /&gt;Colaborador: &lt;a href="mailto:PHolm@gmx.de"&gt;Peter Holm&lt;/a&gt; (Directivas Listen y Port)&lt;br /&gt;&lt;br /&gt;Último cambio 14-ENE-2009&lt;br /&gt;&lt;br /&gt;Traducido por &lt;a href="http://sartigas.blogspot.com/"&gt;Sergio Artigas&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Este documento puede ser redistribuído bajo la &lt;a href="http://www.gnu.org/copyleft/fdl.html"&gt;Licencia de Libre Documentation GNU&lt;/a&gt;. © Balázs Bárány 1999-2009&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-2534304691130970131?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/rRuZQSbWk6c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/2534304691130970131/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2009/01/cmo-configurar-apachessl-en-win32.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2534304691130970131" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2534304691130970131" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/rRuZQSbWk6c/cmo-configurar-apachessl-en-win32.html" title="Cómo configurar Apache+SSL en Win32" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_t1WQBJYuFhI/SkQ0CPJ-U7I/AAAAAAAAAIw/L8aTC2TtBwo/s72-c/apache.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2009/01/cmo-configurar-apachessl-en-win32.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-2640246443762229247</id><published>2008-12-09T23:37:00.012-06:00</published><updated>2008-12-12T11:01:18.462-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sociedad" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas Operativos" /><category scheme="http://www.blogger.com/atom/ns#" term="Ideología" /><title type="text">Cómo los usuarios de Windows están cambiando Linux y qué debemos hacer al respecto</title><content type="html">&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t1WQBJYuFhI/ST9ZQct5UQI/AAAAAAAAAEg/hLaARA65_Xs/s1600-h/tux.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 167px; height: 200px;" src="http://4.bp.blogspot.com/_t1WQBJYuFhI/ST9ZQct5UQI/AAAAAAAAAEg/hLaARA65_Xs/s200/tux.gif" alt="" id="BLOGGER_PHOTO_ID_5278035427422982402" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;No hay duda que la gente está dejando Windows, muchos cambiando a Mac y otros más a Linux. Esto es en parte debido al descontento con Vista. La razón no es importante. Qué le está sucediendo a la comunidad de Linux es lo importante.&lt;br /&gt;&lt;br /&gt;Soy activo en varios foros de ayuda. Veo montones de peticiones al respecto. Muchas de ellas vienen de usuarios atados a Windows. Las cantidades y la manera en cómo se acercan a Linux están teniendo un impacto. Nadie tiene una cifra exacta, pero sabemos que la adopción de Linux está creciendo. Ya que la mayoría de los nuevos usuarios tienen antecedentes en Windows, traen consigo sus hábitos y experiencia. Esto no siempre se traduce bien al moverse de una plataforma de Windows a otra, por ejemplo, de XP a Vista. Moverse de XP a Linux es un cambio fuerte para muchos de ellos.&lt;br /&gt;&lt;br /&gt;Afortunadamente, la comunidad de Linux es tolerante y servicial. Muchos de nosotros estuvimos alguna vez en sus zapatos. Sin embargo, no todos lo fuimos. Esto es causa de algunos problemas, por ejemplo, como cuando un gurú de Unix le pide a un novato de Windows abrir una terminal y corregir el gconf desde la línea de comandos usando nano. Es un intercambio interesante entre los dos eso es seguro. Ambos terminan con frecuencia frustrados por alguna extraña razón. Estas cosas suelen pasar cuando chocan dos mundos distintos.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Sin embargo vemos que los usuarios de Windows están teniendo un impacto en la comunidad de Linux que pudimos no haber anticipado. Ellos no están acostumbrados a elegir. Para ellos el arsenal de opciones que Linux presenta es confuso.&lt;br /&gt;&lt;br /&gt;Comencemos con el número de distros. ¿Cómo comenzar a elegir? Cada quien tiene su opinión, pero a quien creerle. Así que se van por uno u otro por lo que les han dicho o por su popularidad. Pueden querer probar Fedora porque saben que viene de Red Hat y han oído que Red Hat es grande en Linux (los servidores, solamente que ellos no saben la diferencia). No se dan cuenta que Fedora no es una distro para novatos y no importa cuanto argumentes, no los convencerás. Peores son aún los que tienen una vieja copia del mismo Red Hat y quieren utilizarla en una vieja computadora de escritorio y esperar que funcione como han oído que funciona Linux, moderno y de fácil uso. Ahí tienen Ubuntu. Lo utilizan porque es el que la mayoría de la gente está utilizando. No es de extrañar que nuestros foros estén llenos de confusión y en muchos casos de frustración.&lt;br /&gt;&lt;br /&gt;Así que esto es lo que veo como el problema. Esta frustración y confusión hace a los usuarios de Windows decir que Linux debe parecerse más a Windows. Ellos no quieren elegir y quieren ver estandarización. Peor aún, un pequeño porcentaje quiere cambiar Linux de modo que sea más bien como Windows. Y necesitamos estar preparados para tratar tales declaraciones y proteger lo que hace único a Linux.&lt;br /&gt;&lt;br /&gt;Sucede con frecuencia de manera inocente. Alguien tiene un problema con la instalación de un paquete que le hace decir algo como que eso es más fácil de instalar en Windows. No lo es y necesitamos decirles porqué no lo es y hacerlo de buena manera para no desviarlos. O pueden preguntar cuál es un buen antivirus para instalar o cómo defragmentar un disco, lo cual es común en un ambiente de Windows, pero no se traduce bien a Linux.&lt;br /&gt;&lt;br /&gt;Haz de haber oído la expresión de que no debería haber tantas opciones. Eso abruma a los novatos y sería mejor si hubiera solo una distro. Acabo de leer una columna al respecto ayer. De hecho, son algo comunes. Tratan algo como esto. Linux tiene un problema y si quiere tener éxito, necesita competir con Windows. Por lo tanto, Linux debe cambiar. Luego el escritor se ofusca al decir cómo Linux no se compara favorablemente con Windows. Es "caótica" la manera en que Linux maneja los archivos de configuración, por lo tanto necesita un registro centralizado. Hay demasiados administradores de paquetes que hace imposible que los desarrolladores comerciales los soporten todos, argumentan ellos. El kernel siempre está cambiando debido a que se maneja por separado.&lt;br /&gt;&lt;br /&gt;Lo vemos desde dos perspectivas, los novatos al fondo y la gente informada interesada y sin fines de lucro hasta arriba. Estoy seguro que ya antes habías oído estas quejas y de la idea de que Linux es demasiado diverso que nunca tendrá éxito.&lt;br /&gt;&lt;br /&gt;El problema es que nadie ha hecho nunca el salto que ellos están haciendo. Linux no necesita competir con nadie. Está haciendo lo suyo y en el proceso está creciendo en aceptación. Por lo tanto los únicos cambios que necesita realizar son evolutivos, como parte de su crecimiento natural.&lt;br /&gt;&lt;br /&gt;Linux es ya un éxito. No necesita convertirse en algo que no es. Si Linux fuera a intentar competir con Windows de la manera en que alguna gente se lo imagina, perdería su identidad. Se convertiría en la corriente principal y no sería lo que es, una alternativa a la corriente principal.&lt;br /&gt;&lt;br /&gt;¿Así que, cómo enfrentamos tales expresiones? Necesitamos antes que nada estar fuera de sus intereses protectores. Necesitamos en segundo lugar reconocer lo que es, una tentativa de secuestrar Linux. Necesitamos estar a la altura y orgullosos de lo que tenemos y no soñar sobre lo que podría ser con solo entrar al reino de Windows. Linux es lo que es y Windows es lo que es. Los usuarios tienen opciones. Eso es todo lo que se necesita.&lt;br /&gt;&lt;br /&gt;En términos prácticos, tenemos que manejar los diversos intereses de otra manera. Los novatos necesitan ser educados y mostrárseles cómo utilizar Linux. Necesitan saber porqué hacemos las cosas de la manera que las hacemos y recordar que la fuerza de Linux viene de su diversidad.&lt;br /&gt;&lt;br /&gt;Con los más duros de tratar es con los escritores y bloggers que saben sobre Linux y sus idiosincrasias. Ven estas cosas como fallas y dan razones. En este caso necesitamos entender y educarnos antes de que le respondamos a ellos. Tenemos que presentar argumentos convincentes para no ir en su dirección. Para hacer esto necesitamos saber donde están llegando, en que sentido nos llevara eso y tal vez saber qué motivo oculto pudieran tener. Todos tienen una agenda.&lt;br /&gt;&lt;br /&gt;Si esperamos defender Linux entonces tenemos que estar dispuestos a defender nuestro terreno. Necesitamos aceptar Linux antes que nada por lo que es. Si estamos de acuerdo con sus críticas entonces tenemos que aprender por qué es de la forma en que está. Linux tiene una historia. Hay razones válidas por las que las cosas son de la manera que son.&lt;br /&gt;&lt;br /&gt;Siempre que la gente intenta tomar algo en otra dirección con esfuerzo consciente, generalmente falla. El cambio revolucionario a menudo desata fuerzas que no podemos controlar. En cambio, el cambio evolutivo construye y utiliza su fundación natural. Es lento, pero es seguro. Linux está cambiando, pero está cambiando a su propia manera. Eso es bueno y sano.&lt;br /&gt;&lt;br /&gt;Linux es código abierto, así que la gente es libre de hacer lo que quiera con él. Cualquier persona, incluyendo Microsoft, puede hacer su propia distribución que haga exacto lo que él quiere. El problema es que esto no produce el resultado que desearían. Solamente aumenta el número de distros. Así pues, lo que quieren en realidad es revolución. Necesitan que Linux deje de ser lo que es a fin de que su visión se convierta en realidad. Necesitan parar otros proyectos para que el suyo tenga éxito. Esta es la razón por la cual tales discusiones son intrínsecamente peligrosas y porqué debemos alzar la voz.&lt;br /&gt;&lt;br /&gt;La mayoría de los usuarios de Linux están informados y tienen información extensa. Muchos también son callados. Puesto que Linux no tiene ningún portavoz, todos lo que tiene somos nosotros, los usuarios y los desarrolladores que creen en una idea compartida. Necesitamos dar voz a lo que Linux representa y necesitamos no ser callados o dudar al respecto cuando se trate de expresar nuestra opinión.&lt;br /&gt;&lt;br /&gt;A veces lo mejor con lo que algunos usuarios pueden salir es tal que hubiera sido mejor que permanecieran callados. Comentarios tales como “estás mal” o “eres un idiota” no son constructivos. Demuestran emociones, nada más. Se necesita decirle a los que critican porqué las cosas son de la manera que son. Necesitamos contar nuestra historia y compartir la filosofía detrás de Linux. Necesitamos decir que no compartimos sus aspiraciones de cambiar lo que ya es bueno.&lt;br /&gt;&lt;br /&gt;Personalmente no me importa con qué salga Microsoft. No utilizo Windows ni lo quiero usar. El éxito o fracaso de Microsoft me es irrelevante. Linux no necesita que Windows falle para que tenga éxito. No hay tal competencia en mi mente. Tan pronto como la gente comienza a hablar como si la hubiera, sospecho inmediatamente de sus motivos e intenciones. La gente que escribe que Windows 7 matará a Linux claramente no entiende Linux o a los usuarios de Linux.&lt;br /&gt;&lt;br /&gt;No vamos a voltear siempre hacia cualquier cosa que produce Microsoft. Utilizamos Linux porque cubre nuestras necesidades y expresa nuestro deseo de libertad, control y propiedad sobre nuestra propia computadora algo que Microsoft nunca va a entregar. Microsoft y Apple están diametralmente opuestos a eso. Ven la computadora como algo que deben controlar y que por extensión te pueden controlar a ti y a tus hábitos. La gente que piensa así no tendrá a Linux y nunca lo hará, que es exactamente el problema en mi mente.&lt;br /&gt;&lt;br /&gt;Microsoft odia lo que Linux representa. No tiene nada que hacer con los pros y contras expresados por gente que quiere cambiar Linux para que sea como Windows. Todo tiene que ver fundamentalmente en cómo vemos las cosas de distinta forma y en el hecho de que por primera vez están compitiendo con una ideología que no puede comprar como a una compañía. Así que su solución es intentar cambiar la ideología, desencadenando en escritores que discuten pros y contras. Todo es parte de una campaña &lt;a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"&gt;FUD&lt;/a&gt;(Fear, uncertainty and doubt en inglés, miedo, incertidumbre y duda en español) en la que algunos escritores en complicidad participan activamente desde adentro o algunos pueden ser solo incautos involuntarios, que fueron tragados hace tiempo por el &lt;a href="http://www.urbandictionary.com/define.php?term=Borg"&gt;Borg&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Al final, no importa mucho si están implicados activa o pasivamente. El hecho es que hay una campaña. He leído informes en semanas recientes sobre que Microsoft sobornaba a bloggers con computadoras portátiles gratis y que le paga a las compañías para recomendar Windows. No sería descabellado pensar que le están pagando a gente y a compañías para impulsar su agenda también de otras maneras. No sólo es necesario para Microsoft atacar la ideología, sino que quieren cerrar el boquete entre los dos Sistemas Operativos de modo que haya poco de donde elegir. Ablandándonos para luego destruirnos fácilmente.&lt;br /&gt;&lt;br /&gt;Tenemos mucho que hacer con el resultado. Necesitamos mantener Linux en su camino, de modo que podamos ser una alternativa. Cuando dejemos de serlo, entonces no tendremos nada que ofrecer, ese es el precio y eso es algo con lo que Microsoft puede vivir.&lt;br /&gt;&lt;br /&gt;Mi opinión es divulgar Linux y promover la unidad en la comunidad. Está bien tener rivalidad amistosa entre distros, pero tenemos que evitar las grandes e insidiosas fuerzas atacando desde el exterior, y proteger aquello que tenemos en común. Si Linux va a cambiar que sea de adentro hacia afuera.&lt;br /&gt;&lt;br /&gt;Traducido de &lt;a href="http://linuxcanuck.wordpress.com/2008/12/03/how-windows-users-are-changing-linux-and-what-we-should-do-about-it/"&gt;linuxcanuck.wordpress.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-2640246443762229247?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/87t6ldUYTWo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/2640246443762229247/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2008/12/cmo-los-usuarios-de-windows-estn.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2640246443762229247" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2640246443762229247" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/87t6ldUYTWo/cmo-los-usuarios-de-windows-estn.html" title="Cómo los usuarios de Windows están cambiando Linux y qué debemos hacer al respecto" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_t1WQBJYuFhI/ST9ZQct5UQI/AAAAAAAAAEg/hLaARA65_Xs/s72-c/tux.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2008/12/cmo-los-usuarios-de-windows-estn.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-4076679033520593892</id><published>2008-09-14T22:33:00.013-05:00</published><updated>2009-01-14T17:14:30.009-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="procrastinación" /><category scheme="http://www.blogger.com/atom/ns#" term="sociedad" /><category scheme="http://www.blogger.com/atom/ns#" term="administración" /><category scheme="http://www.blogger.com/atom/ns#" term="productividad" /><category scheme="http://www.blogger.com/atom/ns#" term="cultura" /><title type="text">Procrastinar o no procrastinar...</title><content type="html">&lt;a style="" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/SMzeev7C-kI/AAAAAAAAACM/-JlJ9ZjBpnM/s1600-h/Procrastination.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 270px; height: 268px;" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/SMzeev7C-kI/AAAAAAAAACM/-JlJ9ZjBpnM/s320/Procrastination.jpg" alt="" id="BLOGGER_PHOTO_ID_5245812285821352514" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Wikipedia define como:&lt;br /&gt;&lt;span class="lbluebox"&gt;La &lt;b&gt;procrastinación&lt;/b&gt; (del latín: &lt;i&gt;pro&lt;/i&gt;, adelante, y &lt;i&gt;crastinus&lt;/i&gt;, referente al futuro) es la acción de postergar actividades o situaciones que uno debe atender, por otras situaciones más irrelevantes y agradables.&lt;/span&gt;este es uno de los problemas más grandes que la mayoría de personas tienen. Muchos creen que no "administran bien su tiempo" y como resultado trabajan poco. Esto puede ser cierto. Pero, ¡para ciertas personas! los demás no terminan su trabajo porque son "¡procrastinadores!".&lt;br /&gt;&lt;br /&gt;Por ejemplo, un estudiante se sienta a leer unas cuantas páginas de su libro que son interesantes. Luego llega a una que es complicada y aburrida, en vez de tratar de entender el contenido se convence a sí mismo de que lo hará más tarde. Sin embargo, ese "más tarde" nunca llega, eso es procrastinar.&lt;br /&gt;&lt;br /&gt;Algunas personas son "procrastinadores eventuales", procrastinan pero no en todo. Otros son "procrastinadores crónicos" que encuentran muy difícil terminar algo, hay inclusive algunos estudiantes que les resulta muy difícil comenzar a estudiar, por ejemplo. Cada vez que se sientan a estudiar, ¡se convencen a sí mismos de que hay algo más importante que eso! terminan posponiéndolo hasta que es demasiado tarde y terminan haciéndolo desesperadamente y aprisa.&lt;br /&gt;&lt;br /&gt;HEY HEY espera espera, si eres "procrastinador crónico" probablemente estás leyendo este artículo y diciendo... "¡Hey que buen artículo!, ¡me puede ayudar!, creo que lo pondré en mis favoritos y regresaré más tarde a leerlo" ¡NO! ¡Ni se te ocurra! termina de leerlo en este momento. Es el primer paso para dejar ese hábito.&lt;br /&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;¿Porqué procrastinamos?&lt;/span&gt;&lt;br /&gt;Varias son las razones por las que las personas procrastinan, trataré de explicar algunas de ellas. La idea es que una vez que entiendas las razones detrás de la procrastinación, seas capaz de identificarla la próxima vez antes de que lo hagas, si así lo hicieras deberías ser capaz de superarlo fácilmente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;4 sencillas razones&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;u&gt;Cuando algo se dificulta:&lt;/u&gt; cuando piensas que una tarea en particular es difícil de hacer, tratas de convencerte a ti mismo de no hacerlo. En lugar de eso tratas de hacer algo más fácil. Esta es una de las razones más comunes por las que las personas procrastinan. ¡Estate atento! la próxima vez que vayas a hacer algo difícil analiza la manera en que tu mente trata de convencerte de que deberías hacer otra cosa.&lt;br /&gt;&lt;br /&gt;No caigas en este juego. ¡Haz la tarea difícil en ese momento! y cuando la termines, enorgullécete de haberla terminado. Detente unos segundos y piensa en lo bien que hiciste esa tarea sin procrastinación.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;u&gt;Cuando algo consume tiempo:&lt;/u&gt; cuando sientes que una tarea consume tiempo o tomará un buen, tratarás de procrastinarla. ¡Evitarás siquiera comenzarla! te convencerás de que debes hacer algo más.&lt;br /&gt;&lt;br /&gt;Reconoce el momento. Para superarlo, un truco es decirle a tu mente que trabajarás en la tarea solamente 10 minutos, no más. La idea es seccionarla en partes pequeñas y hacer una a la vez. Sin embargo, el efecto es muy diferente. Una vez que comienzas a trabajar en ella, probablemente continuarás incluso más allá de los 10 minutos. ¡Inténtalo!&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;u&gt;Cuando sientes que te falta el conocimiento o la habilidad requerida:&lt;/u&gt; Cuando sientes que no tienes los conocimientos o habilidades para hacer tu trabajo, lo procrastinas. Podría deberse a que no quieres cometer errores. Por lo tanto te convences de que debes estudiar antes de hacerla.&lt;br /&gt;&lt;br /&gt;La mejor manera de hacer este tipo de tareas es diciéndote, "esta tarea es fácil, yo puedo hacerlo, que tan difícil puede ser", algo en ese sentido.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;u&gt;Cuando tienes miedo:&lt;/u&gt; Generalmente, es cuando temes fracasar en tu trabajo y no quieres que los demás sepan que fallaste o que te culpen por ello. Así que lo evitas, lo procrastinas. De una u otra manera lo sigues aplazando. Reconócelo cuando lo haces.&lt;br /&gt;&lt;br /&gt;Para entrarle, necesitas otra vez convencerte de que "la tarea es fácil, lo puedes hacer", etc.&lt;/li&gt;&lt;/ol&gt;En los párrafos anteriores menciono que "tendrás que convencerte a ti mismo" para superar tu procrastinación. Te estarás preguntando, "¿tendré que mentirme a mí mismo para superarlo?". La respuesta es: ¡SI!&lt;br /&gt;&lt;br /&gt;Después de todo cada vez que procrastinas, lo que realmente haces es engañarte a ti mismo ¿cierto?, por ejemplo: Si enfrentas un problema difícil te "convences a ti mismo" de que "debes" hacer otra cosa. Por eso, terminas aplazándolo. Es por esto que para superar la procrastinación, tienes que mentirte a ti mismo una vez más, así que la respuesta es: ¡SI! miéntete a ti mismo.&lt;br /&gt;&lt;br /&gt;Ahora bien, lo PEOR acerca de la procrastinación es que es auto-gratificante por lo que es duro salir del hábito. Por ejemplo: Si aplazas algo hasta el último minuto lo haces aprisa y de alguna manera te las arreglas para terminarlo bien, es cuando te sientes bien contigo mismo. Comienzas a convencerte a ti mismo de que solo puedes trabajar bajo presión cuando hay poco tiempo.&lt;br /&gt;&lt;br /&gt;La próxima vez, cuando tengas algo que hacer, te dirás a ti mismo, "dejen que llegue el último minuto, cuando haya presión, me sentaré y lo haré, de todas formas trabajo mucho mejor bajo presión ¿o no?". De esta manera tu hábito de procrastinación crece y comienzas a procrastinar más y más. ¡Tarde o temprano comenzarás a procrastinar todo!&lt;br /&gt;&lt;br /&gt;Hasta ahora he explicado algunas razones simples del porqué las personas procrastinan. Hay otras más complejas que explicaré más adelante. Sin embargo, ¡las razones no importan! lo que MAS importa es que sepas cuando lo estás haciendo. Debes ser capaz de entender que estás en procrastinación.&lt;br /&gt;&lt;br /&gt;Recuerda que si eres un procrastinador, es probable que lo hagas en casi todo, probablemente en cosas grandes y pequeñas. Observa cómo tu mente juega contigo y te convence de aplazar cosas. Una vez que estés consciente de esto, serás capaz de resolver tus problemas.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_t1WQBJYuFhI/SM3bwbF9tuI/AAAAAAAAACk/kReIoWgiFxg/s1600-h/past-present-and-future-me.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_t1WQBJYuFhI/SM3bwbF9tuI/AAAAAAAAACk/kReIoWgiFxg/s400/past-present-and-future-me.jpg" alt="" id="BLOGGER_PHOTO_ID_5246090765909472994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Razones complejas&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;u&gt;Hostilidad o enojo:&lt;/u&gt; Cuando sientes alguno de estos dos hacia la persona para la que estás haciendo el trabajo, lo procrastinarás. ¿Por qué? ¡Para rebelarte contra ella! para pelear nada más.&lt;br /&gt;&lt;br /&gt;Por ejemplo: asume que eres un estudiante y estás en la clase de un profesor irritante. Ahora bien, supón que te da una asignación larga para que la termines. Es muy probable que procrastines para hacerla. Procrastinarás diciéndote a ti mismo algo como "se equivoca si cree que haré lo que me encargó".&lt;br /&gt;&lt;br /&gt;Básicamente procrastinas para rebelarte contra el profesor. Sin embargo, el problema es que cuando se acerca el momento de entregarla, la tendrás que hacer aprisa. Harás un pésimo trabajo.&lt;br /&gt;&lt;br /&gt;¿Como te aseguras de no cometer este error? entiende lo que sientes. Entiende que si aplazas el trabajo ahora, te afectará más tarde. No deseas que un profesor irritante o algún estúpido jefe destruya tu futuro, ¿cierto? entonces no permitas que tu enojo fluya por estas situaciones.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;u&gt;Poca tolerancia a la frustración:&lt;/u&gt; Si no tienes la capacidad de manejar demasiada frustración, tendrás una tendencia a procrastinar cosas. El problema es que siempre que te sientas a hacer algo, si sientes que va a ser frustrante, te saturas con la cantidad de frustración implicada. Tratas de encontrar una manera de escapar de toda esa frustración. Así que terminas no haciendo el trabajo, lo pospones.&lt;br /&gt;&lt;br /&gt;Para superar esto, podrías buscar a alguien que te ayude con el trabajo. Si ese alguien es experto en la materia, te mostrará el camino correcto. Esto ayudará a que en el futuro hagas el trabajo sin toda esa frustración.&lt;br /&gt;&lt;br /&gt;Sin embargo, no siempre se es capaz de encontrar a alguien más. Necesitas tener un alto grado de tolerancia hacia la frustración. Puedes desarrollar esto tratando de lograr lo que estás haciendo sin importar lo difícil que sea. Aún cuando sea frustrante, ¡apégate! no renuncies. Es más fácil decirlo que hacerlo, ¡lo sé!&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;u&gt;Auto-regulado:&lt;/u&gt; Algunas personas tienden ellas mismos a regularse continuamente. Por ejemplo, constantemente dicen cosas como "No, fue solo suerte" o "No, ¡no puedo trabajar tan rápido!, soy muy lento para trabajar".&lt;br /&gt;&lt;br /&gt;Si tú eres de estos, es probable que también seas un ¡procrastinador! No crees en ti mismo, no crees en tu éxito. Así que para evitarlo o evitar ser el "foco de atención" subconscientemente tratas de no ser exitoso. Lo logras procrastinando.&lt;br /&gt;&lt;br /&gt;¿Como resuelves este problema? primero, no te limites constantemente y menos por los elogios de las personas sobre tu trabajo. Si alguien te dice "¡buen trabajo!" tu di "¡gracias!", no digas "¡tuve suerte!".&lt;br /&gt;&lt;br /&gt;Ve porqué te sientes incómodo por el éxito. ¿Alguien importante en tu vida frecuentemente te hacia sentir de esa manera? ¿Te enseñaron a reducir al mínimo tu éxito? ¿Por qué el éxito asusta tanto? ¿Hará que destaques de los demás? ¿Sientes que los demás no te aceptarán por ser exitoso? de la misma manera, cada vez que hagas algo bien ¡exprésalo! tómate unos segundos para disfrutar el buen trabajo que has hecho.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;u&gt;Perfeccionismo:&lt;/u&gt; Algunas personas son perfeccionistas o son forzadas a serlo. Debido a esto, se vuelven procrastinadores. ¿Por qué? cuando tienes un muy pero muy alto estándar para todo lo que haces, todo tu trabajo requiere entonces de MUCHO esfuerzo. Por eso, tratarás de escapar de todo este trabajo simplemente ¡procrastinando! Es más fácil no hacerlo que esforzarse por hacerlo perfectamente. Los perfeccionistas dicen cosas como: "¡de cualquier manera lo haré bien! ó ¡para nada que lo haré!".&lt;br /&gt;&lt;br /&gt;¿Como resolver este problema? es lamentable decirlo pero, tendrás que bajar tus estándares. Tendrás que comenzar a aceptar que no siempre las cosas deben ser perfectas. Haz un esfuerzo para expresar que hiciste un buen trabajo. El perfeccionismo es un problema que viene de la falta de confianza o de auto estima.  Así que debes aprender a sentir confianza de ti mismo y de tus habilidades.&lt;/li&gt;&lt;/ol&gt;Estas son varias causas por las que las personas procrastinan. Probablemente entendiste muy bien una o dos de estas ya que son problemas específicos que te afectan. Ahora bien, es importante que cuando procrastines en tu vida diaria, trates de identificar exactamente cual es la razón y superarlo.&lt;br /&gt;&lt;br /&gt;Generalmente la procrastinación se debe a algún problema psicológico que debes resolver. Lo anterior te proporciona trucos de ayuda, pero lo que realmente te ayudará es que vayas con un buen terapista, y le pidas que identifique tus problemas y los resuelvan. Desafortunadamente no todos tienen el tiempo o dinero para esto, si tienes los recursos úsalos. Ve a un terapista y pídele que te ayude con tu problema de procrastinación. ¡Eso te ayudará mucho!&lt;br /&gt;&lt;br /&gt;Antes de continuar con otras maneras de superarlo, veamos rápidamente cómo te puedes asegurar de que tus niños no sufren el problema de procrastinación que tú enfrentas y qué puedes hacer para que no se conviertan en uno más.&lt;br /&gt;&lt;br /&gt;Los procrastinadores se hacen. Nadie nace siéndolo. Una de las razones por las que los niños se convierten en esto es porque tienen padres estrictos. Si tienes padres estrictos que te dicen exactamente lo que tienes que hacer, cuando y cómo debes hacerlo, no desarrollas la habilidad para hacer tú mismo cosas. No desarrollas la capacidad de decidir que debes hacer y programar tu tiempo para hacerlo. Necesitas que siempre te digan qué es lo que vas a hacer. Esta es la causa principal de la procrastinación. Cuando crecen, toma formas diversas como las ya mencionadas anteriormente.&lt;br /&gt;&lt;br /&gt;Otra causa importante de la procrastinación es la "rebeldía". Cuando tienes padres estrictos, que te dicen cómo hacer cada cosa, te rebelas contra ellos y no haces nada. Y tus amigos que toleran las excusas que les das, ¡aumentan esta conducta!&lt;br /&gt;&lt;br /&gt;¿Así pues, cómo te cercioras de que tu niño no crezca siendo un ineficaz procrastinador? ¡Es obvio! permite que el/ella aprenda a hacer las cosas por sí misma. Dale la libertad para elegir hacer cosas en su momento y posponer otras. Siempre que hagan cosas a tiempo, recompénsalos. Permítele saber que el/ella ha hecho algo bien.&lt;br /&gt;&lt;br /&gt;Si no haces esto y piensas y programas en lugar del niño, jamás tratará de pensar en tales cosas y terminará siendo un ineficaz procrastinador.&lt;br /&gt;&lt;br /&gt;Criar niños es un asunto muy delicado. ¡Hazlo apropiadamente! sino, el niño no crecerá para ser eficiente, auto-capaz o auto-controlado. Si nunca tiene un incidente, estará en desventaja. Cuando el/ella entiendan todo esto, te culparán.&lt;br /&gt;&lt;br /&gt;Veamos ahora algunas técnicas para superar la procrastinación. Primero, una técnica llamada "Procrastinación Estructurada".&lt;br /&gt;&lt;br /&gt;Este método para conseguir hacer el trabajo, fue sugerido por el profesor de Stanford John Perry, la idea es usar procrastinación para vencer la procrastinación. ¿Cómo?&lt;br /&gt;&lt;br /&gt;Muy simple. Los procrastinadores se mantienen posponiendo trabajo importante / difícil / frustrante y se convencen a sí mismos de que otro trabajo es más importante. Exactamente ellos no desperdician el tiempo. ¡Nunca están sin hacer absolutamente NADA! Siempre están haciendo algo pero no lo más importante. Se convencen a sí mismos de que deben posponer su trabajo actual para hacer algo más importante.&lt;br /&gt;&lt;br /&gt;Así pues, si quieres vencer la procrastinación, puedes terminar mucho trabajo teniendo siempre las manos ocupadas. Si hoy tienes 5 cosas en tu lista de que-haceres, haz que sean 10. Pon las 5 cosas de mañana en la lista de hoy. Cuando te sientes a hacerlas tratarás de comenzar por las más importantes, y las aplazarás. Decidirás tomar algunas otras en tu lista y hacerlas en lugar de aquellas. Cuando haces esto, puede que pospongas todavía el trabajo más importante, y haces algo más que está en la lista.&lt;br /&gt;&lt;br /&gt;Así que mantienes aplazando el trabajo más importante haciendo el resto que es menos importante de tu lista. De esa manera, terminas haciendo tu otro trabajo. Serás capaz de terminar mucho trabajo de esta manera, posponiendo el trabajo más importante haciendo el menos importante.&lt;br /&gt;&lt;br /&gt;Sé que la idea puede sonar un poco infantil. Sin embargo, funciona. Si mantienes tu lista de que-hacer llena todo el tiempo, ¡serás capaz de usar la procrastinación para terminar todo tu trabajo! De hecho ya que eres un procrastinador, serás capaz de hacer más trabajo que cualquier otro. No me creas, ¡inténtalo!&lt;br /&gt;&lt;br /&gt;Probablemente te estás preguntando ¿y qué con el trabajo importante que se ha estado procrastinando? esta es la clave de la técnica. Elige algo de trabajo que es poco difícil / frustrante / que lleva tiempo / aburrido, etc. y convéncete a ti mismo de que es una ¡TAREA GRANDE! Cuando selecciones este trabajo, cerciórate de que el trabajo no es realmente importante. Incluso si lo haces mucho más adelante, no tendrá muchas repercusiones. Pero en tu mente, necesitas convencerte de que es un trabajo importante. Pon esta actividad al principio de la lista. Ahora, incluso si  por algún tiempo no haces este "trabajo más importante", las cosas estarán bien. Pero puedes todavía utilizar esto para conseguir hacer tu otro trabajo.&lt;br /&gt;&lt;br /&gt;Sabemos que mientras lees el párrafo anterior puedes estar pensando que todo esto es muy infantil e inmaduro y que no funcionará. Pero, ¡funciona! Los procrastinadores tienen una destreza para convencerse a sí mismos. Ese es el porqué son así. Ahora, tienes que convencerte a ti mismo y usar este talento a tu favor.&lt;br /&gt;&lt;br /&gt;Inténtalo, si funciona. Cada quien tiene su propio estilo de procrastinación estructurada. La idea básica es la misma: Procrastinar algo de trabajo haciendo otro trabajo. Consiguiendo en efecto mucho trabajo hecho.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Tips y métodos para superar la procrastinación&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Racionaliza&lt;/span&gt;&lt;br /&gt;¡Piensa las cosas! este es uno de los mejores métodos para superar la mayoría de los problemas psicológicos que puedas tener.&lt;br /&gt;&lt;br /&gt;Ahora que sabes como funciona la procrastinación y qué lo causa, fácilmente puedes hacer este ejercicio. Sigue estos sencillos pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;¡Date cuenta que estás procrastinando!&lt;/li&gt;&lt;li&gt;Trata de entender la razón exacta de porqué lo haces&lt;/li&gt;&lt;li&gt;Racionaliza esas razones y pasa por encima de ellas&lt;/li&gt;&lt;li&gt;¡Empieza la tarea!&lt;/li&gt;&lt;/ol&gt;Es bastante simple, realmente no necesitas 4 pasos, los he mencionado de modo que entiendas lo que estás haciendo. Lo que necesitas hacer es, primero entender que estás procrastinando, encontrar el PORQUE lo haces, convencerte a ti mismo de que estás actuando de manera absurda y detenerte y por último, comenzar el trabajo.&lt;br /&gt;&lt;br /&gt;Esto es algo que puedes usar para escribir tus pensamientos. Solo te tomará 5 minutos hacerlo, pero te salvará de todo el tiempo que gastes procrastinando. Lo que estoy sugiriendo es que "realmente" llenes este formulario, sé que es algo estúpido, pero dale una oportunidad...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Me estoy demorando en hacer _____________&lt;br /&gt;debido a ______________&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Razones para la demora:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;4. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;5. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Razones para no demorar:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;4. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;5. ____________________________&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;¡se terminó la procrastinación y debo comenzar el trabajo!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;He aquí otras herramientas que te ayudarán con la procrastinación...&lt;br /&gt;&lt;br /&gt;Haz que las tareas luzcan en tu mente fáciles y pequeñas. ("He escrito muchas tareas excelentes, esta es solo una más")&lt;br /&gt;&lt;br /&gt;Haz solo una parte de la tarea a la vez ("Esta noche solo revisaré los libros. Después, les echaré un vistazo a todos")&lt;br /&gt;&lt;br /&gt;Plan de cinco-minutos: Trabaja en algo por solo cinco minutos. Al final, cambia a algo más si tú quieres. Lo más probable es que te involucres lo suficiente como para seguir adelante.&lt;br /&gt;&lt;br /&gt;Anuncia tus planes de lograr algo, y deja que la presión de tus compañeros te impulse hacia adelante. ("Les dije a todos que iba a terminar esta noche")&lt;br /&gt;&lt;br /&gt;Utiliza a un buen amigo como modelo positivo. Si tienes problemas para concentrarte, estudia en presencia de alguien que no lo está.&lt;br /&gt;&lt;br /&gt;Modifica tu ambiente - si no puedes estudiar en casa, busca un lugar donde puedas hacerlo o cambia tu situación en casa.&lt;br /&gt;&lt;br /&gt;Algunas personas encuentran que simplemente escribiendo los momentos razonables de comienzo y detención les ayuda a ponerse en marcha.&lt;br /&gt;&lt;br /&gt;Finalmente, debes entender que en su forma más fundamental procrastinas para evitar frustrarte. Los procrastinadores posponen para evitar la frustración. Así pues tendrás que entender y aceptar esto. Tendrás que educarte a ti mismo a tener un mayor nivel de frustración teniendo capacidad. Todo esto es más fácil decirlo que hacerlo, ¡lo sé! solo trabaja en ello. Soluciona tus problemas. Si lo haces habrás hecho un avance significativo y serás una persona mucho pero mucho más feliz ¡garantizado!&lt;br /&gt;&lt;br /&gt;Y tú, procrastinas, postergas, pospones, te enojas, te frustras, etc. etc. ¡ja! porqué no en lugar de buscar más calificativos comienzas ¡ya! a hacer lo que has procrastinado, postergado, pospuesto,..., etc., etc...&lt;br /&gt;&lt;br /&gt;Leído en &lt;a href="http://www.indiahowto.com/how-to-stop-procrastinating.html"&gt;indiahowto.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-4076679033520593892?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/Fj1SmnoVK1g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/4076679033520593892/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2008/09/procrastinar-o-no-procrastinar.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/4076679033520593892" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/4076679033520593892" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/Fj1SmnoVK1g/procrastinar-o-no-procrastinar.html" title="Procrastinar o no procrastinar..." /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_t1WQBJYuFhI/SMzeev7C-kI/AAAAAAAAACM/-JlJ9ZjBpnM/s72-c/Procrastination.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2008/09/procrastinar-o-no-procrastinar.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-5568990751069220078</id><published>2008-09-12T00:54:00.006-05:00</published><updated>2008-09-12T10:44:15.341-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sociedad" /><category scheme="http://www.blogger.com/atom/ns#" term="multitarea" /><category scheme="http://www.blogger.com/atom/ns#" term="productividad" /><category scheme="http://www.blogger.com/atom/ns#" term="cultura" /><title type="text">El mito de la multitarea</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t1WQBJYuFhI/SMoCo7kvWsI/AAAAAAAAACE/NzT2ffmyHcA/s1600-h/multitasking.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_t1WQBJYuFhI/SMoCo7kvWsI/AAAAAAAAACE/NzT2ffmyHcA/s320/multitasking.jpg" alt="El mito de la multitarea" id="BLOGGER_PHOTO_ID_5245007618236177090" border="0" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;En una de las tantas cartas que le escribió a su hijo por los años 1740s, Lord Chesterfield le dio el siguiente consejo: "Hay tiempo suficiente en el transcurso del día para cualquier cosa, si haces una a la vez, pero no te alcanzará el resto del año si hicieras dos cosas al mismo tiempo." Para Chesterfield, la atención singular no fue solo una manera práctica de estructurar el tiempo; fue un distintivo de inteligencia. "Esta atención tranquila y despreocupada hacia un objeto, es una clara cualidad de un genio importante; como la prisa, movimientos bruscos, y la agitación, son los síntomas infalibles de una mente débil y frívola".&lt;br /&gt;&lt;br /&gt;En los tiempos modernos, la prisa, los movimientos bruscos, y la agitación llegan a ser estilos de vida regulares para muchas personas—tanto es así que hemos adoptado una palabra para describir nuestros esfuerzos para responder a las muchas exigencias apremiantes de nuestro tiempo: &lt;em&gt;la multitarea&lt;/em&gt;. Usado por décadas para describir las habilidades de procesamiento paralelo de las computadoras, la multitarea es ahora el intento humano de hacer rápidamente tantas cosas, como sea posible, de preferencia reuniendo el poder del mayor número de tecnologías como sea posible.&lt;br /&gt;&lt;br /&gt;A finales de los 90s y principios del 2000, uno sentía una especie de euforia sobre las posibilidades de la multitarea. Los comerciales de los nuevos equipos electrónicos—particularmente la primera generación de dispositivos digitales de mano—celebraron la idea de utilizar la tecnología para lograr varias cosas a la vez. La palabra multitarea comenzó a aparecer en las "habilidades" de los curriculums, como trabajadores de oficina diseñados a sí mismos como de alta tecnología, es decir, integrantes del equipo de alto rendimiento. "Siempre hemos hecho multitarea—la incapacidad para caminar y masticar chicle es una burla—pero nunca tan intensamente o auto-consciente como ahora", James Gleick en su libro &lt;span style="font-weight: bold; font-style: italic;"&gt;Faster&lt;/span&gt; de 1999 escribió: "Somos conocedores de la multitarea—expertos en multitudes, presiones, embarques, y empalmes de distintas actividades en todos nuestros-muy-limitados momentos". Un artículo del &lt;span style="font-style: italic;"&gt;New York Times Magazine&lt;/span&gt; de 2001 preguntó, "¿Quien recuerda la vida antes de la multitarea? En estos días todos lo hacemos". El artículo ofrecía consejos de "Como Multitarear" con sugerencias sobre cómo darle el ejercicio adecuado al "punto medular" del cerebro.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;br /&gt;Recientemente, han comenzado a surgir retos para el espíritu de la multitarea. Numerosos estudios han mostrado el peligro en ocasiones fatal del uso de los teléfonos celulares y otros dispositivos electrónicos por ejemplo mientras manejas, y en varios estados ya se ha prohibido esa forma particular de multitarea. En el mundo de los negocios, donde las preocupaciones por la administración del tiempo son recurrentes, se han puesto anuncios sobre las distracciones en el lugar de trabajo por una creciente cultura sobre la multitarea. En 2005, la BBC reportó sobre un estudio de investigación, financiado por Hewlett-Packard y llevado a cabo por el Instituto de Psiquiatría de la Universidad de Londres, el cual encontró que, "Los trabajadores distraídos por llamadas telefónicas y correos electrónicos disminuían su CI(Coeficiente Intelectual) más del doble que los fumadores de marihuana". El psicólogo al frente de este estudio se refirió a esta nueva "infomania" como un serio problema para la productividad laboral. Un artículo del &lt;em&gt;Harvard Business Review's&lt;/em&gt; "Descubriendo Ideas" del 2007 fue la noción de Linda Stone "atención parcial continua", el cual puede ser entendido como una subespecie de la multitarea: al usar el poder de cómputo móvil con Internet, estamos "en una búsqueda constante de oportunidades para tener lo último en contactos, eventos y actividades en un esfuerzo para no perdernos de nada".&lt;br /&gt;&lt;br /&gt;El Dr. Edward Hallowell, psiquiatra de Massachusetts especializado en el tratamiento de desórdenes de déficit de atención/hiperactividad y que ha escrito un libro con el título &lt;span style="font-weight: bold; font-style: italic;"&gt;CrazyBusy&lt;/span&gt;, ha ofrecido terapias para combatir la multitarea extrema por años; en su libro describe la multitarea como "una actividad mítica en la que las personas creen que pueden hacer dos o más tareas simultáneamente". En un artículo del 2005, describió una nueva condición, "Mal de Déficit de Atención (MDA)", el cual cree que no está controlado en el mundo de los negocios. El MDA es "una respuesta pura al ambiente de híper-movimiento en el cual vivimos", escribe Hallowell, y sus síntomas característicos imitan a los de la Enfermedad de Déficit de Atención (EDA). "Nunca en la historia del cerebro humano se le había pedido que rastreara tanta información", argumenta Hallowell, y este reto "puede controlarse solamente diseñando nuestro ambiente y nuestra salud física y emocional". Restringir la multitarea es esencial. El autor de Best-sellers de consejos de negocios Timothy Ferriss hace honor también sobre las virtudes de "una-tarea-a-la-vez" en su libro, &lt;span style="font-weight: bold; font-style: italic;"&gt;The 4-Hour Workweek&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;La multitarea puede tener también repercusiones en la economía. Un estudio hecho por investigadores de la Universidad de California en Irvine monitoreó las interrupciones entre los trabajadores de una oficina; y encontraron que estos tomaban un promedio de 25 minutos en reponerse de las interrupciones tales como las llamadas telefónicas o contestar correos electrónicos y regresar a su trabajo original. Jonathan B. Spira, analista de investigación de negocios de la firma Basex, en una discusión con el &lt;span style="font-style: italic;"&gt;New York Times&lt;/span&gt; en el 2007, estimó que la multitarea extrema—sobrecarga de información—le costó a la economía Estadounidense una pérdida de productividad al año estimada en $650 billones de dólares.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Cambiar nuestra mentalidad&lt;/span&gt;&lt;br /&gt;Para entender mejor el fenómeno de la multitarea, neurólogos y psicólogos han estudiado el funcionamiento del cerebro. En 1999, Jordan Graffman, jefe de neurociencia cognoscitiva del Instituto de Paros y Desórdenes Neurológicos, usó escaneos de imágenes de resonancia magnética funcional(fMRI en inglés) para determinar que cuando las personas enfrentan el "cambio de tarea" —lo que es lo mismo, comportamiento de multitarea— el flujo de sangre se incrementa en la región de la corteza frontal llamado área Brodmann 10.(El flujo de sangre en regiones particulares del cerebro se toma como una indicación intermediaria de actividad en esas regiones). "Esta es presumiblemente la última parte del cerebro en evolucionar, la más excitante y misteriosa", dijo Graffman al &lt;span style="font-style: italic;"&gt;New York Times&lt;/span&gt; en 2001—agregando, en tono exagerado, "Es lo que nos hace más humanos".&lt;br /&gt;&lt;br /&gt;Es también lo que hace a la multitarea una pobre estrategia de aprendizaje a largo plazo. Otros estudios, como los realizados por el psicólogo René Marois de la Universidad de Vanderbilt, han usado el fMRI para demostrar la respuesta del cerebro para manejar muchas tareas. Marois encontró evidencia de una "selección en respuesta a un cuello de botella" que ocurre cuando el cerebro es forzado a responder a varios estímulos al mismo tiempo. Como resultado, el cambio de tarea genera una pérdida de tiempo en lo que el cerebro determina lo que va a hacer. El psicólogo David Meyer de la Universidad de Michigan cree que en lugar de un cuello de botella cerebral, está un proceso de "control ejecutivo adaptado", el cual "agenda apropiadamente los procesos para obedecer instrucciones sobre sus prioridades relativas y de orden serial", como lo describió para el &lt;span style="font-style: italic;"&gt;New Scientist&lt;/span&gt;. A diferencia de otros investigadores estudiosos de la multitarea, Meyer es optimista en qué, con entrenamiento, el cerebro puede aprender a cambiar de tareas más efectivamente, y existe algo de evidencia sobre que ciertas tareas simples se prestan para tal práctica. Sin embargo, su investigación encontró también que la multitarea contribuye a la liberación de hormonas de estrés y adrenalina, que puede causar problemas de salud a largo plazo si no se controlan, y contribuye a la pérdida de memoria de corto plazo.&lt;br /&gt;&lt;br /&gt;En estudios recientes, Russell Poldrack, psicólogo de la Universidad de California en Los Angeles, encontró que "la multitarea afecta de manera adversa el aprendizaje. Incluso si aprendes mientras haces multitarea, ese aprendizaje es menos flexible y más especializado, de manera que no puedes recordar la información fácilmente". Su investigación demuestra que la gente usa distintas áreas del cerebro para aprender y almacenar nueva información cuando están distraídos: escaneos cerebrales de personas que están distraídas o en multitarea muestran actividad en cada hemisferio del cerebro frente al tálamo, región del cerebro que tiene que ver con el aprendizaje de nuevas habilidades; los escaneos cerebrales de personas que no están distraídas muestran actividad en el hipocampo, región que tiene que ver con almacenar y recordar información. Hablando sobre su investigación en la National Public Radio, Poldrack advirtió, "Debemos estar conscientes que hay un precio en la manera en que nuestra sociedad está cambiando, que los humanos no están construidos para trabajar de esta manera. Estamos construidos para centrarnos. Y cuando nos vemos forzados a multitarear, nosotros mismos nos encaminamos a quizás ser menos eficientes en el largo plazo incluso cuando en ocasiones sintamos que estamos siendo más eficientes".&lt;br /&gt;&lt;br /&gt;Si, como Poldrack concluye, "la multitarea cambia la manera en que las personas aprenden", que significado tendrá para los niños y adolescentes de hoy, que crecen con excesos de nuevas tecnologías educacionales y de entretenimiento, ¿multitarea entusiasta a temprana edad? Poldrack llama a esto la "pregunta del millón". La multitarea mediática—esto es, el uso simultáneo de varios medios, como la televisión, el Internet, video juegos, mensajes de texto, teléfonos y correo electrónico—está en claro crecimiento, como lo mostró un reporte en 2006 de la Fundación Familia Kaiser: en 1999, las personas solo emplearon el 16 por ciento de su tiempo para usar cualquiera de esos medios; para 2005, 26 por ciento del tiempo fue empleado en multitarea. "Multitareo cada segundo que paso en Internet", confesó un participante del estudio. "En este preciso momento estoy viendo la TV, revisando mi correo electrónico cada dos minutos, leyendo un grupo de noticias sobre la muerte de JFK, quemando música en un CD, y escribiendo este mensaje".&lt;br /&gt;&lt;br /&gt;El reporte Kaiser mostró varios factores que incrementaban la probabilidad de multitarear con varios medios, incluyendo "usar la computadora y ver televisión desde la misma". También, los tipos de personalidad con "sensación de buscar" son más propensos a multitarear, como lo son aquellos en "casas con muchas televisiones". La imagen que surge de estos pubertos expertos en multitarear es de una generación con gran facilidad técnica e inteligencia pero de extrema impaciencia, insatisfechos con la lentitud y con el silencio incómodo: "Me aburro sino se hace todo a la vez, ya que para todo tienes que esperar—cuando se carga una página web, los comerciales en la TV, etc." dijo un participante. El reporte concluye con una peculiar nota, tal vez con la intención de ser optimista: "En este mundo cargado de medios, parece que los cerebros que más se adapten a la multitarea trascenderán y estos cambios serán seleccionados naturalmente" señala el informe. "Después de todo, la información es poder, y si alguien es capaz de procesar más información al mismo tiempo, tal vez se pueda ser más poderoso". Esto es Darwinismo tecno-social, naturaleza roja en pixel y garra.&lt;br /&gt;&lt;br /&gt;Otros expertos no están tan seguros. Como el neurólogo Jordan Graffman dijo para la revista &lt;span style="font-style: italic;"&gt;Time&lt;/span&gt;: "Los niños que se envían mensajes de texto mientras hacen la tarea, que juegan en línea y ven la TV, puedo predecir que no harán ningún bien en el largo plazo". "Creo que esta generación es de niños experimentales", la psicóloga educacional Jane Healy dijo a la &lt;span style="font-style: italic;"&gt;Crónica de San Francisco&lt;/span&gt;; que le preocupa que lleguen a adultos y que participen con "creencias prontas pero muy débiles". O cómo sugiere el novelista Walter Kirn en un hábil estudio en &lt;span style="font-style: italic;"&gt;El Atlántico&lt;/span&gt;, podríamos ser guiados a una "Recesión de Déficit de Atención".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Poniendo atención&lt;/span&gt;&lt;br /&gt;Cuando hablamos de multitarea, realmente hablamos de la atención: el arte de poner atención, la habilidad de cambiar nuestra atención, y, más ampliamente, de ejercer juicios sobre en lo que vale la pena poner atención. Las personas que alcanzan grandes logros a menudo atribuyen su éxito a una habilidad fina y pulida para prestar atención. Cuando se le preguntó a Isaac Newton sobre su talento natural, respondió que si hizo tantos descubrimientos, se debió a "que era paciente cuando ponía atención".&lt;br /&gt;&lt;br /&gt;William James, escribió extensamente sobre las variedades de atención humana. En &lt;span style="font-weight: bold;"&gt;Los Principios de la Psicología&lt;/span&gt; (1890), marcó las diferencias entre "atención sensorial", "atención intelectual", "atención pasiva" entre otras, y nombró como "oscuridad caótica sin forma" las mentes de las personas que eran incapaces de poner atención. James comparó nuestro flujo de pensamientos con un río, y sus observaciones marcaron los "cuellos de botella" cognitivos descritos más tarde por los neurólogos, él escribió: "En general, predomina el flujo simple y sencillo, las cosas se desplazan por la gravedad, y la atención sin esfuerzo es la regla". "Pero hay intervalos en que una obstrucción, un retroceso, un detenimiento abrupto ocurre, detiene el momento, fluye en círculo, y temporalmente hace que las cosas se muevan en otro sentido".&lt;br /&gt;&lt;br /&gt;Para James, la atención constante era la condición por defecto de una mente madura, un estado ordinario deshecho sólo por la perturbación. Para nosotros cien años después, esa imagen plácida puede parecer extraña—como si representara un mundo pasado. En lugar de eso, la multitarea adulta de hoy encuentra más familiaridad con la descripción de James sobre la mente temprana: una "extrema movilidad de atención" que "hace que el joven sienta que pertenece menos a sí mismo que a cualquier objeto que atrapa su atención". Para algunos, James señaló que esta estimulación nunca es superada; tales personas solo hacen su trabajo "en los intersticios de su mente errante". Como Chesterfield, James creyó que la transición de la distracción temprana a la atención madura era en gran parte resultado del dominio personal y la disciplina—y así era como mostraba carácter. "La facultad de volver voluntariamente a una atención errante, una y otra vez", escribió, "es la raíz del juicio, carácter y albedrío".&lt;br /&gt;&lt;br /&gt;Hoy en día, nuestra voluntad colectiva de prestar atención parece bastante débil. Requerimos el consejo de libros que nos enseñen como evitar distraernos. En el futuro no muy lejano pudiéramos inclusive usar nuevos dispositivos para que nos ayuden a superar el déficit de atención no deseado creado por los gadgets de hoy. Como sugirió recientemente un artículo del &lt;span style="font-style: italic;"&gt;New York Times&lt;/span&gt;, "La investigación avanzada puede ayudar a crear tecnología intuitiva, como sensores o software inteligente que los trabajadores puedan cargar con sus configuraciones y prioridades para servir como 'ayuda extra' de alta tecnología para aligerar la difícil situación de la multitarea moderna". Quizás aceptemos como algo natural una computadora controladora—como los dispositivos puestos en los motores para que las personas no rebasen cierto límite de velocidad. Nuestros controladores tecnológicos podrían servirnos como recordatorios para establecer límites mentales cuando tratemos de hacer mucho, demasiado rápido ó todo a la vez.&lt;br /&gt;&lt;br /&gt;Por otra parte, quizás simplemente nos adaptaremos y aceptemos lo que James llamó "falta de atención adquirida". Demasiados correos electrónicos, el celular sonando, la televisión alta, los podcasts—todo esto puede convertirse en ruido de fondo, como el "'din' de una fundidora o de una fábrica" que James observó que los trabajadores apenas evitaban la primera vez, pero que eventualmente se convirtió en parte de su rutina diaria. Para la generación joven de multitareadores, el gran 'din' electrónico es una parte esperada de la vida diaria. Y dado lo que ya nos mostró la evidencia anecdótica y la neurociencia, este estado de constante auto-distracción intencional podría ser de profundo detrimento para individuos y el bienestar cultural. Cuando la gente hace su trabajo solo en los "intersticios de su mente errante", con migajas de atención racionadas entre otras muchas tareas, su cultura puede ganar en información, pero seguramente será débil en sabiduría&lt;br /&gt;&lt;br /&gt;Leído en: &lt;a href="http://www.thenewatlantis.com/publications/the-myth-of-multitasking"&gt;thenewatlantis.com&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-5568990751069220078?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/C_IHckwe34M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/5568990751069220078/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2008/09/el-mito-de-la-multitarea.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/5568990751069220078" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/5568990751069220078" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/C_IHckwe34M/el-mito-de-la-multitarea.html" title="El mito de la multitarea" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_t1WQBJYuFhI/SMoCo7kvWsI/AAAAAAAAACE/NzT2ffmyHcA/s72-c/multitasking.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2008/09/el-mito-de-la-multitarea.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-8107960283713266625.post-2243207348050140292</id><published>2008-08-13T21:49:00.030-05:00</published><updated>2008-08-15T17:54:57.553-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sistemas" /><category scheme="http://www.blogger.com/atom/ns#" term="administración" /><category scheme="http://www.blogger.com/atom/ns#" term="multitarea" /><category scheme="http://www.blogger.com/atom/ns#" term="productividad" /><title type="text">Perjudiciales las interrupciones en las labores humanas</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;p&gt;Cuando estás a cargo de un equipo de programadores, una de las primeras cosas que debes aprender a hacer bien es distribuir el trabajo. O lo que es lo mismo &lt;em&gt;darle a las personas qué hacer&lt;/em&gt;. Un ejemplo es cuando depositas archivos en sus laps. El cómo decidas cuales archivos depositar en qué laps es una de las áreas donde puedes tener increibles beneficios en cuanto a productividad si lo haces bien. Hazlo mal, y puedes crear una de esas situaciones enmarañadas donde nadie termina algo y todo mundo se queja de que "por aquí nunca se completa nada".&lt;br /&gt;&lt;br /&gt;Pongamos sobre la mesa el siguiente problema de programación para tener más claro el tema.&lt;br /&gt;&lt;br /&gt;Supón que tienes dos operaciones independientes que ejecutar, A y B. Cada operación requiere 10 segundos de tiempo del CPU. Tienes un CPU el cual, para propósitos de este ejemplo, no tiene nada más en cola.&lt;br /&gt;&lt;br /&gt;En nuestro CPU, la multitarea es opcional. Así que puedes hacer estas operaciones una después de la otra...&lt;br /&gt;&lt;/p&gt;&lt;div align="center"&gt;Procesamiento Secuencial&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;table align="center" cellpadding="3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="10" style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);"&gt;Operación A&lt;/td&gt;&lt;td colspan="10" style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);"&gt;Operación B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;01&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;02&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;03&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;04&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;05&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;06&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;07&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;08&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;09&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;10&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;11&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;12&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;13&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;14&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;15&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;16&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;17&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;18&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;19&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;20&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;...ó, empleando multitarea. Si aplicas multitarea, en este CPU en particular, las tareas corren un segundo a la vez, y un cambio entre ellas no toma ningún tiempo.&lt;/p&gt;&lt;div align="center"&gt;multitarea&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;table align="center" cellpadding="3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;01&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;02&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;03&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;04&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;05&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;06&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;07&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;08&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;09&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;10&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;11&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;12&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;13&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;14&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;15&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;16&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;17&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;18&lt;/td&gt;&lt;td style="background-color: rgb(170, 221, 153); color: rgb(0, 0, 0);" align="center"&gt;19&lt;/td&gt;&lt;td style="background-color: rgb(153, 170, 221); color: rgb(0, 0, 0);" align="center"&gt;20&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;¿Cual elegirias? La reacción de la mayoría de las personas es que la multitarea es lo mejor. En ambos casos, tienes que esperar 20 segundos para obtener ambas respuestas. Sin embargo, piensa sobre cuanto tiempo toma obtener el resultado de &lt;em&gt;cada&lt;/em&gt; operación.&lt;/p&gt;&lt;a id="more"&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;&lt;p&gt;En los dos casos, los resultados de la Operación B(mostrado en azul) toman 20 segundos en llegar. Ahora mira la Operación A. Con multitarea, los resultados toman 19 segundos en llegar... cuando con el procesamiento secuencial están listos en solamente 10 segundos.&lt;br /&gt;&lt;br /&gt;En otras palabras, en este ejemplo manipulado, el &lt;em&gt;tiempo promedio por operación&lt;/em&gt; es menor (15 segundos en lugar de 19.5) cuando usas procesamiento secuencial que cuando usas multitarea. (En realidad, no es un ejemplo manipulado como tal -- fue un problema real que tuvo que ser resuelto en el trabajo)&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;table align="center" cellpadding="3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-bottom: 2px solid;"&gt;Método&lt;/td&gt;&lt;td style="border-bottom: 2px solid;"&gt;Operación A tomó&lt;/td&gt;&lt;td style="border-bottom: 2px solid;"&gt;Operación B tomó&lt;/td&gt;&lt;td style="border-bottom: 2px solid;"&gt;Promedio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;Secuencial&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;10 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;20 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;15&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;Multitarea&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;19 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;20 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;19.5&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;br /&gt;Al principio mencioné que "un cambio entre tareas no toma tiempo." En realidad, en CPUs reales, este cambio toma algo de tiempo... basicamente el tiempo suficiente para guardar el estado de los registros actuales del CPU y cargar los registros de la otra tarea. Realmente, este cambio es imperceptible. Pero para hacerlo más interesante, imaginemos que el cambio toma medio segundo. Ahora las cosas no se ven tan bien:&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;table align="center" cellpadding="3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-bottom: 2px solid;"&gt;Método&lt;/td&gt;&lt;td style="border-bottom: 2px solid;"&gt;Operación A tomó&lt;/td&gt;&lt;td style="border-bottom: 2px solid;"&gt;Operación B tomó&lt;/td&gt;&lt;td style="border-bottom: 2px solid;"&gt;Promedio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;Secuencial&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;10 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;20 + 1 cambios = 20.5 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;15.25&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;Multitarea&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;19 + 18 cambios = 28 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;20 + 19 cambios = 29.5 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;28.75&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;br /&gt;Ahora... se que suena tonto pero ¿que pasaria si cada cambio toma todo un minuto?&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;table align="center" cellpadding="3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-bottom: 2px solid;"&gt;Método&lt;/td&gt;&lt;td style="border-bottom: 2px solid;"&gt;Operación A tomó&lt;/td&gt;&lt;td style="border-bottom: 2px solid;"&gt;Operación B tomó&lt;/td&gt;&lt;td style="border-bottom: 2px solid;"&gt;Promedio&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;Secuencial&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;10 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;20 + 1 cambios = 80 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;45 segundos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;Multitarea&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;19 + 18 cambios = 1099 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;20 + 19 cambios = 1160 segundos&lt;/td&gt;&lt;td style="background: rgb(255, 255, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0);"&gt;¡Casi 19 Minutos!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;br /&gt;A mayor tiempo en el cambio, la multitarea empeora.&lt;br /&gt;&lt;br /&gt;Eso no es tan alarmante, o ¿sí?. Habrá quienes digan que esto es estar "contra" la multitarea, es decir, "¿regresar a los días del DOS cuando tenías que salirte de WordPerfect para correr 1-2-3?".&lt;br /&gt;&lt;br /&gt;Ese no es el punto. Estarás de acuerdo conmigo en que en este tipo de ejemplo:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;em&gt;en promedio&lt;/em&gt; se obtienen resultados más rápidos con el procesamiento secuencial, y&lt;/li&gt;&lt;li&gt;entre más tiempo tome hacer un cambio(de tarea), mayor será la penalización tratándose de multitarea.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Ok, regresando al tema de administrar personas, no CPUs. El problema cuando administras &lt;em&gt;programadores&lt;/em&gt;, específicamente, es que el cambio de tareas toma, de veras, de veras, de veras, mucho tiempo. Eso se debe a que programar es la clase de tarea donde tienes que mantener muchas cosas en tu cabeza en ese momento. Entre más cosas recuerdes a la vez, más productivo eres programando. Un programador que trabaja a toda su capacidad está almacenando millones de cosas en su cabeza a la vez: desde nombres de variables, estructuras de datos, APIs importantes, los nombres de las funciones que ya hizo y usa regularmente, inclusive el nombre del directorio donde almacena el código fuente. Si se manda a ese programador de vacaciones tres semanas a Cancún, olvidará &lt;em&gt;todo&lt;/em&gt;. Parece que el cerebro humano lo saca de su memoria RAM de corto plazo y lo mueve a una cinta de respaldo que toma una eternidad en cargar.&lt;br /&gt;&lt;br /&gt;¿Por cuanto tiempo? bueno, eso depende de cada ambiente de trabajo pero en general cuando te ausentas semanas te toma regularmente varios días ponerte al corriente nuevamente con la dinámica de antes.&lt;br /&gt;&lt;br /&gt;A nivel personal -- has notado alguna vez como cuando le asignas a una persona un trabajo hace un muy buen trabajo, pero si le asignas &lt;em&gt;dos&lt;/em&gt; trabajos a esa misma persona ¿no termina ni una ni otra?. Hará uno de ellos abandonando el otro, ó hará ambos trabajos pero muy lentos. Ese es el porqué en los trabajos de programación se toma tanto tiempo en cambiar de uno a otro. Cuando tengo dos proyectos de programación al mismo tiempo, alternarlos me toma algo así como 6 horas. Para un día de 8 horas, eso significa que la multitarea reduce mi productividad a 2 horas al día. Bastante triste.&lt;br /&gt;&lt;br /&gt;A como se vé, si le das a una persona dos cosas que hacer, deberías agradecerle si trabaja solo en una, porque va a conseguir hacer más cosas y terminarlas antes del tiempo promedio. De hecho, la idea real de todo esto es que &lt;em&gt;nunca deberías permitirle a las personas trabajar en más de una cosa a la vez&lt;/em&gt;. Asegurándote de que saben de qué se trata. Los buenos administradores ven sus responsabilidades como el &lt;em&gt;quitar obstáculos&lt;/em&gt; para que las personas se puedan enfocar en una &lt;em&gt;sola cosa&lt;/em&gt; y lo terminen realmente. Cuando surgen emergencias, vé si las puedes manejar tú antes de delegarlas a un programador que está profundamente concentrado en un proyecto.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Leído en &lt;a href="http://www.joelonsoftware.com/articles/fog0000000022.html"&gt;joelonsoftware.com&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8107960283713266625-2243207348050140292?l=sartigas.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blog-a-tech/~4/1x9zXubOsmU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sartigas.blogspot.com/feeds/2243207348050140292/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://sartigas.blogspot.com/2008/08/interrupciones-en-las-tareas-humanas_13.html#comment-form" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2243207348050140292" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8107960283713266625/posts/default/2243207348050140292" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blog-a-tech/~3/1x9zXubOsmU/interrupciones-en-las-tareas-humanas_13.html" title="Perjudiciales las interrupciones en las labores humanas" /><author><name>Estergios Artigas</name><uri>http://www.blogger.com/profile/16088291610241822376</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd="http://schemas.google.com/g/2005" name="OpenSocialUserId" value="10271705334055878508" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://sartigas.blogspot.com/2008/08/interrupciones-en-las-tareas-humanas_13.html</feedburner:origLink></entry></feed>
