<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3040540087092322309</id><updated>2024-11-18T05:59:23.651-04:00</updated><category term="codeigniter"/><category term="jquery"/><category term="tutorial"/><category term="php"/><category term="Packt Publishing"/><category term="html5"/><category term="jquery UI"/><category term="vtiger"/><category term="android"/><category term="crm"/><category term="API twitter"/><category term="jqGrid"/><category term="jquery plugin"/><category term="linux"/><category term="otros"/><category term="python"/><category term="autocomplete"/><category term="django"/><category term="herramientas webmaster"/><category term="optimización web"/><category term="optimizar imágenes"/><category term="Joomla"/><category term="ajax"/><category term="debian"/><category term="gd"/><category term="javascript"/><category term="tweepy"/><category term="Game development"/><category term="css3"/><category term="github"/><category term="multilenguaje"/><category term="mysql"/><category term="sql"/><category term="tags"/><category term="unity3d"/><category term="Activity"/><category term="Blender"/><category term="Docker"/><category term="Ext JS"/><category term="Google Maps API"/><category term="Responsive Web Design"/><category term="SockJS"/><category term="Static Map API"/><category term="SysadminDAY"/><category term="Three.js"/><category term="Venezuela"/><category term="WebGL"/><category term="backbonejs"/><category term="cocos2d-x"/><category term="django permissions"/><category term="docker-compose"/><category term="dropbox api"/><category term="google play"/><category term="http"/><category term="jquery mobile"/><category term="juegos"/><category term="nginx"/><category term="non vulgi"/><category term="opensource"/><category term="phonegap"/><category term="photoshop"/><category term="reCATPCHA"/><category term="reseña de libros"/><category term="sqlite"/><category term="suddominios dinamicos"/><category term="svn"/><category term="uwsgi"/><category term="websockets"/><title type='text'>El SOS Informatico. Desarrollo y programacion web.</title><subtitle type='html'>Codeigniter, php, jquery, desarrollo web y algo más.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>113</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-5902656235894306198</id><published>2024-03-22T21:47:00.001-04:00</published><updated>2024-03-22T21:47:25.742-04:00</updated><title type='text'>CAPM Arbitrage pricing model</title><content type='html'>&lt;br /&gt;&lt;br /&gt;CAPM es un modelo de valoración de activos financieros que permite calcular la tasa de retorno de un activo financiero en función del riesgo asumido. Este modelo mide la relación entre el riesgo de invertir en un activo determinado y la rentabilidad esperada del mismo. Esta relación ayuda a fijar el precio de un activo financiero.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;E(ri)= rf + β [E(rm) – rf]&lt;br /&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;E(ri) = Rentabilidad esperada de ese activo en el mercado&lt;/li&gt;&lt;li&gt;rf = Es la rentabilidad sin riesgo&lt;/li&gt;&lt;li&gt;B = Es la sensibilidad del activo respecto al mercado.  Seria la covariancia(ri, rm)/variacion(rm)&lt;/li&gt;&lt;li&gt;E(rm) = Es la tasa de rentabilidad esperada del activo en el mercado que cotiza el activo.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Tiene varias asumpciones:&lt;br /&gt;&lt;br /&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Asume que hay un equilibrio del mercado y que la oferta y la demanda se equivalen.&lt;/li&gt;&lt;li&gt;Todos los inversores tienen aversión al riesgo y poseen la misma información&lt;/li&gt;&lt;li&gt;La rentabilidad de los activos tiene una distribución normal.&lt;/li&gt;&lt;li&gt;Solo se contempla el riesgo sistemático o de mercado, no así el riesgo específico de cada activo.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Arbitrage Pricing Theory&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;La APT es una teoria de valoracion de activos financieros multi-factor, la cual estima que el precio del activo se puede predecir en multiples factores macroeconomicos. Es muy parecida al CAPM, pero a diferenica de la anteroir asume que los mercados no son eficientes y que esas ineficiencias pueden ser aprovechadas en algun momento cuando el mercado se ajuste.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;E(ri)= rf + β1*f1 + β2*f2 + ... + βn*fn&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;E(ri) = Rentabilidad esperada de ese activo en el mercado&lt;/li&gt;&lt;li&gt;rf = Es la rentabilidad sin riesgo&lt;/li&gt;&lt;li&gt;Bn = Es la sensibilidad del activo respecto a ese factor de mercado&lt;/li&gt;&lt;li&gt;f2 = El cambio que puede haber en el mercado&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/5902656235894306198/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2024/03/capm-arbitrage-pricing-model.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/5902656235894306198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/5902656235894306198'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2024/03/capm-arbitrage-pricing-model.html' title='CAPM Arbitrage pricing model'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-1267694299169161180</id><published>2019-08-06T15:50:00.003-04:00</published><updated>2023-12-22T10:45:14.352-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="Docker"/><category scheme="http://www.blogger.com/atom/ns#" term="docker-compose"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Django ipdb with docker-compose</title><content type='html'>Algunas veces necesitamos hacer debug sobre una aplicación corriendo en Django en docker-compose. Por defecto &lt;b&gt;ipdb.set_trace() o breakpoint()&lt;/b&gt;&amp;nbsp;no funciona, para hacerlo funcionar debemos hacer lo siguiente:&lt;br /&gt;&lt;br /&gt;Para habilitar el modo interactivo debemos añadir stdin_open y tty al docker-compose.yml.&lt;div&gt;
&lt;span style=&quot; font-family: &amp;quot;open sans&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot; font-size: 14px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;  font-family: &amp;quot;open sans&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 14px;&quot;&gt;Por ejemplo:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;version: &quot;3&quot;
services:
  app_tests:
    build: .
    stdin_open: true
    tty: true
    command: ./run_my_tests.sh
&lt;/pre&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;&lt;/pre&gt;
&lt;div style=&quot; border: 0px;  font-family: &amp;quot;Open Sans&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.71429; margin-bottom: 1.71429rem; padding: 0px; vertical-align: baseline;&quot;&gt;
Ahora cuando corras tests con tu máquina en docker-compose se va a detener al momento que encuentre un &lt;b&gt;ipdb.set_trace() o breakpoint()&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot; border: 0px;  font-family: &amp;quot;Open Sans&amp;quot;, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.71429; margin-bottom: 1.71429rem; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;b&gt;Como ultimo paso &lt;/b&gt;solo falta usar el comando de &lt;b&gt;docker attach &amp;lt;container id&amp;gt;&lt;/b&gt; con esto estaremos conectados al proceso que corre dentro del contenedor y podremos interactuar con el proceso.&lt;br /&gt;
&lt;br /&gt;
Nota:&lt;br /&gt;
Si queremos obtener el id del contenedor debemos correr &lt;b&gt;docker ps&lt;/b&gt;&lt;br /&gt;
Si queremos desconectarnos del contenedor sin detenerlo debemos usar&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;kbd style=&quot;background-color: #e1e3e5; border-radius: 3px; border: 1px solid rgb(173, 179, 185); box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; box-sizing: inherit; color: #242729; display: inline-block; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.4; margin: 0px 0.1em; padding: 0.1em 0.6em; text-shadow: rgb(255, 255, 255) 0px 1px 0px; vertical-align: baseline; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;&lt;span style=&quot;color: #242729; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px;&quot;&gt;+&lt;/span&gt;&lt;kbd style=&quot;background-color: #e1e3e5; border-radius: 3px; border: 1px solid rgb(173, 179, 185); box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; box-sizing: inherit; color: #242729; display: inline-block; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.4; margin: 0px 0.1em; padding: 0.1em 0.6em; text-shadow: rgb(255, 255, 255) 0px 1px 0px; vertical-align: baseline; white-space: nowrap;&quot;&gt;p&lt;/kbd&gt;&lt;span style=&quot;color: #242729; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;kbd style=&quot;background-color: #e1e3e5; border-radius: 3px; border: 1px solid rgb(173, 179, 185); box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; box-sizing: inherit; color: #242729; display: inline-block; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.4; margin: 0px 0.1em; padding: 0.1em 0.6em; text-shadow: rgb(255, 255, 255) 0px 1px 0px; vertical-align: baseline; white-space: nowrap;&quot;&gt;Ctrl&lt;/kbd&gt;&lt;span style=&quot;color: #242729; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px;&quot;&gt;+&lt;/span&gt;&lt;kbd style=&quot;background-color: #e1e3e5; border-radius: 3px; border: 1px solid rgb(173, 179, 185); box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; box-sizing: inherit; color: #242729; display: inline-block; font-family: Arial, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; font-size: 11px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.4; margin: 0px 0.1em; padding: 0.1em 0.6em; text-shadow: rgb(255, 255, 255) 0px 1px 0px; vertical-align: baseline; white-space: nowrap;&quot;&gt;q&lt;/kbd&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/1267694299169161180/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2019/08/django-ipdb-with-docker-compose.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/1267694299169161180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/1267694299169161180'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2019/08/django-ipdb-with-docker-compose.html' title='Django ipdb with docker-compose'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-3055883121896289279</id><published>2018-05-19T23:07:00.002-04:00</published><updated>2018-05-19T23:07:31.102-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><category scheme="http://www.blogger.com/atom/ns#" term="uwsgi"/><title type='text'>uWSGI limite de conexiones simultaneas</title><content type='html'>Cuando una aplicación posee gran numero de visitas, o de personas conectándose al mismo tiempo. Puede suceder que lleguemos al limite de conexiones simultaneas que posee uWSGI. Esto puede pasar también si en algún momento reiniciamos el servicio de uWSGI y hay mas de 100 personas esperando para conectarse, las primeras 100 serán atendidas pero las otras van a recibir un error del proxy. Cuando suceda este tipo de errores en el log vamos a ver un mensaje similar a este:
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;uWSGI listen queue of socket &quot;0.0.0.0:xxxx&quot; (fd: 6) full
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Esto es debido a que uWSGI posee un limite de 100 conexiones simultaneas por defecto, este limite viene asi porque cada sistema operativo trae un limite de conexiones simultaneas, por lo general en Linux el limite por defecto es de 128 conexiones simultaneas por puerto.
&lt;br /&gt;
&lt;br /&gt;
¿Como podemos solucionar este error de uWSGI?
&lt;br /&gt;
&lt;br /&gt;
Para empezar antes de aumentar este limite, primero debemos chequear el tiempo que esta tomando uWSGI antes de dar una respuesta al usuario. Que no haya ningún bloqueo en la base de datos ni nada similar que este retrasando el tiempo de respuesta de la aplicación, no debemos aumentar este limite ciegamente y debemos chequear bien antes de modificar este limite. 
&lt;br /&gt;
&lt;br /&gt;
Cuando estemos seguros de que el problema es causado por el numero de personas intentando conectarse a nuestra aplicación, debemos primero aumentar el limite de conexiones del sistema operativo. En el caso de Linux podemos revisar este limite en &lt;i&gt;/proc/sys/net/core/somaxconn&lt;/i&gt;, y modificarlo cambiando el archivo o ejecutando &lt;i&gt;sysctl -w net.core.somaxconn=1024&lt;/i&gt;. Si estamos usando docker podemos agregar como parametro con &lt;i&gt;--sysctl net.core.somaxconn=1024&lt;/i&gt; o si es con docker compose:
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;sysctls:
  net.core.somaxconn: 1024

&lt;/pre&gt;
&lt;br /&gt;
Después de ajustar el limite del sistema operativo solo debemos debemos aumentar el limite añadiendo el parámetro &lt;i&gt;--listen &lt;n&gt;&lt;/n&gt;&lt;/i&gt; donde n es el numero máximo de espacios. 
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/3055883121896289279/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2018/05/uwsgi-limite-de-conexiones-simultaneas.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/3055883121896289279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/3055883121896289279'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2018/05/uwsgi-limite-de-conexiones-simultaneas.html' title='uWSGI limite de conexiones simultaneas'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-4625104763661877334</id><published>2017-01-18T10:32:00.001-04:00</published><updated>2017-01-18T10:35:43.104-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>Android Dotted Vertical Line</title><content type='html'>To draw a vertical dotted lines in android using shapes. You can use the following code:&lt;br /&gt;
&lt;br /&gt;
Dotted.xml

&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;&amp;lt;layer-list xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;

    &amp;lt;item
        android:right=&quot;-3px&quot;
        android:bottom=&quot;-3px&quot;
        android:top=&quot;-3px&quot;&amp;gt;
        &amp;lt;shape xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
            android:shape=&quot;rectangle&quot;&amp;gt;

            &amp;lt;stroke
                android:width=&quot;2px&quot;
                android:color=&quot;@color/negro&quot;
                android:dashGap=&quot;2px&quot;
                android:dashWidth=&quot;3px&quot; /&amp;gt;
        &amp;lt;/shape&amp;gt;
    &amp;lt;/item&amp;gt;

&amp;lt;/layer-list&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Layout

&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;&amp;lt;ImageView
    android:id=&quot;@+id/dotted&quot;
    android:layout_gravity=&quot;center&quot;
    android:src=&quot;@drawable/dotted&quot;
    android:layout_width=&quot;4dp&quot;
    android:layout_height=&quot;match_parent&quot;
    /&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Result:
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1yE2MwmRdq1u9kxq-_sVPp1OyS7GuRspjeb7Qj3zRUX1jc3pDOAIahIRlcWYR93uW8yKtjlI0C_cgISL9QNSSWL-81FBJoif7RnguOwxZKaCo_GwJORpPHXWKFR32FmgUpVgp1HMpa10/s1600/layout-2017-01-18-100049.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1yE2MwmRdq1u9kxq-_sVPp1OyS7GuRspjeb7Qj3zRUX1jc3pDOAIahIRlcWYR93uW8yKtjlI0C_cgISL9QNSSWL-81FBJoif7RnguOwxZKaCo_GwJORpPHXWKFR32FmgUpVgp1HMpa10/s320/layout-2017-01-18-100049.png&quot; width=&quot;192&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/4625104763661877334/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2017/01/android-dotted-vertical-line.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4625104763661877334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4625104763661877334'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2017/01/android-dotted-vertical-line.html' title='Android Dotted Vertical Line'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1yE2MwmRdq1u9kxq-_sVPp1OyS7GuRspjeb7Qj3zRUX1jc3pDOAIahIRlcWYR93uW8yKtjlI0C_cgISL9QNSSWL-81FBJoif7RnguOwxZKaCo_GwJORpPHXWKFR32FmgUpVgp1HMpa10/s72-c/layout-2017-01-18-100049.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-2964856283719356966</id><published>2016-10-02T15:58:00.001-04:00</published><updated>2016-10-02T15:58:30.741-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codeigniter"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Nuevas caracterizticas en Codeigniter 3</title><content type='html'>La última versión estable 3.0.3 fue liberado el 31 de de octubre de 2015 (hace ya algún tiempo), pero no había hablado de ella. Así que quiero dejar mis comentarios. Una de las cuestiones mas importantes es el cambio de la licencia de MIT. Las nuevas versiones  de &lt;b&gt;CodeIgniter&lt;/b&gt; 3.0 se licenciaban bajo una licencia de BSD Apache .  Esto significa que ahora se puede utilizar, combinar, copiar, modificar, publicar, distribuir y sub licenciar. Pero no se puede cambiar algunos de los archivos (* MY_).&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Cambio de la versión PHP&lt;/h4&gt;
Ahora requiere minimo PHP 5.2.4, aunque es recomendado usar PHP 5.4 o más nuevo.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Default driver para la base de datos&lt;/h4&gt;
Ahora &lt;b&gt;Codeigniter&lt;/b&gt; 3 cambio el drives para conectarse a la base de datos por &#39;&lt;b&gt;mysqli&lt;/b&gt;&#39; el antiguo driver quedo deprecado. 


&lt;br /&gt;
&lt;br /&gt;
Actualizado y mejorado el soporte MIME&lt;br /&gt;
&lt;br /&gt;
La lista es bastante larga de los tipos de archivos que se le a añadido soportate por &lt;b&gt;codeigniter&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Añadido soporte para pem, p10, p12, p7a, p7c, p7m, p7r, p7s, crt, crl,rsa, der, kdb,sst, cer, csr Certs en mimes.php.&lt;/li&gt;
&lt;li&gt;Añadido soporte para&amp;nbsp;pgp, gpg, zsh and cdr archivos en mimes.php.&lt;/li&gt;
&lt;li&gt;Añadido soporte para 3gp, 3g2, f4v, vlc , mp4, wmv Video archivos en mimes.php&lt;/li&gt;
&lt;li&gt;Añadido soporte para&amp;nbsp;m4a, xspf, au, aac, m4u, ac3, flac, ogg, wma archivos de audio en mimes.php.&lt;/li&gt;
&lt;li&gt;Añadido soporte para&amp;nbsp;kmz and kml (Google Earth) files, ics Calendar files, and rar, jar y 7zip archivos en mimes.php.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Codeigniter&lt;/b&gt; 3 a añadido soporte tambien a xml, xsl, doc, docx, php, zip y csv archivos en mimes.php&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h4&gt;
Output Minification&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
Nueva librería Output library tiene la función de minificar Javascript, CSS ae inclusive el HTML. Esta echa para compactar el codigo HTML,incluyendo cualquier linea JavaScript y CSS contenida dentro del archivo ayudando a ahorrar muchos bytes de data y mejorando la velocidad de descargar y analisis del navegador.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Minifying HTML Output&lt;/h4&gt;
&lt;div&gt;
Para remover los espacios inútiles del código HTML, solo debemos modificar la configuración en config.php editamos minify_output, lo colocamos como true y listo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;$config[&#39;minify_output&#39;] = TRUE;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Minifying JS/CSS&lt;/h4&gt;
&lt;div&gt;
Para minificar CSS o JAVASCRIPT, solo necesitaras incluir dentro del controlador de Assets, o otra manera de hacerlos es manejar tus assets y mostrarlos no como archivos estáticos. Esto lo puedes hacer por que la clase Output tiene un método minify.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;$css = $this-&amp;gt;output-&amp;gt;minify($style_content, &#39;text/css&#39;)
$scripts = $this-&amp;gt;output-&amp;gt;minify($script_content, &#39;text/javascript&#39;);&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Si la configuración minify_output es TRUE, entonces cualquier contenido mostrado con la clase OUTPUT con alguno de los siguientes MIME sera minificado antes de ser enviado al navegador.&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;text/html&lt;/li&gt;
&lt;li&gt;text/css&lt;/li&gt;
&lt;li&gt;text/javascript&lt;/li&gt;
&lt;li&gt;application/javascript&lt;/li&gt;
&lt;li&gt;application/x-javascript&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
Nuevas opciones de routeo.&lt;/h3&gt;
&lt;div&gt;
Hay dos opciones nuevas añadidas al area de routeo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Callbacks&lt;/h4&gt;
&lt;div&gt;
Si estas usando PHP 5.3 o mayor, tu puedes usar funciones anonimas para manejar las rutas similar a:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;$route[&#39;pagina/(:any)&#39;] = function ($page_slug) { &amp;nbsp; &amp;nbsp; get_instance()-&amp;gt;load-&amp;gt;model &amp;nbsp; &amp;nbsp; $data = array( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &#39;page&#39; &amp;nbsp;=&amp;gt; get_instance()-&amp;gt;page_model-&amp;gt;find_by_slug($page_slug) &amp;nbsp; &amp;nbsp; ); &amp;nbsp; &amp;nbsp; $this-&amp;gt;load-&amp;gt;view(&#39;page_wrapper&#39;, $data); };&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Metodos HTTP &amp;nbsp;(GET, PUT, POST, etc)&lt;/h4&gt;
&lt;div&gt;
Ahora puedes usar especificos HTTP-verb en especificas rutas en tu archivos routes.php, sin ningun tipo de caminos verdes. Esto es particularmente util cuando estas ahciendo un API Rest. Tu puedes usar metodos HTTP, propios o estandares, añadiendo el verbo al final de la ruta como un array hacia tu ruta. por ejemplo:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;$route[&#39;products&#39;][&#39;put&#39;] = &#39;product/insert&#39;;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
Codeigniter a echo multiples de pequeños cambios para volverse más eficiente y para mejorar la funcionalidad.&amp;nbsp;&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Muchos mejoras en las conexiones a la base de datos a través de los drivers.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Muchos cambios en las librerías ya existentes, como añadir la nueva librería de encriptación que reemplace todas las funciones inseguras que tenia la vieja.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
hay muchos cambios y actualizaciones en &lt;b&gt;codeigniter&lt;/b&gt; si quieren ver la lista completa pueden verla &lt;a href=&quot;https://github.com/bcit-ci/CodeIgniter/blob/develop/user_guide_src/source/changelog.rst&quot; target=&quot;_blank&quot;&gt;aquí&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Si crees que me falto algo. Escribe lo en los comentarios. Saludos...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/2964856283719356966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2016/10/nuevas-caracterizticas-en-codeigniter-3.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/2964856283719356966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/2964856283719356966'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2016/10/nuevas-caracterizticas-en-codeigniter-3.html' title='Nuevas caracterizticas en Codeigniter 3'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-2520740584885784750</id><published>2016-06-03T00:06:00.001-04:00</published><updated>2017-11-18T10:38:48.436-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="sql"/><category scheme="http://www.blogger.com/atom/ns#" term="sqlite"/><title type='text'>Bases de Datos en Android, aumentando la velocidad de las inserciones.</title><content type='html'>La pantalla de inicio de una aplicación Android estaba demasiado lenta en el arranque, porque descargaba unos 900 sitios en la base de datos SQLite al comenzar la activad. Yo estaba haciendo una gran cantidad de inserciones SQL, con el propósito de llenar una tabla para poder tener la información disponible de manera offline. Buscando una solución encontré por internet el uso de transacciones explícitas en SQLite para aumentar la velocidad de la inserción en la tabla. 
&lt;br /&gt;
&lt;br /&gt;
La lista que estaba insertando en la tabla contenía 900 sitios, que debían ser insertados en la base de datos, para después ser ubicados en el mapa. y el tiempo que tomaba era de 16 segundos. Este era mi código inicial:

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;public void createSites(List&amp;lt;Site&amp;gt; objs) {
    for (Site obj : objs) {
        ContentValues values = obj.getContentValues();
        long insertId = db.insertWithOnConflict(database.TABLE_TYPEPENDING,null,values,SQLiteDatabase.CONFLICT_REPLACE);
    }
}
&lt;/pre&gt;
&lt;br /&gt;
Después de añadir transacciones explícitas en SQLite, el tiempo paso a menos de un segundo, y la información estaba disponible mucho más rápido.
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;public void createSites(List&lt;site&gt; objs) {
    try {
        //Inicio la transacción
        db.beginTransaction();
        for (Site obj : objs) {
            ContentValues values = obj.getContentValues();
            db.insertWithOnConflict(database.TABLE_TYPEPENDING, null, values, SQLiteDatabase.CONFLICT_REPLACE);
        }
        //Marca la transacción actual como exitosa
        db.setTransactionSuccessful();
    }catch (SQLException e) {
        Log.e(toString(),&quot;Sql error&quot;);
    } finally {
        //Termina la transacción
        db.endTransaction();
    }
}
&lt;/site&gt;&lt;/pre&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/2520740584885784750/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2016/06/bases-de-datos-en-android-aumentando-la.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/2520740584885784750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/2520740584885784750'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2016/06/bases-de-datos-en-android-aumentando-la.html' title='Bases de Datos en Android, aumentando la velocidad de las inserciones.'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-8578648772444477484</id><published>2016-03-05T09:35:00.000-04:30</published><updated>2016-03-05T09:39:00.027-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>Como conectar a Android con ADB sobre TCP?</title><content type='html'>&lt;span style=&quot;font-size: large;&quot;&gt;Desde una computadora, si tienes el USB conectado&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
La forma más sencilla de conectarse mediante WIFI al teléfono, es si ya tienes el teléfono conectado a la pc con USB. Desde una linea de comandos en la computadora, tienes que escribir los siguientes comandos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;adb tcpip 5555
adb connect &amp;lt;IP Telefono&amp;gt;:5555
&lt;/pre&gt;
&lt;br /&gt;
Asegurate de reemplazar correctamente la ip del telefono que actualmente tiene tu dispositivo.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Descubrir la ip manualmente:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Ve a la configuracion wifi de android, click en el boton de menu en la barra de aciones, as click en avanzado y mira la ip al final de la pantalla.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk-jelj3hFN4F-Gebnp1p2K97-ZbIh7S5L1WOkbL7Ge-kB9qHn3afc-XGg00aPOdMFRMBLuoHDuZ4T32xgEf7VAj1FYluWI81z80czMdD3mJ8mMePKeV18vto5nWGakPnxiHPLElSSNb0/s1600/Screenshot_2016-03-05-09-28-07.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk-jelj3hFN4F-Gebnp1p2K97-ZbIh7S5L1WOkbL7Ge-kB9qHn3afc-XGg00aPOdMFRMBLuoHDuZ4T32xgEf7VAj1FYluWI81z80czMdD3mJ8mMePKeV18vto5nWGakPnxiHPLElSSNb0/s320/Screenshot_2016-03-05-09-28-07.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnBXEc6oXef2HS_UwG5GeEY1BywNy3_XewSSSNSZmlwU1pu-vYa8ZuMeypymMphhNHtY6YaekVTDgHczoBC3ZVyfUSM1CP6E_r5ouIPDNFxRYIyy28vnqvg_MGFxwxBRvWtQnboqz9zks/s1600/Screenshot_2016-03-05-09-27-54.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnBXEc6oXef2HS_UwG5GeEY1BywNy3_XewSSSNSZmlwU1pu-vYa8ZuMeypymMphhNHtY6YaekVTDgHczoBC3ZVyfUSM1CP6E_r5ouIPDNFxRYIyy28vnqvg_MGFxwxBRvWtQnboqz9zks/s320/Screenshot_2016-03-05-09-27-54.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Usar adb, para descubrir la IP:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Ejecuta los siguientes comandos por adb&lt;br /&gt;
&lt;br /&gt;
adb shell ip -f inet addr show wlan0&lt;br /&gt;
To tell the ADB daemon return to listening over USB&lt;br /&gt;
adb usb
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Proceso manual, desde el telefono (SI el telefono esta rooteado)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Tu puedes habilitar la conexión ADB sobre WIFI desde el dispositivo si tu telefono esta rooteado. 
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Lo puedes desabilitar con los siguientes comandos:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;setprop service.adb.tcp.port -1
stop adbd
start adbd
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/8578648772444477484/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2016/03/como-conectar-android-con-adb-sobre-tcp.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/8578648772444477484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/8578648772444477484'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2016/03/como-conectar-android-con-adb-sobre-tcp.html' title='Como conectar a Android con ADB sobre TCP?'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk-jelj3hFN4F-Gebnp1p2K97-ZbIh7S5L1WOkbL7Ge-kB9qHn3afc-XGg00aPOdMFRMBLuoHDuZ4T32xgEf7VAj1FYluWI81z80czMdD3mJ8mMePKeV18vto5nWGakPnxiHPLElSSNb0/s72-c/Screenshot_2016-03-05-09-28-07.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-8502164729540336656</id><published>2015-12-18T13:13:00.002-04:30</published><updated>2015-12-18T13:13:18.146-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Packt Publishing"/><title type='text'>Packt Publishing todos los libros a 5$</title><content type='html'>A partir del 17 de diciembre 2015 en el Año Nuevo, Packt Publishing está invitando a todo el mundo de la tecnología para explorar su extensa biblioteca de libros electrónicos y vídeo cursos por un precio increíble. Cada eBook y Vídeo que Packtpub ha creado alguna vez estará disponible por sólo $ 5!&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://bit.ly/1PaeDd2&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjReRRhyfaZHhah4fsjDFyMDiQdkEvMeYONYbDUXJh0bVuaL2NCq6HT5YmBEeP-C32GViMBnW6Z2AAb2YRKdzHMBKiMyaAgxcjmCV7ipdOuywRYg3C-UqQ_Ts9WWm0_UDOhBeQSRubkif8/s320/%25245.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/8502164729540336656/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2015/12/packt-publishing-todos-los-libros-5.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/8502164729540336656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/8502164729540336656'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2015/12/packt-publishing-todos-los-libros-5.html' title='Packt Publishing todos los libros a 5$'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjReRRhyfaZHhah4fsjDFyMDiQdkEvMeYONYbDUXJh0bVuaL2NCq6HT5YmBEeP-C32GViMBnW6Z2AAb2YRKdzHMBKiMyaAgxcjmCV7ipdOuywRYg3C-UqQ_Ts9WWm0_UDOhBeQSRubkif8/s72-c/%25245.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-1527769490531987127</id><published>2015-09-30T09:08:00.000-04:30</published><updated>2015-09-30T09:11:16.006-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Packt Publishing"/><title type='text'>Packt&#39;s PacktLib subscription Campaign</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://bit.ly/1YLFu4z&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;http://bit.ly/1YLFu4z&quot; border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgjhbJisEMI2eMekkAbDhS7aTcpvT7D8mgLVIrb87GIKC9WRp-icE_kqxeiadRlr6iMXmorLASyMTI7rntmu-tM6iqbvaeBHl8SwwXtmnI3R-10QjQfn9KzxowX2VyanEpqqsQWh0qOr0/s320/PacktLib+Banner.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
This week, Packt Publishing has reduced the price of its PacktLib subscription service. For just&amp;nbsp;&lt;b&gt;$100&lt;/b&gt;&amp;nbsp;a year you have access to every single book in Packt’s huge library of over 3,000 strong eBooks and videos, especially the latest releases that are available as soon as they’re published.&lt;br /&gt;
&lt;br /&gt;
All you have to do is set up a subscription&amp;nbsp;&lt;a href=&quot;http://bit.ly/1YLFu4z&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&amp;nbsp;to get access to the whole service for a full year. Customers are also encouraged to&amp;nbsp;&lt;a href=&quot;http://bit.ly/1KHER4K&quot; target=&quot;_blank&quot;&gt;check out the reader for free&lt;/a&gt;, which lets them see every book they already own laid out for easy viewing</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/1527769490531987127/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2015/09/packts-packtlib-subscription-campaign.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/1527769490531987127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/1527769490531987127'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2015/09/packts-packtlib-subscription-campaign.html' title='Packt&#39;s PacktLib subscription Campaign'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgjhbJisEMI2eMekkAbDhS7aTcpvT7D8mgLVIrb87GIKC9WRp-icE_kqxeiadRlr6iMXmorLASyMTI7rntmu-tM6iqbvaeBHl8SwwXtmnI3R-10QjQfn9KzxowX2VyanEpqqsQWh0qOr0/s72-c/PacktLib+Banner.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-5166634680318209539</id><published>2015-07-26T22:28:00.000-04:30</published><updated>2015-07-26T22:29:33.001-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Packt Publishing"/><title type='text'>Packtpub Skill Up Survey Results!</title><content type='html'>&lt;br /&gt;&lt;br /&gt;Last month, Packt asked you to take the Skill Up survey to get a greater understanding of the tech world. Over 20,000 of tech professionals responded, leading to the biggest developer salary and skills survey of 2015! &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://bit.ly/1HIOkHx&quot;&gt;Check out the results of this survey&lt;/a&gt; and discover what everyone thinks will be the next big thing in tech and what skills the biggest earners in your sector have under their belt.&lt;br /&gt;&lt;br /&gt;At Packt we’re committed to helping the world put software to work in new ways and have launched a whole range of exclusive offers to help you to Skill Up:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Every eBook and Video is now available for $10! Check out our Top 20 &lt;a href=&quot;http://bit.ly/1g4B5I9&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Grab some &lt;a href=&quot;http://bit.ly/1gO3bYi&quot;&gt;great course bundles&lt;/a&gt; - 5 for $25 on every Video and eBook based on your most essential skills.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bit.ly/1IecDtQ&quot;&gt;PacktLib&lt;/a&gt; with over 3000 titles in our library at a reduced rate of $80 for a limited time.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;Discover what you need to know to be the best. It’s time to Skill Up!</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/5166634680318209539/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2015/07/packtpub-skill-up-survey-results.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/5166634680318209539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/5166634680318209539'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2015/07/packtpub-skill-up-survey-results.html' title='Packtpub Skill Up Survey Results!'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-4049590039879157234</id><published>2015-06-23T11:01:00.002-04:30</published><updated>2015-06-23T11:01:39.671-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Joomla"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Joomla cargar un modulo dentro de un componente</title><content type='html'>Dejo una función para cargar un modulo dentro de un componente en joomla, despues nada más tienes que invocarla con el nombre de la posición y listo.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;function load_module_position( $position, $style = &#39;xhtml&#39;)
{
   switch($style)
   {
      case &#39;table&#39;:
         $style = 1;
         break;
      case &#39;horz&#39;:
         $style = 1;
         break;
      case &#39;none&#39;:
         $style = -1;
         break;
      case &#39;xhtml&#39;:
         $style = -2;
         break;
      case &#39;rounded&#39;:
         $style = -3;
         break;
      default:
         $style = -2;
         break;
   }

   $document   = &amp;amp;JFactory::getDocument();
   $renderer   = $document-&amp;gt;loadRenderer(&#39;module&#39;);
   $params      = array(&#39;style&#39;=&amp;gt;$style);

   $contents = &#39;&#39;;
   foreach (JModuleHelper::getModules($position) as $mod)  {
      $contents .= $renderer-&amp;gt;render($mod, $params);
   }
   return $contents;
}
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/4049590039879157234/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2015/06/joomla-cargar-un-modulo-dentro-de-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4049590039879157234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4049590039879157234'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2015/06/joomla-cargar-un-modulo-dentro-de-un.html' title='Joomla cargar un modulo dentro de un componente'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-455414098947267637</id><published>2015-04-05T14:52:00.002-04:30</published><updated>2015-04-05T14:52:25.506-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Activity"/><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>Ciclos de Vida de una Actividad en Android</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
Las Activity, en &lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&amp;nbsp;&lt;/a&gt;&lt;/b&gt;son el objecto principal de cualquier aplicación. Y cuando un usuario utiliza una aplicación puede entrar a la aplicación, cambiar de actividad, salir de ella, volver a entrar, etc. Entender el ciclo de vida de una aplicación es un proceso VITAL para poder crear aplicaciones&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&amp;nbsp;&lt;/a&gt;&lt;/b&gt;de&amp;nbsp;calidad.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Una aplicación&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&amp;nbsp;&lt;/a&gt;&lt;/b&gt;corre dentro de su propio proceso Linux. Este proceso es creado con la aplicación y&amp;nbsp;continuará vivo hasta que ya no sea requerido y el sistema reclame su memoria para asignársela a otra aplicación. &amp;nbsp;Una característica importante de&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;&amp;nbsp;&lt;/b&gt;es que la destrucción del proceso de la aplicación no es controlado por la aplicación, en lugar de eso, es el sistema que determina en que momento detener el proceso, basándose en el conocimiento que tiene de las partes de la aplicación que están corriendo (actividades y servicios), y cuánta memoria disponible hay en un determinado momento.&lt;br /&gt;
&lt;br /&gt;
Si una aplicación es eliminada y después es vuelta a abrir se crea un nuevo proceso, pero se habrá perdido el estado que tenia esta aplicación. En estos casos, va a ser responsabilidad del programador almacenar el estado de las actividades, si queremos que cuando sea reiniciada conserve su estado.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8tXRKKN_7SyRB1plWqEvOerYYYrFXcdNX1xAPh9GmZh3YMUhEN7tvnRRljf5FSBMSnyeU1BONtezu3zo41eVmMeg0eBNFLkjgYgx6Jc8HAxV2SIDcNqZ1DZiMQrr63zC0kLBSAppva8Q/s1600/ciclo1.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8tXRKKN_7SyRB1plWqEvOerYYYrFXcdNX1xAPh9GmZh3YMUhEN7tvnRRljf5FSBMSnyeU1BONtezu3zo41eVmMeg0eBNFLkjgYgx6Jc8HAxV2SIDcNqZ1DZiMQrr63zC0kLBSAppva8Q/s1600/ciclo1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Dependiendo de la complejidad de la aplicación no usar todos los metodos del ciclo de vida. Pero de todas maneras es importante entender cada uno e implementar esos que aseguren un correcto funcionamiento de la aplicación. Hacer eso requiere estar seguros que la aplicación no fallar en los siguientes casos:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;No va a dar error cuando el usuario reciba una llamada o cambie a otra aplicación.&lt;/li&gt;
&lt;li&gt;No va a consumir recursos importantes del sistema mientras el usuario no la este usando.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;No va a perder el progreso del usuario mientras deje la aplicación y vuelva.&lt;/li&gt;
&lt;li&gt;No va a dar error o perder el progreso de la aplicación si el usuario cambia la orientación del telefono.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Estos son los estados descritos en la gráfica y lo que significa cada uno de ellos:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Activa (Resumed):&lt;/b&gt; En este estado la actividad esta en primer plano y el usuario puede interactuar completamente con ella.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Visible (Paused):&lt;/b&gt; En este estado la actividad esta parcialmente oscurecida por otra actividad, La activadad que este en primer plano es semitransparente o no cubre la pantalla completa. Una actividad pausada es visible pero no recibe interacciones con el usuario.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Parada (Stopped):&lt;/b&gt; En este estado la aplicación esta completamente oculta y no es visible al usuario, se considera que esta en el background. Aquí se debe almacenar el estado actual de la aplicación, interfaz, preferencias, etc...&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Destruida (Destroyed):&lt;/b&gt; Cuando la actividad termina al invocarse el método finish(), o es destruida por el sistema.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Cada vez que una actividad cambia de estado se generan eventos que podrán ser capturados por &amp;nbsp;métodos de la actividad. A continuación dichos métodos:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)&quot; target=&quot;_blank&quot;&gt;onCreate(Bundle)&lt;/a&gt;: &lt;/b&gt;se dispara cuando la actividad es iniciada y se usa para realizar todo tipo de inicializaciones, como la creación de la interfaz de usuario o la inicialización de estructuras de datos. Puede recibir información sobre el estatus de la actividad o recibir el intent enviado por otra aplicación.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onStart()&quot; target=&quot;_blank&quot;&gt;onStart()&lt;/a&gt;:&lt;/b&gt;&amp;nbsp;se dispara cuando la actividad está a punto de ser mostrada al usuario.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onResume()&quot; target=&quot;_blank&quot;&gt;onResume()&lt;/a&gt;:&lt;/b&gt; se dispara cuando la actividad esta disponible al usuario y va a interactuar con ella.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onPause()&quot; target=&quot;_blank&quot;&gt;onPause()&lt;/a&gt;:&lt;/b&gt;&amp;nbsp;se dispara cuando otra actividad pasa a primer plano y esta pasa a estar en un segundo plano.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onStop()&quot; target=&quot;_blank&quot;&gt;onStop()&lt;/a&gt;:&lt;/b&gt;&amp;nbsp; se dispara cuando la actividad ya no es visible para el usuario. Lo siguiente que puede dispararse seria onRestart o onDestroy o nada. dependiendo de lo que haga el usuario.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onRestart()&quot; target=&quot;_blank&quot;&gt;onRestart()&lt;/a&gt;:&lt;/b&gt; se dispara cuando la actividad va a volver a ser representada después de haber pasado por &lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onStop()&quot; target=&quot;_blank&quot;&gt;onStop()&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#onDestroy()&quot; target=&quot;_blank&quot;&gt;onDestroy()&lt;/a&gt;:&lt;/b&gt;&amp;nbsp;sucede cuando se esta limpiando la información de la aplicación antes de ser completamente destruida la aplicación. Puede suceder cuando la actividad es finalizada con &lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#finish()&quot; target=&quot;_blank&quot;&gt;finish()&lt;/a&gt;, o porque el sistema este destruyendo la instancia de la aplicación para guardar espacio.&lt;br /&gt;&lt;br /&gt;NOTA: Este metodo no debe ser contado para guardar la información del usuario. porque puede suceder que se finalice la aplicación sin llamar a este metodo.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Documentación oficial:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.android.com/training/basics/activity-lifecycle/index.html&quot;&gt;http://developer.android.com/training/basics/activity-lifecycle/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html&quot; target=&quot;_blank&quot;&gt;http://developer.android.com/reference/android/app/Activity.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;



&lt;!-- Blogger automated replacement: &quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8tXRKKN_7SyRB1plWqEvOerYYYrFXcdNX1xAPh9GmZh3YMUhEN7tvnRRljf5FSBMSnyeU1BONtezu3zo41eVmMeg0eBNFLkjgYgx6Jc8HAxV2SIDcNqZ1DZiMQrr63zC0kLBSAppva8Q/s1600/ciclo1.png&quot; with &quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8tXRKKN_7SyRB1plWqEvOerYYYrFXcdNX1xAPh9GmZh3YMUhEN7tvnRRljf5FSBMSnyeU1BONtezu3zo41eVmMeg0eBNFLkjgYgx6Jc8HAxV2SIDcNqZ1DZiMQrr63zC0kLBSAppva8Q/s1600/ciclo1.png&quot; --&gt;&lt;!-- Blogger automated replacement: &quot;https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F3.bp.blogspot.com%2F-ZGGGbbRho1U%2FVSDNeCdxJuI%2FAAAAAAAACH8%2FThZNW9bXAX4%2Fs1600%2Fciclo1.png&amp;amp;container=blogger&amp;amp;gadget=a&amp;amp;rewriteMime=image%2F*&quot; with &quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8tXRKKN_7SyRB1plWqEvOerYYYrFXcdNX1xAPh9GmZh3YMUhEN7tvnRRljf5FSBMSnyeU1BONtezu3zo41eVmMeg0eBNFLkjgYgx6Jc8HAxV2SIDcNqZ1DZiMQrr63zC0kLBSAppva8Q/s1600/ciclo1.png&quot; --&gt;</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/455414098947267637/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2015/04/ciclos-de-vida-de-una-actividad-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/455414098947267637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/455414098947267637'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2015/04/ciclos-de-vida-de-una-actividad-en.html' title='Ciclos de Vida de una Actividad en Android'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8tXRKKN_7SyRB1plWqEvOerYYYrFXcdNX1xAPh9GmZh3YMUhEN7tvnRRljf5FSBMSnyeU1BONtezu3zo41eVmMeg0eBNFLkjgYgx6Jc8HAxV2SIDcNqZ1DZiMQrr63zC0kLBSAppva8Q/s72-c/ciclo1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-3665907686359327410</id><published>2015-04-05T01:17:00.003-04:30</published><updated>2015-04-05T01:33:11.059-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><title type='text'>Conceptos básicos de Android</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBPUNvc-eOTaD5dpVI_wQ2fDp-f_8hVcXHIHnlRUepT62R7VpzfdChHbuYMDM5mLCC11n5JwUFuAxplN_GvwC8MvlnuolMNNv9o2fyEI-8pe7O5cb6VQmUYEshKNpaxTUcUybc-OgyoNw/s1600/android_development_tricks.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Conceptos basicos de android&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBPUNvc-eOTaD5dpVI_wQ2fDp-f_8hVcXHIHnlRUepT62R7VpzfdChHbuYMDM5mLCC11n5JwUFuAxplN_GvwC8MvlnuolMNNv9o2fyEI-8pe7O5cb6VQmUYEshKNpaxTUcUybc-OgyoNw/s1600/android_development_tricks.jpg&quot; height=&quot;280&quot; title=&quot;Conceptos basicos de android&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;Conceptos&amp;nbsp;básicos&amp;nbsp;de &lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Conceptos basicos sobre &lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;&lt;/b&gt;, para tener una idea general sobre los componentes y posibilidades que tiene &lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;&lt;/b&gt;. y algunos enlaces a la documentación oficial para obtener mayor información.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Activity&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Una&amp;nbsp;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html&quot; target=&quot;_blank&quot;&gt;Activity&amp;nbsp;&lt;/a&gt;es un solo elemento, enfocada que el usuario puede ver. casi todas las actividades en&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;&amp;nbsp;&lt;/b&gt;pueden interactuar&amp;nbsp;con el usuario, las actividades están conformadas por dos partes, gráfica y la lógica.&lt;br /&gt;
&lt;br /&gt;
El área gráfica (&lt;a href=&quot;http://developer.android.com/guide/topics/ui/declaring-layout.html&quot; target=&quot;_blank&quot;&gt;&lt;i&gt;Layouts&lt;/i&gt;&lt;/a&gt;) es un o varios archivos XML, que tienen declarados las etiquetas similares a las de HTML. Estas etiquetas definen los elementos de la&lt;a href=&quot;http://developer.android.com/guide/topics/ui/controls.html&quot; target=&quot;_blank&quot;&gt; interfaz como botones, cuadros de texto, listas, etc...&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
El área lógica que es el archivo .java donde se define la clase, interacciones con el entorno y responder a los eventos de los usuarios.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Intent&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Un &lt;a href=&quot;http://developer.android.com/reference/android/content/Intent.html&quot; target=&quot;_blank&quot;&gt;intent &lt;/a&gt;es una descripción abstracta de una operación a ser realizada, Puede ser usado con &lt;i&gt;&lt;a href=&quot;http://developer.android.com/reference/android/content/Context.html#startActivity(android.content.Intent)&quot; target=&quot;_blank&quot;&gt;startActivity()&lt;/a&gt;&lt;/i&gt;&amp;nbsp;o&amp;nbsp;&lt;i&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, int)&quot; target=&quot;_blank&quot;&gt;startActivityForResult()&lt;/a&gt; &lt;/i&gt;para lanzar una &lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html&quot; target=&quot;_blank&quot;&gt;Activity&lt;/a&gt;,&amp;nbsp; &lt;i&gt;&lt;a href=&quot;http://developer.android.com/reference/android/content/Context.html#sendBroadcast(android.content.Intent)&quot;&gt;broadcastIntent&lt;/a&gt;&amp;nbsp;&lt;/i&gt;para enviar algo a un&amp;nbsp;&lt;a href=&quot;http://developer.android.com/reference/android/content/BroadcastReceiver.html&quot;&gt;BroadcastReceiver&lt;/a&gt;, y&amp;nbsp;&lt;a href=&quot;http://developer.android.com/reference/android/content/Context.html#startService(android.content.Intent)&quot;&gt;&lt;i&gt;startService(Intent)&lt;/i&gt;&lt;/a&gt;&amp;nbsp;o&amp;nbsp;&lt;i&gt;&lt;a href=&quot;http://developer.android.com/reference/android/content/Context.html#bindService(android.content.Intent, android.content.ServiceConnection, int)&quot;&gt;bindService(Intent, ServiceConnection, int)&lt;/a&gt; &lt;/i&gt;para comunicarse con un&amp;nbsp;&lt;a href=&quot;http://developer.android.com/reference/android/app/Service.html&quot;&gt;Service&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Fragment&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
Es una porción de un interfaz gráfica, que puede añadirse o eliminarse de una interfaz de forma independiente al resto de elementos de la actividad, y que por puede reutilizarse en otras actividades. esta caracteriztica nos permite manejar contenido de una aplicación sin tener que modificar la aplicación completa como tal sino definir y manipular zonas especificas.&lt;br /&gt;
&lt;br /&gt;
Un &lt;a href=&quot;http://developer.android.com/guide/components/fragments.html&quot; target=&quot;_blank&quot;&gt;Fragment &lt;/a&gt;esta dentro de una&amp;nbsp;&lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html&quot; target=&quot;_blank&quot;&gt;Activity&lt;/a&gt;&amp;nbsp; por lo cual su ciclo de vida esta íntimamente relacionado a la misma.&lt;br /&gt;
&lt;br /&gt;
Esto es sumamente útil para desarrollo de aplicaciones en&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;&amp;nbsp;&lt;/b&gt;para tablet, donde tenemos mayor área aprovechable que en un teléfono y necesitamos poner diferentes modulos que interactuen entre si.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;BroadcastReceiver&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
Un &lt;a href=&quot;http://developer.android.com/reference/android/content/BroadcastReceiver.html&quot; target=&quot;_blank&quot;&gt;BroadcastReceiver &lt;/a&gt;es un componente de&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;&amp;nbsp;&lt;/b&gt;que permite recibir eventos del sistema y de nuestra&amp;nbsp;propia aplicación.&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;&amp;nbsp;&lt;/b&gt;posee muchos eventos dentro del sistema como por ejemplo: llego un sms o un correo,&amp;nbsp;llamada entrante, se desconecto el cargador, bateria baja, etc, etc. Y&amp;nbsp;un &lt;a href=&quot;http://developer.android.com/reference/android/content/BroadcastReceiver.html&quot; target=&quot;_blank&quot;&gt;BroadcastReceiver&lt;/a&gt;, nos permitirá saber cuando ocurre este tipo de eventos y generar una respuesta a ellos, ya sea crear una actividad, detener la sincronización, leer un mensaje, etc.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
También lo podremos utilizar para comunicar componentes dentro de nuestra propia aplicación, como por ejemplo que un servicio averigüe si una actividad esta corriendo, o que le avise a dicha actividad que se termino de sincronizar algo, etc...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;ContentProvider&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Es un componente que permite compartir información entre aplicaciones. A través de los &lt;a href=&quot;http://developer.android.com/reference/android/content/ContentProv&quot; target=&quot;_blank&quot;&gt;ContentProvider &lt;/a&gt;podemos leer información de otras aplicaciones o también podemos dejar de manera accesible información a otras aplicaciones.&lt;br /&gt;
&lt;br /&gt;
Esto es sumamente útil para leer por ejemplo los datos de los contactos de las personas que están en nuestro teléfono, leer información de la agendas, etc....&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Service&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Es un componente de la aplicación que puede correr operaciones largas y&amp;nbsp;&amp;nbsp;no poseen interfaz visual&amp;nbsp;, las cuales corren en el proceso de fondo del sistema e inclusive sigue corriendo cuando el usuario cambia a otra aplicación.&lt;br /&gt;
&lt;br /&gt;
Son sumamente útiles para procesos de sincronización largos, reproducir música, trabajar con sistemas de archivos, etc....&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://developer.android.com/guide/components/services.html&quot; target=&quot;_blank&quot;&gt;http://developer.android.com/guide/components/services.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;AndroidManifest&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Tienen la información esencial de la aplicación y es obligatorio declarar cada componente aquí para poder utilizarlo, además de crearlo extendiendo de su clase correspondiente, es necesario definirlo en el AndroidManifest.xml. Este archivo es esencial en cualquier aplicación&amp;nbsp;&lt;b&gt;&lt;a href=&quot;http://sosinformatico.blogspot.com/search/label/android&quot; target=&quot;_blank&quot;&gt;Android&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/manifest-intro.html&quot; target=&quot;_blank&quot;&gt;http://developer.android.com/guide/topics/manifest/manifest-intro.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Cada componente tiene su propia etiqueta xml:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Para Activity.&lt;/li&gt;
&lt;li&gt;Para Service.&lt;/li&gt;
&lt;li&gt;Para&amp;nbsp;BroadcastReceiver.&lt;/li&gt;
&lt;li&gt;Para&amp;nbsp;ContentProvider.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Además se definen algunas otras cosas importantes de la aplicación, como el logo, nombre, versión de android que soportara, hardware que soporta la aplicación, etc...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;prettyprint&quot; style=&quot;background: rgb(247, 247, 247); border: 1px solid rgb(221, 221, 221); color: #006600; font-size: 13px; font-stretch: normal; line-height: 1.5; margin-bottom: 1em; overflow: auto; padding: 1em;&quot;&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;xml version&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;color: #880000;&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; encoding&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;color: #880000;&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/manifest-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;manifest&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/uses-permission-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;uses-permission&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/permission-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;permission&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/permission-tree-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;permission-tree&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/permission-group-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;permission-group&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/instrumentation-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;instrumentation&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/uses-sdk-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;uses-sdk&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/uses-configuration-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;uses-configuration&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/uses-feature-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;uses-feature&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/supports-screens-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;supports-screens&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/compatible-screens-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;compatible-screens&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/supports-gl-texture-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;supports-gl-texture&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &amp;nbsp;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/application-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;application&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/activity-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;activity&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/intent-filter-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/action-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;action&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/category-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;category&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/data-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;data&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/intent-filter-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/meta-data-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;meta-data&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/activity-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/activity-alias-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;activity-alias&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/intent-filter-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; . . . &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/intent-filter-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/meta-data-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;meta-data&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/activity-alias-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/activity-alias&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/service-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;service&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/intent-filter-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; . . . &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/intent-filter-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/meta-data-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;meta-data/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/service-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/receiver-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;receiver&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/intent-filter-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; . . . &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/intent-filter-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/meta-data-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;meta-data&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/receiver-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/receiver&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/provider-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;provider&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/grant-uri-permission-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;grant-uri-permission&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/meta-data-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;meta-data&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/path-permission-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;path-permission&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/provider-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/provider&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/uses-library-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;uses-library&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;

&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/application-element.html&quot; style=&quot;color: #258aaf; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/application&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;
&lt;/span&gt;
&lt;a href=&quot;http://developer.android.com/guide/topics/manifest/manifest-element.html&quot; style=&quot;color: #258aaf; font-size: 13px; line-height: 1.5; text-decoration: none;&quot;&gt;&lt;span class=&quot;tag&quot; style=&quot;color: #000088;&quot;&gt;&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/3665907686359327410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2015/04/conceptos-basicos-de-android.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/3665907686359327410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/3665907686359327410'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2015/04/conceptos-basicos-de-android.html' title='Conceptos básicos de Android'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBPUNvc-eOTaD5dpVI_wQ2fDp-f_8hVcXHIHnlRUepT62R7VpzfdChHbuYMDM5mLCC11n5JwUFuAxplN_GvwC8MvlnuolMNNv9o2fyEI-8pe7O5cb6VQmUYEshKNpaxTUcUybc-OgyoNw/s72-c/android_development_tricks.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-5114137335578132294</id><published>2015-03-02T22:33:00.002-04:30</published><updated>2015-03-02T22:35:06.429-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Venezuela"/><title type='text'>Reinventando la rueda desde Venezuela</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil1GE-4Bw_QZDclYC4rmfGC11Tp4N3hP2s-A3wztlAuwK0jA7V_DuxF6R4qLs1MeRw0yqXR7c7_JoRPbZmsQ7oTzrsYypXSKa64bmngUoczqQ99ADbm8wOYMGrlm71pfL0aZL4-dhyj2k/s1600/monociclos-motorizados.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil1GE-4Bw_QZDclYC4rmfGC11Tp4N3hP2s-A3wztlAuwK0jA7V_DuxF6R4qLs1MeRw0yqXR7c7_JoRPbZmsQ7oTzrsYypXSKa64bmngUoczqQ99ADbm8wOYMGrlm71pfL0aZL4-dhyj2k/s1600/monociclos-motorizados.jpg&quot; height=&quot;252&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;Hoy escribo para comentar algo que me ronda la mente desde hace tiempo y es sobre el tema de hacer aplicaciones que ya&amp;nbsp;están&amp;nbsp;echas, como decir youtube, twitter, etc... de lo cual&amp;nbsp;siempre&amp;nbsp;e tendido a pensar en que no me&amp;nbsp;gusta reinventar la rueda. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;En especial odio a la gente que inventa sus propios &quot;frameworks&quot; y terminan llevando el enredo que tienen en sus cabezas al&amp;nbsp;código, Y&amp;nbsp;después&amp;nbsp;te piden que lo uses para terminarte dando cuenta que no sirven para nada.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;Peroooo, ese no es el tema de hoy, sino del desarrollo de aplicaciones enfocadas en lo local. Y&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&amp;nbsp;ciertos caso de los cuales yo quería hablar.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 13px;&quot;&gt;Youtube, twitter, facebook, LinkedIN, etc, etc etc.&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;Todas son aplicaciones, que funcionan muy bien cumplen su rol excelentemente, pero tienen un gran defecto.&amp;nbsp;Están&amp;nbsp;en los estados unidos. La mentalidad de estados unidos, es una mentalidad netamente capitalista-salvaje, de aprovechamiento al&amp;nbsp;máximo&amp;nbsp;de los &quot;recursos&quot;, y estas paginas no dejan de ser parte de estos &quot;recursos&quot;. Lo que a mi me preocupa es&amp;nbsp;entregarles&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&amp;nbsp;toda tu información toda tu vida, tus fotos, tus amistades, tu forma&amp;nbsp;de pensar, lo que haces, y lo que dejas de hacer a un extraño que de por si esta más que comprobado que no le interesa tu privacidad, que pueden terminar vendiendo tu información a cualquier postor y además todas esas empresas se tienen que regir a las leyes norteamericanas o sino igual llega la CIA o la NCA e igual obtiene acceso a tu información. Y la información es poder.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;Y aparte&amp;nbsp;también&amp;nbsp;esta la parte donde si no le caes bien a cualquiera de estas empresas pues simplemente te cierran, te&amp;nbsp;callan&amp;nbsp;y no hay a quien ir a llorar.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;Además de que en buena parte de los casos, son aplicaciones pensadas para gente de habla inglesa, con mucho contenido&amp;nbsp;foráneo y que a la final te pierdes en contenido que no&amp;nbsp;tiene&amp;nbsp;que ver con tu localidad.&amp;nbsp;&amp;nbsp;Y da la sensación de que&amp;nbsp;aquí&amp;nbsp;no se esta haciendo nada porque como hay mucho contenido de afuera y youtube no pierde&amp;nbsp;tiempo en&amp;nbsp;mostrarte&amp;nbsp;pues&amp;nbsp;podrías&amp;nbsp;estar perdiendo contenido valioso y echo&amp;nbsp;aquí&amp;nbsp;en&amp;nbsp;Venezuela.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;Y que un país dependa siempre de agentes externos es altamente peligroso.&amp;nbsp;Dígame&amp;nbsp;los servicios de Whatsapp y&amp;nbsp;Blackberry. Toda la comunicación personal de millones de venezolanos en manos de Agentes&amp;nbsp;externos&amp;nbsp;y que se usen sin el&amp;nbsp;mínimo entendimiento de los riesgos que esto acarrea pues es preocupante.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222222; font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
Todo es en dolares&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
Un tema muy importante actualmente para todos los venezolanos es el bendito dolar, y &amp;nbsp;es el que a mi más me preocupa, porque es el que nos afecta a todos como venezolanos. Y se ve reflejado en cuantos venezolanos no a gastado su cupo de dolares para comprar aplicaciones por itunes o Play Store. Y cuantos venezolanos emprendedores pueden vender aplicaciones a través de play store o itunes y ganarse un dinero por su trabajo?&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
Estas preguntas nos dan a entender, que por supuesto el mercado móvil de aplicaciones móviles en Venezuela es de muy lento crecimiento porque dependes enteramente del tema dolar y que para nosotros es sumamente problemático.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
Para el consumidor promedio, es decir el todos los venezolanos, pues no consiguen aplicaciones a su medida, que puedan pagar en bolívares o simplemente que tengan que ver con su día a día o las.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
Porque comento esto, pues porque cualquier aplicación echa afuera que se pueda adaptar a nuestra vida cotidiana, bien valdría la pena poder contar con una versión Venezolana. Y a mi parecer no seria tan exitosa como la extranjera pero seria bien recibida y tendría buena acogida dentro del publico venezolano.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/5114137335578132294/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2015/03/reinventando-la-rueda-desde-venezuela.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/5114137335578132294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/5114137335578132294'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2015/03/reinventando-la-rueda-desde-venezuela.html' title='Reinventando la rueda desde Venezuela'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil1GE-4Bw_QZDclYC4rmfGC11Tp4N3hP2s-A3wztlAuwK0jA7V_DuxF6R4qLs1MeRw0yqXR7c7_JoRPbZmsQ7oTzrsYypXSKa64bmngUoczqQ99ADbm8wOYMGrlm71pfL0aZL4-dhyj2k/s72-c/monociclos-motorizados.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-7600816190599802072</id><published>2014-12-23T02:57:00.001-04:30</published><updated>2014-12-23T02:57:46.773-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Django PostgreSQL Idle in Transaction</title><content type='html'>Es u problema muy común en los sitos que corren &lt;b&gt;django&lt;/b&gt; y &lt;b&gt;PostgreSql&lt;/b&gt; que allá conexiones que queden en &lt;b&gt;&quot;Idle in Transaction&quot;&lt;/b&gt; Son producto de transacciones sin cerrar o esperando commit o roolback.&lt;br /&gt;
&lt;br /&gt;
Este tipo de problema tiene dos posibles momentos en los que sucede esto. Uno es a la hora de hacer responder peticiones y otra es a la hora de señales de &lt;b&gt;django&lt;/b&gt; que se ejecutan al cargar un modelo.&lt;br /&gt;
&lt;br /&gt;
Para cuando las consultas queda abiertas al hacer peticiones, &lt;b&gt;django&lt;/b&gt; trae consigo TransactionMiddleware, al&amp;nbsp;añadir al final &#39;django.middleware.transaction.TransactionMiddleware&#39; a MIDDLEWARE_CLASSES debería solucionarse de manera definitiva el problema.&lt;br /&gt;
&lt;br /&gt;
En el otro caso me sucedió en un sistema, que estaba ejecutado una consulta en &lt;b&gt;class_prepared.connect. &lt;/b&gt;Y dejaba u proceso abierto que evitaba que el resto de las consultas se ejecutara. ¿Solución? Estas dos lineas de código y listo:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;from django.db import connection
#cierro la ejecución despues de terminar de ejecutar las cosultas
connection.close()
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/7600816190599802072/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/12/django-postgresql-idle-in-transaction.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/7600816190599802072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/7600816190599802072'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/12/django-postgresql-idle-in-transaction.html' title='Django PostgreSQL Idle in Transaction'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-560250894878629479</id><published>2014-12-23T00:01:00.001-04:30</published><updated>2014-12-23T00:23:40.577-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blender"/><title type='text'>Ninja 3D Blender</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAwSYBkRdDxm-wU-PQyAdG_p5viM6_-3z4-ZbHsC1CyAFPklrGCp-UlVHbGJE6MeHkYCgQrPRsx1nPQPOc_EREbf0OmoDI_uJZ0G90ZFk1kmV1d3F-lxbj-M3Bis5QuPcADujmdOj-tDE/s1600/Example+01.01+++Basic+skeleton.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAwSYBkRdDxm-wU-PQyAdG_p5viM6_-3z4-ZbHsC1CyAFPklrGCp-UlVHbGJE6MeHkYCgQrPRsx1nPQPOc_EREbf0OmoDI_uJZ0G90ZFk1kmV1d3F-lxbj-M3Bis5QuPcADujmdOj-tDE/s1600/Example+01.01+++Basic+skeleton.png&quot; height=&quot;283&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Hoy les dejo mi primer ninja echo en &lt;b&gt;Blender&lt;/b&gt;. Espero que les guste y pronto espero colocar más información sobre blender.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Three.js ninja&lt;/b&gt; ejemplo:&lt;br /&gt;
&lt;a href=&quot;http://bomba1990.pythonanywhere.com/sosinformatico/js/ninja-blender&quot;&gt;http://bomba1990.pythonanywhere.com/sosinformatico/js/ninja-blender&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Blender&lt;/b&gt;:&lt;br /&gt;
&lt;a href=&quot;https://www.dropbox.com/s/g71vtjgm0xmrudj/ninja2.blend?dl=0&quot;&gt;https://www.dropbox.com/s/g71vtjgm0xmrudj/ninja2.blend?dl=0&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/560250894878629479/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/12/ninja-3d-blender.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/560250894878629479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/560250894878629479'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/12/ninja-3d-blender.html' title='Ninja 3D Blender'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAwSYBkRdDxm-wU-PQyAdG_p5viM6_-3z4-ZbHsC1CyAFPklrGCp-UlVHbGJE6MeHkYCgQrPRsx1nPQPOc_EREbf0OmoDI_uJZ0G90ZFk1kmV1d3F-lxbj-M3Bis5QuPcADujmdOj-tDE/s72-c/Example+01.01+++Basic+skeleton.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-1241748455226718874</id><published>2014-12-22T11:20:00.001-04:30</published><updated>2014-12-22T23:50:19.397-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Packt Publishing"/><title type='text'>Packt’s $5 eBonanza returns</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAG8gTT-4JubxMWj9xGkYONB1wd9P7nDtgilG9W9-V4O5kLzJIZ6GtCxlKfFAj4-EQK3WKFwG3COOX7Kl0E1iJmcEtAwxAiAq_qQo2IeGEZSSGKylml8M7SkReKRZK9el_6cJcdLvq9I/s1600/5-dollar-promo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAG8gTT-4JubxMWj9xGkYONB1wd9P7nDtgilG9W9-V4O5kLzJIZ6GtCxlKfFAj4-EQK3WKFwG3COOX7Kl0E1iJmcEtAwxAiAq_qQo2IeGEZSSGKylml8M7SkReKRZK9el_6cJcdLvq9I/s1600/5-dollar-promo.jpg&quot; height=&quot;253&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div align=&quot;JUSTIFY&quot; style=&quot;margin-bottom: 0.35cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;JUSTIFY&quot; style=&quot;margin-bottom: 0.35cm;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;JUSTIFY&quot; style=&quot;margin-bottom: 0.35cm;&quot;&gt;
Following the success
of last year’s festive offer, Packt Publishing will be celebrating
the holiday season with an even bigger $5 offer.  
&lt;/div&gt;
&lt;div align=&quot;JUSTIFY&quot; style=&quot;margin-bottom: 0.35cm;&quot;&gt;
From Thursday 18&lt;sup&gt;th&lt;/sup&gt;
December, every eBook and video will be available on the publisher’s
website for just $5. Customers are invited to purchase as many as
they like before the offer ends on Tuesday January 6&lt;sup&gt;th&lt;/sup&gt;,
making it the perfect opportunity to try something new or to take
your skills to the next level as 2015 begins. 
&lt;/div&gt;
&lt;div align=&quot;JUSTIFY&quot; style=&quot;margin-bottom: 0.35cm;&quot;&gt;
With all $5 products
available in a range of formats and DRM-free, customers will find
great value content delivered exactly how they want it across Packt’s
website this Xmas and New Year.&lt;/div&gt;
&lt;br /&gt;
&lt;div align=&quot;JUSTIFY&quot; style=&quot;margin-bottom: 0.35cm;&quot;&gt;
Find out more at
&lt;b&gt;&lt;a href=&quot;http://bit.ly/1w1Vkps&quot;&gt;http://bit.ly/1w1Vkps&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/1241748455226718874/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/12/packts-5-ebonanza-returns.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/1241748455226718874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/1241748455226718874'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/12/packts-5-ebonanza-returns.html' title='Packt’s $5 eBonanza returns'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAG8gTT-4JubxMWj9xGkYONB1wd9P7nDtgilG9W9-V4O5kLzJIZ6GtCxlKfFAj4-EQK3WKFwG3COOX7Kl0E1iJmcEtAwxAiAq_qQo2IeGEZSSGKylml8M7SkReKRZK9el_6cJcdLvq9I/s72-c/5-dollar-promo.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-4587905120125760261</id><published>2014-11-29T18:51:00.001-04:30</published><updated>2014-11-29T18:51:10.817-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><category scheme="http://www.blogger.com/atom/ns#" term="django permissions"/><title type='text'> Django models añadir permisos para ver a todos. (view_*)</title><content type='html'>Algo muy común que se usa en Django son los permisos de modelo para controlar quien puede objetos particulares. Django provee permisos por defectos en todos los modelos, crear, editar y eliminar.&lt;br /&gt;
&lt;br /&gt;
Hay varias formas de agregar este permiso de &quot;ver&quot; en la web, pero la forma más sencilla que yo e visto es hacerlo en &quot;post_syncdb&quot;. Cuando uses el comando syncdb, todos los modelos de tu sistema se chequeara si tienen el permiso view y si no se los creara.&lt;br /&gt;
&lt;br /&gt;
Solo tienes que poner el siguiente script en el __init.py en el directorio de management/ de cualquiera de tus aplicaciones. Necesita estar dentro de un directorio de management o si no, no sera descubierto por el comando syncdb.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;from django.db.models.signals import post_syncdb
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import Permission
 
def add_view_permissions(sender, **kwargs):
    &quot;&quot;&quot;
    This syncdb hooks takes care of adding a view permission too all our 
    content types.
    &quot;&quot;&quot;
    # for each of our content types
    for content_type in ContentType.objects.all():
        # build our permission slug
        codename = &quot;view_%s&quot; % content_type.model
 
        # if it doesn&#39;t exist..
        if not Permission.objects.filter(content_type=content_type, codename=codename):
            # add it
            Permission.objects.create(content_type=content_type,
                                      codename=codename,
                                      name=&quot;Can view %s&quot; % content_type.name)
            print &quot;Added view permission for %s&quot; % content_type.name
 
# check for all our view permissions after a syncdb
post_syncdb.connect(add_view_permissions)
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/4587905120125760261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/11/django-models-anadir-permisos-para-ver.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4587905120125760261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4587905120125760261'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/11/django-models-anadir-permisos-para-ver.html' title=' Django models añadir permisos para ver a todos. (view_*)'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-8658280375229765835</id><published>2014-11-29T18:42:00.001-04:30</published><updated>2014-11-29T18:43:54.653-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="github"/><category scheme="http://www.blogger.com/atom/ns#" term="html5"/><category scheme="http://www.blogger.com/atom/ns#" term="Three.js"/><category scheme="http://www.blogger.com/atom/ns#" term="WebGL"/><title type='text'>3D city Project. Three.js HTML5 WebGL</title><content type='html'>Hoy queria compartir con ustedes un proyecto muy chevere que descubri hoy, es una especi de simscity en la web. Super cool y util para evaluar el desempeño de los navegadores web para este tipo de juegos.&lt;br /&gt;
&lt;br /&gt;
Aparte de todo el proyecto esta colocado en github y es de codigo abierto asi que pueden copiarlo ver como lo hicieron y si quieres crear el suyo propio.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6m4roTbX7N6w04WwrV5YmHhzjlbr2hukIA_vEriW4hFvVy9qntDvg2q1RkdOIV1FNv8X72uJoVwSyqSMorovPTphO58YjsN6FKmytGyfL2legFr0cU68AvGphfxjUONe1tC1NhEgWz6s/s1600/3D.CITY.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6m4roTbX7N6w04WwrV5YmHhzjlbr2hukIA_vEriW4hFvVy9qntDvg2q1RkdOIV1FNv8X72uJoVwSyqSMorovPTphO58YjsN6FKmytGyfL2legFr0cU68AvGphfxjUONe1tC1NhEgWz6s/s1600/3D.CITY.png&quot; height=&quot;163&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
Github:&amp;nbsp;&lt;a href=&quot;https://github.com/lo-th/3d.city&quot;&gt;https://github.com/lo-th/3d.city&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
Live Demo:&amp;nbsp;&lt;a href=&quot;http://lo-th.github.io/3d.city/index.html&quot;&gt;http://lo-th.github.io/3d.city/index.html&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/8658280375229765835/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/11/3d-city-project-threejs-html5.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/8658280375229765835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/8658280375229765835'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/11/3d-city-project-threejs-html5.html' title='3D city Project. Three.js HTML5 WebGL'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6m4roTbX7N6w04WwrV5YmHhzjlbr2hukIA_vEriW4hFvVy9qntDvg2q1RkdOIV1FNv8X72uJoVwSyqSMorovPTphO58YjsN6FKmytGyfL2legFr0cU68AvGphfxjUONe1tC1NhEgWz6s/s72-c/3D.CITY.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-6137573221446652154</id><published>2014-11-17T08:56:00.002-04:30</published><updated>2014-11-17T08:58:18.628-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Game development"/><category scheme="http://www.blogger.com/atom/ns#" term="Packt Publishing"/><category scheme="http://www.blogger.com/atom/ns#" term="unity3d"/><title type='text'>Learning Unity 2D Game Development by Example</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-ep0TVl1uUYVF6XqGP4C0EglWwdRLcmdY1Yj2kjySgt33S3D6hQNj8JKvod0tL_9X7F5LIn9I-Jm60hnndrXtNZugGOOBrinLzZXxZX76ECr30f9Q0AJES1wkclZT2b4anm2MI6wM3RQ/s1600/9046OT_Learning+Example.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-ep0TVl1uUYVF6XqGP4C0EglWwdRLcmdY1Yj2kjySgt33S3D6hQNj8JKvod0tL_9X7F5LIn9I-Jm60hnndrXtNZugGOOBrinLzZXxZX76ECr30f9Q0AJES1wkclZT2b4anm2MI6wM3RQ/s1600/9046OT_Learning+Example.jpg&quot; height=&quot;320&quot; width=&quot;259&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Is a very beginner book, the first 4 chapters are bored for someone that as a background in programming. From chapter 6 begins the real examples, but are so easy. it take at most one hour to complete each example.&amp;nbsp;Although are good examples to practice the skill, and learn some things.&lt;br /&gt;
&lt;br /&gt;
The book lacks much on scripting, 2D Animation, GUI, etc... Enter to a intermediate level of development a game with Unity. Exists best content on the official page of unity.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.packtpub.com/game-development/unity-2d-game-development-example-beginner%E2%80%99s-guide-raw&quot; target=&quot;_blank&quot;&gt;https://www.packtpub.com/game-development/unity-2d-game-development-example-beginner%E2%80%99s-guide-raw&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/6137573221446652154/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/11/learning-unity-2d-game-development-by.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/6137573221446652154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/6137573221446652154'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/11/learning-unity-2d-game-development-by.html' title='Learning Unity 2D Game Development by Example'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-ep0TVl1uUYVF6XqGP4C0EglWwdRLcmdY1Yj2kjySgt33S3D6hQNj8JKvod0tL_9X7F5LIn9I-Jm60hnndrXtNZugGOOBrinLzZXxZX76ECr30f9Q0AJES1wkclZT2b4anm2MI6wM3RQ/s72-c/9046OT_Learning+Example.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-969506850915321091</id><published>2014-11-16T17:46:00.000-04:30</published><updated>2014-11-17T08:57:19.567-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="cocos2d-x"/><category scheme="http://www.blogger.com/atom/ns#" term="Game development"/><category scheme="http://www.blogger.com/atom/ns#" term="Packt Publishing"/><title type='text'>Cocos2d-x Game Development Essentials</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2uvHkZ6zccLwXzTZ7AWELVSbIFDcYTKEoenIwLfvIWslmFnMQ1EFiFfbTFrLg7tgylbZPbpVz2SuyNzwwviokUL4JUHJuUPmITvjiTDx_Z2E1YLriaaqhqVJuAVmnJz0OTJ-uP0FiqQY/s1600/7863OS_cov.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2uvHkZ6zccLwXzTZ7AWELVSbIFDcYTKEoenIwLfvIWslmFnMQ1EFiFfbTFrLg7tgylbZPbpVz2SuyNzwwviokUL4JUHJuUPmITvjiTDx_Z2E1YLriaaqhqVJuAVmnJz0OTJ-uP0FiqQY/s320/7863OS_cov.jpg&quot; width=&quot;259&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I&#39;m an intermediate level programmer in the game development. This book gave me the foundation I needed to take full advantage of what Cocos2dX has to offer. Every chapter is very clearly written, and teaches step by step the necesary to learn how to work with this Game development Platform.&lt;br /&gt;
&lt;br /&gt;
I like to learn by doing, so I was glad that examples with sample data are included in every chapter. You learn and try it out.&lt;br /&gt;
&lt;br /&gt;
The writing is very clear, and the editing is clean. The author is concise, specific, and never wasteful. This book has been a tremendous help at my job, and the skills I&#39;ve learned have allowed me to take on many new responsibilities.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you are like me, new to cocos2dx this is a very usefull book.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://www.packtpub.com/game-development/cocos2d-x-game-development-essentials&quot; target=&quot;_blank&quot;&gt;https://www.packtpub.com/game-development/cocos2d-x-game-development-essentials&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;iframe frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=US&amp;amp;source=ss&amp;amp;ref=ss_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=publisnet-20&amp;amp;marketplace=amazon&amp;amp;region=US&amp;amp;placement=B00MUHSPI0&amp;amp;asins=B00MUHSPI0&amp;amp;linkId=WPSKWJP52D4N3S5X&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot; style=&quot;height: 240px; width: 120px;&quot;&gt;
&lt;/iframe&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/969506850915321091/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/11/cocos2d-x-game-development-essentials.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/969506850915321091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/969506850915321091'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/11/cocos2d-x-game-development-essentials.html' title='Cocos2d-x Game Development Essentials'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2uvHkZ6zccLwXzTZ7AWELVSbIFDcYTKEoenIwLfvIWslmFnMQ1EFiFfbTFrLg7tgylbZPbpVz2SuyNzwwviokUL4JUHJuUPmITvjiTDx_Z2E1YLriaaqhqVJuAVmnJz0OTJ-uP0FiqQY/s72-c/7863OS_cov.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-1538594548298418226</id><published>2014-10-29T22:15:00.002-04:30</published><updated>2014-10-29T22:15:19.030-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="django"/><title type='text'>Añadir nuevos permisos a los modelos en DJANGO</title><content type='html'>Un problema muy común cuando empezamos a trabajar con permisos y autenticación en DJANGO es que empezamos a añadir permisos propios a los modelos y el migrate de south no lo reconoce y el syncdb tampoco. Como en este ejemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: javascript&quot;&gt;class T21Turma(models.Model):
 class Meta:
 permissions = ((&quot;can_view_boletim&quot;, &quot;Can view boletim&quot;),
 (&quot;can_view_mensalidades&quot;, &quot;Can view mensalidades&quot;),)

&lt;/pre&gt;
&lt;br /&gt;
Para obligar que el sistema lo agregue simplemente hay que hacer:&lt;br /&gt;
&lt;br /&gt;
python manage.py syncdb --all&lt;br /&gt;
&lt;br /&gt;
Espero que les sirva, a mi me funciono.</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/1538594548298418226/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/10/anadir-nuevos-permisos-los-modelos-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/1538594548298418226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/1538594548298418226'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/10/anadir-nuevos-permisos-los-modelos-en.html' title='Añadir nuevos permisos a los modelos en DJANGO'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-4780479815947427894</id><published>2014-10-29T22:01:00.001-04:30</published><updated>2014-10-29T22:02:45.340-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="unity3d"/><title type='text'>Creando un juego &quot;Infinite Runner&quot; en 2D con Unity 4.3 (Tutorial)</title><content type='html'>Hoy les muestro una lista de reproducción que me encanta, con la cual te enseñan a crear un juego 2d con unity 3d. Son 26 videos que no tienen perdida.&lt;br /&gt;
&lt;br /&gt;
Saludos....&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;344&quot; src=&quot;https://www.youtube.com/embed/videoseries?list=PLREdURb87ks2qkD9svvlIwYwN35FZ3Afv&quot; width=&quot;425&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/4780479815947427894/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/10/creando-un-juego-infinite-runner-en-2d.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4780479815947427894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4780479815947427894'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/10/creando-un-juego-infinite-runner-en-2d.html' title='Creando un juego &quot;Infinite Runner&quot; en 2D con Unity 4.3 (Tutorial)'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/videoseries/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-8612603593826474865</id><published>2014-10-16T23:20:00.002-04:30</published><updated>2014-10-16T23:20:30.807-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Packt Publishing"/><title type='text'>Unity 4 Game Development HOTSHOT [REVIEW]</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRrwOS87JEKMqxrP02HB92RKLYK_aWUit3H3LR_-p7se4XP0YTX8bItU8KhFxbqSqkVorNngOqBnbw59V1ihyphenhyphentrwa7Rw5rAWBQw1tT9BE1sAtBvGhVpxpbnT6Le2pY0rH0IVCzgwcnxro/s1600/51O9+pruaWL._SS300_.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRrwOS87JEKMqxrP02HB92RKLYK_aWUit3H3LR_-p7se4XP0YTX8bItU8KhFxbqSqkVorNngOqBnbw59V1ihyphenhyphentrwa7Rw5rAWBQw1tT9BE1sAtBvGhVpxpbnT6Le2pY0rH0IVCzgwcnxro/s1600/51O9+pruaWL._SS300_.jpg&quot; height=&quot;320&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Yo ya e leido varios libros anteriores sobre unity, y este me encanto, porque me permite irme adentrando en características especificas del desarrollo de juego con unity que son imprescindibles para poder llegar a un nivel avanzado de desarrollo con unity.&lt;br /&gt;
&lt;br /&gt;
El libro realiza paso a paso ejecicios practicos que estan descritos de una manera tan sencilla que con muy poco conocimiento de programación te permite seguirlo, y llegar al resultado final sin muchos contratiempos. .&lt;br /&gt;
&lt;br /&gt;
Además los ejemplos me permitieron a mi avanzar un bastante en perfeccionar el juego que estoy desarrollando, añadir características que desconocía sobre unity a mi juego. Y darle una mayor calidad a mi trabajo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I already has read many books of Unity, and i love this book, because  it allows me to go deeper into specific features of game development with unity that are essential to reach an advanced level of development with unity. &lt;br /&gt;&lt;br /&gt;The book makes a practical step by step tasks. the tasks are described in a simple way that with very little knowledge of unity allows you to follow and reach the final result without many setbacks. . &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In addition the examples allowed me to improve my game development a lot, giving higher quality at my work&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=US&amp;amp;source=ss&amp;amp;ref=ss_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=publisnet-20&amp;amp;marketplace=amazon&amp;amp;region=US&amp;amp;placement=184969558X&amp;amp;asins=184969558X&amp;amp;linkId=2XETC4Z73R6EDH4J&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot; style=&quot;height: 240px; width: 120px;&quot;&gt;
&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/8612603593826474865/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/10/unity-4-game-development-hotshot-review.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/8612603593826474865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/8612603593826474865'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/10/unity-4-game-development-hotshot-review.html' title='Unity 4 Game Development HOTSHOT [REVIEW]'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRrwOS87JEKMqxrP02HB92RKLYK_aWUit3H3LR_-p7se4XP0YTX8bItU8KhFxbqSqkVorNngOqBnbw59V1ihyphenhyphentrwa7Rw5rAWBQw1tT9BE1sAtBvGhVpxpbnT6Le2pY0rH0IVCzgwcnxro/s72-c/51O9+pruaWL._SS300_.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3040540087092322309.post-4823865948745882046</id><published>2014-08-15T23:12:00.000-04:30</published><updated>2014-09-02T19:33:58.547-04:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Packt Publishing"/><title type='text'>Learning iPhone Game Development with Cocos2D 3.0</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgImSteYQY8rl1QkUpLxdCZj2bKiWJclxK1W3Tct-mrpVQKMJ6oergQMhue8Z2_18EWcOLPr6w703sFMBnAMXMHTpMmEvXWzQuW3jl8TuL-wbSe9g8I9BFHXGpTFBDIk0aMG7vnp4JRjGw/s1600/0144OS_Cocos2D+3.0.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgImSteYQY8rl1QkUpLxdCZj2bKiWJclxK1W3Tct-mrpVQKMJ6oergQMhue8Z2_18EWcOLPr6w703sFMBnAMXMHTpMmEvXWzQuW3jl8TuL-wbSe9g8I9BFHXGpTFBDIk0aMG7vnp4JRjGw/s1600/0144OS_Cocos2D+3.0.jpg&quot; height=&quot;320&quot; width=&quot;259&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
I need more than 5 stars to rate this book. I&#39;ve bought and read many other technical books in the past. This is the first time, i&#39;m program for ios. Very easy to follow, great examples. You will build amazing games while you learn all the new cool features that come with cocos2D.&lt;br /&gt;
&lt;br /&gt;
It&#39;s even better than official documentation!.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to develop games using cocos2D,is a very nicely book. Don&#39;t think it twice… it&#39;s really worth it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.packtpub.com/game-development/learning-iphone-game-development-cocos2d-30&quot;&gt;https://www.packtpub.com/game-development/learning-iphone-game-development-cocos2d-30&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;iframe frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&amp;amp;OneJS=1&amp;amp;Operation=GetAdHtml&amp;amp;MarketPlace=US&amp;amp;source=ss&amp;amp;ref=ss_til&amp;amp;ad_type=product_link&amp;amp;tracking_id=publisnet-20&amp;amp;marketplace=amazon&amp;amp;region=US&amp;amp;placement=1782160140&amp;amp;asins=1782160140&amp;amp;linkId=UODMUQ2MMHPKBDSN&amp;amp;show_border=true&amp;amp;link_opens_in_new_window=true&quot; style=&quot;height: 240px; width: 120px;&quot;&gt;
&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://sosinformatico.blogspot.com/feeds/4823865948745882046/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://sosinformatico.blogspot.com/2014/08/learning-iphone-game-development-with.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4823865948745882046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3040540087092322309/posts/default/4823865948745882046'/><link rel='alternate' type='text/html' href='http://sosinformatico.blogspot.com/2014/08/learning-iphone-game-development-with.html' title='Learning iPhone Game Development with Cocos2D 3.0'/><author><name>Mariano Ramirez</name><uri>http://www.blogger.com/profile/07109904074646042459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgImSteYQY8rl1QkUpLxdCZj2bKiWJclxK1W3Tct-mrpVQKMJ6oergQMhue8Z2_18EWcOLPr6w703sFMBnAMXMHTpMmEvXWzQuW3jl8TuL-wbSe9g8I9BFHXGpTFBDIk0aMG7vnp4JRjGw/s72-c/0144OS_Cocos2D+3.0.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>