<?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: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-3317662252513531113</id><updated>2012-02-16T07:20:43.639-08:00</updated><category term='ethics'/><category term='diseño visual'/><category term='xml'/><category term='xsl'/><category term='emacs'/><category term='design patterns'/><category term='javascript'/><category term='java'/><category term='php'/><category term='sorting'/><category term='algorithms'/><category term='curl'/><category term='subnetting'/><category term='networking'/><category term='crear web'/><category term='ip'/><category term='seo'/><category term='patents'/><category term='tcp'/><category term='diseño web'/><category term='optimizacion'/><category term='data structures'/><category term='posicionamiento'/><category term='buscadores'/><category term='optimization'/><category term='OOP'/><category term='sax'/><category term='collections'/><category term='search engine optimization'/><category term='json'/><title type='text'>El Camaleón</title><subtitle type='html'>Programación (Java, PHP), Servidores (Apache, Tomcat), Bases de Datos (MySQL, PostgreSQL), Android, Eclipse, Linux, y otras Tecnologías</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-2432309407538053498</id><published>2011-07-25T14:33:00.000-07:00</published><updated>2011-07-25T14:33:54.175-07:00</updated><title type='text'>Optimizacion de la Estructura</title><content type='html'>La optimización estructural se refiere a la mejor forma de enlazar entre si los archivos de tu sitio web para conseguir una estructura de navegación adecuada para los usuarios y que facilite al máximo la labor de los robots de los buscadores.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: magenta;"&gt;Objetivos de la optimización estructural&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Asegurar que tus páginas pueden ser indexadas&lt;/li&gt;&lt;li&gt;Tener una estructura de enlaces que guíe tanto a los &lt;b style="color: lime;"&gt;robots de los buscadores&lt;/b&gt; (programas que buscan las paginas que componen un sitio) como a los &lt;b style="color: lime;"&gt;visitantes&lt;/b&gt;&lt;span style="color: lime;"&gt; &lt;/span&gt;a los contenidos. &lt;/li&gt;&lt;/ul&gt;&lt;div style="color: magenta;"&gt;Puntos a considerar para la optimización estructural&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Para que un buscador pueda indexar tu contenido, este contenido debe ser &lt;b&gt;texto&lt;/b&gt; (no imágenes). &lt;/li&gt;&lt;li&gt;Tus &lt;b style="color: lime;"&gt;enlaces&lt;/b&gt;&lt;span style="color: lime;"&gt; &lt;/span&gt;deben estar programados &lt;b style="color: lime;"&gt;en XHTML&lt;/b&gt; (sin variables de sesión o de otro tipo) &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color: lime;"&gt;No &lt;/span&gt;&lt;/b&gt;debe parecer que tus &lt;b style="color: lime;"&gt;URLs &lt;/b&gt;han sido &lt;b style="color: lime;"&gt;generadas dinámicamente&lt;/b&gt; (no importa si son dinámicamente generadas dentro de tu ordenador). Los robots de muchos buscadores ignoran cualquier cosa después de un signo de exclamación en una URL. &lt;/li&gt;&lt;li&gt;Asegurate de que existe un claro camino a seguir desde tu página de inicio a cualquier pagina de tu web que quieres que sea indexada. &lt;/li&gt;&lt;li&gt;Asegurate también de que hay mas enlaces a la pagina de inicio que a paginas menos importantes. Si tienes una &lt;b style="color: lime;"&gt;arquitectura jerarquizada&lt;/b&gt;, la estructura de enlaces debería reflejar esos niveles, y tener mas enlaces a los superiores. &lt;/li&gt;&lt;li&gt;Un &lt;b style="color: lime;"&gt;mapa web&lt;/b&gt;&lt;span style="color: lime;"&gt; en XHTML&lt;/span&gt; garantizara que los robots son capaces de encontrar todas las paginas de tu sitio web. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-2432309407538053498?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/2432309407538053498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/07/optimizacion-de-la-estructura.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/2432309407538053498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/2432309407538053498'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/07/optimizacion-de-la-estructura.html' title='Optimizacion de la Estructura'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-1868447239147839187</id><published>2011-07-14T15:35:00.000-07:00</published><updated>2011-07-14T15:41:09.485-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='posicionamiento'/><category scheme='http://www.blogger.com/atom/ns#' term='optimizacion'/><title type='text'>Optimizacion del Texto</title><content type='html'>La optimización del texto (optimizacion lingüística) consiste en el correcto emplazamiento de palabras o frases clave en los títulos, descripciones, cabeceras y textos de las páginas.&lt;br /&gt;&lt;br /&gt;En primer lugar debes &lt;b style="color: magenta;"&gt;determinar&lt;/b&gt;&lt;span style="color: magenta;"&gt; cuales son &lt;/span&gt;&lt;b style="color: magenta;"&gt;las palabras clave&lt;/b&gt; para cada una de las páginas de tu sitio web.&lt;br /&gt;&lt;br /&gt;Los dos mejores métodos para descubrir la terminología que los usuarios utilizan son tus propios &lt;span style="color: magenta;"&gt;registros &lt;/span&gt;(los logs que te proporciona tu servidor web o los de el buscador en tu web, si lo tienes) y las investigaciones con usuarios (&lt;span style="color: magenta;"&gt;user testing&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Sin embargo este último método es caro y conlleva tiempo. Así que para empezar, y si tu presupuesto es reducido, puedes hacer uso de las herramientas de búsqueda de palabras clave.&lt;br /&gt;&lt;br /&gt;&lt;strike&gt;La forma mas sencilla es utilizar la &lt;b style="color: magenta;"&gt;herramienta de para palabras clave de Overture&lt;/b&gt;(ahora perteneciente a Yahoo!).&lt;br /&gt;&lt;br /&gt;Ve a &lt;a href="http://searchmarketing.yahoo.com/es_ES/rc/srch/index.php"&gt;http://searchmarketing.yahoo.com/es_ES/rc/srch/index.php&lt;/a&gt; y pincha en "Sugerir palabras de búsqueda". &lt;br /&gt;&lt;br /&gt;En el recuadro de texto introduce la palabra clave que crees que la gente puede estar usando para la clase de productos o servicios que tu sitio ofrece y presiona Intro (Enter).&lt;br /&gt;&lt;br /&gt;La herramienta devuelve una lista de palabras clave, y muestra lo a menudo que ese termino y otros relacionados han sido utilizados en la red de Overture (ten en cuenta que cuanto mas general sea un termino, mayor numero de búsquedas habrán sido realizadas, pero también habrá un mayor numero de competidores).&lt;/strike&gt;&lt;span style="color: red;"&gt;Ya no existe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La mas importante herramienta de selección de palabras clave de pago es &lt;a href="http://www.wordtracker.com/"&gt;Wordtracker&lt;/a&gt;, que devuelve el numero de veces que una palabra o frase ha sido introducida como termino de búsqueda en los buscadores, y la competencia para las mismas. También muestra los resultados de términos y frases similares. Lo que pueden dar idea de cuales son los términos mas interesantes para poner como palabras clave de una pagina.&lt;br /&gt;&lt;br /&gt;También debes escuchar lo que dicen los clientes que hacen uso del &lt;b&gt;Servicio al Cliente&lt;/b&gt; y leer &lt;b&gt;blogs&lt;/b&gt; y &lt;b&gt;grupos de discusión&lt;/b&gt; relacionados con el tema.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: magenta;"&gt;&lt;b&gt;Piensa en las palabras que la gente usa para describir su problema, no en tu solución.&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Considera incluir errores ortográficos comunes, sinónimos, singulares y plurales, palabras unidas por un guión, términos geográficos específicos (localización geográfica), el nombre de tu empresa, y el nombre de productos y empresas relacionadas con la tuya.&lt;br /&gt;&lt;br /&gt;Y por ultimo examina las &lt;a href="http://www.blogger.com/metatags.php"&gt;metatags&lt;/a&gt; de tu competencia. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;span style="font-size: large;"&gt;Aspectos a tener en cuenta en la optimizacion del texto&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Una vez que has determinado las palabras clave a utilizar para cada pagina del sitio web: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Elige &lt;span style="color: magenta;"&gt;una o dos palabras clave o frases clave por página&lt;/span&gt;. &lt;/li&gt;&lt;li&gt;Comprueba la &lt;b style="color: magenta;"&gt;prominencia&lt;/b&gt;&lt;span style="color: magenta;"&gt; (importancia) de las palabras clave&lt;/span&gt;. La prominencia es buena. Una palabra cerca del principio de una página es mas prominente que una al final. Una palabra al principio de la etiqueta TITLE es mas prominente que una al final. Etc. Debes usar palabras clave particularmente importantes cerca del principio de la página. &lt;/li&gt;&lt;li&gt;El primer sitio dentro de una página web en el que debemos tener las palabras clave es en las metaetiquetas &lt;b class="codigonaranja" style="color: magenta;"&gt;TITLE&lt;/b&gt;&lt;span style="color: magenta;"&gt; y &lt;/span&gt;&lt;b class="codigonaranja" style="color: magenta;"&gt;DESCRIPTION&lt;/b&gt; de la cabecera. &lt;/li&gt;&lt;li&gt;Emplea palabras clave dentro de las etiquetas &lt;b class="codigonaranja" style="color: magenta;"&gt;&amp;lt;H&amp;gt;&lt;/b&gt; (los titulos). &lt;/li&gt;&lt;li&gt;Además conviene que aparezcan resaltadas en &lt;b style="color: magenta;"&gt;negrita&lt;/b&gt;&lt;span style="color: magenta;"&gt; &lt;/span&gt;o en &lt;i style="color: magenta;"&gt;cursiva&lt;/i&gt;. &lt;/li&gt;&lt;li&gt;Pon palabras clave dentro del texto en &lt;b style="color: magenta;"&gt;listas&lt;/b&gt;.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Utiliza las palabras clave varias veces dentro de una pagina; pero tampoco te pases. Los buscadores miran la densidad de palabras clave (el numero de palabras clave entre el total de palabras). &lt;/li&gt;&lt;li&gt;Asegurate de que los &lt;b style="color: magenta;"&gt;enlaces&lt;/b&gt;&lt;span style="color: magenta;"&gt; &lt;/span&gt;entre paginas de tu sitio web &lt;b&gt;contienen &lt;span style="color: magenta;"&gt;palabras clave&lt;/span&gt;&lt;/b&gt;. No utilices para los enlaces "Pincha aquí". &lt;/li&gt;&lt;li&gt;Utiliza &lt;a href="http://www.blogger.com/naming_files_folders.php?lg=es"&gt;palabras clave en los nombres de los archivos y carpetas&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;Hay dos razones por las que &lt;span style="color: magenta;"&gt;las &lt;/span&gt;&lt;b style="color: magenta;"&gt;cabeceras&lt;/b&gt;&lt;span style="color: magenta;"&gt; deben contener las palabras clave&lt;/span&gt;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Los buscadores tienden a asignar peso extra a palabras contenidas en los títulos y otras cabeceras &lt;/li&gt;&lt;li&gt;Los usuarios escanean los resultados de búsqueda y a menudo no leen mas aya de las cabeceras     &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-1868447239147839187?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/1868447239147839187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/07/optimizacion-texto.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/1868447239147839187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/1868447239147839187'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/07/optimizacion-texto.html' title='Optimizacion del Texto'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-2691503215399796769</id><published>2011-07-14T15:21:00.000-07:00</published><updated>2011-07-14T15:21:17.593-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='search engine optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='buscadores'/><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='posicionamiento'/><title type='text'>Posicionamiento en Buscadores (Search Engine Optimization - SEO)</title><content type='html'>El posicionamiento en buscadores o posicionamiento web (SEO) consiste en la aplicacion de aquellas técnicas que tienen como  objetivo el que los buscadores web sitúen nuestras páginas web en  las mejores posiciones  en  sus páginas de resultados, para determinados  terminos de búsqueda.&lt;br /&gt;&lt;br /&gt;El objetivo final del posicionamiento en buscadores es maximizar el número o la calidad de los visitantes a nuestro sitio web.&lt;br /&gt;&lt;br /&gt;Los&lt;b&gt; &lt;span style="color: lime;"&gt;motores de búsqueda&lt;/span&gt;&lt;/b&gt; son muy importantes por una serie de razones: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Casi el 50% de las visitas a un sitio web empiezan en un motor de búsqueda&lt;/li&gt;&lt;li&gt;La mayoría de visitantes nuevos provienen de los motores de búsqueda &lt;/li&gt;&lt;li&gt;Un gran número de compradores empieza en los motores de búsqueda &lt;/li&gt;&lt;li&gt;Los motores de búsqueda representan un medio barato de alcanzar clientes &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" border="1" bordercolor="#cccccc" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;              &lt;td valign="top" width="252"&gt;&lt;div align="center"&gt;&lt;b&gt;&lt;span style="color: lime;"&gt;Motores mas importantes&lt;/span&gt; &lt;/b&gt;&lt;/div&gt;&lt;/td&gt;            &lt;/tr&gt;&lt;tr&gt;              &lt;td valign="top" width="252"&gt;&lt;div align="center"&gt;&lt;a href="http://www.google.com/"&gt;Google.com&lt;/a&gt; &lt;/div&gt;&lt;/td&gt;            &lt;/tr&gt;&lt;tr&gt;              &lt;td valign="top" width="252"&gt;&lt;div align="center"&gt;&lt;a href="http://www.yahoo.com/"&gt;Yahoo.com&lt;/a&gt; &lt;/div&gt;&lt;/td&gt;            &lt;/tr&gt;&lt;tr&gt;              &lt;td valign="top" width="252"&gt;&lt;div align="center"&gt;&lt;a href="http://www.ask.com/"&gt;Teoma/AskJeeves&lt;/a&gt; &lt;/div&gt;&lt;/td&gt;            &lt;/tr&gt;&lt;tr&gt;              &lt;td valign="top" width="252"&gt;&lt;div align="center"&gt;&lt;a href="http://dmoz.org/"&gt;The Open Directory Project&lt;/a&gt; &lt;/div&gt;&lt;/td&gt;            &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp; &lt;br /&gt;*&lt;b&gt;Google&lt;/b&gt; provee por si solo casi el &lt;b&gt;75 por ciento&lt;/b&gt; de todos los resultados de busqueda.&lt;br /&gt;&lt;br /&gt;Los usuarios casi siempre acuden a los motores de búsqueda con un nuevo problema a resolver pero &lt;b&gt;casi nunca leen mas alla de la primera pagina de resultados&lt;/b&gt;, por lo que la Optimizacion del Posicionamiento en Buscadores debería ser uno de los elementos mas importantes de tu estrategia en Internet.&lt;br /&gt;&lt;br /&gt;Conseguir una buena posición en las primeras pagina de resultados de búsqueda (idealmente la primera) para los términos relevantes de tu web es esencial si quieres ser encontrado por la gente que busca la clase de productos o servicios que tu ofreces.&lt;br /&gt;&lt;br /&gt;¿Cómo haces para aparecer en la primera pagina de resultados en los principales motores de búsqueda? &lt;b&gt;No hay una formula definitiva&lt;/b&gt;, y cualquier consultor que prometa situarte en ella es casi seguro lo que llaman un "black-hat" optimizador que emplea técnicas poco éticas y que no gustan a los buscadores.&lt;br /&gt;&lt;br /&gt;De hecho, los buscadores suelen eliminar de sus resultados los sitios que descubren que están usando estas técnicas de optimizacion black-hat.&lt;br /&gt;&lt;br /&gt;Solo unas pocas situaciones garantizan un buen posicionamiento: si eres una gran empresa o agencia gubernamental, o si eres tienes marca famosa a nivel internacional que ninguna otra empresa en el mundo utilice.&lt;br /&gt;&lt;br /&gt;Existen tres tipos principales de &lt;b&gt;&lt;span style="color: lime;"&gt;Tecnicas de Optimizacion del Posicionamiento en Buscadores&lt;/span&gt; &lt;/b&gt;"white-hat": &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=3317662252513531113#"&gt;Optimización del texto&lt;/a&gt; (lingüística) &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=3317662252513531113#"&gt;Optimización de la estructura&lt;/a&gt; (enlaces internos) &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=3317662252513531113#"&gt;Optimización de la reputacion online &lt;/a&gt; (enlaces externos) &lt;/li&gt;&lt;/ul&gt;Debes aplicar las tres en tu sitio web. Y despues, paciencia. &lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Define tu plan de ataque &lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Lleva a cabo un &lt;b style="color: magenta;"&gt;análisis de palabras clave&lt;/b&gt;. Un análisis de palabras clave es la mejor forma de seleccionar los términos a los que debes enfocar tu web.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Crea &lt;a href="http://www.blogger.com/post-create.g?blogID=3317662252513531113#"&gt;paginas legibles&lt;/a&gt;. Esto es, paginas que los robots de los buscadores sean capaces de leer. &lt;/li&gt;&lt;li&gt;Crea paginas que contengan &lt;a href="http://www.blogger.com/post-create.g?blogID=3317662252513531113#"&gt;palabras clave&lt;/a&gt; (keyworded pages). Pon las palabras clave en las páginas - en los sitios adecuados y con el formato apropiado. &lt;/li&gt;&lt;li&gt;Haz que &lt;a href="http://www.blogger.com/post-create.g?blogID=3317662252513531113#"&gt;otros sitios web enlacen a tu sitio&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;Si todo lo demás falla, compra publicidad en los buscadores. Por supuesto, esto es caro y se prevé que se vuelva todavía mas caro, por lo que no es un sustituto a tener un sitio optimizado que figure por si mismo en buena posición en las paginas de resultados de los buscadores.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-2691503215399796769?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/2691503215399796769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/07/posicionamiento-en-buscadores-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/2691503215399796769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/2691503215399796769'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/07/posicionamiento-en-buscadores-search.html' title='Posicionamiento en Buscadores (Search Engine Optimization - SEO)'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-6383929739302635365</id><published>2011-07-08T15:11:00.000-07:00</published><updated>2011-07-08T15:11:49.875-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='buscadores'/><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='posicionamiento'/><title type='text'>Paginas Legibles e Indexables</title><content type='html'>Para que una pagina resulte legible para tus visitantes y para los robots de los buscadores:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Limita el uso de multimedia&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;La mayoría de las animaciones multimedia usadas en la web no sirven un propósito determinado y son solo de adorno. Mira a los sitios web de mas éxito y veras que en raras ocasiones utilizan multimedia simplemente con propósitos decorativos. &lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Reduce la utilización de Flash al mínimo&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;O mejor todavía, elimínalo por completo de la página.&lt;br /&gt;&lt;br /&gt;Puedes utilizar multimedia en un sitio web en algunas formas útiles. Tiene mucho sentido, por ejemplo, utilizar Flash para crear demos o presentaciones. Sin embargo las intros Flash carecen casi siempre de sentido y no les gustan a los motores de búsqueda porque no proveen contenido indexable.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Sustituye las imágenes con texto por texto&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Los buscadores no son capaces de leer texto que forma parte de una imagen y el texto que es parte de una imagen no permite que los usuarios lo adapten al tamaño que ellos prefieren.&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Usa la etiqueta ALT para las imágenes&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Y recuerda poner palabras clave en ella.&lt;br /&gt;&lt;br /&gt;Esto ayudara tanto a los buscadores como a las personas con discapacidades fisicas a entender mejor los contenidos que forman parte de tu web. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: lime;"&gt;Evita la utilización de marcos&lt;/b&gt; (frames)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-6383929739302635365?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/6383929739302635365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/07/paginas-legibles-e-indexables.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/6383929739302635365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/6383929739302635365'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/07/paginas-legibles-e-indexables.html' title='Paginas Legibles e Indexables'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-4961541221879183635</id><published>2011-07-08T13:02:00.000-07:00</published><updated>2011-07-08T15:01:30.389-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='diseño visual'/><category scheme='http://www.blogger.com/atom/ns#' term='diseño web'/><title type='text'>Diseño Web - Diseño Visual</title><content type='html'>El diseño visual de un sitio web importa. Lejos de ser simplemente decoración para los contenidos, el diseño del sitio dicta la organización y la interacción de los usuarios con el interfaz.&lt;br /&gt;&lt;br /&gt;Además, los visitantes de un sitio web hacen a menudo juicios (conscientes o inconscientes) sobre su calidad basándose en su diseño. &lt;b&gt;El diseño de un sitio web determina la diferencia percibida por los usuarios entre un sitio &lt;span style="color: lime;"&gt;profesional &lt;/span&gt;y uno que no lo es&lt;/b&gt;, y que no merece por tanto la misma atención.&lt;br /&gt;&lt;br /&gt;Los usuarios web son extremadamente impacientes: pasan una media de solo &lt;b style="color: lime;"&gt;27 segundos&lt;/b&gt; en cada página web (de acuerdo a un estudio llevado a cabo por &lt;a href="http://www.useit.com/"&gt;JaKob Nielsen&lt;/a&gt;). Tienen prisa porque en Internet hay demasiada "basura", por lo que &lt;b&gt;el tiempo que tienes para captar su atención y convencerles de que visitar tu sitio web merece la pena es muy limitado&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Diseñar&lt;/b&gt; significa &lt;b style="color: lime;"&gt;planificar&lt;/b&gt;. El proceso de diseño tiene como objetivo el traer orden al caos y la aleatoriedad. El orden es bueno para los lectores, que pueden encontrar más fácilmente el sentido de un mensaje ordenado. Un mensaje ordenado es por tanto considerado un buen diseño.&lt;br /&gt;&lt;br /&gt;La elegancia es la medida de la simplicidad del diseño web en relación a la complejidad de sus funciones. Por ejemplo, dados dos diseños con la misma simplicidad, el que contiene más información es más elegante. Por el contrario, de dos diseños que contienen la misma información, el más simple es el más elegante.&lt;br /&gt;&lt;br /&gt;EL objetivo principal de la composición de una página es el &lt;b&gt;&lt;span style="color: lime;"&gt;reconocimiento visual&lt;/span&gt; &lt;/b&gt; y la &lt;b style="color: lime;"&gt;legibilidad&lt;/b&gt;. Estos objetivos se pueden alcanzar mediante:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un uso consistente de la tipografía&lt;/li&gt;&lt;li&gt;Un uso efectivo del espacio en blanco y los gráficos&lt;/li&gt;&lt;li&gt;Un uso controlado de las líneas&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Es importante en el diseño web hacer que la página sea visualmente atractiva. La &lt;b style="color: lime;"&gt;estimulación visual&lt;/b&gt; arrastra a los espectadores hacia el interior de la página, despertando su curiosidad y envolviéndoles activamente en el proceso de absorción de información.&lt;br /&gt;&lt;br /&gt;Cuando miramos a un documento impreso o a la pantalla de un monitor, nuestros ojos buscan de manera instintiva y subconsciente por &lt;b style="color: lime;"&gt;similitudes y diferencias&lt;/b&gt; entre los elementos utilizados. Si el cerebro no puede agrupar fácilmente los elementos que vemos, percibe confusión.&lt;br /&gt;&lt;br /&gt;Cuando nos encontramos con un diseño web sólido, tendemos a ver su &lt;b&gt;&lt;span style="color: lime;"&gt;composición&lt;/span&gt; total&lt;/b&gt; primero, y después procesamos sus &lt;b&gt;&lt;span style="color: lime;"&gt;elementos &lt;/span&gt;de diseño individuales&lt;/b&gt; (tipografía, fotos, gráficos, colores, etc.) Los elementos individuales deben estar siempre al servicio del diseño total, trabajando en armonía para producir el mayor impacto posible.&lt;br /&gt;&lt;br /&gt;La &lt;b style="color: lime;"&gt;simplicidad&lt;/b&gt;&lt;span style="color: lime;"&gt; &lt;/span&gt;visual elimina los elementos innecesarios y estructura aquellos que quedan en un sistema lógico y consistente.&lt;br /&gt;&lt;br /&gt;La comunicación visual depende de la creación de una &lt;b&gt;&lt;span style="color: lime;"&gt;conexión &lt;/span&gt;con el lector&lt;/b&gt;. Esta conexión siempre es débil al principio, ya que el lector no tiene ningún compromiso con el mensaje. Sin embargo, los lectores responden a una estructura de página consistente.&lt;br /&gt;&lt;br /&gt;El buen diseño web reduce el esfuerzo de leer al máximo, animando a la lectura y al entendimiento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-4961541221879183635?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/4961541221879183635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/07/diseno-web-diseno-visual.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/4961541221879183635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/4961541221879183635'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/07/diseno-web-diseno-visual.html' title='Diseño Web - Diseño Visual'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-5196720740300118136</id><published>2011-07-08T12:49:00.000-07:00</published><updated>2011-07-08T12:49:37.796-07:00</updated><title type='text'>Tareas Iniciales Diseño Web</title><content type='html'>&lt;div style="color: magenta;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Tareas iniciales  para asegurarnos  un adecuado diseño web&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Definir claramente el objetivo &lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Identificar lo que queremos conseguir con el sitio web.&lt;br /&gt;&lt;br /&gt;Queremos que, por ejemplo, el objetivo de nuestro sitio web sea el llevar a cabo la tarea de un: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Medio de comunicación de los clientes con la empresa (por ejemplo para que envien sus dudas o peticiones a través de la web) &lt;/li&gt;&lt;li&gt;Medio de comunicación con los clientes (para ofrecerles información sobre nuestros productos o servicios) &lt;/li&gt;&lt;li&gt;Medio de captación de nuevos clientes &lt;/li&gt;&lt;li&gt;Medio de comunicación uni- o bi-direccional con los empleados &lt;/li&gt;&lt;li&gt;Fuente de ingresos mediante &lt;/li&gt;&lt;li&gt; Publicidad &lt;/li&gt;&lt;li&gt; Venta on-line &lt;/li&gt;&lt;li&gt; Intermediacion &lt;/li&gt;&lt;/ul&gt;&lt;div style="color: lime;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Elegir tecnologías adecuadas para la construcción de nuestro sitio web&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Utilizar XHTML y CSS es adecuado con vistas a un buen mantenimiento y actualización. Flash, en cambio, es poco adecuado para la construcción completa de una web (aunque se puede utilizar para tareas concretas), debido a la mayor dificultad para actualizar la información que esta contiene y a que no proporciona contenido indexable para los buscadores. &lt;br /&gt;&lt;br /&gt;XHTML y CSS son editables en cualquier programa que tiene un editor de textos, desde el Notepad hasta el Dreamweaver. Los diseños web no deben estar basados en ningún software en particular, sino en los estándares de las organizaciones como el W3C. Esta organización se encarga de supervisar los lenguajes y estándares que se usan para la creación de paginas web, y que todo el mundo, independientemente del software, puede acceder.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Tener interés por nuestros contenidos &lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Es de gran importancia tener interés por los contenidos que uno pone online. Si tu no lo tienes es difícil que otros lo tengan. Y si no tienes interés cuando los pones online, probablemente no lo tendrás mas adelante. Y por lo tanto no les dedicaras el tiempo necesario para mantenerlos y actualizarlos de forma adecuada. &lt;br /&gt;&lt;br /&gt;Y lo que no necesita la WWW es mas paginas "cutres". Así que sea lo que sea aquello con lo que deseas contribuir, asegurate de que es un tema por el que tienes interés y que te vas a dedicar a revisar y actualizar. &lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Invertir el tiempo necesario&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;La mayoría de nosotros hemos experimentado la urgencia de "poner algo" cuanto antes en la web. Esta urgencia se manifiesta en sitios web a medio hacer con las típicas advertencias de "Sitio en construcción".&lt;br /&gt;&lt;br /&gt;Un sitio web esta, por supuesto, siempre en construcción (mejora, revisión, expansión), pero cuanto mas nos precipitemos al poner contenidos online menor será su calidad, su organización, y mas difícil su mantenimiento y actualización. &lt;br /&gt;&lt;br /&gt;Y si una web no es fácilmente actualizable y expandible, probablemente no la vamos a actualizar y mejorar. Si el editar contenidos rompe en diseño de la página - por ejemplo por estar construida con tablas HTML - la vamos a dejar tal como esta, incluso si necesita desesperadamente actualización. &lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Proyectar credibilidad&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Para que el Sitio sea más creíble y gane la confianza de las personas que lo visitan, es recomendable incluir el nombre de la Empresa o de la persona responsable con la dirección física e información acerca de los contactos por otras vías como número de teléfono y fax.&lt;br /&gt;&lt;br /&gt;Estos datos son fundamentales en los Sitios de comercio on-line. Para una persona deje sus datos personales y en especial el número de tarjeta de crédito, es imprescindible que quienes visiten el Sitio tengan la absoluta certeza de que la empresa existe y es de confianza.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-5196720740300118136?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/5196720740300118136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/07/tareas-iniciales-diseno-web.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/5196720740300118136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/5196720740300118136'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/07/tareas-iniciales-diseno-web.html' title='Tareas Iniciales Diseño Web'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-7210528726043250684</id><published>2011-07-08T12:46:00.000-07:00</published><updated>2011-07-08T12:46:34.589-07:00</updated><title type='text'>Principios del Diseño Web</title><content type='html'>&lt;div style="color: magenta;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Principios en los que nos basamos para nuestras recomendaciones&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;•&amp;nbsp; Debemos intentar seguir las recomendaciones y los &lt;b&gt;estándares &lt;/b&gt;&lt;b&gt;XHTML &lt;/b&gt; y &lt;b&gt;CSS &lt;/b&gt; del &lt;b&gt;W3C &lt;/b&gt; (&lt;a href="http://www.w3.org/"&gt;World Wide Web Consortium&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;•&amp;nbsp; Los &lt;b&gt;conceptos universales de diseño &lt;/b&gt; (acerca del espacio, unidad, estructura y tipografía) son totalmente validos para la creación de páginas web &lt;br /&gt;&lt;br /&gt;•&amp;nbsp; La información de mayor valor acerca de la &lt;b&gt;usabilidad &lt;/b&gt; de un sitio web proviene de los &lt;b&gt; estudios &lt;/b&gt; llevados a cabo con su público objetivo &lt;br /&gt;&lt;br /&gt;•&amp;nbsp; La  Web es un &lt;b&gt;medio vivo&lt;/b&gt;, en continua evolución, que requiere de continuo mantenimiento y actualización de los sitios web que la componen &lt;br /&gt;&lt;br /&gt;•&amp;nbsp; La Web es un sistema &lt;b&gt;distribuido &lt;/b&gt;  donde las personas se dirigen con el objetivo primordial de adquirir &lt;b&gt;información&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;•&amp;nbsp; El &lt;b&gt;comportamiento &lt;/b&gt; online de los &lt;b&gt;usuarios web &lt;/b&gt; es en su mayoría egoísta, vago, e implacable en la aplicación de su análisis coste-beneficio; si encontrar la información que buscan no resulta facil en un sitio web simplemente se marcharan a otro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-7210528726043250684?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/7210528726043250684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/07/principios-del-diseno-web.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/7210528726043250684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/7210528726043250684'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/07/principios-del-diseno-web.html' title='Principios del Diseño Web'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-1529222404807292088</id><published>2011-07-05T15:05:00.000-07:00</published><updated>2011-07-08T12:49:44.038-07:00</updated><title type='text'>Diseño, Usabilidad y Marketing Online</title><content type='html'>Uno de los principales objectivos de este sitio web es el estar dedicado a la difusión de las mejores prácticas/técnicas para el &lt;b&gt;diseño &lt;/b&gt;web, la &lt;b&gt;usabilidad &lt;/b&gt; web y el &lt;b&gt;marketing &lt;/b&gt; online&lt;br /&gt;&lt;br /&gt;Los sitios web  que sigan las recomendaciones que aquí se ofrecen seran: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;sean fáciles de &lt;b&gt;leer &lt;/b&gt; y &lt;b&gt;navegar&lt;/b&gt;&lt;/li&gt;&lt;li&gt;sean visualmente &lt;b&gt;atractivos&lt;/b&gt;&lt;/li&gt;&lt;li&gt;sean &lt;b&gt; fáciles &lt;/b&gt;de &lt;b&gt; mantener &lt;/b&gt;y &lt;b&gt; actualizar&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;maximicen &lt;/b&gt;el &lt;b&gt; tráfico &lt;/b&gt;y la &lt;b&gt; conversión &lt;/b&gt; de visitantes en clientes &lt;/li&gt;&lt;/ul&gt;Poco a poco iremos cubriendo &lt;b&gt;todas las áreas  de creación y promoción de un sitio web&lt;/b&gt;, desde el diseño del sitio hasta su marketing online. &lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;span style="font-size: large;"&gt;Áreas a considerar en la creación de un sitio web &lt;/span&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;br /&gt;&lt;b&gt;Diseño&lt;/b&gt;&lt;/div&gt;&lt;b&gt;Diseño web&lt;/b&gt; es el arte de estructurar un sitio web de forma que: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sea &lt;b&gt;fácil de navegar &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Los usuarios puedan &lt;b&gt;encontrar la información&lt;/b&gt; que buscan rápidamente &lt;/li&gt;&lt;li&gt;Resulte al mismo tiempo &lt;b&gt;visualmente &lt;/b&gt;&lt;b&gt;atractivo &lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;Lo primero que hay que tener en cuenta para el diseño de un sitio web es el &lt;b&gt;objetivo &lt;/b&gt; que se persigue y el &lt;b&gt;publico &lt;/b&gt; al que esta dirigido.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: magenta;"&gt;&lt;b&gt;Usabilidad&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Usabilidad web&lt;/b&gt; se refiere a la claridad con que los usuarios de un sitio web perciben su &lt;b&gt;estructura &lt;/b&gt;y sus&lt;b&gt; funcionalidades, &lt;/b&gt; y la eficiencia con que pueden &lt;b&gt;llevar a cabo&lt;/b&gt; en el sitio web &lt;b&gt;las tareas &lt;/b&gt; que se proponen.&lt;br /&gt;&lt;br /&gt;La usabilidad es el aspecto mas importante al evaluar si el diseño web de un sitio es adecuado, o si por el contrario debe ser corregido para facilitar a los usuarios el acceso a los contenidos.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: magenta;"&gt;&lt;b&gt;Marketing online&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;El &lt;b&gt;marketing online &lt;/b&gt; cubre aquellas prácticas que permiten a un sitio web &lt;b&gt;llegar hasta su publico objetivo&lt;/b&gt; y lograr el mayor número de visitantes (trafico) y/o volumen de negocio.&lt;br /&gt;&lt;br /&gt;Marketing online es el uso de Internet para anunciar y vender (hacer llegar a los consumidores) productos y servicios.&lt;br /&gt;&lt;br /&gt;De entre las técnicas del marketing online destaca el &lt;b&gt;Posicionamiento en Buscadores &lt;/b&gt; (en inglés&lt;b&gt; SEO&lt;/b&gt;: Search Engine Optimization).&lt;br /&gt;&lt;br /&gt;El posicionamiento en buscadores es el conjunto de técnicas de marketing que tienen como objetivo el &lt;b&gt;conseguir la mejor posición para nuestras paginas web en los resultados&lt;/b&gt; obtenidos al introducir &lt;b&gt;en un buscador&lt;/b&gt; una palabra o frase determinada relacionada con nuestros contenidos (palabras clave o keywords).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-1529222404807292088?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/1529222404807292088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/07/diseno-usabilidad-y-marketing-online.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/1529222404807292088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/1529222404807292088'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/07/diseno-usabilidad-y-marketing-online.html' title='Diseño, Usabilidad y Marketing Online'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-7435690505530176396</id><published>2011-06-28T15:52:00.000-07:00</published><updated>2011-07-02T16:41:58.228-07:00</updated><title type='text'>Crear Web - Capitulo 2</title><content type='html'>En este segundo capitulo vamos a darle formato a la plantilla con la creacion de un menú (en principio sera una lista con enlaces), un titulo, un subtitulo, un cuerpo para el texto principal y un pie.&lt;br /&gt;&lt;br /&gt;Después vamos a crear estilos para todos estos elementos en nuestra hoja de estilos CSS.&lt;br /&gt;&lt;br /&gt;Pasos:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;1. Crear los archivos a los que van a enlazar los elementos del menú&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Por ejemplo: Home, Biografia, Articulos1, Articulos2, Contacto, Webmap. &lt;br /&gt;(Boton derecho en la carpeta en la que queremos crear los archivos + Nuevo archivo) &lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;2. Crear la lista-menu y poner los enlaces de cada elemento de la lista a al archivo correspondiente de los que acabamos de crear&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Seleccionando el texto que queremos que sea un enlace y arrastrando el archivo al que queremos que enlace a la propiedad "Vinculo".&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;3. Crear H1, H2, Cuerpo, Pie&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Para ello pondremos una palabra de texto para cada elemento y luego la seleccionaremos y con el boton derecho la definiremos como una nueva region editable y le daremos el nombre que queramos.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;4. Crear los estilos para cada uno de los elementos anteriores&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Si sabes un poco de CSS o de programacion puedes llevar a cabo los pasos siguientes: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pinchamos en el icono "Nuevo estilo CSS" en la pestaña "Diseño" (en la columna derecha) &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Seleccionamos "Redefinir etiqueta HTML" para "body", "h1", "h2" y "h3" y para el resto seleccionamos "Crear estilo personalizado" y le asignamos el nombre que queramos (le puedes dar los mismos nombres que ves en esta pagina que yo les he dado) &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; Seleccionamos las caracteristicas para cada uno (o, si no entiendes bien como se hace esto, puedes simplemente copiar y pegar el codigo que esta a continuacion en naranja en la hoja de estilos y mas adelante preocuparte de como funciona) &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Para el body asignaremos&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;blockquote style="color: magenta;"&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;body {&lt;/div&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;padding-left: 180px;&lt;br /&gt;font-family: Arial, Helvetica, Geneva, sans-serif;&lt;br /&gt;color: black;&lt;br /&gt;background-color: #FFFFFF;&lt;br /&gt;line-height: 1.6em;&lt;br /&gt;font-size: 1em;&lt;/blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;} &lt;/span&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Para la lista-menu&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;blockquote style="color: magenta;"&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ul.navbar {&lt;/div&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;list-style-type: none;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;position: absolute;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;top: 5em;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;left: 5px;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;width: 166px; &lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;background-color: #FFFFFF;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;font-size: 0.9em;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ul.navbar li {&lt;/div&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;background: #FFFFFF;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;color: #000099;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;margin: 0.5em 0;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;padding: 0.3em;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-left: 1em solid #000099;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-top-width: 1px;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-bottom-width: 1px;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-top-style: solid;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-bottom-style: solid;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-top-color: #000099;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-bottom-color: #000099;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-right-width: 1px;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-right-style: solid;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;border-right-color: #000099;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ul.navbar a {&lt;/div&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;text-decoration: none &lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}     &lt;/div&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Para que los links del menú no esten subrayados ni en azul)&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Para H1, H2, pie&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;blockquote style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;blockquote&gt;&lt;blockquote&gt;h1 {&lt;br /&gt;&lt;blockquote&gt;font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;&lt;br /&gt;color: #000099;&lt;br /&gt;font-size: 2.5em;&lt;/blockquote&gt;}&lt;br /&gt;&lt;br /&gt;h2 {&lt;br /&gt;&lt;blockquote&gt;font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;&lt;br /&gt;color: #FF6600;&lt;br /&gt;font-size: 1.5em;&lt;/blockquote&gt;}&lt;br /&gt;&lt;br /&gt;h3 {&lt;br /&gt;&lt;blockquote&gt;font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;&lt;br /&gt;color: #000099;&lt;br /&gt;font-size: 1.2em;&lt;/blockquote&gt;}&lt;br /&gt;&lt;br /&gt;.pie {&lt;br /&gt;&lt;blockquote&gt;font-size: 0.8em;&lt;/blockquote&gt;}&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Y la lista, que es primer elemento del body, la definiremos como:&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style="margin-left: 80px;"&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=3317662252513531113&amp;amp;postID=7435690505530176396#"&gt;Home&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a href="http://www.blogger.com/post-edit.g?blogID=3317662252513531113&amp;amp;postID=7435690505530176396#"&gt;Biografia&lt;/a&gt;&lt;/li&gt;&lt;li&gt; …………………..&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-7435690505530176396?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/7435690505530176396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/06/crear-web-capitulo-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/7435690505530176396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/7435690505530176396'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/06/crear-web-capitulo-2.html' title='Crear Web - Capitulo 2'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-5033663593206733757</id><published>2011-06-28T15:43:00.000-07:00</published><updated>2011-07-08T15:06:35.223-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crear web'/><title type='text'>Crear Web - Capitulo 1</title><content type='html'>&lt;b style="color: lime;"&gt;1. Crear Sitio &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Un Sitio se refiere a una carpeta en nuestro ordenador donde vamos a tener todos los archivos que van a formar parte de nuestra web. Esto incluye los documentos html (cada una de las paginas de la web), las imagenes, las fotos, las plantillas, lsa hojas de estilo, etc.&lt;br /&gt;&lt;br /&gt;En el Dreamweaver vamos a el boton superior llamado "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Sitio&lt;/span&gt;" (a la altura de los botones de "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Archivo&lt;/span&gt;", "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Edicion&lt;/span&gt;", etc.) y pinchamos en "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Nuevo Sitio&lt;/span&gt;". Lo unico que es necesario rellenar por el momento es el nombre del sitio y la carpeta en la que va a estar localizado en nuestro ordenador. El resto de informacion nos la proporcionara nuestro servicio de hosting cuando lo contratemos y hasta entonces no sera necesaria.&lt;br /&gt;&lt;br /&gt;Si tienes un servidor de prueba, que puede ser tu propio ordenador si le instalas Apache, puedes rellenar la informacion sobre el servidor de prueba. Pero puedes ver como quedara la pagina que estas creando en "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Archivo --› Vista previa en el Navegador&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;2. Crear hoja de estilos CSS&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;En el apartado CSS se explica que son y para que sirven las hojas de estilo CSS. Aqui vamos a aprender a utilizarlas.&lt;br /&gt;&lt;br /&gt;Lo primero es crear una carpeta dentro de nuestro sitio que, por convencion, la vamos a llamar "assets". No es necesario que tenga este nombre y ni siquiera es necesario que las hojas de estilos esten dentro de una carpeta, pero va a ser mejor con vistas a la organizacion.&lt;br /&gt;&lt;br /&gt;Dentro de esta carpeta creamos un archivo CSS: "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Archivo --› Nuevo --›&lt;/span&gt;&lt;span style="color: magenta;"&gt; (en la pestaña General) &lt;/span&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Pagina basica --› CSS&lt;/span&gt;". Y lo guardamos con el nombre que queramos. Este es un archivo en blanco , solo con un comnetario de que va a ser una hoja de estilos, y con la extension .css&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;3. Crear plantilla&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Creamos una carpeta que la llamamos templates (lo mismo que antes, por convencion) y dentro de esta vamos a crear una plantilla: "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Archivo --› Nuevo --›&lt;/span&gt;&lt;span style="color: magenta;"&gt; (en la pestaña General)&lt;/span&gt; &lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Pagina de plantilla --› Plantilla HTML&lt;/span&gt; ". Y la guardamos con el nombre que queramos.&lt;br /&gt;&lt;br /&gt;La plantilla va a ser la estructura en la que se basen todas nuestras paginas de la web (aunque podemos tener varias plantillas para varios apartados). Y la ventaja es que cuando cambiemos algo en la plantilla este cambio se va a producir en todos los archivos que esten basados en dicha plantilla. Lo que facilita en gran medida la actualizacion de la web.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;4. Enlazar la plantilla a la hoja de estilos&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Ahora tenemos que enlazar la plantilla a la hoja de estilos CSS para que esta ultima de formato a la plantilla y por extension a todos los archivos de la web que se basen en dicha plantilla.&lt;br /&gt;&lt;br /&gt;Esto lo hacemos en la pestaña Diseño de la columna vertical de la derecha. (La misma que tiene las pestañas Aplicacion, Codigo, Archivos y Respuestas). Si pinchamos en la pestaña Diseño se abrira, si estaba cerrada, y en la parte inferior derecha vemos varios iconos. Con el documento plantilla abierto (en el area central del Dreamweaver) pinchamos en el icono de mas a la izquierda: "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Adjuntar hoja de estilos&lt;/span&gt;". Y adjuntamos el unico archivo de plantilla que por ahora tenemos, con las opciones "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Vincular&lt;/span&gt;" y "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Solo a este documento&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Esto introducira en la cabecera (head) de la plantilla una linea de codigo similar a:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; link href="estilos.css" rel="stylesheet" type="text/css"&lt;/div&gt;&lt;br /&gt;Ahora guardamos la plantilla y en el siguiente punto veremos como utilizarla de base para un archivo.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;5. Crear index&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Creamos un archivo: "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Archivo --› Nuevo --› Pagina basica&lt;/span&gt;" y lo guardamos como index.htm (o .html, es lo mismo) en el nivel mas alto de nuestro sitio. (El nivel mas alto o raiz (root) es el que no esta dentro de ninguna otra carpeta).&lt;br /&gt;&lt;br /&gt;Para que el index este basado en la plantilla (podria no estarlo, pero yo recomedaria que si), con el archivoabrimos en la columa de la derecha la pestaña "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Archivos&lt;/span&gt;". Dentro de esta hay dos pestañas: "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Sitio&lt;/span&gt;", donde vemos todos los elementos que estan dentro de nuestro sitio, y "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Activos&lt;/span&gt;". Pinchamos en "&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Activos&lt;/span&gt;" y luego, de entre los iconos de la izquierda, pinchamos en "Plantillas". Aparecera la unica plantilla que tenemos. Pinchamos en ella y la arrastramos a la pantalla central, sobre la vista de diseño (en la que no se ve el codigo). Si no sabes cuales son las vistas de codigo y diseño del Dreamweaver mira en la ayuda.&lt;br /&gt;&lt;br /&gt;Y guardamos el documento. &lt;br /&gt;&lt;br /&gt;Ahora el index estara basado en la plantilla y enlazado a la hoja de estilos. Por lo que cualquier cambio que realicemos en cualquiera de estas se reflejara en el index. Lo mismo se haria para cualquier otro archivo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-5033663593206733757?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/5033663593206733757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2011/06/crear-web-capitulo-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/5033663593206733757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/5033663593206733757'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2011/06/crear-web-capitulo-1.html' title='Crear Web - Capitulo 1'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-2906091811995273578</id><published>2010-07-17T14:25:00.001-07:00</published><updated>2011-06-28T11:58:08.419-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sax'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='xsl'/><title type='text'>XMLCheatSheet</title><content type='html'>&lt;table border="1" cellpadding="2" cellspacing="0" style="color: black;"&gt;&lt;tbody&gt;&lt;tr valign="TOP"&gt;  &lt;td width="50%"&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;URI&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: grey;"&gt;Uniform Resource Identifiers&lt;/span&gt;&lt;/i&gt;.&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;Describe all points (locations) in the information space, even&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; those that do not have a physical presence. Consist of:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;schema&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff9900;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;http&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;ftp&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;file&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;mailto&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;imap&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;,&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;https&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;…&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;schema-specific&lt;br /&gt;part:&lt;/span&gt; &lt;span style="color: #cccccc;"&gt;all that goes behind the colon&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;URL&lt;/span&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: grey;"&gt;Uniform Resource Locators&lt;/span&gt;&lt;/i&gt;.&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;Type of URI. Consist of:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;schema:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;protocol, e.g.,&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;http&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;server:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;e.g., www.w3.org&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;path&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;e.g., projects/project1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;URN&lt;/span&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: grey;"&gt;Uniform Resource Names&lt;/span&gt;&lt;/i&gt;. &lt;span style="color: #cccccc;"&gt;Type&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; of URI. They are pointers to resources, but without reference to&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; particular locations.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;schema&lt;/span&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;urn&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;XML&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: grey;"&gt;Extensible Markup Language&lt;/span&gt;&lt;/i&gt;.&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;Framework for defining markup languages. Inherently&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; internationalized &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #cccccc; font-family: Wingdings;"&gt;&lt;/span&gt;&lt;span style="color: #cccccc; font-family: Arial,sans-serif;"&gt;&lt;br /&gt;all xml documents are written in the Unicode alphabet.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;Root node:&lt;/span&gt; &lt;span style="color: #cccccc;"&gt;the tag (conceptual object) at the top.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;Root element:&lt;/span&gt; &lt;span style="color: #cccccc;"&gt;all the information contained in the children of the root node.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;Text node:&lt;/span&gt; &lt;span style="color: #cccccc;"&gt;node that contain only text. It has no children &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: red;"&gt;(it’s the text itself, not the tags&lt;br /&gt;it’s between) &lt;/span&gt;&lt;span style="color: #cccccc;"&gt;This text is also called character&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; data.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;Attribute node:&lt;/span&gt; &lt;span style="color: #cccccc;"&gt;pair or name and value associated with an element&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; node&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: red;"&gt;(not only tags are nodes)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;Element:&lt;/span&gt;&lt;span style="color: #cccccc;"&gt; logical grouping of&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; the information represented by its descendants.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;XML parser&lt;/span&gt;: &lt;span style="color: #cccccc;"&gt;tool that constructs a tree representation of a textual XML document.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;XML serializer&lt;/span&gt;: &lt;span style="color: #cccccc;"&gt;tool that constructs an XML document from a tree.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;Namespaces&lt;/span&gt;: &lt;span style="color: #cccccc;"&gt;used for solving name clashes. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="color: #cccccc;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: 85%;"&gt;They can be given shorter names using namespace declaration, e. g.:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="color: #cccccc;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&amp;lt;… xmls: foo=“http://www.w3.org/pjts”&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="color: #cccccc;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: 85%;"&gt;URLs are used because they are unique (an only the owner of a domain would use it).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;td width="50%"&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;XPath&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;language for navigating xml trees.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="color: #cccccc;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: 85%;"&gt;An XPath location path (expression) evaluates to a sequence of nodes of a specific tree. It is built as a sequence of location steps, each step separated from the previous one by /. Each step consists of:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Axis&lt;/span&gt;:&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;keyword that indicates the node or nodes we are looking for in&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; relation to the node test. &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #cccccc; font-family: Courier New,monospace;"&gt;child,&lt;br /&gt;descendant, parent, attribute, …&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Node&lt;br /&gt;test&lt;/span&gt;:&lt;span style="color: #cccccc;"&gt; specifies a node by name or a type of nodes by their&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; properties.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: #cccccc;"&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;text()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;comment()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: 85%;"&gt;the name of the node (the tag)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="font-size: 85%;"&gt;node()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;…&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Predicates&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;(not necessary): Boolean conditions for selecting, or not, the&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; nodes. Written in &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #cccccc; font-family: Courier New,monospace;"&gt;[…]&lt;/span&gt;&lt;span style="color: #cccccc; font-family: Arial,sans-serif;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;Schema&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;formal definition of the syntax of an XML-based language.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;Schema language&lt;/span&gt;: &lt;span style="color: #cccccc;"&gt;formal language for expressing schemas.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;Schema processor&lt;/span&gt;: &lt;span style="color: #cccccc;"&gt;implementation of a schema language that checks if a document is valid (syntactically correct according to the&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; schema).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="color: #cccccc;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;u&gt;Schema languages&lt;/u&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;DTD&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: #999999;"&gt;Document Type Definition&lt;/span&gt;&lt;/i&gt;.&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;First schema language. Not written in XML. Does not support namespaces.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;Document type declarations&lt;/span&gt;: &lt;span style="color: #cccccc;"&gt;reference to the DTD schema:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="western" style="margin-left: 0.18in;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;b&gt;&lt;doctype&gt;&lt;/doctype&gt;&lt;/b&gt;&lt;i&gt; root&lt;/i&gt; &lt;b&gt;SYSTEM&lt;/b&gt; “&lt;i&gt;URI&lt;/i&gt;”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="color: #333399;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: 85%;"&gt;Element declarations&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;b&gt;&lt;br /&gt;&lt;i&gt;element-name&lt;/i&gt; &lt;i&gt;content-model&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="western" style="margin-left: 0.18in;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #cccccc;"&gt;Content models:&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;b&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;EMPTY&lt;/span&gt;,&lt;span style="color: #ff9900;"&gt;ANY&lt;/span&gt;,&lt;span style="color: #ff9900;"&gt;#PCDATA&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;   &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="color: #333399;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;Attribute list declarations&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;&lt;i&gt;element-name attribute- definitions&lt;/i&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;   &lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;   &lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;b&gt;   &lt;/b&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western" style="color: #cccccc;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;&lt;b&gt;Each attribute definition has the form:&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;b&gt;&lt;b&gt;   &lt;/b&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;b&gt;   &lt;/b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="western" style="margin-left: 0.3in;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;&lt;b&gt;&lt;i&gt;att-name&lt;br /&gt;att-type att-declaration&lt;/i&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;b&gt;&lt;b&gt;   &lt;/b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="western" style="margin-left: 0.3in;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="color: #cccccc; font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;b&gt;Attribute types: &lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;b&gt;&lt;b&gt;CDATA&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;b&gt;,&lt;span style="color: #ff9900;"&gt;NMTOKEN&lt;/span&gt;,&lt;span style="color: #ff9900;"&gt;ID&lt;/span&gt;,&lt;span style="color: #ff9900;"&gt;IDREF&lt;/span&gt;.&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;b&gt;&lt;b&gt;   &lt;/b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="western" style="margin-left: 0.3in;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="color: #cccccc; font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;b&gt;Declaration types: &lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;b&gt;&lt;b&gt;#REQUIRED&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;b&gt;,&lt;span style="color: #ff9900;"&gt; #IMPLIED&lt;/span&gt;,&lt;span style="color: #ff9900;"&gt; “&lt;i&gt;value&lt;/i&gt;”&lt;/span&gt;,&lt;span style="color: #ff9900;"&gt; #FIXED “&lt;i&gt;value&lt;/i&gt;”&lt;/span&gt;.&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;b&gt;&lt;b&gt;  &lt;/b&gt;&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt; &lt;td width="50%"&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;XML Schema&lt;/span&gt;&lt;/b&gt;:&lt;span style="color: #cccccc;"&gt; official schema language written in Xml. Main constructs:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Simple type definition&lt;/span&gt;: &lt;span style="color: #cccccc;"&gt;describes text without markup (character&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; data + attributes).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="western" style="margin-left: 0.38in;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;xsd:simpletype name="”…”"&gt;&lt;/xsd:simpletype&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Complex type definition&lt;/span&gt;: &lt;span style="color: #cccccc;"&gt;describes text that may contain markup (elements + attributes + character data).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="western" style="margin-left: 0.38in;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;xsd:complextype name="”…”"&gt;&lt;/xsd:complextype&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Element declarations&lt;/span&gt;: &lt;span style="color: #cccccc;"&gt;associates an element name with a simple&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; type or with a complex type.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="western" style="margin-left: 0.38in;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;xsd:element&gt;&lt;/xsd:element&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Attribute declaration&lt;/span&gt;:&lt;span style="color: #cccccc;"&gt; associates an attribute name with a simple&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; type.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="western" style="margin-left: 0.38in;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;xsd:attribute&gt;&lt;/xsd:attribute&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-left: 0.25in;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="color: #cccccc; font-family: Arial,sans-serif;"&gt;- The root element contains an attribute &lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;targetNamespace&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt; &lt;span style="color: #cccccc;"&gt;that indicates the namespace being described.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="margin-left: 0.25in;"&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #cccccc;"&gt;- A document can point to the schema with a&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;schemaLocation&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt; &lt;span style="color: #cccccc;"&gt;attribute in the root.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;XSL&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: #999999;"&gt;Extensible Stylesheet Language&lt;/span&gt;&lt;/i&gt;.&lt;br /&gt;&lt;span style="color: #cccccc;"&gt;Language for specifying presentations of XML documents. Components:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;XSLT&lt;/span&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: #999999;"&gt;XSL Transformations&lt;/span&gt;&lt;/i&gt;. &lt;span style="color: #cccccc;"&gt;Language&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; for specifying transformations between XML languages.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;XSL-FO&lt;/span&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: #999999;"&gt;XSL Formatting Objects&lt;/span&gt;&lt;/i&gt;.&lt;br /&gt;&lt;span style="color: #cccccc;"&gt; Target language for specifying physical layout.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;XQuery&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;span style="color: #cccccc;"&gt; language to query XML documents in a similar way to SQL. It’s an extension of XPath.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="western" style="margin-left: 0.13in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt; &lt;td width="50%"&gt;&lt;br /&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: navy;"&gt;DOM&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: #999999;"&gt;Document Object Model&lt;/span&gt;&lt;/i&gt;. &lt;span style="color: #cccccc;"&gt;API&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; that allow us to parse, navigate, manipulate, and serialize a XML document. It’s common to all languages and thus very general and complex.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Methods&lt;/span&gt;:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;parentNode,&lt;br /&gt;previousSibling, nextSibling, firstChild, childNodes,&lt;br /&gt;getAttributeNode, attributes&lt;/span&gt;…&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Interfaces&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;:&lt;br /&gt;&lt;span style="color: #ff9900;"&gt;Node, Element, Attr, Text, DocumentType,&lt;br /&gt;Notation, Entity, EntityReference, CharacterData,&lt;br /&gt;ProcessingInstruction, CDATASection, Comment, NodeList,&lt;br /&gt;NamedNodeMap&lt;/span&gt;…&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: navy;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: navy;"&gt;JDOM&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;span style="color: #cccccc;"&gt; DOM for Java. It’s an API for XML that is specific to Java, and thus easier to use. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Interfaces&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt; Parent&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Abstract classes&lt;/span&gt;: &lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;Content&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Classes&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt; Comment, DocType, Element, EntityRef, ProcessingInstruction, Text, Document, CDATA.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: magenta;"&gt;Methods&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;br /&gt;getContent, getNamespace, getDescendants, getAttributeValue,&lt;br /&gt;setAttribute, getChildren, getName&lt;/span&gt;…&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="color: #cccccc;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: 85%;"&gt;JDOM has built in support for evaluating XPath expressions and for performing XSLT transformations.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="color: #cccccc;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;JDOM doesn’t have its own parser, so it uses the DOM parser or the SAX parser.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;SAX&lt;/span&gt;&lt;/b&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: #999999;"&gt;Simple API for XML&lt;/span&gt;&lt;/i&gt;. &lt;span style="color: #cccccc;"&gt;Framework&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; for streaming XML. It views an XML document as a stream of events.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western" style="color: #cccccc;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="font-size: 85%;"&gt;It calls the appropriate method when it reads through an event (document starts, start tag encountered…).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="color: #cccccc; font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;The&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="color: #ff9900;"&gt;&lt;span style="color: #cccccc;"&gt; &lt;/span&gt;DefaultHandler&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt; &lt;span style="color: #cccccc;"&gt;class provides empty implementations of all possible event handlers. We must extend it and override its methods.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;SAX Filters&lt;/span&gt;:&lt;span style="color: #cccccc;"&gt; events handlers that may act upon the various&lt;/span&gt;&lt;span style="color: #cccccc;"&gt; events and send them on to a parent handler (similar to UNIX&lt;/span&gt;&lt;br style="color: #cccccc;" /&gt;&lt;span style="color: #cccccc;"&gt; pipes).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #333399;"&gt;XML Data Binding&lt;/span&gt;&lt;/b&gt;:&lt;span style="color: #cccccc;"&gt; mapping schemas into collections of classes = generating a group of classes from a schema.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="western"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: Arial,sans-serif;"&gt;&lt;span style="color: #333399;"&gt;JAXB&lt;/span&gt;:&lt;br /&gt;&lt;i&gt;&lt;span style="color: #999999;"&gt;Java Architecture for XML Binding&lt;/span&gt;&lt;/i&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-2906091811995273578?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/2906091811995273578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2010/07/xmlcheatsheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/2906091811995273578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/2906091811995273578'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2010/07/xmlcheatsheet.html' title='XMLCheatSheet'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-8333233877608174566</id><published>2010-07-17T14:19:00.000-07:00</published><updated>2011-07-02T16:25:21.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='sorting'/><title type='text'>Sorting Algorithms</title><content type='html'>&lt;div style="color: lime;"&gt;&lt;b&gt;Bubble Sort&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;On each pass, successive neighboring pairs are compared. If a  pair is in decreasing order, its values are swapped.&lt;br /&gt;&lt;br /&gt;This process continues until all  elements are sorted.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;Best-time: O(n)&lt;/span&gt; (1 pass only –  if they are all ordered)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;Worst-time: O(n^2) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Selection Sort&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Finds the largest number in the list  and places it last. Then it finds the second largest and places it next  to the last, and so on.&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: orange;"&gt;Worst-time: O(n^2)&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Insertion Sort&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;From left to right it identifies a  list with a number of elements that increases by one in each pass. It  starts with the first element in the list.&lt;br /&gt;&lt;br /&gt;It looks at the new element it’s  considering and inserts it in the right place in the imaginary sublist.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;Worst-time:  O(n^2)&lt;/div&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Merge Sort&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Divides the array into two and applies merge sort recursively.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;Average-time:  O(n log(n))&lt;/div&gt;&lt;div style="color: orange;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: orange;"&gt;Worst-time: O(n log(n))&lt;/div&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Quick Sort&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;First the algorithm selects an  element in the array to use as pivot.&lt;br /&gt;&lt;br /&gt;Then it divides the array into two  parts such that all the elements in the first part are less than or  equal to the pivot and all the elements in the second part are greater  than the pivot.&lt;br /&gt;&lt;br /&gt;To do  this it searches for the first element from the left forward that is  greater than the pivot, then searches for the first element from the  right backwards that is less than or equal to the pivot. Then it swaps  them.&lt;br /&gt;&lt;br /&gt;Then it does the same thing in each  halve.&lt;br /&gt;&lt;br /&gt;It does this in the array itself, so  there’s not need to merge them afterwards.&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: orange;"&gt;Average-time:  O(n log(n))&lt;/div&gt;&lt;div style="color: orange;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: orange;"&gt;Worst-time: O(n^2)&lt;/div&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Heap Sort&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;1. Creates a heap object&lt;br /&gt;&lt;br /&gt;2. Add all elements to the heap &lt;br /&gt;&lt;br /&gt;3. Removes all elements form the heap&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: orange;"&gt;Time:  O(n log(n))&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Bucket Sort&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Each bucket holds the elements with the same key value.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: lime;"&gt;&lt;b&gt;Radix Sort&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Divides the keys into subgroups  based on their radix position.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-8333233877608174566?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/8333233877608174566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2010/07/sorting-algorithms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/8333233877608174566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/8333233877608174566'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2010/07/sorting-algorithms.html' title='Sorting Algorithms'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-5057483718216654465</id><published>2010-07-17T14:16:00.000-07:00</published><updated>2011-07-08T13:16:42.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Emacs Basic Commands</title><content type='html'>&lt;div style="color: #cccccc;"&gt;&lt;span id="internal-source-marker_0.434060321127952" style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-g&lt;/span&gt;            cancel  partially typed or accidental command&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;CTRL-x u&lt;/span&gt;    undo the last change&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-x C-s&lt;/span&gt;       save-buffer&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-x  C-c&lt;/span&gt;      save-buffers-kill-emacs&lt;/span&gt;&lt;/div&gt;&lt;div style="color: lime;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;======&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;CTRL-k&lt;/span&gt;     Copy line  to end    (kill line to end)&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;CTRL-y&lt;/span&gt;    re-insert ('yank') the last text  that was killed&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;div style="color: lime;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;======&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-x 2&lt;/span&gt;        Split the  selected window into two windows, one above the other  (split-window-vertically).&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-x 5&lt;/span&gt;        Split the selected window into  two windows positioned side by side (split-window-horizontally).&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;div style="color: lime;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;======&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-x o&lt;/span&gt;        Select  another window (other-window). That is o, not zero.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-M-v&lt;/span&gt;        Scroll  the next window (scroll-other-window).&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-x C-f&lt;/span&gt;          open a new file&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;div style="color: lime;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;======&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-v&lt;/span&gt;                scroll-down&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;ESC-v&lt;/span&gt;           scroll-up&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;ESC &amp;lt;&lt;/span&gt; &lt;/span&gt;&lt;span id="internal-source-marker_0.07647958549135037" style="background-color: transparent; color: #cccccc; font-family: Arial; font-size: 12pt; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;beginning-of-buffer&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;ESC &amp;gt;&lt;/span&gt;           end-of-buffer&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;div style="color: lime;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;======&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-s&lt;/span&gt;        Incremental  search forward (isearch-forward).&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #cccccc;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 12pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="color: magenta;"&gt;C-r&lt;/span&gt;        Incremental search backward  (isearch-backward).&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-5057483718216654465?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/5057483718216654465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2010/07/emacs-basic-commands.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/5057483718216654465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/5057483718216654465'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2010/07/emacs-basic-commands.html' title='Emacs Basic Commands'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-1607640562855419509</id><published>2010-07-17T14:09:00.000-07:00</published><updated>2011-06-28T15:33:11.295-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Enterprise Design Patterns</title><content type='html'>DOMAIN  LOGIC&lt;br /&gt;Transaction  Script: organizes business logic by  procedures where each procedure handles a single request for the  presentation&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Domain logic primarily organized by the transactions that you  carry out with the system&lt;/li&gt;&lt;li&gt;You can either have several transaction  scripts in one class, or each in its own class (using the Command  pattern: a command object encapsulates an action and its parameters)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Domain Model: an object model of the domain that incorporates both  behavior and data&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A simple domain model looks very much like  the database design with mostly one domain object for each DB  table&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Table  Module: a single instance that handles the  business logic for all rows in a database table or view&lt;br /&gt;&lt;br /&gt;It organizes domain logic  with one &lt;b&gt;class&lt;/b&gt; per table in the database, and a single instance  of a class contains the various procedures that will act on data&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The primary distinction  with “Domain Model” is that, if you have many orders, a “Domain Model”  will have one order object per order while a “Table Module” will have  one object to handle all orders&lt;br /&gt;&lt;br /&gt;Table Module has no notion of an identity  for the objects it’s working with&lt;br /&gt;&lt;br /&gt;Table Module may include queries as factory  methods. The alternative is a “Table Data Gateway”&lt;br /&gt;&lt;br /&gt;Service Layer: defines an application’s boundary with a layer of  services that establishes a set of available operations and coordinates  the application’s response in each operation&lt;br /&gt;&lt;br /&gt;A service layer defines an  application’s boundary and its set of available operations from the  perspective of interfacing client layers&lt;br /&gt;&lt;br /&gt;You need it in applications with more than  one kind of client of its business logic.&lt;br /&gt;&lt;br /&gt;MAPPING TO  RELATIONAL DATABASES&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Gateway:&lt;/b&gt; an  object that encapsulates access to an external system or resource&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Row  Data Gateway:&lt;/b&gt; an object that acts as a Gateway  to a single record in a data source. There is one instance per row&lt;br /&gt;&lt;br /&gt;- You have an instance for  each row that’s returned by a query&lt;br /&gt;&lt;br /&gt;- You face the issue of  where to put the find operations. It often makes sense to have separate  finder objects&lt;br /&gt;&lt;br /&gt;- It’s sometimes difficult to tell the difference  between a “Row Data Gateway” and an “Active Record” =&amp;gt; if there’s any  domain logic present, then it’s an “Active Record”&lt;br /&gt;&lt;br /&gt;- Most  often used with “Transaction Script”&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Table Data Gateway:&lt;/b&gt; an object that acts as a Gateway to a database table. One instance handles all the rows in the table&lt;br /&gt;&lt;br /&gt;- Single object for each  table in the DB =&amp;gt; if you use recordset&lt;br /&gt;&lt;br /&gt;- Goes very well with table  module&lt;br /&gt;&lt;br /&gt;(Record Set: &lt;i&gt;“A recordset  is a data structure that consists of a group of database records, and  can either come from a base table or as the result of a query to the  table.”)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Active Record:&lt;/b&gt; an object that wraps a row in a database table or view,  encapsulates the database access, and adds domain logic on that data&lt;br /&gt;&lt;br /&gt;It can  have static find methods.&lt;br /&gt;&lt;br /&gt;Any business logic sits directly in it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Data Mapper: &lt;/b&gt;A  layer of mappers that moves data between objects and a database while  keeping them independent of each other and the mapper itself&lt;br /&gt;&lt;br /&gt;- Makes  your indirection layer entirely responsible for the mapping between  domain objects and database tables&lt;br /&gt;&lt;br /&gt;- It uses “Identity Map” to see if a class  is already loaded.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;b&gt;Summary&lt;/b&gt;: Gateway not  recommended. If domain logic is simple and there’s a close  correspondence between classes and tables =&amp;gt;Active Record. Something more complicated &amp;gt;  Data Mapper.&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;OBJECT-RELATIONAL  BEHAVIORAL PATTERNS&lt;br /&gt;&lt;br /&gt;As you read objects and modify them, you  have to ensure that the DB state you are working with stays consistent.  If you read some objects, it’s important to ensure that the reading is  isolated so that no other process changes any of the objects you’ve read  while you are working on them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Unit of Work:&lt;/b&gt; maintains  a list of objects affected by a business transaction and coordinates  the writing out of changes and the resolution of concurrency problems&lt;br /&gt;&lt;br /&gt;As soon as you start doing something that  may affect a database, you create a Unit of Work to keep track of  changes.&lt;br /&gt;&lt;br /&gt;Keeps track of all objects  read form the database, together will all objects modified in any way.  It also handles how updates are made to the DB. Instead of the app  programmer invoking explicit save methods, the programmer tells the unit  of work to commit. The unit of work is like a controller of the  database mapping.&lt;br /&gt;&lt;br /&gt;A Unit of Work keeps track  of everything you do during a business transaction that can affect the  database. When you’re done, it figures out everything hat needs to be  done to alter the database as a result of your work.&lt;br /&gt;&lt;br /&gt;- With &lt;b&gt;caller  registration&lt;/b&gt;, the user of an object has to remember to register the  object with the Unit of work for changes&lt;br /&gt;&lt;br /&gt;- With &lt;b&gt;object  registration&lt;/b&gt;, loading an object form the database registers the  object as clean; the setting methods register the object as dirty. (The  usual trick here is to place registration methods in object methods)&lt;br /&gt;&lt;br /&gt;- With a  &lt;b&gt;unit of work controller&lt;/b&gt;, rather than marking objects as dirty,  the Unit of Work takes a copy at read time and then compares the object  at commit time&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Identity Map:&lt;/b&gt; ensures that each object gets loaded only once by  keeping every loaded object in a map. Looks up objects using the map  when referring to them&lt;br /&gt;&lt;br /&gt;In a simple case, with an isomorphic schema,  you’ll have one map per DB table.&lt;br /&gt;&lt;br /&gt;You need to ensure that each session gets  its own instance that’s isolated from any other session instance. Thus  you need to put the identity map on a session-specific object.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lazy Load:&lt;/b&gt; an  object that doesn’t contain all of the data you need but knows how to  get it&lt;br /&gt;&lt;br /&gt;For loading data form a DB  into memory it’s handy to design things so that as you load an object of  interest you also load the objects that are related to it. However,  loading one object can have the effect of loading a huge number of  related objects. A Lazy Load interrupts this loading process, leaving a  marker in the object structure so that if the data is needed it can be  loaded only when it is used.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;- Lazy initialization&lt;/b&gt;: every access to the  field checks first to see if it’s null. If so, it calculates the value  of the field before returning the field. (No good if null is a valid  value for that field)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;- Virtual proxy&lt;/b&gt;: it’s an object that looks  like the object that should be in the field, but doesn’t actually  contain anything. Only when one of its methods is called does it load  the correct object from the DB&lt;br /&gt;&lt;br /&gt;&lt;b&gt;- Value holder&lt;/b&gt;:  object that wraps some other object. To get the underlying object you  ask the value holder for its value, but only on the first access does it  pull the data from the DB&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;Ghost&lt;/b&gt;: is the real object in a  partial state. When you load the object from the DB it contains just its  ID. Whenever you try to access a field it loads its full state&lt;br /&gt;&lt;br /&gt;===============&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dependency  Injection&lt;/b&gt; (DI) in computer programming refers to the process of  supplying an external dependency to a software component. It is a  specific form of inversion of control where the concern being inverted  is the process of obtaining the needed dependency.&lt;br /&gt;&lt;br /&gt;When  the dependency injection technique is used to decouple high-level  modules from low-level services, the resulting design guideline is  called the Dependency inversion principle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dependency  lookup&lt;/b&gt;: We avoid hard-coding the names of  classes on which we depend into our code because static binding severely  limits our options for how the software is configured as it runs.  Instead, we hard-code that name of a "component broker" that returns to  us a ready to use object. The component broker provides some means for  the client software or perhaps a system configuration manager to tell  the SUT in question what objects to use for each component request.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-1607640562855419509?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/1607640562855419509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2010/07/enterprise-design-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/1607640562855419509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/1607640562855419509'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2010/07/enterprise-design-patterns.html' title='Enterprise Design Patterns'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-7228809956231542406</id><published>2010-07-17T14:02:00.000-07:00</published><updated>2010-07-17T14:07:03.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tcp'/><category scheme='http://www.blogger.com/atom/ns#' term='ip'/><category scheme='http://www.blogger.com/atom/ns#' term='subnetting'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Networking</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Subnetting&lt;/span&gt;&lt;br /&gt;It’s objective is to reduce the total number of network numbers that are assigned.&lt;br /&gt;&lt;br /&gt;The idea is to take one IP address and allocate in it several physical networks, now referred to as subnets. The subnets should be close to each other, because at a distant point in the Internet, they will all look like a single network, having only one network number between them.&lt;br /&gt;&lt;br /&gt;They will all be part of the same big network, but inside they are a bunch of smaller networks. They all actually share the big network IP, but the mask allows us to identify them as subnets.&lt;br /&gt;&lt;br /&gt;Now we need a subnet mask that will be used by a router to forward to the right subnet. The forwarding table will now contain &lt;networknumber, nexthop=""&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CIDR: Classless InterDomain Routing&lt;/span&gt;&lt;br /&gt;The problem with subnetting is that the address within which we have subnets has to be big, and it probably has inefficiencies. To solve these inefficiencies we would have to give each subnet its own lower class IP address. But then the backbone router would need to have one entry for each (with subnetting, all the subnets look like one net from the distance, and it’s the router at the entry the one in charge of sending a packet to the right subnet).&lt;br /&gt;&lt;br /&gt;To avoid having inefficiencies (and running out of IP addresses) and having too many entries in the backbone router’s table, CIDR lets us use a single entry in a table for a lot of different networks.&lt;br /&gt;&lt;br /&gt;If we have an AS with 16 class C networks, instead of handing out 16 class Cs at random, we give it 16 continuous class C addresses. They will now have the same top 20 bits. This can be the network number for all of them.&lt;br /&gt;&lt;br /&gt;We need a new notation; the 20 bits prefix for all the networks 192.4.16 though 192.4.31 is represented as 192.4.16/20 (the 20 bits that define the network). To represent a single class C (24 bits long) we would sue 192.4.16/24.&lt;br /&gt;&lt;br /&gt;Longest Match rule&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BGP: Border Gateway Protocol&lt;/span&gt;&lt;br /&gt;BGP assumes that the Internet is an arbitrarily connected set of ASs (Autonomous Systems). The goals of BGP are first to find some path, second to make sure the path is compliant with the policies of the various ASs.&lt;br /&gt;&lt;br /&gt;BGP advertises complete paths as an enumerated list of ASs to reach a particular network.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remote Procedure Call&lt;/span&gt;&lt;br /&gt;A client sends a request message to a server, and the server responds with a reply message, with the client blocking while waiting.&lt;br /&gt;&lt;br /&gt;Functions that must be performed by any RPC protocol (and that distinguish it from UDP?):&lt;br /&gt;&lt;br /&gt;   * Provide a name space for uniquely identifying the procedure to be called (could be implemented by defining a set of fields in the request message format)&lt;br /&gt;&lt;br /&gt;   * Match each reply message to the corresponding request message (implemented by uniquely identifying request-replies pairs using a message ID field)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP Congestion Control&lt;/span&gt;&lt;br /&gt;The idea is for each source to determine how much capacity is available in the network. TCP makes use of three mechanisms for this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;   1. Additive Increase/Multiplicative Decrease&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It uses a new variable: Congestion Window (cwnd)&lt;br /&gt;&lt;br /&gt;   * Additive Increase: each time we get an ACK we increment the cwnd (by 1, for example)&lt;br /&gt;   * Multiplicative Decrease: each time a timeout occurs we cut cwnd in half&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;2. Slow Start&lt;/span&gt; (slow in comparison with initial TCP behavior, not additive increase)&lt;br /&gt;&lt;br /&gt;Increases the cwnd rapidly from a cold start (exponentially, rather than linearly). Still uses multiplicative decrease on timeout.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;   3. Fast Retransmit and Fast Recovery&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   * &lt;span style="font-weight: bold;"&gt;Fast Retransmit&lt;/span&gt;: when the receiver gets a packet out of order – earlier data did not arrive – it resends the same ACK that it sent last time. After 3 duplicate ACKs, the sender retransmits the packet.&lt;br /&gt;&lt;br /&gt;   * &lt;span style="font-weight: bold;"&gt;Fast Recovery&lt;/span&gt;: removes the slow start phase that happens between when fast retransmit detects a lost packet and additive increase begins. Instead of starting from 1 when a timeout occurs, it starts by the last cwnd divided by 2.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP Tahoe&lt;/span&gt;&lt;br /&gt;Includes all the mentioned congestion control mechanisms, except fast recovery.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP Reno&lt;/span&gt;&lt;br /&gt;Includes all of them, plus an optimization known as header prediction (optimizing for the common case that segments arrive in order).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TCP Vegas&lt;/span&gt;&lt;br /&gt;The end hosts try to predict congestion by looking at changes in the sending rate. It compares the measured throughput rate with the expected one.&lt;/networknumber,&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-7228809956231542406?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/7228809956231542406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2010/07/networking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/7228809956231542406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/7228809956231542406'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2010/07/networking.html' title='Networking'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-8827488080995320089</id><published>2010-07-17T13:48:00.000-07:00</published><updated>2011-07-01T17:06:38.421-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='curl'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Transfer JSON encoded files in PHP with CURL</title><content type='html'>&lt;b&gt;&lt;u&gt;CLIENT&lt;/u&gt;&lt;/b&gt; (makes  request)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How do we transform a PHP object into JSON?&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$doc = json_encode($request)&lt;/span&gt; -&amp;gt; returns a string containing the JSON  representation of &lt;i&gt;$request&lt;/i&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How do we use the POST  method to reach a page in a different server (plus there is no form in  the file that builds the Json file)?&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; We  use &lt;b style="color: #6aa84f;"&gt;CURL&lt;/b&gt; to transfer the file using POST  (POST is defined in the options)&lt;br /&gt;&lt;div style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curl_setopt($curl_handle, CURLOPT_POST, TRUE);&lt;/div&gt;&lt;div style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curl_setopt($curl_handle,  CURLOPT_POSTFIELDS, $doc);&lt;/div&gt;&lt;ul&gt;&lt;li&gt;How do we get the response that the  server returns (saying if the request was successful)&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; When we execute the transfer with cURL we get  a response:&lt;br /&gt;&lt;div style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $buffer = curl_exec($curl_handle);&lt;/div&gt;&lt;div style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response =  json_decode($buffer);&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Why is the response a  JSON doc? --&amp;gt; Because that’s how the server built it&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Steps:&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Create the object  (associative array) in PHP&lt;/li&gt;&lt;li&gt;Encode it into a JSON document:&amp;nbsp;&amp;nbsp; &lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$doc =  json_encode($request);&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Transmit it using cURL:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$buffer =  curl_exec($curl_handle);&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;u&gt;SERVER&lt;/u&gt;  (processes the request, returns response)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Since we don’t have  the $_SERVER variable, how do we get the file that is being transferred  by cURL?&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; We use &lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$doc =  file_get_contents(‘php://input’)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;php://input&lt;/span&gt; allows you to read raw POST data &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;file_get_contents&lt;/span&gt; reads an entire file into a string&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;How do transform the  string into something that we can process with PHP?&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;json_decode($doc)&lt;/span&gt; takes a JSON encoded string and converts it into a PHP  variable&lt;ul&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;How do we transmit the  response: &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: magenta; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;echo json_encode($response);&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-8827488080995320089?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/8827488080995320089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2010/07/json-in-php.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/8827488080995320089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/8827488080995320089'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2010/07/json-in-php.html' title='Transfer JSON encoded files in PHP with CURL'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-3004234359450072529</id><published>2010-07-17T06:36:00.000-07:00</published><updated>2011-07-08T13:19:26.337-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>What’s different in JavaScript?</title><content type='html'>1. It is case sensitive.&lt;br /&gt;&lt;br /&gt;2. JavaScript is a loosely typed language (we don’t need to define the type of the variables).&lt;br /&gt;&lt;br /&gt;3. Variables are declared with the keyword “var”.&lt;br /&gt;&lt;br /&gt;4. Unlike C, C++, and Java, JavaScript does not have block-level scope. All variables declared in a function, no matter where, are defined throughout the function.&lt;br /&gt;&lt;div style="color: magenta;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;span style="font-family: courier new;"&gt;   var scope = “global”;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;span style="font-family: courier new;"&gt;   function f(){&lt;/span&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;       alert(scope); //Displays “undefined”, not “global”*&lt;/span&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;       var scope = “local”;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;       alert(scope); //Displays “local”&lt;/span&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;span style="font-family: courier new;"&gt;  {&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;5. When you declare a global variable you are actually doing is defining a property of the global object.&lt;br /&gt;&lt;br /&gt;6. In client-side JS, the window object serves as the global object.&lt;br /&gt;&lt;br /&gt;7. Objects map property names to arbitrary property values&lt;br /&gt;&lt;br /&gt;8. In JavaScript, a function is a special kind of object that has executable code associated with it. Since functions are objects, they have properties and methods.&lt;br /&gt;&lt;br /&gt;9. JavaScript supports function literals. They are just like other function, except that they do not have a name. They can appear within other JavaScript functions:&lt;br /&gt;&lt;div style="color: magenta;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;span style="font-family: courier new;"&gt;    var square = function(x) { return x*x; }&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;10. Functions are not only syntax, but also data, which means that they can be assigned to variables, stored in the properties of objects or the elements of arrays, returned from functions, passes as arguments to functions, etc.&lt;br /&gt;&lt;br /&gt;Functions can be assigned to an object’s properties. Example:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #000099; font-family: courier new;"&gt;  &lt;span style="color: magenta;"&gt;var dog;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: magenta;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;span style="font-family: courier new;"&gt;  dog.color = function() { … }&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;In fact, a method is nothing more than a function that is stored in a property of an object, and invoked through that object.&lt;br /&gt;&lt;br /&gt;When a function is invoked as a function rather than as a method, the “this” keyword refers to the global object.&lt;br /&gt;&lt;br /&gt;11. JS functions can be written so that they work with any number of arguments (p. 129).&lt;br /&gt;&lt;br /&gt;12. Functions run in the scope in which they are defined, not the scope from which they are executed (p. 141).&lt;br /&gt;&lt;br /&gt;13. Functions are a combination of code to be executed and the scope in which to execute them. This is known as “closure”.&lt;br /&gt;&lt;br /&gt;14. JS is a true object-oriented language that uses prototype-based inheritance instead of class-based inheritance.&lt;br /&gt;&lt;br /&gt;15. Objects in JS may have ant number of properties, and properties may be dynamically added to an object.&lt;br /&gt;&lt;br /&gt;16. Objects are usually created with the keyword “new”.&lt;br /&gt;&lt;br /&gt;17. It supports an object literal syntax that allows you to create an object and specify its properties like this (no constructor needed):&lt;br /&gt;&lt;div style="color: magenta;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: magenta;"&gt;&lt;span style="font-family: courier new;"&gt; var point = {x:3, y:4};&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;18. Primitive types are manipulated by value, and reference types (objects – including arrays and functions) are manipulated by reference.&lt;br /&gt;&lt;br /&gt;19. Strings are immutable.&lt;br /&gt;&lt;br /&gt;20. The power of client-side JavaScript is that it has access to the contents of the HTML document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-3004234359450072529?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/3004234359450072529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2010/07/whats-different-in-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/3004234359450072529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/3004234359450072529'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2010/07/whats-different-in-javascript.html' title='What’s different in JavaScript?'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-6130486229980238178</id><published>2010-07-14T09:25:00.000-07:00</published><updated>2010-07-17T13:37:23.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='data structures'/><category scheme='http://www.blogger.com/atom/ns#' term='collections'/><title type='text'>Java Collections Cheatsheet</title><content type='html'>&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Main operations&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Insert, Search, Delete,  Iterate (visit all the items in a collection).&lt;/span&gt;&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;Java  Collections Framework provides three major types of collections: set,  list and map.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;They are defined in the  interface Set, List and Map.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: no repeated elements.&lt;br /&gt;&lt;b&gt;List&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: elements stored in  insertion order (but we can also insert elements anywhere in the list).&lt;br /&gt;&lt;b&gt;Map&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: stores key-value pairs.&lt;br /&gt;&lt;b&gt;Tree&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: elements stored based in  their natural order.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;CONCEPTS&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(51, 204, 204);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Array&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Only built-in structure.  Fixed size. Quick insertion (at the end). Slow search (unless we know  the element’s index). Slow deletion.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(51, 204, 204);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Stack&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Last-In First-Out (LIFO).  Slow access to other items (except last one).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(51, 204, 204);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Queue&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: First-In First-Out (FIFO).  Slow access to other items (except first one).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;(Stacks  and Queues are usually implemented by arrays or linked-lists with the  constrains of FIFO or LIFO. There is no need for a custom implementation  in the Java Collections Framework).&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(51, 204, 204);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Linked-list&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: The list contains only a  reference to the first item. Each item contains a reference to the next  one. Quick insertion (at the beginning). Slow deletion (except at the  beginning). Slow search.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(51, 204, 204);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Set&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Group of elements with &lt;b&gt;no  duplicates&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;. Usually implemented by a HashTable (=Map) where the keys have  no meaning, or a Tree.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(51, 204, 204);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Map&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: collection of key-value  pairs. Usually implemented by HashTable (Array + LinkedLists, for  example). Quick insertion. Quick search if key is known. Slow deletion.  Inefficient memory usage (good if there won’t be too many deletions).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(51, 204, 204);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Binary Tree&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Only two children per node.  The tree only contains a reference to the root (the first node). Each  node contains a reference to its left and right nodes.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(51, 204, 204);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Binary Search Tree&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: the nodes are ordered by  key value. When we insert an item, the tree looks for the right position  to insert it. Quick search, insertion, deletion (it tree is balanced).  It might become unbalance if the elements are inserted in order.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(51, 204, 204);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Red-Black Tree&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: balanced Binary Search  Tree.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;IMPLEMENTATIONS  &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;(in  Java)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;u&gt;Interfaces&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(255, 102, 0);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;Collection&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(255, 102, 0);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;List&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Collection whose elements  can be traversed in insertion order.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(255, 102, 0);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;Queue&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Collection that maintains  its elements in processing order.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(255, 102, 0);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;Set&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Collection that cannot contain duplicate  objects.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(255, 102, 0);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;SortedSet&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Set whose elements are  ordered. &lt;span style="color:red;"&gt;=&gt; Deprecated&lt;/span&gt;. Replaced by &lt;span style="color: rgb(255, 153, 0);"&gt;NavigableSet&lt;e&gt;&lt;/e&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(255, 102, 0);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;Map&lt;k, v=""&gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: Collection of key-value  pairs. Each key maps to at most one value (does not allow duplicate  keys). Both the keys and the values must be objects, so primitive values  will be wrapped.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="color: rgb(255, 102, 0);font-family:Arial;" &gt;&lt;span style="font-size:85%;"&gt;SortedMap&lt;k, v=""&gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;:  Map whose keys are ordered.&lt;span style="color:red;"&gt; =&gt; Deprecated&lt;/span&gt;.  Replaced by &lt;span style="color: rgb(255, 153, 0);"&gt;NavigableMap&lt;k, v=""&gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;u&gt;Classes&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;Implement  &lt;b&gt;List&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;LinkedList&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: elements will be traversed  in &lt;span style="color: rgb(153, 204, 0);"&gt;insertion order&lt;/span&gt;.  Elements can be accessed, added, and removed efficiently at either end  of the list (it’s a doubly linked list). It also implements Queue and  Deque.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;ArrayList&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: elements will be traversed  in &lt;span style="color: rgb(153, 204, 0);"&gt;insertion order&lt;/span&gt;.  Elements can be accessed efficiently by index (unlike in LinkedList).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;Vector&lt;e&gt;&lt;/e&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: elements will be traversed in &lt;span style="color: rgb(153, 204, 0);"&gt;insertion order&lt;/span&gt;. Resizable array. Synchronized.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;Implement &lt;b&gt;Queue &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;(elements in processing  order):&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;PriorityQueue&lt;e&gt;&lt;/e&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: elements will be accessed  according to priority order.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;ArrayDeque&lt;e&gt;&lt;/e&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: elements will be accessed  according to either FIFO or LIFO processing order. It also implements  Dequeue.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;Implement  &lt;b&gt;Set&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt; (unique elements):&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;HashSet&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: &lt;span style="color: rgb(153, 204, 0);"&gt;no particular order&lt;/span&gt;. It’s a HashTable with no  duplicates (we don’t know and don’t care about the key that maps to each  value).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;LinkedHashSet&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: + elements traversed in &lt;span style="color: rgb(153, 204, 0);"&gt;insertion order&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;TreeSet&lt;t&gt;&lt;/t&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: elements will be traversed in the order specified by the &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;color:fuchsia;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;compareTo&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt; method of the elements = &lt;span style="color: rgb(153, 204, 0);"&gt;element order&lt;/span&gt;. It uses a balanced binary tree &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span style="font-size:85%;"&gt;à&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt; all operations are  efficient. It also implements NavigableSet.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;Implement &lt;b&gt;Map&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt; (unique keys):&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul type="disc"&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;HashMap&lt;k, v=""&gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: &lt;span style="color: rgb(153, 204, 0);"&gt;no  particular order&lt;/span&gt;. HashTable where each key maps to a value (we  can retrieve both keys and values).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;LinkedHashMap&lt;k, v=""&gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: + elements will be  traversed in &lt;span style="color: rgb(153, 204, 0);"&gt;key insertion order&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;IdentityHashMap&lt;k, v=""&gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: + compares keys using &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;color:fuchsia;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;==&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;instead of the &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;color:fuchsia;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;equals&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt; method.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;HashTable&lt;k, v=""&gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: &lt;span style="color: rgb(153, 204, 0);"&gt;no  particular order&lt;/span&gt;. Synchronized.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;span style="font-size:85%;"&gt;TreeMap&lt;k, v=""&gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;: elements will be traversed in the order  specified by the &lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;compareTo&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt; method of the keys = &lt;span style="color: rgb(153, 204, 0);"&gt;key order&lt;/span&gt;. It uses a balanced  binary tree &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span style="font-size:85%;"&gt;à&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;  all operations are efficient. It also implements NavigableMap.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;If the elements have &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;color:fuchsia;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;hashCode&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt; method, they can be used as &lt;span style="color:blue;"&gt;HashSet&lt;/span&gt;  elements or &lt;span style="color:blue;"&gt;HashMap&lt;/span&gt; keys.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt;If  the elements have a &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;color:fuchsia;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;compareTo&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:85%;"&gt; method, they can be used as  &lt;span style="color:blue;"&gt;TreeSet&lt;/span&gt; elements or &lt;span style="color:blue;"&gt;TreeMap&lt;/span&gt; keys.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-6130486229980238178?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/6130486229980238178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2010/07/java-collections-cheatsheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/6130486229980238178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/6130486229980238178'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2010/07/java-collections-cheatsheet.html' title='Java Collections Cheatsheet'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3317662252513531113.post-3700275471267717418</id><published>2010-07-14T08:43:00.000-07:00</published><updated>2010-07-17T13:45:04.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patents'/><category scheme='http://www.blogger.com/atom/ns#' term='ethics'/><title type='text'>Do software patents help or harm progress?</title><content type='html'>&lt;p style="font-style: italic;"&gt;The following is a paper I wrote for my Computer Ethics class during my master's at LUC.&lt;/p&gt;&lt;p&gt;-----------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The  intention of the patent system is to protect the small inventor and  thus promote invention. Unfortunately, in the case of software patents,  it doesn't work that way. Small inventors, as we'll see, get more harm  than good from the current system of software patents, and innovation is  hampered instead of promoted.&lt;/p&gt;&lt;p&gt;The first problem in software  patents is that it is not about patenting a single implementation of an  idea (like in the Pharmaceutical industry, where a patent is granted for  one chemical formula), it is about patenting the idea itself. And the  patent grants a monopoly over the use of that idea for a long period of  time. As anybody familiar with software development knows, a program is  usually not based in any one single idea, but in a compound of ideas,  most of them already in use.&lt;/p&gt;&lt;p&gt;The second problem is the way in  which the Patent Office bases its decision for granting a patent in  this area. Firstly, they try to find out if there is any prior art  regarding the patent application. But this is a very difficult task with  software patents because a lot of prior art is in the form or books,  which are not included in their database, or it is just part of the  industry's "folklore", which means it's not written anywhere but  everybody knows about it. Secondly, they consider if the invention to be  patented is non-obvious, which is something very subjective, and  difficult to determine by a person who is not a professional in the  software industry. &lt;/p&gt;&lt;p&gt;The third problem, and maybe the most important  one, is that it is almost impossible to know how many patents may cover  a program, due to the great number of them, the obscure language they  are written on, the lack of a good classification, and the fact that  patent applications that are pending are secret (but retroactive). Small  companies can easily infringe someone else’s patent without even  knowing it. Trying to find out if a program infringes any patents is  costly, and the legal process of defending yourself when being sued for  patent infringement is event costlier. Most small and medium companies  cannot afford it.&lt;/p&gt;&lt;p&gt;If a company wants to use an idea that has been  patented from someone else, they can try to license it. The owner of  the patent does not have the obligation to license it, though, even if  he is not using it. And when the owner does license the patent, it is  usually for a sum around 5% of gross sales of the software product. This  is already a very high sum, which might make an inventor think it twice  before deciding to commercialize a software product, but if the program  needs more than one license it’s almost impossible to get it to the  market. The profit margin is gone.&lt;/p&gt;&lt;p&gt;Big companies can avoid the  hamper to progress that software patents are thanks to cross-licensing,  but small companies and inventors cannot. They don’t own a sufficiently  large number of licenses to force big companies to cross-license with  them when they want to use a patent that a large company owns. On the  other hand, it is very difficult that these small inventors can benefit  from patents, because their programs probably infringe the patents of  big companies, who can force them to cross-license with them. The only  case in with a small company cannot be forced to cross-license is when  this company is patent troll.&lt;/p&gt;&lt;p&gt;As we can see, the group that is  supposed to be benefited by the software patent system, small  inventors, is not benefited at all. They don’t have enough resources to  participate in the cross-licensing game, to confront a claim of patent  infringement, or to make an exhaustive research to make sure they don’t  infringe anybody else’s patent.&lt;/p&gt;&lt;p&gt;Big companies are more benefited  than harmed. They can force small companies to cross-license with them,  thus being able to use their ideas at a very low cost, and is not  usually a problem for them if the idea has been patented by another big  company, because they can also cross-license. Unfortunately, this does  not mean that their investment in Research and Development will be  higher; big companies already own vast patent pools that they can use as  leverage. &lt;/p&gt;&lt;p&gt;One last issue to consider is that the investment in  software development is not that high that it is necessary to protect  the idea for long time to let the creator recover the losses, or they  would not invent any more. Software development has the unique quality  of requiring very low investment to produce and commercialize. &lt;/p&gt;&lt;p&gt;There  are two groups that are clearly benefited from the current patent  system: patent trolls, and patent lawyers. Nevertheless, these are not  the groups that the system intended to protect, and their contribution  to innovation is close to null.&lt;/p&gt;&lt;p&gt;Finally, we have the general  public. This group is the biggest one, and we think it would be  benefited by the modification or suppression of the current patent  system. With the current system the offer of programs is more limited  than if patents didn't exist, and thus prices are higher. If there were  no software patents, there would be a lot more of cheaper high quality  software that would solve many of the issues that companies and  individuals face in different areas of their lives.&lt;/p&gt;&lt;p&gt;From a  utilitarian perspective we can conclude that the way in which the  current system is implemented in the US is not good. The disadvantages  are bigger than the advantages. &lt;/p&gt;&lt;p&gt;One solution would be to get rid  of software patents completely. Another solution is the one proposed by  John Preston, President and Chief Executive Officer of Continuum Energy  Technologies LLC, and Senior Lecturer at the Massachusetts Institute of  Technology, in which the patent holder has to license its patent for a  pre-established fee. This would eliminate the advantages that big  companies, with big patent pools, have over small ones.&lt;/p&gt;&lt;p&gt;There  are also efforts that seem to go in the direction of helping the  patenting process. For example, &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://googleblog.blogspot.com/2005/08/making-books-easier-to-find.html"&gt;Google  is scanning millions of books&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;, which might help in the  search of previous art. They also created a &lt;span style="color: rgb(0, 0, 255);"&gt;&lt;u&gt;&lt;a href="http://www.google.com/patents"&gt;patent search engine&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;,  which might help inventors finding those that cover their program.  Nevertheless, these are limited solutions and a change in the  administration's policies is needed to get to a system that is fair for  everybody, both big and small inventors, as well as the general public.  Our society can greatly benefit from the advancements in software, and  software has the unique qualities of zero cost of reproduction, and zero  barriers to creativity, that could make for an exponential development  of the world we live in.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3317662252513531113-3700275471267717418?l=ceiroa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ceiroa.blogspot.com/feeds/3700275471267717418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ceiroa.blogspot.com/2010/07/do-software-patents-help-or-harm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/3700275471267717418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3317662252513531113/posts/default/3700275471267717418'/><link rel='alternate' type='text/html' href='http://ceiroa.blogspot.com/2010/07/do-software-patents-help-or-harm.html' title='Do software patents help or harm progress?'/><author><name>ceiroa</name><uri>http://www.blogger.com/profile/18314843805661074573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
