<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Iker Perez de AlbenizIker Perez de Albeniz - mi propio egolog sobre tecnología y frikadas varias</title>
	
	<link>http://www.ikeralbeniz.net</link>
	<description>mi propio egolog sobre tecnología y frikadas varias</description>
	<lastBuildDate>Sat, 21 Jan 2012 12:57:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/IkerPerezDeAlbeniz" /><feedburner:info uri="ikerperezdealbeniz" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Obtener drivers USB Samsung sin instalar Kies</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/WaMSSQp-yJA/</link>
		<comments>http://www.ikeralbeniz.net/2011/08/22/obtener-drivers-usb-samsung-sin-instalar-kies/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 20:38:46 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Movil]]></category>
		<category><![CDATA[adb]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[drivers]]></category>
		<category><![CDATA[kies]]></category>
		<category><![CDATA[samsung]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=644</guid>
		<description><![CDATA[Los que desarrollamos para Android en sistemas operativos como GNU/Linux o MacOs X no solemos tener problemas para acceder a los teléfonos a través de USB, bien para instalar aplicaciones o acceder a los logs a través de <a href="http://developer.android.com/guide/developing/tools/adb.html" target="android">ADB</a>. El problema lo tenemos cuando queremos hacer esto mismo en sistemas Windows y nos encontramos que al conectar el móvil al PC nos aparece un mensaje de dispositivo desconocido o que no encuentra los drivers.

En mi caso, hace poco he me hecho con un <a href="http://es.wikipedia.org/wiki/Samsung_Galaxy_S_II" target="wiki">Samsung Galaxy SI II</a> con el que estoy haciendo unas pruebas. Y lo primero que hice fue buscar los drivers para poder conectarme vía ADB. Mi sorpresa fue encontrar un montón de referencias a un paquete instalador de drivers para dispositivos Samsung que no me funcionaba. Otras referencias me indicaban que instalara <a href="http://en.wikipedia.org/wiki/Samsung_Kies" target="wiki">Kies</a>, un software de Samsung para acceder al dispositivos, sincronizar y demás herramientas que suelen ofrecer las empresas fabricantes de teléfonos móviles. Por supuesto, no estaba dispuesto a instalar todo una <em>suite</em> para instalar unos drivers USB, por lo que pensé que quizás seria posible obtener los driver del propio paquete de instalación de Kies.]]></description>
			<content:encoded><![CDATA[<p>Los que desarrollamos para Android en sistemas operativos como GNU/Linux o MacOs X no solemos tener problemas para acceder a los teléfonos a través de USB, bien para instalar aplicaciones o acceder a los logs a través de <a href="http://developer.android.com/guide/developing/tools/adb.html" target="android">ADB</a>. El problema lo tenemos cuando queremos hacer esto mismo en sistemas Windows y nos encontramos que al conectar el móvil al PC nos aparece un mensaje de dispositivo desconocido o que no encuentra los drivers.</p>
<p>En mi caso, hace poco he me hecho con un <a href="http://es.wikipedia.org/wiki/Samsung_Galaxy_S_II" target="wiki">Samsung Galaxy SI II</a> con el que estoy haciendo unas pruebas. Y lo primero que hice fue buscar los drivers para poder conectarme vía ADB. Mi sorpresa fue encontrar un montón de referencias a un paquete instalador de drivers para dispositivos Samsung que no me funcionaba. Otras referencias me indicaban que instalara <a href="http://en.wikipedia.org/wiki/Samsung_Kies" target="wiki">Kies</a>, un software de Samsung para acceder al dispositivos, sincronizar y demás herramientas que suelen ofrecer las empresas fabricantes de teléfonos móviles. Por supuesto, no estaba dispuesto a instalar todo una <em>suite</em> para instalar unos drivers USB, por lo que pensé que quizás seria posible obtener los driver del propio paquete de instalación de Kies.</p>
<p>Por lo tanto, lo primero que hice fue buscar Kies en Google y acceder a <a href="http://www.samsung.com/es/support/mobilesoftwaremanual/mobilesoftwaremanual.do?page=MOBILE.SOFTWARE.MANUAL" target="kies">la pagina oficial de Kies</a> donde descargué el software para Windows</p>
<p><a href="http://org.downloadcenter.samsung.com/downloadfile/ContentsFile.aspx?CDSite=UNI_ES&#038;CDCttType=SW&#038;ModelType=N&#038;ModelName=FM_UPDATE&#038;idyn=N&#038;VPath=SW/201105/20110512115717796/Kies_2.0.2.11071_128_2.exe">http://org.downloadcenter.samsung.com/downloadfile/ContentsFile.aspx?CDSite=UNI_ES&#038;CDCttType=SW&#038;ModelType=N&#038;ModelName=FM_UPDATE&#038;idyn=N&#038;VPath=SW/201105/20110512115717796/Kies_2.0.2.11071_128_2.exe</a></p>
<p>Por otro lado me descargué también el <a href="http://legroom.net/software/uniextract" target="uextract">UniversalExtractor</a>, el cual es un software capaz de desempaquetar instaladores, y ya que al fin y al cabo un instalador no es mas que un contenedor de binarios con instrucciones de donde copiarlos, no tiene mayor misterio acceder a su interior (la otra opción es instalar Kies coger el driver y desinstalarlo después).</p>
<p><a href="http://legroom.net/scripts/download.php?file=uniextract161">http://legroom.net/scripts/download.php?file=uniextract161</a></p>
<p>Une vez instalado el UniversalExtractor, accedemos a nuestro directorio de descargas y extraemos el instalador de Kies seleccionando la opción &#8220;<strong>Instalshield /b Interconector</strong>&#8220;</p>
<p><img alt="" src="https://lh6.googleusercontent.com/-SoQsOP_jX2g/TlOBFeXlkSI/AAAAAAAAAMk/pxcXw98r46w/uniextractor.png" class="aligncenter" width="367" height="445" /><img alt="" src="https://lh4.googleusercontent.com/-eGU4g2HlJPo/TlOBFY_n6OI/AAAAAAAAAMg/_lKeyMMeo1E/uniextractor2.png" class="aligncenter" width="336" height="205" /></p>
<p>Lo que hará que se nos cree una carpeta <strong>Kies_XXXXXX\ uni_xuemcfc\</strong></p>
<p>Dentro de esta carpeta tendremos otro instalador MSI &#8220;<strong>Samsung Kies.msi</strong>&#8220;. Que volveremos a extraer de manera parecida pero esta vez con la opción &#8220;<strong>MSI Instalador Administrativo</strong>&#8220;.</p>
<p><img alt="" src="https://lh5.googleusercontent.com/-I__2sDcgGlU/TlOBFUK8iJI/AAAAAAAAAMo/vIykv6eNTv8/uniextractor3.PNG" class="aligncenter" width="336" height="220" /></p>
<p>Al desempaquetar el MSI obtendremos el contenido del instalador de Kies y si indagáis encontrareis que el instalador de los Drivers USB esta en <strong>Samsung Kies\program files\Samsung\Kies\USB Driver</strong> con el nombre de <strong>SAMSUNG_USB_Driver_for_Mobile_Phones.exe</strong></p>
<p>Ejecutáis el instalador y pronto veréis como Windows va reconociendo vuestros dispositivos móviles. </p>
<p>El nombre del instalador de drivers es el mismo que el que en foros anteriores había encontrado e instalado pero que no me funcionaban. Esto se debía a que eran versiones anteriores del instalador de drivers que no contenían los drivers compatibles con el Samsung Galaxy S II. Por tanto en vez de alojar el instalador en un repositorio y enlazarlo en foros, he creído mas interesante mostrar como obtener la ultima versión del instalador de drivers a partir del instalador de Kies.</p>
<p>Espero que os haya sido de utilidad.</p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/WaMSSQp-yJA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/08/22/obtener-drivers-usb-samsung-sin-instalar-kies/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/08/22/obtener-drivers-usb-samsung-sin-instalar-kies/</feedburner:origLink></item>
		<item>
		<title>Desproteger Web-Fonts con Google Docs</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/-QOK9UeKxiQ/</link>
		<comments>http://www.ikeralbeniz.net/2011/05/24/desproteger-web-fonts-con-google-docs/#comments</comments>
		<pubDate>Tue, 24 May 2011 15:41:08 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[docs]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[obfuscate]]></category>
		<category><![CDATA[protection]]></category>
		<category><![CDATA[web-fonts]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=637</guid>
		<description><![CDATA[Como comente en un articulo anterior, la ultima versión de <a href="http://es.wikipedia.org/wiki/Css" target="wiki">CSS</a> (CSS3) permite utilizar fuentes propias en nuestras paginas Web gracias al elemento <strong>@fotn-face</strong>. Por eso muchos diseñadores Web utilizan esta ultima formular para intentar dificultar el acceso a la fuente, en caso de que esta haya sido desarrollada por el. Aun así es relativamente sencillo poder copiar la fuente y usarla en nuestra Web, pero.. ¿y usarla en nuestro PC?]]></description>
			<content:encoded><![CDATA[<p>Como comente en un articulo anterior, la ultima versión de <a href="http://es.wikipedia.org/wiki/Css" target="wiki">CSS</a> (CSS3) permite utilizar fuentes propias en nuestras paginas Web gracias al elemento <strong>@fotn-face</strong>. Por tanto si disponemos de una fuente <em>MiFuente.ttf</em> podremos utilizarla en nuestra página Web de la siguiente manera.</p>
<p><pre class="brush: css; title: ; notranslate">&lt;br /&gt;
@font-face {&lt;br /&gt;
	font-family:Mifuente;&lt;br /&gt;
	src: url(‘MiFuente.ttf’);&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;@font-face {&lt;br /&gt;
	font-family: Mifuente;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	src: url(&amp;#8216;MiFuente.ttf’);&lt;br /&gt;
}&lt;br /&gt;
</pre></p>
<p>Que luego podremos usarla de igual manera que otras fuentes</p>
<p><pre class="brush: css; title: ; notranslate">&lt;br /&gt;
body{&lt;br /&gt;
	font-family: Mifuente;&lt;br /&gt;
}&lt;br /&gt;
</pre></p>
<p>Al igual que en las imágenes es posible utilizar la etiqueta data y adjuntar la fuente en <a href="http://es.wikipedia.org/wiki/Base64" target="wiki"><em>base64</em></a>.</p>
<p><pre class="brush: css; title: ; notranslate">&lt;br /&gt;
@font-face {&lt;br /&gt;
	font-family: &amp;#8216; Mifuente &amp;#8216;;&lt;br /&gt;
	src:          url(data:font/truetype;charset=utf-8;base64,AAEAAAAQAQAABAAARkZUTVtQ+h4AAAEMAA………..AMrRFmwFCs=) format(&amp;#8216;truetype&amp;#8217;);&lt;br /&gt;
}&lt;br /&gt;
</pre></p>
<p>Por eso muchos diseñadores Web utilizan esta ultima formular para intentar dificultar el acceso a la fuente, en caso de que esta haya sido desarrollada por el. Aun así es relativamente sencillo poder copiar la fuente y usarla en nuestra Web, pero.. ¿y usarla en nuestro PC? En este caso seria tan sencillo como coger todo el stream en base64 y decodificarlo. Existen librerías para todos los lenguajes de programación que permiten convertir de/a base64, pero si queréis ir a los sencillo, tenéis un montón de conversores online disponibles. Yo recomiendo el siguiente ya que permite convertir a un binario.</p>
<p><a href="http://www.motobit.com/util/base64-decoder-encoder.asp">http://www.motobit.com/util/base64-decoder-encoder.asp</a></p>
<p>En la imagen siguiente podemos ver como podemos convertir una fuente en base64 a un binario TTF.</p>
<p><img class="aligncenter" src="https://lh4.googleusercontent.com/-J1VsIWSQ5jo/TdvJjnKaPSI/AAAAAAAAAIg/JHa81qRBwn8/base64-fotn.png" alt="" width="618" height="500" /></p>
<p>Una vez tenemos la fuente podremos usarla con todas nuestra aplicaciones (Si estamos en Windows deberemos arrástrala a la carpeta FONTS). Aun así, algunos diseñadores de fuentes, utilizan técnicas de ofuscación que permiten que una fuente pueda ser utilizada en nuestra Web pero no en nuestro PC. Y esto es posible porque existe software capaz de alterar la estructura interna de las fuentes de tal forma que puede ser reenderizada por los navegadores pero no por los PCs.</p>
<p>En estos casos deberemos realizar los siguientes pasos:</p>
<ol>
<li>Usando Gmail nos enviaremos la fuente (con extensión TTF) a nosotros mismos</li>
<li>Gmail nos mostrara nuestro adjunto con las típicas opciones de VER o DESCARGAR</li>
<li>Pulsaremos VER y se nos mostrara la fuente con el visualizador de fuentes de Google Docs</li>
<li>En el menú FILE pulsaremos en PRINT (PDF)</li>
<li>Cancelaremos la impresión y guardaremos el PDF</li>
</ol>
<p><img class="aligncenter" src="https://lh6.googleusercontent.com/_YsgLljqoEIQ/TdvLIoswkFI/AAAAAAAAAIk/2RrAcMXqmjM/font-gmail.jpg" alt="" width="545" height="160" /><img class="aligncenter" src="https://lh3.googleusercontent.com/_YsgLljqoEIQ/TdvLshqFkcI/AAAAAAAAAIo/qDfROf8aS8U/font-gmail2.jpg" alt="" width="417" height="423" /></p>
<p>Ya tenemos nuestra fuente en formato PDF, por lo que ahora necesitaremos convertirla de PDF a otros formatos que nos sean mas útiles. Para ello usaremos otro servicio online:</p>
<p><a href="http://onlinefontconverter.com/myfonts.php">http://onlinefontconverter.com/myfonts.php</a></p>
<p>Este servicio nos permitirá convertir nuestra fuente en PDF a una gran variedad de fuentes, entre las cuales nos interesa:</p>
<ul>
<li><strong>OTF</strong>: Formato Open Source de nuestra fuente, 100% compatible con sistema GNU/Linux</li>
<li><strong>TTF</strong>: Formato típico de fuente que solemos tener instalado en sistemas Windows</li>
<li><strong>DFONT</strong>: Formato de fuente para MAC</li>
<li><strong>SVG</strong>: Formato de fuente VECTORIAL propuesto por W3C, muy útil si utilizas <a href="http://inkscape.org/" target="ink">inkscape</a> ya que es posible modificarla.</li>
</ul>
<p><img class="aligncenter" src="https://lh4.googleusercontent.com/_YsgLljqoEIQ/TdvM1oM-TMI/AAAAAAAAAIs/rtt2AYQQZkY/font-converter.jpg" alt="" width="526" height="405" /></p>
<p>Espero que este truco os sea de gran utilidad <img src='http://www.ikeralbeniz.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/-QOK9UeKxiQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/05/24/desproteger-web-fonts-con-google-docs/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/05/24/desproteger-web-fonts-con-google-docs/</feedburner:origLink></item>
		<item>
		<title>Empezando con Windows Phone 7</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/USPTmQ19Ob8/</link>
		<comments>http://www.ikeralbeniz.net/2011/03/21/empezando-con-windows-phone-7/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 12:55:24 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[Movil]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[movil]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[phonegap]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=625</guid>
		<description><![CDATA[Estos días me ha dado por intentar probar a desarrollar algo para Windows Phone 7. Más concretamente, quería probar<a href="http://blog.mrlacey.co.uk/2010/08/wp7dev-phonegap-and-windows-phone-7.html" target="betapg"> las implementaciones BETA que existían de PhoneGap para Windows Phone 7</a>, por lo que rápidamente me hice con una versión de <a href="http://www.microsoft.com/visualstudio/en-us/" target="msvs">Visual Studio 2010</a>.

<a href="https://github.com/mrlacey/phonegap-wp7" target="github">Me baje el código fuente de los ejemplo de PhoneGap</a> y lo primero que me di cuenta era que la instalación de VS 2010 no viene con las herramientas de desarrollo de aplicaciones para terminales móviles. Al final, encontré que lo que necesitaba era un complemento llamado "<a href="http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=04704acf-a63a-4f97-952c-8b51b34b00ce" target=",sdn">Windows Phone 7 Developer Tools</a>", que encontré en esta dirección: 

<a href="http://download.microsoft.com/download/1/7/7/177D6AF8-17FA-40E7-AB53-00B7CED31729/vm_web.exe" target="msdown">http://download.microsoft.com/download/1/7/7/177D6AF8-17FA-40E7-AB53-00B7CED31729/vm_web.exe</a>

Lamentablemente al intentar instalarlo me decía que no era posible, ya que era necesario tener Windows Vista o 7 instalado. Al final conseguí hacerlo funcionar en XP realizando los siguientes pasos:

<ul>
<li>Descargamos <em>Windows Phone 7 Developer Tools</em> (<strong>vm_web.exe</strong>)</li>
<li>Extraemos el contenido de el instalador, lanzado una consola, posicionándonos en el directorio donde se encuentra la aplicación vm_bex.exe  y ejecutándola de la siguiente manera:<strong> vm_web.exe /x &#60;directorio_donde_lo_extraeremos&#62;</strong></li>
<li>Abrimos <strong>&#60;directorio_donde_lo_extraeremos&#62;\baseline.dat</strong> con un editor de texto</li>
<li>Buscamos la sección <strong>[gencomp7788]</strong></li>
<li>Cambiamos los valores de la sección <strong>InstallOnLHS</strong> y <strong>InstallOnWinXP</strong> a 0.</li>
<li>Guardamos y cerramos <em>&#60;directorio_donde_lo_extraeremos&#62;\baseline.dat</em></li>
<li>Ejecutamos el instalador lanzando el siguiente comando: <strong>&#60;directorio_donde_lo_extraeremos&#62;\setup.exe /web</strong></li>
</ul>
De esta manera se nos lanzara el instalador y podremos instalar las herramientas de desarrollo móvil a nuestros VS 2010.

NOTA: En Windows XP no es posible ejecutar el emulador, pero si compilar y desarrollar. En caso de querer probar la aplicación, deberéis disponer de un terminal con Windows Phone 7 y a la hora de <em>Debugear</em> seleccionar "Windows Phone / Device".]]></description>
			<content:encoded><![CDATA[<p>Estos días me ha dado por intentar probar a desarrollar algo para Windows Phone 7. Más concretamente, quería probar<a href="http://blog.mrlacey.co.uk/2010/08/wp7dev-phonegap-and-windows-phone-7.html" target="betapg"> las implementaciones BETA que existían de PhoneGap para Windows Phone 7</a>, por lo que rápidamente me hice con una versión de <a href="http://www.microsoft.com/visualstudio/en-us/" target="msvs">Visual Studio 2010</a>.</p>
<p><a href="https://github.com/mrlacey/phonegap-wp7" target="github">Me baje el código fuente de los ejemplo de PhoneGap</a> y lo primero que me di cuenta era que la instalación de VS 2010 no viene con las herramientas de desarrollo de aplicaciones para terminales móviles. Al final, encontré que lo que necesitaba era un complemento llamado &#8220;<a href="http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=04704acf-a63a-4f97-952c-8b51b34b00ce" target=",sdn">Windows Phone 7 Developer Tools</a>&#8220;, que encontré en esta dirección: </p>
<p><a href="http://download.microsoft.com/download/1/7/7/177D6AF8-17FA-40E7-AB53-00B7CED31729/vm_web.exe" target="msdown">http://download.microsoft.com/download/1/7/7/177D6AF8-17FA-40E7-AB53-00B7CED31729/vm_web.exe</a></p>
<p>Lamentablemente al intentar instalarlo me decía que no era posible, ya que era necesario tener Windows Vista o 7 instalado. Al final conseguí hacerlo funcionar en XP realizando los siguientes pasos:</p>
<ul>
<li>Descargamos <em>Windows Phone 7 Developer Tools</em> (<strong>vm_web.exe</strong>)</li>
<li>Extraemos el contenido de el instalador, lanzado una consola, posicionándonos en el directorio donde se encuentra la aplicación vm_bex.exe  y ejecutándola de la siguiente manera:<strong> vm_web.exe /x &lt;directorio_donde_lo_extraeremos&gt;</strong></li>
<li>Abrimos <strong>&lt;directorio_donde_lo_extraeremos&gt;\baseline.dat</strong> con un editor de texto</li>
<li>Buscamos la sección <strong>[gencomp7788]</strong></li>
<li>Cambiamos los valores de la sección <strong>InstallOnLHS</strong> y <strong>InstallOnWinXP</strong> a 0.</li>
<li>Guardamos y cerramos <em>&lt;directorio_donde_lo_extraeremos&gt;\baseline.dat</em></li>
<li>Ejecutamos el instalador lanzando el siguiente comando: <strong>&lt;directorio_donde_lo_extraeremos&gt;\setup.exe /web</strong></li>
</ul>
<p>De esta manera se nos lanzara el instalador y podremos instalar las herramientas de desarrollo móvil a nuestros VS 2010.</p>
<p>NOTA: En Windows XP no es posible ejecutar el emulador, pero si compilar y desarrollar. En caso de querer probar la aplicación, deberéis disponer de un terminal con Windows Phone 7 y a la hora de <em>Debugear</em> seleccionar &#8220;Windows Phone / Device&#8221;.</p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/USPTmQ19Ob8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/03/21/empezando-con-windows-phone-7/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/03/21/empezando-con-windows-phone-7/</feedburner:origLink></item>
		<item>
		<title>Iconic Stroke: una fuente de iconos muy interesante</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/N7jkilkN1vw/</link>
		<comments>http://www.ikeralbeniz.net/2011/03/16/iconic-stroke-una-fuente-de-iconos-muy-interesante/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 15:24:13 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[fuentes]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[iconic]]></category>
		<category><![CDATA[stroke]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=604</guid>
		<description><![CDATA[En las ultima semanas tengo el blog un poco parado ya que estoy a tope con otros proyectos. Entre ellos, algunos relacionados, como no, con aplicaciones móviles. Uno de estos proyectos lo estoy realizando junto a <a href="http://soyjavi.com/" target="jj">Javier Jimenez</a> que es un experto en <a href="http://es.wikipedia.org/wiki/HTML_5" target="wiki">HTML5</a>, <a href="http://es.wikipedia.org/wiki/Javascript" target="wiki">JavaScript</a> y todo lo relacionado con <a href="http://es.wikipedia.org/wiki/Experiencia_de_usuario" target="wiki">UX</a> en general. 

Diseñando una aplicación, a Javi se le ocurrió la idea de usar una fuente de Iconos en vez de imágenes para aligerar la aplicación y que fuera mas fácil de diseñar y trabajar con transparencias etc... La fuente en cuestión es la <strong>Iconic Stroke</strong> y las posibilidades que ofrece creo que son muy interesantes, no solo de cara a no tener que usar imagenes, ya que <a href="http://es.wikipedia.org/wiki/Hojas_de_estilo_en_cascada" target="wiki">CSS3</a> nos permite usar fuente propias, sino que, de cara a diseñar iconos también nos puede ser de gran ayuda. Por eso os dejo aquí un link de donde podéis descargar esta fuente y un ejemplo de los iconos, cargando la fuente con CSS3.

<center><a href="http://googlefontdirectory.googlecode.com/hg/iconic/IconicStroke.ttf">http://googlefontdirectory.googlecode.com/hg/iconic/IconicStroke.ttf</a>

<div style="padding:5px;border:1px solid #FF0000;background: #F9A7A7;color:#FF0000;">Solo veréis los iconos si usáis un navegador que soporte CSS3 como Firefox, Crome o Safari. </div>

    <table class="iconstable">
         <tr class="iconfont"><td>!</td><td>"</td><td>#</td><td>$</td><td>%</td><td>&#038;</td><td>'</td><td>(</td><td>)</td><td>*</td></tr>
         <tr><td>!</td><td>"</td><td>#</td><td>$</td><td>%</td><td>&#038;</td><td>'</td><td>(</td><td>)</td><td>*</td></tr>
         <tr class="iconfont"><td>+</td><td>,</td><td>-</td><td>.</td><td>/</td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td></tr>
         <tr><td>+</td><td>,</td><td>-</td><td>.</td><td>/</td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td></tr>
         <tr class="iconfont"><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>:</td><td>;</td><td><</td><td>=</td><td>></td></tr>
         <tr><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>:</td><td>;</td><td><</td><td>=</td><td>></td></tr>
         <tr class="iconfont"><td>?</td><td>@</td><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td><td>G</td><td>H</td></tr>
         <tr><td>?</td><td>@</td><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td><td>G</td><td>H</td></tr>
         <tr class="iconfont"><td>I</td><td>J</td><td>K</td><td>L</td><td>M</td><td>N</td><td>O</td><td>P</td><td>Q</td><td>R</td></tr>
         <tr><td>I</td><td>J</td><td>K</td><td>L</td><td>M</td><td>N</td><td>O</td><td>P</td><td>Q</td><td>R</td></tr>
         <tr class="iconfont"><td>S</td><td>T</td><td>U</td><td>V</td><td>W</td><td>X</td><td>Y</td><td>Z</td><td>[</td><td>\</td></tr>
         <tr><td>S</td><td>T</td><td>U</td><td>V</td><td>W</td><td>X</td><td>Y</td><td>Z</td><td>[</td><td>\</td></tr>
         <tr class="iconfont"><td>]</td><td>^</td><td>_</td><td>`</td><td>a</td><td>b</td><td>c</td><td>d</td><td>e</td><td>f</td></tr>
         <tr><td>]</td><td>^</td><td>_</td><td>`</td><td>a</td><td>b</td><td>c</td><td>d</td><td>e</td><td>f</td></tr>
         <tr class="iconfont"><td>g</td><td>h</td><td>i</td><td>j</td><td>k</td><td>l</td><td>m</td><td>n</td><td>o</td><td>p</td></tr>
         <tr><td>g</td><td>h</td><td>i</td><td>j</td><td>k</td><td>l</td><td>m</td><td>n</td><td>o</td><td>p</td></tr>
         <tr class="iconfont"><td>q</td><td>r</td><td>s</td><td>t</td><td>u</td><td>v</td><td>w</td><td>x</td><td>y</td><td>z</td></tr>
         <tr><td>q</td><td>r</td><td>s</td><td>t</td><td>u</td><td>v</td><td>w</td><td>x</td><td>y</td><td>z</td></tr>
         <tr class="iconfont"><td>{</td><td>&#124;</td><td>}</td><td>~</td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
         <tr><td>{</td><td>&#124;</td><td>}</td><td>~</td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
    </table>
</center>]]></description>
			<content:encoded><![CDATA[<p>En las ultima semanas tengo el blog un poco parado ya que estoy a tope con otros proyectos. Entre ellos, algunos relacionados, como no, con aplicaciones móviles. Uno de estos proyectos lo estoy realizando junto a <a href="http://soyjavi.com/" target="jj">Javier Jimenez</a> que es un experto en <a href="http://es.wikipedia.org/wiki/HTML_5" target="wiki">HTML5</a>, <a href="http://es.wikipedia.org/wiki/Javascript" target="wiki">JavaScript</a> y todo lo relacionado con <a href="http://es.wikipedia.org/wiki/Experiencia_de_usuario" target="wiki">UX</a> en general. </p>
<p>Diseñando una aplicación, a Javi se le ocurrió la idea de usar una fuente de Iconos en vez de imágenes para aligerar la aplicación y que fuera mas fácil de diseñar y trabajar con transparencias etc&#8230; La fuente en cuestión es la <strong>Iconic Stroke</strong> y las posibilidades que ofrece creo que son muy interesantes, no solo de cara a no tener que usar imagenes, ya que <a href="http://es.wikipedia.org/wiki/Hojas_de_estilo_en_cascada" target="wiki">CSS3</a> nos permite usar fuente propias, sino que, de cara a diseñar iconos también nos puede ser de gran ayuda. Por eso os dejo aquí un link de donde podéis descargar esta fuente y un ejemplo de los iconos, cargando la fuente con CSS3.</p>
<p><center><a href="http://googlefontdirectory.googlecode.com/hg/iconic/IconicStroke.ttf">http://googlefontdirectory.googlecode.com/hg/iconic/IconicStroke.ttf</a></p>
<div style="padding:5px;border:1px solid #FF0000;background: #F9A7A7;color:#FF0000;">Solo veréis los iconos si usáis un navegador que soporte CSS3 como Firefox, Crome o Safari. </div>
<table class="iconstable">
<tr class="iconfont">
<td>!</td>
<td>&#8220;</td>
<td>#</td>
<td>$</td>
<td>%</td>
<td>&#038;</td>
<td>&#8216;</td>
<td>(</td>
<td>)</td>
<td>*</td>
</tr>
<tr>
<td>!</td>
<td>&#8220;</td>
<td>#</td>
<td>$</td>
<td>%</td>
<td>&#038;</td>
<td>&#8216;</td>
<td>(</td>
<td>)</td>
<td>*</td>
</tr>
<tr class="iconfont">
<td>+</td>
<td>,</td>
<td>-</td>
<td>.</td>
<td>/</td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>+</td>
<td>,</td>
<td>-</td>
<td>.</td>
<td>/</td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr class="iconfont">
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>:</td>
<td>;</td>
<td><</td>
<td>=</td>
<td>></td>
</tr>
<tr>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>:</td>
<td>;</td>
<td><</td>
<td>=</td>
<td>></td>
</tr>
<tr class="iconfont">
<td>?</td>
<td>@</td>
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
<td>E</td>
<td>F</td>
<td>G</td>
<td>H</td>
</tr>
<tr>
<td>?</td>
<td>@</td>
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
<td>E</td>
<td>F</td>
<td>G</td>
<td>H</td>
</tr>
<tr class="iconfont">
<td>I</td>
<td>J</td>
<td>K</td>
<td>L</td>
<td>M</td>
<td>N</td>
<td>O</td>
<td>P</td>
<td>Q</td>
<td>R</td>
</tr>
<tr>
<td>I</td>
<td>J</td>
<td>K</td>
<td>L</td>
<td>M</td>
<td>N</td>
<td>O</td>
<td>P</td>
<td>Q</td>
<td>R</td>
</tr>
<tr class="iconfont">
<td>S</td>
<td>T</td>
<td>U</td>
<td>V</td>
<td>W</td>
<td>X</td>
<td>Y</td>
<td>Z</td>
<td>[</td>
<td>\</td>
</tr>
<tr>
<td>S</td>
<td>T</td>
<td>U</td>
<td>V</td>
<td>W</td>
<td>X</td>
<td>Y</td>
<td>Z</td>
<td>[</td>
<td>\</td>
</tr>
<tr class="iconfont">
<td>]</td>
<td>^</td>
<td>_</td>
<td>`</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
<td>f</td>
</tr>
<tr>
<td>]</td>
<td>^</td>
<td>_</td>
<td>`</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
<td>f</td>
</tr>
<tr class="iconfont">
<td>g</td>
<td>h</td>
<td>i</td>
<td>j</td>
<td>k</td>
<td>l</td>
<td>m</td>
<td>n</td>
<td>o</td>
<td>p</td>
</tr>
<tr>
<td>g</td>
<td>h</td>
<td>i</td>
<td>j</td>
<td>k</td>
<td>l</td>
<td>m</td>
<td>n</td>
<td>o</td>
<td>p</td>
</tr>
<tr class="iconfont">
<td>q</td>
<td>r</td>
<td>s</td>
<td>t</td>
<td>u</td>
<td>v</td>
<td>w</td>
<td>x</td>
<td>y</td>
<td>z</td>
</tr>
<tr>
<td>q</td>
<td>r</td>
<td>s</td>
<td>t</td>
<td>u</td>
<td>v</td>
<td>w</td>
<td>x</td>
<td>y</td>
<td>z</td>
</tr>
<tr class="iconfont">
<td>{</td>
<td>|</td>
<td>}</td>
<td>~</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>{</td>
<td>|</td>
<td>}</td>
<td>~</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<p></center></p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/N7jkilkN1vw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/03/16/iconic-stroke-una-fuente-de-iconos-muy-interesante/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/03/16/iconic-stroke-una-fuente-de-iconos-muy-interesante/</feedburner:origLink></item>
		<item>
		<title>XML, JSON… Protocol Buffers</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/wDWwneluxBE/</link>
		<comments>http://www.ikeralbeniz.net/2011/02/21/xml-json%e2%80%a6-protocol-buffers/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 20:54:13 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[buffer]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[protocol]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=572</guid>
		<description><![CDATA[El intercambio de información en los sistema distribuidos o en cualquier tipo de servicio, es un tema clave, para lo cual, a lo largo de los años han surgido un montón de soluciones y tecnologías. Hasta ahora la formula mas utilizada era el formato <a href="http://es.wikipedia.org/wiki/Extensible_Markup_Language" target="wiki">XML</a>, en muchos caso envueltos de una capa extra de gestión, como son el caso de <a href="http://es.wikipedia.org/wiki/Simple_Object_Access_Protocol" target="wiki">SOAP</a> o <a href="http://es.wikipedia.org/wiki/Windows_Communication_Foundation" target="wiki">WCF</a> impulsados por Microsoft. En general XML sigue siendo claro dominador a la hora de proveer información estructurada. Los feeds de nuestra Web, Sitemaps o muchos proyectos de OpenData proporcionan información en este formato.

A pesar de ello, XML para muchos es un formato engorroso, su interpretación o extracción de la información, a pesar de que existen muchas librerías que lo facilitan, suele traer de cabeza a muchos desarrolladores y cada vez, tiene mas presencia la tecnología <a href="http://es.wikipedia.org/wiki/JSON" target="wiki">JSON</a> a la hora de acceder a servidores de datos, APIs, etc.. la facilidad para generar y recuperar la información que ofrece JSON esta haciendo que sea estándar de facto en prácticamente todos los servicios que permiten interactuar con servicios terceros. Empresas como Facebook o <a href="http://www.mywot.com/wiki/API" target="wot">WOT</a>, apuestan por JSON para el acceso a la información, sobre todo cuando esta se genera de forma dinámica. Aun así en la mayoría de los casos sigue estando opcional el acceso s los datos en XML.

En este articulo trato de presentar <a href="http://code.google.com/intl/eu/apis/protocolbuffers/docs/overview.html" target="protobuff">Protocol Buffers</a>, una solución que pretende ser mas optima, en lo que respecta a trafico de datos, y mas opaca, si lo que interesa es que la información no viaje de forma totalmente visible. Personalmente, creo que lo mas interesante de este sistema es que reduce considerablemente el volumen de trafico generado en cada petición de información, lo cual es muy interesante si lo que queremos es desarrollar un servicio explotado por aplicaciones móviles, donde podemos conseguir aplicaciones mas fluidas, si conseguimos que el tiempo de conexión sea el menor posible.

En mi caso, Protocol Buffers me parece una solución interesante, ya que suelo usar <a href="http://code.google.com/intl/eu/appengine/" target="gae">Google App Engine</a>, como web service generador de datos, y para terminales móviles suelo trabajar con Android, para el cual existen librerias. Además hay que tener en cuenta que muchas de las aplicaciones de serie en Android como el Market usan Protocol Buffers internamente (a pesar de que oficialmente la SDK de Android no ofrece acceso a dichas librerías).

En próximos post explicare como manejar Protocol Buffers en python.]]></description>
			<content:encoded><![CDATA[<p>El intercambio de información en los sistema distribuidos o en cualquier tipo de servicio, es un tema clave, para lo cual, a lo largo de los años han surgido un montón de soluciones y tecnologías. Hasta ahora la formula mas utilizada era el formato <a href="http://es.wikipedia.org/wiki/Extensible_Markup_Language" target="wiki">XML</a>, en muchos caso envueltos de una capa extra de gestión, como son el caso de <a href="http://es.wikipedia.org/wiki/Simple_Object_Access_Protocol" target="wiki">SOAP</a> o <a href="http://es.wikipedia.org/wiki/Windows_Communication_Foundation" target="wiki">WCF</a> impulsados por Microsoft. En general XML sigue siendo claro dominador a la hora de proveer información estructurada. Los feeds de nuestra Web, Sitemaps o muchos proyectos de OpenData proporcionan información en este formato.</p>
<p>A pesar de ello, XML para muchos es un formato engorroso, su interpretación o extracción de la información, a pesar de que existen muchas librerías que lo facilitan, suele traer de cabeza a muchos desarrolladores y cada vez, tiene mas presencia la tecnología <a href="http://es.wikipedia.org/wiki/JSON" target="wiki">JSON</a> a la hora de acceder a servidores de datos, APIs, etc.. la facilidad para generar y recuperar la información que ofrece JSON esta haciendo que sea estándar de facto en prácticamente todos los servicios que permiten interactuar con servicios terceros. Empresas como Facebook o <a href="http://www.mywot.com/wiki/API" target="wot">WOT</a>, apuestan por JSON para el acceso a la información, sobre todo cuando esta se genera de forma dinámica. Aun así en la mayoría de los casos sigue estando opcional el acceso s los datos en XML.</p>
<p>En este articulo trato de presentar <a href="http://code.google.com/intl/eu/apis/protocolbuffers/docs/overview.html" target="protobuff">Protocol Buffers</a>, una solución que pretende ser mas optima, en lo que respecta a trafico de datos, y mas opaca, si lo que interesa es que la información no viaje de forma totalmente visible. Personalmente, creo que lo mas interesante de este sistema es que reduce considerablemente el volumen de trafico generado en cada petición de información, lo cual es muy interesante si lo que queremos es desarrollar un servicio explotado por aplicaciones móviles, donde podemos conseguir aplicaciones mas fluidas, si conseguimos que el tiempo de conexión sea el menor posible.</p>
<p>En mi caso, Protocol Buffers me parece una solución interesante, ya que suelo usar <a href="http://code.google.com/intl/eu/appengine/" target="gae">Google App Engine</a>, como web service generador de datos, y para terminales móviles suelo trabajar con Android, para el cual existen librerias. Además hay que tener en cuenta que muchas de las aplicaciones de serie en Android como el Market usan Protocol Buffers internamente (a pesar de que oficialmente la SDK de Android no ofrece acceso a dichas librerías).</p>
<p>En próximos post explicare como manejar Protocol Buffers en python.</p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/wDWwneluxBE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/02/21/xml-json%e2%80%a6-protocol-buffers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/02/21/xml-json%e2%80%a6-protocol-buffers/</feedburner:origLink></item>
		<item>
		<title>Curso de Iniciación de Google App Engine</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/Y_1ac53hCog/</link>
		<comments>http://www.ikeralbeniz.net/2011/02/17/curso-de-iniciacion-de-google-app-engine/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 13:09:05 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[#status]]></category>
		<category><![CDATA[bilbao]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[gtug]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=581</guid>
		<description><![CDATA[<img alt="" src="http://code.google.com/intl/eu/appengine/images/appengine_lowres.png" class="alignleft" width="142" height="109" />Este sábado dentro de las iniciativas llevadas a cabo por <a href="https://groups.google.com/group/gtug-bilbao?pli=1" target="gtugb"><strong>GTUG (Google Technology User Group) Bilbao</strong></a>, se va a llevar a impartir un curso de iniciación a la plataforma <a href="http://code.google.com/intl/eu/appengine/docs/" target="gae"><strong>Google App Engine</strong></a>. El curso será este Sábado 19 de Febrero en la sede de <a href="http://www.creativityzentrum.com/seccion_colab.html" target="colab">Creativity Zentrum Bilbao</a> a las diez de la mañana.

El curso básicamente va a ser una introducción a la plataforma y se realizará la guía "<a href="http://code.google.com/intl/eu/appengine/docs/python/gettingstarted/" target="gaestart">Getting Started</a>" de forma interactiva, mientras se resuelven dudas realizando todos los ejemplos y alguna prueba mas que pueda ser de interés. Se supondrá que los usuarios tienen cierto conocimiento en Python, aunque al tratarse de un lenguaje muy sencillo con tener conocimientos en lenguajes orientados a objetos seria suficiente.

Así que si no tenéis planes para este sábado a la mañana y siempre habéis tenido ganas de hincarle el diente a este servicio de Google no lo dudéis y confirmar vuestra asistencia en el siguiente enlace: <a href="http://doodle.com/wm7a4ucbaf4xhmxi" target="doodle">http://doodle.com/wm7a4ucbaf4xhmxi</a>

<h2>Asociacion Creativity Zemtrum Bizcaya</h2>
<iframe width="600" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.es/maps?f=q&#38;source=s_q&#38;hl=eu&#38;geocode=&#38;q=Creativity+Zentrum+bilbao&#38;aq=&#38;sll=40.396764,-3.713379&#38;sspn=13.545514,19.753418&#38;ie=UTF8&#38;hq=Creativity+Zentrum&#38;hnear=Bilbo,+Bizkaia,+Euskadi&#38;t=h&#38;cid=5281189555633316491&#38;ll=43.265956,-2.927771&#38;spn=0.021875,0.049782&#38;z=14&#38;iwloc=A&#38;output=embed"></iframe><br /><small><a href="http://maps.google.es/maps?f=q&#38;source=embed&#38;hl=eu&#38;geocode=&#38;q=Creativity+Zentrum+bilbao&#38;aq=&#38;sll=40.396764,-3.713379&#38;sspn=13.545514,19.753418&#38;ie=UTF8&#38;hq=Creativity+Zentrum&#38;hnear=Bilbo,+Bizkaia,+Euskadi&#38;t=h&#38;cid=5281189555633316491&#38;ll=43.265956,-2.927771&#38;spn=0.021875,0.049782&#38;z=14&#38;iwloc=A" style="color:#0000FF;text-align:left">Ikusi mapa handiagoa</a></small>
]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://code.google.com/intl/eu/appengine/images/appengine_lowres.png" class="alignleft" width="142" height="109" />Este sábado dentro de las iniciativas llevadas a cabo por <a href="https://groups.google.com/group/gtug-bilbao?pli=1" target="gtugb"><strong>GTUG (Google Technology User Group) Bilbao</strong></a>, se va a llevar a impartir un curso de iniciación a la plataforma <a href="http://code.google.com/intl/eu/appengine/docs/" target="gae"><strong>Google App Engine</strong></a>. El curso será este Sábado 19 de Febrero en la sede de <a href="http://www.creativityzentrum.com/seccion_colab.html" target="colab">Creativity Zentrum Bilbao</a> a las diez de la mañana.</p>
<p>El curso básicamente va a ser una introducción a la plataforma y se realizará la guía &#8220;<a href="http://code.google.com/intl/eu/appengine/docs/python/gettingstarted/" target="gaestart">Getting Started</a>&#8221; de forma interactiva, mientras se resuelven dudas realizando todos los ejemplos y alguna prueba mas que pueda ser de interés. Se supondrá que los usuarios tienen cierto conocimiento en Python, aunque al tratarse de un lenguaje muy sencillo con tener conocimientos en lenguajes orientados a objetos seria suficiente.</p>
<p>Así que si no tenéis planes para este sábado a la mañana y siempre habéis tenido ganas de hincarle el diente a este servicio de Google no lo dudéis y confirmar vuestra asistencia en el siguiente enlace: <a href="http://doodle.com/wm7a4ucbaf4xhmxi" target="doodle">http://doodle.com/wm7a4ucbaf4xhmxi</a></p>
<h2>Asociacion Creativity Zemtrum Bizcaya</h2>
<p><iframe width="600" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.es/maps?f=q&amp;source=s_q&amp;hl=eu&amp;geocode=&amp;q=Creativity+Zentrum+bilbao&amp;aq=&amp;sll=40.396764,-3.713379&amp;sspn=13.545514,19.753418&amp;ie=UTF8&amp;hq=Creativity+Zentrum&amp;hnear=Bilbo,+Bizkaia,+Euskadi&amp;t=h&amp;cid=5281189555633316491&amp;ll=43.265956,-2.927771&amp;spn=0.021875,0.049782&amp;z=14&amp;iwloc=A&amp;output=embed"></iframe><br /><small><a href="http://maps.google.es/maps?f=q&amp;source=embed&amp;hl=eu&amp;geocode=&amp;q=Creativity+Zentrum+bilbao&amp;aq=&amp;sll=40.396764,-3.713379&amp;sspn=13.545514,19.753418&amp;ie=UTF8&amp;hq=Creativity+Zentrum&amp;hnear=Bilbo,+Bizkaia,+Euskadi&amp;t=h&amp;cid=5281189555633316491&amp;ll=43.265956,-2.927771&amp;spn=0.021875,0.049782&amp;z=14&amp;iwloc=A" style="color:#0000FF;text-align:left">Ikusi mapa handiagoa</a></small></p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/Y_1ac53hCog" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/02/17/curso-de-iniciacion-de-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/02/17/curso-de-iniciacion-de-google-app-engine/</feedburner:origLink></item>
		<item>
		<title>Archivos DEX (Dalvik Executable): La Tabla de Tipos</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/9XRYi_-rarU/</link>
		<comments>http://www.ikeralbeniz.net/2011/02/14/archivos-dex-dalvik-executable-la-tabla-de-tipos/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 20:17:30 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[dalvik]]></category>
		<category><![CDATA[dex]]></category>
		<category><![CDATA[internals]]></category>
		<category><![CDATA[tipos]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=553</guid>
		<description><![CDATA[Seguimos desenmarañando la estructura de los archivos Dex y ahora nos toca la tabla de tipos, es decir, los diferentes tipos de datos que utiliza nuestra aplicación a analizar. En este caso al igual que hicimos con la <a href="http://www.ikeralbeniz.net/2011/01/30/archivos-dex-dalvik-executable-la-tabla-de-strings/" target="strings">tabla de strings</a>, <a href="http://www.ikeralbeniz.net/2011/01/28/archivos-dex-dalvik-executable-la-cabecera/" target="header">obtenemos el offset y numero de elementos en la tabla de tipos de la cabecera</a>. En el caso que estamos analizando la tabla de tipos comienza en <strong>0x000001AC</strong> y tiene <strong>28 (0x0000001C) elementos</strong>. Recorriendo de 4 en 4 bytes obtenemos las posiciones en la tabla de strings que identifican los tipos a usar: 2,7,8,9,10..]]></description>
			<content:encoded><![CDATA[<p>Seguimos desenmarañando la estructura de los archivos Dex y ahora nos toca la tabla de tipos, es decir, los diferentes tipos de datos que utiliza nuestra aplicación a analizar. En este caso al igual que hicimos con la <a href="http://www.ikeralbeniz.net/2011/01/30/archivos-dex-dalvik-executable-la-tabla-de-strings/" target="strings">tabla de strings</a>, <a href="http://www.ikeralbeniz.net/2011/01/28/archivos-dex-dalvik-executable-la-cabecera/" target="header">obtenemos el offset y numero de elementos en la tabla de tipos de la cabecera</a>. En el caso que estamos analizando la tabla de tipos comienza en <strong>0x000001AC</strong> y tiene <strong>28 (0x0000001C) elementos</strong>. Recorriendo de 4 en 4 bytes obtenemos las posiciones en la tabla de strings que identifican los tipos a usar: 2,7,8,9,10..</p>
<ol  start="0">
<li>elemento 2 de la lista de STRINGS: I</li>
<li>elemento 7 de la lista de STRINGS: Landroid/app/Activity;</li>
<li>elemento 8 de la lista de STRINGS: Landroid/os/Bundle;</li>
<li>elemento 9 de la lista de STRINGS: Landroid/text/Editable;</li>
<li>elemento 10 de la lista de STRINGS: Landroid/view/View$OnClickListener;</li>
<li>elemento 11 de la lista de STRINGS: Landroid/view/View;</li>
<li>elemento 12 de la lista de STRINGS: Landroid/widget/Button;</li>
<li>elemento 13 de la lista de STRINGS: Landroid/widget/EditText;</li>
<li>elemento 14 de la lista de STRINGS: Landroid/widget/TextView;</li>
<li>elemento 15 de la lista de STRINGS: Lcom/marakana/NDKDemo$1;</li>
<li>elemento 16 de la lista de STRINGS: Lcom/marakana/NDKDemo;</li>
<li>elemento 17 de la lista de STRINGS: Lcom/marakana/NativeLib;</li>
<li>elemento 18 de la lista de STRINGS: Lcom/marakana/R$attr;</li>
<li>elemento 19 de la lista de STRINGS: Lcom/marakana/R$drawable;</li>
<li>elemento 20 de la lista de STRINGS: Lcom/marakana/R$id;</li>
<li>elemento 21 de la lista de STRINGS: Lcom/marakana/R$layout;</li>
<li>elemento 22 de la lista de STRINGS: Lcom/marakana/R$string;</li>
<li>elemento 23 de la lista de STRINGS: Lcom/marakana/R;</li>
<li>elemento 24 de la lista de STRINGS: Ldalvik/annotation/EnclosingClass;</li>
<li>elemento 25 de la lista de STRINGS: Ldalvik/annotation/EnclosingMethod;</li>
<li>elemento 26 de la lista de STRINGS: Ldalvik/annotation/InnerClass;</li>
<li>elemento 27 de la lista de STRINGS: Ldalvik/annotation/MemberClasses;</li>
<li>elemento 28 de la lista de STRINGS: Ljava/lang/CharSequence;</li>
<li>elemento 29 de la lista de STRINGS: Ljava/lang/Integer;</li>
<li>elemento 30 de la lista de STRINGS: Ljava/lang/Object;</li>
<li>elemento 31 de la lista de STRINGS: Ljava/lang/String;</li>
<li>elemento 32 de la lista de STRINGS: Ljava/lang/System;</li>
<li>elemento 37 de la lista de STRINGS: V</li>
</ol>
<p>Estos strings usan una sintaxis concreta y pueden traducirse a una forma mas común de definir los tipos mediante la siguiente tabla.</p>
<table class="descriptor">
<thead>
<tr>
<th>Syntax</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>V</td>
<td><code>void</code></td>
</tr>
<tr>
<td>Z</td>
<td><code>boolean</code></td>
</tr>
<tr>
<td>B</td>
<td><code>byte</code></td>
</tr>
<tr>
<td>S</td>
<td><code>short</code></td>
</tr>
<tr>
<td>C</td>
<td><code>char</code></td>
</tr>
<tr>
<td>I</td>
<td><code>int</code></td>
</tr>
<tr>
<td>J</td>
<td><code>long</code></td>
</tr>
<tr>
<td>F</td>
<td><code>float</code></td>
</tr>
<tr>
<td>D</td>
<td><code>double</code></td>
</tr>
<tr>
<td>L<i>nombre/completo/Clase</i>;</td>
<td>la clase <code><i>nombre.completo.Clase</i></code></td>
</tr>
<tr>
<td>[<i>descriptor</i></td>
<td>Array de elementos <code><i>descriptor</i></code>, es posible crear arrays de arrays, con limite de profundidad 255<br /><b>Ejemplo: </b>[I &#126; array de ints (int[])
  </td>
</tr>
</tbody>
</table>
<p>Por tanto, la tabla, nos quedaria de esta manera:</p>
<ol  start="0">
<li>int</li>
<li><a href="http://developer.android.com/reference/android/app/Activity.html" target="androidapi">android.app.Activity</a></li>
<li><a href="http://developer.android.com/reference/android/os/Bundle.html" target="androidapi">android.os.Bundle</a></li>
<li><a href="http://developer.android.com/reference/android/text/Editable.html" target="androidapi">android.text.Editable</a></li>
<li><a href="http://developer.android.com/reference/android/view/View.OnClickListener.html" target="androidapi">android.view.View.OnClickListener</a></li>
<li><a href="http://developer.android.com/reference/android/view/View.html" target="androidapi">android.view.View</a></li>
<li><a href="http://developer.android.com/reference/android/widget/Button.html" target="androidapi">android.widget.Button</a></li>
<li><a href="http://developer.android.com/reference/android/widget/EditText.html" target="androidapi">android.widget.EditText</a></li>
<li><a href="http://developer.android.com/reference/android/widget/TextView.html" target="androidapi">android.widget.TextView</a></li>
<li>com.marakana.NDKDemo.1</li>
<li>com.marakana.NDKDemo</li>
<li>com.marakana.NativeLib</li>
<li>com.marakana.R.attr</li>
<li>com.marakana.R.drawable</li>
<li>com.marakana.R.id</li>
<li>com.marakana.R.layout</li>
<li>com.marakana.R.string</li>
<li>com.marakana.R</li>
<li><a href="http://www.androidjavadoc.com/1.0_r1_src/dalvik/annotation/EnclosingClass.html" target="androidapi">dalvik.annotation.EnclosingClass</a></li>
<li><a href="http://www.androidjavadoc.com/1.0_r1_src/dalvik/annotation/EnclosingMethod.html" target="androidapi">dalvik.annotation.EnclosingMethod</a></li>
<li><a href="http://www.androidjavadoc.com/1.0_r1_src/dalvik/annotation/InnerClass.html" target="androidapi">dalvik.annotation.InnerClass</a></li>
<li><a href="http://www.androidjavadoc.com/1.0_r1_src/dalvik/annotation/MemberClasses.html" target="androidapi">dalvik.annotation.MemberClasses</a></li>
<li><a href="http://developer.android.com/reference/java/lang/CharSequence.html" target="androidapi">java.lang.CharSequence</a></li>
<li><a href="http://developer.android.com/reference/java/lang/Integer.html" target="androidapi">java.lang.Integer</a></li>
<li><a href="http://developer.android.com/reference/java/lang/Object.html" target="androidapi">java.lang.Object</a></li>
<li><a href="http://developer.android.com/reference/java/lang/String.html" target="androidapi">java.lang.String</a></li>
<li><a href="http://developer.android.com/reference/java/lang/System.html" target="androidapi">java.lang.System</a></li>
<li>void</li>
</ol>
<p>Otro recurso mas, que sera utilizado junto a la tabla de strings para desensamblar el resto de estructuras de nuestra aplicación.</p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/9XRYi_-rarU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/02/14/archivos-dex-dalvik-executable-la-tabla-de-tipos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/02/14/archivos-dex-dalvik-executable-la-tabla-de-tipos/</feedburner:origLink></item>
		<item>
		<title>Entrevista en NickDutNik</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/GQoUyIirqhU/</link>
		<comments>http://www.ikeralbeniz.net/2011/02/06/entrevista-en-nickdutnik/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 18:40:53 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[bizkaibus]]></category>
		<category><![CDATA[entrevista]]></category>
		<category><![CDATA[etb]]></category>
		<category><![CDATA[nickdutnik]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=555</guid>
		<description><![CDATA[Como anuncié a bombo y platillo semanas antes y publiqué (no lo suficiente) en las redes sociales, el día 2 de Febrero (2011) aparecía en el programa <a href="http://www.nickdutnik.com/" target="ndn">NickDutNik</a> de ETB producido por <a href="http://www.factoria.me/" target="factoria">Factoria Crossmedia</a>. En la entrevista presentaba mi <a href="http://www.ikeralbeniz.net/2011/01/10/disponible-la-aplicacion-de-bizkaibus-para-android-desde-el-market/" target="_blanck">aplicación de Bizkaibus para Android</a> y además explicaba las razones y motivaciones que me llevaron a desarrollar esta aplicación. Pinchando en la imagen podéis ver el video de la entrevista.


<a href="http://www.nickdutnik.com/es/iker-perez-de-albeniz" target="ndn"><img src="https://lh5.googleusercontent.com/_YsgLljqoEIQ/TUpxD2JX2sI/AAAAAAAAAF0/6VRo-l3VL3M/nikdutnik.png" class="aligncenter" width="520" height="330" frameborder='0'></a>]]></description>
			<content:encoded><![CDATA[<p>Como anuncié a bombo y platillo semanas antes y publiqué (no lo suficiente) en las redes sociales, el día 2 de Febrero (2011) aparecía en el programa <a href="http://www.nickdutnik.com/" target="ndn">NickDutNik</a> de ETB producido por <a href="http://www.factoria.me/" target="factoria">Factoria Crossmedia</a>. En la entrevista presentaba mi <a href="http://www.ikeralbeniz.net/2011/01/10/disponible-la-aplicacion-de-bizkaibus-para-android-desde-el-market/" target="_blanck">aplicación de Bizkaibus para Android</a> y además explicaba las razones y motivaciones que me llevaron a desarrollar esta aplicación. Pinchando en la imagen podéis ver el video de la entrevista.</p>
<p><a href="http://www.nickdutnik.com/es/iker-perez-de-albeniz" target="ndn"><img src="https://lh5.googleusercontent.com/_YsgLljqoEIQ/TUpxD2JX2sI/AAAAAAAAAF0/6VRo-l3VL3M/nikdutnik.png" class="aligncenter" width="520" height="330" frameborder='0'></a></p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/GQoUyIirqhU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/02/06/entrevista-en-nickdutnik/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/02/06/entrevista-en-nickdutnik/</feedburner:origLink></item>
		<item>
		<title>Archivos DEX (Dalvik Executable): La Tabla de Strings</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/gy1onsNscwQ/</link>
		<comments>http://www.ikeralbeniz.net/2011/01/30/archivos-dex-dalvik-executable-la-tabla-de-strings/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 20:03:52 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[dalvik]]></category>
		<category><![CDATA[dex]]></category>
		<category><![CDATA[internals]]></category>
		<category><![CDATA[strings]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=539</guid>
		<description><![CDATA[La tabla strings, es una estructura que contiene las posiciones de los recursos string que utiliza nuestra aplicación. En esta lista de strings tendremos desde nombres de clases, métodos, variables o constantes que nos indicaran el tipo de los datos. Es una lista ordenada ya que desde otras estructuras se hará referencia a los strings en función de su posición en la lista. Es decir, en el proceso de compilación, se extraen los strings de todas las estructuras y código, se eliminan duplicados y se meten en una lista ordenada, por lo que a partir de entonces, ahí donde había un string ahora hay un entero que hace referencia a la posición del string en la  lista. Con esto se consigue reducir el tamaño de la aplicación evitando la redundancia de recursos.]]></description>
			<content:encoded><![CDATA[<p>La tabla strings, es una estructura que contiene las posiciones de los recursos string que utiliza nuestra aplicación. En esta lista de strings tendremos desde nombres de clases, métodos, variables o constantes que nos indicaran el tipo de los datos. Es una lista ordenada ya que desde otras estructuras se hará referencia a los strings en función de su posición en la lista. Es decir, en el proceso de compilación, se extraen los strings de todas las estructuras y código, se eliminan duplicados y se meten en una lista ordenada, por lo que a partir de entonces, ahí donde había un string ahora hay un entero que hace referencia a la posición del string en la  lista. Con esto se consigue reducir el tamaño de la aplicación evitando la redundancia de recursos.</p>
<p>Para entenderlo mejor, a partir de este momento vamos a desensamblar, paso a paso, un archivo .dex de ejemplo que hemos obtenido a partir de este ejemplo <a href="http://marakana.com/forums/android/examples/49.html" target="external">http://marakana.com/forums/android/examples/49.html</a> que es pequeño y usa la <a href="http://developer.android.com/sdk/ndk/index.html" target="ndk">NDK</a> (de cara a ser un ejemplo relativamente completo).</p>
<p>Analizando la cabecera <a href="http://www.ikeralbeniz.net/2011/01/28/archivos-dex-dalvik-executable-la-cabecera/" target="_blanck">como explicamos en el artículo anterior</a> obtenemos el <em>offset</em> o desplazamiento desde el inicio del fichero donde empieza la tabla de posiciones de los strings, y el numero de strings. Por tanto obtenemos que la tabla de strings empieza en la posición <strong>0&#215;00000070</strong> y que tiene <strong>79 (0x0000004F) elementos</strong>. Por tanto deberemos recorrer el archivo desde la posición 0&#215;00000070 en bloques de 32bist, 79 veces para obtener la posición de los 79 strings.</p>
<p><img alt="" src="http://lh3.ggpht.com/_YsgLljqoEIQ/TUaFBt3ODhI/AAAAAAAAAFs/I172WEBi6XM/dex_strings.png" title="Tabla de strings" class="aligncenter" width="580" /></p>
<p>En el ejemplo de la imagen superior recorremos los tres primeros strings. La estructura de cada string es, un byte que indica la longitud del string y a continuación el string, por tanto, el primer string esta en la posición <strong>0x0000084E</strong>, su longitud es de <strong>0&#215;08</strong> caracteres y su valor es <strong>&#8220;&lt;clinit&gt;&#8221;</strong>. El segundo string esta en la posición <strong>0&#215;00000858</strong>, es de longitud <strong>0&#215;06</strong> y valor <strong>&#8220;&lt;init&gt;&#8221;</strong>, el tercero esta en la posición <strong>0&#215;00000860</strong> es de longitud <strong>0&#215;01</strong> y valor <strong>“I”</strong>. Seguiríamos así con los 79 strings, con lo que en el ejemplo de la imagen obtendríamos la siguiente lista.</p>
<ol  start="0">
<li>&lt;clinit&gt;</li>
<li>&lt;init&gt;</li>
<li>I</li>
<li>III</li>
<li>IL</li>
<li>L</li>
<li>LI</li>
<li>Landroid/app/Activity;</li>
<li>Landroid/os/Bundle;</li>
<li>Landroid/text/Editable;</li>
<li>Landroid/view/View$OnClickListener;</li>
<li>Landroid/view/View;</li>
<li>Landroid/widget/Button;</li>
<li>Landroid/widget/EditText;</li>
<li>Landroid/widget/TextView;</li>
<li>Lcom/marakana/NDKDemo$1;</li>
<li>Lcom/marakana/NDKDemo;</li>
<li>Lcom/marakana/NativeLib;</li>
<li>Lcom/marakana/R$attr;</li>
<li>Lcom/marakana/R$drawable;</li>
<li>Lcom/marakana/R$id;</li>
<li>Lcom/marakana/R$layout;</li>
<li>Lcom/marakana/R$string;</li>
<li>Lcom/marakana/R;</li>
<li>Ldalvik/annotation/EnclosingClass;</li>
<li>Ldalvik/annotation/EnclosingMethod;</li>
<li>Ldalvik/annotation/InnerClass;</li>
<li>Ldalvik/annotation/MemberClasses;</li>
<li>Ljava/lang/CharSequence;</li>
<li>Ljava/lang/Integer;</li>
<li>Ljava/lang/Object;</li>
<li>Ljava/lang/String;</li>
<li>Ljava/lang/System;</li>
<li>NDKDemo.java</li>
<li>NativeLib.java</li>
<li>R.java</li>
<li>TextView01</li>
<li>V</li>
<li>VI</li>
<li>VL</li>
<li>accessFlags</li>
<li>add</li>
<li>app_name</li>
<li>attr</li>
<li>buttonCalc</li>
<li>drawable</li>
<li>findViewById</li>
<li>getText</li>
<li>hello</li>
<li>helloText</li>
<li>icon</li>
<li>id</li>
<li>layout</li>
<li>loadLibrary</li>
<li>main</li>
<li>name</li>
<li>nativeLib</li>
<li>ndk_demo</li>
<li>onClick</li>
<li>onCreate</li>
<li>outText</li>
<li>parseInt</li>
<li>res</li>
<li>result</li>
<li>savedInstanceState</li>
<li>setContentView</li>
<li>setOnClickListener</li>
<li>setText</li>
<li>string</li>
<li>textOut</li>
<li>this</li>
<li>this$0</li>
<li>toString</li>
<li>v</li>
<li>v1</li>
<li>v2</li>
<li>value</li>
<li>value1</li>
<li>value2</li>
</ol>
<p>A partir de ahora las siguientes estructuras que vayamos desensamblando harán referencia a esta lista de strings.</p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/gy1onsNscwQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/01/30/archivos-dex-dalvik-executable-la-tabla-de-strings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/01/30/archivos-dex-dalvik-executable-la-tabla-de-strings/</feedburner:origLink></item>
		<item>
		<title>Archivos DEX (Dalvik Executable): La Cabecera</title>
		<link>http://feedproxy.google.com/~r/IkerPerezDeAlbeniz/~3/769LB1U2Vh4/</link>
		<comments>http://www.ikeralbeniz.net/2011/01/28/archivos-dex-dalvik-executable-la-cabecera/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 12:28:41 +0000</pubDate>
		<dc:creator>Iker</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[cabecera]]></category>
		<category><![CDATA[dalvik]]></category>
		<category><![CDATA[dex]]></category>
		<category><![CDATA[header]]></category>
		<category><![CDATA[internals]]></category>
		<category><![CDATA[magic]]></category>

		<guid isPermaLink="false">http://www.ikeralbeniz.net/?p=489</guid>
		<description><![CDATA[La cabecera es como cabe de esperar, una de las partes mas importantes de la estructura el archivo .dex. Contiene el <a href="http://es.wikipedia.org/wiki/N%C3%BAmero_m%C3%A1gico" target="wikipedia">magic</a> que nos permite identificar el formato de archivo, además de <a href="http://es.wikipedia.org/wiki/Suma_de_verificaci%C3%B3n" target="wikipedia">diferentes chechsums y hashes</a> para comprobar la integridad del propio archivo. Pero lo que es mas importante, en la cabecera se encuentra el "<em>mapa</em>" para entender y descomponer el formato .dex en sus diferentes partes, ya que contiene una lista con los offsets y longitud de las diferentes parte de el archivo <a href="http://www.ikeralbeniz.net/2011/01/26/archivos-dex-dalvik-executable-introduccion/" target="_blanck">que comentábamos en el artículo anterior</a>.]]></description>
			<content:encoded><![CDATA[<p>La cabecera es como cabe de esperar, una de las partes mas importantes de la estructura el archivo .dex. Contiene el <a href="http://es.wikipedia.org/wiki/N%C3%BAmero_m%C3%A1gico" target="wikipedia">magic</a> que nos permite identificar el formato de archivo, además de <a href="http://es.wikipedia.org/wiki/Suma_de_verificaci%C3%B3n" target="wikipedia">diferentes chechsums y hashes</a> para comprobar la integridad del propio archivo. Pero lo que es mas importante, en la cabecera se encuentra el &#8220;<em>mapa</em>&#8221; para entender y descomponer el formato .dex en sus diferentes partes, ya que contiene una lista con los offsets y longitud de las diferentes parte de el archivo <a href="http://www.ikeralbeniz.net/2011/01/26/archivos-dex-dalvik-executable-introduccion/" target="_blanck">que comentábamos en el artículo anterior</a>.</p>
<ul>
<li>Tabla con las posiciones de los <strong>Strings</strong></li>
<li>Tabla con las posiciones de los <strong>Tipos</strong></li>
<li>Tabla con las posiciones de las estructuras/<strong>Prototipos</strong> de los métodos</li>
<li>Tabla con las posiciones de las Propiedades de las clases o <strong>Campos</strong> de los métodos</li>
<li>Tabla con las posiciones de los <strong>Métodos</strong></li>
<li>Tabla con las posiciones de las <strong>Clases</strong></li>
<li><strong>Datos</strong></li>
</ul>
<p><script type="text/javascript" src="http://www.ikeralbeniz.net/wp-content/uploads/2011/01/dex_file_header.js"></script><br />
		<a name="hexmap"></p>
<div id="clean_main_css" style="background:url('http://lh3.ggpht.com/_YsgLljqoEIQ/TUBJWf7h97I/AAAAAAAAAFE/uFBT_PdMDfY/dex_header_bg.png');width:514px;height:403px;padding-top:16px;padding-left:86px">
<table class="dex_head_text_field" cellpadding="0" cellspacing="0">
<tr>
<td id="t00"></td>
<td id="t01"></td>
<td id="t02"></td>
<td id="t03"></td>
<td id="t04"></td>
<td id="t05"></td>
<td id="t06"></td>
<td id="t07"></td>
<td id="t08"></td>
<td id="t09"></td>
<td id="t0a"></td>
<td id="t0b"></td>
<td id="t0c"></td>
<td id="t0d"></td>
<td id="t0e"></td>
<td id="t0f"></td>
</tr>
<tr>
<td id="t10"></td>
<td id="t11"></td>
<td id="t12"></td>
<td id="t13"></td>
<td id="t14"></td>
<td id="t15"></td>
<td id="t16"></td>
<td id="t17"></td>
<td id="t18"></td>
<td id="t19"></td>
<td id="t1a"></td>
<td id="t1b"></td>
<td id="t1c"></td>
<td id="t1d"></td>
<td id="t1e"></td>
<td id="t1f"></td>
</tr>
<tr>
<td id="t20"></td>
<td id="t21"></td>
<td id="t22"></td>
<td id="t23"></td>
<td id="t24"></td>
<td id="t25"></td>
<td id="t26"></td>
<td id="t27"></td>
<td id="t28"></td>
<td id="t29"></td>
<td id="t2a"></td>
<td id="t2b"></td>
<td id="t2c"></td>
<td id="t2d"></td>
<td id="t2e"></td>
<td id="t2f"></td>
</tr>
<tr>
<td id="t30"></td>
<td id="t31"></td>
<td id="t32"></td>
<td id="t33"></td>
<td id="t34"></td>
<td id="t35"></td>
<td id="t36"></td>
<td id="t37"></td>
<td id="t38"></td>
<td id="t39"></td>
<td id="t3a"></td>
<td id="t3b"></td>
<td id="t3c"></td>
<td id="t3d"></td>
<td id="t3e"></td>
<td id="t3f"></td>
</tr>
<tr>
<td id="t40"></td>
<td id="t41"></td>
<td id="t42"></td>
<td id="t43"></td>
<td id="t44"></td>
<td id="t45"></td>
<td id="t46"></td>
<td id="t47"></td>
<td id="t48"></td>
<td id="t49"></td>
<td id="t4a"></td>
<td id="t4b"></td>
<td id="t4c"></td>
<td id="t4d"></td>
<td id="t4e"></td>
<td id="t4f"></td>
</tr>
<tr>
<td id="t50"></td>
<td id="t51"></td>
<td id="t52"></td>
<td id="t53"></td>
<td id="t54"></td>
<td id="t55"></td>
<td id="t56"></td>
<td id="t57"></td>
<td id="t58"></td>
<td id="t59"></td>
<td id="t5a"></td>
<td id="t5b"></td>
<td id="t5c"></td>
<td id="t5d"></td>
<td id="t5e"></td>
<td id="t5f"></td>
</tr>
<tr>
<td id="t60"></td>
<td id="t61"></td>
<td id="t62"></td>
<td id="t63"></td>
<td id="t64"></td>
<td id="t65"></td>
<td id="t66"></td>
<td id="t67"></td>
<td id="t68"></td>
<td id="t69"></td>
<td id="t6a"></td>
<td id="t6b"></td>
<td id="t6c"></td>
<td id="t6d"></td>
<td id="t6e"></td>
<td id="t6f"></td>
</tr>
</table>
<table class="dex_head_hex_field" cellpadding="0" cellspacing="0">
<tr>
<td id="h00"></td>
<td id="h01"></td>
<td id="h02"></td>
<td id="h03"></td>
<td id="h04"></td>
<td id="h05"></td>
<td id="h06"></td>
<td id="h07"></td>
<td id="h08"></td>
<td id="h09"></td>
<td id="h0a"></td>
<td id="h0b"></td>
<td id="h0c"></td>
<td id="h0d"></td>
<td id="h0e"></td>
<td id="h0f"></td>
</tr>
<tr>
<td id="h10"></td>
<td id="h11"></td>
<td id="h12"></td>
<td id="h13"></td>
<td id="h14"></td>
<td id="h15"></td>
<td id="h16"></td>
<td id="h17"></td>
<td id="h18"></td>
<td id="h19"></td>
<td id="h1a"></td>
<td id="h1b"></td>
<td id="h1c"></td>
<td id="h1d"></td>
<td id="h1e"></td>
<td id="h1f"></td>
</tr>
<tr>
<td id="h20"></td>
<td id="h21"></td>
<td id="h22"></td>
<td id="h23"></td>
<td id="h24"></td>
<td id="h25"></td>
<td id="h26"></td>
<td id="h27"></td>
<td id="h28"></td>
<td id="h29"></td>
<td id="h2a"></td>
<td id="h2b"></td>
<td id="h2c"></td>
<td id="h2d"></td>
<td id="h2e"></td>
<td id="h2f"></td>
</tr>
<tr>
<td id="h30"></td>
<td id="h31"></td>
<td id="h32"></td>
<td id="h33"></td>
<td id="h34"></td>
<td id="h35"></td>
<td id="h36"></td>
<td id="h37"></td>
<td id="h38"></td>
<td id="h39"></td>
<td id="h3a"></td>
<td id="h3b"></td>
<td id="h3c"></td>
<td id="h3d"></td>
<td id="h3e"></td>
<td id="h3f"></td>
</tr>
<tr>
<td id="h40"></td>
<td id="h41"></td>
<td id="h42"></td>
<td id="h43"></td>
<td id="h44"></td>
<td id="h45"></td>
<td id="h46"></td>
<td id="h47"></td>
<td id="h48"></td>
<td id="h49"></td>
<td id="h4a"></td>
<td id="h4b"></td>
<td id="h4c"></td>
<td id="h4d"></td>
<td id="h4e"></td>
<td id="h4f"></td>
</tr>
<tr>
<td id="h50"></td>
<td id="h51"></td>
<td id="h52"></td>
<td id="h53"></td>
<td id="h54"></td>
<td id="h55"></td>
<td id="h56"></td>
<td id="h57"></td>
<td id="h58"></td>
<td id="h59"></td>
<td id="h5a"></td>
<td id="h5b"></td>
<td id="h5c"></td>
<td id="h5d"></td>
<td id="h5e"></td>
<td id="h5f"></td>
</tr>
<tr>
<td id="h60"></td>
<td id="h61"></td>
<td id="h62"></td>
<td id="h63"></td>
<td id="h64"></td>
<td id="h65"></td>
<td id="h66"></td>
<td id="h67"></td>
<td id="h68"></td>
<td id="h69"></td>
<td id="h6a"></td>
<td id="h6b"></td>
<td id="h6c"></td>
<td id="h6d"></td>
<td id="h6e"></td>
<td id="h6f"></td>
</tr>
</table></div>
<p>		<br/></p>
<table border="0" cellspacing="0" cellpadding="2" width="600">
<col width="97"></col>
<col width="107"></col>
<col width="448"></col>
<thead>
<tr>
<th width="97">Name</th>
<th width="107">Format</th>
<th width="448">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(0,8);">magic</a></td>
<td>ubyte[8]</td>
<td>Este valor es el que identifica el tipo de fichero.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(8,12);">checksum</a></td>
<td>uint</td>
<td>Checksum (adler32) calculado en base a todo el fichero, menos magic y checksum.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(12,32);">signature</a></td>
<td>ubyte[20]</td>
<td>Firma HashSHA-1 de todo el fichero menos magic, checksum y la propia firma.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(32,36);">file_size</a></td>
<td>uint</td>
<td>Tamaño de todo el fichero incluida la cabecera (en bytes).</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(36,40);">header_size</a></td>
<td>uint</td>
<td>Tamañode la cabecera (en bytes). Actualmente siempre toma el valor de 0&#215;70 (112)</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(40,44);">endian_tag</a></td>
<td>uint</td>
<td>Nos indica que tipo de formato endian usa el fichero. Importante de cara a interpretar los valores de los datos del archivo, pero defecto es litle-endian. [<a href="#endiantag">aclaración</a>]</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(44,48);">link_size</a></td>
<td>uint</td>
<td>Indicael tamaño de la sección de enlace (link section) o 0, si elfichero es enlazado de forma dinámica.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(48,52);">link_off</a></td>
<td>uint</td>
<td>Desplazamientoal comienzo de la sección de enlace desde el inicio del ficheroo 0 si link_size == 0.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(52,56);">map_off</a></td>
<td>uint</td>
<td>Desplazamientoal map_list en caso que éste exista o 0 en caso contrario. Elmap_list es una lista con todo el contenido del fichero. Estaestructura de datos puede contener datos redundantes, pero laintención de la misma es el poder recorrer el contenido delfichero de una forma más cómoda. Esta lista está ordenada.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(56,60);">string_ids_size</a></td>
<td>uint</td>
<td>Númerode elementos en la lista de strings.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(60,64);">string_ids_off</a></td>
<td>uint</td>
<td>Desplazamientoa la lista de strings o 0 en caso que dicha lista este vacía,circunstancia que raramente se va a dar.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(64,68);">type_ids_size</a></td>
<td>uint</td>
<td>Númerode elementos en la lista de tipos (type).</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(68,72);">type_ids_off</a></td>
<td>uint</td>
<td>Desplazamientoa la lista de tipos o 0 en caso que dicha lista este vacía. Casoque raramente también se dará.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(72,76);">proto_ids_size</a></td>
<td>uint</td>
<td>Númerode elementos en la lista de prototipos. </td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(76,80);">proto_ids_off</a></td>
<td>uint</td>
<td>Desplazamientoa la lista de prototipos. 0 en caso que dicha lista este vacía.De nuevo, situación que raramente se dará.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(80,84);">field_ids_size</a></td>
<td>uint</td>
<td>Númerode elementos en la lista de campos.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(84,88);">field_ids_off</a></td>
<td>uint</td>
<td>Desplazamientoa la lista de campos o 0 en caso que dicha lista esté vacía.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(88,92);">method_ids_size</a></td>
<td>uint</td>
<td>Númerode elementos en la lista de métodos.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(92,96);">method_ids_off</a></td>
<td>uint</td>
<td>Desplazamientoa la lista de métodos. 0 si la lista está vacía.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(96,100);">class_defs_size</a></td>
<td>uint</td>
<td>Númerode elementos en la lista de clases.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(100,104);">class_defs_off</a></td>
<td>uint</td>
<td>Desplazamientoa la lista de clases. 0 en caso dicha lista este vacía,situación poco probable.</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(104,108);">data_size</a></td>
<td>uint</td>
<td>Tamañoen bytes de la sección de datos. Debe ser un número parmúltiplo del tamaño de un uint (sizeof(uint)).</td>
</tr>
<tr>
<td ><a href="#hexmap" onClick="javascript:showHigh(108,112);">data_off</a></td>
<td>uint</td>
<td>Desplazamientoa la sección de datos.</td>
</tr>
</tbody>
</table>
<p><br />
<p>
<a name="endiantag"></a></p>
<h3>ENDIAN_CONSTANT y REVERSE_ENDIAN_CONSTANT</h3>
</p>
<p>En caso de que el valor se el campo <strong>endian_tag</strong> sea igual a REVERSE_ENDIAN_CONSTANT (0&#215;78563412), consideraremos que el archivo esta en formato litle-endian, lo cual es el estandar y lo mas común. A pesar de ello, es posible usar otras configuraciones, tipo big-endian, en tal caso el campo  <strong>endian_tag</strong> tomara el valor ENDIAN_CONSTANT (0×12345678).</p>
<p>Fuente: <a href="http://www.netmite.com/android/mydroid/dalvik/docs/dex-format.html" target="fuente">http://www.netmite.com/android/mydroid/dalvik/docs/dex-format.html</a></p>
<img src="http://feeds.feedburner.com/~r/IkerPerezDeAlbeniz/~4/769LB1U2Vh4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ikeralbeniz.net/2011/01/28/archivos-dex-dalvik-executable-la-cabecera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.ikeralbeniz.net/2011/01/28/archivos-dex-dalvik-executable-la-cabecera/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.450 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-02-02 21:45:52 -->

