tag:blogger.com,1999:blog-24734275787166880522024-01-26T17:59:56.042-08:00Informática, Marketing e InternetAprendiendo cada día sobre Informática, Marketing e Internetgallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.comBlogger53125tag:blogger.com,1999:blog-2473427578716688052.post-8644862197486298762020-09-16T05:38:00.004-07:002020-09-16T05:48:10.225-07:00Cómo predecir la bolsa, el consumo, o las temperaturas con con HTML, JavaScript y Brain.js<p>Hoy vamos a ver de forma muy sencilla cómo predecir ciertos factores, como las temperaturas, el consumo eléctrico o la bolsa (aunque esto es un poco complicado, ya que depende de muchos factores políticos, económicos y sociales). Y todo ello usando pocas líneas de código, intercalando HTML y JavaScript, de forma muy sencilla y en unas pocas líneas.</p><p></p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiJCEWYzbhPXsE4PC7o1jX0nG8jhlGaiS6PvD3Q3m1bDjzu8CCez7lEEjapUK1hTYkLCAq5b8y_wcZND3A65Zww-PG3AZsOhbSJOo1wPUSWFmz8yprvc-9XJlAzUv0X6HpGmgdvf9KUv8/s0/brainJSlogo.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiJCEWYzbhPXsE4PC7o1jX0nG8jhlGaiS6PvD3Q3m1bDjzu8CCez7lEEjapUK1hTYkLCAq5b8y_wcZND3A65Zww-PG3AZsOhbSJOo1wPUSWFmz8yprvc-9XJlAzUv0X6HpGmgdvf9KUv8/s0/brainJSlogo.png"/></a></div>
Como CDN vamos a usar la siguiente URL<br/>
<code>
<br/>
src="//unpkg.com/brain.js"
<br/>
</code>
<br/>
<p>En nuestro ejemplo, vamos a simular consumo eléctrico de una casa, para posteriormente, predecir el del día siguiente. Como véis podemos dividir el problema en tres partes:</p>
<ul>
<li>Creación de la red</li>
<li>Entrenamiento: la red aprenderá de los datos que le brindamos</li>
<li>Predicción: la red, según lo aprendido, y con unos datos iniciales previos (en este caso del día anterior) es capaz de llevar a cabo una predicción para el día siguiente.</li>
</ul>
<code>
/* Red */<br/>
var net = new brain.recurrent.LSTMTimeStep();<br/>
<br/>
/* Entrenamiento */<br/>
net.train( getConsum() );<br/>
<br/>
/* Predicción */<br/>
var resultado=net.run( [0.333] ); <br/>
/* 0.333 es el dato de consumo del día anterior */<br/>
<br/>
document.getElementById("salida").innerHTML=resultado;<br/>
<br/>
function getConsum(){<br/>
return [[
0.146,
0.344,
0.333,
0.234,
0.403,
0.111,
0.233
]];<br/>
}<br/><br/>
</code>
<p>Aquí os dejo la imagen de cómo quedaría el documento completo, para que no os perdáis</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1paknhJEfkXV_NmcO6BVrCTN24vAEYozaI-MRz_wg5a7Q_wILF3Cmg1XCWj27_Jzrh44o41V5oVhB8QqlYJj4DsovsFrH7sj4sJNgSKamPArxIsG08Kks_hT_K294ks0hMLjPC7-IyzA/s0/brainJS.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1paknhJEfkXV_NmcO6BVrCTN24vAEYozaI-MRz_wg5a7Q_wILF3Cmg1XCWj27_Jzrh44o41V5oVhB8QqlYJj4DsovsFrH7sj4sJNgSKamPArxIsG08Kks_hT_K294ks0hMLjPC7-IyzA/s0/brainJS.png"/></a></div>
<p>Por último, aquí tenéis el funcionamiento si ejecutamos el programa, que al ser HTML + JavaScript, podéis verlo en directo, de hecho si recargáis la página el modelo generará otra predicciónn</p>
<html>
<head>
<script src="//unpkg.com/brain.js"></script>
</head>
<body>
<h3>Resultado</h3>
<div id='salida'>
</div>
<script>
/* Red */
var net = new brain.recurrent.LSTMTimeStep();
/* Entrenamiento */
net.train( getConsum() );
/* Predicción */
var resultado=net.run( [0.333] );
document.getElementById("salida").innerHTML=resultado;
function getConsum(){
return [[
0.146,
0.344,
0.333,
0.234,
0.403,
0.111,
0.233
]];
}
</script>
</body>
</html>gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-61831618609924001482019-06-30T17:41:00.001-07:002019-06-30T17:41:39.532-07:00Creando modelos predictivos con Knime: 2. Origen de datos y diccionarios<div dir="ltr" style="text-align: left;" trbidi="on">
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}">
En este punto pasamos a describir el modelo realizado para la solución del problema: </div>
<h3 style="text-align: center;">
<b>“DengAI: Predicting Disease Spread”</b></h3>
<h2 style="text-align: justify;">
1. Origen de los Datos</h2>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
El primer paso para comenzar con nuestro modelo es obviamente la entrada de los datos con los que vamos trabajar. </div>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
<br /></div>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
En este caso se proporcionaron dos archivos, uno con toda la información referente a temperaturas y condiciones climáticas y geográficas, y otro archivo con la información referente a los casos totales de dengue.</div>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
<br /></div>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
Sendos archivos se fusionan para conseguir un dataset coherente para su posterior análisis</div>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
<br /></div>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: center;">
<span id="docs-internal-guid-31375b82-7fff-059f-39a4-ad52bd133ca3"><img height="245" src="https://lh5.googleusercontent.com/QuW4q0VuBcEfffmtymoC1EtGKRTxbhofUm81FQptsLDqFLbQmwT11CqimrHN8g_hWsNpP1yiima8x9WNDM-Fm1fHarrlRHVEK-8_VVJbtSl_sDJinYS8W5nutzMCVSERCwLbFXo" style="border: none;" width="400" /></span></div>
<h2 style="text-align: justify;">
2. Diccionario de Datos</h2>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
Con motivo de conseguir una mayor legibilidad y entendimiento de nuestros datos, en el segundo paso hemos creado un diccionario de datos. Dicho diccionario sirve para cambiar los nombres de variables a nuestro antojo y el cual se realiza de forma muy sencilla mediante un archivo xls con los nombres que queramos asignarles. </div>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
<br /></div>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
Un ejemplo sería:</div>
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}" style="text-align: justify;">
</div>
<ul>
<li>Dato origen → Dato post-diccionario</li>
<li>t_cases → casos_totales</li>
</ul>
<div style="text-align: center;">
<span><br /></span></div>
<div style="text-align: center;">
<span id="docs-internal-guid-c903efb9-7fff-bc6b-8741-f858d3e0d86d"><img height="320" src="https://lh5.googleusercontent.com/116gtyBj9V-G-LORdxj--P0D3eKmuPc2XeVu6QwJecCi8dNn3fzhB1u91RdvADUxKuQDF6WL0DmO8KZS0ywU1qpfAPHqi5H-r-tnQ5j3SBMeJ-gBNOM2XsK9wHV_wvLxO3yLY1Y" style="border: none;" width="200" /></span></div>
<br />
<div bis_size="{"x":16,"y":8,"w":653,"h":18,"abs_x":293,"abs_y":168}">
<br /></div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-35531899792399314662019-06-30T17:30:00.002-07:002019-06-30T17:30:56.897-07:00Creando modelos predictivos con Knime: 1. Introducción y Datasets<div dir="ltr" style="text-align: left;" trbidi="on">
<div bis_size="{'x':16,'y':8,'w':653,'h':92,'abs_x':293,'abs_y':170}">
<div bis_size="{"x":16,"y":8,"w":653,"h":92,"abs_x":293,"abs_y":142}">
<div style="text-align: justify;">
En esta serie de artículos vamos a ver paso a paso cómo crear un modelo predictivo con el software Knime, así que antes de nada te invito a que vayas a <a href="https://www.gallardo.work/2018/05/introduccion-knime-el-mejor-software.html" target="_blank">este artículo</a> donde te hice un tutorial sobre este software paso a paso.<br />
<br />
Como os decía, vamos a crear un modelo predictivo con el software Knime para un problema real, propuesto en la web de <a bis_size="{'x':362,'y':26,'w':92,'h':17,'abs_x':639,'abs_y':188}" href="https://www.drivendata.org/" target="_blank">drivendata.org</a> en el que vamos a poder obtener archivos de entrenamiento y test para crear nuestro modelo y posteriormente podremos subir un archivo submission con nuestras predicciones para comprobar cuanto error tiene nuestro modelo predictivo, o también conocido como MAE (Mean Absolute Error).</div>
<div style="text-align: justify;">
<br /></div>
<h2 style="text-align: justify;">
1. Crear cuenta en drivendata.org</h2>
<div style="text-align: justify;">
El primer paso será crearnos una cuenta en <a bis_size="{'x':362,'y':26,'w':92,'h':17,'abs_x':639,'abs_y':188}" href="https://www.drivendata.org/" target="_blank">drivendata.org</a>.<br />
<br />
<h2>
2. Descargar los datos para usarlos en Knime</h2>
<div>
Para ello es tan sencillo como irnos a "Competitions" y buscar un reto.</div>
</div>
</div>
</div>
<div bis_size="{'x':16,'y':100,'w':653,'h':18,'abs_x':293,'abs_y':262}">
<div bis_size="{"x":16,"y":100,"w":653,"h":18,"abs_x":293,"abs_y":234}">
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvtIncwbo37kNd5n-vmv48sKEyPOnbUTAiDD_gBBxs6gVKqxDuyAcIZXT8ZZq6hCfddQy3pzQWu9wZbu3Yz_34tUbYjulgMPudBuXjenaANzUwQwJNC1epZFj34vKQ7gP1aVtM6fFOHC4/s1600/Screenshot_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvtIncwbo37kNd5n-vmv48sKEyPOnbUTAiDD_gBBxs6gVKqxDuyAcIZXT8ZZq6hCfddQy3pzQWu9wZbu3Yz_34tUbYjulgMPudBuXjenaANzUwQwJNC1epZFj34vKQ7gP1aVtM6fFOHC4/s1600/Screenshot_5.png" width="100%" /></a></div>
<div>
En nuestro caso hemos elegido "DengAI: Predicting Disease Spread". A continuación haremos clic en "Data Download para descargar los datos y trabajar posteriormente con ellos.</div>
</div>
</div>
</div>
<div bis_size="{'x':16,'y':118,'w':653,'h':18,'abs_x':293,'abs_y':280}">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgut6exFFXGyc_vOAt5saxNJ9WEXkZDPTuX1mgflfXINw2SpAbbN6vx12PCadlafZtwe9JVrtllbtah1_lLDV4eCd_5jtB1CFkkVZHPSmT2HI_XSE0XGXJUomoHYRY-eQ_aeirSTY0nCHA/s1600/Screenshot_4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgut6exFFXGyc_vOAt5saxNJ9WEXkZDPTuX1mgflfXINw2SpAbbN6vx12PCadlafZtwe9JVrtllbtah1_lLDV4eCd_5jtB1CFkkVZHPSmT2HI_XSE0XGXJUomoHYRY-eQ_aeirSTY0nCHA/s1600/Screenshot_4.png" width="100%" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
Como podemos ver en este apartado podremos descargar los diferentes Datasets y ver las instrucciones de dicha "competition".</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHhG67mPr_sDRFDwgOlDh3b8BomSOMfd5z8uH10X2WoAHR0VY0fsD1V87YG-Onq_wkTcOqgqpTl6Di8DjB0a5cvx4g-2oIoBI7v34AEI79zDg14hlqSrGiiwUqiCc9yM8EJuaqrVrUWuE/s1600/Screenshot_6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHhG67mPr_sDRFDwgOlDh3b8BomSOMfd5z8uH10X2WoAHR0VY0fsD1V87YG-Onq_wkTcOqgqpTl6Di8DjB0a5cvx4g-2oIoBI7v34AEI79zDg14hlqSrGiiwUqiCc9yM8EJuaqrVrUWuE/s1600/Screenshot_6.png" width="100%" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
Aunque este es el primer artículo, y volviendo al software Knime, os enseño para ir abriendo boca, la siguiente imagen de lo que va a ser la estructura de nuestro modelo dentro de este software.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;"><img src="https://lh3.googleusercontent.com/pAvuRh5D_qiqYAHbHDSVlMfyad3jHwIM-YfdNIkiA7XEpLAt8p430Z2G8czkbdVqpkpOgW9NthJOUQBtYNgdkn2y3EANMlSZ2sXioRWNb8xw7QLRbbt6PsQtLv35NLCkjDn-JXA" style="border: none;" width="100%" /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span id="docs-internal-guid-50e151e2-7fff-09f6-a90d-4617dfbc5639">En la imagen pueden verse los diferentes pasos secuenciales que he realizado para generar mi modelo. Espero pueda verse con claridad la estructura principal del mismo. A continuación (en siguientes posts), vamos a ver de forma más detallada (entrando dentro de cada metanodo) para que pueda observarse con mayor detalle.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<br /></div>
</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-80924481816519448472018-05-08T15:18:00.001-07:002018-05-13T06:24:11.781-07:00Primeros pasos en Knime, el mejor software para minería de datos<div dir="ltr" style="text-align: left;" trbidi="on">
<div align="justify">
Hoy vamos a dar los primeros pasos con <b>Knime</b>, un excelente software de analisis de <b>Data Mining</b>, <b>Minería de datos</b> en español o para la explotación de <b>Big Data</b>. Se trata de un software gratuito que puedes desde <a href="https://www.knime.com/downloads">descargar aquí</a>
<br />
<center>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjchyZlUZCs_bs7BTn5SD5kXR9wZPUlt2I9ZWdJ21qzUX84sTBjbhDQUjTvR2lNzIY8cI1fC8Mc7L12RJhlftkX0pu1OTyfvHSRtsqeqLRTWzArXqt7Mxb2T5CS4a4OQ_GbAiFLx027dOo/s1600/knimeIcon.png" /> </center>
<br />
<h2>
Qué vamos a ver sobre Knime en este artículo</h2>
En este artículo aprenderemos a hacer las siguientes cosas con Knime:
<br />
<ul>
<li>
Importar Datasets
</li>
<li>
Creación de Diccionarios
</li>
<li>
Ampliación de estadísticas
</li>
<li>
Conversiones de tipo</li>
</ul>
<h3>
Nodos que vamos a usar</h3>
En este artículo usaremos los siguientes nodos de <b>Knime
</b><br />
<ul>
<li>Nodos de entrada de datos</li>
<li>Boxplot</li>
<li>
Statistics</li>
<li>Numeric to String</li>
</ul>
<h3>
Datasets que usaremos</h3>
En este artículo vamos a usar un Dataset del <b>Titanic </b>y el de <b>Iris</b><br />
<br />
<img alt="Dataset del Titanic" src="https://lh3.googleusercontent.com/5nTEnZBQpKble_Fb9plY6nTRqrjU8qntIwP9wfE4rrS5gUAeGIhod9Kz1vhuUmplznR-95pCtTtgF_pSI0LTsg_agt_t3PehD9I5WGy12vzZUKwoNT-IFhTqoIkZF4xyPJs-eqHmrKCKjJpm" title="Dataset del Titanic" width="100%" />
<br />
<h2>
Importar Datasets en Knime</h2>
<b>Importar Datasets</b> en Knime es realmente sencillo. Dependiendo del tipo de archivo que sea (xls, csv...) usaremos uno de los nodos que Knime nos ofrece. En este caso vamos a Importar el dataset de Iris que es un archivo <b>xls</b> con el nodo <b>"Excel Reader (XLS)"</b>.<br />
<ol>
<li>Buscamos el nodo en <b>"Node Repository"</b></li>
<li>Arrastramos el nodo a la pizarra para trabajar con el.</li>
</ol>
<div>
<br /></div>
<img alt="Importar Datasets en Knime" src="https://lh6.googleusercontent.com/8OZ6cNLGqukhcjoK1MCI6SXKP8AozY6Wif7yy2hsIL6pYqRWOAzAxRhzR41d99OUyruOEP1xtUQOax2hES-n5AhDqpxqs4UoIf_7tk5ORZyvnnTsVNIOIlRQA9kLZv54FVg_9ApPLdBbt-De" title="Importar Datasets en Knime" width="100%" /><br />
<br />
A continuación:<br />
<ol>
<li>Hacemos <b>clic derecho > Configure</b> para configurar el nodo (este proceso será igual para todos los nodos).</li>
<li>Elegiremos la <b>ruta </b>de nuestro equipo donde esté el dataset.</li>
</ol>
<br />
<img alt="Importar Datasets en Knime" src="https://lh3.googleusercontent.com/pw_we49rvz2k9R3fO29Y2dG85zf-tRGo7jE6kinha6sckYJFF_vt2NBHyTA1sLa2uk2YFc3nyAVyueyqiIwc8vEPX8whdkgEgpn9WXYPbjqw2RPrmD3pCCNAvzzTAuZn8iYescwmyZpT425p" title="Importar Datasets en Knime" width="100%" /><br />
<br />
Podemos marcar o no la casilla que os muestro a continuación, dependiendo del dataset.<br />
<br />
<img alt="Importar Datasets en Knime" src="https://lh3.googleusercontent.com/dCNPubOVaCuzGoJXN-fOfKZWQyFEERxWMndBBrnpQAvze7jKqBtiIZYgY0CQeKHvJhf2M6kVjvx5LS5z210Q5ddXuN-ydEgN05OSwqq2CBaBsadob2mzkIceKrLkUhWroa7jdoHtI6ErKCSm" title="Importar Datasets en Knime" width="100%" />
<br />
<h2>
Creación de Diccionarios en Knime</h2>
Crear un <b>diccionario en Knime</b>, nos ayudará a darle mejor <b>visibilidad</b> y <b>legibilidad </b>a nuestro dataset. Teniendo en cuenta que lo más probable es que sean datos que nos den, podremos modelar un archivo xls para darle nuevos nombres a las variables de nuestro dataset como vemos en la siguiente imagen. En este caso estamos haciendo uso del dataset de Titanic.<br />
<br />
<img alt="" src="https://lh4.googleusercontent.com/_R32_E3QSwXm5alPRfvxB4yvu6aGcNEv4_VtRzsJJQU5p9CvsvmBJMJJ8LCSd2MR-2Eoo6KslhcdOnfr4dJAjijWtnal7CFBgmdEb2jVJKa6YMflXDRBCVexB6WsqMbQmGnjjqY-QCaxCMIJ" title="" width="100%" /><br />
<br />
Ahora vamos a hacer uso del nodo <b>"Insert Column Header"</b> para añadir las columnas y del <b>"Excel Reader (XLS)"</b> para añadir nuestro diccionario. Hay que tener cuenta que en este caso el dataset está añadido desde el nodo <b>"CSV Reader"</b>.<br />
<br />
<img alt="" src="https://lh3.googleusercontent.com/XYXpbaLFYbi4pFLhyp_DoHuUcPsD13SdePyZJL566iuxxIZkQnXWoidAPG18YEXBlCtdw6CmhwVHxaVizrNCFLV-w6pIzU2Hw8tv2PRSC6UVNRYz19RRh6Yr76zrsfjFWkwd4UqTWPIBesdo" title="" width="100%" /><br />
<br />
Como podemos ver, en la imagen de arriba, tendremos que seleccionar la ruta del diccionario.<br />
<br />
<center>
<img alt="" src="https://lh6.googleusercontent.com/2flEGlGBgNxPoRQxfrQ1jNmiNlP81r_MtXpUQX3-pvsuCINmri983qqUSZRaB9_EVYnxOmDo51UnzJyjR8Ysrf5DnnhQIC9xrijjU7cv1fhvikGyFQJ2EvbNg2LQwIlzYrp7BTDmHvv5mBtO" title="" width="70%" /></center>
<br />
Configuramos el nodo <b>"Insert Column Header"</b> y como podemos ver, los datos nos aparecerán con una nueva cabecera, justo la que hemos creado con el diccionario de datos.<br />
<br />
<img alt="" src="https://lh3.googleusercontent.com/ad_uiNvPUUR131NJDkYl9raVCez8hY4to_iIqwTenYWheQnyDPtn-_s3QDgrmnJESsFm1J5GUrjzCjFLg3E8i6K-OVou7JJUuLSQWOAFDme0hJbz7NRK_1bB4ED9BGMFI3uDp9fWmiHa-0kY" title="" width="100%" />
<br />
<h2>
Analizar distribuciones para variables específicas en Knime</h2>
A continuación, vamos a ver gracias al nodo <b>"Conditional Box Plot"</b> el <b>boxplot </b>o también llamado <b>Caja de Bigotes</b> para conocer entre otros datos de interés los quartiles de nuestros datos para variables específicas. En este caso para el dataset de Iris.
<br />
<br />
<img alt="" src="https://lh4.googleusercontent.com/jpArEnnzMeG_TqtXWJL0d8D4ce6GCCP6Kwtn_oLlL4MabkojJJYw6jNlTpJfrbsQrrhB2y4sLS-P0zAc4BoINppG6ECJSDe7ouxV4qD-8eNs1kJehhVjgHH2dd_I_eru6Uju_ei7rxaTvGm1" title="" width="100%" />
<br />
<br />
En este caso podemos ver claramente como la altura del sépalo varía mucho de un tipo de Iris a otra.
<br />
<br />
<img alt="" src="https://lh6.googleusercontent.com/uZnSImVk86ASeEIhq1BzjYjD8dFIfOpblVRsHRFMirjMdzOik-0Ssdpmfirz92ACeQc4AqAkzMJyvdcXc70TDUblTU6uAazKwUE9zPAkbYy6J_NY-W7a0PggBCJ3vQ-CK2JJh8qk-rRSVjFi" title="" width="100%" />
<br />
<h2>
Ampliación de estadísticas en Knime</h2>
Un nodo muy interesante y con el cuál podremos conocer innumerables datos e incluso histogramas es <b>"Statistics"</b> que nos ofrece datos estadísticos sobre nuestros datos. Entre muchos otros el máximo, mínimo, media, varianza, kurtosis...
<br />
<br />
<center>
<img alt="Estadísticas en Knime" src="https://lh5.googleusercontent.com/mP-7z8-aeF1do-Lu6rjJzB1Ww46UvolhlmdaUC4NZSQffaSFpRrCApiMpEyMrWjLL7n8aKm4Kk1l3rw6u1rmFOfpdSVqpfIKPDrW01QZ_mnFEHm6b2dJnc_Mm2t2BCgf-hbGDhw" title="Estadísticas en Knime" width="70%" /></center>
<img alt="Estadísticas en Knime" src="https://lh4.googleusercontent.com/7blxYPMYldHv6zHYv6R_5RQique1INB8tSn-6VE3LYOSIerIaanr_dLF87Tc4EWAUx0SsuXeES-TCyFNM9Jzbemc2Qtd2HIWi9vUjTKq4jzyYxHGBWPx_HyccxtSoKR_JQoTTvE" title="Estadísticas en Knime" width="100%" />
<br />
<h2>
Conversiones de tipo en Knime</h2>
Cuando trabajamos con Knime, a veces, es necesario cambiar el tipo de dato, como por ejemplo, de String a Numérico o viceversa y para ello tendremos sendos nodos que nos ayudarán en las conversiones de tipo de forma muy sencilla.
<br />
<br />
<center>
<img alt="Conversiones de Tipo en Knime" src="https://lh6.googleusercontent.com/y_AR4mlLEgYOaZGxhfKHVlub5NvEYWzlwjfJwE5UkHHz6PVnmCug69On1p2Ew-IObgE6cnO-_P4JdV0e4I85I0TNUkVXHqAVSjTWbfzEFCRAxa5DniV89ElBD65hpse2JeR5DeA" title="Conversiones de Tipo en Knime" width="70%" /></center>
<img alt="Conversiones de Tipo en Knime" src="https://lh4.googleusercontent.com/U5F52AyPeAuLM-Mx2qPv3ECe-6Sy8wwJe7AKaDTUP2lncRVfPNLqcMuanQdbcmumf17qdq4S_r3siAW6RD7ZgPJ-sBmXoYM6uYdgNwHCejo4AGjNWOhzpd6cC-W2OUbT0PHdcFo" title="Conversiones de Tipo en Knime" width="100%" /><br />
<h3>
Créditos</h3>
<div>
Agradecimientos por la ayuda a Juanma Ucero Calderón (<a href="https://www.linkedin.com/in/jmuc97/" target="_blank">Linkedin Aquí</a>)</div>
</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com2tag:blogger.com,1999:blog-2473427578716688052.post-35716820996698076762018-05-02T11:13:00.001-07:002018-05-07T10:59:22.936-07:00Recursividad en Java - Torres de Hanoi #4<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Hoy os voy a enseñar a resolver el juego de las Torres de Hanoi en Java con un método recursivo. Si aún no sabes qué es recursividad, puedes ver <a href="https://www.gallardo.work/2018/05/recursividad-en-java-bajar-una-escalera.html" target="_blank">este post</a> donde te los explico.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="240" data-original-width="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" /></a></div>
<h3 style="text-align: left;">
Método recursivo en Java para el juego de las Torres de Hanoi</h3>
<div style="text-align: justify;">
El juego de las Torres de Hanoi es un Rompecabezas muy conocido inventado por el matemático francés Edouard Lucas. Si quieres saber más sobre el juego, cómo solucionarlo, o si ni siquiera sabes en qué consiste, puedes consultar <a href="https://es.wikipedia.org/wiki/Torres_de_Han%C3%B3i" target="_blank">este enlace de Wikipedia.</a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Nosotros vamos al grano, vamos a solucionar el problema de las torres de Hanoi con un método en Java para n discos de forma recursiva.</div>
<div>
<br /></div>
<div>
<blockquote class="tr_bq">
public void torresHanoi(int discos, int torre1, int torre2, int torre3){<br />
// Caso Base<br />
<br />
if (discos==1){<br />
System.out.println("Mover disco de Torre " + torre1 + " a Torre " + torre3);<br />
} else {<br />
// Dominio<br />
<br />
// Llamamos a la función de tal forma que decrementamos<br />
// el número de discos, y seguimos el algoritmo<br />
// (origen, destino, auxiliar)<br />
torresHanoi(discos-1, torre1, torre3, torre2);<br />
System.out.println("Mover disco de Torre " + torre1 + " a Torre " + torre3);<br />
// En esta ocasión siguiendo el algoritmo hacemos lo siguiente<br />
// (auxiliar, origen, destino)<br />
torresHanoi(discos-1, torre2, torre1, torre3);<br />
}<br />
<br />
}</blockquote>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como podemos comprobar, método nos devolverá los pasos de los discos que tenemos que ir moviendo y la torre a donde deben moverse. Por lo que si hacemos <b>problema.torresHanoi (3, 1, 2, 3) </b>el resultado sería el siguiente:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<blockquote class="tr_bq">
Mover disco de Torre 1 a Torre 3<br />
Mover disco de Torre 1 a Torre 2<br />
Mover disco de Torre 3 a Torre 2<br />
Mover disco de Torre 1 a Torre 3<br />
Mover disco de Torre 2 a Torre 1<br />
Mover disco de Torre 2 a Torre 3<br />
Mover disco de Torre 1 a Torre 3</blockquote>
</div>
<div>
<br />
Puedes comprobar que la solución al juego es correcta en <a href="http://www.uterra.com/juegos/torre_hanoi.php" target="_blank">este enlace</a>.</div>
<div>
<h3 style="text-align: left;">
Más ejercicios de Recursividad en Java </h3>
<br />
<div>
</div>
<br />
<div>
<ul style="text-align: left;">
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-bajar-una-escalera.html" target="_blank">Método recursivo para bajar una escalera</a></li>
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-sucesion-de.html" target="_blank">Método recursivo para hallar la sucesión de Fibonacci</a></li>
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-factorial-de-un.html" target="_blank">Método recursivo para hallar el factorial de un número</a></li>
</ul>
</div>
</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-17207440994495004052018-05-02T11:13:00.000-07:002018-05-07T10:59:24.384-07:00Recursividad en Java - Sucesión de Fibonacci #3<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Hoy os voy a enseñar cómo hallar el <b>La sucesión de Fibonacci en Java</b> con un <b>método recursivo</b>. Si todavía esto de la recursividad te resulta muy lioso, puedes echarle un vistazo a <a href="https://www.gallardo.work/2018/05/recursividad-en-java-bajar-una-escalera.html" target="_blank">este post</a> donde te lo explico de forma sencilla.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="240" data-original-width="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" /></a></div>
<h4 style="text-align: justify;">
Método recursivo en Java para calcular la sucesión de Fibonacci</h4>
<div class="separator" style="clear: both; text-align: justify;">
La sucesión de Fibonacci en matemática es la siguiente sucesión infinita de números naturales:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span class="mwe-math-element" style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"><img alt="{\displaystyle 0,1,1,2,3,5,8,13,21,34,55,}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/544394eff1e0bdb6e9edb1c6c7f146521738ee34" style="border: 0px; display: inline-block; height: 2.509ex; vertical-align: -0.671ex; width: 28.423ex;" /></span><span style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"> </span><span class="mwe-math-element" style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"><img alt="{\displaystyle 89,}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8145413014b40c08ce6bcd37cca304c76ff9282c" style="border: 0px; display: inline-block; height: 2.509ex; vertical-align: -0.671ex; width: 2.972ex;" /></span><span style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"> </span><span class="mwe-math-element" style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"><img alt="{\displaystyle 144,}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/252e921b7172d45deab44b7f0e3cd05cbe2c4c38" style="border: 0px; display: inline-block; height: 2.509ex; vertical-align: -0.671ex; width: 4.134ex;" /></span><span style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"> </span><span class="mwe-math-element" style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"><img alt="{\displaystyle 233,}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ca5aeacf3cd334eb4ccbb35554d3f7dfebf3b9f0" style="border: 0px; display: inline-block; height: 2.509ex; vertical-align: -0.671ex; width: 4.134ex;" /></span><span style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"> </span><span class="mwe-math-element" style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"><img alt="{\displaystyle 377,}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/9b4cfe6950e5d3c98080f2228ca4a299dcc819da" style="border: 0px; display: inline-block; height: 2.509ex; vertical-align: -0.671ex; width: 4.134ex;" /></span><span style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"> </span><span class="mwe-math-element" style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"><img alt="{\displaystyle 610,}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c4f77c1293c4b1eb30484c8dbb5c13c12eeaea96" style="border: 0px; display: inline-block; height: 2.509ex; vertical-align: -0.671ex; width: 4.134ex;" /></span><span style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"> </span><span class="mwe-math-element" style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"><img alt="{\displaystyle 987,}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3396bedbe781633a8549c8cddc76f062afabcaac" style="border: 0px; display: inline-block; height: 2.509ex; vertical-align: -0.671ex; width: 4.134ex;" /></span><span style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"> </span><span class="mwe-math-element" style="background-color: white; color: #222222; font-family: sans-serif; font-size: 14px; text-align: left;"><img alt="{\displaystyle 1597\ldots \,}" aria-hidden="true" class="mwe-math-fallback-image-inline" src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ee4ea7439dd42e4b33d17c12d6cbd6804af3d6ba" style="border: 0px; display: inline-block; height: 2.176ex; vertical-align: -0.338ex; width: 8.147ex;" /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
La sucesión comienza con 0 y 1 y a raíz de estos cada término siguiente es la suma de los dos anteriores, así de sencillo. Pues bien, sabiendo esto vamos a modelar en Java y de forma recursiva la sucesión de Fibonacci.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<blockquote class="tr_bq" style="clear: both; text-align: justify;">
public int fibonacciRecursivo (int numero){<br />
// Caso base<br />
if (numero == 1 || numero == 2)<br />
return 1;<br />
else<br />
return fibonacciRecursivo(numero-1) + fibonacciRecursivo(numero-2);<br />
}</blockquote>
<div>
<br />
<div style="text-align: justify;">
En este caso vemos como el "Caso base" sería cuando el número entero que le pasamos sea "1" o "2", ya que en ese caso el resultado sería 1. Por otra parte el dominio, o "Caso recursivo", sería la suma del "número entero - 1" + "número entero - 2". Si no lo has entendido, intenta pensar que si le pasamos por ejemplo "10", empezaría haciendo la suma de la sucesión de Fibonacci de los dos números anteriores, es decir, iría del número más alto hasta el más bajo. El resultado si hacemos <b>System.out.println("La sucesion fibonacci es " + problema.fibonacciRecursivo(10))</b> sería el siguiente.</div>
<br />
<blockquote class="tr_bq">
La sucesion fibonacci es 55</blockquote>
<h3 style="text-align: left;">
Más ejercicios de Recursividad en Java </h3>
<br />
<div>
</div>
<br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<ul style="text-align: left;">
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-bajar-una-escalera.html" target="_blank">Método recursivo para bajar una escalera</a></li>
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-factorial-de-un.html" target="_blank">Método recursivo para hallar el factorial de un número</a></li>
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-torres-de-hanoi-4.html" target="_blank">Método recursivo para solucionar las Torres de Hanoi</a></li>
</ul>
</div>
<br /></div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com1tag:blogger.com,1999:blog-2473427578716688052.post-54370852640294389202018-05-02T10:22:00.000-07:002018-05-07T10:59:26.448-07:00Recursividad en Java - Factorial de un número #2<div dir="ltr" style="text-align: left;" trbidi="on">
Hoy os voy a enseñar cómo hacer el <b>Factorial de un número en Java</b> con un <b>método recursivo</b>. Si aún no sabes qué es la recursividad, te invito a que le eches un vistazo a <a href="https://www.gallardo.work/2018/05/recursividad-en-java-bajar-una-escalera.html" target="_blank">este artículo</a> donde te lo explico de forma sencilla.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="240" data-original-width="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" /></a></div>
<h4 style="text-align: left;">
Método recursivo en Java para calcular el Factorial de un número</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6ROEQ9BHoej80W677V2ggE2QWqpOc1HHte_Ygs3Ego1H6Ki1FAyvR137-jVXzFzve3oIKWmkqg_D28AvkVzZCPQYqYttIsTTOr2AMmcoA109FNHvQSjIbivg6yKKFP87fuA51J3tJFW8/s1600/n-factorial.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="512" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6ROEQ9BHoej80W677V2ggE2QWqpOc1HHte_Ygs3Ego1H6Ki1FAyvR137-jVXzFzve3oIKWmkqg_D28AvkVzZCPQYqYttIsTTOr2AMmcoA109FNHvQSjIbivg6yKKFP87fuA51J3tJFW8/s200/n-factorial.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En nuestro caso tomamos como <b>"Caso base"</b> cuando el número sea menor que "0", por tanto, los demás casos los tomará como <b>"Caso recursivo o Dominio"</b>. Es decir, hasta que no sea menor que 0, el método irá decrementando el número introducido.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<blockquote class="tr_bq" style="clear: both; text-align: justify;">
public int factorialRecursivo(int numero) {<br />
// Validar que no sea menor que 0<br />
if (numero < 0) {<br />
return 0;<br />
// Caso base<br />
} else {<br />
if (numero == 0){<br />
return 1;<br />
// Dominio<br />
} else {<br />
return numero * factorialRecursivo(numero - 1);<br />
}<br />
}<br />
}</blockquote>
<div>
<br /></div>
<div style="text-align: justify;">
A continuación vemos el resultado al hacer <b>System.out.println("El factorial es " + problema.factorialRecursivo(10))</b></div>
<div>
<br /></div>
<blockquote class="tr_bq">
El factorial es 3628800</blockquote>
<h3 style="text-align: left;">
Más ejercicios de Recursividad en Java </h3>
<div>
<ul style="text-align: left;">
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-bajar-una-escalera.html" target="_blank">Método recursivo para bajar una escalera</a></li>
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-sucesion-de.html" target="_blank">Método recursivo para hallar la sucesión de Fibonacci</a></li>
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-torres-de-hanoi-4.html" target="_blank">Método recursivo para solucionar las Torres de Hanoi</a></li>
</ul>
</div>
<div>
<br /></div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-16662522332679197382018-05-02T10:09:00.000-07:002018-05-02T11:19:00.416-07:00Recursividad en Java - Bajar una escalera #1<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Hoy os vamos a explicar <b>qué es la recursividad</b> en programación, en este caso vamos a ver ejemplos en lenguaje <b>Java </b>para que entendáis cómo funciona y para qué podemos usarla.</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="240" data-original-width="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" /></a></div>
<h3>
¿Qué es la recursividad?</h3>
La <b>recursividad </b>es una técnica usada en programación que nos permite que un bloque de instrucciones, una función u operación se realice un cierto número de veces (predeterminadas por nosotros). Gracias a que muchos lenguajes, como por ejemplo <b>Java </b>nos permiten que los métodos puedan llamarse a sí mismos podemos realizar operaciones recursivas.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVpp84F9BW5fRcLFeMDnPFgCRUthtf0zEw1OJIEX4bahWLS8bhRlJj8EzE_qgMOZ5vuDFmtCxBQeAK5H_KOGC1HWWThEbsah9FUrQC9T9e0q58Gj8lS_JHdGlOQYaaHeuLla_m-vXJr_Q/s1600/matrioska.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVpp84F9BW5fRcLFeMDnPFgCRUthtf0zEw1OJIEX4bahWLS8bhRlJj8EzE_qgMOZ5vuDFmtCxBQeAK5H_KOGC1HWWThEbsah9FUrQC9T9e0q58Gj8lS_JHdGlOQYaaHeuLla_m-vXJr_Q/s1600/matrioska.jpg" width="100%" /></a></div>
<div style="text-align: justify;">
<h3>
Caso Base y Caso Recursivo</h3>
</div>
<div style="text-align: justify;">
Todo método recursivo puede dividirse en <b>"Caso base"</b>, que sería algo así como el criterio de parada y <b>"Caso recursivo"</b> que converge al caso base (es decir, que se va acercando al caso base). La recursividad sirve como sustituto de una ireración, por ejemplo un bucle while o for, y en muchos casos siendo menos costoso. </div>
<div style="text-align: justify;">
<h3>
Método recursivo en Java para bajar una escalera</h3>
</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg24D3lBwW_95V_iKoh0aTsMwSD1byM_FgbSWSFcvvA71dhhZTJ-amqAR6vop4dBvtzxkQRJga_7BIdBx15r_UBQ92UtvtjwBV6BsuvkZoEZaWqNwxArPkXYrI5NydKe2jH2UqY9MF9Ou0/s1600/escaleras.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg24D3lBwW_95V_iKoh0aTsMwSD1byM_FgbSWSFcvvA71dhhZTJ-amqAR6vop4dBvtzxkQRJga_7BIdBx15r_UBQ92UtvtjwBV6BsuvkZoEZaWqNwxArPkXYrI5NydKe2jH2UqY9MF9Ou0/s1600/escaleras.jpg" width="100%" /></a></div>
Es el caso del siguiente ejemplo, donde vamos a ver cómo bajar una escalera con un método recursivo, de tal modo que cuando al método le pasamos un entero "10" por ejemplo, tras pasar por el if, iría al "Caso recursivo" donde volvería a llamar al método con un entero "10-1" es decir "9", y así hasta llegar a 0, donde daríamos por hecho que la escalera se ha bajado.<br />
<br /></div>
<blockquote class="tr_bq">
public void bajarEscalera (int escalones){<br />
// Caso Base, Respuesta Explícita<br />
if (escalones == 0){<br />
System.out.println("La escalera se ha bajado");<br />
} else {<br />
System.out.println("Bajando escalon " + escalones);<br />
// Hacemos uso de la recursividad<br />
bajarEscalera(escalones-1);<br />
}<br />
<br />
}</blockquote>
<br />
<div style="text-align: justify;">
El resultado del método al ejecutarlo <b>problema.bajarEscalera(10)</b> sería el siguiente:</div>
<br />
<blockquote class="tr_bq">
Bajando escalon 10<br />
Bajando escalon 9<br />
Bajando escalon 8<br />
Bajando escalon 7<br />
Bajando escalon 6<br />
Bajando escalon 5<br />
Bajando escalon 4<br />
Bajando escalon 3<br />
Bajando escalon 2<br />
Bajando escalon 1<br />
La escalera se ha bajado</blockquote>
<h3>
Más ejercicios de Recursividad en Java </h3>
<div>
<ul>
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-factorial-de-un.html" target="_blank">Método recursivo para hallar el factorial de un número</a></li>
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-sucesion-de.html" target="_blank">Método recursivo para hallar la sucesión de Fibonacci</a></li>
<li><a href="https://www.gallardo.work/2018/05/recursividad-en-java-torres-de-hanoi-4.html" target="_blank">Método recursivo para solucionar las Torres de Hanoi</a></li>
</ul>
</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-63981123381551235042018-03-13T03:56:00.000-07:002018-03-13T03:56:29.774-07:00Uso de los algoritmos de análisis de datos genéticos en Expander<div align="justify">
<h2>Objetivos con Expander</h2>
<ul>
<li>
Uso de los algoritmos de análisis de datos genéticos incorporados en EXPANDER.
</li>
<li>
Comprobar y analizar los diferentes resultados que nos muestra la herramienta.
</li>
</ul>
<h2>Conceptos de Algoritmos en Expander</h2>
<p>
La herramienta EXPANDER nos ofrece implementaciones de una serie de algoritmos estándares de análisis de expresión como por ejemplo K-means, CLICK o SOM. En esta práctica se aplicarán algunos de estos algoritmos e interpretan sus resultados. A continuación detallamos alguna ifonrmación sobre estos algoritmos.
</p>
<h3>K-means</h3>
<p>
El algoritmo K-means método de Clustering basado en división. Dado un determinado valor K, el algoritmo divide los datos en K grupos disjuntos optimizandola siguiente función:
</p>
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEWX5L4tKF1kTRVY7lMKl7-NX3MmbAtYOIN-R2hVWSErLmY3GVJYM5SGpls-nUhAGa6QoRpgoZa8wYFsttuSssffifTd_MsmovqCVGk1GLmG2AIowqbR0r8KEmUVa21i-gojWnzYaadH0/s1600/2.Kmeans.png" width="100%"/>
<p>
donde O es un objeto en el cluster Ci y ¹i es el centroide del cluster Ci, es decir, la media de todos sus objetos. Por lo tanto, la función E intenta minimizar la suma del cuadrado de la distancia de los objetos al centro de sus clusters.
</p>
<h3>Algoritmo CLICK</h3>
<p>
El algoritmo CLICK (CLuster Identification via Connectivity Kernels) identifica aquellos componentes altamente relacionados en grafos de proximidad como clusters. CLICK juega con el supuesto probabilístico de que, tras la normalización de los datos, los valores de similitud entre ellos siguen una distribución normal. Siguiendo este supuesto, el peso wij de una arista se define como la probabilidad de que los vértices i y j estén en el mismo cluster
</p>
<h2>Bibliografía</h2>
<ul>
<li>
http://acgt.cs.tau.ac.il/expander/
</li>
<li>
http://acgt.cs.tau.ac.il/expander/help/ver6.06help_pdf/ver6Help.pdf
</li>
<li>
http://www.ncbi.nlm.nih.gov/sites/GDSbrowser
</li>
<li>
http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/kmeans.html
</li>
</ul>
</br>
<h2>Experimentos con Expander</h2>
<h3>Experimento 1</h3>
<ol>
<li>
Abrimos EXPANDER con un mínimo de 2GB en la memoria de JVM.
</li>
<li>
Cargamos en la aplicación los datos de expresión ../simple_input_files/expressionData2.txt.
</li>
<li>
Llevamos a cabo una estandarización de los datos. Para ello ejecute la opción Preprocessing > Standardization > Mean 0
</li>
<li>
Una vez realizado el preprocesado, seleccionamos los algoritmos de agrupamiento no supervisado y seleccionar Kmeans para la generación de 5 grupos. ¿Cuántos genes contiene el grupo mayor?¿Qué grupo tiene la mayor homogeneidad?
</li>
</ol>
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqObHbh3Qt4yCYjgFuGFUy-SnNUNjHbyr5wlcd3PcQCc9nB-VV4_fDHlWIcd4zofsNpsV9A50fktoB6vPg9B1aCZcq7TDiJPEmSwEV2tHZWv0GO0h_Ir6FTmHM27f-ioaBUEnZyMGNSrY/s1600/3.kmeansD2.png" width="100%" />
<p>
<strong>Como podemos observar el Cluster_1 es el de mayor tamaño y el que mayor homogeneidad tiene es el Cluster_3.</strong>
</p>
<ol start="5">
<li>
Observamos los patrones de expresión que ha generado la aplicación. ¿Qué sucederá si se vuelve a ejecutar el algoritmo para 4 grupos?
</li>
</ol>
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhksSQdFQ7vp-YqDacfNMiTWS7qT88d4sHZRn8CeBx-UdwtBLZIcGctAF0YlPG31-3anOcewSIg-1G_0lfPiHhMlP4_NOY-VvwpePoTFsU9skbVVXhYRIUAlNjxY4JG9VXN-Ja75VV9sxw/s1600/4.KmeansD2.png" width="100%" />
<p>
<strong>Que los grupos aumentan su tamaño debido a que se redistribuyen</strong>
</p>
<ol start="6">
<li>
Visualice ahora los valores de la matriz de expresión con los diferentes resultados obtenidos. Para ello seleccione la opción Clustered Expression Matrix del menú Visualizations. ¿Se aprecian cambios entre las diferentes resultados?¿Cuales?
</li>
</ol>
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbbOPJO4Wt74HdN4X-DJmR27_fXNTuCMhfV1V5taJnlvC2Us202JFBtZq3HymYKLhIj35b2jvp8ZysB-j3QJWITrNSHsCxmDRcKkByRpYf_jsNtyYgjyrGJv5IlXwmaIgSnG0dbTu3seI/s1600/5.KmeansD2ExpresionMatrix.png" width="100%" />
<p>
<strong>Que para los Clusters con el mismo nombre tenemos diferentes colores puesto que hay datos diferentes</strong>
</p>
<ol start="7">
<li>
Por último vamos a realizar un PCA a los resultados obtenidos. ¿Qué diferencias se pueden apreciar entre ambos resultados?¿A qué se debe esto?
</li>
</ol>
</br>
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQMkrlT3NwYckL5PclW5Z-SWZ244HChQW7_n0ugJqYiUQKr_w1D3HqDkZW4EsNql6PV-1qFMnIRc-xmUMG48CRyPVxqidSiz7w-V53baz3r-h06cftGvX39uoaH6ak9ADNQToanrGFVs0/s1600/6.PCAKmeans4Cluster.png" width="100%" />
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoBgQo9nXvqj5AWtWm1O3P62tmu9syHmBsRCckpEbwX901pMsfSUf0_wj4hjf5balbbPYIJrcmNryv66_sMFrYaNtPGS0njyQqTIuxPgoFJDdVNHXD5D1ilF7w2YLwVtx4gJx5kzq7r9E/s1600/6.PCAKmeans5Cluster.png" width="100%" />
<p>
<strong>Como podemos observar en el primer estudio PCA tenemos 5 Clustes y en el segundo tenemos 4 Clusters</strong>
</p>
<h2>Ejercicios con Expander</h2>
<h3>Ejercicio 1</h3>
<p>
Vamos a seleccionar un microarray del NCBI y lo vamos a transformar a formato de entrada de EXPANDER. Vamos a analizar el microarray utilizando para ello algunos de los algoritmos de agrupamiento explicados. Anote los resultados más relevantes y redacte unas conclusiones sobre el grupo generado con mayor homogeneidad.
</p>
</br>
<p>
<strong>Hay que tener el cuenta lo que vimos en la primera práctica sobre Expander a la hora de modificar el texto borrando los comentarios y las filas con null.</strong>
</p>
</br>
<p>
Con el <strong>Algoritmo CLICK</strong> podemos comprobar que el cluster más homogéneo es el Cluster_2
</p>
</br>
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLNc_9VtivQRS9FaR2bkFSxL60D2tyD941Wk39l6CicYfoBK8mk1pyQUOER31_3UpjR68rbiQ3r7Nkqi25BXe4-PImtxpYGsO-Nk7wJYL4SY0F5oENUnieob8cgs9XucEcnd9J3LrWeek/s1600/9.CLICK1.png" width="100%" />
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSaUjkNLq6H9HzCJzmnx1WsYAZk0AmQQjM0IECBl2VUHf4HirEglMURYyWyMTnH4KmBwdcCEZhTyyucss1fF5VooFFs8v0mGtxVrzclVjV9neLtbgEKMeE7Cy2cLbiJyjzHuRrLOHsKTw/s1600/9.CLICK2.png" width="100%" />
<p>
En el <strong>Algoritmo K-Means</strong> con 10 clusters observamos que el primero y el segundo son los más homogéneos (tener en cuenta que el tamaño del primero es muy superior al segundo)
</p>
</br>
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB7kBLC_z5CdX1tJ3OTJBYptjDg-5txQ0PnD24Dlr95IfNDMEdPDHx3FK6JCubHk0Qx0wZ1eMC1SG44ONc_AAFLD0P33Nttc95kyn3C9eZCvc-u8U4_3AQXL30FCRzWFWK3i-4ryBCSas/s1600/8.KMEANS1.png" width="100%" />
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEBHJDO5LL8p65XnXBnS9xvwA4m0ZlT9qPLs9phSk3VrreOLgDGHUWnk2rFoIOjQ4zjqx25rUzKWTkDhCzgvy_InrLwAMpdJwZyrr5RmQ_BxajbAPaRusm8pXGq3K58BpsHSGGsgNFND8/s1600/8.KMEANS2.png" data-original-width="100%" />
</br>
<p>
En el <strong>Algoritmo SOM</strong> con 24 clusters podemos ver que el más homogéneo es el cluster_5.
</p>
</br>
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLdOQPLI5EwItdwP5Vd0rcMWIfaGUfwYEtY8vUaNx93TeW1jlEUDRWyMgy1XqIs4cNRS8QULbjizaT9VKtg0Eqy48SScqeRwRQJC_CVunf_rUX1TNH-uXbT7a0EaB7mG8YoScs7knTOIk/s1600/7.SOM1.png" width="100%" />
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_FWZ2dRBrWCHhsZ0kejQFrv7WxgkYh4QvMa2ox4fvP0aMC-Z9qtmsN09xCVgd5402MCwf0zc2THEI29zrRDgpl39fJDBPe8pt1NLXcF2Y2AQNq8N4cr92r7DCjgttzCtN7Vihu4pQYP4/s1600/7.SOM2.png" width="100%" />
</br>
<p>
Con la información que nos ha mostrado cada algoritmo, la cuál es muy similar, podríamos decir que tenemos localizada la mayor homogeneidad de los datos.
</p>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-26126841864393707562018-03-07T07:17:00.000-08:002018-03-08T22:21:34.015-08:00Análisis de datos genéticos con Expander<div align="justify">
<p>
En este artículo vamos a ver el uso de la herramienta Expander para analizar datos genéticos realizando diferentes experimentos, ejercicios y problemas para que puedas entenderla mejor
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDCxv0WHRxw3prrhauL9hVcEKXD4OibWn1oODA3yb14xnxAhFvDLx9NlA1tm-0bnTLV7TpkCkV3oDlJAq4BepcPbK-DHrZKxgLauc1DWa6pVhc96Kn1hM0qC2SUwAO9_m6t7TwFU4Lp7Y/s1600/logoExpander.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDCxv0WHRxw3prrhauL9hVcEKXD4OibWn1oODA3yb14xnxAhFvDLx9NlA1tm-0bnTLV7TpkCkV3oDlJAq4BepcPbK-DHrZKxgLauc1DWa6pVhc96Kn1hM0qC2SUwAO9_m6t7TwFU4Lp7Y/s1600/logoExpander.jpg" width="100%"/></a>
<h2>Nuestros objetivos con Expander</h2>
<ul>
<li>Instalar la herramienta de análisis de datos genéticos Expander.</li>
<li>Introducir al uso de la herramienta para el análisis de datos de expresión genética.</li>
<li>Conocer los formatos de entrada de la aplicación y visualización de los mismos.</li>
</ul>
<h2>Conceptos sobre Expander</h2>
<p>
EXPANDER (EXpression Analyzer and DisplayER) es una herramienta basada en JAVA para el análisis de datos de expresión genética. La herramienta Expander permite llevar a cabo: pre-procesamiento, visualización, agrupamiento (clustering, biclustering) y análisis de (bi-)clusters (como análisis de enriquecimiento). La herramienta contiene implementaciones de una serie de algoritmos estándares de análisis de expresión como por ejemplo K-means o CLICK que vamos a explicar a continuación.
</p>
<h3>Dónde descargar Expander</h3>
<p>
Puedes descargarla de forma libre en <a href="http://acgt.cs.tau.ac.il/expander/">este enlace</a>.
</p>
<h3>Formatos de datos de entrada en Expander</h3>
<p>
La herramienta EXPANDER es capaz de cargar un fichero con datos de expresión genética como, por ejemplo, un microarray, y trabajar con sus datos mediante los algoritmos que la propia herramienta incluye. Para ello, el archivo debe:
</p>
<ul>
<li>
Estar delimitado por tabulaciones
</li>
<li>
La primera línea contendrá los campos correspondientes al Id del gen, su nombre (o símbolo) y las condiciones experimentales separados por tabulaciones
</li>
<li>
Las líneas siguientes contendrán la información referente a los datos detallados en la primera línea
</li>
</ul>
</br>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRvZbJk98wu122ZVoq-ybARydRd2tFrFanK0KYMKrlmyxp_ENdUMfcURELzcVH_FLUg4Y9Fnxc2JjT52VJOcoEYf45vjd3eiYLzQHG74d6o1uJ5zvkn7ue1ICOpPk3_hgE0DwK7uJStsw/s1600/1EjemploDatosExpander.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRvZbJk98wu122ZVoq-ybARydRd2tFrFanK0KYMKrlmyxp_ENdUMfcURELzcVH_FLUg4Y9Fnxc2JjT52VJOcoEYf45vjd3eiYLzQHG74d6o1uJ5zvkn7ue1ICOpPk3_hgE0DwK7uJStsw/s1600/1EjemploDatosExpander.png" width="100%" /></a>
<h3>Análisis de Componentes Principales (PCA)</h3>
<p>
Expander también viene con una herramienta implementada que es un algoritmo de Análisis de Componentes Principales (PCA). Este componente transforma los datos originales (N X M) en una representación gráfica de 2 dimensiones. Los puntos del gráfico representan cada uno de sus genes y su situación depende del nivel de expresión de los mismos, es decir, los genes que tienen similitud en su expresión, aparecerán juntos en el gráfico.
</p>
<h3>Bibliografía básica sobre Expander</h3>
<ul>
<li>
https://www.ncbi.nlm.nih.gov/sites/GDSbrowser
</li>
<li>
http://acgt.cs.tau.ac.il/expander/
</li>
<li>
http://acgt.cs.tau.ac.il/expander/help/ver6.06help_pdf/ver6Help.pdf
</li>
</ul>
</br>
<h2>Experimentos con Expander</h2>
<h3>Experimento 1</h3>
<p>
En el presente experimento vamos a realizar los primeros pasos con EXPANDER. Para ello realice las siguientesacciones:</p>
<ol >
<li>
Descargue el archivo Expander6Win.zip adjunto a esta práctica y descomprima el contenido en una carpeta del disco duro.
</li>
<li>
Descargue el archivo Expander6Win.zip adjunto a esta práctica y descomprima el contenido en una carpeta del disco duro.
</li>
<li>
Ejecute el programa lanzando para ello el archivo Expander.bat. (también existe Expander_2GB.bat y Expander_4GB.bat, los cuáles requeriran mayor uso de la RAM)
</li>
<li>
Una vez se ha accedido al programa vamos a cargar algunos datos de muestra para trabajar con ellos. Para ello ejecutamos el menú File > Load Data > Expression Data > Tabular Data File… Debe aparecer un cuadro de dialogo
como el siguiente:
</li>
</ol>
</br>
<p>
Seleccionamos el fichero situado en ../simple_input_files/expressionData2.txt y pulsamos OK.
</p>
</br>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwgxl-1egtS2-QQ9NQrQJAhIJdkgYladR2n0L3_HYfR_xaRcEZP9Li1ZsdLIOntmJOv0cfED4cSwMcWnSpKqgGencjD98h4PhwdH-0P-gZHd4jdgwtO7tBq3rJW9ZVARZ64iVfJM2pCPE/s1600/2.EjemploDeCargarDatos.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwgxl-1egtS2-QQ9NQrQJAhIJdkgYladR2n0L3_HYfR_xaRcEZP9Li1ZsdLIOntmJOv0cfED4cSwMcWnSpKqgGencjD98h4PhwdH-0P-gZHd4jdgwtO7tBq3rJW9ZVARZ64iVfJM2pCPE/s1600/2.EjemploDeCargarDatos.png" width="100%" /></a>
<ol start="4">
<li>
Observar los datos cargados. ¿En qué rango de valores se mueven?
</li>
</ol>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhplpbaigAYwFCceguXl0_FK_74Wzjp3_STX-tQFS2WLUTThNEggEsVxrr3jR3x2caMk5nvqLZijajFcdHwGKuKKRkkh2kjT4teZFRhLRIpyIInLkBlFuD5Jp7pjjrkuNpC2xYNxRBxDJY/s1600/3DatosDelBoxplot.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhplpbaigAYwFCceguXl0_FK_74Wzjp3_STX-tQFS2WLUTThNEggEsVxrr3jR3x2caMk5nvqLZijajFcdHwGKuKKRkkh2kjT4teZFRhLRIpyIInLkBlFuD5Jp7pjjrkuNpC2xYNxRBxDJY/s1600/3DatosDelBoxplot.png" data-original-width="706" data-original-height="296" /></a>
<p>
<strong>Como podemos observar los valores están entre 5 y 14.</strong>
</p>
</br>
<ol start="5">
<li>
Una vez cargados los datos, observar en el panel de la derecha las diferentes opciones de visualización de los mismos. (Box Plots, Raw Expression Matrix y Preprocessed Expression Matrix). ¿Qué gráfico nos muestra la última opción?¿Por qué?</li>
</ol>
</br>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT4Y7VzlE6whnQR0BA3zjALjpJZYyKsMrnq08GOj_CijFJNowzhBKl9yw5GrUVFDZ7v-PVW3XShvm0CtnPh4Hf2qyY8Ka-t9ImVui-isE4eW82LQqoeblbMv7_47NncpNc4uOQynmuLB4/s1600/4.ExpressionData.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT4Y7VzlE6whnQR0BA3zjALjpJZYyKsMrnq08GOj_CijFJNowzhBKl9yw5GrUVFDZ7v-PVW3XShvm0CtnPh4Hf2qyY8Ka-t9ImVui-isE4eW82LQqoeblbMv7_47NncpNc4uOQynmuLB4/s1600/4.ExpressionData.png" width="100%"/></a>
<p>
<strong>La última opción no nos muestra nada puesto que aún no hemos realizado ningún preproceso</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiJO-4V2BIrMUVUfc-0Q_aWFBcxgpZTLCWXB1LvPbfKtZKty2W5TH6vvB56Vm7fkz5xNulTk70oMuHp2hl_9cz1P0opAAk2uX0xdSS0urufqRBw0Nf-XqFWzgBtDa0Oyhl25yv7V3HSDA/s1600/5.Preprocessed0.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiJO-4V2BIrMUVUfc-0Q_aWFBcxgpZTLCWXB1LvPbfKtZKty2W5TH6vvB56Vm7fkz5xNulTk70oMuHp2hl_9cz1P0opAAk2uX0xdSS0urufqRBw0Nf-XqFWzgBtDa0Oyhl25yv7V3HSDA/s1600/5.Preprocessed0.png" data-original-width="722" data-original-height="311" /></a>
<ol start="6">
<li>
Lleve a cabo una estandarización de los datos. Para ello ejecute la opción Preprocessing > Standardization > Mean 0 and Variance 1 (Distribución Normal Estándar que tiene una media de '0' y una desviación estándar de '1'). ¿Qué cambios puede observar?
</li>
</ol>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJ6vkq4RuC7e5FVZim9n0voycF6Gz7SUD8vXcwPeRciBp_dpI7mY90TFviOzTeNeNDhWSOsr0byJ40n5Ikgg4hpVbQ9aajbHtbThL4HYYt0v3XkA_PGcUqGdsfD1pkEyM59n7O2xqjIg/s1600/6.Preprocessed1.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJ6vkq4RuC7e5FVZim9n0voycF6Gz7SUD8vXcwPeRciBp_dpI7mY90TFviOzTeNeNDhWSOsr0byJ40n5Ikgg4hpVbQ9aajbHtbThL4HYYt0v3XkA_PGcUqGdsfD1pkEyM59n7O2xqjIg/s1600/6.Preprocessed1.png" width="100%" /></a>
<h3>Experimento 2</h3>
<p>
Lleve a cabo un PCA de los datos previamente cargados, para ello seleccione Visualizations > PCA.
</p>
<ol>
<li>
¿Qué resultado se obtiene?¿Que forma tiene el gráfico?
</li>
</ol>
<p>
<strong>El gráfico tiene una forma ovalada</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTmuzwMCh5T6p1Gmbt6jjB0-NRQ13tH9NNvqm52VKaNeWAhZyLSmlIDH4VK3266XIMzpQH6m0mBVLAgCI7scAdL465dskL08N134-dOb5R6IvQQHP3ZRtPjiJ-rZeIBs32ND8Mjb83t8I/s1600/7.PCAProbes.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTmuzwMCh5T6p1Gmbt6jjB0-NRQ13tH9NNvqm52VKaNeWAhZyLSmlIDH4VK3266XIMzpQH6m0mBVLAgCI7scAdL465dskL08N134-dOb5R6IvQQHP3ZRtPjiJ-rZeIBs32ND8Mjb83t8I/s1600/7.PCAProbes.png" data-original-width="931" data-original-height="648" /></a>
<ol start="2">
<li>
Hay zonas donde existe una mayor concentración de puntos ¿A qué se debe esto?
</li>
</ol>
</br>
<strong>Como vemos tras la estandarización, podemos ver una concentración de puntos destacable en los bordes y cerca del 0 del eje Y.</strong>
<ol start="3">
<li>
Cree una nueva sesión y lance un PCA sin realizar ninguna estandarización previa. Compare los resultados. ¿Por qué existe esta diferencia?
</li>
</ol>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxDvWlzyFTV_1XbX08rOLXs8pRuCyR_0rkMyHWQiMPZAlR7SAnMjCzM_BW-zSttTeTm6A1DbucJ1m5Iy0UT3dLTvFUkzVaQ_So1uYLKxux0vEQNVwCaQl9ZvjgtUSVa9xFWC1w4Copeyk/s1600/8.PCAProbesWhithoutStandarization.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxDvWlzyFTV_1XbX08rOLXs8pRuCyR_0rkMyHWQiMPZAlR7SAnMjCzM_BW-zSttTeTm6A1DbucJ1m5Iy0UT3dLTvFUkzVaQ_So1uYLKxux0vEQNVwCaQl9ZvjgtUSVa9xFWC1w4Copeyk/s1600/8.PCAProbesWhithoutStandarization.png" data-original-width="961" data-original-height="619" /></a>
<p>
<strong>Porque ahora los datos no están estandarizados ni normalizados y están lejos del 0.</strong>
</p>
</br>
<h2>Ejercicios con Expander</h2>
<h3>Ejercicio 1</h3>
<p>
Repita los experimentos anteriores utilizando para ello el fichero de datos ../simple_input_files/expressionData1.txt. Este fichero es un fragmento de un microarray que contiene datos de expresión genética referente a la levadura, concretamente al ciclo celular.
<p>
<strong>Cargamos los datos</strong>
</p>
<a
href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgntzqi_Rwfd3nK-uEOvogsjiW-9SzMkfjpdrodDoVkrf6hFMeQWYIMJ-b6a53sA6Fj9IIiGZyB2wYBJWOxZ4c2ncK9WXtghuu_Yx2xja_KBBO7sG7iMChfZ_6KJm7AE9ow2HpchpW0pJQ/s1600/9.DataLevadura.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgntzqi_Rwfd3nK-uEOvogsjiW-9SzMkfjpdrodDoVkrf6hFMeQWYIMJ-b6a53sA6Fj9IIiGZyB2wYBJWOxZ4c2ncK9WXtghuu_Yx2xja_KBBO7sG7iMChfZ_6KJm7AE9ow2HpchpW0pJQ/s1600/9.DataLevadura.png" data-original-width="873" data-original-height="406" /></a>
<p>
<strong>Vemos la Matriz de expresión</strong>
</p>
<a
href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJbnBq7c1pJ55LWbEoEv5h6Zl2Z1jOHpBBcIhePE8DWoVETv5RGiA4df2SoQbdncGJt0ZchomjU-iOCYfvjC7nNQrmB1klsjqOxaaPlLd0neAy2F5_6Dtzt1qZ0TT7zcvbgLFmCC4vyqQ/s1600/10.DataLevaduraRaw.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJbnBq7c1pJ55LWbEoEv5h6Zl2Z1jOHpBBcIhePE8DWoVETv5RGiA4df2SoQbdncGJt0ZchomjU-iOCYfvjC7nNQrmB1klsjqOxaaPlLd0neAy2F5_6Dtzt1qZ0TT7zcvbgLFmCC4vyqQ/s1600/10.DataLevaduraRaw.png" data-original-width="918" data-original-height="449" /></a>
<p>
<strong>Vemos la Matriz de expresión preprocesada</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOCYMZzmNGrEXtply6itguTbBX-b4-VDYB3KcYCbFArWzyAUF3Y9Mudm-v9oTtVQrJ3yKekpPWT4cVPxtLCEtwEdGKDxIZ7xEo_u1Q051LLpyp51iBDwybh9fK5lCxJgfbIBEMSpwH93U/s1600/11.DataLevaduraPreprocessed.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOCYMZzmNGrEXtply6itguTbBX-b4-VDYB3KcYCbFArWzyAUF3Y9Mudm-v9oTtVQrJ3yKekpPWT4cVPxtLCEtwEdGKDxIZ7xEo_u1Q051LLpyp51iBDwybh9fK5lCxJgfbIBEMSpwH93U/s1600/11.DataLevaduraPreprocessed.png" data-original-width="923" data-original-height="487" /></a>
<p>
<strong>Estudio PCA</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjypCfsUxRckekiRzYZF76jBHe1DjXXLPI0uRArIg4_-8FsVSboQ9TuG_45FlUvN16DHQMvhJiRGsS-Qb-4zY5AI1vwY4DIUSz35xzr_qONsfQaZAAmFhT97e_kErcteVTlX_0pIYVlL0U/s1600/12.DataLevaduraPCA.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjypCfsUxRckekiRzYZF76jBHe1DjXXLPI0uRArIg4_-8FsVSboQ9TuG_45FlUvN16DHQMvhJiRGsS-Qb-4zY5AI1vwY4DIUSz35xzr_qONsfQaZAAmFhT97e_kErcteVTlX_0pIYVlL0U/s1600/12.DataLevaduraPCA.png" data-original-width="951" data-original-height="625" /></a>
<h3>Ejercicio 2</h3>
<p>
Cargue ahora los datos del fichero ../simple_input_files/expressionData3.txt. Este fichero contiene la información de 3893 genes bajo 174 condiciones experimentales. Realice un análisis de expresión utilizando para ello el wizard de EXPANDER. Estandarice y normalice los datos. Compruebe las características de la matriz de expresión y detalle las conclusiones que se pueden obtener. Realice un análisis PCA y compruebe los resultados.
</p>
<p>
<strong>Matriz de Expresión sin preprocesar</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEP3m1dbHxexqFrXvWG98WfZ9amlAyxqNzq2Yh8RaSNnGZuAKSLYifYqsmvNq3hyphenhyphenNuKFI_z5jVsMCROo8VV5v84NRSg-16jjyL5jgRMu2QwPvZlqzH1kLX1x1oh4VKwzrL6NftRW_WOqg/s1600/14.DataGenes.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEP3m1dbHxexqFrXvWG98WfZ9amlAyxqNzq2Yh8RaSNnGZuAKSLYifYqsmvNq3hyphenhyphenNuKFI_z5jVsMCROo8VV5v84NRSg-16jjyL5jgRMu2QwPvZlqzH1kLX1x1oh4VKwzrL6NftRW_WOqg/s1600/14.DataGenes.png" data-original-width="908" data-original-height="569" /></a>
<p>
<strong>Vemos el estudio PCA sin Preprocesado</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNSqjzs3MySOFIMalfAILGqFtaQpgOqcPQywCKSeABUqQ7nmv5-Ep5zv84diUIEu_eWNC6ykVEQJSi9Ib5RtywvamlKWbDWnjt9grR2U6EiBMEilpXnUes4KGUU5KTGGI5F7zs9_2yMQA/s1600/14.DataGenesPCA.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNSqjzs3MySOFIMalfAILGqFtaQpgOqcPQywCKSeABUqQ7nmv5-Ep5zv84diUIEu_eWNC6ykVEQJSi9Ib5RtywvamlKWbDWnjt9grR2U6EiBMEilpXnUes4KGUU5KTGGI5F7zs9_2yMQA/s1600/14.DataGenesPCA.png" data-original-width="938" data-original-height="614" /></a>
<p>
<strong>Ahora vemos el estudio PCA Preprocesado</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWt3qGJ7Y4c3PJ9jYy-7FRzvvBzlTVrXCTrdlfmSxEguM8PZkSqHWClljkJ-pqIi2ogQNX6YsW9oDN70dRu0Qn3leCDv_GN5Y_VN3O-rRcd_RS9RgQ8xzNocn8gxKD1kYW9_vDTpFWS6U/s1600/15.DataGenesPCAPreprocessed.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWt3qGJ7Y4c3PJ9jYy-7FRzvvBzlTVrXCTrdlfmSxEguM8PZkSqHWClljkJ-pqIi2ogQNX6YsW9oDN70dRu0Qn3leCDv_GN5Y_VN3O-rRcd_RS9RgQ8xzNocn8gxKD1kYW9_vDTpFWS6U/s1600/15.DataGenesPCAPreprocessed.png" data-original-width="959" data-original-height="624" /></a>
<p>
<strong>A continuación también os muestro la matriz de expresión preprocesada para este dataset.</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrLtj02bKdIZ4oR9cH_zom5XyRmQCyRU6VUtC8hCef61XkAGQTt-OnWVoOxcqoPxVyPZj8p71yA3b3YdVtYIlBCAiqK26nhPHc6W42WrQHCpDqEskb8vwBJTHC1CKeyiXKNEnYTGRDe6E/s1600/16.DataGenesPreprocessed.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrLtj02bKdIZ4oR9cH_zom5XyRmQCyRU6VUtC8hCef61XkAGQTt-OnWVoOxcqoPxVyPZj8p71yA3b3YdVtYIlBCAiqK26nhPHc6W42WrQHCpDqEskb8vwBJTHC1CKeyiXKNEnYTGRDe6E/s1600/16.DataGenesPreprocessed.png" data-original-width="923" data-original-height="564" /></a>
<h2>Problemas con Expander</h2>
<h3>Problema 1</h3>
<p>
Seleccione un microarray del NCBI y transfórmelo a formato de entrada de EXPANDER. Una vez hecho esto, analícelo utilizando las herramientas vistas en clase.
</p>
<p>
<strong>Nos vamos a descargar el dataset que queramos en la web de NCBI del cuál tenéis el enlace en el apartado de Bibliografía.</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdYqe1rfd1R_Tnad5vL1aTfUSKgZIdbGXrZ9g4GykPIkUd73G1Fc1RCVBgRgCMGwS9y9RAw-XSYLfrQkPapGlUD2ETY_sBf97lnHTmpF3o3atcD37ZLgxP8oHl0zsg40kr9Va73YvJMUA/s1600/17.NCBIDownload.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdYqe1rfd1R_Tnad5vL1aTfUSKgZIdbGXrZ9g4GykPIkUd73G1Fc1RCVBgRgCMGwS9y9RAw-XSYLfrQkPapGlUD2ETY_sBf97lnHTmpF3o3atcD37ZLgxP8oHl0zsg40kr9Va73YvJMUA/s1600/17.NCBIDownload.png" width="100%"/></a>
<p>
<strong>Ojo! para transformar un archivo de NCBI el cuál viene en formato soft y debemos pasar a .txt debemos tener en cuenta varias cosas:</strong></p>
<p>
Borrar comentarios superiores
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ5WH5BlBb5Nf9nh9RPXWDRFCBj_3xyNcySJioWllJX9vFajUFKG8Oqat8T0lIGRyFVNgNer9zP78lRcrkDi9Oh43TunDPEiUK2Qm-VOlHnHkbXp8gF-blbonK89VRPOXu7AVMLK3iJPI/s1600/19.NCBITransformar2.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ5WH5BlBb5Nf9nh9RPXWDRFCBj_3xyNcySJioWllJX9vFajUFKG8Oqat8T0lIGRyFVNgNer9zP78lRcrkDi9Oh43TunDPEiUK2Qm-VOlHnHkbXp8gF-blbonK89VRPOXu7AVMLK3iJPI/s1600/19.NCBITransformar2.png" data-original-width="1005" data-original-height="305" /></a>
<p>
Borrar comentarios inferiores
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXJ2LIXwPEHjS1q5RugabJELN7deoVg2om5biNIiRBSuoyphs7O2w8IkvNvF82B3on3cNTGGasUtO98pXZLEnXK9voLyqcFEA78dyHVi4Sxu0dL6cPUDc_a4rNiYuUWYLy41iwfAa7F38/s1600/20.NCBITransformar3.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXJ2LIXwPEHjS1q5RugabJELN7deoVg2om5biNIiRBSuoyphs7O2w8IkvNvF82B3on3cNTGGasUtO98pXZLEnXK9voLyqcFEA78dyHVi4Sxu0dL6cPUDc_a4rNiYuUWYLy41iwfAa7F38/s1600/20.NCBITransformar3.png" data-original-width="902" data-original-height="301" /></a>
<p>
Debemos quitar las filas con missings, es decir con valores nulos (null), así como los tabulados o saltos de línea en la última fila.
</p>
<p>
<strong>Podemos ver las diferentes opciones que hemos visto en apartados anteriores</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK6fetpzqvzQQ5f_Iwt8soFvDu7ZZBhMkds7ETU8UQAw38Mx0MnLMjoI6yAEMi5IOZlpA-o0C7biKHwS7JeR0_hg1DveL70gzWqJg_58CTn9dpuZHOSZ_sFL5UjqsAU7EmHghW7SE5Bis/s1600/21.DatasetNCBI.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK6fetpzqvzQQ5f_Iwt8soFvDu7ZZBhMkds7ETU8UQAw38Mx0MnLMjoI6yAEMi5IOZlpA-o0C7biKHwS7JeR0_hg1DveL70gzWqJg_58CTn9dpuZHOSZ_sFL5UjqsAU7EmHghW7SE5Bis/s1600/21.DatasetNCBI.png" data-original-width="1185" data-original-height="563" /></a>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6KltAGmDIR7aXEVrba10GqcQF9gWAbCe2C9BIl8njFwGXdrFW1YSub8slicphbVm0pqD0boK2Eh-ocZYh-FTeH2F2TsPzcPchLVY89vccKDqjQVcT9EJS-22_790PpzLVO0rt48KqfrI/s1600/22.DatasetNCBIWizard.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6KltAGmDIR7aXEVrba10GqcQF9gWAbCe2C9BIl8njFwGXdrFW1YSub8slicphbVm0pqD0boK2Eh-ocZYh-FTeH2F2TsPzcPchLVY89vccKDqjQVcT9EJS-22_790PpzLVO0rt48KqfrI/s1600/22.DatasetNCBIWizard.png" data-original-width="1254" data-original-height="658" /></a>
<p>
<strong>En este caso hemos lanzado el Wizard para ver los datos de PCA según los clusters, viendo por colores cada uno de ellos.</strong>
</p>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY5YBoAN6r4OVImJjbHD7bKmNNsbi6Vy4t1zceDhnq08yH91fOyrr9RFsRXcYQ23FzCNT0jzxsBvHPZ-pYhQTPyIpGkGhWnF_O3ZA5NSTv-Uqq73btalIewBQdz_aeTnofjHr7mQyJfd0/s1600/23.DatasetNCBIPCAWizard.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY5YBoAN6r4OVImJjbHD7bKmNNsbi6Vy4t1zceDhnq08yH91fOyrr9RFsRXcYQ23FzCNT0jzxsBvHPZ-pYhQTPyIpGkGhWnF_O3ZA5NSTv-Uqq73btalIewBQdz_aeTnofjHr7mQyJfd0/s1600/23.DatasetNCBIPCAWizard.png" data-original-width="1114" data-original-height="645" /></a>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-21505025571463233902018-02-26T00:15:00.001-08:002018-03-08T22:04:58.485-08:00Importar entradas de un blog de blogger a otro<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: justify;">
Hoy os voy a enseñar cómo importar entradas de un blog de blogger a otro de forma muy sencilla y en pocos pasos explicados con imágenes. Esto te puede servir si:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<ul>
<li>Quieres unificar varios blogs en uno sólo</li>
<li>Has creado un nuevo blog y quieres importar entradas de otro blog</li>
<li>Quieres ahorrar tiempo y no tener que copiar entrada por entrada</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdDUGsfIqp2jyVZJ2M19Y1DG7EkxvgqKG7B3-dlf-GkCcw6nc0aNjOpjOsbMdoKEuBI084AbOGQyh6bqZpifd7K24TFt6b8IbCskztR2clXARRPa5tt5Jbk4X5zaipgo3nXw8px8PG8mA/s1600/Blogger-icon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="256" data-original-width="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdDUGsfIqp2jyVZJ2M19Y1DG7EkxvgqKG7B3-dlf-GkCcw6nc0aNjOpjOsbMdoKEuBI084AbOGQyh6bqZpifd7K24TFt6b8IbCskztR2clXARRPa5tt5Jbk4X5zaipgo3nXw8px8PG8mA/s1600/Blogger-icon.png" /></a></div>
<h2 style="clear: both; text-align: justify;">
Importar entradas de un blog de blogger a otro</h2>
<h3 style="clear: both; text-align: justify;">
Paso 1: Exportar Entradas del blog</h3>
<div>
<div style="text-align: justify;">
Lo primero que tenemos que hacer si queremos <b>importar entradas de un blog de blogger a otro</b>, es ir a nuestro blog (que vamos a llamar) "antiguo" y hacer una copia de seguridad. Para ello nos iremos a <b>Configuración > Otros > Hacer copia de seguridad del contenido</b> y haremos clic en <b>"Guardar en tu ordenador"</b>. Al hacer esto se nos descargará un archivo parecido a este <b>blog-02-19-2018.xml </b>pero obviamente con la fecha del día en el que descargues tu copia de seguridad.</div>
</div>
<div>
<div style="text-align: justify;">
<b><br /></b></div>
</div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMUN8rUKqHXoXYnv5vlftWclS7GFt8s2AAZl8UqpP1Wqc55RuIbfHNbuQFkVmwkZanw1sf6TKHfkyV8LWpza352DawKKyxXr8ooyHtIK29sWSNIn3dwHZsOQnLgnPTeVNi11xyARpYjPY/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="518" data-original-width="946" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMUN8rUKqHXoXYnv5vlftWclS7GFt8s2AAZl8UqpP1Wqc55RuIbfHNbuQFkVmwkZanw1sf6TKHfkyV8LWpza352DawKKyxXr8ooyHtIK29sWSNIn3dwHZsOQnLgnPTeVNi11xyARpYjPY/s1600/1.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgALdJfF9wopF8oRbXjgLhxMJ1ztH5B-LrSempJ5b4xVlLOpOr3gztN9Zn3DF6CzRW8tD-yxror97YbhyphenhyphensAMsskVeYnf7j3aJbYSFsHpnccJeb5fg2edR2MO7TYjdb-aW8a7kEx4L8GluM/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="239" data-original-width="520" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgALdJfF9wopF8oRbXjgLhxMJ1ztH5B-LrSempJ5b4xVlLOpOr3gztN9Zn3DF6CzRW8tD-yxror97YbhyphenhyphensAMsskVeYnf7j3aJbYSFsHpnccJeb5fg2edR2MO7TYjdb-aW8a7kEx4L8GluM/s1600/2.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<h3 style="text-align: justify;">
Paso 2: Importar entradas al blog</h3>
<div style="text-align: justify;">
A continuación es tan sencillo como ir al nuevo blog donde queremos importar las entradas y nuevamente nos iremos a <b>Configuración > Otros </b>y en este caso nos iremos a <b>"Importar contenido"</b>. </div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivQgiJENHSvFXcMPQjwVMp8PNdvRNgzNzIN4UtC_AUVEBelY6vYI3D083Pg2epHx7eIssJ4uxpApr6ePqO359t3aZ5cYcA28o2VsqHjHl_9q74l_JJfVwBNBFM5xsS0qUl2hc0k2r8WEA/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="524" data-original-width="918" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivQgiJENHSvFXcMPQjwVMp8PNdvRNgzNzIN4UtC_AUVEBelY6vYI3D083Pg2epHx7eIssJ4uxpApr6ePqO359t3aZ5cYcA28o2VsqHjHl_9q74l_JJfVwBNBFM5xsS0qUl2hc0k2r8WEA/s1600/3.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En este caso tendremos que pasar un <b>Captcha </b>para demostrar que no somos un robot y marcar el check de <b>"Publicar automáticamente todas las entradas y páginas importadas"</b> en caso de que así lo queramos. Tras esto haremos clic en <b>"Importar del ordenador" </b>e importaremos el archivo de tipo <b>blog-02-19-2018.xml </b>que habíamos descargado en el Paso 1.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjslhxYDFenO0i_Lg8QY4W6WK9L31dr2xEFLuzaRCxXPFPZMo3vt4JIFHt6e_iFU4pDePpzP871i1t-UFhNYNBivp6E_P7mGJCy2dPsS-I9eDv5taxyMurXb-GpZ34uZwQF9fB-SyL7gnc/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="351" data-original-width="611" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjslhxYDFenO0i_Lg8QY4W6WK9L31dr2xEFLuzaRCxXPFPZMo3vt4JIFHt6e_iFU4pDePpzP871i1t-UFhNYNBivp6E_P7mGJCy2dPsS-I9eDv5taxyMurXb-GpZ34uZwQF9fB-SyL7gnc/s1600/4.png" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Por último, con un poco de paciencia y dependiendo del número de entradas esperaremos un tiempo a que se importe nuestro contenido y todo esté listo.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJnI9O-rE5orPN0EQTgqNQabUj28fnmW-2cjs8_Hv0udpyNHVebtwZl7UAroJKuGf8QSgBEvbXyDvnnK2A9ieWGpdDFHx8g8FDrHX-qbjWc9XQkBKBPpQdQaKT91OjeMsv6GG0DoPsKIM/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="251" data-original-width="608" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJnI9O-rE5orPN0EQTgqNQabUj28fnmW-2cjs8_Hv0udpyNHVebtwZl7UAroJKuGf8QSgBEvbXyDvnnK2A9ieWGpdDFHx8g8FDrHX-qbjWc9XQkBKBPpQdQaKT91OjeMsv6GG0DoPsKIM/s1600/5.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Espero que te haya servido el tutorial y aunque ha sido muy sencillo, si has tenido algún problema puedes dejar tu comentario.</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com8Sevilla, España37.3890924 -5.98445889999993637.3890924 -5.984458899999936 37.3890924 -5.984458899999936tag:blogger.com,1999:blog-2473427578716688052.post-87333419028861635102018-02-20T07:36:00.000-08:002018-02-25T23:49:20.987-08:00Búsqueda Tabú - Ejercicios de Algorítmica<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Vamos a dar una solución a un problema mediante un algorítmo de búsqueda Tabú en este caso sin memoria de largo alcance.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheQAmqvSYOolKXeS2yuEZfqxzVA6OnU9q7qP1eiErmkoUmXOTCh2gBPkjo1PtlEq9IKS911vfflMnQIwkBLghqLaZys1BphIFLdfCteuV-1aPpIF66-AiFNuq5D3elDeUw49psBMTSvRE/s1600/AlgoritmicaIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="512" height="299" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheQAmqvSYOolKXeS2yuEZfqxzVA6OnU9q7qP1eiErmkoUmXOTCh2gBPkjo1PtlEq9IKS911vfflMnQIwkBLghqLaZys1BphIFLdfCteuV-1aPpIF66-AiFNuq5D3elDeUw49psBMTSvRE/s320/AlgoritmicaIcon.png" width="320" /></a></div>
<br />
<div style="text-align: justify;">
Se desea fabricar un material aislante compuesto por siete materiales distintos. Se desea encontrar cuál es el orden en que deben mezclarse dichos materiales para asegurar que sea lo más aislante posible. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para evaluar la calidad aislante de la solución, suponga que ésta se mide por la suma de los tres primeros
componentes, esto es, sobre la figura de arriba sería 4+2+7 = 13. Si realizamos la permutación 4 5, entonces,
la nueva solución candidata sería [5, 2, 7, 1, 4, 6, 3], siendo su coste 5+2+7 = 14 (>13) y por tanto se aceptaría.
De esta condición se deduce que el máximo se alcanzará cuando tengamos en las tres posiciones superiores
{5, 6, 7}, en cualquier orden posible o, en otras palabras, que el máximo global sería 5+6+7 = 18.</div>
<div style="text-align: justify;">
<br />
<blockquote>
public class Ej1 {<br />
public static void main(String[] args) {<br />
int[] sol = {4, 2, 7, 1, 5, 6, 3};<br />
ArrayList listaTabu = new ArrayList();<br />
int maxListaTabu = 4;<br />
//Datos para testear<br />
int contIteraciones = 0;<br />
while (costeFuncion(sol) < 18) {<br />
//Mejor candidato actual<br />
int[] mejorSol = new int[sol.length];<br />
System.arraycopy(sol, 0, mejorSol, 0, sol.length);<br />
//Nueva solució actual<br />
int[] nuevaSol = new int[sol.length];<br />
System.arraycopy(sol, 0, nuevaSol, 0, sol.length);<br />
//Genero dos posiciones aleatorias para intercambiar,<br />
//posicionUno entre 0 y 2, y posicionDos entre 3 y el maximo del array<br />
int posicionUno = (int) Math.floor(Math.random() * 3);<br />
int posicionDos = (int) Math.floor(Math.random() * 3 + (sol.length - 3));<br />
// Intercambio los valores de la nueva solucion<br />
// con el método de la burbuja creando un auxiliar<br />
int auxiliar = nuevaSol[posicionUno];<br />
nuevaSol[posicionUno] = nuevaSol[posicionDos];<br />
nuevaSol[posicionDos] = auxiliar;<br />
// Criterio de aspiracion si es mejor y no esta en la lista tabu lo acepto<br />
if (!listaTabu.contains(nuevaSol) && costeFuncion(sol) < costeFuncion(nuevaSol)) {<br />
mejorSol = nuevaSol;<br />
// Agrego la mejor solucion a la lista tabu<br />
listaTabu.add(mejorSol);<br />
// Si está en la lista tabu y es mejor <br />
} else if (listaTabu.contains(nuevaSol) && costeFuncion(sol) < costeFuncion(nuevaSol)) {<br />
int pos = listaTabu.indexOf(nuevaSol);<br />
int[] sacado = (int[]) listaTabu.get(pos);<br />
listaTabu.remove(pos);<br />
listaTabu.add(sacado);<br />
mejorSol = sacado;<br />
}<br />
//Si la mejor solucion es mayor que la sol actual, me quedo con la mejorSol<br />
if (costeFuncion(sol) < costeFuncion(nuevaSol)) {<br />
sol = mejorSol;<br />
}<br />
//Tenencia tabu, la lista solo contendra el maxTabuList<br />
if (listaTabu.size() > maxListaTabu) {<br />
listaTabu.remove(0); //Elimino de la lista tabú<br />
}<br />
contIteraciones++;<br />
}<br />
pintarResultado(sol);<br />
System.out.println("Núm iteraciones: " + contIteraciones);<br />
System.out.println("Lista Tabu");<br />
for (int i = 0; i < listaTabu.size(); i++) {<br />
int[] stabu = (int[]) listaTabu.get(i);<br />
for (int j = 0; j < sol.length; j++) {<br />
System.out.print(stabu[j]);<br />
}<br />
System.out.println("");<br />
}<br />
}<br />
public static void pintarResultado(int[] sol) {<br />
System.out.print("Solución: ");<br />
for (int i = 0; i < sol.length; i++) {<br />
System.out.print(sol[i]);<br />
}<br />
System.out.println(", Calidad: " + costeFuncion(sol));<br />
}<br />
public static int costeFuncion(int[] mejorSol) {<br />
return mejorSol[0] + mejorSol[1] + mejorSol[2];<br />
}<br />
public static double probabilidadAceptacion(int costeActual, int costeVecino, double temperatura) {<br />
return Math.exp((costeVecino - costeActual) / temperatura);<br />
}<br />
}</blockquote>
</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0Sevilla, España37.3890924 -5.98445889999993637.1871984 -6.3071823999999364 37.590986400000006 -5.6617353999999356tag:blogger.com,1999:blog-2473427578716688052.post-66570264024171456022018-02-19T20:17:00.001-08:002018-02-25T23:50:50.076-08:00Enfriamiento Simulado - Problema de la Mochila - Ejercicios de Algorítmica<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Vamos a resolver el problema de la mochila utilizando Enfriamiento Simulado. Para ello, supongamos que
la capacidad de la mochila es q = 180 y que puede insertar hasta 100 elementos, con pesos aleatorios
comprendidos entre [1, 100], esto es, considere el siguiente vector P = {p1, p2, …, p100}, con pi = [1,100]. Se
permite que dos elementos pesen lo mismo.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheQAmqvSYOolKXeS2yuEZfqxzVA6OnU9q7qP1eiErmkoUmXOTCh2gBPkjo1PtlEq9IKS911vfflMnQIwkBLghqLaZys1BphIFLdfCteuV-1aPpIF66-AiFNuq5D3elDeUw49psBMTSvRE/s1600/AlgoritmicaIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="512" height="299" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheQAmqvSYOolKXeS2yuEZfqxzVA6OnU9q7qP1eiErmkoUmXOTCh2gBPkjo1PtlEq9IKS911vfflMnQIwkBLghqLaZys1BphIFLdfCteuV-1aPpIF66-AiFNuq5D3elDeUw49psBMTSvRE/s320/AlgoritmicaIcon.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<h2>
Solución al Problema de la Mochila con Enfriamiento Simulado</h2>
<div>
Una posible solución es la siguiente:</div>
<div>
<br /></div>
<div>
<blockquote>
public class Ej2 {<br />
public static void main(String[] args) {<br />
double temp = 1000.0;<br />
double tempFinal = 10;<br />
int objetosMax = 100;<br />
int pesoMax = 180;<br />
<br />
int[] sol = generarSolInicial(objetosMax);<br />
int[] pesos = generarPesos(objetosMax, pesoMax);<br />
<br />
while (temp > tempFinal) {<br />
int[] mejorVecino = new int[sol.length];<br />
<br />
// Copiamos el Mejor vecino actual que es nuestra solución inicial<br />
System.arraycopy(sol, 0, mejorVecino, 0, sol.length);<br />
<br />
//Calculo el coste (peso) de la funcion con el vecino actual<br />
int costeActual = costeFuncion(mejorVecino, pesos);<br />
<br />
//Copiamos el vecino actual para ir modificando<br />
int[] copiaVecino = new int[sol.length];<br />
System.arraycopy(sol, 0, copiaVecino, 0, sol.length);<br />
boolean encontrado = false;<br />
for (int i = 0; i < sol.length && encontrado == false; i++) {<br />
// Hallamos los vecinos con una función que altera los bits<br />
// Por ejemplo los vecinos de {0,0,1,0,1} serían:<br />
// {1,0,1,0,1}, {0,1,1,0,1}, {0,0,0,0,1}, {0,0,1,1,1} y {0,0,1,0,0}<br />
<br />
if (copiaVecino[i] == 1) {<br />
copiaVecino[i] = 0;<br />
} else {<br />
copiaVecino[i] = 1;<br />
}<br />
// Comparamos el coste del vecino actual con el nuevo vecino<br />
// y si es menor o igual que el peso maximo y tiene mayor coste<br />
// o probabilidad de aceptacion es mayor que 1 lo acepto<br />
<br />
if (costeFuncion(copiaVecino, pesos) <= pesoMax &&<br />
((costeActual < costeFuncion(copiaVecino, pesos) ||<br />
probabilidadAceptacion(costeActual, costeFuncion(copiaVecino, pesos), temp) > 1 ))) {<br />
mejorVecino = copiaVecino;<br />
costeActual = costeFuncion(copiaVecino, pesos);<br />
encontrado = true;<br />
<br />
// Si no se cumple la condición, dejamos el array como estaba<br />
} else { <br />
copiaVecino = new int[sol.length];<br />
System.arraycopy(sol, 0, copiaVecino, 0, sol.length);<br />
}<br />
}<br />
<br />
sol = mejorVecino; //Igualamos la solucion al mejor vecino<br />
temp *= 0.9; // Enfriamos la temperatura un 10%<br />
}<br />
System.out.print("Objetos que llevamos en la mochila (1, si) (0, no) : ");<br />
for (int i = 0; i < sol.length; i++) {<br />
System.out.print(sol[i]);<br />
if (i != pesos.length - 1)<br />
System.out.print(",");<br />
}<br />
<br />
System.out.print("\nPesos: ");<br />
<br />
for (int i = 0; i < pesos.length; i++) {<br />
System.out.print(pesos[i]);<br />
if (i != pesos.length - 1)<br />
System.out.print(",");<br />
}<br />
System.out.println("\nLa mochila lleva: " + costeFuncion(sol, pesos) + "kg de peso");<br />
}<br />
// Calculamos el coste (peso) sumando los objetos cogidos<br />
// es decir, los que tienen 1 en el array de binarios<br />
// dicha suma nos dará el peso total de los objetos que llevamos<br />
// en la mochila<br />
<br />
public static int costeFuncion(int[] mejorVecino, int[] pesos) {<br />
<br />
int peso = 0;<br />
for (int i = 0; i < mejorVecino.length; i++) {<br />
if (mejorVecino[i] == 1) {<br />
peso += pesos[i];<br />
}<br />
}<br />
return peso;<br />
}<br />
public static double probabilidadAceptacion(int costeActual, int costeVecino, double temperatura) {<br />
return Math.exp((costeVecino - costeActual) / temperatura);<br />
}<br />
// Creamos un array de ceros de tamaño tam<br />
// Suponiendo que la mochila en un principio está vacía<br />
// 1 en el array significará que el objeto de dicha<br />
// posición ha sido cogido<br />
public static int[] generarSolInicial(int tam) {<br />
int[] solInicial = new int[tam];<br />
for (int i = 0; i < tam; i++) {<br />
solInicial[i]=0;<br />
}<br />
return solInicial;<br />
}<br />
<br />
// Generamos pesos aleatorios de 0 a 100<br />
<br />
public static int[] generarPesos(int size, int pesoMax) {<br />
int[] pesos = new int[size];<br />
<br />
for (int i = 0; i < size; i++) {<br />
pesos[i] = (int) (Math.random() * 100);<br />
}<br />
<br />
return pesos;<br />
}<br />
}</blockquote>
</div>
<h2>
</h2>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0Sevilla, España37.3890924 -5.98445889999993637.1871984 -6.3071823999999364 37.590986400000006 -5.6617353999999356tag:blogger.com,1999:blog-2473427578716688052.post-58793202567084914962018-02-19T19:09:00.003-08:002018-02-25T23:52:07.054-08:00Función en java para generar un array aleatorio de binarios<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="tr_bq">
<div style="text-align: justify;">
En esta ocasión os voy a mostrar una función en java para generar un array de binarios aleatorios donde simplemente tendremos que indicar un tamaño. Esto resulta muy útil en algorítmica para la creación de soluciones iniciales. En este caso nos serviremos de Math.random(), que nos devuelve un valor entre [0 y 1) es decir, desde el 0 (incluido) hasta el 1 pero sin incluirlo. El resultado lo filtraremos por un if que convertirá a 1 o a 0 obteniendo así los valores aleatorios.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="240" data-original-width="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" /></a></div>
tam = tamaño del array aleatorio<br />
<br /></div>
<blockquote>
public static int[] generarSolucionInicial(int tam) {<br />
int[] solInicial = new int[tam];<br />
<br />
for (int i = 0 ; i < tam ; i++){<br />
if (Math.random()<0.5){<br />
solInicial[i]=0;<br />
} else {<br />
solInicial[i]=1;<br />
}<br />
}<br />
return solInicial;<br />
}</blockquote>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-28868341450669937912018-02-19T18:26:00.000-08:002018-02-25T23:52:47.729-08:00Función permutar en java para hallar vecinos en un array de binarios<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="tr_bq">
Os dejo una función en <b>java </b>muy interesante para encontrar vecinos en algorítmica cuando estamos usando números binarios. Por ejemplo los vecinos de {0,0,1,0,1} serían: {1,0,1,0,1}, {0,1,1,0,1}, {0,0,0,0,1}, {0,0,1,1,1} y {0,0,1,0,0}.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<img alt="Función Java Permutar" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nGGLY4apUp3x9ckS89QtKZdZxviBK1MyOlH1CZkyCXmIl02HZ1LPKV0VU4d0yTmu4RUpYLt7k1-8nFyZEFGTFjKUB0HQVCG8hMHpq-la3sAZ7rstsY8V01Q3_DpRRfghpsGmaikR5MU/s1600/javaIcon.png" /></div>
n = posición en el array<br />
vecino = array de binarios del que se quieren hallar los vecinos<br />
<br />
<blockquote>
private static void permutar (int[] vecino, int n) {<br />
if (vecino[n] == 1){<br />
vecino[n] = 0;<br />
} else {<br />
vecino[n] = 1;<br />
}<br />
}</blockquote>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-59554278976155254912018-02-19T17:39:00.001-08:002018-02-25T23:53:25.817-08:00Función para convertir un array de binarios a decimal en java<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="tr_bq" style="text-align: justify;">
A continuación os dejo una función para convertir un array de binarios a decimal en java. </div>
<div class="tr_bq" style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFddCKZzDFixoxPmYZxmWBBSmoSeie1irZdtVDL-I3VWAlbTr6xhfskm6giN5h2LnuyHGCaC3IH5tdv_JAHglW4ZHMP_WCAFwagf4w0peyj93_XY3FusI41rOXT16HgwPwSLCyDTt3ogg/s1600/javaIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="240" data-original-width="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFddCKZzDFixoxPmYZxmWBBSmoSeie1irZdtVDL-I3VWAlbTr6xhfskm6giN5h2LnuyHGCaC3IH5tdv_JAHglW4ZHMP_WCAFwagf4w0peyj93_XY3FusI41rOXT16HgwPwSLCyDTt3ogg/s1600/javaIcon.png" /></a></div>
<div class="tr_bq" style="text-align: center;">
<br /></div>
<blockquote>
public static int binarioADecimal(int[] binario) {<br />
<br />
int v = 0;<br />
int cont = 0;<br />
<br />
for (int i = binario.length - 1; i >= 0; i--) {<br />
if (binario[i] == 1) {<br />
v += (int) Math.pow((double) 2, (double) cont);<br />
}<br />
cont++;<br />
}<br />
return v;<br />
}</blockquote>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-91508764714086328132018-02-19T17:04:00.000-08:002018-02-25T23:54:37.423-08:00Enfriamiento Simulado - Ejercicios de Algorítmica<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
En este artículo vamos a realizar un ejercicio de Algorítmica donde vamos a poner en práctica lo aprendido en el artículo de teoría sobre <b>Enfriamiento Simulado</b>, también llamado "Recocido Simulado", "Temple Simulado", o en inglés Simulated Annealing.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqpIa8qjq5hF6nRd2rUfy_rMCCfQ7b0xlDJmtTyUXhGFnq3ns9vJ_yR-wQ5hTPEoNwbWdZ1th7ZZtmL66vVnirNlI9IryUM7Wo0U5UrAjUm_RuhuD43aS4NWsO6h54cy96N86hUJ1C_w8/s1600/AlgoritmicaIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="512" height="299" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqpIa8qjq5hF6nRd2rUfy_rMCCfQ7b0xlDJmtTyUXhGFnq3ns9vJ_yR-wQ5hTPEoNwbWdZ1th7ZZtmL66vVnirNlI9IryUM7Wo0U5UrAjUm_RuhuD43aS4NWsO6h54cy96N86hUJ1C_w8/s320/AlgoritmicaIcon.png" width="320" /></a></div>
<br /></div>
<h2>
Ejercicio práctico sobre Enfriamiento Simulado</h2>
<div style="text-align: justify;">
Queremos hallar el máximo de<b> f(x)=x3
-60x2+900x+100</b> entre x=0 y x=31. Para resolver
el problema usando SA, se propone seguir la siguiente estrategia. En primer lugar, discretizamos el rango de
valores de x con vectores binarios de 5 componentes entre 00000 y 11111. Estos 32 vectores constituyen S las
soluciones factibles del problema.
Le damos un valor inicial a T intuitivamente, por ejemplo, T0 =100 o 500 y en cada iteración del algoritmo lo
reduciremos en 10%, es decir utilizando la estrategia de descenso geométrico: Tk = 0.9 Tk-1.
Cada iteración consiste de lo siguiente: </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
1. El número de vecinos queda fijado a 5, siendo éstos variaciones de un bit de la solución. Por ejemplo, si
partimos de 00011, los 5 posibles vecinos resultantes serían: 10011, 01011, 00111, 00001, 00010. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
2. Para aplicar el criterio de aceptación, escogemos un vecino, buscamos su coste asociado en la tabla auxiliar
que se proporciona y calculamos la diferencia con la solución actual. Si está más cerca del óptimo se
acepta, si no, se aplica Pa (δ, T) = e-δ/T
. Siendo T la temperatura actual y δ la diferencia de costes entre la
solución candidata y la actual. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
3. Concluya la búsqueda cuando el proceso se enfríe o cuando no se acepte ninguna solución de su vecindad.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
4. Imagen de guía:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGGHa0BSKJV9bELPdCFsT8TvIVPSokW4Qf0hFXOfq7geS_6OcMuNiew43Hzeg9wRZsm6a5ickebB-O1QLqw68fuC9cLtCfjw1Px2rjwK1GXTjzknI4GvpYwkzequgf0jE80gEQhuh0FXE/s1600/enfriamientoSimulado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="322" data-original-width="464" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGGHa0BSKJV9bELPdCFsT8TvIVPSokW4Qf0hFXOfq7geS_6OcMuNiew43Hzeg9wRZsm6a5ickebB-O1QLqw68fuC9cLtCfjw1Px2rjwK1GXTjzknI4GvpYwkzequgf0jE80gEQhuh0FXE/s400/enfriamientoSimulado.png" width="400" /></a></div>
<h2>
Ejercicio resuelto de Enfriamiento Simulado</h2>
<div>
<div style="text-align: justify;">
Posible solución al ejercicio usando java. En el ejemplo podemos apreciar cómo si disminuimos el enfriamiento de la <b>temperatura </b>(temp *= 0.90) a (temp *= 0.99) obtendremos por lo general un resultado más exacto porque realizaremos más iteraciones, mientras que si enfriamos más rápidamente, (temp *= 0.90) a (temp *= 0.80) obtendremos resultados peores.</div>
<br /></div>
<blockquote class="tr_bq">
<div style="text-align: left;">
public class Ej1 {</div>
public static void main(String[] args) {<br />
int temp = 1000;<br />
int tempFinal = 10;<br />
<br />
// Solución inicial aleatoria<br />
int sol[] = {0, 0, 0, 0, 0};<br />
while (temp > tempFinal) {<br />
<br />
boolean encontrado = false;<br />
<br />
// Copiamos la solución de sol en mejorVecino<br />
int[] mejorVecino = new int[sol.length];<br />
System.arraycopy(sol, 0, mejorVecino, 0, sol.length);<br />
// Calculo el coste de la funcion con el vecino actual<br />
int costeActual = costeFuncion(binarioADecimal(mejorVecino));<br />
<br />
// Copiamos el vecino actual para ir modificándolo<br />
int[] copiaVecino = new int[sol.length];<br />
System.arraycopy(sol, 0, copiaVecino, 0, sol.length);<br />
<br />
for (int i = 0; i < sol.length && !encontrado ; i++ ){<br />
<br />
// Hallamos los vecinos con una función que altera los bits<br />
// Por ejemplo los vecinos de {0,0,1,0,1} serían:<br />
// {1,0,1,0,1}, {0,1,1,0,1}, {0,0,0,0,1}, {0,0,1,1,1} y {0,0,1,0,0}<br />
<br />
if (copiaVecino[i] == 1){<br />
copiaVecino[i] = 0;<br />
} else {<br />
copiaVecino[i] = 1;<br />
}<br />
<br />
// Comparamos el coste del vecino actual con el nuevo vecino<br />
// y lo aceptamos si el coste es mayor o la probabilidad<br />
// de aceptación es mayor, lo aceptamos<br />
<br />
if (costeActual < costeFuncion(binarioADecimal(copiaVecino)) ||<br />
probabilidadAceptacion(costeActual,<br />
costeFuncion(binarioADecimal(copiaVecino)), temp) > Math.random()){<br />
<br />
mejorVecino = copiaVecino;<br />
costeActual = costeFuncion(binarioADecimal(copiaVecino));<br />
encontrado = true;<br />
}<br />
<br />
copiaVecino = new int[sol.length];<br />
System.arraycopy(sol, 0, copiaVecino, 0, sol.length);<br />
<br />
}<br />
<br />
sol = mejorVecino;<br />
<br />
// Enfriamos la temperatura en cada iteración <br />
temp *= 0.90;<br />
<br />
}<br />
<br />
// Mostramos los resultados por pantalla<br />
<br />
System.out.print("Número binario: [");<br />
for (int i = 0 ; i < sol.length ; i++){<br />
System.out.print(sol[i]);<br />
}<br />
System.out.print("]");<br />
<br />
int dec = binarioADecimal(sol);<br />
System.out.println(", Valor en decimal: " + dec + " ,Coste: " + costeFuncion(dec) );<br />
<br />
}<br />
public static int costeFuncion(int x) {<br />
<br />
// Realizamos el coste según la operación propuesta<br />
int v = 0;<br />
v = (int) Math.pow(x, 3) - 60 * (int) Math.pow(x, 2) + (900 * x) + 100;<br />
return v;<br />
}<br />
public static int binarioADecimal(int[] binario) {<br />
// Realizamos una función para convertir el array de binarios en un valor decimal<br />
<br />
int v = 0;<br />
int cont = 0;<br />
<br />
for (int i = binario.length - 1; i >= 0; i--) {<br />
if (binario[i] == 1) {<br />
v += (int) Math.pow((double) 2, (double) cont);<br />
}<br />
cont++;<br />
}<br />
return v;<br />
}<br />
<br />
public static double probabilidadAceptacion (int costeActual, int costeVecino, double temperatura){<br />
<br />
// Si la nueva solucion es peor se calcula una probabilidad de aceptación<br />
<br />
return Math.exp((costeVecino - costeActual) / temperatura);<br />
}<br />
}</blockquote>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-75043308642832703702016-11-21T09:34:00.001-08:002016-11-21T09:34:24.984-08:00Cryptool, la herramienta perfecta para encriptar y desencriptar<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
La completísima herramienta <b>Cryptool </b>permite estudiar algoritmos <b>criptográficos </b>y realizar <b>criptoanálisis </b>de mensajes cifrados. Además incluye animaciones de algunos algoritmos y juegos educativos relacionados con la <b>criptografía</b>. Lo que vamos a ver hoy se basa en el procesamiento mediante algoritmos (seleccionados con las opciones del menú) de ventanas de texto. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Estas ventanas se crean con <b>“File->New”</b> y, en caso de que contengan contenido ya encriptado (no es texto legible, sino bytes), pueden verse en hexadecimal (“View->Show as HexDump”). Para exportar o importar la información en un formato estándar se tiene también una opción de codificación/decodificación en Base64 [b64] (“Indiv. Procedures -> Tools -> Codes -> Base64...”)</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Puedes descargar Cryptool en el <a href="https://www.cryptool.org/en/ct1-downloads" target="_blank">siguiente enlace</a>.</div>
<h2 style="text-align: justify;">
Ejercicios de Encriptación con Cryptool</h2>
<h3 style="text-align: justify;">
Ejercicio 1:</h3>
<div style="text-align: justify;">
Descarga e instala la aplicación <b>Cryptool</b>. Navega por los menús de la aplicación y localiza los siguientes algoritmos criptográficos: Vigenère, Rijndael, MD5, SHA-256, RIPEMD-160. Localiza también la conversión a/de base64.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4IuvXaNyVfopuvv28Y-owObU8AYMWnxXovl5rbkzSeNsDWDQqSZYy_K1-k-H7RhQo6q5HIRh7KQN7Ig3Fgrdijswcb1GfdnHGJxaQFDZhyphenhyphencCrbfCYMYqhHXzyXProTRQ6N9DLZTWVfuo/s1600/Cryptool1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4IuvXaNyVfopuvv28Y-owObU8AYMWnxXovl5rbkzSeNsDWDQqSZYy_K1-k-H7RhQo6q5HIRh7KQN7Ig3Fgrdijswcb1GfdnHGJxaQFDZhyphenhyphencCrbfCYMYqhHXzyXProTRQ6N9DLZTWVfuo/s1600/Cryptool1.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtMNOKTde1zTd6aLkXIHFKXkAhHJpOE-2RxuykkOAijTHQPWSR29YtQ2YIkDqG_A6Bu5nrQkdw8CnMuWmVdH4pk67HWGVeCh9_UABDrp20bD7BMGw8xnXKqBlvG79o6geBVPxxlQlHM3I/s1600/Cryptool2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtMNOKTde1zTd6aLkXIHFKXkAhHJpOE-2RxuykkOAijTHQPWSR29YtQ2YIkDqG_A6Bu5nrQkdw8CnMuWmVdH4pk67HWGVeCh9_UABDrp20bD7BMGw8xnXKqBlvG79o6geBVPxxlQlHM3I/s1600/Cryptool2.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBq8_dwi9aH8ytz_nHOd_4HGg3uV22_0iHRRDaxso9ej22kMxDALi9f7PK5RNaao4N76RiRSaqBv3IzfXuOVrUs9sFN9YdOZ2Lz3m2o_3APKXjRHtVdOpxKc0sQYthvpb15_2VQ8BS-CM/s1600/Cryptool3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBq8_dwi9aH8ytz_nHOd_4HGg3uV22_0iHRRDaxso9ej22kMxDALi9f7PK5RNaao4N76RiRSaqBv3IzfXuOVrUs9sFN9YdOZ2Lz3m2o_3APKXjRHtVdOpxKc0sQYthvpb15_2VQ8BS-CM/s1600/Cryptool3.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<h3 style="text-align: justify;">
Ejercicio 2:</h3>
<div style="text-align: justify;">
Encripta con el algoritmo de Vigenère el texto “Vigenere es un metodo clasico”1 usando la clave “CLASICO”. Y verifica que el hash RIPEMD-160 del resultado es “81 A5 7A 0E F2 89 8E 32 AB A0 36 4A 7A 51 49 73 F1 37 9A 10”. </div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAbynBFaiN0YCq9APrK5ynsNsG0KNLQnrwTzHXAXuwTyNX73QFYs1dji4R583_ZoSdGeh3ggeFdwI9kMWZXYpIckddxsQ7_YWTv3HpfkkdSJCgUtq7ipbwuj1OAUt1Uc1EZQcq4pHcuyM/s1600/Cryptool4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAbynBFaiN0YCq9APrK5ynsNsG0KNLQnrwTzHXAXuwTyNX73QFYs1dji4R583_ZoSdGeh3ggeFdwI9kMWZXYpIckddxsQ7_YWTv3HpfkkdSJCgUtq7ipbwuj1OAUt1Uc1EZQcq4pHcuyM/s1600/Cryptool4.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6OgXGOPkPDBaBl_3TDLp4qy9IYicoA1WZIx7BoGUSB2Wv_JiF3TuW1qlYCMXdYpHwrWTIk8csSIKfELzLbD8K-dZFLSlJ9U7lpkQXpcZ4dHeDXX95SGxFOU04zrl7nBBa7h5kqG7HilY/s1600/Cryptool5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6OgXGOPkPDBaBl_3TDLp4qy9IYicoA1WZIx7BoGUSB2Wv_JiF3TuW1qlYCMXdYpHwrWTIk8csSIKfELzLbD8K-dZFLSlJ9U7lpkQXpcZ4dHeDXX95SGxFOU04zrl7nBBa7h5kqG7HilY/s1600/Cryptool5.png" /></a></div>
<h3 style="text-align: justify;">
Ejercicio 3:</h3>
<div style="text-align: justify;">
Desencripta el texto “Nrempbdiqxw. Yh cwalitniagx.” mediante el algoritmo de Vigenère usando la clave “INTENTA”. Si lo haces bien al desencriptar podrás ver la frase "Felicidades. Lo conseguiste."</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdD5FG3tLSmgM3AFTI-xA3joAzk7dTUXoICsnIeRDQor7IAld7glt0D6E3ySvdIujgohmvR90mXDNanVG0VS41B6K6QqsEy21XC6fH0V8FpGLBU44D79Puqx0krMDAqhH8twJUlOZBr-o/s1600/Cryptool6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdD5FG3tLSmgM3AFTI-xA3joAzk7dTUXoICsnIeRDQor7IAld7glt0D6E3ySvdIujgohmvR90mXDNanVG0VS41B6K6QqsEy21XC6fH0V8FpGLBU44D79Puqx0krMDAqhH8twJUlOZBr-o/s1600/Cryptool6.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<h3 style="text-align: justify;">
Ejercicio 4:</h3>
<div style="text-align: justify;">
Encripta con Cryptool el texto “Interoperabilidad” usando el algoritmo Triple-DES en modo Electronic Codebook (ECB) con la clave hexadecimal “30493080103012853712DF812AFE81AA”</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4wVUZ5Mkl95K58gRcCTLmKzHPTqW4xv6GJQLd0aS3VQFiIjD6hn_GFRK_vPBRcRxTqj8FE8lJbncLm_K8SlJ3BZpCKpHS60EHEo8Va4BlOhVnctjsiYqiQ3JJHXaxtyN2gSfTJzilutE/s1600/Cryptool7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4wVUZ5Mkl95K58gRcCTLmKzHPTqW4xv6GJQLd0aS3VQFiIjD6hn_GFRK_vPBRcRxTqj8FE8lJbncLm_K8SlJ3BZpCKpHS60EHEo8Va4BlOhVnctjsiYqiQ3JJHXaxtyN2gSfTJzilutE/s1600/Cryptool7.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Verifica con Cryptool que el hash RIPEMD-160 del resultado es “DD00D19DD412EC76A165951D0152530D6776828A”. </div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGBjxEr54d7TS0t-lBQh2VomOlNGIUvy4-DMU3qyZDKzl0kAhzRSqkPyh2R8k0C-8N_y4SA0ke926ZMyOgRJJVDxgUBWsNX5Yj6Y9ufIk76_9cD2dP2yWJJrDdHLdhP2uX4sO7qKpSlf0/s1600/Cryptool8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGBjxEr54d7TS0t-lBQh2VomOlNGIUvy4-DMU3qyZDKzl0kAhzRSqkPyh2R8k0C-8N_y4SA0ke926ZMyOgRJJVDxgUBWsNX5Yj6Y9ufIk76_9cD2dP2yWJJrDdHLdhP2uX4sO7qKpSlf0/s1600/Cryptool8.png" /></a></div>
<h3 style="text-align: justify;">
Ejercicio 5:</h3>
<div style="text-align: justify;">
Desencripta con Cryptool, usando el algoritmo Triple-DES ECB y la clave “0102AFCDBE17BEA171BE91F9A8EFA183” el texto “Yz4UUTujMNU7zZ9SyrpzqTJQellJZoXFzc1H2sry7gj6SP7ZnBnh8Q==”. El texto está codificado en base64 (hay que decodificarlo previamente). </div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbweIiZnshjcw_ImLChUe9GSPe8BCt1Os6V8j74czwsFSIgDcTzfV0ecgOsOQ_qBYNguLjVYLjU2NyWIT_gGDKsknFtJ__5xRrQHUNk6ZT6pXWmD3Dq0Lkdg5yNHjP8k0iPTml5Yq_v-4/s1600/Cryptool9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbweIiZnshjcw_ImLChUe9GSPe8BCt1Os6V8j74czwsFSIgDcTzfV0ecgOsOQ_qBYNguLjVYLjU2NyWIT_gGDKsknFtJ__5xRrQHUNk6ZT6pXWmD3Dq0Lkdg5yNHjP8k0iPTml5Yq_v-4/s1600/Cryptool9.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-7364331558990368942016-10-18T06:29:00.004-07:002016-10-18T06:30:42.530-07:00Cómo deshabilitar la Pantalla táctil de tu Portátil o PC<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Hoy te voy a enseñar de forma muy sencilla <b>cómo deshabilitar la pantalla de tu PC o Portátil</b> puesto que en muchos casos, tras el uso de los mismos <b>la pantalla comienza a dar problemas</b> y a "tocarse sola" y esto puede convertirse en un incordio ya que el ratón se nos moverá sólo puesto que el táctil de la pantalla actúa como tal.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Pero no te preocupes, puesto que deshabilitar o <b>desactivar la pantalla de tu Portátil o PC</b> te va a llevar muy poco tiempo como vas a poder ver a continuación:</div>
<div style="text-align: justify;">
<br /></div>
<h3 style="text-align: justify;">
PASO 1: Ir a Administrador de Dispositivos</h3>
<div style="text-align: justify;">
Para ello iremos a <b>Inicio </b>y escribiremos <b>"Administrador de Dispositivos"</b>. También llegaremos al mismo punto haciendo clic derecho sobre <b>"Este equipo" > Administrar > Administrador de Dispositivos</b>.<br />
<br /></div>
<h3 style="text-align: justify;">
PASO 2: Deshabilitar o desactivar la pantalla táctil</h3>
<div>
<ol style="text-align: left;">
<li style="text-align: justify;">Buscar <b>"Pantalla táctil"</b> en <b>"Dispositivos de interfaz de usuario"</b> y hacer clic derecho</li>
<li style="text-align: justify;">A continuación, haremos clic en <b>"Deshabilitar"</b>, tras ello nos pedirá que confirmemos y LISTO.</li>
</ol>
<div style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihemRoIE69HqauAYxkejLOVRXI6IWiiu-6gDbJeGlIgfWXczy4E8CKyvIzdyBNYDSnEzVFnAUbSyWWOmgVaFz6awD8-aw2647NVa7-Tj5gxgE749luz4ViKVle2CvCjwuguFGJA9lSoHY/s1600/tutorialDeshabilitarPantalla.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihemRoIE69HqauAYxkejLOVRXI6IWiiu-6gDbJeGlIgfWXczy4E8CKyvIzdyBNYDSnEzVFnAUbSyWWOmgVaFz6awD8-aw2647NVa7-Tj5gxgE749luz4ViKVle2CvCjwuguFGJA9lSoHY/s1600/tutorialDeshabilitarPantalla.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
¿Sencillo verdad? Ya no te dará más "por culo" la pantalla táctil de tu Portátil o PC nunca más... Y como siempre si tienes alguna duda, te invito a que dejes un comentario para poder ayudarte.</div>
</div>
<div style="text-align: justify;">
<br /></div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-11861114828015298412015-03-03T10:17:00.001-08:002015-03-03T10:20:12.334-08:00Servidor Web Apache en Debian | Joomla & Moodle - 4/4<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
<div style="text-align: justify;">
Tomando como referencia el <a href="http://gallardowork.blogspot.com.es/2015/03/servidor-web-apache-en-debian-misma.html" target="_blank">post anterior</a>, donde configuramos dos sitios en una misma IP y en la misma interfaz con diferente nombre en nuestro Servidor Apache en Debian, en este caso vamos a crear un Moodle dentro de misitio y un Joomla dentro de misitio2.</div>
</div>
<div>
<br /></div>
<h3 style="text-align: left;">
Antes de comenzar...</h3>
<div>
<ul style="text-align: left;">
<li style="text-align: justify;">Como siempre, vamos a hacer uso de las máquinas virtuales con Virtual Box, con una máquina virtual Debian con una interfaz en Adaptador Puente y DHCP.</li>
<li style="text-align: justify;">Vamos a tomar de referencia los ejercicios anteriores sobre el Servidor Web Apache a los que puedes echar un vistazo aquí... Parte 1/4, Parte 2/4 y <a href="http://gallardowork.blogspot.com.es/2015/03/servidor-web-apache-en-debian-misma.html" target="_blank">Parte 3/4</a>.</li>
<li style="text-align: justify;">Vamos a hacer uso de las herramientas Putty y WinSCP para conectarnos a la máquina virtual y para transferir archivos a nuestra máquina virtual respectivamente.</li>
<li style="text-align: justify;">Instalaremos los siguientes paquetes para preparar nuestro servidor web para montar nuestro sitio Moodle y Joomla</li>
</ul>
</div>
<blockquote class="tr_bq">
<div style="text-align: justify;">
apt-get install php5 mysql-server phpmyadmin php5-mysql curl php5-curl</div>
</blockquote>
<div style="text-align: justify;">
Durante el proceso nos pedirá elegir una contraseña para la base de datos | root - root</div>
<h2 style="text-align: justify;">
Crear y habilitar nuestros sitios Moodle y Joomla</h2>
<h3 style="text-align: left;">
Descargar y transferir Moodle y Joomla</h3>
<div>
<div style="text-align: justify;">
Lo primero que haremos será descargar Moodle (Puedes hacerlo en <a href="https://download.moodle.org/" target="_blank">este enlace</a>) y pasarlo al directorio /var/www/misitio/ gracias a WinSCP. Yo he elegido el formato .zip por la facilidad que nos ofrece al descomprimir.</div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvLwpOfuYQE5fwZwCgBicEiA3c8mKlviB7tJa3iXhnMGV8c7gN_fSaCn-Oob0A74rwLp3wte343XAbv-kIhlzF1GGoLs_L7a9DieJceNMLm_kjofV2JLwg2CFWz-yHmH-zNJY97GK2l64/s1600/apache45.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvLwpOfuYQE5fwZwCgBicEiA3c8mKlviB7tJa3iXhnMGV8c7gN_fSaCn-Oob0A74rwLp3wte343XAbv-kIhlzF1GGoLs_L7a9DieJceNMLm_kjofV2JLwg2CFWz-yHmH-zNJY97GK2l64/s1600/apache45.png" /></a></div>
<div>
<br /></div>
<div>
<blockquote class="tr_bq">
cd /var/www/misitio/<br />unzip moodle.zip</blockquote>
</div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
Listo, ya tendremos descomprimido nuestro moodle</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
Haremos lo mismo para descargar Joomla (puedes descargarlo en <a href="http://www.joomlaspanish.org/" target="_blank">este enlace</a>) y vamos a pasarlo al directorio /var/www/misitio2/ de nuevo, usando la herramienta WinSCP.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOAa-5H0DoHPo7MnmqBV9SLi-G7vLI49U704WPuLJJ320a7zQa8XexiUFg9YYEdfOPIeeRZWsReVk6od6tD4sVAP8zfKai7xbpkAfgENbZ_paN6elXWIxb9ljbLl_dImsMtH_VzKolWic/s1600/apache44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOAa-5H0DoHPo7MnmqBV9SLi-G7vLI49U704WPuLJJ320a7zQa8XexiUFg9YYEdfOPIeeRZWsReVk6od6tD4sVAP8zfKai7xbpkAfgENbZ_paN6elXWIxb9ljbLl_dImsMtH_VzKolWic/s1600/apache44.png" /></a></div>
<div>
<br /></div>
<div>
<div>
<blockquote class="tr_bq">
cd /var/www/misitio2/<br />unzip Joomla.zip</blockquote>
</div>
</div>
<div>
<br /></div>
<div>
<h3>
Crear, configurar y habilitar los sitios Joomla y Moodle</h3>
</div>
<div>
Ahora nos vamos a ir a la ruta de configuración de apache <b>/etc/apache2/</b></div>
<div>
<br /></div>
<h4 style="text-align: left;">
Archivo ports.conf</h4>
<div>
Si editamos este archivo debemos ver que esté habilitado y a la escucha el puerto 80...</div>
<div>
<br /></div>
<code>
NameVirtualHost *:80 <br />Listen 80 </code><br />
<div>
<br /></div>
<div>
<h4>
Archivo para moodle</h4>
<blockquote class="tr_bq">
cd /etc/apache2/sites-available/<br />cp default moodle<br />nano moodle</blockquote>
</div>
<div>
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxFGU7bTbdHNbwxH8zP1ToHCtQJKuwtan-OSOMoV-IXymq3ltfu110knbN6NK2wecSvoOHi1R_xCeIkDz1TlltOi7ixDx_NQo0hv7hEISrXnuAAPlgD4I3cFC2euNAEoSEPRV-UbyoZ3o/s1600/apache42.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxFGU7bTbdHNbwxH8zP1ToHCtQJKuwtan-OSOMoV-IXymq3ltfu110knbN6NK2wecSvoOHi1R_xCeIkDz1TlltOi7ixDx_NQo0hv7hEISrXnuAAPlgD4I3cFC2euNAEoSEPRV-UbyoZ3o/s1600/apache42.png" /></a></div>
<br /></div>
<div>
<div>
<h4>
Archivo para joomla</h4>
<blockquote class="tr_bq">
cd /etc/apache2/sites-available/<br />cp default joomla<br />nano joomla</blockquote>
</div>
<div>
<br /></div>
</div>
<div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjji3n6s2-YcJeIbac2douAG2CgXPbPu8-s9w0uuT6Mbm0mU0_iK2VJ0MYQS7dsf8BhlCXuepyeACKz3JypeJ5P3B1T2z4uk6P0o-PB1iqcQAFf_YxLdMcEPc-yJhYONWrxc-z78MmGM8U/s1600/apache43.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjji3n6s2-YcJeIbac2douAG2CgXPbPu8-s9w0uuT6Mbm0mU0_iK2VJ0MYQS7dsf8BhlCXuepyeACKz3JypeJ5P3B1T2z4uk6P0o-PB1iqcQAFf_YxLdMcEPc-yJhYONWrxc-z78MmGM8U/s1600/apache43.png" /></a></div>
</div>
</div>
<div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<h3 style="text-align: left;">
Acceder a los sitios por el Navegador</h3>
<div style="text-align: justify;">
Como vimos en la práctica anterior para poder acceder con las direcciones de los ServerName moodle.misitio.es y joomla.misitio2.es debemos modificar en la máquina local el archivo <b>/etc/hosts</b> en Linux o <b>c:/windows/system32/drivers/etc/hosts </b>en Windows</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw-101T5v4-QzZtiIWJqFIvKmjIea2vipQqmF-orWS6F7igxwctpIBeCZYTkg5Eia8E1xBA9mfx2QoEh0XwFJfrz7OHJsEvTwq6YuZJiMSx3nddmkzOnGqFkQGVi_tiovNleHxXvbZUeI/s1600/apache41.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw-101T5v4-QzZtiIWJqFIvKmjIea2vipQqmF-orWS6F7igxwctpIBeCZYTkg5Eia8E1xBA9mfx2QoEh0XwFJfrz7OHJsEvTwq6YuZJiMSx3nddmkzOnGqFkQGVi_tiovNleHxXvbZUeI/s1600/apache41.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3 style="text-align: left;">
Instalación de Moodle y Joomla</h3>
<div class="separator" style="clear: both; text-align: justify;">
Ahora sólo tenemos que acceder a moodle.misitio.es para instalar Moodle o a joomla.misitio2.es para instalar Joomla. En mi caso, como mi Debian es más antiguo que las versiones de Moodle y Joomla, me ha dado un mensaje como el siguiente.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvPjT1J2563roUuKDob5iYL5WOTrvKOVpBvU5sqBpRudv44xsz-L7JM96LyJRYcfpdBoLa445EU6h-rp8H44138LMKCrqgAXhyphenhypheneWhKA0Wxrm5VNrRhJQePCAL9D-JzE2D8QGdfpKGuvXQ/s1600/apache46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvPjT1J2563roUuKDob5iYL5WOTrvKOVpBvU5sqBpRudv44xsz-L7JM96LyJRYcfpdBoLa445EU6h-rp8H44138LMKCrqgAXhyphenhypheneWhKA0Wxrm5VNrRhJQePCAL9D-JzE2D8QGdfpKGuvXQ/s1600/apache46.png" /></a></div>
<br />
No pasa nada, descargamos las versiones anteriores e instalamos <b>Joomla</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYuC8r032M-hiLF24y3mI2naI6HqqeWThZvEdJJ1V1i-HEZuUS0sqjsozra_HngEZGvcAR09MLvVn64KeNKO8LiS4UvgK_YhcC0ziDemGQURMzZRHhXWJ0zyMbWhTfuGOIMXTsEr55NXU/s1600/apache47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYuC8r032M-hiLF24y3mI2naI6HqqeWThZvEdJJ1V1i-HEZuUS0sqjsozra_HngEZGvcAR09MLvVn64KeNKO8LiS4UvgK_YhcC0ziDemGQURMzZRHhXWJ0zyMbWhTfuGOIMXTsEr55NXU/s1600/apache47.png" /></a></div>
<br />
...Y <b>Moodle</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgka2bMxDhsOE_SgvaMLzMnbEQdmfjGBL8wZizLo6vhN4ZNQkVZV7mVa3ulR9cl8w8ffl35OpmUQZyxq7Hejj-i7NvG6vedi1JK3IpdloXQK378fUao5k41mjPYeHbePnuZu9uFGubjUU4/s1600/apache48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgka2bMxDhsOE_SgvaMLzMnbEQdmfjGBL8wZizLo6vhN4ZNQkVZV7mVa3ulR9cl8w8ffl35OpmUQZyxq7Hejj-i7NvG6vedi1JK3IpdloXQK378fUao5k41mjPYeHbePnuZu9uFGubjUU4/s1600/apache48.png" /></a></div>
<div style="text-align: center;">
<br />
<div style="text-align: justify;">
Las instalaciones de ambos podremos verlas en artículos posteriores más en profundidad, ya que para esta práctica lo que estamos aprendiendo es a configurar un servidor web y no a instalar CMS. </div>
</div>
</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-84093452899474056492015-03-03T02:48:00.001-08:002015-03-03T05:23:03.046-08:00Servidor Web Apache en Debian | Misma Interfaz, Mismo Puerto y Distinto Nombre - 3/4<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Como ya hemos visto en prácticas anteriores, hemos instalado y configurado un servidor Web Apache en Debian con <a href="http://gallardowork.blogspot.com.es/2015/02/servidor-web-apache-mismo-interfaz-y.html" target="_blank">misma interfaz y distinto puerto</a>, con <a href="http://gallardowork.blogspot.com.es/2015/03/servidor-web-apache-en-debian-mismo.html" target="_blank">mismo puerto y distinta interfaz</a>, y hoy os voy a enseñar cómo hacerlo con la misma interfaz, mismo puerto pero con nombres diferentes.</div>
<div style="text-align: justify;">
<br /></div>
<h3 style="text-align: justify;">
Antes de comenzar debes saber...</h3>
<div>
<ul style="text-align: left;">
<li>En esta práctica hemos omitido <b>la instalación de Apache</b> que puedes ver en <a href="http://gallardowork.blogspot.com.es/2015/02/servidor-web-apache-mismo-interfaz-y.html" target="_blank">este enlace</a>.</li>
<li>De nuevo vamos a hacer uso de las <b>máquinas virtuales</b> con Virtual Box, y vamos a levantar una máquina virtual <b>Debian </b>con una interfaz en <b>Adaptador Puente</b> y <b>DHCP</b></li>
</ul>
<div>
<b><br /></b></div>
</div>
<h2 style="text-align: left;">
<b>Configuración y creación de los sitios web</b></h2>
<h3 style="text-align: left;">
<b>Archivo ports.conf</b></h3>
<div>
Vamos a crear dos sitios web, pero como hemos adelantado antes, estarán en el mismo puerto, misma interfaz pero van a tener distinto nombre, por tanto el archivo <b>ports.conf </b>de <b>/etc/apache2/</b> lo dejaremos tal cuál está con las siguientes entradas...</div>
<div>
<br /></div>
<code>
NameVirtualHost *:80 </code><br />
<code>Listen 80
</code>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3>
Creación y configuración de los sitios</h3>
<blockquote class="tr_bq">
mkdir /var/www/misitio<br />
nano /var/www/misitio/misitio.html<br />
cd /etc/apache2/sites-available<br />
cp default misitio<br />
nano misitio</blockquote>
<div>
<div style="text-align: justify;">
<ol>
<li>IP:Puerto</li>
<li>Ruta del archivo index de misitio</li>
<li><b>ServerName </b>| *Importante, nombre del sitio (misitio.es)</li>
<li>Ruta, la misma que en el punto 2</li>
</ol>
</div>
<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/AVvXsEgqvoUuaXCJO1TOCgXC_aOjhIQZ1_S1wD8ky-0Qvkr0Ib7cEpkl_V4HEfcpGJqFW-_s2C_1BMGf6db4DJ2Ko-jgseoInYNZT_CqXGuwHMhTHsYa3U-zG3_8FhTH45Ax8wjeDyr1V1Xd610/s1600/apache31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqvoUuaXCJO1TOCgXC_aOjhIQZ1_S1wD8ky-0Qvkr0Ib7cEpkl_V4HEfcpGJqFW-_s2C_1BMGf6db4DJ2Ko-jgseoInYNZT_CqXGuwHMhTHsYa3U-zG3_8FhTH45Ax8wjeDyr1V1Xd610/s1600/apache31.png" height="238" width="640" /></a></div>
<br />
<b>Activamos el sitio y reiniciamos el servidor</b><br />
<b><br /></b>
<br />
<blockquote class="tr_bq">
a2ensite misitio<br />
service apache2 restart</blockquote>
<b><br /></b>
<br />
<h3 style="text-align: left;">
Repetimos el mismo proceso para el sitio2</h3>
<blockquote class="tr_bq">
mkdir /var/www/misitio2<br />
nano /var/www/misitio/misitio2.html<br />
cd /etc/apache2/sites-available<br />
cp default misitio2<br />
nano misitio2</blockquote>
<div>
<div style="text-align: justify;">
<ol>
<li>IP:Puerto</li>
<li>Ruta del archivo index de misitio</li>
<li><b>ServerName </b>| *Importante, nombre del sitio (misitio2.es)</li>
<li>Ruta, la misma que en el punto 2</li>
</ol>
</div>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYiNhPNwO1RGJfHUui8cU-A_c5T_jl_DHspOtadZSo342eJF9ZcIA979Q0tOQE0xal1aknKp7VBrpze0F4-TpHG4P1RULYg3TV50kPzF4Sy0op7sYfzmqBKWkBW9ALL3PhKTjCE5p5mko/s1600/apache32.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYiNhPNwO1RGJfHUui8cU-A_c5T_jl_DHspOtadZSo342eJF9ZcIA979Q0tOQE0xal1aknKp7VBrpze0F4-TpHG4P1RULYg3TV50kPzF4Sy0op7sYfzmqBKWkBW9ALL3PhKTjCE5p5mko/s1600/apache32.png" height="248" width="640" /></a></div>
<br />
<b>Activamos el sitio2 y reiniciamos el servidor</b><br />
<b><br /></b>
<br />
<blockquote class="tr_bq">
a2ensite misitio2<br />
service apache2 restart</blockquote>
<h3 style="text-align: left;">
Ver los resultados en el navegador</h3>
<div style="text-align: justify;">
Si queremos ver que introduciendo misitio.es y misitio2.es debemos modificar en nuestra máquina real el archivo <b>/etc/hosts </b>si estamos en Linux, como se puede ver en la imagen, o en Windows accediendo a la siguiente <b>ruta c:/windows/system32/drivers/etc/hosts.</b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglpzQToMAKG3Lj8Hi78_vaOPUwjYasdKYkQgLGl6ky91CUl44acY6UpeYi32cZDGm21cL8IQVHtqYby2rQQ0HRGhLLkiNXH_hJO6QRHlW2W8TUWJntVSov2Ulszfn7osVxKMGTAV1QY1s/s1600/apache33.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglpzQToMAKG3Lj8Hi78_vaOPUwjYasdKYkQgLGl6ky91CUl44acY6UpeYi32cZDGm21cL8IQVHtqYby2rQQ0HRGhLLkiNXH_hJO6QRHlW2W8TUWJntVSov2Ulszfn7osVxKMGTAV1QY1s/s1600/apache33.png" height="146" width="640" /></a></div>
<div style="text-align: center;">
<br />
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: justify;">
Tras modificar el archivo /etc/hosts podemos ver nuestro <b>misitio.es</b></div>
<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/AVvXsEhnDbFnDEDUUAOyIaUs1a4qhOoWI4lPOD0bmAWwrV6ptYRd1MpOfRQpvUlhvFGQJIKfOKEUSoRu8kx-rIqQaSB4tmSmPkUhsZwxZJoxi5yfeSNq7CArDLbxPVN5fH_-vWqUkyuQPRMDclo/s1600/apache34.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnDbFnDEDUUAOyIaUs1a4qhOoWI4lPOD0bmAWwrV6ptYRd1MpOfRQpvUlhvFGQJIKfOKEUSoRu8kx-rIqQaSB4tmSmPkUhsZwxZJoxi5yfeSNq7CArDLbxPVN5fH_-vWqUkyuQPRMDclo/s1600/apache34.png" /></a></div>
<br />
Y por supuesto nuestro segundo sitio <b>misitio2.es</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhomuPcgMRIiSi7TDSTmR7p0QVsOXyceHzrUkCAgGoL-9umRx5JkSwbpA72vxvm9Ti0K9jHHj2w3gsthpWVThg-JXHvky9SM5KAtT7EwT6qUe-80IQJAF58s5Nk5yqLdks_W72dEzC1_4Y/s1600/apache35.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhomuPcgMRIiSi7TDSTmR7p0QVsOXyceHzrUkCAgGoL-9umRx5JkSwbpA72vxvm9Ti0K9jHHj2w3gsthpWVThg-JXHvky9SM5KAtT7EwT6qUe-80IQJAF58s5Nk5yqLdks_W72dEzC1_4Y/s1600/apache35.png" /></a></div>
<br /></div>
</div>
</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-59483487254764019132015-03-02T15:43:00.000-08:002015-03-03T02:22:43.436-08:00Servidor Web Apache en Debian | Mismo puerto y Distinta interfaz - 2/4<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: justify;">
En una práctica anterior vimos <a href="http://gallardowork.blogspot.com.es/2015/02/servidor-web-apache-mismo-interfaz-y.html" target="_blank">cómo instalar y configurar un servidor apache con misma interfaz y distinto puerto</a>, pues bien, hoy vamos a ver cómo configurar apache con el mismo puerto, pero con dos interfaces en Debian. En la práctica vamos a omitir los pasos de instalación de apache y nos vamos a ir directamente a la configuración. Si quieres ver la instalación haz clic en el enlace de arriba para ver el post anterior...</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<h3 style="clear: both; text-align: justify;">
Antes de comenzar...</h3>
<div style="text-align: justify;">
Como ya es costumbre, para esta práctica vamos a hacer uso de las máquinas virtuales, en este caso con dos interfaces, ambas en adaptador puente que nos servirán para cada uno de los sitios que vamos a crear.</div>
<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/AVvXsEiXqom_Lw569Ac0s2OxiH6Rbp2eQBjBn5x2VuXIIwSg2k3SwgmoA1mja66QJJ7EShhF-87eZH3lnptBZORhD9JBZ8d1YtQonoUmmrY_zSheUvYze5YsK5_V3vEf4C-uDWSR0Gl-Qr8ZAOY/s1600/apache21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXqom_Lw569Ac0s2OxiH6Rbp2eQBjBn5x2VuXIIwSg2k3SwgmoA1mja66QJJ7EShhF-87eZH3lnptBZORhD9JBZ8d1YtQonoUmmrY_zSheUvYze5YsK5_V3vEf4C-uDWSR0Gl-Qr8ZAOY/s1600/apache21.png" height="386" width="640" /></a></div>
<br />
<h3 style="clear: both; text-align: justify;">
Configuración de red</h3>
<div style="text-align: justify;">
<span style="text-align: left;">A continuación, iniciaremos nuestra máquina virtual Debian y modificaremos el archivo de configuración de red </span><span style="text-align: left;"><b>/etc/network/interfaces </b>para dos interfaces en DHCP. </span></div>
<div style="text-align: justify;">
<span style="text-align: left;"><br /></span></div>
<blockquote class="tr_bq" style="text-align: justify;">
<span style="text-align: left;">nano /etc/network/interfaces</span></blockquote>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9UK-3Urqt-_3gxYryYyutMx3HRxLZ8iP3zqJj1fO5pheicIp2LcdZEw6CIR2vC_kd5aSKzn6_k1m-rmZnjQyO-REhXO-1A8XQiwfZ_YBAmJQZ4VdhuRgkHfzzIXyAITI-0e-cq6Mi-ZI/s1600/apache22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9UK-3Urqt-_3gxYryYyutMx3HRxLZ8iP3zqJj1fO5pheicIp2LcdZEw6CIR2vC_kd5aSKzn6_k1m-rmZnjQyO-REhXO-1A8XQiwfZ_YBAmJQZ4VdhuRgkHfzzIXyAITI-0e-cq6Mi-ZI/s1600/apache22.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Como podemos comprobar al hacer un <b>ifconfig </b>nuestras interfaces, han cogido una IP mediante DHCP, las cuáles serán las interfaces de nuestros dos sitios web en nuestro servidor Apache.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJrxD7OqIYNt2CHRs11JJsVn5CnynItLeomtm_ryAmprBTiMumegmWKVGYAcrjcPxrtifgzKz81Rtn_QYxntVm89Sc-WJu4Mi4OSGTIeaGXS8pA_UWbL_HXzlmhk2hSKuvid-OOhAYC9U/s1600/apache23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJrxD7OqIYNt2CHRs11JJsVn5CnynItLeomtm_ryAmprBTiMumegmWKVGYAcrjcPxrtifgzKz81Rtn_QYxntVm89Sc-WJu4Mi4OSGTIeaGXS8pA_UWbL_HXzlmhk2hSKuvid-OOhAYC9U/s1600/apache23.png" /></a></div>
<br />
<h2 style="text-align: left;">
Configuración de Apache</h2>
<h3 style="text-align: left;">
Configuración del archivo ports.conf</h3>
<div>
Lo primero que haremos será habilitar en el archivo ports.conf las IPs de nuestros sitios y los puertos como podemos ver en la siguiente imagen.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdT-bYXCcpvgHOwvLbYPMwUkMcwocMzdmGKJxOZdWfmhCtJykGKx5T9jEP1gweEmb11FUEurBpdUJvveaq8PDVnskCda11WSKW8pYMBbV0ezD6Eqs8aGmypEzyfFetJvDiHvE4w4mHQ9o/s1600/apache24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdT-bYXCcpvgHOwvLbYPMwUkMcwocMzdmGKJxOZdWfmhCtJykGKx5T9jEP1gweEmb11FUEurBpdUJvveaq8PDVnskCda11WSKW8pYMBbV0ezD6Eqs8aGmypEzyfFetJvDiHvE4w4mHQ9o/s1600/apache24.png" /></a></div>
<br />
<h3>
Habilitar los sitios</h3>
<div>
A continuación, habilitaremos los sitios creando los archivos de configuración de cada sitio. Nos vamos a /etc/apache2/sites-available/ y copiamos el archivo default en misitio</div>
<div>
<br /></div>
<blockquote class="tr_bq">
cd /etc/apache2/sites-available<br />
cp default misitio<br />
nano misitio</blockquote>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYA3zf_45vYroQ7z_kLQ9CrVC4iaFwqCqNgLHoGwm1pvcuIkHWQTSNrunwqAsp1UyAnp1ebpaR9R6fHpXS51yN1kxbvjmF_f6gl50McNxgpFeWR8c1Ptpnq_S2NwDeonB1f3qXNgR8Nnc/s1600/apache25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYA3zf_45vYroQ7z_kLQ9CrVC4iaFwqCqNgLHoGwm1pvcuIkHWQTSNrunwqAsp1UyAnp1ebpaR9R6fHpXS51yN1kxbvjmF_f6gl50McNxgpFeWR8c1Ptpnq_S2NwDeonB1f3qXNgR8Nnc/s1600/apache25.png" /></a></div>
<br />
<br />
<ol style="text-align: left;">
<li>IP:Puerto</li>
<li>/var/www/misitio | Lugar donde alojaremos el archivo html</li>
<li>También editaremos esto </li>
</ol>
<br />
Ahora pasaremos a crear el archivo html y habilitaremos el sitio:<br />
<blockquote class="tr_bq">
</blockquote>
<blockquote class="tr_bq">
nano /var/www/misitio/misitio.html<br />
mkdir /var/www/misitio<br />
a2ensite misitio</blockquote>
</div>
<div>
<br />
<b>Haremos lo mismo pero para el sitio2.</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDnLa5CaBztBKxnH2dFA4HlJ_ScA2IrjmQ_uEnDgGj5T07u7YBgS4nNg520TI1XzJQ5PDiC3N4-m6JR5XjGfSvRBidrpPIydgf59NubixRfzJ4TxvuZGf6l3WsPRHkR3nGtNsiM5wYO04/s1600/apache26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDnLa5CaBztBKxnH2dFA4HlJ_ScA2IrjmQ_uEnDgGj5T07u7YBgS4nNg520TI1XzJQ5PDiC3N4-m6JR5XjGfSvRBidrpPIydgf59NubixRfzJ4TxvuZGf6l3WsPRHkR3nGtNsiM5wYO04/s1600/apache26.png" /></a></div>
<br />
<br />
<h3>
Habilitar los sitios</h3>
<div>
Nos vamos al navegador en nuestro equipo local y podemos ver nuestros sitios introduciendo las IPs de cada uno de los sitios que acabamos de crear y habilitar.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQmc0GXcKzDqRpTAsf9XO01qoYJ3hTVFYH5ljfDpJkxtDm3QbqIM_ZN-zmdEaM0WqFpiE65JjPHbXISpDVLYX8_hk9nORYDWNm2KVXVA7SvXAP6xIbXqiSPaWRVnsY2d-drAwvGgiiph8/s1600/apache27.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQmc0GXcKzDqRpTAsf9XO01qoYJ3hTVFYH5ljfDpJkxtDm3QbqIM_ZN-zmdEaM0WqFpiE65JjPHbXISpDVLYX8_hk9nORYDWNm2KVXVA7SvXAP6xIbXqiSPaWRVnsY2d-drAwvGgiiph8/s1600/apache27.png" /></a></div>
<br />
Aquí podemos ver como funcionan tanto sitio como sitio2 con diferente interfaz y mismo puerto.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikHNg0yWpJMDVnnDbXOE5D0jeKkPYjZwl5EgmtuB0idbzwKlH6mkZrjR8B5_GAzwkOzElCg7x3GB95hpvTjBg8SoKywKQVp_anGAKgsHL0zNfb2S522WfFNhn01CIZdbkWcZVbCqQnk4Y/s1600/apache28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikHNg0yWpJMDVnnDbXOE5D0jeKkPYjZwl5EgmtuB0idbzwKlH6mkZrjR8B5_GAzwkOzElCg7x3GB95hpvTjBg8SoKywKQVp_anGAKgsHL0zNfb2S522WfFNhn01CIZdbkWcZVbCqQnk4Y/s1600/apache28.png" /></a></div>
<div style="text-align: center;">
<br /></div>
</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-6138025323787892682015-02-24T13:01:00.001-08:002015-02-24T13:01:18.841-08:00Cómo hacer Streaming de vídeo con VLC & Icecast<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: justify;">
En una práctica anterior, vimos <a href="http://gallardowork.blogspot.com.es/2015/02/servidor-de-streaming-con-icecast.html" target="_blank">cómo crear un servidor de Streming con Icecast</a> cuya configuración vamos a tomar para reproducir vídeos gracias a VLC con el que vamos a poder realizar la emisión de un vídeo y que luego vamos a poder reproducir en red a través del navegador con nuestro servidor Icecast.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<h2 style="clear: both; text-align: justify;">
Cómo hacer Streaming de vídeo con VLC & Icecast</h2>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<ol>
<li>Échale un vistazo a <a href="http://gallardowork.blogspot.com.es/2015/02/servidor-de-streaming-con-icecast.html" target="_blank">este post</a> para configurar tu servidor de Icecast</li>
<li>Emitir vídeos desde VLC. Cosa que ya vimos en este <a href="http://gallardowork.blogspot.com.es/2015/02/como-hacer-streaming-de-video-con-vlc_17.html" target="_blank">otro post</a>.</li>
</ol>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h3 style="clear: both; text-align: justify;">
Configurar VLC para recibir el Streming de Icecast</h3>
<div>
En este artículo vamos a tomar los datos del post sobre cómo configurar un servidor Icecast, es por ello que vamos a omitir este paso y nos vamos a meter de lleno a configurar VLC para emitir lo que Icecast nos brinda.</div>
<div>
<br /></div>
<div>
<ul style="text-align: left;">
<li>Lo primero que haremos será obviamente <b>descargar </b>y ejecutar VLC Player. Para descargar VLC, puedes hacerlo en el siguiente enlace <a href="http://www.videolan.org/vlc/">http://www.videolan.org/vlc/</a></li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h4 style="text-align: justify;">
Abrimos VLC Player | Medio > Emitir...</h4>
<h4 style="clear: both; text-align: justify;">
<div style="font-weight: normal; text-align: left;">
</div>
<div class="separator" style="clear: both; font-weight: normal; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7Qw_N4AoZNIVg7CREAwkNgpOAUcIUI5g0IGLSGsBvo4UbRccswqvXm6L3sNqg_y9ROIYjaLTZ5R4fUpsivZIyLhmlVACN6KPg8r-YWo9fe-O9U9xRvclUyVkEIk7i62DnTzJ9LsNO_so/s1600/vlc1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7Qw_N4AoZNIVg7CREAwkNgpOAUcIUI5g0IGLSGsBvo4UbRccswqvXm6L3sNqg_y9ROIYjaLTZ5R4fUpsivZIyLhmlVACN6KPg8r-YWo9fe-O9U9xRvclUyVkEIk7i62DnTzJ9LsNO_so/s1600/vlc1.png" /></a></div>
</h4>
<h4>
Añadimos un archivo a la lista | Clic en Emitir</h4>
<h4 style="clear: both; text-align: justify;">
<div class="separator" style="clear: both; font-weight: normal; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDXMXvxOYOBv3V8qvIBGHSneSpziiw1QXmDMngojW6jcCGIUZ0M5bN-FwBmMs9-3BuEWlzPz_w9RgUbZQiZC0vTtoWn6PFPuHDlIKWvexzDWX4w13oySUuqZKkPW2EbtTv6XUT3mj98z0/s1600/vlc2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDXMXvxOYOBv3V8qvIBGHSneSpziiw1QXmDMngojW6jcCGIUZ0M5bN-FwBmMs9-3BuEWlzPz_w9RgUbZQiZC0vTtoWn6PFPuHDlIKWvexzDWX4w13oySUuqZKkPW2EbtTv6XUT3mj98z0/s1600/vlc2.png" /></a></div>
</h4>
<h4 style="clear: both; text-align: justify;">
Hacemos clic en "Next"</h4>
<h4 style="clear: both; text-align: justify;">
<div class="separator" style="clear: both; font-weight: normal; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggUIp_TzhfW2-vtiAOK6OkLb2P9PIFbbRW0TmX-babQ6OxPCKehnmHlguccKpJoohGqp2ALk-Y3hEGbm59ycmAv2g870n-EM2FKqJ-ZK5QcV-StfQu3uxbdLO-SWnXJMGrNLmwSqGGlz8/s1600/vlc3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggUIp_TzhfW2-vtiAOK6OkLb2P9PIFbbRW0TmX-babQ6OxPCKehnmHlguccKpJoohGqp2ALk-Y3hEGbm59ycmAv2g870n-EM2FKqJ-ZK5QcV-StfQu3uxbdLO-SWnXJMGrNLmwSqGGlz8/s1600/vlc3.png" /></a></div>
</h4>
<h4>
Seleccionamos la opción Icecast de la lista | Añadir</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrSNhaVoYU9CD3bDvk1ZR5M6_PV2K3Kmu41xpRUccg9HivFYpY-0o3JTPNveB6OLx0z81vDei-HAuMKJTBFKz2WGERAeeEO0JZ6ml6kaRK1NG0ondSQ5N6t2rvyFN84excHBT6JEuJlR0/s1600/vlc20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrSNhaVoYU9CD3bDvk1ZR5M6_PV2K3Kmu41xpRUccg9HivFYpY-0o3JTPNveB6OLx0z81vDei-HAuMKJTBFKz2WGERAeeEO0JZ6ml6kaRK1NG0ondSQ5N6t2rvyFN84excHBT6JEuJlR0/s1600/vlc20.png" /></a></div>
<h4 style="text-align: left;">
Dirección IP | Puerto 8000 | Punto de montaje | usuario:contraseña</h4>
<div>
<ol style="text-align: left;">
<li>La IP deberá ser la de nuestro servidor Icecast</li>
<li>El puerto debe ser 8000</li>
<li>El punto de montaje será el nombre que queramos ponerle</li>
<li>El usuario y contraseña debe corresponderse con el del archivo /etc/icecast2/icecast.xml del servidor Icecast</li>
</ol>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBuhn1EIxX5qFo0W7EEB1gY0191tk79junxXtGOYaniRAD9z4JEVlk-0P6lj5h4KIItT-sLa12tjVIJUj27DPtzq7dmUgYMFslvpslRhTaEoTxp4ys5BufHnYptY4WmD_lXpvpPoPnwIQ/s1600/vlc21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBuhn1EIxX5qFo0W7EEB1gY0191tk79junxXtGOYaniRAD9z4JEVlk-0P6lj5h4KIItT-sLa12tjVIJUj27DPtzq7dmUgYMFslvpslRhTaEoTxp4ys5BufHnYptY4WmD_lXpvpPoPnwIQ/s1600/vlc21.png" /></a></div>
<h4 style="text-align: left;">
Seleccionaremos Video - Theora + Vorbis (OGG) | Next</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEE75aS1AlU9YEfUA-EPEtEoYeWqJE1CzxFuSsmEL1xV9ZPNmTOxZLS-KXgDpZ9ZeM-x-vft027SJlWDl8-aCVnprRbIInclg7k1J6JDpXLlsOqj3dD7Yhjd7vYUNOhfByYu1jcoZojpo/s1600/vlc22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEE75aS1AlU9YEfUA-EPEtEoYeWqJE1CzxFuSsmEL1xV9ZPNmTOxZLS-KXgDpZ9ZeM-x-vft027SJlWDl8-aCVnprRbIInclg7k1J6JDpXLlsOqj3dD7Yhjd7vYUNOhfByYu1jcoZojpo/s1600/vlc22.png" /></a></div>
<h4 style="text-align: left;">
Por último haremos clic en "Stream"</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgADnF3Yv3AlaerwY661e1y3nGcIBSHigsKjrWEI06R-IpZ_wxip_tEwY-9Bl4fkm5lvtVrQBZpJDmHtNukZ_TIsnFtQ4qfE9zoGr7qC0QI9TXzMKPBMrtOsLiBCQ6ayv067Et5w613xbA/s1600/vlc23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgADnF3Yv3AlaerwY661e1y3nGcIBSHigsKjrWEI06R-IpZ_wxip_tEwY-9Bl4fkm5lvtVrQBZpJDmHtNukZ_TIsnFtQ4qfE9zoGr7qC0QI9TXzMKPBMrtOsLiBCQ6ayv067Et5w613xbA/s1600/vlc23.png" /></a></div>
<h4 style="text-align: left;">
Ya tendremos nuestro servidor de vídeo Icecast emitiendo lo que hemos mandado con VLC</h4>
<div>
Podremos comprobarlo introduciendo la IP del servidor Icecast : 8000 / Punto de montaje</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIToxKa-4HwK50dlkJUKvdFRZyOGrHVu0WaLUf2LAEWK_OH68juyxZsTx6tEeLFxy5qDq43qispCJ_8y1OgqB7pRGr7q2nJbqX5tElBTKeki_bWR_9g-Kj8dVrGu_HJmZdlRLV1YiJo0M/s1600/vlc24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIToxKa-4HwK50dlkJUKvdFRZyOGrHVu0WaLUf2LAEWK_OH68juyxZsTx6tEeLFxy5qDq43qispCJ_8y1OgqB7pRGr7q2nJbqX5tElBTKeki_bWR_9g-Kj8dVrGu_HJmZdlRLV1YiJo0M/s1600/vlc24.png" /></a></div>
<br /></div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com8tag:blogger.com,1999:blog-2473427578716688052.post-6503967431480931552015-02-24T10:52:00.000-08:002015-03-03T02:22:29.273-08:00Servidor Web Apache en Debian | Mismo interfaz y Distinto Puerto - 1/4<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="clear: both; text-align: justify;">
En esta práctica vamos a ver cómo instalar un servidor web gracias a Apache, el cuál vamos a configurar con una misma interfaz y distinto puerto dos sitios web diferentes...</div>
<h2 style="clear: both; text-align: justify;">
Instalación y configuración de Apache</h2>
<h3 style="text-align: left;">
Levantar máquina virtual Debian</h3>
<div>
<div style="text-align: justify;">
Como ya es costumbre en este blog, vamos a hacer uso de las máquinas virtuales, en este caso una máquina virtual Debian con una interfaz en Adaptador Puente la cuál vamos a configurar como DHCP.</div>
</div>
<div>
<br /></div>
<div>
<h3>
Instalar Apache2 </h3>
</div>
<div>
En mi caso, además de instalar apache2, vamos a instalar bind9 y ssh ya que probablemente lo usemos en un futuro.</div>
<div>
<br /></div>
<blockquote class="tr_bq">
apt-get install apache2 bind9 ssh</blockquote>
<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/AVvXsEiUsx6iZKsWaCaJ6yZzh0tHuY5wPInqmtOHAc5BfbbGmMvPzBzdORRWRJXxcnTrSJvVeElTXayIANCzQXFIca0KJPUeG_dPHjK2dCYLP8p4egofRkETYHRrEdjKIaRrCQEyMtuZuq50R5A/s1600/apache11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUsx6iZKsWaCaJ6yZzh0tHuY5wPInqmtOHAc5BfbbGmMvPzBzdORRWRJXxcnTrSJvVeElTXayIANCzQXFIca0KJPUeG_dPHjK2dCYLP8p4egofRkETYHRrEdjKIaRrCQEyMtuZuq50R5A/s1600/apache11.png" /></a></div>
<br />
<div style="text-align: justify;">
En la ruta /etc/apache2/ tendremos acceso a los archivos de configuración de Apache. En este punto ya podremos ver que el servicio apache funciona, entrando con la IP de la máquina Debian en el navegador de nuestro equipo local, donde nos mostrará el gratificante mensaje de <b>"It works!"</b></div>
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
Comprobar los puertos a la escucha</h3>
<blockquote class="tr_bq">
netstat -putan | grep apache<br />
ps aux | grep apache2</blockquote>
<div style="text-align: left;">
<br /></div>
<h3>
Crear los directorios de nuestros sitios web y su index</h3>
<div>
<b>Para misitio1</b></div>
<blockquote class="tr_bq">
mkdir /var/www/misitio<br />
nano /var/www/misitio/misitio.html</blockquote>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheA4UDLcDXgkaOEHQdE6fNcs4Co2z-lSNafsEPNA0-uGUP4qxSnptG7q2jO7g2MnubYDymo2V4mWSLVsC19eGgcDebZ2alWTM95DkVSHUk2ZQFyT0WPBT1YeywttJb2g4Y-879CEUU9JQ/s1600/apache14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheA4UDLcDXgkaOEHQdE6fNcs4Co2z-lSNafsEPNA0-uGUP4qxSnptG7q2jO7g2MnubYDymo2V4mWSLVsC19eGgcDebZ2alWTM95DkVSHUk2ZQFyT0WPBT1YeywttJb2g4Y-879CEUU9JQ/s1600/apache14.png" /></a></div>
<div>
<br /></div>
<div>
<b>Para misitio2</b></div>
<blockquote class="tr_bq">
mkdir /var/www/misitio2<br />
nano /var/www/misitio/misitio2.html</blockquote>
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoVAbX69EEIHZqgbEst_TA_6RmIi6IckaVrGaZNRmr3qr-yo8c10a6M9MjlM6b_XpmxINNnH5rC1auADoLtH8mUwzMJb6-Kg3Ks4rwoRMCGhiPqhuehuYqaOMHyBSALTMntvE_rT9zuw0/s1600/apache15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoVAbX69EEIHZqgbEst_TA_6RmIi6IckaVrGaZNRmr3qr-yo8c10a6M9MjlM6b_XpmxINNnH5rC1auADoLtH8mUwzMJb6-Kg3Ks4rwoRMCGhiPqhuehuYqaOMHyBSALTMntvE_rT9zuw0/s1600/apache15.png" /></a></div>
<br />
<h3 style="text-align: left;">
Configurar el archivo ports.conf para los dos sitios</h3>
<div style="text-align: justify;">
En este caso vamos a añadir las líneas para los puertos 8080, ya que para el puerto 80 viene por defecto, como podemos ver en la imagen de a continuación.</div>
<div>
<br /></div>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGTz7XhV1EeO5CFtXpOYEmQ8180L9gewYcf3nF5evNlNZgEraShGPajj8S_NGBlTNtAwgeJFKzPSLn7miWeE_PW6dvCPd2kHWzM6xK5Xbu7aDbfkllujoPQAkM74jS3DjL931NHimtf7s/s1600/apache18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGTz7XhV1EeO5CFtXpOYEmQ8180L9gewYcf3nF5evNlNZgEraShGPajj8S_NGBlTNtAwgeJFKzPSLn7miWeE_PW6dvCPd2kHWzM6xK5Xbu7aDbfkllujoPQAkM74jS3DjL931NHimtf7s/s1600/apache18.png" /></a></div>
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
Habilitar y configurar misitio</h3>
<div>
Copiamos el archivo default de /etc/apache2/sites-available/ y lo nombramos misitio</div>
<div>
<br /></div>
<blockquote class="tr_bq">
cd /etc/apache2/sites-available<br />
cp default misitio</blockquote>
A continuación modificaremos el archivo misitio de la siguiente forma<br />
<div style="text-align: justify;">
<br /></div>
<ol style="text-align: left;">
<li style="text-align: justify;">Puerto, en este caso el 80</li>
<li style="text-align: justify;">Directorio Root, /var/www/misitio</li>
<li style="text-align: justify;">Directorio, /var/www/misito</li>
<li style="text-align: justify;">Log, también sería interesante cambiar el nombre del archivo log que podemos encontrar más abajo, con idea de tener ordenados los posibles errores de nuestro sitio.</li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCwOJEiQbHioE3ikx78c8EmMF67QIsLRac_9RCrVNoTM1kBcj4WEAF7OvqgjBxBPjk1teGKwDhFx3FF8r7zoX8YqTvS_4DtejaPTNVGiTp4n3xo2yjDxBxK4it3d5R72BCl48IbLLxRDI/s1600/apache12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCwOJEiQbHioE3ikx78c8EmMF67QIsLRac_9RCrVNoTM1kBcj4WEAF7OvqgjBxBPjk1teGKwDhFx3FF8r7zoX8YqTvS_4DtejaPTNVGiTp4n3xo2yjDxBxK4it3d5R72BCl48IbLLxRDI/s1600/apache12.png" /></a><br />
<br />
<h3 style="text-align: left;">
Habilitamos nuestro sitio misitio gracias a a2ensite</h3>
<blockquote class="tr_bq">
a2ensite misitio</blockquote>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaFl6kakr6BTGlbxq-3atnRoKgyf7nZiUsmKymDDzJK-rxJUwq61xwjSjWxy0XrEoDu21S32wxdAo8TD_qG6Rd0bvelDCr4Zze_E1Rqd_Jbvzn-QhqtOJuorUhKqS3fK-_Pxuf_oMK73I/s1600/apache16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaFl6kakr6BTGlbxq-3atnRoKgyf7nZiUsmKymDDzJK-rxJUwq61xwjSjWxy0XrEoDu21S32wxdAo8TD_qG6Rd0bvelDCr4Zze_E1Rqd_Jbvzn-QhqtOJuorUhKqS3fK-_Pxuf_oMK73I/s1600/apache16.png" /></a></div>
<div style="text-align: center;">
<br /></div>
<h3>
Habilitar y configurar misitio2</h3>
<div>
<div style="text-align: justify;">
Copiamos el archivo default de /etc/apache2/sites-available/ y lo nombramos en esta ocasión como misitio2.</div>
</div>
<div>
<br /></div>
<blockquote class="tr_bq">
cd /etc/apache2/sites-available<br />
cp default misitio2</blockquote>
A continuación modificaremos el archivo misitio2 de la siguiente forma<br />
<br />
<ol>
<li>Puerto, en este caso será el 8080</li>
<li>Directorio Root, /var/www/misitio2</li>
<li>Directorio, /var/www/misito2</li>
</ol>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiATWQxxa-oq-xH-fxRPrUm1wzVzUqtoTg5Oas8naDcz_vSlmd6IQNGAQoJkVksl1-5YxwgyjcuxxxNYuhxN4M2PCzRenf5KDwW6AX6-XdA0yXVJeV4OIcdId51HP7ZVikbJhryGYuL4s/s1600/apache13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiATWQxxa-oq-xH-fxRPrUm1wzVzUqtoTg5Oas8naDcz_vSlmd6IQNGAQoJkVksl1-5YxwgyjcuxxxNYuhxN4M2PCzRenf5KDwW6AX6-XdA0yXVJeV4OIcdId51HP7ZVikbJhryGYuL4s/s1600/apache13.png" /></a><br />
<br />
<h3>
Habilitamos nuestro segundo sitio llamado "misitio2" gracias a a2ensite</h3>
<blockquote class="tr_bq">
a2ensite misitio2</blockquote>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
...Y nuevamente, accedemos en el navegador a nuestra IP:8080 pudiendo ver el contenido del index de misitio2 como vemos en la imagen.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyXu0TWeqO9c22_Dh-5qQZKpQpSTqpn5Q2orCzihaqNuAU0XC3nSnJhHRPmb1hUjimBYCBRwcVm1b2s7hp2fskMMlOhHbi7OYXcyW2jxe8DY8b70Yqgd_IQRoBXCjTTOzieHwgvpKO8Dk/s1600/apache17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyXu0TWeqO9c22_Dh-5qQZKpQpSTqpn5Q2orCzihaqNuAU0XC3nSnJhHRPmb1hUjimBYCBRwcVm1b2s7hp2fskMMlOhHbi7OYXcyW2jxe8DY8b70Yqgd_IQRoBXCjTTOzieHwgvpKO8Dk/s1600/apache17.png" /></a></div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com0tag:blogger.com,1999:blog-2473427578716688052.post-12298304957814365382015-02-24T09:00:00.001-08:002015-02-24T09:23:44.554-08:00Como instalar Wordpress desde 0 en Local con Debian<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigdiTvh9ise9B0LMXvbCHiqKUVWevJe2koLCQ-Jt9067Ft2oMt8Bk_WG1o37GjztcVLJ7WMtZm-KDD6LVI22kfZ2be5aHnruhyphenhyphen8t1mY6bACuNSjBPWFhslCMfWJtvN7kfDTOAnHIHDBOE/s1600/wordpress-logo-stacked-rgb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigdiTvh9ise9B0LMXvbCHiqKUVWevJe2koLCQ-Jt9067Ft2oMt8Bk_WG1o37GjztcVLJ7WMtZm-KDD6LVI22kfZ2be5aHnruhyphenhyphen8t1mY6bACuNSjBPWFhslCMfWJtvN7kfDTOAnHIHDBOE/s1600/wordpress-logo-stacked-rgb.png" /></a></div>
<br />
<div style="text-align: justify;">
En esta práctica vamos a ver cómo realizar una instalación básica de <b>Wordpress en Debian</b> con una base de datos <b>Mysql</b>. Hay que tener en cuenta que es una instalación básica y que no vamos a tocar nada avanzado, pero al final de este tutorial tendrás instalado tu Wordpress en local en tu servidor Debian y que podrás acceder por el navegador a tu sitio en Wordpress.</div>
<br />
<h2 style="text-align: left;">
Previo a la instalación</h2>
<div style="text-align: justify;">
Antes de realizar la instalación debemos tener en cuenta que voy a hacer uso de una <b>máquina virtual Debian</b>, donde voy a crear e instalar mi sitio en Wordpress y que a través del navegador nos vamos a conectar a esta máquina virtual.</div>
<div style="text-align: justify;">
<br /></div>
<h3 style="text-align: justify;">
Configuración de la máquina virtual</h3>
<div>
<div style="text-align: justify;">
La máquina virtual Debian tendrá una interfaz y una configuración de red en Adaptador Puente, cuya red estará configurada en DHCP.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<h2 style="text-align: justify;">
Instalación de Wordpress en Debian Paso a Paso</h2>
<div>
<ol style="text-align: left;">
<li><a href="#1">Instalación de Servicios previos</a></li>
<li><a href="#2">Configuración Apache</a></li>
<li><a href="#3">Descargar y desempaquetar el archivo de Wordpress</a></li>
<li><a href="#4">Habilitar nuestro sitio Wordpress</a></li>
<li><a href="#5">Crear la base de datos en Mysql</a></li>
<li><a href="#6">Instalación de Wordpress</a></li>
</ol>
</div>
<h3 style="text-align: justify;">
</h3>
<h3 style="text-align: justify;">
<a href="https://www.blogger.com/null" name="1"></a>
1) Instalación de servicios previos</h3>
<div style="text-align: justify;">
Para la <b>instalación</b> de Wordpress debemos instalar lo siguiente:</div>
<br />
<blockquote class="tr_bq">
apt-get update<br />
apt-get install ssh<br />
apt-get install apache2 libapache2-mod-php5 php5 php5-curl php5-intl php5-mcrypt php5-mysql php5-sqlite php5-xmlrpc mysql-server mysql-client</blockquote>
<div style="text-align: justify;">
Durante este proceso nos saldrá la siguiente ventana donde tenemos que darle una contraseña al usuario root de mysql...</div>
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAQIWBiMYYw1rOvwj9taZPuvCk6I-5Ao1kNSgeOEvFrsQ19kgsCDDAPCusSIidt0WCJ_oXPxeV-PB_0fXgsUyJWm4Ftu8czmvQpCcsoBpz361vnJPL3nZ37cuyJITkSoJsJHyriGRWS8c/s1600/wp1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAQIWBiMYYw1rOvwj9taZPuvCk6I-5Ao1kNSgeOEvFrsQ19kgsCDDAPCusSIidt0WCJ_oXPxeV-PB_0fXgsUyJWm4Ftu8czmvQpCcsoBpz361vnJPL3nZ37cuyJITkSoJsJHyriGRWS8c/s1600/wp1.png" /></a></div>
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
<a href="https://www.blogger.com/null" name="2"></a>
2) Configuración de Apache</h3>
<div style="text-align: justify;">
Ahora nos vamos a mover a los archivos de <b>configuración de Apache</b> /etc/apache2/ donde vamos a irnos a /etc/apache2/sites-available y vamos a copiar el archivo default en wordpress.</div>
<br />
<blockquote class="tr_bq">
cd /etc/apache2/sites-available/<br />
cp default wordpress<br />
nano wordpress</blockquote>
<div style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6FKreW7-h2-Cv9W7eHtKY9PqqANiWArXQGv3bF1XOcbLmNoVVY2ogqqyGq_Vv8AGk-ciAiaAnm4hYf1O1eMNN_ndrm_-ou0gl9WqthVQXvUZRhM3J5kJ3TNRT_cts0NcocBxLwIpk-OY/s1600/wp2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6FKreW7-h2-Cv9W7eHtKY9PqqANiWArXQGv3bF1XOcbLmNoVVY2ogqqyGq_Vv8AGk-ciAiaAnm4hYf1O1eMNN_ndrm_-ou0gl9WqthVQXvUZRhM3J5kJ3TNRT_cts0NcocBxLwIpk-OY/s1600/wp2.png" /></a></div>
<div style="text-align: justify;">
</div>
<ol>
<li style="text-align: justify;">IP:Puerto | En mi caso 192.168.128.213:80 (IP de mi máquina virtual Debian)</li>
<li style="text-align: justify;">Correo que quieras poner de administrador</li>
<li style="text-align: justify;">ServerName | nombre que quieras ponerle a tu sitio wordpress</li>
<li style="text-align: justify;">Directorio donde se instalará wordpress</li>
<li style="text-align: justify;">Mismo que el punto 4</li>
<li style="text-align: justify;">Dirección del archivo log donde podremos ver posibles errores de nuestro servidor Apache.</li>
</ol>
<h3 style="text-align: justify;">
</h3>
<h3 style="text-align: justify;">
</h3>
<h3 style="text-align: justify;">
<a href="https://www.blogger.com/null" name="3"></a>
3) Descargar y desempaquetar de instalación de Wordpress</h3>
<div style="text-align: justify;">
Ahora vamos a pasar el archivo de instalación de Wordpress, descargado desde la página oficial de <a href="https://es.wordpress.org/" target="_blank">Wordpress</a> y que en mi caso está comprimida en formato zip, a la ruta /var/www/ como podemos ver en la imagen.</div>
<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDSDDUFxkAwaYMAZzTjH78xjTlsIXhglbP5TcJ0_zXcPo_ZCWFCdlnlZ6tIMWh32KPVf2rqOwI9-2bmZ23nk6uBSpaMQ6kxo8cTWn5Ei-WzTaBYCe7h55iBXgrUggBwQvkyIYh7bKlSfc/s1600/wp4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDSDDUFxkAwaYMAZzTjH78xjTlsIXhglbP5TcJ0_zXcPo_ZCWFCdlnlZ6tIMWh32KPVf2rqOwI9-2bmZ23nk6uBSpaMQ6kxo8cTWn5Ei-WzTaBYCe7h55iBXgrUggBwQvkyIYh7bKlSfc/s1600/wp4.png" /></a></div>
<br />
Si en /var/www/ tenemos otra carpeta con el nombre wordpress, la eliminaremos con:<br />
<blockquote class="tr_bq">
rmdir wordpress</blockquote>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
A continuación vamos a descomprimir el archivo de wordpress en /var/www/. Como en mi caso se trata de un archivo comprimido en zip, vamos a instalar unzip para posteriormente descomprimirlo:</div>
<br />
<blockquote class="tr_bq">
apt-get install unzip<br />
unzip wordpres.x.x.x.zip</blockquote>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi66nfPPLcsq9Eyurr2wZADffutXzcEplRrtq5aa9xSEf6Rqxaz4UU8Ld3WQQEJclPoJeDd00e6s91e1m7yE5TUaCXG4lsqGTcKn6io3dwYcHRmAN4EqFdDKf0z1EZi1xqAMWfn3b0mIVk/s1600/wp5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi66nfPPLcsq9Eyurr2wZADffutXzcEplRrtq5aa9xSEf6Rqxaz4UU8Ld3WQQEJclPoJeDd00e6s91e1m7yE5TUaCXG4lsqGTcKn6io3dwYcHRmAN4EqFdDKf0z1EZi1xqAMWfn3b0mIVk/s1600/wp5.png" /></a><br />
<br />
<h3 style="text-align: left;">
<a href="https://www.blogger.com/null" name="4"></a>
4) Habilitar nuestro sitio Wordpress</h3>
Ahora vamos a <b>habilitar nuestro sitio Wordpress</b> y a reiniciar el servidor:<br />
<br />
<blockquote class="tr_bq">
a2ensite wordpress<br />
a2dissite default<br />
service apache2 restart</blockquote>
<br />
<h3 style="text-align: left;">
<a href="https://www.blogger.com/null" name="5"></a>
5) Crear la base de datos en Mysql</h3>
<div style="text-align: justify;">
Ahora nos conectamos a mysql y creamos la base de datos y el usuario de mysql para wordpress, para eso primero nos conectamos a mysql con <b>mysql -u root -p</b> nos pedirá la contraseña y crearemos una base de datos como podemos ver en la siguiente imagen, donde vamos a crear la base de datos wordpress con el usuario wordpress y la contraseña wordpress...</div>
<blockquote class="tr_bq">
create database wordpress;<br />
grant all on wordpress.* to wordpress@localhost identified by 'wordpress';<br />
flush privileges;</blockquote>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNkoFw1SA0Estx_1TgS6SHu2uA4-V79W7ZPUvygtk4WdLZzLqmm6D7J-CI7bhjyG7V_83qKwsUpjzTwTlfII8d5IQiEvLq6bwpVPuZvLk9yo9DRQ_GKJqFph9D9xsCBQ0tWcAhRtpe2nI/s1600/wp7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNkoFw1SA0Estx_1TgS6SHu2uA4-V79W7ZPUvygtk4WdLZzLqmm6D7J-CI7bhjyG7V_83qKwsUpjzTwTlfII8d5IQiEvLq6bwpVPuZvLk9yo9DRQ_GKJqFph9D9xsCBQ0tWcAhRtpe2nI/s1600/wp7.png" /></a><br />
<br />
<h3 style="text-align: left;">
<a href="https://www.blogger.com/null" name="6"></a>
6) Instalación de Wordpress</h3>
<div style="text-align: justify;">
Ahora nos vamos a ir al navegador, en mi caso en mi máquina local, ya que estoy haciendo uso de la máquina virtual Debian donde he instalado y configurado todo lo anterior. Vamos a introducir la IP de la máquina Debian, en mi caso 192.168.128.213 y vemos que nos saldrá una pantalla como la siguiente:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmakah_rksyH5pkaf0hv7CpHTi2t7h-MQIjsacmZaKM87V2RnTJBDMZ4pHjibHDes5xHjIusi0PmG_6H70IOThloFxu7Ssrdq0GlRNr_Sgt_MdeSXfFL_5YIFOV3fp1LlGYxnnOi7ApJE/s1600/wp6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmakah_rksyH5pkaf0hv7CpHTi2t7h-MQIjsacmZaKM87V2RnTJBDMZ4pHjibHDes5xHjIusi0PmG_6H70IOThloFxu7Ssrdq0GlRNr_Sgt_MdeSXfFL_5YIFOV3fp1LlGYxnnOi7ApJE/s1600/wp6.png" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En esta primera pantalla haremos clic en "Let's go!"</div>
<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/AVvXsEiBof5CiTY45sxW1k2TOhe_haC1Vamc6N8G3ThFNZU0OzEEpdDfML1UOYHd5WKdyx_46r17laZbfXmw2Bfi8zBCmtBU_Vmcx6UNKoXotu4j0H1XGvqDk58sokroF8kJ8P0wqJDbdAC-19U/s1600/wp8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBof5CiTY45sxW1k2TOhe_haC1Vamc6N8G3ThFNZU0OzEEpdDfML1UOYHd5WKdyx_46r17laZbfXmw2Bfi8zBCmtBU_Vmcx6UNKoXotu4j0H1XGvqDk58sokroF8kJ8P0wqJDbdAC-19U/s1600/wp8.png" /></a></div>
<br />
A continuación vamos a introducir la información de nuestra base de datos creada anteriormente. y en la que si introducimos correctamente, nos saldrá la siguiente pantalla donde nos indica que creemos en nuestra carpeta wordpress el archivo wp-config.php con la información que nos facilita.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUW9ZtyY2t-eTFJyFRyXAZmulFHi1LHeAVHPtQ7XHAXtJFPpQn7M_xyYA7AgylZ42A52taJqCIXesdcffw0N7nuRjLtKZNFbiGm9pYtya-lbXOWFu1X80GYuGDhAn9Jkc-_5ppmDFgTek/s1600/wp9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUW9ZtyY2t-eTFJyFRyXAZmulFHi1LHeAVHPtQ7XHAXtJFPpQn7M_xyYA7AgylZ42A52taJqCIXesdcffw0N7nuRjLtKZNFbiGm9pYtya-lbXOWFu1X80GYuGDhAn9Jkc-_5ppmDFgTek/s1600/wp9.png" height="484" width="640" /></a></div>
<br />
Así que nuevamente nos vamos a nuestra máquina Debian y en nuestra carpeta /var/www/wordpress vamos a crear el archivo wp-config.php con el contenido copiado de la pantalla anterior.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmoMc_e-Z3hYUSMDefPynzgWK4Hx-xStqp3LlpwVied5G6d7BrtBdDUSTov7CWWjjfwEF1G_zo2rWJYXL_LxJVwwoXWFoBzeixEOp5W-B4hF2cGnNywIYP3Ru9P4EjIIsynSJPu9r4KFo/s1600/wp11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmoMc_e-Z3hYUSMDefPynzgWK4Hx-xStqp3LlpwVied5G6d7BrtBdDUSTov7CWWjjfwEF1G_zo2rWJYXL_LxJVwwoXWFoBzeixEOp5W-B4hF2cGnNywIYP3Ru9P4EjIIsynSJPu9r4KFo/s1600/wp11.png" /></a></div>
<br />
Hacemos clic en "Run the Install" en la instalación de Wordpress y listo.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix_vue7OjOfbtm4tsBvAGqZy8HZ9sQZLnzpWBfx4HiWtfSsmSnVLm73aZgc4cZljPFr-_YtF8GtbuSI_cjNEMgyvvD2rANKwtCG57nWmuhg0j6i7ZL8hyJoVyWKDyJpYm649Ivexck57A/s1600/wp12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix_vue7OjOfbtm4tsBvAGqZy8HZ9sQZLnzpWBfx4HiWtfSsmSnVLm73aZgc4cZljPFr-_YtF8GtbuSI_cjNEMgyvvD2rANKwtCG57nWmuhg0j6i7ZL8hyJoVyWKDyJpYm649Ivexck57A/s1600/wp12.png" /></a></div>
<br />
Ahora vamos a introducir un nombre para nuestro sitio, un nombre de usuario y una contraseña, seguido de un e-mail y una pestaña donde permitimos que los buscadores rastreen nuestro sitio.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi07eaVz82tQb2cFV_UESiLUKRaTvjNlpBJCVPQsjYNufBZBwSIojLn4TwCT6Oojz2BKR46JQ08j_gsy5VsUswROnJJb3ZWIV0fB3JLnwxGB6-edLgAOiwaQ6VRLAGlBhC4uSe_pD7nZqw/s1600/wp13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi07eaVz82tQb2cFV_UESiLUKRaTvjNlpBJCVPQsjYNufBZBwSIojLn4TwCT6Oojz2BKR46JQ08j_gsy5VsUswROnJJb3ZWIV0fB3JLnwxGB6-edLgAOiwaQ6VRLAGlBhC4uSe_pD7nZqw/s1600/wp13.png" /></a></div>
<br />
<div style="text-align: justify;">
Por último nos vamos a loguear con nuestro usuario y contraseña y ya podremos acceder a nuestro panel de administrador de wordpress, y si escribimos nuestra IP (192.168.128.213) accederemos a nuestro sitio Wordpress.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheiCeGJ5_m0a98r4_GVgtQ_9DIcahfauAjcOaakjd16-PPTHDBr2cgKYGClbkorOsBzqHpKHDBInWLUwZrs7nLHS2BylLpPR9KAJcUtgPaebGaH5SEZOmhYSGF0C6Hii2OBa4k1LLHTnM/s1600/wpfin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheiCeGJ5_m0a98r4_GVgtQ_9DIcahfauAjcOaakjd16-PPTHDBr2cgKYGClbkorOsBzqHpKHDBInWLUwZrs7nLHS2BylLpPR9KAJcUtgPaebGaH5SEZOmhYSGF0C6Hii2OBa4k1LLHTnM/s1600/wpfin.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: justify;">
Si tienes alguna duda, puedes dejar un comentario, te responderé lo antes posible =D.</div>
</div>
gallardolandhttp://www.blogger.com/profile/12397455306476148889noreply@blogger.com3