<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>DeltaLinuXer</title>
	<atom:link href="https://deltalinuxer.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://deltalinuxer.wordpress.com</link>
	<description>Blog de Tecnología y Linux</description>
	<lastBuildDate>Sat, 01 Jun 2019 00:05:07 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<site xmlns="com-wordpress:feed-additions:1">1129279</site><cloud domain='deltalinuxer.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s2.wp.com/i/webclip.png</url>
		<title>DeltaLinuXer</title>
		<link>https://deltalinuxer.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://deltalinuxer.wordpress.com/osd.xml" title="DeltaLinuXer" />
	<atom:link rel='hub' href='https://deltalinuxer.wordpress.com/?pushpress=hub'/>
	<item>
		<title>Escribir LaTeX en un blog WordPress</title>
		<link>https://deltalinuxer.wordpress.com/2019/05/31/escribir-latex-en-un-blog-wordpress/</link>
					<comments>https://deltalinuxer.wordpress.com/2019/05/31/escribir-latex-en-un-blog-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Sat, 01 Jun 2019 00:02:53 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/?p=197</guid>

					<description><![CDATA[Muy sencillo. Sólo debes escribir empezar tu código con $latex y terminarlo con un $. Ejemplo (Transformada de Fourier): $latex \hat{f}(\xi)=\int_{-\infty}^{\infty} f(x) e^{-2 \pi i x \xi} d x $ Resulta en: Para más información y opciones adicionales, visita la documentación de WordPress sobre el tema.]]></description>
										<content:encoded><![CDATA[<p>Muy sencillo. Sólo debes escribir empezar tu código con <strong>$latex</strong> y terminarlo con un <strong>$</strong>.</p>
<p>Ejemplo (Transformada de Fourier):</p>
<p><strong>$latex </strong>\hat{f}(\xi)=\int_{-\infty}^{\infty} f(x) e^{-2 \pi i x \xi} d x<strong> $</strong></p>
<p>Resulta en:</p>
<p><img src="https://s0.wp.com/latex.php?latex=%5Chat%7Bf%7D%28%5Cxi%29%3D%5Cint_%7B-%5Cinfty%7D%5E%7B%5Cinfty%7D+f%28x%29+e%5E%7B-2+%5Cpi+i+x+%5Cxi%7D+d+x&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002" srcset="https://s0.wp.com/latex.php?latex=%5Chat%7Bf%7D%28%5Cxi%29%3D%5Cint_%7B-%5Cinfty%7D%5E%7B%5Cinfty%7D+f%28x%29+e%5E%7B-2+%5Cpi+i+x+%5Cxi%7D+d+x&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002 1x, https://s0.wp.com/latex.php?latex=%5Chat%7Bf%7D%28%5Cxi%29%3D%5Cint_%7B-%5Cinfty%7D%5E%7B%5Cinfty%7D+f%28x%29+e%5E%7B-2+%5Cpi+i+x+%5Cxi%7D+d+x&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002&#038;zoom=4.5 4x" alt="&#92;hat{f}(&#92;xi)=&#92;int_{-&#92;infty}^{&#92;infty} f(x) e^{-2 &#92;pi i x &#92;xi} d x" class="latex" /></p>
<p>Para más información y opciones adicionales, visita la <a href="https://en.support.wordpress.com/latex/" target="_blank" rel="noopener">documentación de WordPress sobre el tema</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2019/05/31/escribir-latex-en-un-blog-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">197</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>
	</item>
		<item>
		<title>[Control Automático] Feedback Linearization: breve reseña</title>
		<link>https://deltalinuxer.wordpress.com/2019/05/31/feedback-linearization-intro/</link>
					<comments>https://deltalinuxer.wordpress.com/2019/05/31/feedback-linearization-intro/#respond</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Fri, 31 May 2019 23:42:15 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[automatic control]]></category>
		<category><![CDATA[control]]></category>
		<category><![CDATA[control automatico]]></category>
		<category><![CDATA[feedback linearization]]></category>
		<category><![CDATA[nonlinear]]></category>
		<category><![CDATA[sistemas]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/?p=193</guid>

					<description><![CDATA[En uno de mis cursos del Máster me encontré con este método que se utiliza para controlar sistemas no lineales. Consideremos una planta SISO escrita en forma afín (es decir, con separadas): con vector de estados, vector de entradas al sistema, e vector de salidas. La idea de este approach es determinar una entrada específica [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>En uno de mis cursos del Máster me encontré con este método que se utiliza para controlar sistemas no lineales.</p>
<p>Consideremos una planta SISO escrita en forma afín (es decir, con <img src="https://s0.wp.com/latex.php?latex=f%28x%29%2C+g%28x%29&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002" srcset="https://s0.wp.com/latex.php?latex=f%28x%29%2C+g%28x%29&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002 1x, https://s0.wp.com/latex.php?latex=f%28x%29%2C+g%28x%29&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002&#038;zoom=4.5 4x" alt="f(x), g(x)" class="latex" /> separadas):</p>
<p><img src="https://s0.wp.com/latex.php?latex=%5Cbegin%7Barray%7D%7Bl%7D%7B%5Cdot%7Bx%7D%3Df%28x%29%2Bg%28x%29+u%7D+%5C%5C+%7By%3Dh%28x%29%7D%5Cend%7Barray%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002" srcset="https://s0.wp.com/latex.php?latex=%5Cbegin%7Barray%7D%7Bl%7D%7B%5Cdot%7Bx%7D%3Df%28x%29%2Bg%28x%29+u%7D+%5C%5C+%7By%3Dh%28x%29%7D%5Cend%7Barray%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002 1x, https://s0.wp.com/latex.php?latex=%5Cbegin%7Barray%7D%7Bl%7D%7B%5Cdot%7Bx%7D%3Df%28x%29%2Bg%28x%29+u%7D+%5C%5C+%7By%3Dh%28x%29%7D%5Cend%7Barray%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002&#038;zoom=4.5 4x" alt="&#92;begin{array}{l}{&#92;dot{x}=f(x)+g(x) u} &#92;&#92; {y=h(x)}&#92;end{array}" class="latex" /></p>
<p>con <img src="https://s0.wp.com/latex.php?latex=x+%5Cin+%5Cmathbb%7BR%7D%5E%7Bn%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002" srcset="https://s0.wp.com/latex.php?latex=x+%5Cin+%5Cmathbb%7BR%7D%5E%7Bn%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002 1x, https://s0.wp.com/latex.php?latex=x+%5Cin+%5Cmathbb%7BR%7D%5E%7Bn%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002&#038;zoom=4.5 4x" alt="x &#92;in &#92;mathbb{R}^{n}" class="latex" /> vector de estados, <img src="https://s0.wp.com/latex.php?latex=u+%5Cin+%5Cmathbb%7BR%7D%5E%7Bp%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002" srcset="https://s0.wp.com/latex.php?latex=u+%5Cin+%5Cmathbb%7BR%7D%5E%7Bp%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002 1x, https://s0.wp.com/latex.php?latex=u+%5Cin+%5Cmathbb%7BR%7D%5E%7Bp%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002&#038;zoom=4.5 4x" alt="u &#92;in &#92;mathbb{R}^{p}" class="latex" /> vector de entradas al sistema, e <img src="https://s0.wp.com/latex.php?latex=y+%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002" srcset="https://s0.wp.com/latex.php?latex=y+%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002 1x, https://s0.wp.com/latex.php?latex=y+%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%7D&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002&#038;zoom=4.5 4x" alt="y &#92;in &#92;mathbb{R}^{m}" class="latex" /> vector de salidas. La idea de este approach es determinar una entrada <img src="https://s0.wp.com/latex.php?latex=u&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002" srcset="https://s0.wp.com/latex.php?latex=u&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002 1x, https://s0.wp.com/latex.php?latex=u&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002&#038;zoom=4.5 4x" alt="u" class="latex" /> específica para esta planta (una regla de control), de modo que todas las no linealidades se anulen:</p>
<p><img src="https://s0.wp.com/latex.php?latex=u%3Da%28x%29%2Bb%28x%29+v&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002" srcset="https://s0.wp.com/latex.php?latex=u%3Da%28x%29%2Bb%28x%29+v&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002 1x, https://s0.wp.com/latex.php?latex=u%3Da%28x%29%2Bb%28x%29+v&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002&#038;zoom=4.5 4x" alt="u=a(x)+b(x) v" class="latex" /></p>
<p>Todo el sistema en conjunto, por lo tanto, se convierte en un mapeo lineal <a href="https://es.wikipedia.org/wiki/Función_biyectiva" target="_blank" rel="noopener">1-a-1 </a>entre la entrada nueva <img src="https://s0.wp.com/latex.php?latex=v&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002" srcset="https://s0.wp.com/latex.php?latex=v&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002 1x, https://s0.wp.com/latex.php?latex=v&#038;bg=efefef&#038;fg=555555&#038;s=0&#038;c=20201002&#038;zoom=4.5 4x" alt="v" class="latex" /> y la salida del sistema original.</p>
<p>¿Cuál es la ventaja de todo esto? El nuevo sistema es lineal, por lo tanto, podemos aplicar cualquier método que sirva para sistemas LTI en esta nueva planta modificada. Cabe destacar que estos métodos son mucho más universales que los métodos para control no lineal. Éstos últimos normalmente tienen requisitos mucho más restrictivos con respecto a su aplicabilidad.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2019/05/31/feedback-linearization-intro/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">193</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>
	</item>
		<item>
		<title>IPython: diferencias entre %paste y %cpaste</title>
		<link>https://deltalinuxer.wordpress.com/2016/12/14/ipython-diferencias-entre-paste-y-cpaste/</link>
					<comments>https://deltalinuxer.wordpress.com/2016/12/14/ipython-diferencias-entre-paste-y-cpaste/#respond</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Thu, 15 Dec 2016 01:48:02 +0000</pubDate>
				<category><![CDATA[Investigación]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[cpaste]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[ipython]]></category>
		<category><![CDATA[paste]]></category>
		<category><![CDATA[terminal]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/?p=183</guid>

					<description><![CDATA[Estoy trabajando en un proyecto via remota en el que utilizo mayoritariamente Python (y uno que otro lenguaje más). Tenía un código en mi máquina local que quería testear en el intérprete de la máquina remota, por lo que decidí pegarlo utilizando el conocido comando %paste, pero obtuve el siguiente error: /usr/lib/python2.7/lib-tk/Tkinter.pyc in __init__(self, screenName, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Estoy trabajando en un proyecto via remota en el que utilizo mayoritariamente Python (y uno que otro lenguaje más). Tenía un código en mi máquina local que quería testear en el intérprete de la máquina remota, por lo que decidí pegarlo utilizando el conocido comando <code>%paste</code>, pero obtuve el siguiente error:</p>
<p><code>/usr/lib/python2.7/lib-tk/Tkinter.pyc in __init__(self, screenName, baseName, className, useTk, sync, use)<br />
   1686                 baseName = baseName + ext<br />
   1687         interactive = 0<br />
-&gt; 1688         self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)<br />
   1689         if useTk:<br />
   1690             self._loadtk()</p>
<p>TclError: no display name and no $DISPLAY environment variable<br />
</code></p>
<p>¿Cuál es el problema en este caso? Según la información que encontré en el <a href="https://www.pythonanywhere.com/forums/topic/22/" target="_blank">siguiente post de PythonAnywhere.com</a>, el comando <code>%paste</code> toma la información directamente desde tu portapapeles, siendo así mucho más cómodo para nosotros, los que programamos. Sin embargo, el problema aquí es que por razones de seguridad, la sesión IPython no puede acceder al portapapeles de mi máquina local, dado que está siendo ejecutado a través de una sesión ssh. La solución en este caso es utilizar una variante: el comando <code>%cpaste</code>, que a diferencia del anterior, este solicita a través de consola pegar directamente el trozo de código que queremos ejecutar. De este modo, IPython recibe la información de manera explícita porque nosotros manualmente la pegamos. No olvides poner los dos guiones al final <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><code>In [3]: %cpaste<br />
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.<br />
:</code></p>
<p>Fuente:<br />
%paste magic fucntion in ipython? | <a href="https://www.pythonanywhere.com/forums/topic/22/" target="_blank">siguiente post de PythonAnywhere</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2016/12/14/ipython-diferencias-entre-paste-y-cpaste/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">183</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>
	</item>
		<item>
		<title>[Guía] Instalación de GADGET2 en Ubuntu/LinuxMint</title>
		<link>https://deltalinuxer.wordpress.com/2013/02/19/guia-instalacion-de-gadget2-en-ubuntulinuxmint/</link>
					<comments>https://deltalinuxer.wordpress.com/2013/02/19/guia-instalacion-de-gadget2-en-ubuntulinuxmint/#comments</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Wed, 20 Feb 2013 03:01:34 +0000</pubDate>
				<category><![CDATA[Astronomía]]></category>
		<category><![CDATA[Guías]]></category>
		<category><![CDATA[Investigación]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/?p=156</guid>

					<description><![CDATA[GADGET2 (GAlaxies with Dark matter and Gas intEracT) es un código que nos permite realizar simulaciones cosmológicas sin colisiones entre partículas y con interacción de gases. Resulta ser un programa interesantísimo si quieres hacer algo de ciencia de verdad en tu computador. Esta guía considera que tienes instalado en tu máquina alguna versión actual (al [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>GADGET2 (<strong>GA</strong>laxies with <strong>D</strong>ark matter and <strong>G</strong>as int<strong>E</strong>rac<strong>T</strong>) es un código que nos permite realizar simulaciones cosmológicas sin colisiones entre partículas y con interacción de gases. Resulta ser un programa interesantísimo si quieres hacer algo de ciencia de verdad en tu computador. Esta guía considera que tienes instalado en tu máquina alguna versión actual (al 2012/2013) de Ubuntu o LinuxMint (éste último es el que estoy utilizando actualmente).</p>
<p>Más información después del salto:</p>
<p><span id="more-156"></span></p>
<p>La versión a utilizar en esta guía es Gadget-2.0.7. Más información y link de descarga están disponibles en el <a href="http://www.mpa-garching.mpg.de/gadget/" target="_blank">sitio web oficial GADGET2</a>.</p>
<p>Antes de realizar algo, es necesario instalar las dependencias de GADGET:</p>
<ol>
<li>
<h2><span style="line-height:13px;">HDF5</span></h2>
<p>La versión de HDF5 que utiliza GADGET es 1.6.x, puesto que se han hecho modificaciones incompatibles con el programa en las versiones posteriores. Al buscar en los repositorios en Synaptic, me encuentro con el paquete <strong>libhdf5-7</strong>, pero ésta corresponde a la versión 1.8.8-9, por lo que no nos sirve, así que toca configurar a mano. Descargamos la versión shared del siguiente link, dependiendo de su sistema operativo y configuración <a href="http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.6.10/bin/">http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.6.10/bin/</a>. Mi sistema es de 64bits, por lo que descargué la versión <strong>linux-x86-64</strong>, pero si el tuyo es de 32bits debes descargar el <strong>linux-x86</strong>. Descomprimimos en nuestra carpeta HOME y renombramos la carpeta a <strong>.hdf5.</strong></p>
<p><code>usuario@linux ~/Descargas $ tar xvzf 5-1.6.10-linux-x86_64-shared.tar.gz<br />
usuario@linux ~/Descargas $ mv 5-1.6.10-linux-x86_64-shared ../.hdf5</code></p>
<p>Posteriormente configuraremos el Makefile de GADGET para que reconozca el directorio de HDF5.</li>
<li>
<h2><span style="line-height:13px;">FFTW</span></h2>
<p>Tenemos la suerte de que este paquete esté en los repositorios con la versión que necesitamos (2.1.5), puesto que la versión 3 no es compatible con GADGET. Sólo basta con ejecutar esto:<br />
<code>usuario@linux $ sudo apt-get install fftw-dev sfftw-dev</code></li>
<li>
<h2><span style="line-height:13px;">GSL (GNU Scientific Library)</span></h2>
<p><code>usuario@linux $ sudo apt-get install libgsl0-dev</code></li>
<li>
<h2><span style="line-height:13px;">MPICH</span></h2>
<p>Necesitamos la versión 1.0 o superior. En los repositorios lo encontramos fácilmente:<br />
<code>usuario@linux $ sudo apt-get install mpich2 build-essential</code></li>
<li>
<h2><span style="line-height:13px;">SZIP</span></h2>
<p>Descargamos el código fuente desde la siguiente página <a href="http://www.hdfgroup.org/doc_resource/SZIP/" rel="nofollow">http://www.hdfgroup.org/doc_resource/SZIP/</a>. El link está casi al final (<a href="http://www.hdfgroup.org/ftp/lib-external/szip/2.1/src/szip-2.1.tar.gz">link directo</a>). Descomprimimos y vamos al directorio resultante:<br />
<code>% mkdir ~/.szip<br />
% ./configure --prefix=/home/($tuusuario)/.szip<br />
% make<br />
% make check<br />
% make install</code></li>
</ol>
<h2>Configuración del Makefile</h2>
<p>En el Makefile debemos notificar a GADGET en dónde se encuentran las librerías y cabeceras necesarias. Descomprimimos el contenido del tarball de Gadget2 en nuestra carpeta HOME, y buscamos la línea que dice <strong>SYSTYPE=”MPA”</strong>, cerca de la línea 89. Esto es para configurar los directorios dependiendo de la configuración de tu computador. Nosotros modificaremos éste, que es más general:</p>
<p><code>usuario@linux ~ $ cd ~/Gadget-2.0.7/Gadget2<br />
usuario@linux ~/Gadget-2.0.7/Gadget2 $ nano Makefile</code></p>
<p>Localizamos el siguiente párrafo y agregamos lo que aparece en negrita:<br />
<code>ifeq ($(SYSTYPE),"MPA")<br />
CC       =  mpicc<br />
OPTIMIZE =  -O3 -Wall<br />
GSL_INCL =  -I/usr/common/pdsoft/include<br />
GSL_LIBS =  -L/usr/common/pdsoft/lib  -Wl,"-R /usr/common/pdsoft/lib"<br />
FFTW_INCL=<br />
FFTW_LIBS=<br />
MPICHLIB =<br />
HDF5INCL = <strong>-I/home/($tuusuario)/.hdf5/include</strong><br />
HDF5LIB  = <strong>-L/home/($tuusuario)/.hdf5/lib -L/home/($tuusuario)/.szip/lib -lsz</strong> -lhdf5 -lz<br />
endif<br />
</code></p>
<p>Ahora, para correr el ejemplo de la galaxia, necesitamos modificar lo siguiente en el Makefile:</p>
<p><code>#OPT += -DPERIODIC<br />
OPT += -DUNEQUALSOFTENINGS<br />
#OPT += -DPMGRID=128<br />
OPT += -DHAVE_HDF5<br />
#OPT += -DDOUBLEPRECISION<br />
#OPT += -DDOUBLEPRECISION_FFTW</code></p>
<p>Si no hacemos estas últimas modificaciones al Makefile, no será posible correr el ejemplo de galaxia. Ahora procedemos a compilar:</p>
<p><code>usuario@linux ~/Gadget-2.0.7/Gadget2 $ make</code></p>
<p>El comando anterior no debiera darte ningún error de compilación y resultarte un binario llamado «Gadget2». Ahora, para correr la simulación con el archivo de ejemplo de la galaxia, debemos editar el archivo <strong>parameterfiles/galaxy.param</strong> y crear una carpeta <strong>galaxy</strong> en el actual directorio (el mismo del ejecutable de Gadget) para guardar la salida de la simulación.</p>
<p><code>usuario@linux ~/Gadget-2.0.7/Gadget2 $ mkdir galaxy<br />
usuario@linux ~/Gadget-2.0.7/Gadget2 $ nano parameterfiles/galaxy.param</code></p>
<p>Editamos la línea que dice<br />
<code>InitCondFile       ICs/galaxy_littleendian.dat</code><br />
Y la dejamos así:<br />
<code>InitCondFile       /home/($tuusuario)/Gadget-2.0.7/ICs/galaxy_littleendian.dat</code></p>
<p>Guardamos con <strong>Ctrl-O</strong>, y luego <strong>Enter</strong>, y salimos con <strong>Ctrl-X</strong>.</p>
<p>Finalmente corremos la simulación con el siguiente comando:<br />
<code>usuario@linux ~/Gadget-2.0.7/Gadget2 $ mpirun -np 2 ./Gadget2 parameterfiles/galaxy.param</code></p>
<p>Los archivos de salida son snapshots que tienen información de cada una de las partículas que se están simulando. Luego de unas horas debiera finalizar la simulación y seremos capaces de visualizar lo «ocurrido» con algunas herramientas, tales como SPLASH, entre otras. Eso queda para otro post.</p>
<p>Happy Science!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2013/02/19/guia-instalacion-de-gadget2-en-ubuntulinuxmint/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">156</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>
	</item>
		<item>
		<title>[SPLASH] Solución a problema de linkeado/compilación por «falta» de librería libX11.so</title>
		<link>https://deltalinuxer.wordpress.com/2013/02/07/splash-solucion-a-problema-de-linkeadocompilacion-por-falta-de-libreria-libx11-so/</link>
					<comments>https://deltalinuxer.wordpress.com/2013/02/07/splash-solucion-a-problema-de-linkeadocompilacion-por-falta-de-libreria-libx11-so/#respond</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Thu, 07 Feb 2013 22:47:11 +0000</pubDate>
				<category><![CDATA[Astronomía]]></category>
		<category><![CDATA[Investigación]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[astronomía]]></category>
		<category><![CDATA[ciencia]]></category>
		<category><![CDATA[compilación]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[guia]]></category>
		<category><![CDATA[librerias]]></category>
		<category><![CDATA[splash]]></category>
		<category><![CDATA[x11]]></category>
		<category><![CDATA[xorg]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/?p=153</guid>

					<description><![CDATA[Cuando se trata de trabajar con un computador en pos de la ciencia, puede pasar que no todo resulte hermoso al primer intento. Sucedió al intentar compilar SPLASH con el comando make SYSTEM=gfortran que éste me lanzaba el siguiente error: ... /usr/bin/ld: ../giza/lib/libgiza.a(giza-driver-xw.o): undefined reference to symbol 'XFlush' /usr/bin/ld: note: 'XFlush' is defined in DSO [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Cuando se trata de trabajar con un computador en pos de la ciencia, puede pasar que no todo resulte hermoso al primer intento. Sucedió al intentar compilar SPLASH con el comando <strong>make SYSTEM=gfortran</strong> que éste me lanzaba el siguiente error:</p>
<p><code>...</p>
<p> /usr/bin/ld: ../giza/lib/libgiza.a(giza-driver-xw.o): undefined reference to symbol 'XFlush'</p>
<p> /usr/bin/ld: note: 'XFlush' is defined in DSO /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libX11.so so try adding it to the linker command line</p>
<p> /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libX11.so: could not read symbols: Invalid operation</p>
<p> collect2: error: ld returned 1 exit status</p>
<p> make[1]: *** [ascii] Error 1</p>
<p> make[1]: Leaving directory `/home/saogalde/Descargas/splash/build'</p>
<p> make: *** [splash] Error 2</p>
<p> </code></p>
<p>Un error extraño. Revisé que las librerías estuvieran en algún archivo de <strong>/etc/ld.so.conf.d</strong>, agregué el directorio manualmente a la variable de entorno <strong>LD_LIBRARY_PATH</strong>, pero nada. El error seguía apareciendo.</p>
<p>La solución es muy simple. Debes abrir el Makefile que está en <strong>/directorio/de/splash/build</strong> (no el que está en el directorio raíz de SPLASH), <strong>agregar</strong> la línea en negrita, y <strong>comentar</strong> (agregar un símbolo <strong>#</strong>) las otras que digan <strong>X11LIBS</strong>.</p>
<p><code>#</p>
<p> # change the line below if SPLASH does not find the X11 libraries</p>
<p> # (some settings of the SYSTEM variable for specific machines overwrite this)</p>
<p> #</p>
<p> <strong>#</strong>X11LIBS= -L/usr/X11R6/lib64 -lX11</p>
<p> <strong>#</strong>X11LIBS= -L/usr/X11R6/lib -lX11</p>
<p> <strong>X11LIBS= -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libX11.so</strong></p>
<p> </code></p>
<p>Después, hacer un make clean y recompilar:</p>
<p> <code>usuario@linux ~/splash $ make clean</p>
<p> usuario@linux ~/splash $ make SYSTEM=gfortran</code></p>
<p>Fuente | <a href="https://groups.google.com/forum/#!msg/splash-users/f4zXB9zhqO8/qzJaAVZrRrMJ" target="_blank">Pregunta en GoogleGroups</a></p>
<p> Miniguía Instalación SPLASH | <a title="Instalación del Visualizador SPLASH en Linux" href="https://deltalinuxer.wordpress.com/2013/02/07/instalacion-del-visualizador-splash-en-linux/" target="_blank">Deltalinuxer</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2013/02/07/splash-solucion-a-problema-de-linkeadocompilacion-por-falta-de-libreria-libx11-so/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">153</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalación del Visualizador SPLASH en Linux</title>
		<link>https://deltalinuxer.wordpress.com/2013/02/07/instalacion-del-visualizador-splash-en-linux/</link>
					<comments>https://deltalinuxer.wordpress.com/2013/02/07/instalacion-del-visualizador-splash-en-linux/#comments</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Thu, 07 Feb 2013 20:29:27 +0000</pubDate>
				<category><![CDATA[Astronomía]]></category>
		<category><![CDATA[Guías]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/?p=149</guid>

					<description><![CDATA[Estos últimos días he estado explorando el programa de simulaciones GADGET2. Debo decir que no ha sido fácil, pero después de dedicarle un buen tiempo nada es imposible. Profundizaré en la instalación (y uso) de GADGET en otro post, ahora me centraré en la instalación de una herramienta muy útil para la visualización de «snapshots» [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img class="alignleft" alt="Galaxy" src="https://i0.wp.com/www.mpa-garching.mpg.de/gadget/col250stillsmaller.jpeg" width="62" height="62" />Estos últimos días he estado explorando el programa de simulaciones <a title="Gadget2" href="http://www.mpa-garching.mpg.de/gadget/" target="_blank">GADGET2</a>. Debo decir que no ha sido fácil, pero después de dedicarle un buen tiempo nada es imposible. Profundizaré en la instalación (y uso) de GADGET en otro post, ahora me centraré en la instalación de una herramienta muy útil para la visualización de «snapshots» que GADGET entrega al hacer simulaciones. En palabras simples, un <strong>snapshot</strong> es un archivo que contiene toda la información de cada una de las partículas que forman tu simulación.</p>
<p>En primer lugar, si estamos utilizando Ubuntu/Linux Mint/similar, debemos instalar los paquetes <strong>libcairo2-dev</strong> y <strong>gfortran</strong>, que son necesarios para compilar sin problemas. Gfortran es un compilador de fortran. Si quieres utilizar otro, échale una mirada al README que viene en el archivo que vamos a descargar en un momento.</p>
<p><code>usuario@linux ~ $ sudo apt-get install libcairo2-dev</code></p>
<p>Para instalar esta utilidad, primero descargamos el código fuente desde la <a href="http://users.monash.edu.au/~dprice/splash/download.html" target="_blank">página oficial SPLASH</a>. Luego, vamos al lugar donde descargamos el archivo y descomprimimos:</p>
<p><code>usuario@linux ~ $ cd ~/Descargas<br />
usuario@linux ~/Descargas $ tar xvzf splash-2.2.0.tar.gz<br />
usuario@linux ~/Descargas $ cd splash<br />
usuario@linux ~/Descargas/splash $ make SYSTEM=gfortran<br />
usuario@linux ~/Descargas/splash $ sudo make install</code></p>
<p>Luego de esto, debieras ser capaz de utilizar los comandos asociados al programa. En el caso de GADGET, se usa el comando <strong>gplash</strong>, seguido del nombre del snapshot generado por la simulación.</p>
<p>Espero les haya sido de utilidad.</p>
<p>Página oficial de SPLASH | <a href="http://users.monash.edu.au/~dprice/splash/download.html" target="_blank">SPLASH</a><br />
Página oficial de Gadget2 | <a href="http://www.mpa-garching.mpg.de/gadget/" target="_blank">GADGET</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2013/02/07/instalacion-del-visualizador-splash-en-linux/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">149</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>

		<media:content url="http://www.mpa-garching.mpg.de/gadget/col250stillsmaller.jpeg" medium="image">
			<media:title type="html">Galaxy</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>https://deltalinuxer.wordpress.com/2012/11/17/148/</link>
					<comments>https://deltalinuxer.wordpress.com/2012/11/17/148/#respond</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Sun, 18 Nov 2012 02:40:27 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/2012/11/17/148/</guid>

					<description><![CDATA[Originalmente publicado en <a href="https://espaciodecesar.com/2012/10/01/primeros-pasos-en-la-construccin-de-un-fusor-nuclear-primera-parte/">Espacio de Cesar</a>: <br />&#160; (Espero que mis vecinos no lean este título, ya veo que me echan del barrio.) Desde hace ya bastante tiempo tengo en mente encarar este proyecto que es algo complejo porque requiere de experiencia en varios campos, manejo de técnicas de alto vacío, altísimas tensiones y electrónicas varias&#8230;]]></description>
										<content:encoded><![CDATA[<div class="wpcom-reblog-snapshot"><div class="reblogger-note"><div class='reblogger-note-content'><blockquote><p>Add your thoughts here&#8230; (optional)</p>
</blockquote></div></div><div class="reblog-post"><p class="reblog-from"><img alt='Avatar de César' src='https://2.gravatar.com/avatar/8594a820dcf8afb1c782f5e252c26e9d1bd6c48af762e61c7c033347e92a153b?s=32&#038;d=identicon&#038;r=G' class='avatar avatar-32' height='32' width='32' /><a href="https://espaciodecesar.com/2012/10/01/primeros-pasos-en-la-construccin-de-un-fusor-nuclear-primera-parte/">Espacio de Cesar</a></p><div class="reblogged-content">
<p>  </p>

<p>(Espero que mis vecinos no lean este título, ya veo que me echan del barrio.)  </p>

<p>Desde hace ya bastante tiempo tengo en mente encarar este proyecto que es algo complejo porque requiere de experiencia en varios campos, manejo de técnicas de alto vacío, altísimas tensiones y electrónicas varias y un poco de habilidad mecánica.  </p>

<p>A lo largo de varios años he venido preparando el terreno para esto y he acumulado casi todo lo necesario.  </p>

<p>En estos días he realizado algunas pruebas como para ir probando los sistemas y si mi laboratorio-taller soporta llegar hasta estos límites de complejidad.  </p>

<p>La idea es armar un fusor demostrativo de Farnsworth como para probar todo y de ahí comenzar la experimentación con un fusor de diseño propio buscando la utópica idea de inventar un equipo para generar energía.  </p>

<p></p>

<p>Como para entrar en tema les diré que las reacciones nucleares, son las que se…</p>
</div><p class="reblog-source"><a href="https://espaciodecesar.com/2012/10/01/primeros-pasos-en-la-construccin-de-un-fusor-nuclear-primera-parte/">Ver la entrada original</a> <span class="more-words">811 palabras más</span></p></div></div>]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2012/11/17/148/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">148</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>
	</item>
		<item>
		<title>[Programación] Uso de punteros en C</title>
		<link>https://deltalinuxer.wordpress.com/2012/06/13/punteros-en-c/</link>
					<comments>https://deltalinuxer.wordpress.com/2012/06/13/punteros-en-c/#comments</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Wed, 13 Jun 2012 10:05:56 +0000</pubDate>
				<category><![CDATA[Guías]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[direccion]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[k&r]]></category>
		<category><![CDATA[lenguaje]]></category>
		<category><![CDATA[librerias]]></category>
		<category><![CDATA[malloc]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[punteros]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/?p=141</guid>

					<description><![CDATA[Representando sólo una dirección de memoria, los punteros en C constituyen su mejor arma, permitiéndote hace TODO lo que se ocurra en el dispositivo en donde esté corriendo el programa (o casi todo, si el sistema es muy robusto jaja). Más después del salto 🙂 En esencia, un puntero en C es un tipo de [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://deltalinuxer.wordpress.com/wp-content/uploads/2012/06/asterisco.gif"><img data-attachment-id="142" data-permalink="https://deltalinuxer.wordpress.com/2012/06/13/punteros-en-c/asterisco/" data-orig-file="https://deltalinuxer.wordpress.com/wp-content/uploads/2012/06/asterisco.gif" data-orig-size="357,280" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="asterisco" data-image-description="" data-image-caption="" data-large-file="https://deltalinuxer.wordpress.com/wp-content/uploads/2012/06/asterisco.gif?w=357" class="alignleft size-thumbnail wp-image-142" title="asterisco" src="https://deltalinuxer.wordpress.com/wp-content/uploads/2012/06/asterisco.gif?w=150&#038;h=117" alt="" width="150" height="117" srcset="https://deltalinuxer.wordpress.com/wp-content/uploads/2012/06/asterisco.gif?w=150 150w, https://deltalinuxer.wordpress.com/wp-content/uploads/2012/06/asterisco.gif?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" /></a>Representando sólo una dirección de memoria, los punteros en C constituyen su mejor arma, permitiéndote hace TODO lo que se ocurra en el dispositivo en donde esté corriendo el programa (o casi todo, si el sistema es muy robusto jaja). Más después del salto <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span id="more-141"></span></p>
<p>En esencia, un puntero en C es un tipo de dato (una variable) que apunta a una dirección en memoria (RAM). Se declara de la siguiente forma:</p>
<p><code>tipo *nombre_puntero;</code></p>
<p>Esa dirección de memoria a la que apunta puede ser la dirección de otra variable, una estructura, o incluso una función! Sin embargo, el puntero sólo puede apuntar a variables de su propio tipo, es decir, si tengo un puntero de tipo <em>char</em> solo puedo hacer que apunte a variables char.</p>
<p>Hay que tener claro que las variables son datos que se guardan en memoria para ser utilizados en el programa que estamos creando. Cuando declaramos una, estamos reservando un espacio en la memoria. Este espacio tiene un nombre definido (se expresa en hexadecimal, algo asi como 0x23b231 por ejemplo). Este «nombre» es lo que guardamos en un puntero. Ahora, cuando damos un valor a una variable, estamos escribiendo sobre la memoria dicho valor, al que accedemos cuando llamamos la variable.</p>
<p>En ese punto se hace necesario definir dos operadores que son muy útiles en C para trabajar con punteros. El primero es el operador de dereferenciación (o deSreferenciación, da igual je) que se obtiene anteponiendo asterisco al nombre de la variable. Su función es retornar el valor de la variable a la que apunta el puntero. Suena feo ¿no? Primero definamos el otro operador. Éste es el operador <strong>&amp;</strong> que hace específicamente lo contrario: devuelve la dirección de memoria de la variable. Ahora sí el ejemplo para clarificar las cosas <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> :</p>
<p><code><br />
int *pointer;          /* Definimos el puntero que apuntará a un INT */<br />
int numero = 20;       /* definimos una variable arbitraria, solo para ejemplificar */<br />
pointer = &amp;numero;     /* El operador <strong>&amp;</strong> devuelve la dirección en memoria de la variable numero, y 'pointer' toma ese valor. Dicho de otra forma, ahora 'pointer' apunta a 'numero' */<br />
</code></p>
<p>De esta forma, el puntero &#8216;pointer&#8217; guarda en su interior la dirección de memoria de la variable &#8216;numero&#8217;, por lo en palabras de programador, &#8216;pointer&#8217; apunta a &#8216;numero&#8217;. Ahora, lo conveniente de los punteros, es que si lo llamamos anteponiéndole un asterisco (dereferenciación) podremos acceder al valor de la variable que guarda, o sea:</p>
<p><code><br />
printf("%d", *pointer);<br />
</code></p>
<p>Tal código imprime &#8217;20&#8217; en pantalla. No es tan difícil como parece. ¿Qué pasaría si no pusiéramos el asterisco? Simplemente se imprimiría el valor que guarda el puntero, es decir, la dirección de memoria de &#8216;numero&#8217;, sin embargo, para hacer esto sería más correcto poner dentro del printf un <strong>%p</strong> que es para imprimr direcciones de memoria.</p>
<p><code><br />
printf("%p", pointer);  /* lo probé en mi PC y me retornó 0x7fff97f9a834 */<br />
</code></p>
<p>Éste último código es equivalente a haber puesto <strong><em>&amp;numero</em></strong>, ya que <strong>&amp;</strong> retorna la dirección de memoria de la variable. Ahora, ¿qué sucedería si a &#8216;pointer&#8217; le anteponemos el operador <strong>&amp;</strong>? Retornaría la dirección de memoria del mismo puntero. Recordemos que un puntero es una variable también, por ende, está alojada en algún lugar de la memoria del PC, y ciertamente este lugar de la memoria tiene una dirección :).</p>
<p>Otro uso interesante del operador <strong>*</strong> es que puedes modificar el valor de la variable a la que apuntas usando el puntero. Un ejemplo considerando las variables &#8216;pointer&#8217; y &#8216;numero&#8217; del código anterior:</p>
<p><code><br />
numero = 30;            /* Modificamos el valor de 'numero' */<br />
printf("%d", numero);   /* Claramente esto imprime '30' en pantalla */<br />
*pointer= 200;          /* Modificamos el <em>valor de la variable apuntada por pointer</em> a 200 */<br />
printf("%d", numero);   /* Esto imprime '200' en pantalla */<br />
</code></p>
<p>O sea, cuando antepones <strong>*</strong> al llamar a un puntero, es como si estuvieras trabajando directamente con la variable apuntada.</p>
<p><strong>No confundir</strong>: Una cosa es anteponer un asterisco al nombre de una variable en su declaración, esto indica que estás declarando un puntero&#8230; Y otra cosa muy distinta es anteponer un asterisco al nombre de un puntero cuando lo <em>llamas</em>, esto indica que quieres acceder al valor de la variable a la que apunta. Ojo con eso.</p>
<p>Lo más probable es que te estés preguntando para qué utilizarías punteros en tu programa. Eso queda para un próximo tutorial <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Les recomiendo lean <strong>El Lenguaje de Programación</strong> de <em>Kernighan&amp;Ritchie</em>. Explica todo esto con una profundidad mayor.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2012/06/13/punteros-en-c/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">141</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>

		<media:content url="https://deltalinuxer.wordpress.com/wp-content/uploads/2012/06/asterisco.gif?w=150" medium="image">
			<media:title type="html">asterisco</media:title>
		</media:content>
	</item>
		<item>
		<title>[Programación] Crear arrays de dos dimensiones en C usando malloc()</title>
		<link>https://deltalinuxer.wordpress.com/2012/06/01/crear-arrays-2d-usando-malloc-en-c/</link>
					<comments>https://deltalinuxer.wordpress.com/2012/06/01/crear-arrays-2d-usando-malloc-en-c/#comments</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Fri, 01 Jun 2012 07:32:05 +0000</pubDate>
				<category><![CDATA[Guías]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[arrays]]></category>
		<category><![CDATA[asignacion]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[dinamica]]></category>
		<category><![CDATA[estandar]]></category>
		<category><![CDATA[k&r]]></category>
		<category><![CDATA[malloc]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[stdio.h]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/?p=137</guid>

					<description><![CDATA[Suele ocurrir que quieres crear arrays multidimensionales dentro de tu programa, pero en algunas ocasiones es muchísimo más conveniente crearlas dinámicamente utilizando malloc(). Las instrucciones después del salto! 🙂 En primera instancia, sería bueno saber más o menos lo que hace esta función. malloc() reserva un espacio en memoria del tamaño que tú prefieras (se [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Suele ocurrir que quieres crear arrays multidimensionales dentro de tu programa, pero en algunas ocasiones es muchísimo más conveniente crearlas dinámicamente utilizando <strong>malloc()</strong>.</p>
<p>Las instrucciones después del salto! <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span id="more-137"></span></p>
<p>En primera instancia, sería bueno saber más o menos lo que hace esta función. <strong>malloc()</strong> reserva un espacio en memoria del tamaño que tú prefieras (se le dice en los argumentos), devolviendo un <strong>puntero void</strong> (mucho cuidado con eso!) que debe ser <abbr title="convertido">casteado</abbr> al tipo de puntero que necesites.</p>
<p>malloc se define de la siguiente manera:</p>
<p><code>void* malloc(size_t tamanyo_en_bytes)</code></p>
<blockquote><p>NOTA: Para realizar este tipo de operaciones es necesario tener como conocimiento previo la intrínseca relación que hay entre arrays y punteros, ya que estos son prácticamente lo mismo, solo que se escriben de distinta forma. Si tienes dudas con respecto a ésto te recomiendo eches una hojeada al famosísimo <strong>«El Lenguaje de Programación C»</strong> de Kernighan&amp;Ritchie, sino haz algunas búsquedas en la web sobre el tema.</p></blockquote>
<p>Bueno, al grano. Si queremos crear un nuevo array lo hacemos de la siguiente forma (considerando que necesitamos un array de <strong>int</strong>. Cabe destacar que crearemos una función que tenga dos argumentos enteros: uno que se llame <strong>tamanyo_en_ejeY</strong> y otro <strong>tamanyo_en_ejeX</strong>, y que además retorne un puntero del tipo <strong>int**</strong></p>
<p><code>int** magicoCreadorDeArrays( int tamanyo_en_ejeX, int tamanyo_en_ejeY ){<br />
int mihermosoarray**;<br />
mihermosoarray = (int**) malloc( tamanyo_en_ejeY * sizeof(int*) );<br />
int i;<br />
for(i=0; i&lt; tamanyo_en_ejeY; i++) mihermosoarray[i] = (int*) malloc( tamanyo_en_ejeX * sizeof(int) );<br />
return mihermosoarray;<br />
}<br />
</code></p>
<p>Con esto puedes utilizar la función en cualquier otro lado. En el siguiente ejemplo se considera la creación de un array de 20&#215;30 (filas x columnas):</p>
<p><code>int **miarray;<br />
int Y = 20;<br />
int X = 30;<br />
miarray = magicoCreadorDeArrays( X, Y );<br />
</code></p>
<p>Por cierto! Como has reservado un bloque de memoria utilizando <strong>malloc()</strong> no debes olvidar liberar ese bloque cuando dejes de utilizarlo con la siguiente instrucción:</p>
<p><code>int i;<br />
for(i=0; i&lt; X; i++) free(miarray[i]);<br />
free(miarray);</code></p>
<p>Fuente:<br />
Please Make a Note | <a href="http://pleasemakeanote.blogspot.com/2008/06/2d-arrays-in-c-using-malloc.html" target="_blank">2D Arrays in C using malloc()</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2012/06/01/crear-arrays-2d-usando-malloc-en-c/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">137</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>
	</item>
		<item>
		<title>[Tip Corto] ¿Cómo ver la temperatura de mi procesador? (En Linux claro, y usando la Terminal, claro!)</title>
		<link>https://deltalinuxer.wordpress.com/2012/05/03/tip-corto-como-ver-la-temperatura-de-mi-procesador-en-linux-claro-y-usando-la-terminal-claro/</link>
					<comments>https://deltalinuxer.wordpress.com/2012/05/03/tip-corto-como-ver-la-temperatura-de-mi-procesador-en-linux-claro-y-usando-la-terminal-claro/#comments</comments>
		
		<dc:creator><![CDATA[Seba Ogal]]></dc:creator>
		<pubDate>Thu, 03 May 2012 04:52:09 +0000</pubDate>
				<category><![CDATA[Arch]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[procesador]]></category>
		<category><![CDATA[temperatura]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tip]]></category>
		<guid isPermaLink="false">http://deltalinuxer.wordpress.com/?p=134</guid>

					<description><![CDATA[Bueno, se supone que este post debe ser ultra corto por lo que dice el título. Simple y conciso. ¿Cómo veo fácilmente la temperatura de mi(s) procesador(es)? Fácil, en consola pongan esto y listo 😀 $ acpi -t]]></description>
										<content:encoded><![CDATA[<p>Bueno, se supone que este post debe ser ultra corto por lo que dice el título. Simple y conciso. ¿Cómo veo fácilmente la temperatura de mi(s) procesador(es)? Fácil, en consola pongan esto y listo <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><code>$ acpi -t</code></p>
]]></content:encoded>
					
					<wfw:commentRss>https://deltalinuxer.wordpress.com/2012/05/03/tip-corto-como-ver-la-temperatura-de-mi-procesador-en-linux-claro-y-usando-la-terminal-claro/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">134</post-id>
		<media:content url="https://0.gravatar.com/avatar/09bba6c96464f291fa70e4a566ac22dea299c5b6c203f2fd15dbd0ed8734813a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deltalinuxer</media:title>
		</media:content>
	</item>
	</channel>
</rss>
