tag:blogger.com,1999:blog-52371086496928441272024-02-07T04:11:19.792-05:00[CS] natoBlog de Investigación & Desarrollo (R&D) académico-universitaria en la carrera de Ciencia de la Computación, en la escuela de Informática de la Universidad Nacional de Trujillo - Trujillo, PerúRenato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.comBlogger51125tag:blogger.com,1999:blog-5237108649692844127.post-14218665256567707202019-02-16T21:18:00.001-05:002019-02-16T21:25:58.589-05:00ColumnDelimiter en SSIS<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Trabajar con Integration Services, puede ser muy práctico para crear soluciones ETL de manera gráfica como interacción entre SQL, C#, y accesos a diferentes inputs y outputs;</div>
<div class="separator" style="clear: both; text-align: left;">
Pero también puede resultar todo un dolor de cabeza para realizar un cambio en 50 archivos planos CSV, donde tienes que ingresar conexión por conexión, para editar el delimitador de columna.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Peor aún, es querer realizar el cambio en el XML correspondiente al paquete dtsx, y no tener la codificación correspondiente para cada símbolo a usar como delimitador.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Como primer paso, debemos abrir el paquete a modificar, en edición de código (presionando F7 sobre el paquete, o escogiendo la opción del menú desplegable al hacer clic sobre dicho paquete).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Luego, al visualizar el código XML, debemos buscar lo siguiente:</div>
<div class="separator" style="clear: both; text-align: left;">
<b>ColumnDelimiter</b></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Dependiendo de la versión de Visual Studio, podrá verse así:</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="html-tag" style="font-family: monospace; font-size: 13px;"><DTS:Property<span class="html-attribute"> <span class="html-attribute-name">DTS:Name</span>="<span class="html-attribute-value">ColumnDelimiter</span>"</span><span class="html-attribute"> <span class="html-attribute-name">xml:space</span>="<span class="html-attribute-value">preserve</span>"</span>></span><span class="text" style="font-family: monospace; font-size: 13px;">XXX</span><span class="html-tag" style="font-family: monospace; font-size: 13px;"></DTS:Property></span></div>
<div class="separator" style="clear: both; text-align: left;">
o así (VS2017):</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="html-attribute" style="font-family: monospace; font-size: 13px;"><span class="html-attribute-name">DTS:</span><span class="html-attribute-value">ColumnDelimiter="XXX"</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Donde XXX es la notación SSIS (SQL Server Integration Services).</div>
<div class="separator" style="clear: both; text-align: left;">
A continuación, un mapeo de estos valores:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 256px;">
<colgroup><col style="mso-width-alt: 3986; mso-width-source: userset; width: 82pt;" width="109"></col>
<col style="mso-width-alt: 3913; mso-width-source: userset; width: 80pt;" width="107"></col>
</colgroup><tbody>
<tr height="20" style="height: 15.0pt;">
<td class="xl66" height="20" style="height: 15.0pt; width: 82pt;" width="109"><b>Notación
SSIS</b></td>
<td class="xl66" style="border-left: none; width: 80pt;" width="107"><b>Elemento</b></td>
</tr>
<tr height="20" style="height: 15.0pt;">
<td class="xl65" height="20" style="border-top: none; height: 15.0pt;">_x000D__x000A_</td>
<td class="xl65" style="border-left: none; border-top: none;">{CR}{LF}</td>
</tr>
<tr height="20" style="height: 15.0pt;">
<td class="xl65" height="20" style="border-top: none; height: 15.0pt;">_x003B_</td>
<td class="xl65" style="border-left: none; border-top: none;">Punto y coma (;)</td>
</tr>
<tr height="20" style="height: 15.0pt;">
<td class="xl65" height="20" style="border-top: none; height: 15.0pt;">_x002C_</td>
<td class="xl65" style="border-left: none; border-top: none;">Coma (,)</td>
</tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>. También en <a href="http://twitter.com/natorrante" target="_blank"><b>twitter</b></a>. También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-61146500853086580172016-05-17T17:54:00.004-05:002023-02-24T15:21:25.083-05:00El error de la base octal en Java<div class="separator" style="clear: both; text-align: center;">
<a href="http://67.media.tumblr.com/8f4a4cfa6963cc503178f9e22774f25f/tumblr_o7cdupE4If1rrx7uko1_500.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://67.media.tumblr.com/8f4a4cfa6963cc503178f9e22774f25f/tumblr_o7cdupE4If1rrx7uko1_500.png" height="252" width="320" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>Todo empezó con una sencilla pregunta</b></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
¿Cuál es el resultado de la siguiente línea de código en java?:</div>
<blockquote class="tr_bq" style="clear: both;">
<span class="kw4" style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; font-weight: bold; line-height: 13px; white-space: pre-wrap;">int</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> suma </span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">=</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> 023 </span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">+</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> 010</span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">;</span><br />
<div class="separator" style="clear: both;">
</div>
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system" style="background-color: #f8f8f8; color: #000060; font-family: monospace; font-size: 12px; line-height: 20px; text-decoration: none; white-space: pre-wrap;"><span class="kw3" style="color: #003399; line-height: 13px;">System</span></a><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;">.</span><span class="me1" style="background-color: #f8f8f8; color: #006633; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">out</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;">.</span><span class="me1" style="background-color: #f8f8f8; color: #006633; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">println</span><span class="br0" style="background-color: #f8f8f8; color: #009900; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">(</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;">suma</span><span class="br0" style="background-color: #f8f8f8; color: #009900; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">)</span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">;</span> </blockquote>
<div class="separator" style="clear: both;">
Pero utilizar la regla de "el cero a la izquierda no tiene valor" es la alternativa equivocada:</div>
<div class="separator" style="clear: both;">
Lo que en lenguaje natural procesamos como una suma de resultado = 33;</div>
<div class="separator" style="clear: both;">
para Java, el 0 a la izquierda se utiliza para expresar números en base 8, por lo que la suma tiene un resultado distinto:</div>
<div class="separator" style="clear: both;">
</div>
<ul>
<li>023 = 2*8 + 3 = 19:</li>
<li>010 = 1*8 + 0 = 8;</li>
<li>19 + 8 = 27.</li>
</ul>
<br />
<div class="separator" style="clear: both;">
<span style="font-size: x-small;">Pueden comprobarlo en <b><a href="https://ideone.com/" rel="nofollow" target="_blank">este compilador online</a></b>, copiando/pegando las líneas de código puestas arriba.</span></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Entonces, dicho con expresiones Java: <span class="nu0" style="background-color: #f8f8f8; color: #cc66cc; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">23</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> </span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">!=</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> 023</span></div>
<div class="separator" style="clear: both;">
<span style="font-size: x-small;">Y nótese que hasta el analizador web de sintaxis los muestra de distintos colores.</span></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>Bases aritméticas en Java</b></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Java comprende el uso de base decimal, hexadecimal, octal y binaria.</div>
<div class="separator" style="clear: both;">
Y se utilizan de la siguiente manera:</div>
<blockquote class="tr_bq" style="clear: both;">
<span style="background-color: #f8f8f8; color: #666666; font-family: monospace; font-size: 12px; font-style: italic; line-height: 13px; white-space: pre-wrap;">// Base decimal (10), comprende dígitos [0-9]</span>
<br />
<div class="separator" style="clear: both;">
</div>
<span class="kw4" style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; font-weight: bold; line-height: 13px; white-space: pre-wrap;">int</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> decimal </span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">=</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> </span><span class="nu0" style="background-color: #f8f8f8; color: #cc66cc; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">495</span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">;</span> </blockquote>
<blockquote class="tr_bq" style="clear: both;">
<span class="co1" style="background-color: #f8f8f8; color: #666666; font-family: monospace; font-size: 12px; font-style: italic; line-height: 13px; white-space: pre-wrap;">// Base hexadecimal (16), empieza con 0x o 0X, comprende dígitos y letras [0-9A-Fa-f]</span><br />
<div class="separator" style="clear: both;">
</div>
<span class="kw4" style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; font-weight: bold; line-height: 13px; white-space: pre-wrap;">int</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> hexa </span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">=</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> 0x1EF</span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">;</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> </span> </blockquote>
<blockquote class="tr_bq" style="clear: both;">
<span class="co1" style="background-color: #f8f8f8; color: #666666; font-family: monospace; font-size: 12px; font-style: italic; line-height: 13px; white-space: pre-wrap;">// Base octal (8), empieza con 0, comprende dígitos [0-7]</span><br />
<div class="separator" style="clear: both;">
</div>
<span class="kw4" style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; font-weight: bold; line-height: 13px; white-space: pre-wrap;">int</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> octal </span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">=</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> 0757</span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">;</span> </blockquote>
<blockquote class="tr_bq" style="clear: both;">
<span class="co1" style="background-color: #f8f8f8; color: #666666; font-family: monospace; font-size: 12px; font-style: italic; line-height: 13px; white-space: pre-wrap;">// Base binaria (2), empieza con 0b o 0B, y comprende dígitos [0-1]</span><br />
<div class="separator" style="clear: both;">
</div>
<span class="kw4" style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; font-weight: bold; line-height: 13px; white-space: pre-wrap;">int</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> binario </span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">=</span><span style="background-color: #f8f8f8; color: #000066; font-family: monospace; font-size: 12px; line-height: 20px; white-space: pre-wrap;"> 0b111101111</span><span class="sy0" style="background-color: #f8f8f8; color: #339933; font-family: monospace; font-size: 12px; line-height: 13px; white-space: pre-wrap;">;</span></blockquote>
<div class="separator" style="clear: both;">
<b>¿El problema es el lenguaje natural, o el problema es java?</b></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Así como el error de interpretación; puede surgir un error de concatenación (para algoritmos de seguridad y encriptación, por ejemplo)</div>
<div class="separator" style="clear: both;">
Entonces, pensando en calcular un número, internamente Java calculará su equivalente en base octal... lo que potencialmente podría significar un error.</div>
<div class="separator" style="clear: both;">
<br /></div>
<b>Mi propuesta:</b><br />
<i>Como la gente de <strike>Sun Microsystems</strike> Oracle sigue diariamente mi humilde blog</i>, propongo que -tal cual base 2 y base 16, utilicen una notación especial para base 8: 0b, 0x, y 0o respectivamente.<br />
(Y no, el "0" no se confunde con la "o", porque hasta la RAE ya eliminó la "ó" usada antiguamente para diferenciarla del cero).<br />
Así que aquí la lanzo, aunque sea otra idea muerta en el ciberespacio.<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>. También en <a href="http://twitter.com/natorrante" target="_blank"><b>twitter</b></a>. También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-91862712856388416142016-03-11T19:35:00.000-05:002016-03-11T19:35:15.573-05:00Carreras de Computación en el Perú (2006)Al año 2006, el club "Colegio de Ingenieros del Perú" contaba con un catálogo de nomenclaturas de carreras relacionadas a Computación:
<br />
<div>
<br style="font-family: arial, sans, sans-serif; font-size: 13px;" />
<table border="0" cellpadding="0" cellspacing="0" style="color: black; font-family: arial, sans, sans-serif; font-size: 13px;"><tbody>
<tr><td style="font-family: arial, sans-serif;"><table border="0" cellpadding="0" cellspacing="0" style="border-bottom-color: rgb(204, 204, 204); border-bottom-width: 1px; border-collapse: collapse; border-style: none none solid; font-size: 13px; table-layout: fixed; width: 0px;"><tbody>
<tr><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 0px;"></td><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 335px;"></td><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 60px;"></td><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 60px;"></td><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 60px;"></td></tr>
<tr><td style="background-color: #9fc5e8; border-bottom-color: rgb(2, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: #9fc5e8; border: 1px solid black; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Nombre</td><td style="background-color: #9fc5e8; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: solid solid solid none; border-top-color: black; border-width: 1px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Total</td><td style="background-color: #9fc5e8; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: solid solid solid none; border-top-color: black; border-width: 1px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Estado</td><td style="background-color: #9fc5e8; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: solid solid solid none; border-top-color: black; border-width: 1px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Privadas</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ciencias de la Computación</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">3</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">2</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Computación</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Computación Científica</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Estadística e Informática</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">3</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">3</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Computación y Sistemas</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">7</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">7</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Sistemas</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">39</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">19</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">20</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Sistemas de Información</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Sistemas de Información y Gestión</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Sistemas e Informática</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">12</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">4</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">8</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Sistemas Empresariales</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Sistemas y Computación</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Sistemas y Cómputo</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Sistemas y Seguridad Informática</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Software</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">4</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">3</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería de Tecnologías de Información y Sistemas</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería en Computación e Informática</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería en Informática y Sistemas</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería en Teleinformática</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería Industrial y Sistemas</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td></tr>
</tbody></table>
</td></tr>
<tr><td style="font-family: arial, sans-serif;"><table border="0" cellpadding="0" cellspacing="0" style="border-bottom-color: rgb(204, 204, 204); border-bottom-width: 1px; border-collapse: collapse; border-style: none none solid; font-size: 13px; table-layout: fixed; width: 0px;"><tbody>
<tr><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 0px;"></td><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 335px;"></td><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 60px;"></td><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 60px;"></td><td style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-left-color: initial; border-left-style: none; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-top-color: initial; border-top-style: none; border-width: 0px 1px 0px 0px; height: 0px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom; width: 60px;"></td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería Industrial con especialidad en Sistemas</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería Informática</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">12</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">4</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">8</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Ingeniería Informática y de Sistemas</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">7</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">3</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">4</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Matemática con especialidad en Computación</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">1</td><td style="background-color: white; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">0</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: #9fc5e8; border-bottom-color: black; border-left-color: black; border-right-color: black; border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">Total</td><td style="background-color: #9fc5e8; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">102</td><td style="background-color: #9fc5e8; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">42</td><td style="background-color: #9fc5e8; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">60</td></tr>
<tr><td style="background-color: #c8c8c8; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-left-color: initial; border-left-style: none; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: none; border-width: 0px 0px 1px; letter-spacing: 0px; overflow: hidden; padding: 0px; vertical-align: bottom;"><div style="font-size: 0px; min-height: 19px; overflow: hidden; width: 0px;">
</div>
</td><td style="background-color: white; border-bottom-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-style: none solid solid; border-top-color: initial; border-width: 0px 1px 1px; font-family: arial, sans, sans-serif; letter-spacing: 0px; overflow: hidden; padding: 0px 3px; vertical-align: bottom;"></td><td style="background-color: white; border-bottom-color: rgb(204, 204, 204); border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; letter-spacing: 0px; overflow: hidden; padding: 0px 3px; vertical-align: bottom;"></td><td style="background-color: #9fc5e8; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">41.18%</td><td style="background-color: #9fc5e8; border-bottom-color: black; border-left-color: initial; border-right-color: black; border-style: none solid solid none; border-top-color: initial; border-width: 0px 1px 1px 0px; font-family: arial, sans, sans-serif; font-size: 14px; font-weight: bold; letter-spacing: 0px; overflow: hidden; padding: 0px 3px 0px 0px; text-align: center; text-indent: 3px; vertical-align: bottom; white-space: nowrap;">58.82%</td></tr>
</tbody></table>
</td></tr>
</tbody></table>
</div>
<div>
<br />
A pesar de tener el mismo nombre, en varios de los casos, el contenido NO ES COMPATIBLE, y por lo tanto no es posible afirmar que dos profesionales con el mismo título sean compatibles.</div>
<div>
<br />
10 años después, no sé qué tanto han cambiado las cosas (tampoco encuentro una información parecida, actualizada).<br />
Pero sigue existiendo la misma ambigüedad e incompatibilidad entre las carreras.<br />
<br />
¿Habrá mejorado esta situación?</div>
Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-53508473845394938592016-02-18T23:36:00.001-05:002016-02-18T23:36:23.721-05:00El fenómeno a observar y el observador<div class="separator" style="clear: both; text-align: center;">
<a href="https://41.media.tumblr.com/df800e0e863801d2978e3fc8250ca6bb/tumblr_o2s1r3xRr41rrx7uko1_1280.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="247" src="https://41.media.tumblr.com/df800e0e863801d2978e3fc8250ca6bb/tumblr_o2s1r3xRr41rrx7uko1_1280.jpg" width="400" /></a></div>
<br />
<br />
Muchos hombres rebalsaron el agua de la bañera antes que Arquímedes;<br />
Muchas manzanas cayeron de los árboles desde el entonces jardín del Edén,<br />
y (la fuerza de) la avalancha de vapor pudo ser notada en cualquier momento desde que se hirvió agua en una olla con tapa.<br />
<br />
Todos estos casos ocurrieron eones antes de que su propio significado (y utilidad) sean percibidos.<br />
Obviamente, un descubrimiento casual involucra tanto el fenómeno a observar y un apropiado e inteligente observador.<br />
<b><br /></b>* Traducción libre, no literal<br />
<b>Walter Cannon</b>, <i>The Way of an Investigator</i> (1945)<br />
<br />
(Previamente publicado <a href="http://natorrante.com/2016/02/el-fenomeno-observar-y-el-observador.html" target="_blank">aquí</a>)Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-32065249045892540532015-06-23T17:51:00.000-05:002015-06-23T17:51:00.402-05:00Algoritmos de ordenación explicados con Danza húngara<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
En la universidad -antaño, en hojas y papel- la enseñanza de algunos algoritmos era muchísimo más compleja que ahora, tan dinámica y colaborativa.</div>
<div class="separator" style="clear: both; text-align: left;">
<strike>Al menos, no recuerdo a ningún grupo de las exposiciones haciendo esto para explicar sus temas</strike>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
No sólo por las plataformas MOOC, sino -en este caso-, porque alguien se atrevió a planificar y participar este baile, imitando el comportamiento de los algoritmos de ordenación...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Y si bien no soy nada fanático de las danzas en general, veo que puede llegar a ser muy útil y didáctica: Algoritmos de ordenación explicados con Danzas Húngaras.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
De todos modos, sugiero cambiarle la velocidad en las opciones para <strike>hacerlo más digerible</strike> ganar tiempo, son muchos vídeos y c/u de mínimo 5 minutos.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://40.media.tumblr.com/5975d4b37cbbff1e9f3e7f2b6f7b0ea4/tumblr_nqf5ugcl991rrx7uko1_400.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://40.media.tumblr.com/5975d4b37cbbff1e9f3e7f2b6f7b0ea4/tumblr_nqf5ugcl991rrx7uko1_400.png" height="200" width="181" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Además -después de todo- <b>no es óptimo</b> un algoritmo de ordenación que se demore casi 7 minutos en ordenar 10 elementos :-)</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<a name='more'></a><br /><br />
<div class="separator" style="clear: both; text-align: left;">
<b><a href="https://www.youtube.com/watch?v=ywWBy6J5gz8" rel="nofollow" target="_blank">Quick Sort</a>:</b></div>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/ywWBy6J5gz8" width="560"></iframe>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Entrando al <a href="https://www.youtube.com/user/AlgoRythmics/videos" rel="nofollow" target="_blank">canal de youtube de <b>AlgoRythmics</b></a>, encontrarán otros ordenamientos: Merge-Sort, Shell-Sort, Insert-Sort Select-Sort y Bubble-Sort.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>. También en <a href="http://twitter.com/natorrante" target="_blank"><b>twitter</b></a>. También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-49120280951767888712015-04-19T12:26:00.000-05:002015-04-19T12:26:46.087-05:00[Pensamiento Lateral] Monedas boca arriba y boca abajo<div class="separator" style="clear: both; text-align: left;">
Tengo un gusto particular por las preguntas de razonamiento, incluso mucho antes de enterarme que estas preguntas las hace Google al reclutar personal.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both;">
Hoy encontré una pregunta peculiar en este artículo:</div>
<div class="separator" style="clear: both;">
<a href="http://gestion.pe/empleo-management/anhela-trabajar-apple-ensaye-respuestas-estas-25-preguntas-2129231" rel="nofollow" target="_blank">¿Anhela trabajar en Apple? Ensaye respuestas a estas 25 preguntas</a>.</div>
<blockquote class="tr_bq" style="clear: both; text-align: left;">
Tienes 100 monedas desparramadas en un mesa, cada una con un lado de arriba distinto del de abajo. 10 de ellas están boca arriba, 90 están boca abajo. No puedes sentir, ver o averiguar de ninguna manera qué lado está boca arriba. Divide las monedas en dos montones de tal modo que haya el mismo número de monedas boca arriba en cada montón.</blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://41.media.tumblr.com/4454907fb54dc8c53276118a3954271d/tumblr_nn2db3eZsS1rrx7uko2_1280.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://41.media.tumblr.com/4454907fb54dc8c53276118a3954271d/tumblr_nn2db3eZsS1rrx7uko2_1280.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<a name='more'></a><br />
<div class="separator" style="clear: both; text-align: left;">
Tengo 2 respuestas para la pregunta (¿Alguien dijo <strike>Divergente</strike> <b>Pensamiento Lateral</b>?):</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://40.media.tumblr.com/cd225788285a9e3c080c0929babab6d1/tumblr_nn2db3eZsS1rrx7uko1_1280.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://40.media.tumblr.com/cd225788285a9e3c080c0929babab6d1/tumblr_nn2db3eZsS1rrx7uko1_1280.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Felizmente para mí, en el mundo real reclutan a los "divergentes", no los eliminan :)</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>1. La probabilística</b>:</div>
<div class="separator" style="clear: both; text-align: left;">
Tengo una altísima probabilidad de que, al coger 2 monedas, ambas estén boca abajo.</div>
<div class="separator" style="clear: both; text-align: left;">
Apilo 2 grupos de monedas (es indistinto la cantidad de monedas que tengan cada pila), y dejo para el tope superior esas 2 monedas "boca abajo".</div>
<div class="separator" style="clear: both; text-align: left;">
Así, en cada grupo, -estadísticamente- tengo el mismo número de monedas boca arriba: Cero.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://40.media.tumblr.com/3d0e61239b823590c54fd3947ba66c54/tumblr_nn2db3eZsS1rrx7uko3_400.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://40.media.tumblr.com/3d0e61239b823590c54fd3947ba66c54/tumblr_nn2db3eZsS1rrx7uko3_400.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">¿Podría ser tan fácil la respuesta?</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
* Esto funciona siempre que el criterio de evaluación de monedas boca arriba sea visual.</div>
<div class="separator" style="clear: both; text-align: left;">
Sino, dentro de cada montón, igual habrán monedas boca arriba y abajo, aunque igual no puedan identificarse.</div>
<div class="separator" style="clear: both; text-align: left;">
** El problema ahora reside en tener "suerte". Que ninguna de las 2 monedas del tope superior hayan estado boca arriba.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>2. Juego de Palabras:</b></div>
<div class="separator" style="clear: both; text-align: left;">
El enunciado dice "No puedes averiguar qué monedas están boca arriba"... pero no menciona nada respecto a las monedas boca abajo.</div>
<div class="separator" style="clear: both; text-align: left;">
Bajo esa premisa, podemos coger 10 monedas que estén boca abajo (previamente identificadas), y darles la vuelta.</div>
<div class="separator" style="clear: both; text-align: left;">
Tendremos -en el primer montón- 10 monedas boca arriba, y 80 monedas boca abajo.</div>
<div class="separator" style="clear: both; text-align: left;">
Y en el segundo montón, 10 monedas boca arriba, y nada más.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Y fin.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
¿A alguien se le ocurre alguna otra respuesta?</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>. También en <a href="http://twitter.com/natorrante" target="_blank"><b>twitter</b></a>. También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com1tag:blogger.com,1999:blog-5237108649692844127.post-15272514043282745542015-03-14T09:26:00.000-05:002015-03-15T22:33:28.910-05:00Los días de Pi<div>
<div class="separator" style="clear: both;">
<span style="background-color: white; color: #545454; font-family: arial, sans-serif; font-size: x-small; line-height: 18.2000007629395px;">π = </span><b>Pi = 3.14</b>, al cual ya se le conoce desde el colegio, en cursos de Geometría y Trigonometría.</div>
<div class="separator" style="clear: both;">
Y <span style="background-color: white; color: #545454; font-family: arial, sans-serif; font-size: x-small; line-height: 18.2000007629395px;">π = </span><b>3.14159(26535)</b>, si has seguido alguna ingeniería o alguna carrera de ciencia formal, como es -supongo- el público asiduo a este blog.</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://41.media.tumblr.com/98c0afe03dc75ad7afcdfe1b2daab76f/tumblr_nla5w3fW6M1rrx7uko1_r1_500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://41.media.tumblr.com/98c0afe03dc75ad7afcdfe1b2daab76f/tumblr_nla5w3fW6M1rrx7uko1_r1_500.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
De alguna u otra forma, el 14 de marzo no pasa desapercibido; sea bien porque es el cumpleaños de <a href="https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CBsQFjAA&url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FAlbert_Einstein&ei=uTAGVbG0G4qYNseMgdgH&usg=AFQjCNFHtP20fDk7wWqL7nZDC-6yiXcQiA&sig2=qT6f5hDKHy5GEDNk6iQDWQ&bvm=bv.88198703,d.eXY" rel="nofollow" target="_blank">Einstein</a>, o porque anglosajonamente se le conoce como el día de Pi.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://41.media.tumblr.com/48fd16dc29a6adbe7fefc01c5dae49a4/tumblr_nla5w3fW6M1rrx7uko2_r1_1280.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://41.media.tumblr.com/48fd16dc29a6adbe7fefc01c5dae49a4/tumblr_nla5w3fW6M1rrx7uko2_r1_1280.jpg" height="180" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">No, <b>la Vida de Pi</b> es otra historia... esto es sólo el <b>Día de Pi</b>.</td></tr>
</tbody></table>
<div class="separator" style="clear: both;">
<br /></div>
<a name='more'></a><div class="separator" style="clear: both;">
Si bien -casi- todo el planeta utiliza el formato: <b>día/mes/año</b>;</div>
<div class="separator" style="clear: both;">
y otra parte del parte del planeta usa el formato: <b>año/mes/día</b>;</div>
<div class="separator" style="clear: both;">
y se ve perfectamente justificado: crece o decrece.</div>
<div class="separator" style="clear: both;">
Y luego está el formato anglosajón: <b>mes/día/año</b>.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://36.media.tumblr.com/8b547050b11420c16020ba8d9278b176/tumblr_nla5w3fW6M1rrx7uko5_r1_1280.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://36.media.tumblr.com/8b547050b11420c16020ba8d9278b176/tumblr_nla5w3fW6M1rrx7uko5_r1_1280.png" height="143" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">El formato anglosajón para las fechas, rompiendo esquemas -y también estándares-.</td></tr>
</tbody></table>
<div class="separator" style="clear: both;">
En <a href="https://msdn.microsoft.com/es-es/library/ms187928.aspx" rel="nofollow" target="_blank">esta página de MS SQL Server</a> se encuentran varios -si no son todos- los estándares de fechas.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://40.media.tumblr.com/6de974ad358d08de63ae8549cff13c19/tumblr_nla5w3fW6M1rrx7uko6_r1_400.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://40.media.tumblr.com/6de974ad358d08de63ae8549cff13c19/tumblr_nla5w3fW6M1rrx7uko6_r1_400.png" height="320" width="272" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Pero -en fin- tenemos muchos días Pi para celebrar... los cuales expongo a continuación:</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>El día anglosajón de Pi:</b></div>
<div class="separator" style="clear: both;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://41.media.tumblr.com/275f0d67105db2d8075e81f5b1b0f583/tumblr_nla5w3fW6M1rrx7uko4_r1_400.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://41.media.tumblr.com/275f0d67105db2d8075e81f5b1b0f583/tumblr_nla5w3fW6M1rrx7uko4_r1_400.jpg" height="320" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Según el ya mencionado formato estadounidense, el día Pi (con horas, minutos y segundos) sería, tal cual la imagen:</div>
<span style="background-color: white; color: #545454; font-family: arial, sans-serif; font-size: x-small; line-height: 18.2000007629395px;">π = </span>Marzo 14, 2015 - 9:26:53<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Desafortunadamente, algunos no están conformes con el formato anglosajón...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>El día Java/Date de Pi: </b></div>
<div class="separator" style="clear: both; text-align: left;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: left;">
Al ejecutar este código en Java:</div>
<blockquote class="tr_bq" style="clear: both;">
<span style="color: blue;">public static void</span> <b>main</b>(String[] ars){<br />
Timestamp ts = <span style="color: blue;">new </span>Timestamp(314159265);<br />
System.<span style="color: #6aa84f;">out</span>.println(ts.toString());<br />
}</blockquote>
<div class="separator" style="clear: both;">
nos da como el resultado:</div>
<span style="background-color: white; color: #545454; font-family: arial, sans-serif; font-size: x-small; line-height: 18.2000007629395px;">π =</span> <b>1970-01-04 10:15:59.265</b><br />
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Desafortunadamente, algunos ni siquiera nacíamos para ese entonces...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>El día SQL/Datetime de Pi:</b></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Al ejecutar en MS SQL Server Studio:</div>
<blockquote class="tr_bq" style="clear: both; text-align: left;">
<span style="color: blue;">SELECT</span> <span style="color: magenta;">CAST</span>(314159 <span style="color: magenta;">AS DATETIME</span>)</blockquote>
nos da como resultado:<br />
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: white; color: #545454; font-family: arial, sans-serif; font-size: x-small; line-height: 18.2000007629395px;">π = </span><b>2760-02-21 00:00:00.000</b></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Desafortunadamente, tengo el presentimiento que no estaré vivo para ese entonces...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
(...)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Así que... tenemos días de Pi para escoger...</div>
<div class="separator" style="clear: both; text-align: left;">
pero lo que a mí respecta, prefiero decir: Hoy es el día Pi, y yo estuve ahí para vivirlo de la forma más #geek :)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<b>Fuentes:</b><br />
<div>
- <a href="http://alessandrorossini.org/2013/11/19/we-can-put-an-end-to-month-day-year-dates/" rel="nofollow" target="_blank">Alessandro Rossini: We can put an end to month-day-year dates</a>.</div>
<div>
- <a href="http://alessandrorossini.org/2013/11/19/we-can-put-an-end-to-month-day-year-dates/" rel="nofollow" target="_blank">MS SQL Server 2014: Cast & Convert</a>.</div>
<div>
- <a href="http://natorrante.tumblr.com/post/113743613981/el-dia-pi-o-el-pi-day-encaja-mejor-dada-su" rel="nofollow" target="_blank">natorrante @ tumblr</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>.<br />
También en <a href="http://twitter.com/natorrante" target="_blank"><b>twitter</b></a>.<br />
También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.</div>
Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-60279663762316960222014-09-15T17:26:00.001-05:002014-09-15T17:26:33.726-05:00Programadores: Lo que decimos vs. Lo que realmente queremos decir<div class="separator" style="clear: both; text-align: left;">
Entre celebración y celebración por <a href="http://infnato.blogspot.com/2008/09/da-del-programador.html" rel="nofollow" target="_blank">el día del programador</a>, nos tomamos una pausa para el blog :)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Lo que un programador dice, y lo que en verdad quiere decir: Las frases más comunes para librarnos de culpa y juzgar a otros -sobretodo a los que nos caen mal-.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://38.media.tumblr.com/10c73d04cebc9caf7839900c03e4e7b0/tumblr_nbynyhmD5x1rrx7uko1_1280.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://38.media.tumblr.com/10c73d04cebc9caf7839900c03e4e7b0/tumblr_nbynyhmD5x1rrx7uko1_1280.png" width="511" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
A continuación, su análogo en español:</div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"></span></div>
<a name='more'></a><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span><br />
<table style="background-color: white; color: #555555; line-height: 18.2000007629395px;"><thead>
<tr><th><span style="font-family: Verdana, sans-serif; font-size: x-small;">Lo que decimos</span></th><th><span style="font-family: Verdana, sans-serif; font-size: x-small;">Lo que realmente queremos decir</span></th></tr>
</thead><tbody>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Código Horrible</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Código horrible que yo no escribí</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Solución temporal</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Código horrible que yo escribí</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small; line-height: 18.2000007629395px;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small; line-height: 18.2000007629395px;">Está dañado</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Tu código tiene fallas</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Tiene algunos problemas</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Mi código tiene fallas</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Obscuro</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">El código de alguien no tiene comentarios</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Auto-documentación</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Mi código no tiene comentarios</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Por eso es un lenguaje increíble</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Es mi lenguaje favorito y es muy fácil hacer cualquier cosa en él</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Estás pensando incorrectamente</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Es mi lenguaje favorito pero es muy difícil hacer lo que quieres en él</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Puedo leer este script de Perl</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Yo escribí este script de Perl</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">No puedo leer este script de Perl</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Yo no escribí este script de Perl</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Mala estructura</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">El código de alguien está muy mal organizado</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Compleja estructura</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Mi código está pésimamente organizado</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Bug</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">La ausencia de una característica que quiero</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Fuera del alcance</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">La ausencia de una característica que no quiero</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Solución limpia</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Funciona y lo entiendo</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Necesitamos reescribirlo</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small; line-height: 18.2000007629395px;">Funciona pero no lo entiendo</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Emacs es mejor que Vi</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Esto está muy tranquilo, empecemos una guerra de insultos</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Vi es mejor que Emacs</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Esto está muy tranquilo, empecemos una guerra de insultos</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small; line-height: 18.2000007629395px;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small; line-height: 18.2000007629395px;">En mi humilde opinión (</span><span style="font-family: Verdana, sans-serif; font-size: x-small;">IMHO)</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Estás equivocado</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Código antiguo</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Funciona, pero nadie sabe por qué</span></td></tr>
<tr><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">^X^Cquit^\[ESC][ESC]^C</span></td><td style="margin: 0px;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">No sé como salir de Vi</span></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Fuente:</b></div>
<div class="separator" style="clear: both; text-align: left;">
- <a href="https://imgur.com/gallery/M5wl14r" rel="nofollow" target="_blank">What Programmers Say vs. What They Mean</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
- Traducción: <a href="http://www.puntogeek.com/2014/09/15/lo-que-realmente-quieren-decir-los-programadores/" rel="nofollow" target="_blank">Punto Geek</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>. También en <a href="http://twitter.com/natorrante" target="_blank"><b>twitter</b></a>. También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-63307366123527615812014-08-02T23:47:00.002-05:002014-08-02T23:47:30.832-05:00[SQL Server] Generar script (para respaldar procedimientos, funciones, etc)<div class="" style="clear: both;">
<a href="https://38.media.tumblr.com/bf4891cfe3938e3425df2a591d407be4/tumblr_n9pr2od7IL1rrx7uko5_400.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="164" src="https://38.media.tumblr.com/bf4891cfe3938e3425df2a591d407be4/tumblr_n9pr2od7IL1rrx7uko5_400.jpg" width="200" /></a>Este procedimiento simplifica bastante el sacar respaldos de algunas tablas, procedimientos y funciones de la base de datos, o para seleccionar desde la BD de pruebas para llevar a producción.<br /><br />El proceso es sencillo pero hay un par de consideraciones a tomar en cuenta:<br /><br />Esta opción se encuentra dándole anti-clic (clic derecho) a la base de datos que se desea trabajar:</div>
<div class="separator" style="clear: both;">
Ir a la opción <b>Tareas <span style="font-family: Wingdings; font-size: 9pt; line-height: 115%;">à</span> Generar Script...</b></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://38.media.tumblr.com/778870bdbe591f23ab417a5aecb44bbc/tumblr_n9pr2od7IL1rrx7uko1_1280.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="341" src="https://38.media.tumblr.com/778870bdbe591f23ab417a5aecb44bbc/tumblr_n9pr2od7IL1rrx7uko1_1280.png" width="400" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
</div>
<a name='more'></a><br />
<div class="separator" style="clear: both;">
En primer lugar, aparece el diálogo "<b>Seleccionar base de datos</b>" para escoger de qué base de datos se copiarán los archivos.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://33.media.tumblr.com/b27023330843c0586365f7d06f983bed/tumblr_n9pr2od7IL1rrx7uko2_500.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="357" src="https://33.media.tumblr.com/b27023330843c0586365f7d06f983bed/tumblr_n9pr2od7IL1rrx7uko2_500.png" width="400" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Luego aparece el diálogo "<b>Elegir opciones de script</b>", en donde el único cambio recomendable es "<b>Incluir IF NOT EXISTS</b>", y ponerlo como verdadero.</div>
<div class="separator" style="clear: both;">
Esta opción se complementa con la opción 5 líneas arriba: "<b>Generar script CREATE</b>" también verdadero.</div>
<div class="separator" style="clear: both;">
Con esto, se evita que salte un error al intentar crear tablas, procedimientos o funciones que ya existen en BD.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://31.media.tumblr.com/5166b6572228cdfcf346c6f24ed72a9f/tumblr_n9pr2od7IL1rrx7uko3_500.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="357" src="https://31.media.tumblr.com/5166b6572228cdfcf346c6f24ed72a9f/tumblr_n9pr2od7IL1rrx7uko3_500.png" width="400" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
El siguiente diálogo es "<b>Elegir tipos de objeto</b>", donde se indica que elementos se copiarán en el script: Procedimientos almacenados, tablas, tipos de tablas y funciones definidas por el usuario son los más comunes.</div>
<div class="separator" style="clear: both;">
A continuación, aparecerá un diálogo por cada opción elegida en la ventana anterior, donde se escogerán cada uno de los elementos a respaldar.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Finalmente, el último diálogo es "<b>Opción de salida</b>", donde se debe indicar si se generará el script en un archivo, en una nueva ventana de consulta en el IDE, o copiarlo temporalmente al portapapeles.</div>
<div class="separator" style="clear: both;">
Lo más recomendable es generar un archivo físico, indicando en el nombre que se está generando un script de CREATE, y agregando algunos parámetros (nombre de usuario, fecha de creación, etc)</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://38.media.tumblr.com/40ffdefe5d78d4a93465490ed8f6d223/tumblr_n9pr2od7IL1rrx7uko4_500.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="357" src="https://38.media.tumblr.com/40ffdefe5d78d4a93465490ed8f6d223/tumblr_n9pr2od7IL1rrx7uko4_500.png" width="400" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Al darle clic en el botón <b>Finalizar</b>, si no hay ningún errores de inconsistencia (elementos referenciando a tablas eliminadas, por ejemplo).</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Como buenas prácticas -dado que el elemento a respaldar puede ya existir-, se puede copiar ese archivo, reemplazarlo por un script de ALTER, y cambiar internamente los:<br />IF NOT EXISTS - CREATE por IF EXISTS - ALTER.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>. También en <a href="http://twitter.com/natorrante" target="_blank"><b>twitter</b></a>. También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-70956832529176669672014-05-21T19:43:00.000-05:002014-05-21T19:43:03.509-05:00Los 6 tipos de Programador<div class="" style="clear: both; text-align: left;">
<a href="https://31.media.tumblr.com/f51c373ff7a39265a91e4b615d4affbb/tumblr_n3tn0ky7w71rrx7uko4_250.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://31.media.tumblr.com/f51c373ff7a39265a91e4b615d4affbb/tumblr_n3tn0ky7w71rrx7uko4_250.png" /></a></div>
<div style="text-align: right;">
<br /></div>
<div style="text-align: right;">
Con 7 años de experiencia, 2 empleos, 5 equipos de trabajo, </div>
<div style="text-align: right;">
y ya habiendo liderado de 2 de ellos, puedo darme el lujo de "clasificar" a mis compañeros de trabajo en distintos tipos de programadores, según la calidad de su trabajo.</div>
<div style="text-align: left;">
<br />
<br />
<br />
Pero no es sino después de leer un artículo de <b>Steven Benner</b>,
en donde describe casi a la perfección a los tipos de programadores con los que uno tiene que lidiar.
Si tal vez no son todos, sí que son los más reincidentes:<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<b><span style="font-size: large;">1. El parchador. </span></b>(<b>The duct tape programmer</b>)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://24.media.tumblr.com/4e0a19b52c75883190acb6e68073aa6c/tumblr_n3tn0ky7w71rrx7uko1_250.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://24.media.tumblr.com/4e0a19b52c75883190acb6e68073aa6c/tumblr_n3tn0ky7w71rrx7uko1_250.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Puede que el código no sea lindo, <br />
pero maldición, ¡funciona!</td></tr>
</tbody></table>
Este tipo es la base de tu empresa. Cuando algo vaya mal, <b>él lo reparará <i>ipso facto</i></b> y dejándolo funcionando correctamente.<br />
<br />
Pero -por supuesto- <b>no le interesa nada más</b>:<br />
cómo se vea, la facilidad de uso, el orden del código, técnicas de programación, variables innecesarias, la optimización de algoritmos, el mantenimiento, el uso de estándares, ni otra de esas "trivialidades".<br />
<br />
Él sólo "hará que suceda", lo solucionará sin pérdida de tiempo.<br />
La mejor forma de trabajar con él, es enfocarse en un problema y dejarlo trabajar.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<a name='more'></a>¿Qué podría yo agregar? Como dice la última línea: Dedicarlo a solucionar un problema, que desarrolle su código -normalmente un bloc- y luego hacer las correcciones de su solución neandertal.<br />
Tampoco comparto el "<i>dejándolo funcionando correctamente</i>", puesto que al reparar algo para el momento, no suele pensar a largo plazo.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span style="font-size: large;">2. El perfeccionista. </span></b>(<b>The OCD perfectionist programmer</b>), el obsesivo-compulsivo del código perfecto.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://31.media.tumblr.com/7f758916eff2e87d952ed2ebd0586e7c/tumblr_n3tn0ky7w71rrx7uko2_250.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://31.media.tumblr.com/7f758916eff2e87d952ed2ebd0586e7c/tumblr_n3tn0ky7w71rrx7uko2_250.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">¿Que le quieres hacer <br />
QUÉ a mi código?</td></tr>
</tbody></table>
A este programador no le interesan <b>ni los tiempos límites ni el presupuesto</b>; Éstos son insignificantes comparados con el arte que es la programación.<br />
<br />
Cuando finalmente recibes el producto terminado, no tendrás más opción que redimirte a la gloria y radiante belleza de <b>un código fuente perfectamente programado</b>. <br />
Es un código tan eficiente y tan bien hecho, que cualquier modificación que le hagas, sería una profanación a tamaña reliquia.<br />
<div class="separator" style="clear: both; text-align: left;">
Este programador es el único calificado para darle mantenimiento a su propio código.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span style="font-size: large;">3. Programador anti-programación. </span></b>(The anti-programming programmer)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://31.media.tumblr.com/3ace0fd6f811eb84887a8926a555a7ac/tumblr_n3tn0ky7w71rrx7uko3_250.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://31.media.tumblr.com/3ace0fd6f811eb84887a8926a555a7ac/tumblr_n3tn0ky7w71rrx7uko3_250.png" style="cursor: move;" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Soy un programador, maldición. <br />
Yo no escribo código.</td></tr>
</tbody></table>
Su mundo se reduce a una única verdad: Escribir código está MAL.<br />
Si tienes que escribir algo, entonces lo estás haciendo MAL.<br />
Alguien más ya lo ha hecho antes, así que <b>tú sólo tienes que reutilizar su código</b>.<br />
<br />
Este programador te dirá cuánto más rápida es esta praxis, aunque se tome tanto o más tiempo que el resto de programadores.<br />
Pero cuando revises su proyecto, encontrarás sólo 20 líneas de código escritas, y será muy fácil de leer/entender.<br />
<br />
<b><br /></b>
<b>No será rápido, eficiente, compatible, o fácil de mantener, pero será hecho con el menor esfuerzo</b>.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span style="font-size: large;">4. El mediocre.</span></b> (<b>The half-assed programmer</b>)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://24.media.tumblr.com/fc9f505d7d5e4397a5633c2b019117fd/tumblr_n3tn0ky7w71rrx7uko7_r1_500.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="161" src="https://24.media.tumblr.com/fc9f505d7d5e4397a5633c2b019117fd/tumblr_n3tn0ky7w71rrx7uko7_r1_500.jpg" style="cursor: move;" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">¿Qué quieres? Funciona, ¿no?</td></tr>
</tbody></table>
A este tipo <b>no podría importarle menos la calidad</b>, porque eso es trabajo de otros.<br />
Termina las tareas que le solicitan, y a veces, rápidamente.<br />
<b><br />Su trabajo no será del agrado de muchos</b>, y los <b>otros programadores podrán odiarlo</b>, pero los jefes y los clientes lo adoran. <br />
Por más sufrimiento que este individuo pueda causarte a futuro, es él quien por su cuenta se mantiene en sus fechas límites (Así que no te burles de él, no importa cuánto se lo merezca).<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
¿Que qué opino? que trabajar con estos tipos es el mismo infierno.</div>
<div class="separator" style="clear: both; text-align: left;">
Los que lo adoran, es obviamente por ser un chupamedias. Promete desarrollar aplicativos maravillosos en tiempos mínimos; y al final se demora demasiado, su código apesta, y su proyecto funciona mal.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span style="font-size: large;">5. El programador teórico.</span></b> (<b>The theoretical programmer</b>)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://31.media.tumblr.com/f9a8375d858397cc23ec6583b9415826/tumblr_n3tn0ky7w71rrx7uko5_250.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://31.media.tumblr.com/f9a8375d858397cc23ec6583b9415826/tumblr_n3tn0ky7w71rrx7uko5_250.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Bueno, eso es una posibilidad, <br />
pero en la práctica esto puede ser <br />
una alternativa mejor.</td></tr>
</tbody></table>
Este programador se preocupa más por el cómo hacerlo, que en hacerlo.<br />
<br />
Dedicará el 80% del tiempo a ver la pantalla en blanco, <b>pensando las formas de completar su tareas</b>;<br />
<b>15% de su tiempo quejándose</b> sobre los irrazonables plazos de tiempo que le han asignado;<br />
4% de su tiempo en <b>refinar sus opciones</b>;<br />
y el 1% de su tiempo, a programar la solución.<br />
<div class="separator" style="clear: both; text-align: left;">
Su trabajo ya culminado siempre vendrá acompañado por la frase <b>"Si hubiese tenido más tiempo, lo habría hecho mejor"</b>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span style="font-size: large;">6. El programador neófito.</span></b> (<b>newbie</b>)</div>
<div class="separator" style="clear: both; text-align: left;">
Este programador comete más errores que aciertos; y generalmente sólo puede resolver sus problemas con ayuda de los demás.</div>
<div class="separator" style="clear: both; text-align: left;">
No depende de la experiencia que tenga trabajando, sino de la actitud.</div>
<div class="separator" style="clear: both; text-align: left;">
Pueden ser los más humildes, o pueden creer saberlo todo; igual, sólo hacen las cosas a medias.</div>
<div class="separator" style="clear: both; text-align: left;">
A veces la resolución a sus preguntas está en Google o en el manual de ayuda del IDE que están utilizando, pero prefieren preguntárselo personalmente a alguien.</div>
<div class="separator" style="clear: both; text-align: left;">
No estiman tiempos propios y peor aún: los ajenos...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Particularmente: cumplo con los perfiles (2) y (5), y sólo habré pecado en cometer la (1) un par de veces.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Aunque Steven Benner lo utiliza como prólogo, yo utilizo esas palabras para cerrar este <i>post</i>:</div>
<blockquote class="tr_bq" style="clear: both; text-align: left;">
<i>Sin una mezcla sana de estos distintos estilos de programación, podrías tener proyectos que demoren una eternidad en ser culminados, no ser lo suficientemente estables; o desarrollar software demasiado perfecto para ser usado por simples humanos.</i></blockquote>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Artículos relacionados:</b></div>
<div class="separator" style="clear: both; text-align: left;">
- <a href="http://infnato.blogspot.com/2014/04/10-reglas-para-todo-programador.html" target="_blank">Los 9 principios básicos para todo Programador</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
- <a href="http://infnato.blogspot.com/2014/01/los-10-mandamientos-de-un-programador.html" target="_blank">Los 10 mandamientos de un programador humilde</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
- <a href="http://infnato.blogspot.com/2009/08/los-10-mandamientos-para-crear-buen.html" target="_blank">Los 10 mandamientos para crear buen código</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Fuente:</b></div>
<div class="separator" style="clear: both; text-align: left;">
- <a href="http://stevenbenner.com/2010/07/the-5-types-of-programmers/" rel="nofollow" target="_blank">the-5-types-of-programmers</a>, de Steven Benner.</div>
<div class="separator" style="clear: both; text-align: left;">
- <a href="http://natorrante.tumblr.com/post/82296365675/me-senti-plenamente-identificado-con-estas" rel="nofollow" target="_blank">imágenes de tumblr</a>, de natorrante.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" rel="nofollow" target="_blank"><b>facebook</b></a>.<br />
También en <a href="http://twitter.com/natorrante" rel="nofollow" target="_blank"><b>twitter</b></a>.<br />
También en <a href="http://natorrante.tumblr.com/" rel="nofollow" target="_blank"><b>tumblr</b></a>.</div>
Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-1949210354711521202014-04-06T19:27:00.000-05:002014-04-10T14:18:57.773-05:00Los 9 principios básicos para todo Programador<div class="" style="clear: both;">
<a href="http://24.media.tumblr.com/befd60b187d780c32f717c7937c76fde/tumblr_n3mww372Pq1rrx7uko5_1280.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://24.media.tumblr.com/befd60b187d780c32f717c7937c76fde/tumblr_n3mww372Pq1rrx7uko5_1280.jpg" height="284" width="320" /></a><br />
Hay algunos criterios que un aprendiz de programador no siempre toma en cuenta, <b>por desconocimiento</b>;<br />
o peor aún: que un programador "experimentado" no toma en cuenta <b>por <strike>mediocridad</strike> negligencia</b>.<br />
<br />
Según creo, estos criterios necesitan ser enseñados explícitamente a los <i>newbies</i> y <i>amateurs</i>, aunque también son aprendidos y comprobados durante la práctica; para finalmente, ser aplicados <strike>inconscientemente</strike> de manera intrínseca por un programador experimentado.</div>
<div class="" style="clear: both;">
<br /></div>
<div class="" style="clear: both;">
<b><span style="font-size: large;">1. Desarrollar código fácil de entender.</span></b></div>
<div class="" style="clear: both;">
Así, se hace código <b>comprensible trascendiendo el tiempo</b>; y no tener que deducir tantas las líneas de código.</div>
<div class="separator" style="clear: both;">
Pero eso no es suficiente:</div>
<div class="separator" style="clear: both;">
<b>No comentar todo</b> (cada declaración de variables, cada abrir y cerrar de llaves, cada conexión a BD), porque demasiados <b>comentarios irrelevantes quitan atención a los comentarios importantes</b>.</div>
<div class="separator" style="clear: both;">
Un buen complemento a los comentarios también es el <b>hacer un código claro y bien definido</b>, no redundante ni aglutinado<b>.</b></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://31.media.tumblr.com/e3ded44001a57f3fde612a085d2051f0/tumblr_n3mww372Pq1rrx7uko4_400.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://31.media.tumblr.com/e3ded44001a57f3fde612a085d2051f0/tumblr_n3mww372Pq1rrx7uko4_400.png" height="315" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tal vez cause gracias, pero siendo objetivos: Es egoísta e inmaduro.</td></tr>
</tbody></table>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b><span style="font-size: large;">2. No complicar el código.</span></b></div>
<div class="" style="clear: both;">
Muchas veces solucionamos algún problema de la forma más enredada por dar una impresión de "soluciones complejas desde una mente compleja". </div>
<div class="separator" style="clear: both;">
O peor aún: porque no queremos dedicarle más tiempo para simplificar la solución.</div>
<div class="separator" style="clear: both;">
El arte de la programación está en <b>la abstracción de desarrollar soluciones sencillas para problemas complicados.</b> </div>
<div class="" style="clear: both;">
Debemos buscar la forma más simple de resolver las cosas. Esto ayudará a entender el código mejor y a mantenerlo* de una manera más eficiente, haciéndolo menos propenso a errores.</div>
<div class="separator" style="clear: both;">
</div>
<a name='more'></a><br />
<div class="separator" style="clear: both;">
<b><span style="font-size: large;">3. "Menos es más" no es siempre bueno.</span></b></div>
<div class="separator" style="clear: both;">
Muchos lenguajes de programación permiten concatenar funciones y muchas veces queremos hacer varias cosas a la vez en una línea. Esto dificulta la lectura y la lógica del código; así como su posterior mantenimiento*.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://25.media.tumblr.com/edfcd25e53c0b6a76af4d506f0b5464f/tumblr_n3mww372Pq1rrx7uko1_500.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://25.media.tumblr.com/edfcd25e53c0b6a76af4d506f0b5464f/tumblr_n3mww372Pq1rrx7uko1_500.png" height="217" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Disculpando la palabra, y la ortografía.</td></tr>
</tbody></table>
<div class="separator" style="clear: both;">
<br /></div>
<div class="" style="clear: both;">
<b><span style="font-size: large;">4. Evita el <i>hard coding</i>.</span></b></div>
<div class="separator" style="clear: both;">
<b>Usar constantes</b>, así, al necesitar cambiar ese valor, sólo habrá que hacerlo en un único lugar: la constante; y <b>no en cada línea del código donde se utiliza dicho valor</b>.</div>
<div class="separator" style="clear: both;">
Si ese valor cambiará a lo largo de la vida del programa, es mejor usar ficheros externos de configuración (XML, propiedades, <b>procedimientos y funciones de base de datos</b>, etc), de esta forma no tenemos que modificar el código, recompilar y redistribuir/publicar la nueva versión.</div>
<div class="separator" style="clear: both;">
<i>"Valores en bruto es característico de programadores brutos".</i></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b><span style="font-size: large;">5. No reinventes.</span></b></div>
<div class="separator" style="clear: both;">
Aprovechar los métodos y clases del código, procedimientos y funciones de la base de datos, los <i>frameworks</i> existentes y de los patrones de diseño. Están ampliamente probados.</div>
<div class="" style="clear: both;">
Reutilización de código es fácilmente manejable en la POO, pero no es el único paradigma que lo permite.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b><span style="font-size: large;">6. Interfaz de usuario.</span></b></div>
<div>
El aspecto del GUI (interfaz de usuario), la forma de navegar por el mismo y la comodidad a la hora de usar el mismo, influirán en la aceptación y el éxito de tu aplicativo.</div>
<div>
Debemos <b>mantener el mismo estilo</b> en todo el programa, respeta los estándares previamente definidos, valida cuidadosamente los clics y datos a ingresar por el usuario, escoge cuidadosamente el título de las ventanas, etiquetas de texto, mensajes de error, etc. (Inspírate en el diseño de otros sistemas ampliamente aceptados)</div>
<div>
<i>"Interfaces APB: Apta para burros"</i>.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://31.media.tumblr.com/8b6b1dee189ef0a532332d09f37ae6b5/tumblr_n3mww372Pq1rrx7uko6_400.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://31.media.tumblr.com/8b6b1dee189ef0a532332d09f37ae6b5/tumblr_n3mww372Pq1rrx7uko6_400.jpg" height="302" width="320" /></a></div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">7. Documentación.</span></b></div>
<div>
Es una tarea pesada y tediosa, y en el momento en el que estamos trabajando en un proyecto todo tiene sentido y es fácil de seguir. </div>
<div>
Pero al darle mantenimiento* ya nada es tan tan obvio como inicialmente fue desarrollado. </div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">8. Unidades de testeo.</span></b></div>
<div>
Es una muy buena y recomendada práctica que debemos hacer siempre. </div>
<div>
Esto nos ayudará a verificar rápidamente que nuestras funciones trabajarán como deben. </div>
<div>
Ahorrará mucho tiempo en el futuro (al darle mantenimiento* a esas funciones); y es otra de las tácticas que ayudará a reducir el número de errores en nuestro programa.</div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">9. Calidad, no cantidad.</span></b></div>
<div>
Es mejor un programa con las funciones básicas bien desarrolladas, a un programa lleno de funciones y que se ponga lento o se cuelgue, o no funcione como debería hacerlo.</div>
<div>
Particularmente para este inciso, influyen mucho el cumplir cabalmente con los incisos del 1 al 5.</div>
<div>
<br /></div>
<div>
<br />
Por lo menos, estos 9 principios son obligatorios, aunque por el momento puedo estar olvidándome de algunas.</div>
<div>
<div>
<br />
(*) <b>Mantenimiento: </b>Deben considerar tanto que ustedes mismos podrán realizar dicho mantenimiento/cambio/mejora del código, como la posibilidad de que se roten los proyectos entre los desarrolladores, y las salidas de la empresa del personal.</div>
<div>
La idea de facilitar el mantenimiento no se aplica sólo a uno mismo; sino al resto de personas que revisarán el código en el corto y el largo plazo.</div>
<br />
PD: Un plus para los programadores en Java:<br />
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>/* Cuidado con los <i>prints</i> y la concatenación de <i>Strings</i> */</b></div>
<div class="separator" style="clear: both;">
Normalmente tendemos a escribir <i>prints</i> por todo el programa, con la intención de depurar nuestra aplicación; Esto puede afectar seriamente el rendimiento de la aplicación. </div>
<div class="" style="clear: both;">
Usa algún tipo de mecanismo para que esos <i>prints</i> sólo se ejecuten en la fase de desarrollo. </div>
<div class="separator" style="clear: both;">
La concatenación de String puede ser otra de las operaciones que afectan al rendimiento del programa. </div>
<div class="" style="clear: both;">
Si vas a hacer muchas operaciones de concatenación, en Java la clase <i>String</i> es inmutable, por lo tanto cada vez que haces una concatenación estás desreferenciando los <i>Strings</i> que estas concatenando y creando un nuevo <i>String</i>. En Java tienes disponibles 2 clases que aumentan drásticamente el rendimiento para este tipo de operaciones. <i>StringBuffer</i> y <i>StringBuilder</i>. </div>
<div class="" style="clear: both;">
<b>StringBuilder es incluso más rápido que StringBuffer</b>, ya que éste no es <i>thread-safe</i>. </div>
<div class="" style="clear: both;">
Por lo tanto: si el código donde estás haciendo las concatenaciones no es multihilo, usa StringBuilder; sino, usa StringBuffer.</div>
<br />
<br /></div>
<div>
<b>Artículos relacionados:</b></div>
<div>
- <a href="http://infnato.blogspot.com/2014/01/los-10-mandamientos-de-un-programador.html" target="_blank">Los 10 mandamientos de un programador humilde</a>.<br />
- <a href="http://infnato.blogspot.com/2014/04/los-5-tipos-de-programador.html" target="_blank">Los 5 tipos de Programador</a>.</div>
<div>
<br /></div>
<div>
<b>Fuentes:</b></div>
<div>
- <a href="http://elprofdecompu.wordpress.com/2013/01/22/los-10-mandamientos-del-programador-java-y-otros/" rel="nofollow" target="_blank">10 mandamientos del programador Java</a>. </div>
<div>
- <a href="https://en.wikipedia.org/wiki/Hard_coding" rel="nofollow" target="_blank">Hard coding</a>. </div>
<div>
- <a href="http://natorrante.tumblr.com/post/81939532102/10-reglas-que-debera-considerar-todo-programador" rel="nofollow" target="_blank">Imágenes de tumblr</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de este blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>.<br />
También en <a href="http://twitter.com/#!/natorrante" target="_blank"><b>twitter</b></a>.<br />
También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-18545694984412976202014-01-29T19:57:00.000-05:002014-01-29T19:57:38.699-05:00[Oracle BPM Studio] Error: NoClassDefFoundError en el workspace.log<div class="separator" style="clear: both; text-align: left;">
(*) Este error no aparece en tiempo de compilación -ni de publicación-, sino en tiempo de ejecución:</div>
<div class="separator" style="clear: both; text-align: left;">
Empezó con una observación del área de <i>testing </i>(Que luego se tornó más grave porque todos los proyectos recientemente modificados presentaban dicho fallo)</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://24.media.tumblr.com/25593d383083a9a78bdd1afe31eb7c8a/tumblr_n052b80CT51rrx7uko3_1280.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="261" src="https://24.media.tumblr.com/25593d383083a9a78bdd1afe31eb7c8a/tumblr_n052b80CT51rrx7uko3_1280.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">La tarea de la actividad XXXXX no se ha podido ejecutar correctamente.</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
Y al darle clic a "Detalles >>": </div>
<div class="separator" style="clear: both; text-align: left;">
"Consulte el archivo de registro para obtener más información" y un código de error.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Al consultar dicho archivo (el log de errores, <i>workspace.log</i>), sólo se encontraba una descripción vaga y muy general, y entre un montón de líneas del error no capturado por el WebLogic</div>
<div class="separator" style="clear: both; text-align: left;">
Aquí un extracto de dicho log:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<a name='more'></a><br />
<blockquote class="tr_bq">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">[ (cont) ] Main: Caused by: <b>java.lang.NoClassDefFoundError</b>: <b>herramientas/corenevado/Util</b></span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">[ (cont) ]</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> Main: <span class="Apple-tab-span" style="white-space: pre;"> </span>at xobject.ModCoreNevado.Utilidades.<b>BPMO_Conexion.getConexion</b>(BPMO_Conexion.xcdl:8)</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">[ (cont) ]</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> Main: <span class="Apple-tab-span" style="white-space: pre;"> </span>at xobject.ModCoreNevado.Utilidades.<b>BPMO_Conexion.<init></b>(BPMO_Conexion.xcdl:1)</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">[ (cont) ]</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> Main: <span class="Apple-tab-span" style="white-space: pre;"> </span>at CORENEVADO.<b>Id1000002PersonaRegistrarModificar</b>.Default_1_0.Instance.CIL_registrarModificarRegistrarModificarIN(Instance.xcdl:9)</span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">[ (cont) ]</span><span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> Main: <span class="Apple-tab-span" style="white-space: pre;"> </span>at CORENEVADO.Id1000002PersonaRegistrarModificar.Default_1_0.Instance.CIL_registrarModificarRegistrarModificarIN(Instance.xcdl)</span></blockquote>
<div class="separator" style="clear: both; text-align: left;">
El proceso <b style="font-family: 'Courier New', Courier, monospace; font-size: small;">Id1000002PersonaRegistrarModificar </b>hace una llamada al constructor de <b style="font-family: 'Courier New', Courier, monospace; font-size: small;">BPMO_Conexion</b>, desde donde se llama al método <b style="font-family: 'Courier New', Courier, monospace; font-size: small;">getConexion()</b>;</div>
<div class="separator" style="clear: both; text-align: left;">
Ahí, hay una llamada a la clase <b>Util.java</b> del package <b>herramientas/corenevado</b>.</div>
<div class="separator" style="clear: both; text-align: left;">
Pero, aunque dice mucho no decía nada...</div>
<br />
<div class="separator" style="clear: both; text-align: left;">
Para empezar, el error no ocurría por la clase <i>Util.java</i> (propia nuestra), sino por las librerías que referencia, pero que no se podía evidenciar en ningún lado.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
El error (nuestro, como equipo) fue, en primer lugar:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
1. Al exportar un proyecto: </div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://25.media.tumblr.com/5e8dc9757aaf4b5acb3fe90a0cda30d9/tumblr_n052b80CT51rrx7uko6_r1_500.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://25.media.tumblr.com/5e8dc9757aaf4b5acb3fe90a0cda30d9/tumblr_n052b80CT51rrx7uko6_r1_500.png" height="320" width="305" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Anticlic en el proyecto -> Exportar Proyecto</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://31.media.tumblr.com/2d5dd8569e23b786bb1f4724c2f39bd6/tumblr_n052b80CT51rrx7uko2_500.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://31.media.tumblr.com/2d5dd8569e23b786bb1f4724c2f39bd6/tumblr_n052b80CT51rrx7uko2_500.png" height="271" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">( ) Excluir todas las bibliotecas<br />( ) Incluir todas las bibliotecas (Obligatorio para publicar con Studio)<br />(X) Incluir sólo bibliotecas versionables (recomendado para publicar con empresas)</td></tr>
</tbody></table>
<div class="separator" style="clear: both;">
Al escoger <b>la tercera opción</b> (con la que siempre han funcionado los proyectos) "<i><b>Incluir sólo bibliotecas versionables (recomendado para publicar con empresas)</b></i>", se generaban exportados de ~4MB o menos. Imposible, algo estaba fallando (y al publicar ya <b>salía el mismo error</b> de arriba)</div>
<div class="separator" style="clear: both;">
Pero al escoger <b>la segunda opción</b>: "<i><b>Incluir todas las bibliotecas (Obligatorio para publicar con Studio)</b></i>", se generaba un exportado de ~15MB (lo que siempre han pesado), pero al publicar seguía sin funcionar (<b>el mismo error</b> de arriba).</div>
<div class="separator" style="clear: both;">
<br /></div>
<div>
El cual se complementa/explica en el siguiente paso:</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
2. Declarar (nuevos) <b>recursos externos</b> sin darle a la opción check "<b>Versionable</b>".</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://25.media.tumblr.com/110ce492514045774a6c5d22d7ca5be0/tumblr_n052b80CT51rrx7uko5_1280.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://25.media.tumblr.com/110ce492514045774a6c5d22d7ca5be0/tumblr_n052b80CT51rrx7uko5_1280.png" height="320" width="315" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Tal como dice la (tercera) opción al generar un exportado:</div>
<div class="separator" style="clear: both; text-align: left;">
<b>Incluir bibliotecas versionables</b>. </div>
<div class="separator" style="clear: both; text-align: left;">
- Y con bibliotecas se refiere a Recursos Externos.</div>
<div class="separator" style="clear: both; text-align: left;">
- Y con versionables -aunque no sé a qué se refiere- me permite decidir si mi recurso será versionable o no.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Lo que pudimos aprender fue que, sin razón aparente ni advertencia alguna, aunque la 3ra opción diga "recomendable (...)", quiere decir que es OBLIGATORIO.</div>
<div class="separator" style="clear: both; text-align: left;">
Por alguna razón que desconozco, <b>el WebLogic es incompatible con la 2da opción</b>, que la publicaba sin errores pero no funcionaba para nada. </div>
<div class="separator" style="clear: both;">
Falta diferenciar qué quiere decir "publicar con Studio" y "publicar con empresa", que ni en la documentación de Aqualogic encontré información.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Pero ¿quieren la verdad? Después de casi una semana con el mismo error, lo único que me importa, es que funcione ;)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Fuente:</b></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://natorrante.tumblr.com/post/74994430420/noclassdeffounderrorbpm" rel="nofollow" target="_blank">Imágenes en tumblr</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>(*) Prólogo: </b></div>
<div class="separator" style="clear: both; text-align: left;">
El equipo a mi cargo reinstaló y reconfiguró el Oracle BPM Studio, obviando los pasos antes mencionados;</div>
<div class="separator" style="clear: both; text-align: left;">
el martes o miércoles pasado saltó este error, que parecía minúsculo...</div>
<div class="separator" style="clear: both; text-align: left;">
Y -aunque la solución es minúscula- el error no lo fue, estando durante casi 1 semana entera probando soluciones, instalando y reinstalando, configurando, desconfigurando y reconfigurando, ¡y nada!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>. También en <a href="http://twitter.com/#!/natorrante" target="_blank"><b>twitter</b></a>. También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com1tag:blogger.com,1999:blog-5237108649692844127.post-20481129184279469002014-01-02T00:51:00.001-05:002014-01-02T00:56:26.490-05:00Los 10 mandamientos de un programador humilde<div class="" style="clear: both; text-align: left;">
Estos mandamientos son un extracto de un libro de <i>Gerald Weinberg</i>, ¡publicado en 1971!:<br />
<b>"The </b><b>Psychology of Computer Programming"</b>.</div>
<div class="" style="clear: both; text-align: left;">
Y de lo que encontré en mis fuentes, quiero presentar un consolidado de éstas:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://31.media.tumblr.com/f7892c799be907846fc7eb2eaa1a5612/tumblr_myres7Dafh1rrx7uko2_500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://31.media.tumblr.com/f7892c799be907846fc7eb2eaa1a5612/tumblr_myres7Dafh1rrx7uko2_500.jpg" width="206" /></a></div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
</div>
<a name='more'></a><br />
<div class="" style="clear: both;">
<b>1. Entiende y acepta que cometerás errores:</b></div>
<div class="" style="clear: both;">
Encuéntralos y arréglalos a tiempo. Afortunadamente -en el 98% de los casos- nuestros errores NO son fatales. Podemos (y debemos) aprender, reírse y continuar.</div>
<div class="separator" style="clear: both;">
<i>Nadie es infalible... ¡ni siquiera tú!</i></div>
<div class="separator" style="clear: both;">
<i><br /></i></div>
<div class="" style="clear: both;">
<b>2. No eres tu código:</b></div>
<div class="separator" style="clear: both;">
Recuerda que las revisiones son para encontrar problemas. No lo tomes como algo personal.</div>
<div class="separator" style="clear: both;">
<i>También recuerda: un error en tu código no te describe; ¡pero varios, sí!</i></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>3. No importa cuanto "<i>karate</i>" sepas, siempre habrá alguien que sepa más:</b> </div>
<div class="" style="clear: both;">
Este hecho ayudó a los <i>Samurai</i> en el Japón imperial a no atacar a todos indiscriminadamente. </div>
<div class="separator" style="clear: both;">
Podrías aprender nuevos "movimientos" de cualquier persona si se lo pides; Busca y acepta la retro-alimentación de otros, aún cuando pienses que no es necesario.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>4. No reescribas código sin antes consultar:</b></div>
<div class="separator" style="clear: both;">
Existe una línea muy delgada entre "arreglar código" y "reescribir código" (o copiar). </div>
<div class="separator" style="clear: both;">
En caso de dar mantenimiento, consulta al autor y realiza los cambios necesarios.</div>
<div class="separator" style="clear: both;">
En caso de crear nuevos módulos, elimina variables, constantes, métodos (etcétera) que no serán utilizados en este nuevo módulo).</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="" style="clear: both;">
<b>5. Trata a las personas que entienden menos que tú con respeto y paciencia:</b></div>
<div class="" style="clear: both;">
Las personas que no están inmiscuidas en cuestiones técnicas y que tratan con programadores diariamente, normalmente nos estereotipan como incompetentes y temperamentales. </div>
<div class="" style="clear: both;">
Tu reacción (e impaciencia) puede acrecentar esta percepción.</div>
<div class="" style="clear: both;">
<br /></div>
<div class="" style="clear: both;">
<b>6. Lo único constante es el cambio:</b></div>
<div class="" style="clear: both;">
Mantente abierto al cambio y acéptalo con una sonrisa. </div>
<div class="" style="clear: both;">
Mira cualquier cambio de los requerimientos (del cliente, plataforma o herramientas) como un nuevo reto y nunca como un inconveniente.</div>
<div class="" style="clear: both;">
<i>No tengas miedo al cambio; Aprovéchalo.</i></div>
<div class="" style="clear: both;">
<i><br /></i></div>
<div class="" style="clear: both;">
<b>7. La autoridad la obtienes con tus conocimientos, no con tu posición:</b></div>
<div class="" style="clear: both;">
Si quieres cultivar un ambiente sin egoísmos, desarrolla tus conocimientos.</div>
<div class="" style="clear: both;">
<br /></div>
<div class="" style="clear: both;">
<b>8. Defiende tus ideas, pero acepta tus derrotas:</b></div>
<div class="" style="clear: both;">
Entiende que en algunas ocasiones tus ideas no serán escuchadas. Debes saber cuándo defenderlas, cuándo aceptar -humildemente- el rechazo; o cuando negociar una posterior evaluación.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="" style="clear: both;">
<b>9. No seas el programador "encerrado":</b></div>
<div class="" style="clear: both;">
Estar encerrado en tu oficina te deja fuera del contacto con el resto de empleados, y fuera de vista de tus clientes.</div>
<div class="separator" style="clear: both;">
<i>Siempre es mejor trabajar en espacios abiertos y colaborativos.</i></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>10. Critica el código, no al programador:</b></div>
<div class="" style="clear: both;">
Y sé amable con el desarrollador, no con el código. </div>
<div class="separator" style="clear: both;">
En lo posible, haz siempre comentarios positivos, orientados a mejorar el código; </div>
<div class="separator" style="clear: both;">
Comunica los estándares locales, especificaciones del programa, la mejora de la <i>performance</i>, etc.</div>
<div class="separator" style="clear: both;">
<i>Sé amable con el programador, pero incisivo con el código.</i></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://24.media.tumblr.com/1d4531cb0e2b2fb9bcc7d1289dc2efe6/tumblr_myres7Dafh1rrx7uko1_500.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://24.media.tumblr.com/1d4531cb0e2b2fb9bcc7d1289dc2efe6/tumblr_myres7Dafh1rrx7uko1_500.png" /></a></div>
<div class="separator" style="clear: both;">
<b>Fuentes:</b></div>
<div class="separator" style="clear: both; text-align: left;">
- <a href="http://www.codinghorror.com/blog/2006/05/the-ten-commandments-of-egoless-programming.html" rel="nofollow" target="_blank">Coding Horror: The Ten Commandments of Egoless Programming</a> (05/2006).</div>
<div class="separator" style="clear: both; text-align: left;">
- <a href="http://www.taringa.net/posts/info/13418674/Los-9-mandamientos-del-programador.html" rel="nofollow" target="_blank">Taringa: Los 9 mandamientos del Programador</a> (12/2011).</div>
<div class="separator" style="clear: both; text-align: left;">
- <a href="http://www.genbetadev.com/trabajar-como-desarrollador/los-diez-mandamientos-del-programador-humilde" rel="nofollow" target="_blank">genBetaDev: Los diez mandamientos del programador humilde</a> (12/2013).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de este blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>.<br />
También en <a href="http://twitter.com/#!/natorrante" target="_blank"><b>twitter</b></a>.<br />
También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-69126902665840568942013-05-07T15:57:00.000-05:002013-05-07T15:57:58.850-05:00[Oracle BPM Studio] 2 minutos para modificar un campo en los Web PresentationTrabajar con <b>Oracle BPM Studio</b> podría llegar a ser una pesadilla (Al menos, con <i>BPM Studio 10.3</i>).<br />
Y es que frecuentemente aquí publico algunos trucos y soluciones a errores que ocurren en BPM y que no son fáciles de detectar, ni de manejarlos una vez identificados.
Y definitivamente uno de sus mayores defectos <strike>fue</strike> es la <b>pésima asignación/administración de memoria</b>.<br />
Me tomé la molestia de hacerle un vídeo a mi <i>workspace</i>, yo intentando hacer algo tan sencillo como agregar campos mientras edito una pantalla (un <i>web presentation</i>).<br />
<br />
<i>Spoiler alert:</i> el <i>Studio </i>se cuelga, no realiza los cambios, si los realiza no los visualiza, o por cada pequeño cambio aparece un mensaje para cancelar (<i>"Stop script"</i>) o seguir esperando su ejecución.<br />
<br />
<a name='more'></a>Como describo en el vídeo:<br />
<blockquote class="tr_bq">
<i>...es una pesadilla:<br />abres la pantalla de presentación para renombrar y reasignar un campo...<br />y si es un día normal, te salen 2 ó 3 mensajes de error por cada cambio realizado...<br />en este vídeo, el <b>IDE </b>se toma 2 minutos sólo para mostrarme mensajes de error y se cuelga nuevamente, y así sucesivamente...</i></blockquote>
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/8ktFgteU72g" width="420"></iframe><br />
<br />
Irónicamente, la máquina en la cual trabajo con <i>Oracle BPM Studio</i>, es una <i>Intel Core i5</i> a <b>3.20GHz</b>, con <b>3.34 GB de RAM</b>.<br />
<br />
Esperemos que en los próximos meses ya estemos migrando a Oracle 11g.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>.<br />
También en <a href="http://twitter.com/#!/natorrante" target="_blank"><b>twitter</b></a>.<br />
También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.<br />
Y a veces, también ando en el Mundo Real (R)Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-70151020320766199842013-04-12T19:23:00.000-05:002014-01-28T15:42:02.730-05:00[Oracle BPM Studio] Error: La tarea no se ha podido ejecutar correctamente<div class="separator" style="clear: both; text-align: left;">
Para los que <strike>todavía</strike> desarrollamos en <b>Oracle BPM Studio </b>10.3, hay mensajes de error que no son nada fáciles de identificar sin la correcta ayuda.</div>
<div class="separator" style="clear: both; text-align: left;">
Es un <b>error en tiempo de ejecución</b> <i>a.k.a.</i> "en caliente":</div>
<div class="separator" style="clear: both; text-align: left;">
Sea en el <i>workspace</i> local para pruebas -obviamente- locales o en la publicación en los servidores de prueba para testeos oficiales, o ya en producción para el usuario final;</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/proxy/AVvXsEj8yWjP2QXdX3HC9Yt2jG311_5mmoMbPEsjTrdZqmfPRGwytv6HUKIRhCjVkt4Wv6zLEOe3b2d32XBpxZML5ZQiCm6xd2iwN_65Q2dcVrRet_pQNKs0ns87_QUYV_aZ5RCDL2WOwbiaC2-jBTtnmXLPEeHz95wOsBx3kJ9uOqMlcA2gxI8KopGs6arGzCnDBrh8nB40wh5DfHjziKT6xHw=" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEj8yWjP2QXdX3HC9Yt2jG311_5mmoMbPEsjTrdZqmfPRGwytv6HUKIRhCjVkt4Wv6zLEOe3b2d32XBpxZML5ZQiCm6xd2iwN_65Q2dcVrRet_pQNKs0ns87_QUYV_aZ5RCDL2WOwbiaC2-jBTtnmXLPEeHz95wOsBx3kJ9uOqMlcA2gxI8KopGs6arGzCnDBrh8nB40wh5DfHjziKT6xHw=" height="283" width="400" /></a></div>
<div class="" style="clear: both; text-align: left;">
El escenario es el siguiente:</div>
<div class="" style="clear: both; text-align: left;">
Al aparecer este error, se pierde la actividad y aparece un <i>frame</i> rojo con el mensaje:</div>
<div class="" style="clear: both; text-align: left;">
<i>"La tarea</i> (nombre de la tarea e id)<i> <b>no se ha podido ejecutar correctamente</b>"</i>.</div>
<div class="" style="clear: both; text-align: left;">
Y al darle clic al botón "<i>Detalles</i>", el mensaje:</div>
<i>"<b>Consulte el archivo de registro para obtener más información [Código de error: workspace-</b>X</i>XXX<i><b>]</b>" </i>donde XXXX es un valor numérico asignado, y corresponde a una descripción del error que será descrita a continuación...<br />
<div class="separator" style="clear: both; text-align: left;">
</div>
<a name='more'></a>Este error ocurre <strike>simplemente</strike> porque no está siendo controlado: se lanza una excepción fuera del alcance de un <i>try-catch</i>, ocurre un error a nivel de <i>screenflow</i> en los parámetros de entrada o salida de los <i>presentations</i> y llamadas a otros <i>screenflows</i>, etc.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
La solución:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
En el BPM Studio, deben ir a la pestaña de "<b>Visor de registros</b>" (en la parte inferior del <i>workspace</i>).</div>
<div class="separator" style="clear: both; text-align: left;">
Internamente tiene 2 sub-pestañas: "<i>Registro</i>" y "<i>Propiedades del elemento</i>".</div>
<div class="separator" style="clear: both; text-align: left;">
Dentro de la pentaña "<i>Registro</i>" deben escoger el combo: "<i>Mensaje</i>", "<i>Contiene</i>", y colocar el código del error.</div>
Clic en "<i>Aplicar filtro</i>", y les aparece una advertencia en la grilla de abajo. (La cual abrirán dándole doble clic).<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/proxy/AVvXsEiVLmkaMlHqceREBV71f-lXFqh7Tkz1L_ZpZDo7J3OP-c6bNzAzSi_1L1BovvmDRCxN8_pvcWBDxPJG5DfsY8vSEGh9gwALMvZZPxa7QFzi163_IuDfRYvYN1FmCYA0-LHCTilnNBU-s11yAr-Hdk4kRQ64ufDo1pcYZTvIhR7iq3xhfzGxmasLhXRBCsu1q4V_ohZITMLIi6rQINx7cOs=" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEiVLmkaMlHqceREBV71f-lXFqh7Tkz1L_ZpZDo7J3OP-c6bNzAzSi_1L1BovvmDRCxN8_pvcWBDxPJG5DfsY8vSEGh9gwALMvZZPxa7QFzi163_IuDfRYvYN1FmCYA0-LHCTilnNBU-s11yAr-Hdk4kRQ64ufDo1pcYZTvIhR7iq3xhfzGxmasLhXRBCsu1q4V_ohZITMLIi6rQINx7cOs=" height="260" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Al abrir la advertencia, serán llevados a la pestaña "<i>Propiedades del elemento</i>", </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/proxy/AVvXsEjO3fCiGsE4qDPn_6VT_n8ZoCGf_r7kW5F7WByFwsVxwLRebHRjUUnRhGkOS4KK9WDp79RtnzaYPQvTYj2ShNzdvmDyG99fHqxZy4TJZxgmRrfIU-PL7YIzdpA7fRIG07ABoPth8kZFwv3jMmXejfTLxP-FoyaSs1xCwlHGOG9bIPxZwRw54pw2jc0-wY-Ib21A2vHHS62BnCDJDcWaDHM=" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/proxy/AVvXsEjO3fCiGsE4qDPn_6VT_n8ZoCGf_r7kW5F7WByFwsVxwLRebHRjUUnRhGkOS4KK9WDp79RtnzaYPQvTYj2ShNzdvmDyG99fHqxZy4TJZxgmRrfIU-PL7YIzdpA7fRIG07ABoPth8kZFwv3jMmXejfTLxP-FoyaSs1xCwlHGOG9bIPxZwRw54pw2jc0-wY-Ib21A2vHHS62BnCDJDcWaDHM=" height="335" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Una vez dentro, deberán buscar la causa del error, la excepción no "atrapada", o asignación de valores <i>null </i>en donde no permite vacíos, problemas con la versión del <i>JDK</i> del <i>BPM Studio</i> contra el <i>JDK</i> de las clases <i>java</i> catalogadas.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
En mi experiencia, debo agregar que la descripción la encontrarán de la mitad para abajo;</div>
<div class="separator" style="clear: both; text-align: left;">
de la mitad para arriba son la cadena de excepciones que se han producido desde el <i>screenflow</i> hasta el proceso mismo.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Además, en una gran cantidad de casos (pero lejos aún de la totalidad), las líneas que me indican qué objetos de MI código (no del código que genera el <i>BPM Studio</i>) cometieron la infracción, están precedidas por "<b>Caused by: fuego.lang.ValidationException</b>", así:</div>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;">(...) </span>at fuego.component.ExecutionThread.run(ExecutionThread.java:408)<br />
Caused by: fuego.lang.ValidationException:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>at xobject.ModCoreNevado.Utilidades.BPMO_MessageBox.sMensaje_require (BPMO_MessageBox.xcdl)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>at xobject.ModCoreNevado.Utilidades.BPMO_MessageBox.setSMensaje (BPMO_MessageBox.xcdl) (...)</blockquote>
Ya dependiendo del tipo de error, si es poco descriptivo pero -aunque sea- ya indica desde dónde empezar a buscar qué se hizo mal! ;)<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Fuente: <a href="http://natorrante.tumblr.com/post/47814635487/estas-imagenes-acompanan-y-se-explican-en-mi-blog" rel="nofollow" target="_blank">imágenes, tumblr</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog" target="_blank"><b>facebook</b></a>. También en <a href="http://twitter.com/#!/natorrante" target="_blank"><b>twitter</b></a>. También en <a href="http://natorrante.tumblr.com/" target="_blank"><b>tumblr</b></a>.
<!-- Blogger automated replacement: "http://images-onepick-opensocial.googleusercontent.com/gadgets/proxy?container=onepick&gadget=a&rewriteMime=image%2F*&url=http%3A%2F%2F25.media.tumblr.com%2Fbef3673105946182a90baadb4d0c5968%2Ftumblr_ml5zx2y0jZ1rrx7uko1_1280.png" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEiVLmkaMlHqceREBV71f-lXFqh7Tkz1L_ZpZDo7J3OP-c6bNzAzSi_1L1BovvmDRCxN8_pvcWBDxPJG5DfsY8vSEGh9gwALMvZZPxa7QFzi163_IuDfRYvYN1FmCYA0-LHCTilnNBU-s11yAr-Hdk4kRQ64ufDo1pcYZTvIhR7iq3xhfzGxmasLhXRBCsu1q4V_ohZITMLIi6rQINx7cOs=" --><!-- Blogger automated replacement: "http://images-onepick-opensocial.googleusercontent.com/gadgets/proxy?container=onepick&gadget=a&rewriteMime=image%2F*&url=http%3A%2F%2F24.media.tumblr.com%2F3ca558511fae46d71c85abbd8d3b7245%2Ftumblr_ml5zx2y0jZ1rrx7uko3_1280.png" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEj8yWjP2QXdX3HC9Yt2jG311_5mmoMbPEsjTrdZqmfPRGwytv6HUKIRhCjVkt4Wv6zLEOe3b2d32XBpxZML5ZQiCm6xd2iwN_65Q2dcVrRet_pQNKs0ns87_QUYV_aZ5RCDL2WOwbiaC2-jBTtnmXLPEeHz95wOsBx3kJ9uOqMlcA2gxI8KopGs6arGzCnDBrh8nB40wh5DfHjziKT6xHw=" --><!-- Blogger automated replacement: "http://images-onepick-opensocial.googleusercontent.com/gadgets/proxy?container=onepick&gadget=a&rewriteMime=image%2F*&url=http%3A%2F%2F24.media.tumblr.com%2F32aa977abecf7b1e172a07e3dbe0d26f%2Ftumblr_ml5zx2y0jZ1rrx7uko2_1280.png" with "https://blogger.googleusercontent.com/img/proxy/AVvXsEjO3fCiGsE4qDPn_6VT_n8ZoCGf_r7kW5F7WByFwsVxwLRebHRjUUnRhGkOS4KK9WDp79RtnzaYPQvTYj2ShNzdvmDyG99fHqxZy4TJZxgmRrfIU-PL7YIzdpA7fRIG07ABoPth8kZFwv3jMmXejfTLxP-FoyaSs1xCwlHGOG9bIPxZwRw54pw2jc0-wY-Ib21A2vHHS62BnCDJDcWaDHM=" -->Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0Centro Historico, Trujillo, Perú-8.1105322051672353 -79.029354467736823-8.1144622051672357 -79.034396967736825 -8.1066022051672348 -79.024311967736821tag:blogger.com,1999:blog-5237108649692844127.post-20075228670364401802013-01-04T13:33:00.000-05:002014-07-19T10:35:43.432-05:00[SQL Server] No se permite guardar los cambios (a tablas)Cuando necesitas modificar una tabla y requieras agregar nuevos campos e insertarlos entre los campos ya existentes, <b>la configuración por defecto del SQL Server Studio no te lo permitirá</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://25.media.tumblr.com/34e6a238288fbe7449209c5b769d6199/tumblr_mgh07stMge1rrx7uko1_400.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://25.media.tumblr.com/34e6a238288fbe7449209c5b769d6199/tumblr_mgh07stMge1rrx7uko1_400.png" /></a></div>
Esta configuración no permite modificar tablas cuando éstas requieran ser eliminadas (<i>drop table</i>) y creadas nuevamente.<br />
Y -para dejarlo más claro- si necesitas insertar campos entre otros ya existentes, el SQL automáticamente ejecutará un <i>script </i>para crear una tabla temporal con la nueva disposición, migrará los valores a esta nueva tabla temporal, eliminará la tabla "anterior", y renombrará esta temporal con el nombre "oficial". Básicamente es eso, aunque existe más lógica interna (eliminar restricciones y <i>foreign keys</i>, reasignar <i>primary keys</i>, etc)<br />
<br />
La solución es sencilla, y está explicada en las siguientes imágenes...<br />
<div class="separator" style="clear: both; text-align: left;">
</div>
<a name='more'></a>El mensaje de error que aparece al <strike>intentar</strike> guardar las tablas es:<br />
<i>No se permite guardar los cambios. Los cambios que ha realizado requieren que se quiten y vuelvan a crear las siguientes tablas. Quizá ha realizado cambios en una tabla que no se puede volver a crear o ha habilitado la opción "Impedir guardar cambios que requieran volver a crear tablas".</i><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://24.media.tumblr.com/491f1c6aeca4a983d84d2ca5bbe7d2d1/tumblr_mgh07stMge1rrx7uko2_1280.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://24.media.tumblr.com/491f1c6aeca4a983d84d2ca5bbe7d2d1/tumblr_mgh07stMge1rrx7uko2_1280.png" height="288" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
La solución es la siguiente:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://33.media.tumblr.com/0681fe7b5ff6a9f838719d5aeb02949c/tumblr_mgh07stMge1rrx7uko4_r1_1280.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://33.media.tumblr.com/0681fe7b5ff6a9f838719d5aeb02949c/tumblr_mgh07stMge1rrx7uko4_r1_1280.png" height="280" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Los pasos realizados fueron:</div>
<div class="" style="clear: both; text-align: left;">
Ir al <b>Menú Herramientas </b>(1)<b> </b><span style="background-color: white; color: #222222; font-family: Helvetica; font-size: 13px; line-height: 19.5px;">→</span><b> Opciones</b>. (2)</div>
<div class="" style="clear: both; text-align: left;">
Ahí adentro, ir a <b>Designers </b><span style="background-color: white; color: #222222; font-family: Helvetica; font-size: 13px; line-height: 19.5px;">→</span><b> Diseñadores de tablas y bases de datos </b>(3)<br />
A la mano derecha, aparecerán una lista de opciones para marcar.</div>
<div class="" style="clear: both; text-align: left;">
Desmarcar la opción: "<i>Impedir guardar cambios que requieran volver a crear tablas</i>" (4)<br />
Finalmente, botón "<i>Aceptar</i>".<br />
<i>Voilà</i>.<br />
Ya podrás guardar todas las tablas que antes no te permitía por este impedimento.<br />
<br /></div>
<div class="" style="clear: both; text-align: left;">
El contexto bajo el cual ocurre esta imposibilidad de grabar los cambios a la tabla, son:</div>
<div class="" style="clear: both; text-align: left;">
Recién hayas instalado el SQL Server Studio;</div>
<div class="separator" style="clear: both; text-align: left;">
O tengas un nuevo usuario en Windows, y trabajes con el mismo SQL Server, el cual asignará (a este nuevo usuario) una nueva configuración.</div>
<div class="separator" style="clear: both; text-align: left;">
Y que antes no hayas necesitado modificar tablas de esa forma, por lo que no has tenido ese problema a pesar de tener esa configuración "desde siempre".</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Fuente:</b></div>
<div class="separator" style="clear: both; text-align: left;">
Imágenes: <a href="http://natorrante.tumblr.com/post/40261229151/sqlaltertable" rel="nofollow" target="_blank">natorrante.tumblr.com</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" /><br />
<span class="Apple-style-span" style="font-size: x-small;">(y no olvide confirmar su suscripción)</span> </form>
También me encuentras en <a href="https://www.facebook.com/natorrante.blog"><b>facebook</b></a>. También en <a href="http://twitter.com/#!/natorrante"><b>twitter</b></a>.Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-90809891050677475512012-06-25T07:36:00.000-05:002014-01-28T19:58:32.098-05:00[Oracle BPM Studio] Aumentar el tamaño de memoria de Java<div class="" style="clear: both; text-align: left;">
<a href="https://24.media.tumblr.com/71acf863df868904dd1ed1d080fd7206/tumblr_n050vnHEm11rrx7uko1_250.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="168" src="https://24.media.tumblr.com/71acf863df868904dd1ed1d080fd7206/tumblr_n050vnHEm11rrx7uko1_250.jpg" width="200" /></a><br />
O mejor dicho, de la máquina virtual en Java (JVM)</div>
<span style="background-color: white;"><br />La siguiente publicación explica como asignarle memoria a Java, en base a 2 criterios: </span><span style="background-color: white;"><br />Según Memoria Heap y No-heap (PermGen);</span><span style="background-color: white;">y según el tamaño inicial y el tamaño máximo que podrá ocupar la máquina virtual.</span><br />
<div class="" style="clear: both; text-align: left;">
Si por defecto, nos basamos en 128MB de memoria, la asignación sería como sigue:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<a name='more'></a><br />
<div class="separator" style="clear: both; text-align: left;">
<b>(1) -Xms128m</b></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Tamaño de inicio de la JVM.</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Al incrementar éste valor, aumenta el rendimiento cuando se necesite un uso intenso de la memoria.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>(2) -Xmx128m</b></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Tamaño máximo (límite) de la JVM.</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Si la aplicación supera el tamaño aquí definido, lanzará una excepción java.lang.OutOfMemoryError.</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Al asignar este valor, también se debe tomar en cuenta máximo de la memoria física de la máquina; ya que pueden bloquearse otros programas que también quieran acceder a la memoria (por ejemplo, sistema operativo, entre otros)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>(3) -XX:PermSize=128m</b></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Tamaño de inicio de la memoria tipo PermGen.</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Agiliza la carga de aplicaciones (tiempo de arranque)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>(4) -XX:MaxPermSize=128m</b></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Tamaño máximo de la memoria de tipo PermGen</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>Si la aplicación supera el tamaño aquí definido, lanzará una excepción java.lang.OutOfMemoryError: PermGen space.</div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-tab-span" style="white-space: pre;"> </span>El valor necesario para este parámetro siempre suele ser menor que el de la memoria de tipo heap (2)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: white;">Teniendo estos 4 valores claros y bien definidos, podemos proseguir con un aspecto un poquito más técnico, pero también importante:</span><span style="background-color: white;"> <b>Oracle BPM Studio</b>.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
El primer paso es ir a la carpeta dónde está instalado; en mi caso:<br />
<i>C:\OraBPMStudioHome\eclipse </i>:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://24.media.tumblr.com/fee6587d6ccd03e5026b2181f412108e/tumblr_n050vnHEm11rrx7uko2_500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://24.media.tumblr.com/fee6587d6ccd03e5026b2181f412108e/tumblr_n050vnHEm11rrx7uko2_500.jpg" width="288" /></a></div>
<br />
Al abrir el archivo <i>eclipse.ini</i>, se podrá visualizar claramente los valores -Xms, -Xmx, en las líneas a partir de la 6.<br />
Y a partir de la línea 14, se podrá encontrar los -XX:PermSize y -XX:MaxPermSize<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://31.media.tumblr.com/8214c87beebf9c495f04477ae82373e8/tumblr_n050vnHEm11rrx7uko3_1280.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="191" src="https://31.media.tumblr.com/8214c87beebf9c495f04477ae82373e8/tumblr_n050vnHEm11rrx7uko3_1280.jpg" width="400" /></a></div>
<br />
En mi caso, <span style="background-color: white;">una buena configuración de estos valores es:</span><br />
<div class="separator" style="clear: both; text-align: left;">
--launcher.XXMaxPermSize</div>
<div class="separator" style="clear: both; text-align: left;">
1152m</div>
<div class="separator" style="clear: both; text-align: left;">
-vmargs</div>
<div class="separator" style="clear: both; text-align: left;">
-Xms512m</div>
<div class="separator" style="clear: both; text-align: left;">
-Xmx600m</div>
<div class="separator" style="clear: both; text-align: left;">
-XX:PermSize=512M</div>
<div class="separator" style="clear: both; text-align: left;">
-XX:MaxPermSize=512M</div>
<br />
Y todavía puede mejorarse :)<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<b>Fuente: </b><br />
<a href="http://natorrante.tumblr.com/post/74887864883/bpmmasmemoria" rel="nofollow" target="_blank">Imágenes almacenadas en tumblr</a>.<br />
<a href="http://www.javamexico.org/blogs/avali2/aumentar_el_tamano_de_memoria_de_la_maquina_virtual_en_java" rel="nofollow" target="_blank">javamexico: Aumentar el tamaño de memoria de la máquina virtual en java</a>.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:
<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<br />
<span class="Apple-style-span" style="font-size: x-small;">(confirme su suscripción desde un mensaje que recibirá al correo registrado)</span>
<br />
Delivered by <a href="http://feedburner.google.com/" target="_blank">FeedBurner</a></form>
<span style="background-color: #fefdfa; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 16.799999237060547px;">También en </span><a href="https://www.facebook.com/natorrante.blog" style="background-color: #fefdfa; color: #6b5d90; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 16.799999237060547px; text-decoration: none;"><b>facebook</b></a><span style="background-color: #fefdfa; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 16.799999237060547px;">. También en </span><a href="http://twitter.com/#!/natorrante" style="background-color: #fefdfa; color: #6b5d90; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 16.799999237060547px; text-decoration: none;"><b>twitter</b></a><span style="background-color: #fefdfa; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 16.799999237060547px;">. También en </span><a href="http://natorrante.tumblr.com/" style="background-color: #fefdfa; color: #6b5d90; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 16.799999237060547px; text-decoration: none;" target="_blank"><b>tumblr</b></a><span style="background-color: #fefdfa; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 16.799999237060547px;">.</span>Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-54430879942769638462012-06-02T13:42:00.001-05:002014-01-28T17:39:39.953-05:00[Oracle BPM Studio] UnsupportedClassVersionError al compilarLa raíz del problema es simple: "<b>UnsupportedClassVersionError</b>" es decir, el <b>JDK </b>que utilizo en el <b>Oracle BPM Studio</b> es una versión inferior al que utilicé en <b>JDeveloper</b>.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://24.media.tumblr.com/8803747bf06246a00f47bd3048437eca/tumblr_n04uutsanV1rrx7uko1_1280.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://24.media.tumblr.com/8803747bf06246a00f47bd3048437eca/tumblr_n04uutsanV1rrx7uko1_1280.png" height="216" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Error: 'java.lang.UnsupportedClassVersionError: Bad version number in .class file'.</td></tr>
</tbody></table>
La solución típica es, editar el archivo <b>eclipse.ini</b>, agregando una línea de código indicando que JDK utilizar (como indiqué en <a href="http://infnato.blogspot.com/2010/11/oracle-bpm-studio-excepciones.html" target="_blank">éste post</a>);<br />
<span style="text-align: left;">Y es que parece que los chicos de Oracle no tienen ni idea del concepto "amigable con el usuario", dado que habría sido mejor si dentro del menú del BPM Studio hubiesen incorporado una opción para elegir, agregar o descartar el JDK a usar... en fin...</span><br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<b>El verdadero problema</b> (como me ocurrió en este caso) fue cuando el BPM ignora dicha línea de código recién agregada, forzando a usar su JDK por defecto (y que no permite modificar al instalar).</div>
<a name='more'></a><br />
Fueron varias horas instalando y reinstalando el BPM Studio y el JDeveloper, JDKs, compilando clases y <i>bpmo's</i> y <i>screenflows</i>, modificando el <i>Regedit </i>a ver si por ahí iba el asunto, y modificando el archivo eclipse.ini para indicar los distintos JDKs instalados.<br />
<br />
Entonces, pude observar que el patrón era siempre el mismo: ignora la línea de código donde le indico que JDK usar.<br />
La solución la califico como rudimentaria, una salida cochina, pero al fin y al cabo, arregló el problema.<br />
Al instalar el <b>Oracle BPM Studio</b>, aparece una pantalla informando que versión de JDK (o Virtual Machine) usará.<br />
Dentro de la carpeta de instalación del Studio, la carpeta: <b>\eclipse\jre</b>.<br />
En mi caso, C:\OraBPMStudioHome\eclipse\jre.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://31.media.tumblr.com/fee6587d6ccd03e5026b2181f412108e/tumblr_n04uutsanV1rrx7uko2_500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://31.media.tumblr.com/fee6587d6ccd03e5026b2181f412108e/tumblr_n04uutsanV1rrx7uko2_500.jpg" height="320" width="288" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Las única opciones restantes, eran, o formatear, o probar suerte:</div>
<strike>chancar</strike> reemplazar la carpeta JRE con la del JDK que utiliza el JDeveloper (normalmente es el que se instaló junto al mismo)<br />
Tal cual, copié el la carpeta del jdk del jdeveloper:<br />
(ejemplo: C:\OraBPMStudioHome\Middleware\jdk160_24 )<br />
y la renombré (de "
jdk160_24" a "jre").<br />
Como podrán ver en la imagen superior, renombré la original "jre" a "xjre" para no perder los archivos, en caso no funcionase mi idea.<br />
<br />
Compilar. 0 Errores.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Artículos relacionados:</b></div>
- <a href="http://infnato.blogspot.com/2010/11/oracle-bpm-studio-excepciones.html" target="_blank">[Oracle BPM Studio] Excepciones: UnsupportedClassVersionError al importar JARs</a><br />
<br />
<br />
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:<br />
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:
<br />
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" />
<br />
<span class="Apple-style-span" style="font-size: x-small;">(confirme su suscripción desde un mensaje que recibirá al correo registrado)</span>
</form>
Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-55607648782603340672012-04-27T13:14:00.000-05:002012-10-18T11:51:29.369-05:00CoreNevado: Caso de éxito de Oracle<div class="separator" style="clear: both; text-align: left;">
Puede no generarme más ingresos económicos.</div>
<div class="separator" style="clear: both; text-align: left;">
Ni regalarme software (de <b>Oracle</b>, claro) ni brindarme fama o reconocimiento, ni nacional ni internacional.</div>
Inclusive, dentro de la empresa, informaron por la <i>intranet</i> de la noticia, y ninguno de los usuarios que antes trabajaban hasta las 11pm y que ahora se pueden retirar a las 7pm en punto, ni por agradecimiento, ni por orgullo "corporativo", ni por alegría ajena, ni por hipocresía. Probablemente más importancia tuvo el <i>spam</i> que recibieron de viagra, o de la princesa nigeriana que necesita $200 para abrir una cuenta para depositar y compartir sus millones...<br />
<br />
Pero debo reconocer que me genera cierto regocijo, el saber que una compañía de la magnitud de Oracle, haya evaluado, aprobado y publicado en su website <b>nuestro proyecto como un caso de éxito.</b> <br />
(en aplicación de sus tecnologías, particularmente <b>Oracle BPM Studio</b>, <b>Weblogic</b>, entre otros, claro, pero, al fin y al cabo, un caso de éxito para <b>Oracle</b>).<br />
<div class="separator" style="clear: both; text-align: left;">
El software que en mayor o menor proporción, pero también construído con mis manos, y que llevamos desarrollando, parchando, mejorando y ampliando, desde hace poco más de 3 años!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://www.facebook.com/natorrante.blog" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"><img alt="CoreNevado de Credichavín como caso de éxito Oracle" border="0" height="404" src="https://sphotos-b.xx.fbcdn.net/hphotos-ash3/545740_387788741259328_417653012_n.jpg" title="Oracle y CrediChavin" width="640" /></a></div>
<br />
La noticia completa, aquí:<br />
<a href="http://www.oracle.com/us/corporate/customers/customersearch/credichavin-bpm-ss-1597289-esa.html" rel="nofollow" target="_blank">http://www.oracle.com/us/corporate/customers/customersearch/credichavin-bpm-ss-1597289-esa.html</a>
<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Claro, la noticia es un poco... suspicaz:<br />
Cumplir las fechas del cronograma cabalmente? Bueno, supongo que las joyitas de la familia se quedaron en casa, pero eso de cumplir el cronograma no lo cumplen ni los mismos desarrolladores de Oracle ni de ningún lado!<br />
Y si me equivoco... cuánto más seguiremos esperando por <b>Diablo III</b>?? (?)<br />
jajaja... bueno... Felicitaciones a nosotros, felicitaciones para mí! :)<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail: <input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" /><br />
<span class="Apple-style-span" style="font-size: x-small;">(confirme su suscripción desde un mensaje que recibirá al correo)</span><br />
by <a href="http://feedburner.google.com/" target="_blank">FeedBurner</a></form>
<div id="-chrome-auto-translate-plugin-dialog" style="background-attachment: initial !important; background-clip: initial !important; background-color: transparent !important; background-image: initial !important; background-origin: initial !important; background-position: initial initial !important; background-repeat: initial initial !important; display: none; left: 296.5px; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; opacity: 1 !important; overflow-x: visible !important; overflow-y: visible !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; position: absolute !important; text-align: left !important; top: 979px; z-index: 999999 !important;">
<div style="-webkit-border-radius: 10px !important; background-color: #363636 !important; background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #000), color-stop(50%, #363636), color-stop(100%, #000)); border-color: #000000 !important; border-width: 0px !important; color: #fafafa !important; font-size: 16px !important; max-width: 300px !important; opacity: 0.8 !important; overflow: visible !important; padding: 8px !important; text-align: left !important; z-index: 999999 !important;">
<div class="translate">
Delivered</div>
<div class="additional">
</div>
</div>
<img onclick="document.location.href='http://translate.google.com/';" src="http://www.google.com/uds/css/small-logo.png" style="-webkit-border-radius: 20px; background-color: rgba(200, 200, 200, 0.3) !important; cursor: pointer !important; margin: 0 !important; padding: 3px 5px 0 !important; position: absolute !important; right: 1px !important; top: -20px !important; z-index: -1 !important;" /></div>
Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com1tag:blogger.com,1999:blog-5237108649692844127.post-22331765116640953402012-02-18T13:54:00.001-05:002014-01-28T19:48:45.271-05:00[Windows] Habilitar permisos de escritura en USB<a href="https://24.media.tumblr.com/0e319080faa7d0a72817babd8f5f4bc3/tumblr_n04tysEfxB1rrx7uko1_250.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://24.media.tumblr.com/0e319080faa7d0a72817babd8f5f4bc3/tumblr_n04tysEfxB1rrx7uko1_250.jpg" width="98" /></a><br />
<br />
Puede que algún "administrador de equipo" (de usuarios de Windows), alguien de soporte técnico, o alguna otra persona con el conocimiento y los permisos para hacerlo;<br />
y que por variadas razones (ya sea universidades, empresas, etc), sean bloqueados los distintos medios de extracción de datos:<br />
En particular, <b>los puertos USB</b>.<br />
<br />
En el sistema operativo Windows (Particularmente, <b>Windows XP</b>, desconozco si funciona para otros Windows) se pueden <b>habilitar y deshabilitar los permisos de escritura</b> en "<b>dispositivos de almacenamiento masivo USB</b>".<br />
<br />
Los pasos que describo a continuación, son para habilitar la escritura en algún medio flash, usb, o como se le conozca.
<br />
<br />
<a name='more'></a>Entrar al regedit:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://24.media.tumblr.com/637d60c759fe5ed75084a3fce4b0ff88/tumblr_n04tysEfxB1rrx7uko2_400.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="165" src="https://24.media.tumblr.com/637d60c759fe5ed75084a3fce4b0ff88/tumblr_n04tysEfxB1rrx7uko2_400.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: -webkit-auto;">
Dirigirse a la carpeta: <b>StorageDevicePolicies</b></div>
<div class="separator" style="clear: both; text-align: -webkit-auto;">
Explorar la ruta:</div>
<div class="separator" style="clear: both; text-align: -webkit-auto;">
<b>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies</b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://24.media.tumblr.com/7f83598c1730f5fa3b97c0ea3a8e18f6/tumblr_n04tysEfxB1rrx7uko3_1280.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="239" src="https://24.media.tumblr.com/7f83598c1730f5fa3b97c0ea3a8e18f6/tumblr_n04tysEfxB1rrx7uko3_1280.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Una vez dentro, buscar el archivo: <b>WriteProtect</b></div>
<div class="separator" style="clear: both;">
y cambiar el valor que -probablemente- está inicialmente en 1, a 0.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>WriteProtect = 1</b>, quiere decir, protección de escritura habilitado (funciona como una variable lógica, 1 = true, 0 = false)</div>
<div class="separator" style="clear: both;">
al ponerlo <b>en 0, se deshabilita.</b></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<b>Fuente:</b></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://natorrante.tumblr.com/post/74873126399/windowsusb" rel="nofollow" target="_blank">Imágenes, de mi tumblr</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Si éste artículo le fue de ayuda:</div>
<div class="separator" style="clear: both; text-align: left;">
Puede encontrar más de interés en mi <i>fanpage</i> de <a href="https://www.facebook.com/natorrante.blog" target="_blank">facebook</a>. O en mi <a href="https://twitter.com/#!/natorrante" target="_blank">twitter</a>. </div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" /><br />
<span class="Apple-style-span" style="font-size: x-small;">(confirme su suscripción)</span> </form>
<div id="-chrome-auto-translate-plugin-dialog" style="background-attachment: initial !important; background-clip: initial !important; background-color: transparent !important; background-image: initial !important; background-origin: initial !important; display: none; left: 0px; margin-bottom: 0px !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; opacity: 1 !important; overflow-x: visible !important; overflow-y: visible !important; padding-bottom: 0px !important; padding-left: 0px !important; padding-right: 0px !important; padding-top: 0px !important; position: absolute !important; text-align: left !important; top: 0px; z-index: 999999 !important;">
<div style="-webkit-border-radius: 10px !important; background-color: #363636 !important; background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #000), color-stop(50%, #363636), color-stop(100%, #000)); border-color: #000000 !important; border-width: 0px !important; color: #fafafa !important; font-size: 16px !important; max-width: 300px !important; opacity: 0.8 !important; overflow: visible !important; padding: 8px !important; text-align: left !important; z-index: 999999 !important;">
<div class="translate">
</div>
<div class="additional">
</div>
</div>
<img src="http://www.google.com/uds/css/small-logo.png" onclick="document.location.href='http://translate.google.com/';" style="-webkit-border-radius: 20px; background-color: rgba(200, 200, 200, 0.3) !important; cursor: pointer !important; margin: 0 !important; padding: 3px 5px 0 !important; position: absolute !important; right: 1px !important; top: -20px !important; z-index: -1 !important;" /></div>
Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com1tag:blogger.com,1999:blog-5237108649692844127.post-20690757393797895932012-01-03T21:02:00.000-05:002014-01-28T17:01:55.399-05:00Los lenguajes de programación más utilizados durante 2011<div class="separator" style="clear: both; text-align: left;">
Como fan acérrimo de <b>Java</b>, publico con mucho gusto y orgullo ésta lista porque, claro, Java está (permanece) en <b>el primer lugar :)</b></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://25.media.tumblr.com/c68053cf6a6c5276895809bc0e793c65/tumblr_n04t1nftrO1rrx7uko1_1280.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://25.media.tumblr.com/c68053cf6a6c5276895809bc0e793c65/tumblr_n04t1nftrO1rrx7uko1_1280.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Fuentes:</b></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://natorrante.tumblr.com/post/74871065265/java2011" rel="nofollow" target="_blank">imagen, tumblr</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
También en <a href="http://www.puntogeek.com/2011/12/30/los-lenguajes-de-programacion-mas-utilizados-durante-2011/" rel="nofollow">Punto Geek</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:
<input name="email" style="width: 140px;" type="text" />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><input type="submit" value="Subscribe" /><br />
<span class="Apple-style-span" style="font-size: x-small;">(confirme su suscripción desde un mensaje que recibirá al correo registrado)</span><br />
Delivered by <a href="http://feedburner.google.com/" target="_blank">FeedBurner</a></form>
Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-37563607531615068392011-12-24T09:49:00.000-05:002014-01-28T16:22:46.465-05:00Navidad orientada a procesos<div class="separator" style="clear: both; text-align: left;">
Y así, mil vicisitudes pasé éste año con BPM.</div>
<div class="separator" style="clear: both; text-align: left;">
Lo odio, así de simple. </div>
<div class="separator" style="clear: both; text-align: left;">
Se cuelga cuando edito una pantalla, se sobrecarga y se pone lento; </div>
<div class="separator" style="clear: both; text-align: left;">
rechaza ocasionalmente comandos de ctrl+c, ctrl+x, ctrl+v (tan básicos en programación);</div>
<div class="separator" style="clear: both; text-align: left;">
el comando ctrl+s funciona para algunos casos para algunos archivos; </div>
<div class="separator" style="clear: both; text-align: left;">
y muchos, muchos defectos más. </div>
<div class="separator" style="clear: both; text-align: left;">
Además de, claro, ahorita modifiqué 1 archivo de mi proyecto, sólo uno; Pero no maneja un indexado de referencias entre archivos, y en lugar de compilar sólo ése archivo y sus relativos; compila TOOODO el proyecto; de nuevo!!</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<a name='more'></a><br />
<div class="separator" style="clear: both; text-align: left;">
Es el grinch de la programación.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXLY40vKevJTw9iHAeVIZesa8bVTZOfjJ8gRistX6ksRyUn2DYNEQJ-nOVshyxxuVc_1a0UFWb4LgHEQlcyJ6zM1BCmOHJ5ks0v-mKFpNwSwW2KoBgq6zWEcLpUf2xYr_KzDwgQJR8kxaG/s1600/BPM+Studio+Navidad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXLY40vKevJTw9iHAeVIZesa8bVTZOfjJ8gRistX6ksRyUn2DYNEQJ-nOVshyxxuVc_1a0UFWb4LgHEQlcyJ6zM1BCmOHJ5ks0v-mKFpNwSwW2KoBgq6zWEcLpUf2xYr_KzDwgQJR8kxaG/s1600/BPM+Studio+Navidad.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Pero bueno... si mi actual "peor enemigo" me desea feliz navidad y le pone un sombrerito navideño a mi proyecto; supongo que yo también, debo tomarme un respiro, y desearles feliz navidad.</div>
<div class="separator" style="clear: both; text-align: left;">
Pues eso. Feliz Navidad, que disfruten estas fiestas, y que vengas muchos nuevos proyectos.</div>
<div class="separator" style="clear: both; text-align: left;">
Sí, los <b>.project.xpdl</b> . Ja! :)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Suscríbete a mis actualizaciones <span style="text-align: -webkit-auto;">en </span><a href="https://www.facebook.com/natorrante.blog" style="text-align: -webkit-auto;"><b>facebook</b></a><span style="text-align: -webkit-auto;">. También en </span><a href="http://twitter.com/#!/natorrante" style="text-align: -webkit-auto;"><b>twitter</b></a><span style="text-align: -webkit-auto;">.</span></div>
<div class="separator" style="clear: both; text-align: left;">
O recibe en tu correo electrónico las últimas actualizaciones de éste blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<br />
<span class="Apple-style-span" style="font-size: x-small;">(confirme su suscripción desde un mensaje que recibirá al correo registrado)</span><br />
Delivered by <a href="http://feedburner.google.com/" target="_blank">FeedBurner</a></form>
Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-27113725107258662822011-04-23T13:23:00.000-05:002012-06-05T13:59:51.607-05:00[Oracle BPM Studio] Escritura de archivos de texto<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMGP-V92snT1el8bK6SDwztFpzPFjO_teD56koNdcZkfmWI51BrIlv95wWb_zDxyuuHe0ajmtBSplrOpBggxHKsCrIi2bqmxKRl3GmYMp7m160wWD1d4Vo57BNt_6SSpXGNAW41UbQt5cm/s1600/Oracle+logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="40" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMGP-V92snT1el8bK6SDwztFpzPFjO_teD56koNdcZkfmWI51BrIlv95wWb_zDxyuuHe0ajmtBSplrOpBggxHKsCrIi2bqmxKRl3GmYMp7m160wWD1d4Vo57BNt_6SSpXGNAW41UbQt5cm/s320/Oracle+logo.jpg" width="320" /></a></div>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTRLYKXwf4W-GrGMLxRbKEKmmtXVf9qr_fhoLq2OyEp1Mo1CQDjSfi528vQjeVF0EJ9LX3xi3autCPAqbLJw6osOfbGKpDFsF2lXjbXR4-YdkAlUlS2oPbvr94NOQYnWd5ELlzZMxQlO2d/s1600/%255BOracle+BPM+Studio%255D+logo.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTRLYKXwf4W-GrGMLxRbKEKmmtXVf9qr_fhoLq2OyEp1Mo1CQDjSfi528vQjeVF0EJ9LX3xi3autCPAqbLJw6osOfbGKpDFsF2lXjbXR4-YdkAlUlS2oPbvr94NOQYnWd5ELlzZMxQlO2d/s1600/%255BOracle+BPM+Studio%255D+logo.PNG" /></a>A pesar de estar basado en <b>Java</b>: clases, librerías, sintaxis, etcétera;<br />
<b>Oracle BPM Studio</b> da muchas facilidades en algunos comandos, sentencias y códigos para ejecutar, simplificando en apenas un par de líneas lo que en <b>Java</b> equivaldrían a líneas de instanciar, setear, validar, etc.<br />
No digo que sea mejor; sólo digo que es una diferencia notoria en <b>BPM</b> vs. <b>Java</b>.<br />
<br />
En este caso, el código para escribir en un archivo (fichero) sobre una memoria ROM (a.k.a. disco duro, memoria flash, etc) consta básicamente en 4 líneas, a continuación.<br />
<br />
<a name='more'></a><br />
<ol style="font-family: monospace; white-space: pre;">
<li class="li1" style="color: #003030; font-family: 'Courier New', Courier, monospace; font-style: normal; font-weight: normal; font: normal normal normal 95%/normal 'Courier New', Courier, monospace;"><div class="de1" href="" style="color: #000020; font-family: 'Courier New', Courier, monospace; font-weight: normal;">
Fuego.<span class="me1" style="color: #006600;">Io</span>.<span class="me1" style="color: #006600;">TextFile</span> text = <span class="kw2" style="color: black; font-weight: bold;">new</span> Fuego.<span class="me1" style="color: #006600;">Io</span>.<span class="me1" style="color: #006600;">TextFile</span><span class="br0" style="color: #66cc66;">(</span><span class="br0" style="color: #66cc66;">)</span>;</div>
</li>
<li class="li1" style="font-family: 'Courier New', Courier, monospace; font-style: normal; font-weight: normal; font: normal normal normal 95%/normal 'Courier New', Courier, monospace;"><div class="de1" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<span class="Apple-style-span" style="color: #000020;">text.</span><span class="me1" style="color: #006600;">openForWriting</span><span class="br0" style="color: #66cc66;">(</span><span class="Apple-style-span" style="color: #3d85c6;">name :</span><span class="Apple-style-span" style="color: #000020;"> </span><span class="Apple-style-span" style="color: #073763;">RutaArchivo + NombreArchivo + ExtensionArchivo</span><span class="Apple-style-span" style="color: #000020;">, </span><span class="Apple-style-span" style="color: #3d85c6;">append :</span><span class="Apple-style-span" style="color: #000020;"> </span><span class="kw2" style="color: #073763; font-weight: bold;">true</span><span class="br0" style="color: #66cc66;">)</span><span class="Apple-style-span" style="color: #000020;">;</span></div>
</li>
<li class="li1" style="font-family: 'Courier New', Courier, monospace; font-style: normal; font-weight: normal; font: normal normal normal 95%/normal 'Courier New', Courier, monospace;"><div class="de1" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<span class="Apple-style-span" style="color: #000020;">text.</span><span class="me1" style="color: #006600;">writeLineTo</span><span class="br0" style="color: #66cc66;">(</span><span class="st0" style="color: red;">"cadena a imprimir: "</span><span class="Apple-style-span" style="color: #000020;"> + </span><span class="Apple-style-span" style="color: #073763;">variableImprimir</span><span class="br0" style="color: #66cc66;">)</span><span class="Apple-style-span" style="color: #000020;">;</span></div>
</li>
<li class="li1" style="color: #003030; font-family: 'Courier New', Courier, monospace; font-style: normal; font-weight: normal; font: normal normal normal 95%/normal 'Courier New', Courier, monospace;"><div class="de1" style="color: #000020; font-family: 'Courier New', Courier, monospace; font-weight: normal;">
text.<span class="me1" style="color: #006600;">close</span><span class="br0" style="color: #66cc66;">(</span><span class="br0" style="color: #66cc66;">)</span>;</div>
<div class="de1" style="color: #000020; font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<br /></div>
</li>
</ol>
Y -por si acaso- una explicación -de repente innecesaria- del código.<br />
<br />
La línea (1) consiste en declarar el objeto (text) el cual se asociará al archivo de texto a guardar.<br />
La línea (2) utiliza el objeto text para abrir/crear el archivo según el primer parámetro, el nombre: que contiene la dirección, el nombre y la extensión del archivo (ejemplo: <b>"C:/prueba.txt"</b>);<br />
el segundo parámetro es un booleano que<br />
La línea (3) es el método mediante el cual se "insertará" la cadena (o línea de archivo) en el objeto; y se podrá repetir ésta sentencia múltiples veces, según la cantidad de líneas que se deseen escribir, variables, pruebas, etc.<br />
La línea (4) se encarga de, como todo código de I/O, cerrar el archivo y detener la escritura.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmCEVLGdIfqTJqG8-RSWf1l4Uhb6uD_24NfsgXbAEOFK96uPy7409qesCOLte5LU5cUS6pUeXPpo-3mpSR-ROtdNdvWosYz_mzassvCkhy2S5VdoAa1NfHb0gQ4N6M_rV6VJ1JQUCx8C_5/s1600/%255BOracle+BPM+Studio%255D+Eclipse+logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmCEVLGdIfqTJqG8-RSWf1l4Uhb6uD_24NfsgXbAEOFK96uPy7409qesCOLte5LU5cUS6pUeXPpo-3mpSR-ROtdNdvWosYz_mzassvCkhy2S5VdoAa1NfHb0gQ4N6M_rV6VJ1JQUCx8C_5/s1600/%255BOracle+BPM+Studio%255D+Eclipse+logo.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span class="Apple-style-span" style="font-size: x-small;">Recibe en tu correo electrónico las últimas actualizaciones de éste blog:</span></div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=infnato', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" style="border: 1px solid #ccc; padding: 3px; text-align: center;" target="popupwindow">
<span class="Apple-style-span" style="font-size: x-small;">Ingrese su e-mail:</span><br />
<span class="Apple-style-span" style="font-size: x-small;"><input name="email" style="width: 140px;" type="text" /></span><br />
<input name="uri" type="hidden" value="infnato" /><input name="loc" type="hidden" value="es_ES" /><span class="Apple-style-span" style="font-size: x-small;"><input type="submit" value="Subscribe" /></span><br />
<span class="Apple-style-span" style="font-size: x-small;">(confirme su suscripción desde un mensaje que recibirá al correo registrado)</span><br />
<span class="Apple-style-span" style="font-size: x-small;">Delivered by <a href="http://feedburner.google.com/" target="_blank">FeedBurner</a></span></form>Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com0tag:blogger.com,1999:blog-5237108649692844127.post-56928523837015394312010-11-12T02:15:00.001-05:002014-01-28T19:12:54.986-05:00[Oracle BPM Studio] Excepciones: UnsupportedClassVersionError al importar JARs<div class="" style="clear: both; text-align: left;">
Al reinstalar el <i>IDE</i> de <b>Oracle BPM Studio</b> 10.3.1.0, un (proyecto) exportado (ya compilado y sin errores) al ser compilado, empezó a mostrar el siguiente error:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://24.media.tumblr.com/8803747bf06246a00f47bd3048437eca/tumblr_n04vyrn0x91rrx7uko1_1280.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://24.media.tumblr.com/8803747bf06246a00f47bd3048437eca/tumblr_n04vyrn0x91rrx7uko1_1280.png" height="270" width="400" /></a></div>
<blockquote>
<b>Descripción:</b><br />
Error interno. Deberá notificarlo al servicio técnico de <b>Oracle</b>. Incluya la siguiente información.<br />
Error: '<i><b>java.lang.UnsupportedClassVersionError</b>: Bad version number in .class file'</i>.<br />
Nodo: 'Proyecto_Provisiones.ReportesGeneracionAsincronaRCD.Default_1_0.Instance. generarRptCredResumenModif(out sRutaArchivo : String)'.<br />
<b>Recurso:</b> <i>ReportesGeneracionAsincronaRCD.xpdl</i><br />
<b>Vía de Acceso:</b> <i>Proyecto_Provisiones/processes/Maestros</i><br />
<b>Ubicación:</b> <i>generarRptCreditoResumenModif</i></blockquote>
<a name='more'></a><br />
Una característica de dicho error, es que aparecía en todos los métodos que instanciaban a clases de <i>JARs</i> externos (es decir, <i>JARs </i>creados desde <b>JDeveloper</b>).<br />
Como el error hacía referencia a la versión de (algún) <i>.class</i>, la aparente solución fue volver a compilar el <i>package</i> en <b>Java</b> (<i>JDeveloper</i>), luego acceder/referenciar los <i>JARs </i>desde "Recursos Externos"<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://25.media.tumblr.com/f629a25a70bcd623f4d8ab538d425e49/tumblr_n04vyrn0x91rrx7uko2_1280.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://25.media.tumblr.com/f629a25a70bcd623f4d8ab538d425e49/tumblr_n04vyrn0x91rrx7uko2_1280.png" height="234" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Editar Recurso Externo (Biblioteca de clase Java)</td></tr>
</tbody></table>
<div class="" style="clear: both; text-align: left;">
Y luego <i>catalogarlos</i> (o <i>recatalogarlos</i>, según corresponda) pero seguía apareciendo el error (por lo que la hipótesis de que el problema eran los <i>JARs </i>fue descartada)<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://25.media.tumblr.com/2a94097b545cbe9769d5d7b1a0b04a12/tumblr_n04vyrn0x91rrx7uko3_500.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://25.media.tumblr.com/2a94097b545cbe9769d5d7b1a0b04a12/tumblr_n04vyrn0x91rrx7uko3_500.png" height="292" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Catalogar Componente (Componente Java)</td></tr>
</tbody></table>
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://24.media.tumblr.com/c83e0e7f12fcdb4ded2e5503ab3e06d1/tumblr_n04vyrn0x91rrx7uko5_400.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://24.media.tumblr.com/c83e0e7f12fcdb4ded2e5503ab3e06d1/tumblr_n04vyrn0x91rrx7uko5_400.png" height="320" width="279" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Error en Introspección al catalogar componente</td></tr>
</tbody></table>
<br />
La referencia al <b>JDK </b>(la plataforma) no estaba correctamente definida en los parámetros de inicialización del <i>IDE</i>.<br />
En otros términos - expresado a mi entender - es que el <b>JDK</b> asignado para leer los <i>.class</i> en el <b>BPM Studio</b>, y el <b>JDK</b> con lo que se generaron las clases son incompatibles;<br />
La otra posibilidad es que -debido a la reinstalación- se haya eliminado el <b>JDK</b> y se haya referenciado a un <b>JDK inexistente</b>.<br />
En todo caso, la solución fue cambiar el archivo <b><i>eclipse.ini</i></b>, ubicado en la ruta del proyecto<br />
(En mi caso fue <i>D:\OraBPMStudioHome\eclipse</i> ) y agregar (O editar) la ruta del <b>JDK</b>:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><b>-vm <i>C:\Archivos de programa\Java\jdk1.6.0_10\bin\javaw.exe</i></b><br />
<br />
Al corregir la ruta del <b>JDK</b>, compile de nuevo, y el error ya estaba arreglado.<br />
<br />
<br />
A continuación, publico una captura de pantalla del archivo <b><i>eclipse.ini</i></b>, la configuración predeterminada, y la configuración modificada (con la línea del JDK resaltada)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://24.media.tumblr.com/dc1eb2955080340ce7d9727af70559c4/tumblr_n04vyrn0x91rrx7uko4_1280.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://24.media.tumblr.com/dc1eb2955080340ce7d9727af70559c4/tumblr_n04vyrn0x91rrx7uko4_1280.png" height="365" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com6tag:blogger.com,1999:blog-5237108649692844127.post-88306239255022654432010-10-29T12:15:00.008-05:002014-01-28T20:11:39.891-05:00[Java] Excepciones: Unable to construct record instance<div class="" style="clear: both; text-align: center;">
<a href="https://31.media.tumblr.com/de71e8d18fafd2dd4a7c8ca861b9d377/tumblr_n051meFayx1rrx7uko1_400.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="173" src="https://31.media.tumblr.com/de71e8d18fafd2dd4a7c8ca861b9d377/tumblr_n051meFayx1rrx7uko1_400.gif" width="200" /></a></div>
<div style="text-align: left;">
<br />
Sentí la necesidad de publicar ésta excepción porque <b>no encontré ayuda de utilidad en internet</b>, apenas en inglés, tampoco en español; inclusive, al buscar el error, los primeros links de los resultados sólo llevan a foros, donde otro usuario pide ayuda respecto al mismo problema, sin una respuesta puntual o certero.</div>
<br />
<br />
Al trabajar reportes en <i><b>Java</b></i> con plantillas de archivos <i><b>Excel</b> </i>(<i><b>MS Office</b></i>, <b><i>Open Office</i></b>, <i><b>Libre Office</b></i>, etc) ubicadas en memoria no volátil (entiéndase, un disco de almacenamiento); se corre el riesgo de que el archivo esté corrupto; o se corrompa en el proceso de creación.<br />
<br />
<div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;">
El error -aparentemente sin sentido- que apareció fue:</div>
<blockquote>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b>ex.getMessage():</b> Unable to construct record instance.</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
(Mensaje: No se puede construir instancia de registro)</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<br /></div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b>ex.getCause():</b> <i>org.apache.poi.hssf.record.RecordFormatException</i>: HSSF does not currently support encrypted workbooks.</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
(HSSF no es compatible con "libros" cifrados)</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<br /></div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b>ex.getClass():</b> <i>class org.apache.poi.hssf.record.RecordFormatException</i>.</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
(Clase: RecordFormatException)</div>
</blockquote>
Y la línea de código que lanzó la excepción fue:<br />
<blockquote>
<b><span class="Apple-style-span" style="color: #073763;">Workbook</span></b> <i>wb </i>= <span class="Apple-style-span" style="color: #3d85c6;">new</span> <b><span class="Apple-style-span" style="color: #073763;">HSSFWorkbook</span></b>(<i>inp</i>);</blockquote>
Como son reportes sobre plantillas de <i>excel</i>, ya se tiene un patrón de programación, librerías para interactuar con excel ya agregadas, y varía básicamente la agrupación, manipulación, lectura y muestra de los datos.<br />
<br />
Y si bajo ese patrón que siempre ha funcionado, algo empieza a fallar, no es problema del código ni del <i>JDK</i> ni del <i>IDE</i> de <i>Java</i> ni del programador; es problema externo. Ahora... cómo identificarlo?<br />
<br />
<a name='more'></a><br />
Aquí una captura de pantalla:<br />
El entorno de programación es <b><i>Oracle JDeveloper</i></b>.<br />
La imagen muestra la línea de código (seleccionada) dónde se produce el error;<br />
Y en la parte inferior, muestra el mensaje, la causa, y la clase de la excepción.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://24.media.tumblr.com/908d137ef7b71fdf159297585e66a120/tumblr_n051meFayx1rrx7uko2_1280.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="290" src="https://24.media.tumblr.com/908d137ef7b71fdf159297585e66a120/tumblr_n051meFayx1rrx7uko2_1280.png" width="400" /></a></div>
<b>La solución fue sencillísima</b> (para mi caso).<br />
Copié la hoja del libro excel (de la plantilla) en un nuevo archivo. (Lo considero sencillo, porque en el peor de los casos, tendría que volver a crear la plantilla, diseño y distribución de filas, etc)<br />
<br />
<b>La causa del error</b>: El PC se quedó encendido, con la plantilla abierta; a pesar de haber guardado los cambios, al ser apagada "a la fuerza" se semi-malogró el archivo; <br />
Al reiniciar, se podía visualizar desde Office (gracias a la recuperación de archivos que no se cerraron correctamente, del mismo Office), pero ya no podía accederse a él desde java, lanzando dicha excepción.<br />
<br />
<b>Fuente:</b><br />
<a href="http://natorrante.tumblr.com/post/74889433413/javarecordinstance" rel="nofollow" target="_blank">Imágenes en tumblr</a>.<br />
<br />
<div class="separator" style="background-color: white; clear: both; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px;">
Recibe en tu correo electrónico las últimas actualizaciones de este blog:</div>
<form action="http://feedburner.google.com/fb/a/mailverify" method="post" style="background-color: white; border: 1px solid rgb(204, 204, 204); color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px; padding: 3px; text-align: center;" target="popupwindow">
Ingrese su e-mail:<br />
<input name="email" style="width: 140px;" type="text" /> <input type="submit" value="Subscribe" /> <span class="Apple-style-span" style="font-size: xx-small;">(y no olvide confirmar su suscripción)</span></form>
<span style="background-color: white; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px;">También me encuentras en </span><a href="https://www.facebook.com/natorrante.blog" style="background-color: white; color: #3d6081; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px; text-decoration: none;" target="_blank"><b>facebook</b></a><span style="background-color: white; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px;">.</span><br />
<span style="background-color: white; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px;">También en </span><a href="http://twitter.com/#!/natorrante" style="background-color: white; color: #3d6081; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px; text-decoration: none;" target="_blank"><b>twitter</b></a><span style="background-color: white; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px;">.</span><br />
<span style="background-color: white; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px;"> También en </span><a href="http://natorrante.tumblr.com/" style="background-color: white; color: #3d6081; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px; text-decoration: none;" target="_blank"><b>tumblr</b></a><span style="background-color: white; color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 12px; line-height: 17.38800048828125px;">.</span>Renato G.http://www.blogger.com/profile/14419548291310731557noreply@blogger.com1