<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ubicuos.com &#187; General</title>
	<atom:link href="http://www.ubicuos.com/temas/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ubicuos.com</link>
	<description>Tecnología,Programación, Proyectos, Ciencia y Empresas</description>
	<lastBuildDate>Tue, 06 Sep 2011 01:01:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Algoritmos Genéticos</title>
		<link>http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/</link>
		<comments>http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 01:00:46 +0000</pubDate>
		<dc:creator>fernandomt_08</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Cómputo Evolutivo]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[Algoritmos geneticos]]></category>
		<category><![CDATA[computo evolutivo]]></category>
		<category><![CDATA[inteligencia articial]]></category>
		<category><![CDATA[optimizacion]]></category>
		<category><![CDATA[optimizacion numerica]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2805</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Como estudiante de Ingeniería en Sistema Computacionales he encontrado una gran pasión por el tema de Algoritmos Evolutivos, hace poco tiempo leí una serie de libros relacionados con el tema y tomé nota de esas lecturas. Aquí les presento esas notas con referencias completas de los libros consultados, en [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F09%2F05%2Falgoritmos-geneticos%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F09%2F05%2Falgoritmos-geneticos%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<table>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
<p style="text-align: center;"><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/karger_group_banner/" rel="attachment wp-att-2856"><img class="aligncenter size-full wp-image-2856" title="Karger_Group_Banner" src="http://www.ubicuos.com/wp-content/uploads/2011/09/Karger_Group_Banner.jpg" alt="" width="499" height="65" /></a></p>
<p style="text-align: center;">Como estudiante de Ingeniería en Sistema Computacionales he encontrado una gran pasión por el tema de Algoritmos Evolutivos, hace poco tiempo leí una serie de libros relacionados con el tema y tomé nota de esas lecturas. Aquí les presento esas notas con referencias completas de los libros consultados, en esta ocasión el post es enfocado al paradigma más conocido dentro de los algoritmos evolutivos: <strong>Algoritmo Genéticos.</strong><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/evolvev2df2003621/" rel="attachment wp-att-2806"><img class="size-full wp-image-2806 aligncenter" title="evolveV2DF2003621" src="http://www.ubicuos.com/wp-content/uploads/2011/09/evolveV2DF2003621.gif" alt="" width="529" height="249" /></a></p>
<p><strong>Introducción</strong></p>
<p>Durante los últimos treinta años ha crecido el interés en sistemas basados en los principios de la evolución y herencia naturales, para resolver cierto tipo de problemas, dichos sistemas mantienen una población de soluciones potenciales, tienen algún proceso de selección basado en la aptitud de los individuos y algunos operadores &#8220;genéticos&#8221;. Las Estrategias Evolutivas son un tipo de esos sistemas i.e., algoritmos que imitan los principios de evolución natural para problemas de optimización por parámetros. La programación evolutiva de Fogel es una técnica por búsqueda a través de un espacio de pequeñas máquinas de estados finitos. Otro tipo de sistemas basados en la evolución natural son los Algoritmos Genéticos de Hollman. En 1990 Koza propusó otro tipo de sistemas, la Programación Genética, para buscar el programa computacional más apto para resolver un problema en particular. [1, pp. 1].</p>
<p><strong>Orígenes</strong></p>
<p>Los algoritmos genéticos son una técnica de búsqueda y optimización basada en los principios de la genética y la selección natural.Un algoritmo genético mantiene una población de varios individuos que evolucionan a un estado, bajo reglas especificadas, para maximizar la “aptitud&#8221; (i.e., maximizar el costo de una función). [2]Los algoritmos genéticos únicamente maximizan, pero la minimización puede realizarse fácilmente utilizando el recíproco de la función maximizante (debe cuidarse, por supuesto, que el recíproco de la función no genere una división por cero) ,i.e. si el problema es minimizar una función <em>f</em> esto es equivalente a maximizar una función <em>g</em> donde <em>g = -f</em>:</p>
<p><img class="alignnone" src="http://www.codecogs.com/gif.latex?%5Ctextit%7Bmin%20f%28x%29%20=%20max%20g%28x%29%20=%20%20max%5C%7B%20-f%28x%29%5C%7D%7D" alt="" width="276" height="19" /></p>
<p>Una definición bastante completa de un algoritmo genético es la propuesta por J. Koza [3, pp. 819]:</p>
<blockquote><p>Es un algoritmo matemático altamente paralelo que transforma un conjunto de objetos matemáticos individuales con respecto al tiempo usando operaciones modeladas de acuerdo al principio Darwiniano de reproducción y supervivencia del más apto, y tras haberse presentado de forma natural una serie de operaciones genéticas de entre las que destaca la recombinación sexual. Cada uno de estos objetos matemáticos suele ser una cadena de caractéres (letras o números) de longitud fija que se ajusta al modelo de las cadenas de cromosomas, y se les asocia con una cierta funci\&#8217;on matem\&#8217;atica que refleja su aptitud.</p>
<p>&nbsp;</p></blockquote>
<p>Estos algoritmos son muy probablemente los tipo de algoritmos evolutivos más ampliamente conocidos al día de hoy, recibiendo notable atención en todo el mundo. Probablemente el primer predecesor de éstos algoritmos surgió del trabajo de Fraser, un biólogo quien quería simular el proceso de evolución, con especial énfasis en la interacción de la epistasis(Un fenómeno, en el cual, las características de un gen son modificados por uno ó más genes) con selección. Trabajos similares a los de Fraser fueron resumidos por Goldberg [4, pp. 89-103].</p>
<p>Sin embargo, los algoritmos genéticos en su forma usual fueron desarrollados por Holland, científico computólogo y psicólogo de la Universidad de Michigan. En 1975 él resumió su trabajo en “adaptive and reproductive plans” un libro que sirve como el punto inicial de las primeras aplicaciones e implementaciones de algoritmos genéticos [4]. Mientras los biólogos intentaban simular evolución usando algoritmos genéticos, Holland estudiaba como éste tipo de algoritmos podrían ser combinados con problemas que ocurren en campos de aplicación práctica [5, pp. 106-107].</p>
<p>Los AG&#8217;s toman prestado cierto vocabulario de la genética. Se habla de individuos (o genotipos) en una población, algunas veces esos individuos son llamados cadenas o cromosomas, esto podría ser un poco confuso, para aclararlo veamos la siguiente explicación:</p>
<p>Cada célula de todo organismo de una especie dada acarrea un cierto número de cromosomas ( el hombre, por ejemplo, tiene 46 de ellos), sin embargo, aquí se hablará de individuos con un solo cromosoma, i.e. cromosomas haploides. Los cromosomas a su vez están formados de genes (también conocidos como características, caracteres ó decodificadores) organizados en sucesión lineal; cada gen controla la herencia de una o más características. Los genes de ciertas características esta colocados en ciertos lugares del cromosoma, a esta posición se le conoce como loci(posición dentro de la cadena).</p>
<p>Cada característica de los individuos (como el color de su cabello) puede manifestarse de diferentes maneras, se dice entonces que el gen puede estar en varios estados, llamados alelos.</p>
<p>Cada genotipo(un único cromosoma) representaría una posible solución a un problema, un proceso de evolución se ejecuta sobre una población de cromosomas correspondientes a una búsqueda a través de un espacio de soluciones potenciales. Por lo que una búsqueda requiere balancear dos objetivos (aparentemente conflictivos): explotar las mejores soluciones y explorar el espacio de búsqueda [6 pp. 61-73].</p>
<p><strong>El Algoritmo Genético Canónico</strong></p>
<p>El AG comienza, como cualquier otra técnica de optimización, definiendo las variables de optimización, la función mediante la cual se evaluarán las variables y el costo. Éste termina también como otros algoritmos de optimización, haciendo pruebas de convergencia. En la fase intermedia, sin embargo, el algoritmo es un poco diferente. En la figura 1 se muestra una ruta a través de los componentes de un algoritmo genético “canónico” o estándar [2, pp. 52].</p>
<div id="attachment_2827" class="wp-caption aligncenter" style="width: 441px"><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/ag_alg/" rel="attachment wp-att-2827"><img class="size-full wp-image-2827" title="AG_Alg" src="http://www.ubicuos.com/wp-content/uploads/2011/09/AG_Alg.png" alt="Estructura general de un algoritmo genético" width="431" height="548" /></a><p class="wp-caption-text">Estructura general de un algoritmo genético</p></div>
<p>El siguiente paso es generar una población inicial compuesta por cadenas ó cromosomas de longitud <em>L</em>, generalmente ésta se inicia aleatoriamente, diversas formas de inicializar una población pueden encontrarse en [3]. Cada miembro de dicha población es representado de acuerdo al problema, pero podemos encontrar tres tipos de representaciones comunes [7]:</p>
<ul>
<li><strong>Representación Binaria</strong>: Cada gen es un valor de 0 ó 1.</li>
<li><strong>Representación Entera</strong>: Cada gen es un valor entero.</li>
<li><strong>Representación Real</strong>: Cada gen es un valor real.</li>
</ul>
<p><strong>Operadores Genéticos</strong></p>
<p>Después de crear la población inicial, cada cromosoma es evaluado y se le asigna un valor de aptitud. Es importante distinguir entre lo que se conoce como una función de evaluación y una función aptitud; la función de evaluación, o función objetivo, proporciona una medida del desempeño con respecto a un conjunto de parámetros. La función aptitud transforma esa medición en asignación de oportunidades de reproducción para el individuo. La evaluación de una cadena es independiente de la evaluación de cualquier otra cadena. La aptitud, sin embargo, es siempre definida con respecto a otros miembros de la población actual.</p>
<p><strong>Selección</strong></p>
<p>La selección es la etapa del algoritmo genético en la cual individuos o cromosomas se eligen de una población para su posterior reproducción (recombinación y/o cruce).</p>
<p>Fundamentalmente, pueden considerarse 3 esquemas de selección, aunque existe múltiples esquemas distintos a estos, así como innumerables combinaciones de aspectos de estos tres mecanismos fundamentales. A continuación se describe cada uno de ellos:</p>
<p><em><strong>Ruleta o Seleccion proporcional</strong></em>: Con este método la probabilidad que tiene un cromosoma de reproducirse es proporcional a su valor de función de evaluación, es decir, a su adaptación. Una vez calculadas estas probabilidades, la selección de los individuos para reproducirse es aleatoria según estos valores. El algoritmo propuesto por Goldberg(1989) es el siguiente:</p>
<ul>
<li><strong>Construcción de la ruleta: </strong>Calcular el valor de aptitud <em>eval(u)</em> <img src="http://www.codecogs.com/gif.latex?eval%28$u_%7Bi%7D$%29%7D" alt="http://www.codecogs.com/gif.latex?eval($u_{i}$)}" /> para cada cromosoma de la población actual <img src="http://www.codecogs.com/gif.latex?u_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?u_{i}" /> (i=1, … , tamp), donde <em>tamp</em> corresponde al tamaño de la población.</li>
<li><strong>Calcular el valor total de la aptitud de la población</strong></li>
</ul>
<p style="text-align: center;">                                                                               <img class="aligncenter" src="http://www.codecogs.com/gif.latex?%5Ctextit%7BF%20=%20%7D$%5Csum_%7Bi=1%7D%5E%7Btamp%7Deval%28$u_%7Bi%7D$%29" alt="http://www.codecogs.com/gif.latex?\textit{F%20=%20}$\sum_{i=1}^{tamp}eval($u_{i}$)" width="150" height="22" /></p>
<ul>
<li><strong>Calcular la probabilidad de selección <img src="http://www.codecogs.com/gif.latex?$p_%7Bi%7D$" alt="http://www.codecogs.com/gif.latex?$p_{i}$" /> de cada cromosoma </strong><img src="http://www.codecogs.com/gif.latex?u_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?u_{i}" /></li>
</ul>
<p style="text-align: center;">  <img class="aligncenter" src="http://www.codecogs.com/gif.latex?p_%7Bi%7D%20=%20%5Cfrac%7Bu_%7Bi%7D%7D%7BF%7D" alt="http://www.codecogs.com/gif.latex?p_{i}%20=%20\frac{u_{i}}{F}" width="57" height="33" /></p>
<ul>
<li>La ruleta gira <em>tamp</em> veces, cada vez seleccionamos un cromosoma para una nueva población de la siguiente forma:</li>
<ul>
<li>Generar un número aleatorio flotante <em>r</em> del rango [0 ... 1].</li>
<li>Si <img src="http://www.codecogs.com/gif.latex?r%20%3Cq_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?r%20%3Cq_{i}" />  entonces seleccionar el primer cromosoma<img src="http://www.codecogs.com/gif.latex?u_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?u_{i}" /> , en otro caso seleccionar el i-ésimo cromosoma <img src="http://www.codecogs.com/gif.latex?u_%7Bi%7D" alt="http://www.codecogs.com/gif.latex?u_{i}" /> <em>(2 ≤ i ≤ tamp)</em> tal que<img src="http://www.codecogs.com/gif.latex?q_%7Bi-1%7D%3C%20r%20%20%3C=%20q_%7Bi-1%7D" alt="http://www.codecogs.com/gif.latex?q_{i-1}%3C%20r%20%20%3C=%20q_{i-1}" /></li>
</ul>
</ul>
<p>&nbsp;</p>
<p>Obviamente con este algoritmo, algunos cromosomas serán elegidos en distintas ocasiones.</p>
<p><strong>Selección por ranking</strong>: Desarrollado por Whitley en 1989, el método consiste en calcular las probabilidades de reproducción atendiendo a la ordenación de la población por el valor de aptitud en vez de simplemente el valor de la función, la aptitud esta definida por:<img src="http://www.codecogs.com/gif.latex?%5Cfrac%7Bf_%7Bi%7D%7D%7B%5Cbar%20f%7D" alt="http://www.codecogs.com/gif.latex?\frac{f_{i}}{\bar%20f}" />, donde <img src="http://www.codecogs.com/gif.latex?f_%7Bi%7D%7D" alt="http://www.codecogs.com/gif.latex?f_{i}}" />  es la evaluación asociada con el cromosoma <em>i</em> , y   <img src="http://www.codecogs.com/gif.latex?%5Cbar%20f" alt="http://www.codecogs.com/gif.latex?\bar%20f" /> es la evaluación promedio de todos los cromosomas en la población [8]. Una vez realizada esta evaluación, se simula un proceso de selección natural, los individuos son acomodados de acuerdo a la función de aptitud, en esta etapa los mejores individuos son elegidos de la población actual y el resto son eliminados. Esta selección natural ocurre cada generación o iteración del algoritmo. La decisión del número de cromosomas elegidos es algo arbitrario, sin embargo, dejando que solo unos pocos cromosomas sobrevivan para la siguiente generación limita los genes disponibles para producir descendientes, almacenando demasiados cromosomas permite que los cromosomas con baja aptitud reproduzcan sus características en la siguiente generación.</p>
<p>&nbsp;</p>
<p><strong>Selección por torneo</strong>: Un esquema ideal de selección debería ser simple de codificar, y eficiente para arquitecturas paralelas y no paralelas, más aún, un esquema de selección debería ser capaz de ajustar su influencia de selección acorde a su dominio. El uso de selección por torneo ha ido en incremento debido a que satisface los criterios anteriores[9]. La idea es simple, se elige un número de individuos de una población(normalmente 2, torneo binario), se selecciona el mejor individuo de este grupo para un nuevo procesamiento genético, la selección se realiza tantas veces como se desee (por lo general hasta que a partir de ellos, sea posible realizar el proceso de apareamiento). El método puede aplicarse con reemplazo o sin reemplazo, en el primer caso los individuos seleccionados del actual torneo son candidatos para participar en otro torneos, por otro lado en un torneo sin reemplazo los individuos son seleccionados una sola vez.</p>
<p>Una comparación de complejidad entre estos tres esquemas de selección puede verse en [10].</p>
<p>&nbsp;</p>
<p><strong>Operador Mutación</strong></p>
<p><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/mutate/" rel="attachment wp-att-2851"><img class="aligncenter size-full wp-image-2851" title="MUTATE" src="http://www.ubicuos.com/wp-content/uploads/2011/09/MUTATE.gif" alt="" width="398" height="203" /></a></p>
<p>El operador de mutación fue introducido por Holland como un operador que ocasionalmente cambia bits individuales de cromosomas invirtiéndolos, la probabilidad de mutación <img src="http://www.codecogs.com/gif.latex?$p_%7Bm%7D%20%5Cepsilon%20[0,1]$" alt="http://www.codecogs.com/gif.latex?$p_{m}%20\epsilon%20[0,1]$" />  por bit es muy pequeña en un AG. Algunos valores comúnes son: <img src="http://www.codecogs.com/gif.latex?$p_%7Bm%7D%20=%200.001,%20p_%7Bm%7D%20=%200.01$" alt="http://www.codecogs.com/gif.latex?$p_{m}%20=%200.001,%20p_{m}%20=%200.01$" /> y <img src="http://www.codecogs.com/gif.latex?%20$p_%7Bm%7D%20%5Cepsilon[0.005,%200.01]$" alt="http://www.codecogs.com/gif.latex?%20$p_{m}%20\epsilon[0.005,%200.01]$" />. En últimos estudios, algunos investigadores formularon algunas reglas heurísticas indicando que el rendimiento es cada vez mayor tanto para poblaciones grandes (tamp &gt; 200) combinadas con una probabilidad de mutación grande <img src="http://www.codecogs.com/gif.latex?%20%28p_%7Bm%7D%20%3E%200.05%29" alt="http://www.codecogs.com/gif.latex?%20(p_{m}%20%3E%200.05)" /> como también para poblaciones de pequeño tamaño <img src="http://www.codecogs.com/gif.latex?%20%28tamp%20%3C%2020%29" alt="http://www.codecogs.com/gif.latex?%20(tamp%20%3C%2020)" /> combinadas con una probabilidad de mutación pequeña <img src="http://www.codecogs.com/gif.latex?%28$p_%7Bm%7D%20%3C%200.002$%29" alt="http://www.codecogs.com/gif.latex?($p_{m}%20%3C%200.002$)" />.</p>
<p>Valores pequeños de mutaciones, como Holland indica, garantiza que un individuo producido por mutación no difiera demasiado genéticamente de su antecesor. Esta declaración es cierta para el espacio de genotipos, pero como Bäck señala, solo es compatible con una codificación estándar(binaria) no para una representación con números reales [11].</p>
<p>El gen a mutar es seleccionado aleatoriamente del número total de genes (<em>tamp * L</em>) de la población actual.</p>
<p>&nbsp;</p>
<p><strong>Recombinación o Cruce</strong></p>
<p>&nbsp;</p>
<p>La recombinación es considerado como el operador más importante de los algoritmos genéticos. La idea es que segmentos útiles de diferentes padres podrían ser combinadas con el fin de dar a un nuevo individuo los beneficios de combinaciones de bits de ambos padres. De esta forma, más y más segmentos de aptitud alta se esperan que emergan, finalmente llegando a una total solución [5, pp. 97-106].</p>
<p>La recombinación es claramente un operador sexual(necesita dos cromosomas o individuos para llevarse a cabo) que con una probabilidad <img src="http://www.codecogs.com/gif.latex?$p_%7Bc%7D$" alt="http://www.codecogs.com/gif.latex?$p_{c}$" />selecciona dos individuos padres de la población, los recombina para formar dos nuevos individuos y descarta uno de los resultantes.</p>
<p>Valores comunes de <img src="http://www.codecogs.com/gif.latex?$p_%7Bc%7D$" alt="http://www.codecogs.com/gif.latex?$p_{c}$" /> son los propuestos por De Jong(1975) con <img src="http://www.codecogs.com/gif.latex?$p_%7Bc%7D$%20=%200.6" alt="http://www.codecogs.com/gif.latex?$p_{c}$%20=%200.6" />  y J.J Grefenstette(1985) con una <img src="http://www.codecogs.com/gif.latex?$p_%7Bc%7D$%20=%200.95" alt="http://www.codecogs.com/gif.latex?$p_{c}$%20=%200.95" />.</p>
<p>El operador de cruce permite realizar una exploración de toda la información almacenada hasta el momento en la población y combinarla para crear mejores individuos.</p>
<p>El tradicional método de cruce propuesto por Holland se conoce como <em>one-point crossover</em>:</p>
<p>Se elige una posición de cruce <img src="http://www.codecogs.com/gif.latex?%5Cchi%20%5Cepsilon" alt="http://www.codecogs.com/gif.latex?\chi%20\epsilon" /> <em>1, … , L-1</em> dentro de la cadena de bits al azar y se intercambian los bits a la derecha de esa posición entre ambos individuos. Sin embargo, éste método parece ser claramente inferior a los otros métodos con respecto al desempeño de los resultados.</p>
<p><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/cross0/" rel="attachment wp-att-2852"><img class="aligncenter size-full wp-image-2852" title="CROSS0" src="http://www.ubicuos.com/wp-content/uploads/2011/09/CROSS0.gif" alt="" width="317" height="299" /></a></p>
<p><strong>Cruce de n puntos</strong>: Es una generalización del método anterior. Se seleccionan varias posiciones <em>(n)</em> en las cadenas de los progenitores y se intercambian los genes a ambos lados de estas posiciones.</p>
<p><strong>Cruce Uniforme</strong>: Es radicalmente diferente a la técnica de un punto, cada gen de los descendientes es creado copiando el correspondiente gen de uno o del otro padre, elegido de acuerdo a una máscara de cruce generada aleatoriamente. Cuando existe un 1 en la máscara de cruce, el gen es copiado del primer padre, y cuando la posición de la mascara contiene un 0, el gen es copiado del segundo padre. El proceso es repetido intercambiando a los padres para generar el segundo descendiente. Para cada par de padres se genera una máscara nueva, los descendientes por lo tanto, contienen una mezcla de genes de cada padre. El número de puntos de cruce efectivos no es fijo, pero la media podría ser <img src="http://www.codecogs.com/gif.latex?%5Cfrac%7BL%7D%7B2%7D" alt="http://www.codecogs.com/gif.latex?\frac{L}{2}" /> (donde <em>L</em>) es la longitud de los cromosomas).</p>
<p><a href="http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/uniform/" rel="attachment wp-att-2853"><img class="aligncenter size-full wp-image-2853" title="UNIFORM" src="http://www.ubicuos.com/wp-content/uploads/2011/09/UNIFORM.gif" alt="" width="326" height="249" /></a></p>
<p><strong>Cruce heurístico</strong>: Éste operador propuesto por Wright \cite {Wright}, es único debido a las siguientes razones:</p>
<ol>
<li>Utiliza valores de la función objetivo para determinar la dirección de la búsqueda</li>
<li>Produce únicamente un descendiente</li>
<li>Podría no producir ningún descendiente</li>
</ol>
<p>El operador genera un descendiente <img src="http://www.codecogs.com/gif.latex?$x_%7B3" alt="http://www.codecogs.com/gif.latex?$x_{3" /> de dos padres <img src="http://www.codecogs.com/gif.latex?$x_1" alt="http://www.codecogs.com/gif.latex?$x_1" /> y <img src="http://www.codecogs.com/gif.latex?$x_2" alt="http://www.codecogs.com/gif.latex?$x_2" /> de acuerdo siguiente regla:</p>
<p><img src="http://www.codecogs.com/gif.latex?x_%7B3%7D%20=%20r%20*%20%28x_%7B2%7D%20-x_%7B1%7D%29%20+x_%7B2%7D" alt="http://www.codecogs.com/gif.latex?x_{3}%20=%20r%20*%20(x_{2}%20-x_{1})%20+x_{2}" /></p>
<p>Donde  <em>r</em> es un número aleatorio entre 0 y 1, y el padre   <img src="http://www.codecogs.com/gif.latex?$x_2" alt="http://www.codecogs.com/gif.latex?$x_2" /> no es peor que <img src="http://www.codecogs.com/gif.latex?$x_1" alt="http://www.codecogs.com/gif.latex?$x_1" />, es decir, <img src="http://www.codecogs.com/gif.latex?f%28x_%7B2%7D%29%20%5Cleq%20f%28x_%7B1%7D%29" alt="http://www.codecogs.com/gif.latex?f(x_{2})%20\leq%20f(x_{1})" />  para problemas de minimización.</p>
<p>Es posible que el operador genere un descendiente no viable. En tal caso otro valor aleatorio es generado y otro descendiente creado, si después de <em>w</em> intentos una nueva solución viable no es encontrada, el operador no hace más intentos y no produce ningún descendiente.</p>
<p>Después de que el proceso de selección, mutación y recombinación está completo, la siguiente población puede ser evaluada; este proceso formará una generación o ciclo en la ejecución de un algoritmo genético.</p>
<p>En cuanto el criterio de parada, generalmente viene determinado por criterios a priori sencillos, como un número máximo de generaciones o un tiempo máximo de resolución, o más eficientemente por estrategias relacionadas con indicadores del estado de evolución de la población, como por la pérdida de diversidad dentro de la población o por no haber mejora en un cierto número de iteraciones, siendo por lo general una condición mixta lo más utilizado, es decir, limitar el tiempo de ejecución a un número de iteraciones y tener en cuenta algún indicador del estado de la población para considerar la convergencia antes de alcanzar tal limitación.</p>
<p>&nbsp;</p>
<p><strong>Hasta Aqui llega esta breve introducción, esperando a que los aliente a meterse más en este campo, para esto les recomiendo un <a href="http://delta.cs.cinvestav.mx/~ccoello/papers.html" target="_blank">gran sitio</a> del Dr. <a href="http://delta.cs.cinvestav.mx/~ccoello/vitaenew.pdf">Carlos Coello</a> actual investigador del CINVESTAV en el IPN y que resolvió algunas de mis dudas.</strong></p>
<p>De antemano me disculpo si por ahí se me fué alguna expresión mal, es dificil trabajar sin LaTeX directamente. Saludos!!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Bibliografía</strong>:</p>
<p>[1] Zbigniew Michalewicz. Genetic algorithms + data structures = evolution programs (3rd ed.).  Springer-Verlag, London, UK, 1996.<br />
[2] Randy L. Haupt and Sue Ellen Haupt. Practical Genetic Algorithms. Wiley-Interscience, 2004.<br />
[3] John R. Koza. Genetic Programming: On the Programming of Computers by Means of Natural Selection (Complex Adaptive Systems). The MIT Press, 1 edition, December 1992.<br />
[4] David E. Goldberg. Genetic Algorithms in Search, Optimization, and Machine Learning. Addison-Wesley Professional, 1 edition, January 1989.<br />
[5] John H. Holland. Adaptation in natural and artificial systems. MIT Press, Cambridge, MA, USA, 1992.<br />
[6] L.B. Booker. Improving Search in Genetic Algorithms. Morgan Kaufmann Publishers, 1987.<br />
[7] Rafael Caballero Fern ́ndez. Algoritmos gen ́ticos para la resoluci ́n de problemas de programación por metas entera. aplicación a la economía de la educación.<br />
[8] Darrell Whitley. A genetic algorithm tutorial. Statistics and Computing, 4(2), June 1994.<br />
[9] Brad L. Miller, Brad L. Miller, David E. Goldberg, and David E. Goldberg. Genetic algorithms, tournament selection, and the effects of noise. Complex Systems, 9, 1995.                                                                                                                                                                                                                [10]Thomas Bäck. Evolutionary Algorithms in Theory and Practice: Evolution Strategies, Evolutionary Programming, Genetic Algorithms. Oxford University Press, 1996.                                                                                                                                                                                                                               [11]Alden H. Wright. Genetic algorithms for real parameter optimization. In Foundations of genetic algorithms. Morgan Kaufmann, San Mateo, CA, 1991.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2011/09/05/algoritmos-geneticos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ser o no ser… ¿Software Libre o Privativo?</title>
		<link>http://www.ubicuos.com/2011/07/11/ser-o-no-ser%e2%80%a6-%c2%bfsoftware-libre-o-privativo/</link>
		<comments>http://www.ubicuos.com/2011/07/11/ser-o-no-ser%e2%80%a6-%c2%bfsoftware-libre-o-privativo/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 20:29:08 +0000</pubDate>
		<dc:creator>JRivero</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2795</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook ¿Qué es mejor software libre o privativo?. Muchas veces me han realizado esa cuestión y mi respuesta siempre ha sido similar y clara: “Es como la moda, usa lo que te acomoda”. Existen personas extremistas del lado Software Libre y Privativo con sus asertivos y validos comentarios, como son: [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2011/07/11/ser-o-no-ser%e2%80%a6-%c2%bfsoftware-libre-o-privativo/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F07%2F11%2Fser-o-no-ser%25e2%2580%25a6-%25c2%25bfsoftware-libre-o-privativo%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F07%2F11%2Fser-o-no-ser%25e2%2580%25a6-%25c2%25bfsoftware-libre-o-privativo%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div>
<p>¿Qué es mejor software libre o privativo?.</p>
<p>Muchas veces me han realizado esa cuestión y mi respuesta siempre ha sido similar y clara: “Es como la moda, usa lo que te acomoda”. Existen personas extremistas del lado Software Libre y Privativo con sus asertivos y validos comentarios, como son:</p>
<p><span id="more-2795"></span></p>
<p><strong>Software Libre</strong></p>
<ul>
<li>Puedes ver el código fuente y ver que no tiene código malicioso.</li>
<li>El software puedes modificarlo a tu gusto.</li>
<li>El libre y gratuito.</li>
<li>Miles de usuarios hacen modificaciones.</li>
<li>Existen pocos fallos de seguridad.</li>
<li>Es rápido y estable.</li>
</ul>
<p><strong>Software Privativo</strong></p>
<ul>
<li>Es fácil de usar y entender.</li>
<li>La mayoría de las veces tiene soporte técnico para cualquier problema.</li>
<li>Interfaz de usuario linda y sencilla.</li>
<li>Actualizaciones constantes.</li>
<li>Respaldados por una marca reconocida mundialmente.</li>
<li>Es compatible con los sistemas operativos más utilizados.</li>
<li>Es fácil de configurar e instalar.</li>
</ul>
<p>Aunque se que existen muchas más razones para ambos lados éstas son de las más comunes, ahora bien yo digo lo siguiente para cada una:</p>
<p><strong>Software Libre</strong></p>
<ul>
<li><span style="color: #ff0000;"><del>Puedes ver el código fuente y ver que no tiene código malicioso.</del></span> <strong>(Para un usuario común y corriente, e incluso un programador flojo o con prisa, no dedicara tiempo a estar bajando el código fuente y examinarlo exhaustivamente)</strong>.</li>
<li><span style="color: #ff0000;"><del>El software puedes modificarlo a tu gusto.</del></span> <strong>(Nuevamente, si no tienes conocimientos esto de nada te sirve, y aquellas que lo tiene, no tienen el tiempo o dedicación para hacerlo).</strong></li>
<li><span style="color: #ff0000;"><del>El libre y gratuito.</del></span> <strong>(Es libre claro, ¿Gratuito? en algunas ocasiones si es que no lo compras en una tienda “oficial” de discos piratas, lo mejor es descargarlo de internet, aunque gastas en DVD).</strong></li>
<li><span style="color: #ff0000;"><del>Miles de usuarios hacen modificaciones.</del> </span><strong>(Esto es cierto, pero pocas de ellas publican sus modificaciones o son actualizaciones que normalmente no te son de utilidad e instalarlas es otro inconveniente).</strong></li>
<li><span style="color: #ff0000;"><del>Existen pocos fallos de seguridad.</del> </span><strong>(Claro que existen pocos fallos, ya sea por la arquitectura del S.O. o el lenguaje del software, la seguridad de éste etc. Pero no es tanto que sea perfecto, existe varios motivos, entre ellos, aún no es tan popular como los demás y no es un objetivo viable, las variantes de lenguajes que dificultan sus bugs de seguridad, existen políticas de seguridad por defecto que ayudan, no hay los programas más comunes en Software Libre, eso quita más la posibilidad que sea objetivo de un pirata informático).</strong></li>
<li><span style="color: #ff0000;"><del>Es rápido y estable.</del></span> <strong>(Rápido si, ¿Estable? como cualquiera, quien no se molesta cuando sus X fallan sin razón y usuario común arréglalo ¿sin formatear?, o cuando está el clásico error: Segmentation fault y sácalo de ahí).</strong></li>
</ul>
<p><strong>Software Privativo</strong></p>
<ul>
<li> <span style="color: #ff0000;"><del>Es fácil de usar y entender.</del></span><strong> (Fácil seguramente, ¿Entenderlo? depende, ¿Cuantos de ustedes saben usar tan solo Word al 60%?).</strong></li>
<li><span style="color: #ff0000;"><del>La mayoría de las veces tiene soporte técnico para cualquier problema.</del></span> <strong>(Cuando lo tienen ¿De que sirve?, están siempre diciéndote si esta el cable conectado, si reinicias, y al final terminan enviándote al técnico que es un becario muchas veces).</strong></li>
<li><span style="color: #ff0000;"><del>Interfaz de usuario linda y sencilla.</del></span> <strong>(Linda no para todos, sencilla muchas veces tienen los botones más útiles a la vista).</strong></li>
<li><span style="color: #ff0000;"><del>Actualizaciones constantes.</del></span> <strong>(Claro, y seguido, si no es el services pack 980522 es un bug sencillo que vendrá en el siguiente service pack 980523).</strong></li>
<li><span style="color: #ff0000;"><del>Respaldados por una marca reconocida mundialmente.</del> </span><strong>(Eso no ayuda la mayoría de las veces, ya se, ya se, muchos dirán ¿Y Apple? pero aunque tenga respaldo no asegura su eficacia, un ejemplo claro Microsoft).</strong></li>
<li><span style="color: #ff0000;"><del>Es compatible con los sistemas operativos más utilizados.</del></span> <strong>(Si, Windows o Mac).</strong></li>
<li><span style="color: #ff0000;"><del>Es fácil de configurar e instalar.</del></span> <strong>(Si, es muy fácil de instalar, dedican miles de dólares en el desarrollo pueden dedicarle unos pocos más a un instalador para un usuario común, ¿Configurar? si es tan cerrado como Apple, no puedes configurar más que dos o tres opciones, y por alguna extraña razón así es feliz la gente).</strong></li>
</ul>
<p>Tampoco olvidemos aquellas personas que son puristas al software libre o privativo por seguir una corriente y sin dar buenas explicaciones de su motivo. Lo recomendable es que personalmente probemos cada una de las distintas versiones y nosotros decidamos cual es la mejor para nuestro trabajo u oficio.</p>
<p>Algunas contras para cada una de ellas que se me viene a la mente en este momento son:</p>
<p>Software Libre:</p>
<ul>
<li>Interfaz de usuario comúnmente HORRIBLE y poco amigable, claro existen excepciones pero muy contadas.</li>
<li>Difícil de instalar o conseguir si no existen los paquetes ya compilados para tu distribución.</li>
<li>No existe muchas veces la documentación bien desarrollada o completa para que puedas consultar la ayuda, normalmente tienes que ir a un foro y esperar una respuesta.</li>
<li>El proyecto sin más ni más se queda estancado y aunque haya sido bueno ya no será lo mismo en el caso que otro lo retome.</li>
<li>Si el paquete se instalo no te asegura que funcionara si haces un upgrade a tu S.O.</li>
<li>Aún existen muchas cosas que necesitas hacer de forma manual.</li>
<li>Y aunque muchos me van a criticar por lo siguiente, considero que la mayoría del Software Libre NO es bueno.</li>
<li>El software más útil o común no existe para estas versiones. Sobre todo en los videojuegos.</li>
</ul>
<p>Software Privativo</p>
<ul>
<li>Precios excesivos y sobre todo si es una nueva versión.</li>
<li>Software muy complejo en algunos casos.</li>
<li>Entre mas conocidas mas fáciles de ser objetivo de un pirata informático.</li>
<li>El software no será compatible o exportable con la competencia muchas veces.</li>
<li>Seguido existen bugs y parches que a disminuyen el rendimiento el sistema.</li>
<li>Algunas veces no existen versiones para S.O. en los que no fueron desarrollados de manera nativa.</li>
<li>La mayoría requiere buenos requerimientos computacionales para se ejecutados.</li>
</ul>
<p>Claro que ésta es solo una opinión y no refleja la realidad completa, y sobre todo dependerá de que necesidades tengamos para usar uno u otro, prueba diferentes plataformas o versiones de software y toma tu propio opinión, no sigas una corriente por seguirla sin antes probar y decidir por tu cuenta.</p>
<p>Cualquier duda, comentario o critica es bien recibida.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2011/07/11/ser-o-no-ser%e2%80%a6-%c2%bfsoftware-libre-o-privativo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CKEditor para Rails</title>
		<link>http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/</link>
		<comments>http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 00:49:33 +0000</pubDate>
		<dc:creator>Conrrado Melquiades</dc:creator>
				<category><![CDATA[Cómputo Evolutivo]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software libre]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2595</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook &#160; CKEditor es un editor de texto para ser utilizado dentro de las páginas web. Es un editor WYSIWYG es el acrónimo de What You See Is What You Get (en inglés, &#8220;lo que ves es lo que obtienes&#8221;) . Reúne las características de edición web común que se [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F04%2F18%2Fckeditor-para-rails%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2011%2F04%2F18%2Fckeditor-para-rails%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>&nbsp;</p>
<p><a rel="attachment wp-att-2611" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/pantallazo-4/"><img class="aligncenter size-full wp-image-2611" src="http://www.ubicuos.com/wp-content/uploads/2011/04/Pantallazo2.png" alt="" width="170" height="58" /></a></p>
<p><a rel="attachment wp-att-2611" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/pantallazo-4/"></a>CKEditor es un editor de texto para ser utilizado dentro de las páginas web. Es un editor <strong>WYSIWYG</strong> es el acrónimo de <em><strong>W</strong></em><em>hat </em><em><strong>Y</strong></em><em>ou </em><em><strong>S</strong></em><em>ee </em><em><strong>I</strong></em><em>s </em><em><strong>W</strong></em><em>hat </em><em><strong>Y</strong></em><em>ou </em><em><strong>G</strong></em><em>et</em> (en inglés, &#8220;lo que ves es lo que obtienes&#8221;) . Reúne las características de edición web común que se encuentran en aplicaciones de edición de escritorio como Microsoft Word y OpenOffice.</p>
<p>Y ahora lo usaremos dentro de Ruby on Rails así como su configuración y aparecía básica.</p>
<h2 style="text-align: center"><strong>Empecemos</strong> !!!!</h2>
<ol>
<li>Para usar CKEditor necesitamos instalarlo para lo cual descargaremos la gema desde <a title="rubygems" href="http://rubygems.org/gems/ckeditor" target="_blank"><span style="text-decoration: underline;color: #0000ff">http://rubygems.org/gems/ckeditor</span></a><a rel="attachment wp-att-2618" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/rubygems/"><img class="aligncenter size-medium wp-image-2618" src="http://www.ubicuos.com/wp-content/uploads/2011/04/rubygems-300x135.png" alt="" width="300" height="135" /></a></li>
<li><span style="color: #000000">Ahora instalemos la gema desde la terminal escribimos <em>gem install ckeditor-3.5.2.gem<a rel="attachment wp-att-2636" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/installckeditor/"><img class="aligncenter size-full wp-image-2636" src="http://www.ubicuos.com/wp-content/uploads/2011/04/installCKEditor.png" alt="" width="667" height="110" /></a></em></span></li>
<li><span style="color: #000000">Creemos un proyecto nuevo de rails.<a rel="attachment wp-att-2637" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/nuevopro/"><img class="aligncenter size-full wp-image-2637" src="http://www.ubicuos.com/wp-content/uploads/2011/04/nuevoPro.png" alt="" width="645" height="85" /></a></span></li>
<li><span style="color: #000000">Ahora basta con modificar el Gemfile agregando la linea</span><em>gem &#8216;ckeditor&#8217; o gem &#8216;ckeditor&#8217;, :git =&gt; &#8216;git://github.com/galetahub/rails-ckeditor.git&#8217;, :branch =&gt; &#8216;rails3&#8242;<a rel="attachment wp-att-2606" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/ooooo/"><img class="aligncenter size-full wp-image-2606" src="http://www.ubicuos.com/wp-content/uploads/2011/04/ooooo.png" alt="" width="657" height="433" /></a><a rel="attachment wp-att-2606" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/ooooo/"><br />
</a></em></li>
<li>Para que nuestra aplicación reconosca esta linea usemos el bundle.<a rel="attachment wp-att-2609" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/bundle/"><img class="aligncenter size-full wp-image-2609" src="http://www.ubicuos.com/wp-content/uploads/2011/04/bundle.png" alt="" width="667" height="116" /></a></li>
<li>El siguiente paso es descargar los archivos de base CKEditor y generar el archivo de configuración “config/initializers/ckeditor.rb”<a rel="attachment wp-att-2600" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/generate/"><img class="aligncenter size-full wp-image-2600" src="http://www.ubicuos.com/wp-content/uploads/2011/04/generate.png" alt="" width="657" height="433" /></a></li>
<li>Generar los modelos CKEditor para subir ficheros.<a rel="attachment wp-att-2603" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/migra/"><img class="aligncenter size-full wp-image-2603" src="http://www.ubicuos.com/wp-content/uploads/2011/04/migra.png" alt="" width="669" height="93" /></a></li>
<li>Ahora hacemos la migración.<a rel="attachment wp-att-2603" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/migra/"></a><a rel="attachment wp-att-2597" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/basededatos/"><img class="aligncenter size-full wp-image-2597" src="http://www.ubicuos.com/wp-content/uploads/2011/04/basededatos.png" alt="" width="657" height="433" /></a></li>
<li>Listo ahora podemos usar el CKEditor en nuestra aplicación para ello basta con incluirlo en la vista: Primero en el archivo de &#8220;/app/views/layouts/application.html.erb&#8221; se agraga la linea &#8220;&lt;%= javascript_include_tag :ckeditor %&gt;&#8221; despues basta con poner la siguiente linea en la vista que se usara el CKEditor : &#8220;&lt;%= ckeditor_textarea(&#8220;object&#8221;, &#8220;field&#8221;, :width =&gt; &#8217;100%&#8217;, :height =&gt; &#8217;200px&#8217;) %&gt;&#8221; . Si se utilizara en un formulario la linea es la siguiente : &#8221; &lt;%= form.cktext_area :notes, :toolbar=&gt;&#8217;Full&#8217;, :width=&gt;&#8217;400px&#8217;, :height=&gt;&#8217;200px&#8217; %&gt; &lt;%= form.cktext_area :content, :swf_params=&gt;{:assetable_type=&gt;&#8217;User&#8217;, :assetable_id=&gt;current_user.id} %&gt;&#8221;<a rel="attachment wp-att-2646" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/agreg/"><img class="aligncenter size-full wp-image-2646" src="http://www.ubicuos.com/wp-content/uploads/2011/04/agreg.png" alt="" width="397" height="205" /></a></li>
<li>Nos deve de quedar algo masomenos asi:<a rel="attachment wp-att-2647" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/demo/"></a><a rel="attachment wp-att-2648" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/demo1/"><img class="aligncenter size-full wp-image-2648" src="http://www.ubicuos.com/wp-content/uploads/2011/04/demo1.png" alt="" width="610" height="516" /></a></li>
<li>Para agregar o quitar opciones de la barra de herramientas del CKEditor simplemente se edita el fichero &#8220;public/javascripts/ckeditor/config.js&#8221;<a rel="attachment wp-att-2651" href="http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/configckeditor/"><img class="aligncenter size-full wp-image-2651" src="http://www.ubicuos.com/wp-content/uploads/2011/04/configCKEditor.png" alt="" width="770" height="488" /></a>Good Luck!!</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2011/04/18/ckeditor-para-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como hacer un Syntax Highlight en C#</title>
		<link>http://www.ubicuos.com/2010/12/04/como-hacer-un-syntax-highlight-en-c/</link>
		<comments>http://www.ubicuos.com/2010/12/04/como-hacer-un-syntax-highlight-en-c/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 04:47:45 +0000</pubDate>
		<dc:creator>Roberto Carlos</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[syntax highlight]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2462</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook En esta ocasión aquí les dejo un tutorial de cómo realizar un pequeño Syntax Highlight en C#, ya que realizarlo completo seria muy complejo, aquí lo básico para iniciar a crear un Syntax Highlight.  Lo primero que necesitamos es insertar un RichTextBox y poner las siguientes propiedades del RichTextBox [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/12/04/como-hacer-un-syntax-highlight-en-c/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F12%2F04%2Fcomo-hacer-un-syntax-highlight-en-c%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F12%2F04%2Fcomo-hacer-un-syntax-highlight-en-c%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: justify">En esta ocasión aquí les dejo un tutorial de cómo realizar un pequeño Syntax Highlight en C#, ya que realizarlo completo seria muy complejo, aquí lo básico para iniciar a crear un Syntax Highlight. </p>
<p style="text-align: justify">Lo primero que necesitamos es insertar un RichTextBox y poner las siguientes propiedades del RichTextBox como se indican </p>
<p style="text-align: justify"><strong>AcceptsTab = True</strong> </p>
<p style="text-align: justify">Para que mientras escribamos se pueda usar la tecla TAB en lugar de que con ella se pase al siguiente componente en el formulario. </p>
<p style="text-align: justify"><strong>DetectUrls = False</strong> </p>
<p style="text-align: justify">Voy a desactivar esta opción para que no se mezcle con la forma de resaltar código. </p>
<p style="text-align: justify"><strong>Font-name = Consolas </strong> </p>
<p style="text-align: justify">Utilizo esta fuente para que se vea como código y no como texto normal. </p>
<p style="text-align: justify">Cada vez que el texto cambie, tenemos que volver a darle formato al texto. Es por esta razón que todo el código necesario lo vamos a programar en el evento Text_Changed del RichTextBox. <span id="more-2462"></span></p>
<p style="text-align: justify">Lo que tenemos que hacer en este evento es ir seleccionando porciones de texto y cambiándole valores como color, fuente, etc. Podemos seleccionar todo el texto usando el comando SelectAll o porciones de texto usando el atributo SelectionStart y SelectionLength que marcan el inicio y longitud del pedazo seleccionado. Una vez que seleccionamos un pedazo de texto, podemos aplicarle formato utilizando una serie de propiedades, pero la que usaremos en este ejemplo es simplemente SelectionColor que nos permitirá cambiarle el color al texto seleccionado. </p>
<p style="text-align: justify">Para poder utilizar expresiones regulares en nuestro Sintax Highlight es necesario utilizar el siguiente nameSpace : </p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Text.RegularExpressions</span><span style="color: #008000;">;</span></pre></div></div>

<p>Ponemos el siguiente código dentro del evento Text_Changed del RichTextBox. </p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">// Esta primer linea es necesari para evitar el parparpadeo que se produce al seleccionar texto en diferentes partes, lo cual se produce demasioadp rapido y solo vemos el parpadeo richTextBox1.Enabled = false; //Desabilitamos el RichTextBox int selStart = richTextBox1.SelectionStart; int selLength = richTextBox1.SelectionLength;</span></pre></div></div>

<p>// Nos aseguramos de que todo el texto<br />
// este negro antes de ponerle color<br />
richTextBox1.SelectAll();<br />
richTextBox1.SelectionColor = Color.Black;</p>
<p>Regex reg;<br />
MatchCollection partes;</p>
<p>// validamos palabras reservadas<br />
reg = new Regex(&#8220;(drop|select|table|insert into|from|update|values|where|alter|create|if|exists|foreign key|primary key|constraint|default|engine|InnoDB|charset|not|null)&#8221;);<br />
partes = reg.Matches(richTextBox1.Text.ToLower());<br />
for (int i = 0; i &lt; partes.Count; i++)<br />
{<br />
richTextBox1.SelectionStart = partes[i].Index;<br />
richTextBox1.SelectionLength = partes[i].Length;<br />
richTextBox1.SelectionColor = Color.Blue;<br />
}<br />
reg = new Regex(&#8220;(int|float|double|varchar|date)&#8221;);<br />
partes = reg.Matches(richTextBox1.Text);<br />
for (int i = 0; i &lt; partes.Count; i++)<br />
{<br />
richTextBox1.SelectionStart = partes[i].Index;<br />
richTextBox1.SelectionLength = partes[i].Length;<br />
richTextBox1.SelectionColor = Color.Blue;<br />
}</p>
<p>// Validamos los numero<br />
reg = new Regex(&#8220;(1|2|3|4|5|6|7|8|9|0)&#8221;);<br />
partes = reg.Matches(richTextBox1.Text);<br />
for (int i = 0; i &lt; partes.Count; i++)<br />
{<br />
richTextBox1.SelectionStart = partes[i].Index;<br />
richTextBox1.SelectionLength = partes[i].Length;<br />
richTextBox1.SelectionColor = Color.Magenta;<br />
}<br />
// Validamos cadenas<br />
reg = new Regex(&#8220;[\"][^\"]*[\"]&#8220;);//|[\'][^\']*[\']&#8220;);<br />
partes = reg.Matches(richTextBox1.Text);<br />
for (int i = 0; i &lt; partes.Count; i++)<br />
{<br />
richTextBox1.SelectionStart = partes[i].Index;<br />
richTextBox1.SelectionLength = partes[i].Length;<br />
richTextBox1.SelectionColor = Color.Orange;<br />
}</p>
<p>// Validamos cadenas<br />
reg = new Regex(&#8220;[\'/')][^\'/']*[\'/']&#8220;);<br />
partes = reg.Matches(richTextBox1.Text);<br />
for (int i = 0; i &lt; partes.Count; i++)<br />
{<br />
richTextBox1.SelectionStart = partes[i].Index;<br />
richTextBox1.SelectionLength = partes[i].Length;<br />
richTextBox1.SelectionColor = Color.Gray;<br />
}</p>
<p>// Regresamos todo a su sitio, también volvemos a habilitar el RichTextBox que fue desabilitado para evitar el parpadeo<br />
richTextBox1.SelectionStart = selStart;<br />
richTextBox1.SelectionLength = selLength;</p>
<p>richTextBox1.Enabled = true;<br />
richTextBox1.Focus();</p>
<p>Obtendriamos el siguiente resultado:</p>
<p><a rel="attachment wp-att-2476" href="http://www.ubicuos.com/2010/12/04/como-hacer-un-syntax-highlight-en-c/syntax/"><img class="aligncenter size-full wp-image-2476" src="http://www.ubicuos.com/wp-content/uploads/2010/12/syntax.png" alt="" width="352" height="324" /></a></p>
<p style="text-align: justify">Este pequeño tutorial esta basado en la sintaxis de MySql lo complejo de SyntaxHighlight depende de la sintaxis que te quieras basar y todo lo que quieras abarcar, como mencione anteriormente este es un tutorial sumamente sencillo basado en lo mas básico. <br />
Espero y les sea de ayuda!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/12/04/como-hacer-un-syntax-highlight-en-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reunión del grupo de IPNLibre</title>
		<link>http://www.ubicuos.com/2010/09/04/reunion-del-grupo-de-ipnlibre/</link>
		<comments>http://www.ubicuos.com/2010/09/04/reunion-del-grupo-de-ipnlibre/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 04:21:09 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[evento]]></category>
		<category><![CDATA[reunión]]></category>
		<category><![CDATA[software libre]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2123</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Saludos a todos! El día de hoy se llevó a cabo una reunión del grupo de Software Libre del IPN (Instituto Politécnico Nacional), a continuación les adjunto los puntos más importantes de la reunión, mientras suben la minuta oficial. Minuta de UPIITA, UPIICSA, ESIME – Zacatenco, ESIME &#8211; Culhuacan [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/09/04/reunion-del-grupo-de-ipnlibre/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F09%2F04%2Freunion-del-grupo-de-ipnlibre%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F09%2F04%2Freunion-del-grupo-de-ipnlibre%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Saludos a todos!<br />
El día de hoy se llevó a cabo una reunión del grupo de Software Libre del IPN (Instituto Politécnico Nacional), a continuación les adjunto los puntos más importantes de la reunión, mientras suben la minuta oficial.</p>
<p><span id="more-2123"></span><br />
Minuta de UPIITA, UPIICSA, ESIME – Zacatenco, ESIME &#8211; Culhuacan</p>
<p>04/Sept/10</p>
<p>Integrantes</p>
<p>3 UPIITA<br />
1 ESIME-Culhuacan<br />
2 ESIME-Zacatenco</p>
<p>Temas</p>
<p>Soporte de IPN en Opensource<br />
Objetivo claro de comunidad Libre &#8211; Impulsar a Vocacionales<br />
Cursos de taller<br />
UPIITA se distingue por Mecatronica- Mecatrónicos<br />
Contactos de Industrias para dar incentivos<br />
Tener un repositorio de información<br />
Misión, Visión y Objetivos<br />
Lista de Correos o IRC en servidor de Debian<br />
Apoyarse del plan de estudios de la carrera para involucrar a la gente en Tecnologías Libres<br />
Hacer imagen, Logotipo y eslogan de la comunidad</p>
<p>Objetivo de la comunidad<br />
Divulgación de Software Libre (no tan técnica)</p>
<p>Misión</p>
<p>Impulsar la perspectiva cultural del usuario basándose en las 4 libertades de la filosofía del software libre para el desarrollo de sus actividades, promoviendo a su vez su desarrollo personal y profesional en equipo como miembro de una comunidad.</p>
<p>Conocer y fomentar filosofías, comunidades y herramientas técnicas en el uso y desarrollo de Tecnologías libres para todo tipo de usuarios.</p>
<p> Visión<br />
Integración de las comunidades de tecnologías libres del IPN y México, siendo centro de documentación y divulgación, que promueve la colaboración de profesionistas, desarolladores, impulsores y participantes entusiastas a la vanguardia en tecnologías libres.</p>
<p>Objetivos<br />
Integrar a todas las comunidades de tecnologías libres del IPN.<br />
Impulsar a los miembros de la comunidad a utilizar y contribuir al desarrollo de tecnologías libres.<br />
Crear vínculos con empresas y organizaciones (gubernamentales o no) para el propio impulso de la comunidad.<br />
Inducir a las personas en el uso de tecnologías libres.<br />
Generar nuevos proyectos de tecnologías libres.<br />
Apoyo a otras comunidades.<br />
Enriquecer el conocimiento de los integrantes.<br />
Asesoría a usuarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/09/04/reunion-del-grupo-de-ipnlibre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como crear un Wallpaper Slideshow en Ubuntu</title>
		<link>http://www.ubicuos.com/2010/08/29/como-crear-un-wallpaper-slideshow-en-ubuntu/</link>
		<comments>http://www.ubicuos.com/2010/08/29/como-crear-un-wallpaper-slideshow-en-ubuntu/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 22:25:23 +0000</pubDate>
		<dc:creator>fernandomt_08</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=2108</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Todos hemos visto en la última edición de Windows (Windows 7) la posibilidad de que en el escritorio se roten automaticamente una serie de imagenes que nosotros eligamos para que cambien cada cierto tiempo, bueno pues, en Ubuntu todo es posible y gracias a ello podemos empezar a crear [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/08/29/como-crear-un-wallpaper-slideshow-en-ubuntu/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F08%2F29%2Fcomo-crear-un-wallpaper-slideshow-en-ubuntu%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F08%2F29%2Fcomo-crear-un-wallpaper-slideshow-en-ubuntu%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/Crear-Presentación-de-Fondos-de-Pantalla_022.jpeg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/Crear-Presentación-de-Fondos-de-Pantalla_022-300x282.jpg" alt="" width="218" height="204" /></a></p>
<p>Todos hemos visto en la última edición de Windows (Windows 7) la  posibilidad de que en el escritorio se roten automaticamente una serie  de imagenes que nosotros eligamos para que cambien cada cierto tiempo,  bueno pues, en Ubuntu todo es posible y gracias a ello podemos empezar a  crear nuestros propios fondos de escritorios con imagenes rotatorias de  una manera sencilla, a continuacion explico los pasos que hay que  seguir:<img src="http://kira.herobo.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /><span id="more-2108"></span></p>
<p>1. Lo primero que tenemos que hacer es abrir una terminal y ejecutar cada uno de los siguientes comandos como usuario root:</p>
<pre>[shell]
sudo add-apt-repository ppa:crebs/ppa
sudo apt-get update
sudo apt-get install crebs
[/shell]</pre>
<p>Esto instalará el repositorio CreBS, actualizará los paquetes disponibles y finalmente instalará CreBS. Una vez instalado</p>
<p>Ejecutamos crebs desde nuestra terminal :</p>
<pre>[shell]
crebs
[/shell]</pre>
<p>O desde : Sistema-&gt; Preferencias -&gt; Crear Presentacion de Fondos de Pantalla</p>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/Menú_014.jpeg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/Menú_014-300x292.jpg" alt="" width="300" height="292" /></a></p>
<p>Al ejecutar podemos ver la siguiente ventana:</p>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/Crear-Presentación-de-Fondos-de-Pantalla_015.jpeg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/Crear-Presentación-de-Fondos-de-Pantalla_015-300x282.jpg" alt="" width="300" height="282" /></a></p>
<p>Vamos a la  parte inferior del programa y damos click en el signo + para poder  agregar nuestras imagenes, las cuales formarán nuestro slideshow del  escritorio:</p>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/agregar.jpeg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/agregar-300x100.jpg" alt="" width="300" height="100" /></a></p>
<p>Posteriormente elegimos las imagenes que queremos, podemos selecciona todas las imagenes de una vez:</p>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/Añadir-imágenes-a-la-presentación_017.jpeg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/Añadir-imágenes-a-la-presentación_017-300x232.jpg" alt="" width="300" height="232" /></a></p>
<p>Una vez que ya agregamos todas las imagenes, vamos a la parte de abajo del programa y en la pestaña: <strong>Image Defaults </strong>Deseleccionamos el checkbox <strong>&#8220;Usar predeterminado&#8221; </strong>para poder configurar el tiempo que cada imagen durará y el tiempo que tarda en realizar la transicion.</p>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/Selección_019.jpeg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/Selección_019-300x96.jpg" alt="" width="300" height="96" /></a></p>
<p>Si queremos especificar valores diferentes para cada imagen, seleccionan una imagen y se van a la pestaña <strong>Imagen seleccionada, </strong>desde la cual pueden configurar los valores para la imagen seleccionada:</p>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/Selección_018.jpeg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/Selección_018-300x80.jpg" alt="" width="300" height="80" /></a></p>
<p>Finalmente le damos un nombre y damos click en el botón de la palomita:</p>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/Selección_020.jpeg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/Selección_020-300x41.jpg" alt="" width="300" height="41" /></a></p>
<p>Nos aparecerá un mensaje, informandonos que nuestro fondo ha sido  reeemplazado, y ahora podemos ver nuestro slideshow como fondo de  escritorio:</p>
<p><a href="http://kira.herobo.com/wp-content/uploads/2010/08/Selección_021.jpeg"><img src="http://kira.herobo.com/wp-content/uploads/2010/08/Selección_021-300x92.jpg" alt="" width="300" height="92" /></a></p>
<p>Hasta aqui llegá este tutorial, espero que les haya servido, dudas,  sugerencias, y opiniones en la sección de comentarios por favor.</p>
<p>El tutorial fue dedicado a <a href="http://kira.herobo.com/">mi blog</a> es por eso que tiene esas marcas de agua, lo publico aqui para que mas personas tengan acceso al tutorial.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/08/29/como-crear-un-wallpaper-slideshow-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crear Ficha de Domino en Autodesk Maya 2008</title>
		<link>http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/</link>
		<comments>http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 06:25:42 +0000</pubDate>
		<dc:creator>Lisandro Vergara Díaz</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[animación]]></category>
		<category><![CDATA[autodesk]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[maya]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=1994</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Antes de comenzar quiero mencionar que este tutorial fue basado en el tutorial “Modelado con Booleanas en Maya” que se encuentra en el blog “Capital 3D” a continuación el link del tutorial mencionado http://capital3d.blogspot.com/2008/07/modelado-con-booleanas-en-maya.html Comencemos !! Escojemos la vista Top, poniendo sobre ella el puntero del mouse y presionamos [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F08%2F09%2Fcrear-ficha-de-domino-en-autodesk-maya-2008%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F08%2F09%2Fcrear-ficha-de-domino-en-autodesk-maya-2008%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<h2>Antes de comenzar  quiero mencionar que este tutorial fue basado en el tutorial “Modelado con Booleanas en Maya” que se encuentra en el blog “Capital 3D” a continuación el link del tutorial mencionado <a href="http://capital3d.blogspot.com/2008/07/modelado-con-booleanas-en-maya.html">http://capital3d.blogspot.com/2008/07/modelado-con-booleanas-en-maya.html</a></h2>
<p><span id="more-1994"></span></p>
<h2>Comencemos !!</h2>
<ol>
<li>
<h2>Escojemos la vista Top, poniendo sobre ella el puntero del mouse y presionamos la barra espaciadora</h2>
</li>
<p><a rel="attachment wp-att-1998" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/1-10/"><img class="aligncenter size-full wp-image-1998" src="http://www.ubicuos.com/wp-content/uploads/2010/08/12.png" alt="" width="856" height="754" /></a></p>
<li>
<h2>Creamos el primer objeto, un cilindro, vamos a “Create / Poligon Primitives / Cilinder” damos clic en el cuadradito eso va permitir ver un ventana con opciones</h2>
</li>
<p><a rel="attachment wp-att-2001" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/2-6/"><img class="aligncenter size-full wp-image-2001" src="http://www.ubicuos.com/wp-content/uploads/2010/08/2.png" alt="" width="857" height="756" /></a></p>
<li>
<h2>En esta ventanita vamos a cambiar el &#8220;Axis Divisions&#8221; a 50 y el &#8220;Cap Divisions&#8221; a 0 después damos clic en &#8220;Create&#8221;</h2>
</li>
<p><a rel="attachment wp-att-2004" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/3-6/"><img class="aligncenter size-full wp-image-2004" src="http://www.ubicuos.com/wp-content/uploads/2010/08/3.png" alt="" width="522" height="347" /></a></p>
<li>
<h2>A continuación, presiona la tecla “f” para que te acerques bien al cilindro&#8221;</h2>
</li>
<p><a rel="attachment wp-att-2005" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/4-5/"><img class="aligncenter size-full wp-image-2005" src="http://www.ubicuos.com/wp-content/uploads/2010/08/4.png" alt="" width="842" height="740" /></a></p>
<li>
<h2>Presione “F9”, vas a ver unos puntos morados, selecciona todos los puntos de la derecha, hazlo de afuera hacia adentro</h2>
</li>
<p><a rel="attachment wp-att-2008" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/5-7/"><img class="aligncenter size-full wp-image-2008" src="http://www.ubicuos.com/wp-content/uploads/2010/08/5.png" alt="" width="838" height="740" /></a></p>
<li>
<h2>Ahora presiona “alt + clic derecho” del mouse y mueve el mismo hacia arriba para que puedas alejar un poco la vista, luego presiona la tecla “w” que sirve para activar la herramienta de mover y mueve esos puntos de manera que se alargue el objeto</h2>
</li>
<p><a rel="attachment wp-att-2009" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/6-7/"><img class="aligncenter size-full wp-image-2009" src="http://www.ubicuos.com/wp-content/uploads/2010/08/6.png" alt="" width="845" height="738" /></a></p>
<li>
<h2>Ahora, selecciona todos los puntos de la mitad para abajo y muévelos para ir formando la ficha de domino</h2>
</li>
<p><a rel="attachment wp-att-2010" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/7-7/"><img class="aligncenter size-full wp-image-2010" src="http://www.ubicuos.com/wp-content/uploads/2010/08/7.png" alt="" width="836" height="719" /></a></p>
<li>
<h2>Ve a “Create / Polygon Primitives / Cube” esto te va a crear un cubo</h2>
</li>
<p><a rel="attachment wp-att-2013" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/8-6/"><img class="aligncenter size-full wp-image-2013" src="http://www.ubicuos.com/wp-content/uploads/2010/08/8.png" alt="" width="840" height="740" /></a></p>
<li>
<h2>Así te tiene que quedar el cubo: largo, delgado y que solo este un poco metido en la parte de arriba de la ficha de domino, mira en las cuatro vistas usando la barra espaciadora y elije la vista “side” para que te quede igual que mi imagen</h2>
</li>
<p><a rel="attachment wp-att-2014" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/9-6/"><img class="aligncenter size-full wp-image-2014" src="http://www.ubicuos.com/wp-content/uploads/2010/08/9.png" alt="" width="844" height="687" /></a></p>
<li>
<h2>Regresa a la vista “top” y tiene que quedar así</h2>
</li>
<p><a rel="attachment wp-att-2015" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/10-5/"><img class="aligncenter size-full wp-image-2015" src="http://www.ubicuos.com/wp-content/uploads/2010/08/10.png" alt="" width="834" height="728" /></a></p>
<li>
<h2>Vamos al menú “Create / Polygons Primitives / Sphere” y hacemos haz clic en el cuadradito para que salga la ventana de opciones</h2>
</li>
<p><a rel="attachment wp-att-2016" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/11-5/"><img class="aligncenter size-full wp-image-2016" src="http://www.ubicuos.com/wp-content/uploads/2010/08/111.png" alt="" width="523" height="347" /></a></p>
<li>
<h2>Cambiamos los dos valores de subdivisión a 30 y luego presionamos el botón “Create”</h2>
</li>
<li>
<h2>Ahora ve a la vista “Side” y asegúrate que la esfera este saliendo de la mitad para arriba en relación a la ficha</h2>
</li>
<p><a rel="attachment wp-att-2017" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/13-4/"><img class="aligncenter size-full wp-image-2017" src="http://www.ubicuos.com/wp-content/uploads/2010/08/13.png" alt="" width="842" height="740" /></a></p>
<li>
<h2>Ahora vamos a copiar los objetos, cuando copies un objeto Maya te va a poner la copia exactamente en el mismo lugar del original así que debes mover la copia para poder verla, para copiar debes seleccionar el objeto original y luego “control + d”</h2>
</li>
<p><a rel="attachment wp-att-2018" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/14-4/"><img class="aligncenter size-full wp-image-2018" src="http://www.ubicuos.com/wp-content/uploads/2010/08/14.png" alt="" width="838" height="730" /></a></p>
<li>
<h2>Ve al menú “Mesh / Booleans / Union” esta herramienta sirve para pegar dos objetos, lo malo es que solo se pueden pegar objetos de dos en dos, une todas los objetos incluyendo el cubo menos la ficha de tal manera que quede como se muestra en la figura</h2>
</li>
<p><a rel="attachment wp-att-2019" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/15-2/"><img class="aligncenter size-full wp-image-2019" src="http://www.ubicuos.com/wp-content/uploads/2010/08/15.png" alt="" width="841" height="738" /></a></p>
<li>
<h2>Ahora vamos a darle color a los puntitos, mantenlos seleccionados y ve a la pestaña llamada “Rendering” y haz clic sobre la segunda esfera gris</h2>
</li>
<p><a rel="attachment wp-att-2020" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/16-4/"><img class="aligncenter size-full wp-image-2020" src="http://www.ubicuos.com/wp-content/uploads/2010/08/16.png" alt="" width="837" height="719" /></a></p>
<li>
<h2>En el “Editor de Atributos” que está a mano derecha vas a ver la opción llamada color presiona sobre ese cuadradito gris y una nueva ventana aparecerá, selecciona en ella el color que tú quieras, cuando estés listo presiona “Aceptar”</h2>
</li>
<p><a rel="attachment wp-att-2022" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/17_bien/"><img class="aligncenter size-full wp-image-2022" src="http://www.ubicuos.com/wp-content/uploads/2010/08/17_bien.png" alt="" width="800" height="463" /></a></p>
<li>
<h2>Ahora, selecciona la ficha, vuelve a hacer clic sobre la esferita gris de “Blinn” en la pestaña de “Render” y píntala (después de pintarla presionamos la tecla “5” para hacerlo solido)</h2>
</li>
<p><a rel="attachment wp-att-2025" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/18_bien/"><img class="aligncenter size-full wp-image-2025" src="http://www.ubicuos.com/wp-content/uploads/2010/08/18_bien.png" alt="" width="800" height="463" /></a></p>
<li>
<h2>Ahora seleccionamos la ficha y luego usando la tecla “Shift” selecciones los puntitos, cuando haces eso la ficha va a tener una orilla blanca y los puntitos una orilla verde indicándote que fueron los últimos en ser seleccionados</h2>
</li>
<p><a rel="attachment wp-att-2026" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/19-2/"><img class="aligncenter size-full wp-image-2026" src="http://www.ubicuos.com/wp-content/uploads/2010/08/19.png" alt="" width="860" height="732" /></a></p>
<li>
<h2>Vamos al menú “Mesh / Booleans / Difference”, los puntos cortan a la ficha</h2>
</li>
<p><a rel="attachment wp-att-2028" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/20-3/"><img class="aligncenter size-full wp-image-2028" src="http://www.ubicuos.com/wp-content/uploads/2010/08/201.png" alt="" width="854" height="737" /></a></p>
<li>
<h2>Vamos al menú “Modify / Center Pivot” y damos clic sobre el centro de la figura</h2>
</li>
<p><a rel="attachment wp-att-2029" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/21-2/"><img class="aligncenter size-full wp-image-2029" src="http://www.ubicuos.com/wp-content/uploads/2010/08/21.png" alt="" width="850" height="711" /></a></p>
<li>
<h2>Ahora giramos la ficha para poder levantarla, para que te aparezca la herramienta de girar presiona “e” o del lado izquierdo el icono “rótate tool” y nos vamos a la vista “perps”</h2>
</li>
<p><a rel="attachment wp-att-2030" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/attachment/22/"><img class="aligncenter size-full wp-image-2030" src="http://www.ubicuos.com/wp-content/uploads/2010/08/22.png" alt="" width="854" height="727" /></a></p>
<li>
<h2>Listo!! Ya tenemos nuestra figura terminada</h2>
</li>
<p><a rel="attachment wp-att-2031" href="http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/23-3/"><img class="aligncenter size-full wp-image-2031" src="http://www.ubicuos.com/wp-content/uploads/2010/08/23.png" alt="" width="634" height="483" /></a></ol>
<h2>Con esto damos por terminado el tutorial  cualquier duda o pregunta estamos para ayudarles</h2>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/08/09/crear-ficha-de-domino-en-autodesk-maya-2008/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Geolocalizar con CSharp y GoogleMaps</title>
		<link>http://www.ubicuos.com/2010/07/19/geolocalizar-con-csharp-y-googlemaps/</link>
		<comments>http://www.ubicuos.com/2010/07/19/geolocalizar-con-csharp-y-googlemaps/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 04:32:35 +0000</pubDate>
		<dc:creator>Jorge</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[dotnet]]></category>
		<category><![CDATA[geografia]]></category>
		<category><![CDATA[gis]]></category>
		<category><![CDATA[goeprocessing]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=1731</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Hola comunidad!, de regreso aportando más material para que esto siga en crecimiento. Ahora presentando un pequeño programita hecho en C# que nos sirve para geolocalizar direcciones mediante google maps. El programa lo dividí en tres clases: Geocodign.- Es la parte donde se hace el proceso de geolocalización Point.- [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/07/19/geolocalizar-con-csharp-y-googlemaps/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F07%2F19%2Fgeolocalizar-con-csharp-y-googlemaps%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F07%2F19%2Fgeolocalizar-con-csharp-y-googlemaps%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Hola comunidad!, de regreso aportando más material para que esto siga en crecimiento.</p>
<p>Ahora presentando un pequeño programita hecho en C# que nos sirve para geolocalizar direcciones mediante google maps.</p>
<p>El programa lo dividí en tres clases:</p>
<p><em>Geocodign.-</em> Es la parte donde se hace el proceso de geolocalización<br />
<em>Point.-</em> Clase para identificar nuestras direcciones a geolocalizar<br />
<em>Principal.-</em> Es la clase principal del proyecto</p>
<p><strong>La clase Geocodign</strong></p>
<p>Esta clase cuenta con tres métodos (GetXml, GetData, ChangeUrl)</p>
<p>El método <strong>GetXml</strong> nos regresa los datos en formato XML y lo guarda en un archivo, el XML es lo que nos manda el googlemaps.</p>
<p>El método <strong>GetData</strong> nos regresa un Hashtable con los datos dirección (address), longitud (longitude), latitud (latitude). Estos datos los extraemos del arhivo XML que se guarda con el GetXml.</p>
<p>El método <strong>ChangeUrl</strong> lo utilizamos para reemplazar los espaciós en blanco de la dirección a geolocalizar, por ejemplo &#8220;dirección a geolocalizar&#8221; por &#8220;dirección%20a%20geolocalizar&#8221;.</p>
<p>Usings</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Collections.Generic</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Text</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.IO</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Net</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Xml</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Xml.XPath</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Windows.Forms</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Collections</span><span style="color: #008000;">;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #6666cc; font-weight: bold;">class</span> Geocoding
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> fileName <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;datosxml.xml&quot;</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> GetXml<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> address<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">try</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #6666cc; font-weight: bold;">string</span> url <span style="color: #008000;">=</span> <span style="color: #6666cc; font-weight: bold;">String</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Format</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;{0}&quot;</span>, address<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                url <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ChangeUrl</span><span style="color: #008000;">&#40;</span>url<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #6666cc; font-weight: bold;">string</span> lcUrl <span style="color: #008000;">=</span> <span style="color: #6666cc; font-weight: bold;">String</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Format</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;http://maps.google.com/maps/geo?q={0}&amp;output=xml&amp;sensor=true_or_false&amp;key=your_api_key&quot;</span>, url<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                HttpWebRequest loHttp <span style="color: #008000;">=</span>
                <span style="color: #008000;">&#40;</span>HttpWebRequest<span style="color: #008000;">&#41;</span>WebRequest<span style="color: #008000;">.</span><span style="color: #0000FF;">Create</span><span style="color: #008000;">&#40;</span>lcUrl<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                loHttp<span style="color: #008000;">.</span><span style="color: #0000FF;">Timeout</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">30000</span><span style="color: #008000;">;</span>     <span style="color: #008080; font-style: italic;">// 30 secs</span>
                loHttp<span style="color: #008000;">.</span><span style="color: #0000FF;">UserAgent</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Code Sample Web Client&quot;</span><span style="color: #008000;">;</span>
                HttpWebResponse loWebResponse <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span>HttpWebResponse<span style="color: #008000;">&#41;</span>loHttp<span style="color: #008000;">.</span><span style="color: #0000FF;">GetResponse</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                Encoding enc <span style="color: #008000;">=</span> Encoding<span style="color: #008000;">.</span><span style="color: #0000FF;">GetEncoding</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1252</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>  <span style="color: #008080; font-style: italic;">// Windows default Code Page</span>
                StreamReader loResponseStream <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> StreamReader<span style="color: #008000;">&#40;</span>loWebResponse<span style="color: #008000;">.</span><span style="color: #0000FF;">GetResponseStream</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, enc<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #6666cc; font-weight: bold;">string</span> lcHtml <span style="color: #008000;">=</span> loResponseStream<span style="color: #008000;">.</span><span style="color: #0000FF;">ReadToEnd</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                StreamWriter sw <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> StreamWriter<span style="color: #008000;">&#40;</span>fileName, <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                sw<span style="color: #008000;">.</span><span style="color: #0000FF;">Write</span><span style="color: #008000;">&#40;</span>lcHtml<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                sw<span style="color: #008000;">.</span><span style="color: #0000FF;">Close</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                loWebResponse<span style="color: #008000;">.</span><span style="color: #0000FF;">Close</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                loResponseStream<span style="color: #008000;">.</span><span style="color: #0000FF;">Close</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#40;</span>Exception ex<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                MessageBox<span style="color: #008000;">.</span><span style="color: #0000FF;">Show</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Error &quot;</span> <span style="color: #008000;">+</span> ex<span style="color: #008000;">.</span><span style="color: #0000FF;">Message</span>, <span style="color: #666666;">&quot;Error&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> Hashtable GetData<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            Hashtable data <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Hashtable<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            XPathDocument doc <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> XPathDocument<span style="color: #008000;">&#40;</span>fileName<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">string</span> namespaceUri <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;http://earth.google.com/kml/2.0&quot;</span><span style="color: #008000;">;</span>
            XmlNamespaceManager ns <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> XmlNamespaceManager<span style="color: #008000;">&#40;</span><span style="color: #008000;">new</span> NameTable<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            XPathNavigator nav <span style="color: #008000;">=</span> doc<span style="color: #008000;">.</span><span style="color: #0000FF;">CreateNavigator</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            ns<span style="color: #008000;">.</span><span style="color: #0000FF;">AddNamespace</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;bz&quot;</span>, namespaceUri<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">string</span> query <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;bz:kml/bz:Response/bz:Placemark/bz:Point/bz:coordinates&quot;</span><span style="color: #008000;">;</span>
            XPathNodeIterator iter <span style="color: #008000;">=</span> nav<span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Select</span><span style="color: #008000;">&#40;</span>query, ns<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">string</span> coordinates <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span>iter<span style="color: #008000;">.</span><span style="color: #0000FF;">MoveNext</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">?</span> iter<span style="color: #008000;">.</span><span style="color: #0000FF;">Current</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span> <span style="color: #008000;">:</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">;</span>
&nbsp;
            query <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;bz:kml/bz:Response/bz:Placemark/bz:address&quot;</span><span style="color: #008000;">;</span>
            iter <span style="color: #008000;">=</span> nav<span style="color: #008000;">.</span><span style="color: #0600FF; font-weight: bold;">Select</span><span style="color: #008000;">&#40;</span>query, ns<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">string</span> address <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span>iter<span style="color: #008000;">.</span><span style="color: #0000FF;">MoveNext</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">?</span> iter<span style="color: #008000;">.</span><span style="color: #0000FF;">Current</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Value</span> <span style="color: #008000;">:</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #6666cc; font-weight: bold;">string</span> lon <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">string</span> lat <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>coordinates<span style="color: #008000;">.</span><span style="color: #0000FF;">Split</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">','</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> <span style="color: #FF0000;">3</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                lon <span style="color: #008000;">=</span> coordinates<span style="color: #008000;">.</span><span style="color: #0000FF;">Split</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">','</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                lat <span style="color: #008000;">=</span> coordinates<span style="color: #008000;">.</span><span style="color: #0000FF;">Split</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">','</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                data<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;longitude&quot;</span>,lon<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                data<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;latitude&quot;</span>, lat<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                data<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;address&quot;</span>, address<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">else</span>
            <span style="color: #008000;">&#123;</span>
                data<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;longitude&quot;</span>, lon<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                data<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;latitude&quot;</span>, lat<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                data<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;address&quot;</span>, address<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> data<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> ChangeUrl<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span> address<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            address <span style="color: #008000;">=</span> address<span style="color: #008000;">.</span><span style="color: #0000FF;">Replace</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;#&quot;</span>, <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            address <span style="color: #008000;">=</span> address<span style="color: #008000;">.</span><span style="color: #0000FF;">Replace</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot; &quot;</span>, <span style="color: #666666;">&quot;%20&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> address<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span></pre></div></div>

<p><strong>La clase Point</strong></p>
<p>Esta clase cuenta con los atributos Address, Longitude y Latitude con sus respectivos métodos get y set.</p>
<p>Usings</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Collections.Generic</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Text</span><span style="color: #008000;">;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #6666cc; font-weight: bold;">class</span> Point
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> longitude<span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> latitude<span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">string</span> address<span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> Address
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">address</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">address</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> Longitude
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">longitude</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">longitude</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> Latitude
        <span style="color: #008000;">&#123;</span>
            get
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">latitude</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            set
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">latitude</span> <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span></pre></div></div>

<p><strong>La clase Principal </strong></p>
<p>Para nuestro caso la clase principal es la de nuestro formulario, donde tendremos dos textbox (txtaddress y txtdata), en el txtaddress pondremos la dirección a geolocalizar y en el txtdata obtendremos nuestros datos, también tendremos un boton (btngeocoding) con el cual daremos la acción para realizar la geolocalización.</p>
<div id="attachment_1732" class="wp-caption aligncenter" style="width: 609px"><a rel="attachment wp-att-1732" href="http://www.ubicuos.com/2010/07/19/geolocalizar-con-csharp-y-googlemaps/geolocal/"><img class="size-full wp-image-1732" title="geolocal" src="http://www.ubicuos.com/wp-content/uploads/2010/07/geolocal.png" alt="" width="599" height="318" /></a><p class="wp-caption-text">Formulario principal</p></div>
<p>El código del botón es el siguiente</p>
<p>Usings</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Collections</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Collections.Generic</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.ComponentModel</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Data</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Drawing</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Text</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Windows.Forms</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Xml</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Xml.XPath</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.IO</span><span style="color: #008000;">;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">void</span> btngeocoding_Click<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">object</span> sender, EventArgs e<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #6666cc; font-weight: bold;">string</span> address <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">txtaddress</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span><span style="color: #008000;">;</span>
            Geocoding geocodign <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Geocoding<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            Point point <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Point<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            geocodign<span style="color: #008000;">.</span><span style="color: #0000FF;">GetXml</span><span style="color: #008000;">&#40;</span>address<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            Hashtable data <span style="color: #008000;">=</span> geocodign<span style="color: #008000;">.</span><span style="color: #0000FF;">GetData</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            point<span style="color: #008000;">.</span><span style="color: #0000FF;">Address</span> <span style="color: #008000;">=</span> data<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;address&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            point<span style="color: #008000;">.</span><span style="color: #0000FF;">Longitude</span> <span style="color: #008000;">=</span> data<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;longitude&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            point<span style="color: #008000;">.</span><span style="color: #0000FF;">Latitude</span> <span style="color: #008000;">=</span> data<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;latitude&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">txtdata</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Clear</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">txtdata</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> <span style="color: #6666cc; font-weight: bold;">String</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Format</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;{0}Dirección= {1} <span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">txtdata</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span>, point<span style="color: #008000;">.</span><span style="color: #0000FF;">Address</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">txtdata</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> <span style="color: #6666cc; font-weight: bold;">String</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Format</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;{0}Longitud= {1} <span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">txtdata</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span>, point<span style="color: #008000;">.</span><span style="color: #0000FF;">Longitude</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">txtdata</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> <span style="color: #6666cc; font-weight: bold;">String</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Format</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;{0}Latitud= {1} <span style="color: #008080; font-weight: bold;">\r</span><span style="color: #008080; font-weight: bold;">\n</span>&quot;</span>, <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">txtdata</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span>, point<span style="color: #008000;">.</span><span style="color: #0000FF;">Latitude</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span></pre></div></div>

<p>Ejemplo:</p>
<div id="attachment_1733" class="wp-caption aligncenter" style="width: 609px"><a rel="attachment wp-att-1733" href="http://www.ubicuos.com/2010/07/19/geolocalizar-con-csharp-y-googlemaps/geolocalexample/"><img class="size-full wp-image-1733" title="geolocalexample" src="http://www.ubicuos.com/wp-content/uploads/2010/07/geolocalexample.png" alt="" width="599" height="318" /></a><p class="wp-caption-text">Ejemplo</p></div>
<p>Espero sea de grán ayuda!  Dudas ó sugerencias, no duden en hacerlas llegar.  Estamos para servir.. Saludos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/07/19/geolocalizar-con-csharp-y-googlemaps/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Instalacion y Configuracion de Gnokii con Telefono Nokia 5610 y cable CA-101</title>
		<link>http://www.ubicuos.com/2010/07/07/instalacion-y-configuracion-de-gnokii-con-telefono-nokia-5610-y-cable-ca-101/</link>
		<comments>http://www.ubicuos.com/2010/07/07/instalacion-y-configuracion-de-gnokii-con-telefono-nokia-5610-y-cable-ca-101/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 15:35:30 +0000</pubDate>
		<dc:creator>Lisandro Vergara Díaz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Ubicuos]]></category>
		<category><![CDATA[gnokii]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nokia]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=1497</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook Para instalar Gnokii en nuestro servidor usamos el administrador de paquetes apt con la siguiente linea: apt-get install gnokii Si estamos sobre Ubuntu recuerden anteponer la linea sudo Una vez instalado Gnokii tenemos que configurarlo, el primer paso es  entrar a la carpeta etc  con la siguiente línea de [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/07/07/instalacion-y-configuracion-de-gnokii-con-telefono-nokia-5610-y-cable-ca-101/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F07%2F07%2Finstalacion-y-configuracion-de-gnokii-con-telefono-nokia-5610-y-cable-ca-101%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F07%2F07%2Finstalacion-y-configuracion-de-gnokii-con-telefono-nokia-5610-y-cable-ca-101%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Para instalar Gnokii en nuestro servidor usamos el administrador de paquetes apt con la siguiente linea: apt-get install gnokii Si estamos sobre Ubuntu recuerden anteponer la linea sudo</p>
<p>Una vez instalado Gnokii tenemos que configurarlo, el primer paso es  entrar a la carpeta etc  con la siguiente línea de comando: cd /etc<br />
Cuando estemos dentro de etc el siguiente paso será editar el archivo gnokiirc para esto utilizamos el siguiente comando: nano gnokiirc</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/06/Pantallazo1.png"><img class="aligncenter size-full wp-image-1498" src="http://www.ubicuos.com/wp-content/uploads/2010/06/Pantallazo1.png" alt="" width="329" height="145" /></a></p>
<p>Una vez que nos encontremos en el editor en la parte [global]  agregaremos las líneas correspondientes al tipo de cable que usa nuestro teléfono  en este caso quedara de la siguiente manera  (recuerda que esta configuración es para un Nokia 5610 que utiliza un cable tipo CA-101 para  ver las configuraciones de otro tipo de cables consulta <a href="http://wiki.gnokii.org/index.php/Cables">http://wiki.gnokii.org/index.php/Cables)</a></p>
<p>[global]<br />
model = AT<br />
port = /dev/ttyACM0<br />
connection = serial</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/06/Pantallazo3.png"><img class="aligncenter size-full wp-image-1499" src="http://www.ubicuos.com/wp-content/uploads/2010/06/Pantallazo3.png" alt="" width="666" height="492" /></a></p>
<p>Una vez que hayamos editado y guardado el archivo gnokiirc conectamos nuestro teléfono al equipo y elegimos la opción PC Suite y ejecutamos el siguiente comando: gnokii –identify</p>
<p>Una vez que hayamos editado y guardado el archivo gnokiirc conectamos nuestro teléfono al equipo y elegimos la opción PC Suite y ejecutamos el siguiente comando: gnokii –identify<br />
Nos tendrá que mostrar  todos los datos de nuestro teléfono</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/06/Pantallazo4.png"><img class="aligncenter size-full wp-image-1500" src="http://www.ubicuos.com/wp-content/uploads/2010/06/Pantallazo4.png" alt="" width="355" height="293" /></a></p>
<p>Nota: Por razones de seguridad edite la parte del IMEI</p>
<p>Ahora está configurado y listo para enviar mensajes</p>
<p>Para probar la funcionalidad del envió de mensajes la sentencia a ejecutar es la siguiente:</p>
<p>echo &#8220;Hola mundo&#8221; | gnokii –sendsms numerocelular</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/06/Pantallazo5.png"><img class="aligncenter size-full wp-image-1501" src="http://www.ubicuos.com/wp-content/uploads/2010/06/Pantallazo5.png" alt="" width="787" height="286" /></a></p>
<p>Nota: por razones de seguridad he editado la pare correspondiente al numero telefónico</p>
<p>Una vez que se halla enviando el mensaje correctamente aparecerá un mensaje de que todo ha salido bien en caso contrario nos mostrara el mensaje failed</p>
<p>con esto damos por concluido este tutorial , cualquier duda o sugerencia estamos para ayudarles</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/07/07/instalacion-y-configuracion-de-gnokii-con-telefono-nokia-5610-y-cable-ca-101/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instalación de Processing en Mac OS X</title>
		<link>http://www.ubicuos.com/2010/07/05/instalacion-de-processing-en-mac-os-x/</link>
		<comments>http://www.ubicuos.com/2010/07/05/instalacion-de-processing-en-mac-os-x/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 04:50:01 +0000</pubDate>
		<dc:creator>Luis Alfredo</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[árbol]]></category>
		<category><![CDATA[evolutivo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[recursividad]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=1541</guid>
		<description><![CDATA[Cuentále a tus amigos en Facebook La instalación de Processing es muy sencilla si se cuanta con los materiales necesarios, solo es cuestión de seguir unos simples pasos: Paso 1: Descargar Processing Descargamos el Processing de la pagina oficial y nos aseguramos que sea la versión para Mac OS X http://www.processing.org/download/, y se guarda donde [...]]]></description>
			<content:encoded><![CDATA[<div align="left" style="padding: 0px 5px 5px 0px; clear: left; float: left;"><a name="fb_share" type="button_count" share_url="http://www.ubicuos.com/2010/07/05/instalacion-de-processing-en-mac-os-x/">Cuentále a tus amigos en Facebook</a></div><div class="tweetmeme_button" style="float: left; margin-left: 10px;width:90px">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F07%2F05%2Finstalacion-de-processing-en-mac-os-x%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F07%2F05%2Finstalacion-de-processing-en-mac-os-x%2F&amp;style=compact&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><a rel="attachment wp-att-1547" href="http://www.ubicuos.com/2010/07/05/instalacion-de-processing-en-mac-os-x/processing_cover/"><img class="aligncenter size-full wp-image-1547" src="http://www.ubicuos.com/wp-content/uploads/2010/07/processing_cover.gif" alt="" width="500" height="80" /></a></p>
<p>La instalación de <strong>Processing</strong> es muy sencilla si se cuanta con los materiales necesarios, solo es cuestión de seguir unos simples pasos:<br />
<strong></strong></p>
<h3>Paso 1: Descargar Processing</h3>
<p>Descargamos el Processing de la pagina oficial y nos aseguramos que sea la versión para <strong>Mac OS X </strong><a href="http://www.processing.org/download/">http://www.processing.org/download/</a>, y se guarda donde sea mas conveniente.</p>
<h3>Paso 2: Ejecutar el Archivo Descargado</h3>
<p>Cuando la descarga se complete ejecutamos el archivo .dmg y aparecerá una ventana como la siguiente.<br />
<a rel="attachment wp-att-1545" href="http://www.ubicuos.com/2010/07/05/instalacion-de-processing-en-mac-os-x/captura-de-pantalla-2010-07-05-a-las-21-40-48-2/"><img class="aligncenter size-medium wp-image-1545" src="http://www.ubicuos.com/wp-content/uploads/2010/07/Captura-de-pantalla-2010-07-05-a-las-21.40.481-300x221.png" alt="" width="300" height="221" /></a></p>
<h3>Paso 3: Instalación en Mac OS X</h3>
<p>Arrastramos el icono de <strong>Processing</strong> encima de la carpeta Aplicaciones, cuando esta se habrá soltamos el icono dentro y esperamos que termine de copiarse.<br />
<a rel="attachment wp-att-1546" href="http://www.ubicuos.com/2010/07/05/instalacion-de-processing-en-mac-os-x/xxx/"><img class="aligncenter size-medium wp-image-1546" src="http://www.ubicuos.com/wp-content/uploads/2010/07/xxx-300x194.png" alt="" width="300" height="194" /></a></p>
<h3>Paso 4: Final de la Instalación</h3>
<p>Una vez hecho lo anterior desmontamos el archivo .dmg, con clic derecho expulsar,  luego nos dirigimos a  nuestra carpeta de aplicaciones y ejecutamos el <strong>Processing</strong>.</p>
<h3>Nota:</h3>
<p>Lo que se utilizo para este tutoríal fue el <strong>Processing</strong> 1.0 y una <strong>MacBook Pro</strong> con <strong>Mac Os X</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/07/05/instalacion-de-processing-en-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 68/119 queries in 3.732 seconds using disk: basic

Served from: www.ubicuos.com @ 2012-02-05 07:56:09 -->
