<?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-911205025247203057</id><updated>2012-02-10T13:43:04.573+01:00</updated><category term='Twitter'/><category term='parametros'/><category term='User Agent'/><category term='Grub'/><category term='Anterior'/><category term='LAMPP'/><category term='Router'/><category term='Goo.gl'/><category term='Reflexiones'/><category term='Programación web'/><category term='Versiones'/><category term='Virtual Host'/><category term='Acortador'/><category term='incluide'/><category term='Ranking Navegadores'/><category term='Servidor'/><category term='Puerto 80'/><category term='PhpSysInfo'/><category term='request_uri'/><category term='Framework'/><category term='Links'/><category term='acentos'/><category term='Permisos'/><category term='Crear web'/><category term='email'/><category term='Ventana'/><category term='Asturix People'/><category term='Keepass'/><category term='.htaccess'/><category term='Error'/><category term='textarea'/><category term='Blueprint Css'/><category term='Apache'/><category term='404'/><category term='Jquery'/><category term='Webmin'/><category term='caracteres especiales'/><category term='Android'/><category term='cuenta bancaria'/><category term='variables'/><category term='HTML5'/><category term='ñ'/><category term='checkbox'/><category term='Estadísticas'/><category term='Fecha'/><category term='$_server'/><category term='MySQL'/><category term='CSS'/><category term='Subversion'/><category term='Tutoriiales'/><category term='formularios'/><category term='DDNS'/><category term='Siguiente'/><category term='Funciones'/><category term='Gmail'/><category term='validate'/><category term='Ubuntu server'/><category term='Xampp'/><category term='IpTables'/><category term='Blogger'/><category term='Google'/><category term='Tortoise'/><category term='USB'/><category term='Validaciones'/><category term='Comandos Linux'/><category term='DNI'/><category term='Servicios Linux'/><category term='PHP'/><category term='repositorio'/><category term='Gráficas'/><category term='SMC'/><category term='CSS3'/><category term='imput'/><category term='Linux'/><category term='Artículos'/><category term='Tildes'/><category term='HTML'/><category term='PHP JavaScripr'/><category term='Imágenes'/><category term='DynDns'/><category term='Ubuntu'/><category term='JavaScript'/><category term='Fraude'/><category term='Enlaces'/><category term='Complementos Firefox'/><title type='text'>XandruSoft Web Blog</title><subtitle type='html'>Si eres un programador web, principiante o no, y necesitas ayuda con temas relaconados con PHP, servidores y demás, aquí tendrás todo lo que necesitas</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2383259034187003303</id><published>2012-01-16T00:00:00.000+01:00</published><updated>2012-01-16T00:00:00.416+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='checkbox'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>Seleccionar checkbox con jQuery</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s1600/jquery-logo.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;U&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;na de las tecnologías más utilizadas a la hora de crear una página web dinámica y sobre todo, muy vistosa, es jQuery. En esta ocasión veremos cómo seleccionar todos los checkbox de una lista y cómo seleccionar un checbox cuando marcamos un elemento concreto.&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para seleccionar todos los checkbox de una lista utilizando jQuery simplemente debemos utilizar un condicional para comprobar el estado del checkbox director y aplicar el mismo estado al resto. La función es la siguiente:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;function checkTodos (id,pID) {   $( "#" + pID + " :checkbox").attr('checked', $('#' + id).is(':checked')); }&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;i&gt;pID&lt;/i&gt; es el identificador del formulario e &lt;i&gt;id&lt;/i&gt; es el identificador del checkbox director.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si en cambio lo que queremos es &lt;b&gt;seleccionar un checkbox en función de un elemento concreto&lt;/b&gt;, la función es tan simple como la siguiente:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;function checkSel(id) { $('input:checkbox[value='+id+']').attr("checked","checked");}&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Donde &lt;i&gt;id&lt;/i&gt; es el valor del &lt;i&gt;atributo value&lt;/i&gt; del checkbox&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2383259034187003303?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2383259034187003303/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2012/01/seleccionar-checkbox-con-jquery.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2383259034187003303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2383259034187003303'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2012/01/seleccionar-checkbox-con-jquery.html' title='Seleccionar checkbox con jQuery'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s72-c/jquery-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7974493107206539106</id><published>2012-01-02T17:24:00.000+01:00</published><updated>2012-01-02T17:24:03.111+01:00</updated><title type='text'>Crear aplicacion acceso directo web en Android</title><content type='html'>&lt;span class="dropcaps"&gt;B&lt;/span&gt;uscando cómo crear aplicacion acceso directo web en Android he encontrado una magnífica aplicación web que nos permite crear una aplicación que funciona simplemente como un acceso directo a nuestra página web, blog o cualquier aplicación que tengamos en Internet.Además de poder crear la aplicación, nos ofrece el código QR para que cualquier se lo pueda descargar desde su teléfono, la opción, distribuirla e incluso ganar dinero con ella. La verdad que yo solo necesitaba crear una aplicación de acceso directo a mi aplicación web, y en dos pasos he podido hacerlo.Si no queremos pagar licencia de desarrollador de Android para poder subir nuestra aplicación al market, siempre podemos copiar el código QR que nos proporcionan para descargarla e incrustarlo en nuestra página web o cualquier otro sitio de referencia.La herramienta que nos permite hacer todo esto es &lt;a href="http://www.appsgeyser.com"&gt;http://www.appsgeyser.com&lt;/a&gt;. Incluso nos ofrece estadísticas de descarga de la aplicación y ponerle un icono personalizado.Prueba esta aplicación, seguro que te gustará.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7974493107206539106?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7974493107206539106/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2012/01/crear-aplicacion-acceso-directo-web-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7974493107206539106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7974493107206539106'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2012/01/crear-aplicacion-acceso-directo-web-en.html' title='Crear aplicacion acceso directo web en Android'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-3656612048846765280</id><published>2011-12-13T10:55:00.000+01:00</published><updated>2011-12-13T10:55:26.547+01:00</updated><title type='text'>Seleccionar radio button y checkbox con jQuery</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s1600/jquery-logo.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;uando queremos dar una estética dinámica a nuestra página solemos utilizar jQuery para mostrar elementos dinámicamente. En esta ocasión os mostraré como mostrar un elemento en función de que radio button o checkbox esté seleccionado con jQuery.&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Lo primero que debemos hacer es crear los elementos &lt;b&gt;HTML&lt;/b&gt; como los del siguiente ejemplo:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;div class="sist_reports"&amp;gt;&lt;/br&gt;   &amp;lt;input type="radio" name="numprioridad" value="1" checked&amp;gt;Realizada&lt;/br&gt;   &amp;lt;input type="radio" name="numprioridad" value="2"&amp;gt;Pendiente&lt;/br&gt;   &amp;lt;input type="radio" name="numprioridad" value="3"&amp;gt;Futura&lt;/br&gt;&amp;lt;/div&amp;gt;&lt;/br&gt;&amp;lt;div id="dat_rep"&amp;gt;&lt;/br&gt;   &amp;lt;label for="name"&gt;Fecha&amp;lt;/label&amp;gt;&lt;/br&gt;   &amp;lt;input type="date" name="datfecha" id="datepicker" readonly="readonly" size="12" value="&lt;? if(isset($_POST["datfecha"])) echo $_POST["datfecha"]; else echo date("d/m/Y"); ?&gt;" required/&amp;gt;&lt;/br&gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Justo antes el cierre de la etiqueta &amp;lt;/body&amp;gt; añadimos la &lt;b&gt;función jQuery&lt;/b&gt;&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$('input:radio[name=check]:').click(function () {&lt;/br&gt;   valrad = $('input:radio[name=numprioridad]:checked').val();&lt;/br&gt;   if(valrad==1)&lt;/br&gt;      $("#dat_rep").show();&lt;/br&gt;   else&lt;/br&gt;      $("#dat_rep").hide();&lt;/br&gt;});&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Os explicaré lo que hace cada línea:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$('input:radio[name=check]:').click(function () {&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Invoca una función cada vez que se hace click en el &lt;b&gt;elemento radio&lt;/b&gt; cuyo &lt;b&gt;name&lt;/b&gt; es &lt;i&gt;check&lt;/i&gt;&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;valrad = $('input:radio[name=numprioridad]:checked').val();&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Almacenamos el valor del radio seleccionado en la variable &lt;i&gt;valrad&lt;/i&gt;&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;if(valrad==1)&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Comprobamos que el valor sea igual a 1&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$("#dat_rep").show();&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Mostramos el elemento con &lt;i&gt;id=dat_rep&lt;/i&gt;&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$("#dat_rep").hide();&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Ocultamos el elemento con &lt;i&gt;id=dat_rep&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Con esta función se pueden hacer muchas cosas que añaden valor a nuestra página facilitando la interacción del usuario. &lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-3656612048846765280?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/3656612048846765280/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/12/seleccionar-radio-button-y-checkbox-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3656612048846765280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3656612048846765280'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/12/seleccionar-radio-button-y-checkbox-con.html' title='Seleccionar radio button y checkbox con jQuery'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s72-c/jquery-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-5680737558486440886</id><published>2011-11-16T10:36:00.001+01:00</published><updated>2011-11-16T15:59:46.648+01:00</updated><title type='text'>Crear fondos degradados con CSS3</title><content type='html'>&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;ntre las novedades que incluye el nuevo CSS3 encontramos la posibilidad de crear un fondo degradado sin necesidad de utilizar imágenes.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para &lt;strong&gt;degradar el fondo&lt;/strong&gt; de un objeto utilizando CSS3 simplemente debemos añadir las siguientes líneas en los atributos de la etiqueta de la hoja de estilos:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;background: -moz-linear-gradient(center top , #A0A0A0, #F0F0F0) no-repeat scroll 0 0  #F0F0F0;&lt;/br&gt;background: -webkit-gradient(linear, left top, left bottom, from(#A0A0A0), to(#F0F0F0), color-stop(0.7, #F0F0F0));&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Debemos incluir los dos atributos, uno para Mozilla y el otro para Chrome.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Con esto conseguimos un degradado vertical cuyo color superior es &lt;i&gt;#A0A0A0&lt;/i&gt; y el inferior &lt;i&gt;#F0F0F0&lt;/i&gt;.&lt;/p&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-email-en-un-formulario.html"&gt;Cómo crear bordes redondeados con CSS3&lt;/a&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-5680737558486440886?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/5680737558486440886/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/11/crear-fondos-degradados-con-css3.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5680737558486440886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5680737558486440886'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/11/crear-fondos-degradados-con-css3.html' title='Crear fondos degradados con CSS3'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1890268011818586718</id><published>2011-11-12T20:59:00.001+01:00</published><updated>2011-11-16T10:46:18.381+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS3'/><title type='text'>Bordes redondeados en etiquetas con CSS3</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src=http://1.bp.blogspot.com/--Iji_sdUBrM/Tr7TTXCPG4I/AAAAAAAAAaI/b3rjJVX-of4/s200/CSS3.jpg.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;U&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;na de las nuevas propiedades que nos proporciona CSS3 es la posibilidad de utilizar bordes redondeados en las etiquetas.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Una de las grandes ventajas de esta utilidad es que ya no debemos utilizar &lt;i&gt;imágenes&lt;/i&gt; o &lt;i&gt;JavaScript&lt;/i&gt; para conseguir este efecto por lo que conseguiremos &lt;strong&gt;mejorar sustancialmente la velocidad de carga&lt;/strong&gt; de la página.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para utilizar &lt;strong&gt;bordes redondeados con CSS3&lt;/strong&gt; debemos añadir el siguiente código en nuestra hoja de estilos:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;-moz-border-radius: 10px; /* Firefox*/&lt;/br&gt;-ms-border-radius: 10px; /* IE 8.*/&lt;/br&gt;-webkit-border-radius: 10px; /* Safari,Chrome.*/&lt;/br&gt;border-radius: 10px; /* Estándar.*/&lt;/br&gt;&lt;/code&gt;&lt;/div&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1890268011818586718?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1890268011818586718/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/11/bordes-redondeados-en-etiquetas-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1890268011818586718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1890268011818586718'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/11/bordes-redondeados-en-etiquetas-con.html' title='Bordes redondeados en etiquetas con CSS3'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/--Iji_sdUBrM/Tr7TTXCPG4I/AAAAAAAAAaI/b3rjJVX-of4/s72-c/CSS3.jpg.jpg&quot;' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1009700431865815269</id><published>2011-11-04T14:14:00.001+01:00</published><updated>2011-11-04T14:21:38.239+01:00</updated><title type='text'>Acrotar entradas en la página index de Wordpress</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src="http://3.bp.blogspot.com/-eFM9RRmD4Jc/TrPmYjwjPDI/AAAAAAAAAX0/G9KPp-C9vTM/s200/wordpress-logo.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;s más que recomendable mostrar las entradas acortadas en la página principal (o index) de nuestro blog para obligar a los usuarios a ir a la entrada correspondiente para leerla completamente.&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;En Wordpress tenemos dos formas de hacerlo, una editando el código y otra simplemente añadiendo una línea extra en nuestras entradas.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La &lt;b&gt;más sencilla y útil&lt;/b&gt; es añadiendo la etiqueta&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;!--more  Sigue leyendo... --&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;-dónde &lt;i&gt;Sigue leyendo...&lt;/i&gt; es la frase que se muestra y totalmente personalizable- en el punto en que queremos que se corte la descripción de la entrada.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Automáticamente en la página de inicio aparecerá la entrada cortada por el punto indicado y con la descripción que hemos especificado.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La &lt;b&gt;segunda forma&lt;/b&gt; puede que no sea posible aplicarla si tenemos puesta alguna plantilla personalizada, pero se trata de cambiar las funiones que invocan las entradas, modificando en index.php &lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;?php the_content('Read the rest of this entry »'); ?&amp;gt; por &amp;lt;?php the_excerpt(__('Leer más...'));?&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5442261851280970226" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" style="cursor: pointer; display: block; height: 67px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1009700431865815269?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1009700431865815269/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/11/acrotar-entradas-en-la-pagina-index-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1009700431865815269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1009700431865815269'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/11/acrotar-entradas-en-la-pagina-index-de.html' title='Acrotar entradas en la página index de Wordpress'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-eFM9RRmD4Jc/TrPmYjwjPDI/AAAAAAAAAX0/G9KPp-C9vTM/s72-c/wordpress-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8869814698541332503</id><published>2011-09-16T10:14:00.000+02:00</published><updated>2011-09-16T10:14:22.616+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Grub'/><title type='text'>Recuperar grub Windows 7 con Asturix</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/-dqedpecIvbk/TnMEyLO5_FI/AAAAAAAAAVU/4mMsHZnfsx8/s200/logo.jpg" /&gt;&lt;/span&gt; &lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;uando al instalar o formatear Windows en nuestro equipo, éste no detecta ningún sistema operativo en el arranque y se reinicia constantemente o muestra el error "grub error &gt;" es sintoma de que se ha estropeado y debemos &lt;strong&gt;restaurar el grub&lt;/strong&gt;.&lt;/p&gt;&lt;p class="MsoNormal"&gt;El grub se puede romper si se cumple que:&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- Instalamos o recuperamos Windows teniendo instalado Linux&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- Modificamos algún parametro del grub&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- Formateamos el equipo (Windows) teniendo instalado Linux&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para &lt;strong&gt;recuperar el grub&lt;/strong&gt; de Windows, Linux o ambos lo más cómodo es utilizar una distribución &lt;strong&gt;Live de Linux&lt;/strong&gt;, en nuestro caso utilizaremos &lt;strong&gt;Asturix&lt;/strong&gt; en modo Live corriendo desde un USB.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Una vez estemos en Asturix modo Live, debemos ejecutar la siguiente lista de comandos desde el terminal.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Damos permisos de root para ejecutar los comandos&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ sudo su -&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Comprobamos las unidades del sistema&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ fdisk -l&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Montamos la unidad qu queremos (si tenemos Linux instalado es recomendable montar la partición en la que se encuentre).&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ mount /dev/sdax /mnt&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;donde x es el número del dispositivo que queremos restaurar (nomalmente el S.O. Linux)&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ mount --bind /dev /mnt/dev&lt;br /&gt;$ chroot /mnt&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Una vez montado y dado permisos a la unidas, restauramos el grub con el comando:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ update-grub2&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Si el comando no encuentra todas las unidades o falla, tal vez debamos reiniciar el equipo y volver a ejecutar la secuencia de comandos, porque a veces necesita montar correctamente el sistema Linux antes de restaurar el Windows.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8869814698541332503?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8869814698541332503/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/09/recuperar-grub-windows-7-con-asturix.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8869814698541332503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8869814698541332503'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/09/recuperar-grub-windows-7-con-asturix.html' title='Recuperar grub Windows 7 con Asturix'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-dqedpecIvbk/TnMEyLO5_FI/AAAAAAAAAVU/4mMsHZnfsx8/s72-c/logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6111206829446792431</id><published>2011-09-11T19:34:00.000+02:00</published><updated>2011-09-11T19:34:00.344+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Acortador'/><category scheme='http://www.blogger.com/atom/ns#' term='Goo.gl'/><title type='text'>Acortador de URLs Goo.gl - API para PHP</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 105px;" src="http://2.bp.blogspot.com/-TUvJNij24tM/TmzwvFxreVI/AAAAAAAAAVE/2opRdbZqn1c/s200/googl.png"/&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;i estamos interesados en utilizar en nuestras páginas un acortador de URLs, recomiendo utilizar el que nos proporciona google porque, además de ser corto (6 caracetres), nos proporciona estadísticas detalladas del uso de cada enlace generado.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para utilizar su API existe un proyecto llamado googl-php que incluye una clase muy fácil de usar con la que podremos tanto acortar como expandir URLs con el acortador Goo.gl de Google.&lt;/p&gt;&lt;p class="MsoNormal"&gt;El proyecto se puede ver en su página de &lt;a href='http://code.google.com/p/googl-php/’ target='_blank'&gt;Google code&lt;/a&gt; y también os dejo un enlace a la clase &lt;a href='http://googl-php.googlecode.com/svn/trunk/Googl.class.php’ target='_blank'&gt;googl.class&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para utilizar esta clase debemos obtener nuestra clave de API de Google. Para conseguirla debemos acudir al &lt;a href='https://code.google.com/apis/console#access’ target='_blank'&gt;siguiente enlace&lt;/a&gt;.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si, como a mí, la función shorten os da error, podeís modificarla por la siguiente:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;//This is the URL you want to shorten&lt;br /&gt;$longUrl = 'http://www.example.com';&lt;br /&gt;$apiKey = 'your_api_key_here';&lt;br /&gt;//Get API key from : http://code.google.com/apis/console/&lt;br /&gt; &lt;br /&gt;$postData = array('longUrl' =&gt; $longUrl, 'key' =&gt; $apiKey);&lt;br /&gt;$jsonData = json_encode($postData);&lt;br /&gt; &lt;br /&gt;$curlObj = curl_init();&lt;br /&gt; &lt;br /&gt;curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');&lt;br /&gt;curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);&lt;br /&gt;curl_setopt($curlObj, CURLOPT_HEADER, 0);&lt;br /&gt;curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));&lt;br /&gt;curl_setopt($curlObj, CURLOPT_POST, 1);&lt;br /&gt;curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData);&lt;br /&gt; &lt;br /&gt;$response = curl_exec($curlObj);&lt;br /&gt; &lt;br /&gt;//change the response json string to object&lt;br /&gt;$json = json_decode($response);&lt;br /&gt; &lt;br /&gt;curl_close($curlObj);&lt;br /&gt; &lt;br /&gt;return $json-&gt;id;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Os recuerdo que la respuesta JSON que devuelve la API es:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;{&lt;br /&gt; "kind": "urlshortener#url",&lt;br /&gt; "id": "http://goo.gl/lBfOH",&lt;br /&gt; "longUrl": "https://www.packtpub.com/php-jquery-cookbook-to-create-interactive-web-applications/book"&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6111206829446792431?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6111206829446792431/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/09/acortador-de-urls-googl-api-para-php.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6111206829446792431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6111206829446792431'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/09/acortador-de-urls-googl-api-para-php.html' title='Acortador de URLs Goo.gl - API para PHP'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-TUvJNij24tM/TmzwvFxreVI/AAAAAAAAAVE/2opRdbZqn1c/s72-c/googl.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-3362149053131589908</id><published>2011-08-22T11:44:00.001+02:00</published><updated>2011-08-22T12:18:22.401+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Keepass'/><title type='text'>Como instalar keepass en Linux (Ubuntu)</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src="http://3.bp.blogspot.com/-Cgw8E-oteOc/TlIsiUp1bGI/AAAAAAAAAUI/ygY0uj9xtk0/s1600/keepass_256x256.png"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="dropcaps"&gt;I&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;nstalar la última versión de Keepass en Linux&lt;/strong&gt; puede convertirse en una tarea tediosa. Para intentar facilitaros el trabajo, os mostraré un atajo que &lt;strong&gt;sirve solo para algunas distrubuciones de Linux&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para &lt;strong&gt;instalar Keepass en Linux&lt;/strong&gt; la página oficial del proyecto indica que se debe realizar mediante &lt;em&gt;mono&lt;/em&gt; -integrado en las últimas versiones de Ubuntu-. Pero en esta ocasión os mostraré un atajo que he encontrado y me ha funcionado. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para instalarlo de la forma más fácil, debemos introducir los siguientes comandos:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo apt-add-repository ppa:jtaylor/keepass&lt;br /&gt;sudo apt-get update&lt;br /&gt;sudo apt-get install keepass2&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si de esta forma no lo conseguimos (comprobar que se actualizaron los paquetes), debemos seguir las instrucciones que nos indican en la &lt;a href='http://keepass.info/help/v2/setup.html' target='_blank'&gt;ayuda del proyecto&lt;/a&gt;.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-3362149053131589908?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/3362149053131589908/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/08/como-instalar-keepass-en-linux-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3362149053131589908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3362149053131589908'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/08/como-instalar-keepass-en-linux-ubuntu.html' title='Como instalar keepass en Linux (Ubuntu)'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Cgw8E-oteOc/TlIsiUp1bGI/AAAAAAAAAUI/ygY0uj9xtk0/s72-c/keepass_256x256.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-4241902170678598886</id><published>2011-04-22T13:49:00.000+02:00</published><updated>2011-04-22T13:49:07.789+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servicios Linux'/><title type='text'>Conocer los servicios activos en Linux</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 105px;" src="http://1.bp.blogspot.com/-m6Gj6SGQmMQ/TbFpsqc3BLI/AAAAAAAAALo/Xwx9MduJ_Qo/s200/pinguino.jpg"/&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;ara conocer los servicios que se están activos en el sistema tenemos dos opciones: utilizar el gestor que nos proporciona el sistema o instalar una herramienta al efecto.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para utilizar el gestor del sistema (con el escritorio activo) podemos ir a Preferencias del Sistema -&gt; Arranque y Apagado -&gt; Gestor de Servicios, donde podremos ver aquellos que se incian automáticamente al arrancar el sistema. &lt;/p&gt;&lt;p class="MsoNormal"&gt;Si no disponemos de escritorio o nos gusta hacerlo a través de línea de comandos, la opción es utilizar la herramienta  rcconf, que nos mostrará marcados con un asterisco aquellos que se ejecutan al iniciar el sistema, pudiendo configurarlo como deseemos. Para instalarla ejecutamos el siguiente comando:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo aptitude install rcconf&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Y para ejecutarla:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo rcconf&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Con estas herramientas podremos gestionar los servicios de nuestro sistema.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-4241902170678598886?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/4241902170678598886/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/04/conocer-los-servicios-activos-en-linux.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4241902170678598886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4241902170678598886'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/04/conocer-los-servicios-activos-en-linux.html' title='Conocer los servicios activos en Linux'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-m6Gj6SGQmMQ/TbFpsqc3BLI/AAAAAAAAALo/Xwx9MduJ_Qo/s72-c/pinguino.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7012649650384570036</id><published>2011-04-20T19:58:00.000+02:00</published><updated>2011-04-20T19:58:14.134+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LAMPP'/><title type='text'>Instalar XAMPP en Linux</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 105px;" src="http://4.bp.blogspot.com/-e5meMerjEvQ/Ta8eK4Jn7sI/AAAAAAAAALg/plWoRq9HJ1g/s200/xampp.png"/&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;A&lt;/span&gt;&lt;strong&gt;&lt;p class="MsoNormal"&gt;unque en alguna entrada anterior hemos explicado cómo instalar XAMPP en Windows, no nos íbamos a olvidar de todos los fans de Linux y sobre todo aquellos que les apasiona el desarrollo. Por ello, vamos a seguir unos simples pasos para instalar LAMPP en Linux (LAMPP es el término utilizado para Linux).&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;1. Acudimos a la &lt;a href="http://www.apachefriends.org/en/xampp-linux.html#374" target="_blank" alt="XAMPP"&gt;página de descargas&lt;/a&gt; del proyecto y bajamos la última versión. &lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;2. Descomprimimos el contenido del archivo descargado en el directorio /otp del sistema:&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo tar xvfz xampp-linux-1.7.4.tar.gz -C /opt&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;3. Arrancamos los servicios:&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo /opt/lampp/lampp start&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;4. Accedemos a la página de localhost:&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;http://localhost&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Aquí deberemos ver la página principal del servicio, donde podremos configurar varios parámetros del mismo (pendiente para un próximo artículo).&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para subir nuestra página al servidor local, lo haremos en el directorio /opt/htdocs que es el de por defecto de LAMPP.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Con ésto, ya podemos empezar a &lt;b&gt;crear nuestras páginas de forma local&lt;/b&gt; sin necesidad de disponer de un hosting.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7012649650384570036?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7012649650384570036/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/04/instalar-xampp-en-linux.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7012649650384570036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7012649650384570036'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/04/instalar-xampp-en-linux.html' title='Instalar XAMPP en Linux'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-e5meMerjEvQ/Ta8eK4Jn7sI/AAAAAAAAALg/plWoRq9HJ1g/s72-c/xampp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2584245671158876951</id><published>2011-04-07T18:17:00.001+02:00</published><updated>2011-04-07T18:17:37.039+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asturix People'/><title type='text'>Asturix People</title><content type='html'>&lt;img src="http://farm6.static.flickr.com/5188/5598355472_6b02b19a18.jpg" width="500" height="115" alt="people_fond"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2584245671158876951?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2584245671158876951/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/04/asturix-people.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2584245671158876951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2584245671158876951'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/04/asturix-people.html' title='Asturix People'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm6.static.flickr.com/5188/5598355472_6b02b19a18_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7596692744615665985</id><published>2011-01-19T12:19:00.000+01:00</published><updated>2011-01-19T12:19:29.947+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Sumar o restar valor a fechas con php</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 105px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TCH1wEt3tmI/AAAAAAAAAHc/odVjQHPXf2g/s200/imglogophp.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5485936027362637410" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i queremos restar o sumar una hora a la fecha actual o a cualquier fecha, no tenemos más que operar con la función date() que nos proporciona PHP.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Podemos usar una de las dos formas que se muestran a continuación simplemente debemos seguir los siguientes pasos:&lt;/p&gt;&lt;h2&gt;Opción 1:&lt;/h2&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;//Obtenemos la fecha actual:&lt;br /&gt;$fecha=time();&lt;br /&gt;//Queremos restar 3 horas a la fecha actual:&lt;br /&gt;$horas = -3;&lt;br /&gt;// Convertimos las horas a segundos y las sumamos:&lt;br /&gt;$fecha += ($horas * 60 * 60);&lt;br /&gt;// Le damos al resultado el formato deseado:&lt;br /&gt;$fecha = date("Y-m-d H:i:s", $fecha );&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;h2&gt;Opción 2:&lt;/h2&gt;&lt;p class="MsoNormal"&gt;Es quizá la más intuitiva:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;echo date("Y-m-d H:i:s", (strtotime ("+2 Hours")));&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Pudiendo sustituir el valor (+2) y Hours por lo que queramos sumar o restar.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7596692744615665985?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7596692744615665985/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/01/sumar-o-restar-valor-fechas-con-php.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7596692744615665985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7596692744615665985'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/01/sumar-o-restar-valor-fechas-con-php.html' title='Sumar o restar valor a fechas con php'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TCH1wEt3tmI/AAAAAAAAAHc/odVjQHPXf2g/s72-c/imglogophp.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7482082130850490017</id><published>2011-01-10T10:05:00.000+01:00</published><updated>2011-01-10T10:05:27.224+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Problema: JavaScript redondea números grandes</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TSrLjGlcGWI/AAAAAAAAALM/0TwAGOuLZNM/s200/99160-javascript-intrusivo.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;J&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;avaScript redondea números grandes porque los procesa en coma flotante, por lo que tienen una preción limitada. Normalmente, en JavaScript, un valor tiene 16 dígitos de precisión.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si la intención es operar con esta clase de números, se puede utilizar alguna de las librerías que existen, creadas a tal efecto, y que se pueden descargar desde los siguientes enlaces:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href='http://www-cs-students.stanford.edu/~tjw/jsbn/' target='_blank'&gt;www-cs-students.stanford.edu&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href='http://www.leemon.com/crypto/BigInt.html' target='_blank'&gt;leemon.com&lt;/a&gt;&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7482082130850490017?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7482082130850490017/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2011/01/problema-javascript-redondea-numeros.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7482082130850490017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7482082130850490017'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2011/01/problema-javascript-redondea-numeros.html' title='Problema: JavaScript redondea números grandes'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TSrLjGlcGWI/AAAAAAAAALM/0TwAGOuLZNM/s72-c/99160-javascript-intrusivo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-5857141427824016914</id><published>2010-12-12T15:19:00.000+01:00</published><updated>2010-12-12T15:20:26.402+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Crear usuarios en base de datos mysql</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TLbtD-zcVrI/AAAAAAAAAKs/UqnCQtmWtVo/s320/logo-mysql1.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;uando instalamos el servicio mysql en nuestro servidor, por defecto se crea un usuario root que puede realizar cualquier acción, porque tiene permisos de superusuario. &lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Pero cuando queremos trabajar con una base de datos en concreo, bien sea para una página web, blog o cualquier cosa que requiera acceso a base de datos, lo recomendable es &lt;strong&gt;crear un usuario que solo pueda trabajar con esa base de datos en concreto&lt;/strong&gt; e incluso podemos ponerle restricciones de creación, modificación, etc.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;Para crear un nuevo usuario mysql&lt;/strong&gt;, utilizaremos la siguiente instrucción:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;CREATE USER user1@'localhost' IDENTIFIED BY 'password1';&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Con esto, tendremos un nuevo usuario llamado &lt;i&gt;user1&lt;/i&gt; con contraseña &lt;i&gt;password1&lt;/i&gt;. El usuario, por defecto, no tendrá ningún permiso, por lo que &lt;strong&gt;debemos darle los permisos oportunos&lt;/strong&gt; para que el usuario pueda trabajar con una base de datos. Un ejemplo es el siguiente:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;GRANT SELECT, INSERT, UPDATE, DELETE ON blog.* TO ' user1'@'localhost';&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Aquí indicamos que el usuario &lt;i&gt;user1&lt;/i&gt; puede trabajar sobre cualquier tabla de la base de datos &lt;i&gt;blog&lt;/i&gt; y puede realizar las acciones: &lt;i&gt;SELECT, INSERT, UPDATE, DELETE&lt;/i&gt;.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Las acciones que permite GRANT son:&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;Select: Permite ejecutar sentencias SELECT. &lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;Insert: Permite ejecutar sentencias INSERT. &lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;Update: Permite ejecutar sentencias UPDATE. &lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;Delete: Permite ejecutar sentencias UPDATE.&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;References: Capacidad de crear una restricción que se refiere a la tabla.&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;Alter: Capacidad para cambiar la de una tabla con la sentencia ALTER TABLE.&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;Index: Capacidad para crear un indez en una table con la sentencia CREATE INDEX.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Utilizando esta técnica conseguiremos &lt;strong&gt;añadir mayor seguridad&lt;/strong&gt; a nuestro sistema a la hora de trabajar con bases de datos.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-5857141427824016914?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/5857141427824016914/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/12/crear-usuarios-en-base-de-datos-mysql.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5857141427824016914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5857141427824016914'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/12/crear-usuarios-en-base-de-datos-mysql.html' title='Crear usuarios en base de datos mysql'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TLbtD-zcVrI/AAAAAAAAAKs/UqnCQtmWtVo/s72-c/logo-mysql1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-225716419652005158</id><published>2010-11-23T14:10:00.000+01:00</published><updated>2010-11-23T14:10:00.125+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu server'/><title type='text'>Ejecutar entorno gráfico Ubuntu desde Windows</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/TOl2YmqCkgI/AAAAAAAAALA/4ZjJ54E6BwU/s320/ubuntu-logo.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;ara trabajar con nuestro Ubuntu Server o cualquier otro Linux remotamente desde Windows desde cualquier ordenador, lo podemos hacer mediante ssh con el programa cygwin.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para habilitar el servicio debemos realizar varias taraes:&lt;br /&gt;Lo primero debemos comprobar que la opción de &lt;strong&gt;X11 forwarding&lt;/strong&gt; se encuentra permitida en el archivo &lt;em&gt;/etc/ssh/sshd_config&lt;/em&gt;. Para ello buscamos la cadena &lt;em&gt;X11Forwarding&lt;/em&gt;, que debe estar con valor &lt;em&gt;yes&lt;/em&gt;.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Lo siguiente será instalar algún entorno gráfico. En nuestro caso nos hemos decantado por la siguiente opción:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ sudo aptitude install xorg (x-window-system-core)&lt;br /&gt;$ sudo aptitude install xfce4 (gnome, kde, icewm, fluxbox, etc)&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;En Windows instalaremos el programa &lt;strong&gt;Cygwin&lt;/strong&gt;. Descargamos el instalable desde la página web del proyecto y lo copiamos a la carpeta c:\cygwin. A la hora de instalar nos pedirá que indiquemos el servidor (en mi caso seleccioné mirror.cs.vt.edu). Una vez descargados los archivos de instalación, nos mostrará una lista con paquetes disponibles para instalarlos juntos al programa. No debemos olvidarnos de seleccionar los paquetes incluidos en X11 y comprbando que se encuentran seleccionados los siguientes:  &lt;strong&gt;xterm, openssh (Net), xorg-server, xinit,xorg-docs,x-start-menu-icons, inetutils&lt;/strong&gt;.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La instalación durará un buen rato, por lo que podemos aprovechar para realizar cualquier otra cosa.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Una vez finalizada la instalación ejecutamos el programa &lt;strong&gt;Xwin&lt;/strong&gt; que ha instalado. &lt;p class="MsoNormal"&gt;Podemos encontrarlo en &lt;em&gt;Inicio -&gt; Programas -&gt; CygwinX&lt;/em&gt;. Una vez arrancado, se minimizará y pasará a ejecución en segundo plano. Si lo abrimos, podemos comprobar que todo esté funcionando.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para conectarnos al servidor por la interfaz gráfica ejecutamos:&lt;/p&gt;&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;ssh –X usuario@dominio.ext&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Desde aquí podremos ejecutar cualquier commando de nuestro servidor, e incluso aquellos que sean para ejecutar programas con entorno gráfico.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-225716419652005158?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/225716419652005158/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/11/ejecutar-entorno-grafico-ubuntu-desde.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/225716419652005158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/225716419652005158'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/11/ejecutar-entorno-grafico-ubuntu-desde.html' title='Ejecutar entorno gráfico Ubuntu desde Windows'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WFPalWVyjPQ/TOl2YmqCkgI/AAAAAAAAALA/4ZjJ54E6BwU/s72-c/ubuntu-logo.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-214396477362834717</id><published>2010-11-21T20:47:00.000+01:00</published><updated>2010-11-21T20:47:57.460+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu server'/><title type='text'>Actualizar Aplicaciones Ubuntu server</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TOl2XW0Vq7I/AAAAAAAAAK8/2cRBtelCv30/s320/ubuntu_logo.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;s muy importante tener actualizado el sistema y las aplicaciones con las últimas actualizaciones, tanto para poder disponer de las últimas funcionalidades, pero sobre todo, como para poder evitar las posibles vulnerabilidades que se hayan encontrado en las versiones anteriores de los programas. &lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para &lt;strong&gt;actualizar todos los programas&lt;/strong&gt; que tenemos instalados en nuestro Ubuntu server no tenemos más que ejecutar el comando&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo apt-get update &amp;&amp; sudo apt-get upgrade&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;que nos permitirá actualizar tanto el índice de paquetes como los paquetes respectivamente.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Esta simple acción nos permitirá evitarnos algunos quebraderos de cabeza innecesarios.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-214396477362834717?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/214396477362834717/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/11/actualizar-aplicaciones-ubuntu-server.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/214396477362834717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/214396477362834717'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/11/actualizar-aplicaciones-ubuntu-server.html' title='Actualizar Aplicaciones Ubuntu server'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TOl2XW0Vq7I/AAAAAAAAAK8/2cRBtelCv30/s72-c/ubuntu_logo.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-3384811918205270315</id><published>2010-10-27T15:49:00.000+02:00</published><updated>2010-10-27T15:49:29.408+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Api de graficos de google</title><content type='html'>&lt;span class="imgini_hor"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TMgsYDsD8jI/AAAAAAAAAKw/oujhWoGsJHo/s1600/google.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;A&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;unque para mostrar graficas en nuestra página web disponemos de muchos plugins, creemos que lo más cómodo es utilizar la API de Google que nos permite crear gráficas.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para ver todos los tipos de gráfica que podemos utilizar podemos acceder a la &lt;a href='http://code.google.com/intl/es/apis/chart/docs/gallery/chart_gall.html' target='_blank'&gt;galería de graficos de google&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Un ejemplo de uso de grafica de pie:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;http://chart.apis.google.com/chart?cht=p3&amp;chd=t:60,40&amp;chs=250x100&amp;chl=Hello|World&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Un ejemplo completo de creación de una gráfica con la API de Google sería:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$url_Browsers = $seo-&amp;gt;getChartPie($aBrowsers,"440x150","p3","FFFF10,FF0000");&lt;br /&gt;&lt;br /&gt;function getChartPie($dat,$size,$cht,$chco)&lt;br /&gt;&lt;br /&gt; {&lt;br /&gt;&lt;br /&gt;$url = "http://chart.apis.google.com/chart?chs=".$size."&amp;cht=".$cht."&amp;chd=t:".implode($val,",")."&amp;chl=".implode($desc,"|");&lt;br /&gt;&lt;br /&gt;  if($chco!="")&lt;br /&gt;&lt;br /&gt;   $url .= "&amp;chco=".$chco;&lt;br /&gt;&lt;br /&gt;  return $url;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;echo "&amp;lt;img src='".$url_Browsers."' alt='navegadores' /&amp;gt;";&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Si vemos que es muy complicado crear las gráficas de forma manual o queremos expermientar con más formatos, podemos usar el &lt;a href='http://code.google.com/intl/en/apis/chart/docs/chart_wizard.html' target='_blank'&gt;wizard&lt;/a&gt; que nos proporciona google:&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-3384811918205270315?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/3384811918205270315/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/10/api-de-graficos-de-google.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3384811918205270315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3384811918205270315'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/10/api-de-graficos-de-google.html' title='Api de graficos de google'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TMgsYDsD8jI/AAAAAAAAAKw/oujhWoGsJHo/s72-c/google.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1926624709448463311</id><published>2010-10-14T13:42:00.000+02:00</published><updated>2010-10-14T13:45:28.415+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><title type='text'>Error “Can't connect to local MySQL server through socket”</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TLbtD-zcVrI/AAAAAAAAAKs/UqnCQtmWtVo/s320/logo-mysql1.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;i estamos intentando instalar nuestra aplicación en un servidor externo e intentamos establecer la conexión con la base de datos puede que nos dé error “Can't connect to local MySQL server through socket”.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Esto nos indica que estamos accediendo de forma errónea al servidor, problablemente porque estemos accediendo a &lt;b&gt;localhost&lt;/b&gt; y en vez de eso debamos acceder al servidor que nos proporcione el ISP, por ejemplo, &lt;b&gt;mysql.servidor.com&lt;/b&gt;.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1926624709448463311?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1926624709448463311/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/10/error-cant-connect-to-local-mysql.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1926624709448463311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1926624709448463311'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/10/error-cant-connect-to-local-mysql.html' title='Error “Can&apos;t connect to local MySQL server through socket”'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TLbtD-zcVrI/AAAAAAAAAKs/UqnCQtmWtVo/s72-c/logo-mysql1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6642417031918637101</id><published>2010-10-11T11:54:00.000+02:00</published><updated>2010-10-11T12:02:24.225+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Refrescar página web automáticamente con PHP</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 128px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TEbM3PuRiCI/AAAAAAAAAI8/2KkpNGqA2tA/s200/php.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5496305644737759266" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;uando necesitamos refrescar nuestra página web automáticamente cada cierto tiempo, lo primero que se nos ocurre es utilizar una función en JavaScript, pero debemos saber que también lo podemos hacer con código PHP.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;La función de &lt;strong&gt;refresco de página en PHP&lt;/strong&gt; es muy sencilla, por lo que pasamos a verla directamente:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$self = $_SERVER['PHP_SELF']; //Obtenemos la página en la que nos encontramos&lt;br /&gt;header("refresh:300;  url=$self"); //Refrescamos cada 300 segundos&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;i&gt;Nota:&lt;/i&gt; 300 segundos = 5 minutos (para que los veáis más claramente).&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6642417031918637101?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6642417031918637101/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/10/refrescar-pagina-web-automaticamente.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6642417031918637101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6642417031918637101'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/10/refrescar-pagina-web-automaticamente.html' title='Refrescar página web automáticamente con PHP'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TEbM3PuRiCI/AAAAAAAAAI8/2KkpNGqA2tA/s72-c/php.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8644894313865479148</id><published>2010-10-07T23:10:00.000+02:00</published><updated>2010-10-07T23:11:31.286+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Redeclarar funciones con PHP</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 105px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TCH1wEt3tmI/AAAAAAAAAHc/odVjQHPXf2g/s200/imglogophp.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5485936027362637410" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;i estamos acostumbrados a trabajar con lenguajes como Java o C++, puede que una práctica habitual sea redeclarar funciónes para que se use una u otra en función del número de parámetros que le pasemos. &lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;En &lt;strong&gt;php&lt;/strong&gt; nos encontramos con el problema de que esta forma de&lt;strong&gt; declarar funciones&lt;/strong&gt; no es soportada, por lo que nos tendremos que buscar la vida para poder pasar a una función un número variable de parámetros.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Una opción es usar la función &lt;i&gt;func_num_args()&lt;/i&gt; con la que podremos conocer el número de argumentos o parámetros que le pasamos a la función.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Un ejemplo de una función independiente del número de parámetros es:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;function ejemplo(){&lt;br /&gt;$numArgs = func_num_args();&lt;br /&gt;if($numArgs==1){&lt;br /&gt;//Hace una cosa&lt;br /&gt;}&lt;br /&gt;if($numArgs==2){&lt;br /&gt;//Hace otra cosa&lt;br /&gt;}&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8644894313865479148?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8644894313865479148/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/10/redeclarar-funciones-con-php.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8644894313865479148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8644894313865479148'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/10/redeclarar-funciones-con-php.html' title='Redeclarar funciones con PHP'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TCH1wEt3tmI/AAAAAAAAAHc/odVjQHPXf2g/s72-c/imglogophp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-409722154602097194</id><published>2010-09-29T19:14:00.000+02:00</published><updated>2010-09-29T19:14:00.318+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Agent'/><title type='text'>Verificar el User Agent del navegador con PHP</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TJ2nEjVCRXI/AAAAAAAAAKg/Np7qmUJnccg/s1600/navegadores278.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;omo habíamos dicho en el artículo &lt;a href="http://xandrusoft.blogspot.com/2010/07/trabajar-con-distintos-user-agent.html" target="_blank"&gt;trabajar con distintos user agent&lt;/a&gt;, existen multitud de navegadores con sus características particulares desde los que se accede cada día a las páginas web.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para adaptar nuestras páginas a los distintos navegadores debemos poder reconocelos, mediante su &lt;strong&gt;User Agent&lt;/strong&gt; para poder aplicar las distintas configuraciones.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La función que nos permite comprobar el tipo de &lt;strong&gt;User Agent&lt;/strong&gt; es:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;stristr($_SERVER['HTTP_USER_AGENT'],'user_agent')&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Simplemente añadiendo las condiciones que nos interesen y haciendolas cumplir, podemos hacer que la página se comporte de forma distinta para cada navegador.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-409722154602097194?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/409722154602097194/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/verificar-el-user-agent-del-navegador.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/409722154602097194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/409722154602097194'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/verificar-el-user-agent-del-navegador.html' title='Verificar el User Agent del navegador con PHP'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TJ2nEjVCRXI/AAAAAAAAAKg/Np7qmUJnccg/s72-c/navegadores278.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8628999980959536913</id><published>2010-09-27T19:12:00.000+02:00</published><updated>2010-09-28T11:00:17.864+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><title type='text'>Añadir timeline de Twitter a Blogger</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TJzUOASMHiI/AAAAAAAAAKY/jDyVNY-SuwM/s1600/twitter-pajaro1.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;i queremos incluir los últimos &lt;i&gt;twitts &lt;/i&gt;de nuestra cuenta de Twitter (&lt;i&gt;timeline&lt;/i&gt;) en un blog creado en &lt;strong&gt;Blogger&lt;/strong&gt; no tenemos más que acceder a la &lt;a href=” http://twitter.com/badges/blogger” target=”_blank”&gt;aplicación de Twitter&lt;/a&gt; creada a tal efecto.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Configuramos el número de entradas que queremos mostrar y el título que se mostrará y una vez que pinchemos en el botón de la parte izquierda nos redirigirá a nuestra cuenta de &lt;strong&gt;Blogger&lt;/strong&gt;, desde la que tendremos que permitir la inclusión de la aplicación. Seleccionamos la posición en la que queremos que se muestre y una vez guardado, mostraremos nuestros &lt;strong&gt;últimos twitts en el blog&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8628999980959536913?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8628999980959536913/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/anadir-timeline-de-twitter-blogger.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8628999980959536913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8628999980959536913'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/anadir-timeline-de-twitter-blogger.html' title='Añadir timeline de Twitter a Blogger'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TJzUOASMHiI/AAAAAAAAAKY/jDyVNY-SuwM/s72-c/twitter-pajaro1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-4560149407003436656</id><published>2010-09-24T11:37:00.000+02:00</published><updated>2010-09-24T18:41:16.163+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><title type='text'>Añadir botón Twitter en post de blogger</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TJzUOASMHiI/AAAAAAAAAKY/jDyVNY-SuwM/s1600/twitter-pajaro1.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;div class="MsoNormal"&gt;i queremos facilitar la tarea de twittear nuestros enlaces a los usuarios que nos visitan no tenemos más que añadir el código del nuevo “botón de twittear” que nos proporciona el propio Twitter desde la &lt;a href="http://twitter.com/goodies/tweetbutton" target="_blank"&gt;página del proyecto&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Para añadir el botón a cada post de nuestro blog de Blogger debemos buscar en el código (con los artilugios expandidos) la siguiente cadena:&lt;/div&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;div class='post-footer-line post-footer-line-1'&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;E insertamos a continuación el código del botón, que para el formato pequeño sería:&lt;/div&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;a class='twitter-share-button' data-count='horizontal' data-lang='es' data-via='XandruCancelas' href='http://twitter.com/share'&amp;gt;Tweet&amp;lt;/a&amp;gt;&amp;lt;script src='http://platform.twitter.com/widgets.js' type='text/javascript'/&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5442261851280970226" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" style="cursor: pointer; display: block; height: 67px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-4560149407003436656?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/4560149407003436656/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/anadir-boton-twitter-en-post-de-blogger.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4560149407003436656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4560149407003436656'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/anadir-boton-twitter-en-post-de-blogger.html' title='Añadir botón Twitter en post de blogger'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TJzUOASMHiI/AAAAAAAAAKY/jDyVNY-SuwM/s72-c/twitter-pajaro1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-4572994121312930803</id><published>2010-09-17T12:37:00.000+02:00</published><updated>2010-09-24T17:42:15.572+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS3'/><title type='text'>Usando CSS3</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TJHHnzSjdhI/AAAAAAAAAKQ/Mr7VA7rbGmA/s320/css3.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;on la reciente aparición de los primeros códigos en HTML5 han aparecido también los primeros en CSS3, y es que esta vez, ambas tecnologías van de la mano. Si antes era recomendable utilizarlas conjuntamente, ahora es casi obligado, ya que es el objetivo del desarrollo de dichas tecnologías.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Al igual que ocurre con HTML5, CSS3 incluye una serie de mejoras y nuevas funcionalidades que nos harán la vida más fácil a la hora de dar estilo a nuestras páginas. Alguna de estas mejoras las iremos viendo a continuación.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para facilitar la tarea y no tener que escribir código HTML de nuevo, usaremos el que hemos creado en el mini tutoria de HTML5.&lt;/p&gt;&lt;p class="MsoNormal"&gt;El código CSS es el siguiente:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;/* Makeshift CSS Reset */&lt;br /&gt;{&lt;br /&gt;margin: 0;&lt;br /&gt;padding: 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* Tell the browser to render HTML 5 elements as block */&lt;br /&gt;header, footer, aside, nav, article {&lt;br /&gt;display: block;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;body {&lt;br /&gt;margin: 0 auto;&lt;br /&gt;width: 940px;&lt;br /&gt;font: 13px/22px Helvetica, Arial, sans-serif;&lt;br /&gt;background: #f0f0f0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;h2 {&lt;br /&gt;font-size: 28px;&lt;br /&gt;line-height: 44px;&lt;br /&gt;padding: 22px 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;h3 {&lt;br /&gt;font-size: 18px;&lt;br /&gt;line-height: 22px;&lt;br /&gt;padding: 11px 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;p {&lt;br /&gt;padding-bottom: 22px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;nav {&lt;br /&gt;position: absolute;&lt;br /&gt;left: 0;&lt;br /&gt;width: 100%;&lt;br /&gt;background: url("nav_background");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;nav ul li {&lt;br /&gt;float: left;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;nav ul li a {&lt;br /&gt;display: block;&lt;br /&gt;margin-right: 20px;&lt;br /&gt;width: 140px;&lt;br /&gt;font-size: 14px;&lt;br /&gt;line-height: 44px;&lt;br /&gt;text-align: center;&lt;br /&gt;text-decoration: none;&lt;br /&gt;color: #777;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;nav ul li a:hover {&lt;br /&gt;color: #fff;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;nav ul li.selected a {&lt;br /&gt;color: #fff;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;nav ul li.subscribe a {&lt;br /&gt;margin-left: 22px;&lt;br /&gt;padding-left: 33px;&lt;br /&gt;text-align: left;&lt;br /&gt;background: url("rss.png") left center no-repeat;&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Hasta aquí utilizamos las mismas propiedades que las que se utilizaban en CSS2. Las nuevas propiedades las mostramos a continuación:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;#intro {&lt;br /&gt;margin-top: 66px;&lt;br /&gt;padding: 44px;&lt;br /&gt;background: #467612 url("intro_background.png") repeat-x;&lt;br /&gt;background-size: 100%;&lt;br /&gt;border-radius: 22px;&lt;br /&gt;&lt;br /&gt;/* Background-size not implemented yet */&lt;br /&gt;-webkit-background-size: 100%;&lt;br /&gt;-o-background-size: 100%;&lt;br /&gt;-khtml-background-size: 100%;&lt;br /&gt;&lt;br /&gt;/* Border-radius not implemented yet */&lt;br /&gt;-moz-border-radius: 22px;&lt;br /&gt;-webkit-border-radius: 22px;&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Para esta etiqueta podemos observar dos nuevas propiedades:&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- background-size: que nos permite definir el fondo de tamaño dinámico y en caso de que el contenido o el tamaño de la página veríe, la imagen también lo hará, adaptandose a ésta.&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- border-radius: redondea el borde con un radio igual al indicado.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La mayoría de los navegadores aún no soportan estas propiedades, por lo que especificamos a continuación de éstas las propiedades nativas de cada navegador que sustituyen a las especificadas por CCS3.&lt;/p&gt;&lt;p class="MsoNormal"&gt;A la propiedad background le podemos indicar dos imágenes a utilizar (no estoy seguro si este aspecto ya se podía en CSS2, pero yo no lo conocía):&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;background: #467612 url("intro_background.png") top left (287px 100%) repeat-x,&lt;br /&gt;url("intro_flower.png") top right (653px 100%) no-repeat;&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Una nueva propiedad muy interesante es poder indicar que dentro de una etiqueta se va a mostrar una tabla, y definer las propiedades de la misma. En el siguiente código vemos un ejemplo:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;.blogPost div {&lt;br /&gt;column-count: 2;&lt;br /&gt;column-gap: 22px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.blogPost {&lt;br /&gt;column-count: 2;&lt;br /&gt;column-gap: 22px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.blogPost header {&lt;br /&gt;column-span: all;&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;En este caso indicamos que se van a mostrar dos columnas con una separación entre cada una de 22px;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Como CSS3 solo está soportado por algunas versiones de los navegadores, damos las propiedades propias de cada navegador para suplir esta carencia:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;.blogPost div {&lt;br /&gt;/* Column-count not implemented yet */&lt;br /&gt;-moz-column-count: 2;&lt;br /&gt;-webkit-column-count: 2;&lt;br /&gt;&lt;br /&gt;/* Column-gap not implemented yet */&lt;br /&gt;-moz-column-gap: 22px;&lt;br /&gt;-webkit-column-gap: 22px;&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Otra funcionalidad nueva es la de dar sombra a una etiqueta. En este caso, la vamos a dar a la imagen de la etiqueta blog:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;.blogPost img {&lt;br /&gt;margin: 22px 0;&lt;br /&gt;box-shadow: 3px 3px 7px #777;&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;El primer atributo de la propiedad box-shadow indica en dónde queremos que pare la sombra en sentido horizontal, el segundo en sentido vertical, en el tercero indicamos cómo de transparente será la sombra y por último, indicamos el color base de la sombra.&lt;/p&gt;&lt;p class="MsoNormal"&gt;De momento, esta propiedad solo funciona en Safari, por lo que indicamos las propiedades supletorias para el resto de navegadores:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;.blogPost img {&lt;br /&gt;margin: 22px 0;&lt;br /&gt;-webkit-box-shadow: 3px 3px 7px #777;&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;La última propiedad que vamos a mostrar en este artículo es la de alternar el fondo los comentarios que se muestran, de forma que se muestren en forma de cebra los comentarios. Para ello, antes no nos quedaba más remedio que utilizar JavaScript, pero ahora con CSS3 será muy sencillo, simplemente utilizando la pseudo-clase “nth-child”:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;section#comments article:nth-child(2n+1) {&lt;br /&gt;padding: 21px;&lt;br /&gt;background: #E3E3E3;&lt;br /&gt;border: 1px solid #d7d7d7;&lt;br /&gt;&lt;br /&gt;/* Border-radius not implemented yet */&lt;br /&gt;-moz-border-radius: 11px;&lt;br /&gt;-webkit-border-radius: 11px;&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;El elemento 2n indica que se aplicará al segundo comentario, 3n al tercero, y así sucesivamente.&lt;/p&gt;&lt;p class="MsoNormal"&gt;El +1 indica que se comienza a contar por el primer elemento. &lt;/p&gt;&lt;p class="MsoNormal"&gt;Como los vectores comienzan por el elemento 0, esto indica que comenzará por el segundo del vector.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Con esto finalizamos nuestro pequeño tutorial de inciación a CSS3. A medida que vayamos descubriendo nuevas funcionalidades os las iremos mostrando. Mientras tanto.. a practicar un poco.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Recordad que podéis ver también nuestro &lt;a href='http://xandrusoft.blogspot.com/2010/08/primeros-pasos-html5.html' target='_blank'&gt;tutorial de introducción a HTML5&lt;/a&gt;&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-4572994121312930803?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/4572994121312930803/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/usando-css3.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4572994121312930803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4572994121312930803'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/usando-css3.html' title='Usando CSS3'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TJHHnzSjdhI/AAAAAAAAAKQ/Mr7VA7rbGmA/s72-c/css3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2503379532840008107</id><published>2010-09-07T18:15:00.000+02:00</published><updated>2010-09-24T16:50:16.575+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gmail'/><title type='text'>Añadir Chat de Gmail a tu página web</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TIZkzyUVzGI/AAAAAAAAAKI/h3i_o6rZgKA/s320/gmail.jpeg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i estamos pensando en dar algun servicio de contacto a nuestros usuarios o simplemente nos queremos comunicar a través de nuestra página web, Google nos ofrece un Gadget muy facil de configurar, llamado Google Talk cahtback badges.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para configurarlo, accedemos a la  &lt;a href='http://www.google.com/talk/service/badge/New' target='_blank'&gt;página del proyecto &lt;/a&gt;desde el navegador con nuestra cuenta de google activa y configuramos las opciones que nos ofrecen en la pestaña edit a nuestro gusto. Una vez finalizada la configuración, simplemente nos queda copiar el código que se muestra en la parte inferior de la página y añadirlo a nuestra página web.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2503379532840008107?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2503379532840008107/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/anadir-chat-de-gmail-tu-pagina-web.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2503379532840008107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2503379532840008107'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/anadir-chat-de-gmail-tu-pagina-web.html' title='Añadir Chat de Gmail a tu página web'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TIZkzyUVzGI/AAAAAAAAAKI/h3i_o6rZgKA/s72-c/gmail.jpeg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-5816490858969162806</id><published>2010-09-02T10:07:00.000+02:00</published><updated>2010-09-24T16:50:28.885+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Buscar archivos en Linux</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/TH9a-nIAKcI/AAAAAAAAAKA/iWs1-ssP-fk/s320/linux_tux.jpg" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i no conocemos la ruta exacta de algún archivo que necesitamos modificar o conocer su ubicación, podemos usar el comando locate para ello. La sintaxis es muy sencilla:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;Locate "archivo"&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;La sencillez del comando lo hace muy potente, por lo que… ya nunca volveréis a perder un archivo dentro de la estructura de directorios.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-5816490858969162806?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/5816490858969162806/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/buscar-archivos-en-linux.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5816490858969162806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5816490858969162806'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/buscar-archivos-en-linux.html' title='Buscar archivos en Linux'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WFPalWVyjPQ/TH9a-nIAKcI/AAAAAAAAAKA/iWs1-ssP-fk/s72-c/linux_tux.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-9200784376464356317</id><published>2010-09-01T12:27:00.000+02:00</published><updated>2010-09-01T12:38:17.602+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML5'/><title type='text'>Primeros pasos HTML5 II</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 194px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/THtmXlMC4tI/AAAAAAAAAJc/TU65FS9QORU/s320/html5.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5498870812860166098" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;n &lt;a href='http://xandrusoft.blogspot.com/2010/08/primeros-pasos-html5.html' target='_blank'&gt;el primer artículo&lt;/a&gt; hemos creado la estructura básica de una página con HTML5. Ahora es el turno de añadiendo contenido. Veremos el nuevo código y a continuación comentaremos las novedades introducidas.&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;!DOCTYPE HTML&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html lang="es-es"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;meta charset="UTF-8"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="estilo.css"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;title&amp;gt;Page title&amp;lt;/title&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;header&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Título de la página&amp;lt;/h1&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/header&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;nav&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Blog&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;About&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Archivos&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Contacto&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;li class="subscribe"&amp;gt;&amp;lt;a href="#"&amp;gt;Subscribete via. RSS&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/nav&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;section id="intro"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h2&amp;gt;Que te gusta hacer?&amp;lt;/h2&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;Comentanos tus aficiones&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;article class="blogPost"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h2&amp;gt;Título del post&amp;lt;/h2&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;Publicado el &amp;lt;time datetime="2009-06-29T23:31:45+01:00"&amp;gt;5 de Septiembre 2010&amp;lt;/time&amp;gt; por &amp;lt;a href="#"&amp;gt;Xandru Cancelasr&amp;lt;/a&amp;gt; - &amp;lt;a href="#comments"&amp;gt;3 commentarios&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;Seguiremos comentado..&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/article&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;video src="http://v17.lscache5.c.youtube.com/videoplayback?ip=0.0.0.0&amp;sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Coc%3AU0dXR1dSTl9FSkNNN19PTFJB&amp;fexp=900161&amp;itag=18&amp;ipbits=0&amp;sver=3&amp;ratebypass=yes&amp;expire=1282770000&amp;key=yt1&amp;signature=97D02D5AA98C223F22168D150E5E1F7049CEFA22.9812D05BCFDD36E77A2719183C4DE85080C1538A&amp;id=b44f53795df29936" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;form action="#" method="post"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h3&amp;gt;Post a comment&amp;lt;/h3&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;label for="name"&amp;gt;Nombre&amp;lt;/label&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;input name="name" id="name" type="text" required /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;label for="email"&amp;gt;E-mail&amp;lt;/label&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;input name="email" id="email" type="email" required /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;label for="website"&amp;gt;Website&amp;lt;/label&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;input name="website" id="website" type="url" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;label for="comment"&amp;gt;Comentario&amp;lt;/label&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;textarea name="comment" id="comment" required&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;input type="submit" value="Post comment" /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;aside&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h3&amp;gt;Categorías&amp;lt;/h3&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;HTML5&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;CSS3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h3&amp;gt;Archivos&amp;lt;/h3&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Agosto 2010&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Septiembre 2010&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/aside&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;footer&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;section id="about"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h3&amp;gt;About&amp;lt;/h3&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;Conoce más &amp;lt;a href="#"&amp;gt;sobre mí&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;section id="blogroll"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h3&amp;gt;Blogroll&amp;lt;/h3&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Blogroll 1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Blogroll 2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;section id="enlace"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h3&amp;gt;Enlaces&amp;lt;/h3&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/header&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Enlace 1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Enlace 2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/footer&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- En la pimera sección (intro) vemos que se añade la etiqueta header para especificar un subtítulo.&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- En la sección central se introduce una nueva etiqueta “article” que nos indica que se trata de un texto que puede ser utilizado y redistribuida como feed, por ejemplo.&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- Time indica que se trata de un horario o fecha. Desglosaremos su formato:&lt;/p&gt;&lt;p class="MsoNormal MsoDobleTabulado"&gt;o En primer lugar se muestra la fecha con formato yyyy-mm-dd&lt;/p&gt;&lt;p class="MsoNormal MsoDobleTabulado"&gt;o La “T” indica que se va a usar hora local.&lt;/p&gt;&lt;p class="MsoNormal MsoDobleTabulado"&gt;o A continuación la hora local en formato hh:mm:ss&lt;/p&gt;&lt;p class="MsoNormal MsoDobleTabulado"&gt;o Por último indicamos la zona GTM en la que nos encontramos. En nuestro caso será Madrid GTM +2.&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- En el formulario vemos que se añaden dos nuevos tipos de inputs: email y url. Si escribimos required como atributo, el campo será obligatorio para el usuario.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Aquí finalizamos nuestro mini tutorial introductorio a HTML5. En cuanto vayamos probando nuevas utilidades os iremos informando.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si tienes dudas sobre si debes configurar Apache para soporta HTML5, consulta el &lt;a href='http://xandrusoft.blogspot.com/2010/08/configurar-apache-para-utilizar-html5.html' target='_blank'&gt;siguiente artículo&lt;/a&gt;.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-9200784376464356317?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/9200784376464356317/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/primeros-pasos-html5-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/9200784376464356317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/9200784376464356317'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/09/primeros-pasos-html5-ii.html' title='Primeros pasos HTML5 II'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/THtmXlMC4tI/AAAAAAAAAJc/TU65FS9QORU/s72-c/html5.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-3946117792326317701</id><published>2010-08-31T12:42:00.000+02:00</published><updated>2010-09-24T16:50:56.440+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML5'/><title type='text'>Configurar Apache para utilizar HTML5</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/THzb8zZ2iSI/AAAAAAAAAJ4/MA45C97yoAc/s320/html5.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;eguro que muchos os hacéis la pregunta de que se debe hacer para poder crear nuestras páginas con HTML5 y que el navegador las interprete correctamente.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La respuesta es que no tenemos que hacer nada porque es el navegador el que interpreta el lenguaje utilizado por lo que, crear vuestras páginas y subirlas a vuestro servidor sin miedo.&lt;/p&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-3946117792326317701?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/3946117792326317701/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/08/configurar-apache-para-utilizar-html5.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3946117792326317701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3946117792326317701'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/08/configurar-apache-para-utilizar-html5.html' title='Configurar Apache para utilizar HTML5'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WFPalWVyjPQ/THzb8zZ2iSI/AAAAAAAAAJ4/MA45C97yoAc/s72-c/html5.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2372742742842582393</id><published>2010-08-30T10:17:00.000+02:00</published><updated>2010-09-01T12:38:08.441+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML5'/><title type='text'>Primeros pasos HTML5</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:left;cursor:pointer; cursor:hand;width: 200px; height: 194px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/THtmXlMC4tI/AAAAAAAAAJc/TU65FS9QORU/s320/html5.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5498870812860166099" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;n vista a que las principales compañías ya están usando esta tecnología para sus aplicaciones, nosotros no vamos a ser menos y nos disponemos a descubrir algunas de las novedades, y nada mejor que hacerlo con un ejemplo en el que crearemos nuestra primera página con HTML5.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Lo primero que debemos conocer son las diferentes etiquetas que podemos y debemos utilizar. Además de las ya conocidas &amp;lt;head&amp;gt; y &amp;lt;body&amp;gt; se incorporan algunas de mucha utilidad como &amp;lt;footer&amp;gt;, &amp;lt;nav&amp;gt; o &amp;lt;article&amp;gt;. Poco a poco iremos explicando todas y cada una de ellas.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Vamos a comenzar escribiendo algo de código:&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;!DOCTYPE HTML&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html lang="es-es"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;meta charset="UTF-8"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="estilo.css"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;title&amp;gt;Page title&amp;lt;/title&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;header&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Page title&amp;lt;/h1&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/header&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;nav&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Navigation --&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/nav&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;section id="intro"&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Introduction --&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;section&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Main content area --&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/section&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;aside&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Sidebar --&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/aside&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;footer&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Footer --&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/footer&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&amp;#160;&amp;#160;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;Comentaremos un poco la primera estructura:&lt;/p&gt;- En HTML5 solo hay un DOCTYPE que es la primera línea de código que se ha de insertar.&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- En la etiqueta HTML podemos indicar el lenguaje que utilizaremos.&lt;/p&gt;&lt;p class="MsoNormal MsoTabulado"&gt;- Dentro de &amp;lt;body&amp;gt; se han especificado nuevas etiquetas que nos indican la estructura interna de la página. Estas etiquetas son:&lt;/p&gt;&lt;p class="MsoNormal MsoDobleTabulado"&gt;o &amp;lt;header&amp;gt;  que indica que se trata de la cabecera de la página, incluyendo normalmente el título de la página o el logotipo y también es habitual que se incluyan los heading tags.&lt;/p&gt;&lt;p class="MsoNormal MsoDobleTabulado"&gt;o &amp;lt;nav&amp;gt;  indica que se trata de una lista de enlace importantes (en este caso un menú de navegación).&lt;/p&gt;&lt;p class="MsoNormal MsoDobleTabulado"&gt;o &amp;lt;section&amp;gt;  Divide la página en secciones.&lt;/p&gt;&lt;p class="MsoNormal MsoDobleTabulado"&gt;o &amp;lt;aside&amp;gt;  Se utiliza para indicar que se trata de una zona cuyo contenido esta relacionado con la página principal y puede tener sentido por si mismo. Se utiliza normalmente para sidebars, publicad o grupo de enlaces.&lt;/p&gt;&lt;p class="MsoNormal MsoDobleTabulado"&gt;o &amp;lt;footer&amp;gt;  donde se incluye el pie de la página.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Una vez comentada la estructura general, en la segunda parte del artículo iremos dando contenido a cada etiqueta para que se vaya pareciendo lo más posible a una página de verdad.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Puedes ver la &lt;a href='http://xandrusoft.blogspot.com/2010/08/primeros-pasos-html5.html' target='_blank'&gt;segunda parte&lt;/a&gt; del tutorial.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si tienes dudas sobre si debes configurar Apache para soporta HTML5, consulta el &lt;a href='http://xandrusoft.blogspot.com/2010/08/configurar-apache-para-utilizar-html5.html' target='_blank'&gt;siguiente artículo&lt;/a&gt;.&lt;/p&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5442261851280970226" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" style="cursor: pointer; display: block; height: 67px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2372742742842582393?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2372742742842582393/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/08/primeros-pasos-html5.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2372742742842582393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2372742742842582393'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/08/primeros-pasos-html5.html' title='Primeros pasos HTML5'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/THtmXlMC4tI/AAAAAAAAAJc/TU65FS9QORU/s72-c/html5.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-4634972897246465113</id><published>2010-08-05T22:30:00.000+02:00</published><updated>2010-08-05T22:32:18.073+02:00</updated><title type='text'>Cerrado por vacaciones</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TFseML4xITI/AAAAAAAAAJM/f6fk5lPYpe0/s320/CerradoVacacionesManoxFilms.jpg" width="320" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;D&lt;/span&gt;&lt;div class="MsoNormal"&gt;espués de un mes actualizando todo lo posible, me veo obligado a realizar una pequeña pausa, ya que todos necesitamos tomarnos un pequeño descando de vez en cuando.&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Espero que me comprendáis y que vayáis repasando conceptos para a la vuelta hacer muchos comentarios.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Felices vacaciones a todos los que podáis disfrutarlas.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-4634972897246465113?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/4634972897246465113/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/08/cerrado-por-vacaciones.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4634972897246465113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4634972897246465113'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/08/cerrado-por-vacaciones.html' title='Cerrado por vacaciones'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TFseML4xITI/AAAAAAAAAJM/f6fk5lPYpe0/s72-c/CerradoVacacionesManoxFilms.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8722040853634029265</id><published>2010-07-28T10:23:00.000+02:00</published><updated>2010-09-25T09:41:09.012+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Complementos Firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='User Agent'/><title type='text'>Trabajar con distintos User Agent</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 194px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TE_p3rpLL9I/AAAAAAAAAJE/EBi2Mds_TC0/s200/firefox-logo1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5498870812860166098" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;on la expansión de las nuevas tecnologías y los nuevos dispostivos que son capaces de conectarse a Internet, cada vez son más los tipos diferentes de navegadores a través de los que se accede a Internet, y cada uno con sus propias características.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Cuando creamos una página web debemos tener en cuenta que los usuarios pueden acceder con cualquier navegador del mercado y desde cualquier dispositivo –incluso desde el movil- por lo que es más que recomendable adaptar la página para que se muestre correctamente independientemente del navegador y dispositvo utilizado para acceder a ella.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para poder desarrollar una página web que se adapte a cualquier navegador, debemos comprobar que se adapta a todos ellos. Como sería inviable probar con todos y cada uno de los navegadores disponibles en el mercado, los desarrolladores de &lt;a href='http://chrispederick.com/work/user-agent-switcher/' target='_blank'&gt;chrispederick.com&lt;/a&gt; han creado un &lt;strong&gt;add-ons para firefox&lt;/strong&gt; que nos permite, desde el mismo navegador, simular el user agent de cualquier otro. Este complemento se llama &lt;strong&gt;User Agent Switcher&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si quereis disponer de todos los User Agent disponibles podeis copiar el siguiente &lt;a href='http://webdebolsillo.com/descargar/user-agents-moviles.xml' target='_blank'&gt;archivo xml&lt;/a&gt; e importarlo en el complemento que acabáis de instalar.&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8722040853634029265?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8722040853634029265/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/07/trabajar-con-distintos-user-agent.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8722040853634029265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8722040853634029265'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/07/trabajar-con-distintos-user-agent.html' title='Trabajar con distintos User Agent'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TE_p3rpLL9I/AAAAAAAAAJE/EBi2Mds_TC0/s72-c/firefox-logo1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-572460700310672537</id><published>2010-07-27T17:16:00.000+02:00</published><updated>2010-08-01T16:10:56.496+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Apache no reconoce &lt;?=$variable ¿&gt;</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 148px; height: 200px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TCHsTiMQHEI/AAAAAAAAAG8/cb4eXB39-HI/s200/apache-1.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5485925641453837378" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;A&lt;/span&gt;&lt;p class="MsoNormal"&gt;nte todo debemos aclarar que &lt;em&gt;&amp;lt;?=$variable ¿&amp;gt;&lt;/em&gt; es lo mismo que hacer &lt;em&gt;&amp;lt;?php echo $ variable; ?&amp;gt;&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si nuestro Servidor no reconoce la forma corta, es porque la opción de “&lt;strong&gt;short tags&lt;/strong&gt;” no se encuentra activada. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si disponemos de control sobre el servidor Apache no tendremos más que habilitar la opción short_open_tag en el archivo &lt;strong&gt;php.ini&lt;/strong&gt;, es decir, indicar la línea:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;short_open_tag = On&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Como vemos, para utilizar este formato debemos de tener la certeza de que se encuentra activado dicho modo en el servidor o tener control sobre él, por lo que es preferible utilizar siempre la forma larga, es decir:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;?=$variable ¿&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-572460700310672537?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/572460700310672537/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/07/apache-no-reconoce_27.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/572460700310672537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/572460700310672537'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/07/apache-no-reconoce_27.html' title='Apache no reconoce &amp;lt;?=$variable ¿&amp;gt;'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TCHsTiMQHEI/AAAAAAAAAG8/cb4eXB39-HI/s72-c/apache-1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-3461060484080782606</id><published>2010-07-21T12:33:00.000+02:00</published><updated>2010-07-21T12:36:07.499+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Separar palabras de un campo de texto por cierto carácter en php</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 128px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TEbM3PuRiCI/AAAAAAAAAI8/2KkpNGqA2tA/s200/php.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5496305644737759266" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i necesitamos separar los caracteres de una variable por algún campo concreto podemos usar la función str_replace(). Vemos un ejemplo:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Tenemos la variable &lt;em&gt;$titulo = “Título de la expresión”&lt;/em&gt; y queremos que las palabras finalmente se encuentren separadas por guiones, es decir, que &lt;em&gt;$resultado = “Título-de-la-expresión”&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;La expresión a utilizar sería:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$resultado = str_replace(" ","-",$titulo);&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-3461060484080782606?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/3461060484080782606/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/07/separar-palabras-de-un-campo-de-texto.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3461060484080782606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3461060484080782606'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/07/separar-palabras-de-un-campo-de-texto.html' title='Separar palabras de un campo de texto por cierto carácter en php'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TEbM3PuRiCI/AAAAAAAAAI8/2KkpNGqA2tA/s72-c/php.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1472959308497565678</id><published>2010-06-30T09:56:00.000+02:00</published><updated>2010-09-06T12:09:30.983+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Comandos para manejar VIM</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TCr7jvzvWLI/AAAAAAAAAIU/LQtdMVgRgec/s200/vim-editor_logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5488475687451842738" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i estamos utilizando Linux y queremos editar cualquier archivo desde el modo consola, podemos utilizar varios editores. En este caso vamos a aprender a manejar el &lt;strong&gt;VIM&lt;/strong&gt;, ya que es de los más potentes de los que dispone el S.O.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Lo primero que debemos saber es que dispone de dos modos de uso:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;• Cuando editamos un fichero se abre el editor en modo normal desde el que podemos introducir atajos para realizar operaciones. Es un modo de visualización del contenido y no de edición, es decir, no nos permite realizar modificaciones.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;• Para comenzar a editar, y por tanto entrar al modo de edición, debemos teclear la secuencia &lt;em&gt;i&lt;/em&gt; o pulsar la tecla &lt;em&gt;insert&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez que nos encontramos en modo editor podemos comprobar que nos muestra las palabras/caracteres en diferentes colores. Esto se debe a que detecta automáticamente, por el tipo de contenido, el lenguaje en que está escrito el archivo. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En caso de que nuestro vim no disponga de esta faceta, puede que se daba a que se encuentra instalada una versión básica del editor. Esto se soluciona instalando la versión completa, con el comando:&lt;/p&gt;&lt;br /&gt;Aptitude install vim-common &lt;br /&gt;&lt;p class="MsoNormal"&gt;y escribiendo en el modo normal del vim &lt;em&gt;:syntax on&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En este punto es interesante que conocer alguno de los comandos más utilizados:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;• Opciones de texto (modo normal)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;May+v&lt;/em&gt; == Seleccionar texto&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;dd&lt;/em&gt; == Eliminar la línea actual&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;u&lt;/em&gt; == Deshacer el último cambio&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;CRTL+R&lt;/em&gt; == Rehacer el último cambio&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;guu&lt;/em&gt; == Convertir a minúsculas la línea actual&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;gUU&lt;/em&gt; == Convertir a mayúsculas la línea actual&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;gg&lt;/em&gt; == Posicionarse al inicio del fichero&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;G&lt;/em&gt; == Posicionarse al final del fichero&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:num&lt;/em&gt; == colocarse en la línea num&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;ga&lt;/em&gt; == Muestra el código ASCII, hexadecimal y octal del carácter actual&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;• Guardar y salir (modo normal)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:q&lt;/em&gt; == Salir del editor sin guardar&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:q!&lt;/em&gt; == Salir del editor sin guardar ni pedir confirmación&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:wq&lt;/em&gt; == Guardar y Salir del editor&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:w fich.txt&lt;/em&gt; == Guarda en un fichero llamado fich.txt&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:e fich.txt&lt;/em&gt; == Cierra el fichero actual y abre el fich.txt&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;• Comandos útiles (modo normal)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;x&lt;/em&gt; == borrar caracter&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:%s/texto_1/texto_2/&lt;/em&gt; == sustituir texto&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;/texto_a_buscar/&lt;/em&gt; == Buscar texto (si pulsamos “n” buscara la siguiente coincidencia)&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;• Preferencias por defecto (modo normal)&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set ts=num&lt;/em&gt; == fijar tabulados en num espacios&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set sw=num&lt;/em&gt; == fijar indexados en num espacios&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set number/nonumber&lt;/em&gt; == numerado de ficheros&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set backup/nobackup&lt;/em&gt; == Copia de seguridad automática&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set directory=dir&lt;/em&gt; == Carpeta de las copias&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:syntax on/off&lt;/em&gt; == Resaltado de sintaxis&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:color {evening/darkblue/desert/elflord/ koehler/morning}&lt;/em&gt; == Cambiar color&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set cindent&lt;/em&gt; == Indentado automático&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set mouse=a/mouse=&lt;/em&gt; == Uso del ratón&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set paste/nopaste&lt;/em&gt; == Modo pegar texto&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:spell&lt;/em&gt; == Corrector ortográfico&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:setlocal spell spelllang=es&lt;/em&gt; == Cambiar idioma&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set spellfile=~/.vimdic&lt;/em&gt; == Diccionario de palabras desconocidas&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;• Más comandos&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:!comando&lt;/em&gt; == Ejecutar un comando&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:shell&lt;/em&gt; == Pausar la edición (para volver al editor escribir exit)&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;o &lt;em&gt;:set number&lt;/em&gt; == Muestra las líneas numeradas&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Seguro que muchos de vosotros conocéis más comandos, por lo que os animo a que compartáis vuestros conocimientos con todos nosotros.&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1472959308497565678?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1472959308497565678/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/comandos-para-manejar-vim.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1472959308497565678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1472959308497565678'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/comandos-para-manejar-vim.html' title='Comandos para manejar VIM'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TCr7jvzvWLI/AAAAAAAAAIU/LQtdMVgRgec/s72-c/vim-editor_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-5957606150956844575</id><published>2010-06-28T22:18:00.000+02:00</published><updated>2010-06-28T22:28:00.510+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Configuración de seguridad de SSH en servidor Apache con Ubuntu</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 133px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/TCkE8hDmyMI/AAAAAAAAAIM/QhkRg2R0jkA/s200/putty-connection-manager.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5487923058639816898" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i queremos incrementar la seguridad del el servicio &lt;strong&gt;SSH&lt;/strong&gt; de nuestra máquina, que viene configurado por defecto, lo que haremos es modificar algunas opciones para darle más seguridad en el archivo &lt;em&gt;/etc/ssh/sshd_config&lt;/em&gt;, aunque antes de modificarlo, haremos una copia de seguridad del mismo para poder restablecerlo, en caso de que hayamos modificado algo que no debíamos, mediante las siguientes líneas de código:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original&lt;br /&gt;sudo chmod a‐w /etc/ssh/sshd_config.original&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez copiado a un nuevo archivo y protegido contra escritura para no poder modificarlo, procedemos a su modificación:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;1. El puerto asignado al servicio (22) lo cambiamos por el 5301. Para ello buscamos la línea &lt;em&gt;“Port 22”&lt;/em&gt; y en su lugar escribimos &lt;em&gt;“Port 5301”&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;2. Establecemos el número máximos de intentos fallidos de conexión a 1. Si no la tenemos aún, añadimos la línea &lt;em&gt;“MaxAuthTries 1”&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;3. Indicamos que el número máximo de conexiones concurrentes no autenticadas sean 2 mediante la siguiente línea &lt;em&gt;“MaxStartups 2”&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;4. Establecemos la dirección de escucha con nuestra IP Privada: &lt;em&gt;“ListenAdrress 192.168.2.100 (IP maquina)”&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;5. Indicamos qué usuarios pueden conectarse y desde qué IP: &lt;em&gt;“AllowUsers usuario@192.168.0.11”&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;6. También debemos tener en cuenta que probablemente, al ser administradores, necesitaremos conectarnos desde cualquier máquina independientemente de si se encuentra en nuestra red o no, por lo que debemos añadir algún usuario para dicho propósito: &lt;em&gt;”AllowUsers usuario usuario2 usuario3”&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;7. Por último, deshabilitamos la opción de conectarnos como root, para evitar intentos de intrusión externos, editando la línea &lt;em&gt;“PermitRootLogin no”&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si queremos completar aún más la seguridad, podemos configurar los permiso de los host que se intenten conectar al servicio. Para ello debemos realizar las siguientes modificaciones:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;1. En el archivo &lt;em&gt;/etc/host.deny&lt;/em&gt; añadimos la siguiente línea: &lt;em&gt;“ALL: ALL”&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;2. Editamos el archivo &lt;em&gt;/etc/host.allow&lt;/em&gt; y añadimos los host a los que permitimos el acceso. En este caso solo lo haremos a un único ordenador. &lt;em&gt;“sshd: 192.168.0.104 (IP portatil)”&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez guardados los cambios, debemos reiniciar el servicio para que tengan efecto:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo /etc/init.d/ssh restart&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-5957606150956844575?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/5957606150956844575/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/configuracion-de-seguridad-de-ssh-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5957606150956844575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5957606150956844575'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/configuracion-de-seguridad-de-ssh-en.html' title='Configuración de seguridad de SSH en servidor Apache con Ubuntu'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WFPalWVyjPQ/TCkE8hDmyMI/AAAAAAAAAIM/QhkRg2R0jkA/s72-c/putty-connection-manager.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1595566960422886232</id><published>2010-06-21T09:53:00.000+02:00</published><updated>2010-06-23T13:34:24.695+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Problema con .htaccess en Apache con Ubuntu</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 183px; height: 200px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TCHusS59ZNI/AAAAAAAAAHE/T3rH2KlGMi4/s200/apache_display.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5485928265870566610" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;D&lt;/span&gt;&lt;p class="MsoNormal"&gt;ebemos tener en cuenta que con la configuración por defecto del servidor, no reconocerá el archivo &lt;strong&gt;.htaccess&lt;/strong&gt;. Para solventar este problema debemos modificar una directiva en el archivo de configuración de apache, concretamente en &lt;em&gt;/etc/apache2/sites-available/default&lt;/em&gt;, en el que modificaremos dentro de la directiva de nuestro directorio de trabajo la linea &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;AllowOverride None&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Por la línea&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;AllowOverride All&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez realizado el cambio reiniciamos el servicio y tendremos resuelto el problema.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Un ejemplo de esa configuración es la siguiente:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;Directory /home/usuario/httpd&amp;gt;&lt;br /&gt;&lt;br /&gt;AllowOverride All&lt;br /&gt;&lt;br /&gt;Order Deny,Allow&lt;br /&gt;&lt;br /&gt;Allow from all&lt;br /&gt;&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si queréis saber cómo configurar el archivo &lt;strong&gt;.htaccess&lt;/strong&gt; podéis consultar el &lt;a href='http://xandrusoft.blogspot.com/2010/06/archivo-de-configuracion-de-apache.html' target='_blank'&gt;siguiente artículo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1595566960422886232?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1595566960422886232/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/problema-con-htaccess-en-apache-con.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1595566960422886232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1595566960422886232'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/problema-con-htaccess-en-apache-con.html' title='Problema con .htaccess en Apache con Ubuntu'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TCHusS59ZNI/AAAAAAAAAHE/T3rH2KlGMi4/s72-c/apache_display.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6978593261339901117</id><published>2010-06-16T11:32:00.000+02:00</published><updated>2010-06-23T14:02:14.732+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Insertar estadísticas en página web (google analytics API)</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 165px; height: 200px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TCHyUvrkMhI/AAAAAAAAAHM/zEhL3QXN2aI/s200/google-analytics-logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5485932259324473874" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i disponemos de un portal de gestión y queremos mostrar una página de estadísticas de las visitas que recibimos o simplemente las queremos tener en una página web, podemos usar la &lt;strong&gt;API de Google Analytics&lt;/strong&gt; que nos facilitará enormemente este trabajo.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para ello, lo primero que tenemos que hacer es descargarnos la &lt;strong&gt;API de Analytics&lt;/strong&gt; desde la página de &lt;a href='http://www.askaboutphp.com/wp-post-images/63/googleanalytics.class.zip'&gt;askaboutphp&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez disponemos del fichero lo copiamos a nuestro directorio de trabajo, siendo más que recomendable copiarlo en el directorio en el cual tenemos todas las clases. Debemos modificar algunos parámetros de la clase propios, como puede ser el nombre de usuario, la password, etc. También podemos modificar dicha clase para adaptarla a nuestras necesidades. Nuestra recomendación es crer nua función que obtenga automáticamentes nuestro usuario y password de algún fichero o base de datos para no tener que incluirlo en ningún otro archivo.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;El siguiente paso es obtener los datos que queremos. Para ello, debemos crear una página que consulte, mediante la &lt;strong&gt;API&lt;/strong&gt;, los datos estadísticos y los devuelva. Debemos llamar al objeto de la clase e indicar cual es el identificador de nuestra cuenta con los siguientes parámetros:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;// create an instance of the GoogleAnalytics class using your own Google {email} and {password}&lt;br /&gt;$ga = new GoogleAnalytics(parámtros del constructor);&lt;br /&gt;// set the Google Analytics profile you want to access - format is 'ga:123456';&lt;br /&gt;$ga-&gt;setProfile('ga:xxxxxxxx');&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para obtener el &lt;em&gt;Google Analytics profile&lt;/em&gt; debemos acceder al panel de gestión de nuestras cuentas de analytics (lógicamente debemos tener una creada) y en la pantalla en la que se muestran los informes podemos ver que al final de la URL se encuentran unos números, que serán los que debemos añadir como atributo de la función.&lt;/p&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 31px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TBig0q2KIzI/AAAAAAAAAGs/HNykyN2tKxU/s400/id_analytics.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5483309373038666546" /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En nuestro caso utilizaremos unas gráficas para mostrar los resultados. Si quereis utilizar dichas gráficas podéis mirar como se hace en el siguiente post. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Un ejemplo para obtener el número de visitas diarias durante los diez últimos días a nuestro sitio es:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ga = new GoogleAnalytics("google.conf");&lt;br /&gt;// set the Google Analytics profile you want to access - format is 'ga:123456';&lt;br /&gt;$ga-&gt;setProfile('ga:xxxxxxxx);&lt;br /&gt;// set the date range we want for the report - format is YYYY-MM-DD&lt;br /&gt;echo $fecha = time();&lt;br /&gt;$ga-&gt;setDateRange(date("Y-m-d",$fecha-(9*24*60*60)),date("Y-m-d",$fecha));&lt;br /&gt;$report = $ga-&gt;getReport(&lt;br /&gt;array('dimensions'=&gt;urlencode('ga:date'),&lt;br /&gt;'metrics'=&gt;urlencode('ga:visits'),&lt;br /&gt;  'sort'=&gt;'-ga:date'&lt;br /&gt;)&lt;br /&gt;);&lt;br /&gt;foreach($report as $key =&gt; $valor){&lt;br /&gt; foreach($valor as $k =&gt; $v){&lt;br /&gt;  print $v.";";&lt;br /&gt; }&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si quereis información completa a cerca de todas las opciones que nos brinda esta API podéis consultar &lt;a href='http://code.google.com/intl/es-ES/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html' target='_blank'&gt;esta categoría&lt;/a&gt; de la documentación de Google code.&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6978593261339901117?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6978593261339901117/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/insertar-estadisticas-en-pagina-web.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6978593261339901117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6978593261339901117'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/insertar-estadisticas-en-pagina-web.html' title='Insertar estadísticas en página web (google analytics API)'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TCHyUvrkMhI/AAAAAAAAAHM/zEhL3QXN2aI/s72-c/google-analytics-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7982924489349619796</id><published>2010-06-15T10:08:00.000+02:00</published><updated>2010-06-23T13:43:01.945+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Archivo de configuración de Apache .htaccess</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 183px; height: 200px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TCHusS59ZNI/AAAAAAAAAHE/T3rH2KlGMi4/s200/apache_display.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5485928265870566610" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;s el archivo de configuración de directorios de Apache. Es el primer archivo que carga el servidor al acceder a una página y permite personalizar la configuración de las directivas del fichero principal de configuración del Apache, siempre y cuando el usuario tenga los permisos apropiados.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En este caso mostraremos la configuración estandar de un archivo .htaccess, aunque las posibilidades de configuración son muchas, pudiendo modificar la mayoría de las directivas del servidor.&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;//Indicamos que en caso de disponer de vaias versiones de PHP se utilice la versión 5&lt;br /&gt;SetEnv PHP_VER 5&lt;br /&gt;&lt;br /&gt;//Personalizamos la página de error 404, haciendo referencia a una creada por nosotros&lt;br /&gt;ErrorDocument 404 /404.php&lt;br /&gt;&lt;br /&gt;//Evitamos que se liste el contenido de los directorios&lt;br /&gt;Options All –Indexes&lt;br /&gt;&lt;br /&gt;//Impedimos que se muestren los archivos de imagen&lt;br /&gt;IndexIgnore *.gif *.jpg *.ico&lt;br /&gt;&lt;br /&gt;//Solo permitimos el acceso a un archivo desde localhost&lt;br /&gt;&amp;lt;Files "directorio/archivo.php"&amp;gt;&lt;br /&gt;Order Deny,Allow&lt;br /&gt;Deny from all&lt;br /&gt;Allow from localhost&lt;br /&gt;&amp;lt;/Files&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si queremos saber más sobre este archivo podemos consultar en la &lt;a href='http://httpd.apache.org/docs/2.1/howto/htaccess.html' target='_blank'&gt;documentación de Apache&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si tienes problemas con el archivo y tu servidor Apache no lo reconoce, consulta el &lt;a href='http://xandrusoft.blogspot.com/2010/06/problema-con-htaccess-en-apache-con.html' target='_blank'&gt;siguiente artículo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7982924489349619796?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7982924489349619796/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/archivo-de-configuracion-de-apache.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7982924489349619796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7982924489349619796'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/06/archivo-de-configuracion-de-apache.html' title='Archivo de configuración de Apache .htaccess'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TCHusS59ZNI/AAAAAAAAAHE/T3rH2KlGMi4/s72-c/apache_display.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-5283872557686854842</id><published>2010-05-31T15:48:00.000+02:00</published><updated>2010-06-23T14:01:59.162+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Mostrar fecha y hora en español con Php</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 105px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TCH1wEt3tmI/AAAAAAAAAHc/odVjQHPXf2g/s200/imglogophp.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5485936027362637410" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;ara mostrar la fecha con el formato: Día de la semana, día, mes del año, año podemos utilizar la siguiente función:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;setlocale(LC_TIME, 'spanish');&lt;br /&gt;&lt;br /&gt;print "&amp;lt;strong style='color: blue;'&amp;gt;".strftime(" &amp;#160;&amp;#160;%A %#d de %B del %Y")."";&lt;br /&gt;&lt;br /&gt;?&amp;gt; &lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para mostrar la hora el formato AM/PM:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;print "&amp;lt;strong style='color: red;'&amp;gt;  ".date("h:i:s. A")." ";&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-5283872557686854842?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/5283872557686854842/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/mostrar-fecha-y-hora-en-espanol-con-php.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5283872557686854842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5283872557686854842'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/mostrar-fecha-y-hora-en-espanol-con-php.html' title='Mostrar fecha y hora en español con Php'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TCH1wEt3tmI/AAAAAAAAAHc/odVjQHPXf2g/s72-c/imglogophp.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1049041118896800707</id><published>2010-05-25T09:54:00.000+02:00</published><updated>2010-06-23T14:04:00.591+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Hacer copia de seguridad en Android</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/TCH3d3P9JFI/AAAAAAAAAHk/Yqk8U1zk7Xk/s200/android_vector.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5485937913533113426" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i vamos a &lt;em&gt;cacharrear&lt;/em&gt; con nuestro teléfono, bien sea para instalarle una nueva ROM o porque queremos hacer algún cambio importante en la configuración es recomendable que realicemos una copia de seguridad de nuestros archivos. Para ello tenemos dos opciones:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;* Si solo queremos guardar nuestros archivos personales como SMS, MMS, imágenes o videos podemos usar el programa &lt;strong&gt;G-Backup&lt;/strong&gt; que nos permite exportar todos estos archivos a nuestra cuenta de GMail. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;&lt;strong&gt;&lt;em&gt;Nota:&lt;/em&gt;&lt;/strong&gt; si vamos a realizar varias copias en distintos momentos, se han de eliminar las etiquetas creadas en Gmail para poder almacenar las nuevas, ya que sino no guardará los cambios.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;* Si queremos hacer una copia del sistema completo podemos descargarnos uno de los programas de backup disponibles en el Market o si tenemos nuestro teléfono &lt;em&gt;rooteado&lt;/em&gt;, podemos hacerlo desde el modo Recovery con la herramienta &lt;strong&gt;Nandroid&lt;/strong&gt;. Si queréis saber como rootear vuestro Magic podéis consultar &lt;a href='http://xandrusoft.blogspot.com/2010/05/rootear-htc-magic.html' target='_blank'&gt;el siguiente artículo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;La mejor opción es la última que se plantea, hacer un &lt;em&gt;Nandroid&lt;/em&gt;, por lo que no si tenies &lt;em&gt;rooteado&lt;/em&gt; el teléfono, no dudéis en hacerlo.&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1049041118896800707?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1049041118896800707/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/hacer-copia-de-seguridad-en-android.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1049041118896800707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1049041118896800707'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/hacer-copia-de-seguridad-en-android.html' title='Hacer copia de seguridad en Android'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WFPalWVyjPQ/TCH3d3P9JFI/AAAAAAAAAHk/Yqk8U1zk7Xk/s72-c/android_vector.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-4943179826819870693</id><published>2010-05-18T16:12:00.000+02:00</published><updated>2010-06-23T14:06:58.283+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Capturar pantalla de Android con el PC</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 143px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/TCH4vsKYJ5I/AAAAAAAAAH0/LlIQaK-dO7E/s200/android-3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5485939319306200978" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;ara realizar capturas de pantalla de Android  desde el PC simplemente tenemos que seguir los siguientes pasos:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;* Lo primero que debemos hacer es conectar el teléfono con el ordenador:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;1. Para ello debemos descargar el &lt;a href='http://www.mediafire.com/file/znn1yi...usb_driver.rar' target='_blank'&gt;SDK de Android&lt;/a&gt;. Necesitamos el driver USB y las SDK Tools. Desde "SDK Setup.exe" podemos instalar esos dos componentes que aparecerán en la misma carpeta del instalador. Desde &lt;a href='http://www.mediafire.com/file/znn1yi...usb_driver.rar' target='_blank'&gt;este enlace&lt;/a&gt; se pueden descargar los drivers por si fallan o no disponeis de ellos. Descomprimimos los archivos en el directorio principal (C:\) para poder movernos fácilmente después.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;2. Ponemos el teléfono en modo Depuración USB, dentro de Ajustes -&gt; Aplicaciones -&gt; Desarrollo.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;3. Conectamos el teléfono, lo detectará y si nos pide el driver asignamos manualmente la ubicación del directorio del driver.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_WFPalWVyjPQ/S_Ki28-TZ5I/AAAAAAAAAFo/G6Oy6VkvgEE/s1600/1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/S_Ki28-TZ5I/AAAAAAAAAFo/G6Oy6VkvgEE/s320/1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5472615562172655506" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;4. Hacemos click derecho sobre Mi PC (o Equipo) -&gt; Propiedades -&gt; Hardware y vamos al Administrador de dispositivos.&lt;/p&gt; &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WFPalWVyjPQ/S_Ki-2ZgflI/AAAAAAAAAFw/IzFseMlibeM/s1600/2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 265px; height: 320px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/S_Ki-2ZgflI/AAAAAAAAAFw/IzFseMlibeM/s320/2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5472615697846664786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;5. Comprobamios que se haya configurado correctamente el dispositivo. Para ello debemos ver un nuevo grupo de dispositivos: "ADB Interface" con un "HTC Dream Composite ADB Interface".&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WFPalWVyjPQ/S_KjEQhOgyI/AAAAAAAAAF4/CR3QXWiMWWQ/s1600/3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 228px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/S_KjEQhOgyI/AAAAAAAAAF4/CR3QXWiMWWQ/s320/3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5472615790757708578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;Si no aparece este grupo debemos realizar los siguientes pasos:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado MsoTabulado"&gt;a. No debemos intentar actualizar el driver que sale bajo unidades de disco, sino "Dispositivo de almacenamiento USB" dentro de "Controladoras de bus de serie universal", botón derecho -&gt; actualizar software del controlador.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado MsoTabulado"&gt;b. Seleccionamos la ubicación del driver en nuestra carpeta del SDK, todo manualmente.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado MsoTabulado"&gt;Ahora debería aparecer un nuevo grupo de dispositivos: "ADB Interface" con un "HTC Dream Composite ADB Interface".&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;* Ejecutar el programa ddms que se encuentra en la carpeta Tools. Veremos tres pantallas. La de la izquierda muestra nuestro terminal, en la derecha información acerca del teléfono y en la inferior se muestran los procesos ocurridos en él.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;* Para capturar la pantalla, en el menú seleccionamos Device -&gt; Screen capture y desde ahí manejamos las capturas.&lt;br /&gt;Con esta aplicación podemos explotar nuestro teléfono, pero de momento eso se lo vamos a dejar a los expertos.&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-4943179826819870693?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/4943179826819870693/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/capturar-pantalla-de-android-con-el-pc.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4943179826819870693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4943179826819870693'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/capturar-pantalla-de-android-con-el-pc.html' title='Capturar pantalla de Android con el PC'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/TCH4vsKYJ5I/AAAAAAAAAH0/LlIQaK-dO7E/s72-c/android-3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2345185455851051825</id><published>2010-05-14T22:51:00.000+02:00</published><updated>2010-07-05T17:10:15.735+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Imágenes'/><title type='text'>Programa online para optimizar imágenes</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TDH1wBaTlwI/AAAAAAAAAIc/7sKYTN4sX6s/s200/Puesta+de+sol.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5490439626102642434" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;n uno de los artículos anteriores habíamos indicado algunos consejos para optimizar las imágenes para subirlas a nuestra página web. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Ahora es el turno de mostraros una página que os puede ahorrar mucho tiempo y a la que podeis recurrir en cualquier momento.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Esta página es: &lt;a href='http://www.sitereportcard.com/imagereducer.php' target='_blank'&gt;http://www.sitereportcard.com/imagereducer.php&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En la que simplemente con introducir la dirección de la URL donde se encuentra la imagen o buscar el archivo entre los directorios de nuestro ordenador y subirlo nos muestra varias opciones de optimización. Los resultados están en orden ascendiente de optimización. Dependiendo del tipo de imagen (solo permite JPG,GIF y PNG) el resultado de la optimización será más o menos adecuada.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Seguro que esta aplicación os será muy útil a la hora de confeccionar vuestras páginas web.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/05/optimizar-imagenes-para-pagina-web.html" target="_blank"&gt;Optimizar imágenes para página web&lt;/a&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2345185455851051825?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2345185455851051825/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/programa-online-para-optimizar-imagenes.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2345185455851051825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2345185455851051825'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/programa-online-para-optimizar-imagenes.html' title='Programa online para optimizar imágenes'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TDH1wBaTlwI/AAAAAAAAAIc/7sKYTN4sX6s/s72-c/Puesta+de+sol.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2364958921244244626</id><published>2010-05-12T16:41:00.000+02:00</published><updated>2010-07-05T17:13:00.743+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Deshabilitar funciones de ratón en página web</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 187px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/TDH2bsXKXjI/AAAAAAAAAIk/s7Xot8Td-nM/s200/raton1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5490440376366554674" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;ara impedir que se pueda utilizar el ratón en nuestra página (debemos tener claras las consecuencias que ello conlleva) no tenemos más que incluir el siguiente código JavaScript  en la cabecera código:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;script language="JavaScript"&amp;gt; &lt;br /&gt;&lt;br /&gt;document.onmousedown = function(){&lt;br /&gt;&lt;br /&gt;if (event.button==2) { &lt;br /&gt;&lt;br /&gt;alert('RatónDeshabilitado'); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-boton-derecho-en.html" target="_blank"&gt;Deshabilitar funciones botón derecho en una página web&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-teclado-en-una.html" target="_blank"&gt;Deshabilitar funciones del teclado en una página web&lt;/a&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2364958921244244626?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2364958921244244626/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-de-raton-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2364958921244244626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2364958921244244626'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-de-raton-en.html' title='Deshabilitar funciones de ratón en página web'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WFPalWVyjPQ/TDH2bsXKXjI/AAAAAAAAAIk/s7Xot8Td-nM/s72-c/raton1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8115579755837765501</id><published>2010-05-11T13:35:00.000+02:00</published><updated>2010-07-05T17:13:33.354+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Imágenes'/><title type='text'>Optimizar imágenes para página web</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TDH1wBaTlwI/AAAAAAAAAIc/7sKYTN4sX6s/s200/Puesta+de+sol.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5490439626102642434" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;stá claro que una página web diseñada con imágenes atractivas es más llamativa y amigable para el usuario, pero debemos tener cuidado a la hora de utilizar imágenes ya que si el conjunto de éstas es muy pesado puede que ralentice la carga de la página, que además de ser un inconveniente para el usuario, también va a perjudicar nuestro posicionamiento en los buscadores.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Imagen sin optimizar:&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 129px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/S-lGLsPehtI/AAAAAAAAAFc/ziPS_0d6Ai0/s200/anuncio_disen.jpg" alt="" id="BLOGGER_PHOTO_ID_5469980389086758610" border="0" /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Imagen optimizada:&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 129px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/S-lGHh5E11I/AAAAAAAAAFU/80B9nSwruzg/s200/anuncio_disen%28grande%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5469980317588969298" border="0" /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para optimizar una imagen para utilizarla en nuestras páginas web podemos seguir los siguientes consejos:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;1. Utilizar una resolución de 72px por pulgada. Esta resolución es la común en la mayoría de los monitores, por lo que para el usuario es la máxima resolución que puede obtener.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;2. Utilizar el estándar RGB. Éste es el estándar que utilizan los monitores. Es más económico (en cuestión de tamaño) que otros como CMYK por lo que es el recomendado.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;3. Para las fotografías debemos usar JPEG. Este formato elimina información invisible para el ojo humano, reduciendo así su tamaño. Para el resto de imágenes, el forma más usual es GIF.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;4. Para los logos y figuras con poca cantidad de colores utilizar PNG-8. Este formato nos proporciona una buena calidad para este tipo de imágenes y nos permite ahorrar algunos kb.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal MsoTabulado"&gt;5. Utilizar los tamaños de imagen exactos. Es decir, si vamos a introducir en nuestra página una imagen en un recuadro de 100x100 nuestra imagen ha de tener dicho tamaño, ya que si utilizamos una imagen mayor y la reducimos mediante las propiedades width y height –además de no cumplir los estándares del W3C- estaremos desaprovechando unos kb muy valiosos.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Con estos pequeños consejos conseguiremos reducir el tamaño de nuestras imágenes y propiciar que la página cargue más rápido.&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8115579755837765501?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8115579755837765501/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/optimizar-imagenes-para-pagina-web.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8115579755837765501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8115579755837765501'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/optimizar-imagenes-para-pagina-web.html' title='Optimizar imágenes para página web'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TDH1wBaTlwI/AAAAAAAAAIc/7sKYTN4sX6s/s72-c/Puesta+de+sol.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7528602513469106385</id><published>2010-05-05T11:09:00.000+02:00</published><updated>2010-07-05T17:17:10.846+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Deshabilitar funciones teclado en una página web</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 198px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TDH3ae2cVmI/AAAAAAAAAI0/FVx7wBV2CS4/s200/teclado1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5490441455071417954" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;ara impedir que se pueda utilizar el teclado en nuestra página –incluidas la opción de copiar un texto- no tenemos más que incluir el siguiente código JavaScript  en la cabecera código:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;script language="JavaScript"&amp;gt; &lt;br /&gt;&lt;br /&gt;document.onkeydown = function(){&lt;br /&gt;&lt;br /&gt;alert('Teclado Desabilitado'); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-boton-derecho-en.html" target="_blank"&gt;Deshabilitar funciones botón derecho en una página web&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-de-raton-en.html" target="_blank"&gt;Deshabilitar funciones de ratón en una página web&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7528602513469106385?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7528602513469106385/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-teclado-en-una.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7528602513469106385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7528602513469106385'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-teclado-en-una.html' title='Deshabilitar funciones teclado en una página web'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TDH3ae2cVmI/AAAAAAAAAI0/FVx7wBV2CS4/s72-c/teclado1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1204981479200966476</id><published>2010-05-04T17:02:00.001+02:00</published><updated>2010-07-05T17:14:56.458+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Deshabilitar funciones botón derecho en una página web</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TDH22KUjHnI/AAAAAAAAAIs/yOU7eyrFV10/s200/raton2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5490440831085256306" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;ara deshabilitar las funciones de botón derecho solo tenemos que añadir en la cabecera el siguiente código JavaScript:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;script language="Javascript"&amp;gt; &lt;br /&gt;&lt;br /&gt;document.oncontextmenu = function(){return false} &lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-teclado-en-una.html" target="_blank"&gt;Deshabilitar funciones teclado en una página web&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-de-raton-en.html" target="_blank"&gt;Deshabilitar funciones de ratón en una página web&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1204981479200966476?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1204981479200966476/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-boton-derecho-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1204981479200966476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1204981479200966476'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/deshabilitar-funciones-boton-derecho-en.html' title='Deshabilitar funciones botón derecho en una página web'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TDH22KUjHnI/AAAAAAAAAIs/yOU7eyrFV10/s72-c/raton2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-3781982108865693301</id><published>2010-05-03T16:24:00.000+02:00</published><updated>2010-05-03T16:40:31.185+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Ordención de arrays en PHP</title><content type='html'>&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;HP nos proporciona una serie de funciones que realizan la ordenación de arrays de forma automática. Debemos tener en cuenta que los arrays no son solo unidimensionales, sino que también pueden ser bidimensionales (matrices) o ser matriz de matrices. &lt;br /&gt;&lt;p class="MsoNormal"&gt;Aquí se indican las funciones más importantes:&lt;br /&gt;&lt;h2&gt;sort()&lt;/h2&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Descripción: &lt;em&gt;Ordena el array en función de sus valores&lt;/em&gt;&lt;br /&gt;Orden: &lt;em&gt;Menor a mayor&lt;/em&gt;&lt;br /&gt;Función inversa: &lt;em&gt;&lt;b&gt;rsort()&lt;/b&gt;&lt;/em&gt;&lt;br /&gt;Ejemplo:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$var = array(‘1’,’4’,’3’,’2’)  &lt;br /&gt;sort($var)&lt;br /&gt;foreach ($var as $key =&gt; $valor) { &lt;br /&gt;    echo ‘ [‘ . $key . ‘] = ‘ . $valor . ‘&amp;lt;br/&amp;gt;’; &lt;br /&gt;}   &lt;br /&gt;var[0] = 1&lt;br /&gt;var[1] = 2&lt;br /&gt;var[2] = 3&lt;br /&gt;var[3] = 4&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;ksort()&lt;/h2&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Descripción: &lt;em&gt;Ordena el array en función de sus claves&lt;/em&gt;&lt;br /&gt;Orden: &lt;em&gt;Menor a mayor&lt;/em&gt;&lt;br /&gt;Función inversa: &lt;em&gt;&lt;b&gt;krsort()&lt;/b&gt;&lt;/em&gt;&lt;br /&gt;Ejemplo:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$var = array(‘1’=&gt;’a’,’4’ =&gt;’b’,’3’ =&gt;’c’,’2’ =&gt;’d’)  &lt;br /&gt;sort($var)&lt;br /&gt;foreach ($var as $key =&gt; $valor) { &lt;br /&gt;    echo ‘ [‘ . $key . ‘] = ‘ . $valor . ‘&amp;lt;br/&amp;gt;’; &lt;br /&gt;}   &lt;br /&gt;1 = a&lt;br /&gt;2 = d&lt;br /&gt;3 = c &lt;br /&gt;4 = b&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;asort()&lt;/h2&gt; &lt;br /&gt;&lt;p class="MsoNormal"&gt;Descripción: &lt;em&gt;Ordena el array en función de sus valores manteniendo la relación entre clave y valor&lt;/em&gt;&lt;br /&gt;Orden: &lt;em&gt;Menor a mayor&lt;/em&gt;&lt;br /&gt;Función inversa: &lt;em&gt;&lt;b&gt;arsort()&lt;/b&gt;&lt;/em&gt;&lt;br /&gt;Ejemplo:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$var = array(‘1’=&gt;’a’,’4’ =&gt;’b’,’3’ =&gt;’c’,’2’ =&gt;’d’)  &lt;br /&gt;sort($var)&lt;br /&gt;foreach ($var as $key =&gt; $valor) { &lt;br /&gt;    echo ‘ [‘ . $key . ‘] = ‘ . $valor . ‘&amp;lt;br/&amp;gt;’; &lt;br /&gt;}   &lt;br /&gt;1 = a&lt;br /&gt;4 = b&lt;br /&gt;3 = c &lt;br /&gt;2 = d&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;natsort()&lt;/h2&gt; &lt;br /&gt;&lt;p class="MsoNormal"&gt;Descripción: &lt;em&gt;Ordena el array en función de sus valores, tal como lo haría una persona&lt;/em&gt;&lt;br /&gt;Orden: &lt;em&gt;Menor a mayor&lt;/em&gt;&lt;br /&gt;Ejemplo:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$var = array(‘1’=&gt;’a22’,’4’ =&gt;’a2’,’3’ =&gt;’a1’,’2’ =&gt;’a11’)  &lt;br /&gt;sort($var)&lt;br /&gt;foreach ($var as $key =&gt; $valor) { &lt;br /&gt;    echo ‘ [‘ . $key . ‘] = ‘ . $valor . ‘&amp;lt;br/&amp;gt;’; &lt;br /&gt;}   &lt;br /&gt;3 = a1&lt;br /&gt;4 = a2&lt;br /&gt;2 = a11&lt;br /&gt;1 = a22&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-3781982108865693301?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/3781982108865693301/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/ordencion-de-arrays-en-php.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3781982108865693301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3781982108865693301'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/05/ordencion-de-arrays-en-php.html' title='Ordención de arrays en PHP'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6077943668787861377</id><published>2010-04-27T12:52:00.000+02:00</published><updated>2010-04-27T12:59:14.157+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Propiedad CSS para elementos input</title><content type='html'>&lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;omo bien sabremos a estas alturas, css en muy potente y la mejor opción para especificar las propiedades de diseño de los elementos de nuestras páginas. En este caso vamos a especificar como se utilizan las propiedades para los elementos input&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si queremos modificar todos los input (&lt;code&gt;&amp;lt;input type="radio” /&amp;gt;&lt;/code&gt;):&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;input {&lt;br /&gt; /*propiedades*/&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si queremos modificar un input (&lt;code&gt;&amp;lt;input type="radio" class="radio" /&amp;gt;&lt;/code&gt;) en el que le hemos indicado una clase:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;input.clase {&lt;br /&gt; /*propiedades*/&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si queremos modificar todos los input de un tipo determinado (&lt;code&gt;&amp;lt;input type="radio" /&amp;gt;&lt;/code&gt;):&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;input[type="radio"]{&lt;br /&gt; /*propiedades*/&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6077943668787861377?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6077943668787861377/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/estilo-css-para-imput-type.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6077943668787861377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6077943668787861377'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/estilo-css-para-imput-type.html' title='Propiedad CSS para elementos input'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7854289594095560150</id><published>2010-04-23T12:09:00.000+02:00</published><updated>2010-04-23T12:14:27.076+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Mostrar Url remoto en PHP</title><content type='html'>&lt;span class="dropcaps"&gt;D&lt;/span&gt;&lt;p class="MsoNormal"&gt;Si necesitamos obtener información de otra página web, por ejemplo, para obtener una URL acortada e introducirla en nuestra página sin necesidad de recargarla, tenemos varias opciones:&lt;br /&gt;&lt;p class="MsoNormal"&gt;1. Usar una de las funciones que nos proporciona PHP: &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;file_get_contents&lt;br /&gt;$page = file_get_contents('http://www.example.com');&lt;br /&gt;echo $page;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;2. Tratar el resultado proporcionado por la URL como un fichero:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$file = fopen ( "http://www.example.com" , "r" );&lt;br /&gt;if (! $file ) {&lt;br /&gt;    echo "&lt;p&gt;Unable to open remote file.n" ;&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt; $text=fpassthru($file);&lt;br /&gt; echo $text;&lt;br /&gt;}&lt;br /&gt;fclose ( $file );&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;3. Usar un método de Curl:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$c = curl_init('http://www.example.com');&lt;br /&gt;curl_setopt($c, CURLOPT_RETURNTRANSFER, true);&lt;br /&gt;$page = curl_exec($c);&lt;br /&gt;curl_close($c);&lt;br /&gt;echo $page;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Hay que tener en cuenta que para usar el tercer método debemos tener correctamente instalado Curl. Si tiene problemas con él puede consultar Problema al iniciar Curl: “Fatal error: Call to undefined function curl_init()”.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;La recomendación es usar estos métodos por orden, es decir, probar con el primero. Si éste le diese error, pasar a usar el segundo y si éste tampoco resulta probar con el tercero. &lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7854289594095560150?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7854289594095560150/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/mostrar-url-remoto-en-php.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7854289594095560150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7854289594095560150'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/mostrar-url-remoto-en-php.html' title='Mostrar Url remoto en PHP'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-3937101715741979902</id><published>2010-04-22T10:49:00.000+02:00</published><updated>2010-04-23T12:13:47.685+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fraude'/><title type='text'>To spam or not to spam</title><content type='html'>&lt;span class="dropcaps"&gt;D&lt;/span&gt;&lt;p class="MsoNormal"&gt;No me había planteado indagar en este tema tan polémico pero, a raíz de un comentario que hicieron en una de las entradas de nuestro blog, creo que es necesario aclarar nuestra inequívoca postura contra el span y demás fraudes digitales.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Este era el comentario que habían hecho en el post “Configuración de archivo de Logs para IpTables”:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;hola&lt;br /&gt;Antes de nada, perdona que te escriba esto como un comentario, pero es que no vi tu email en el tu blog&lt;br /&gt;&lt;br /&gt;Soy el webmaster de publizida.es&lt;br /&gt;&lt;br /&gt;Publizida BLOG'S es un ranking / directorio de clasificación de blogs en español, creado con el único propósito de dar a conocer los mejores blog's&lt;br /&gt;&lt;br /&gt;Registrando su blog en Publizida BLOG'S accederás al servicio de estadísticas gratuitas y podrás participar en el TOP.RANKING&lt;br /&gt;&lt;br /&gt;También puedes acceder a la valoración que los usuarios hacen de su página.&lt;br /&gt;&lt;br /&gt;Y lo mas importante...&lt;br /&gt;&lt;br /&gt;darte a conocer y aumentar el numero de visitantes a tu BLOG de manera totalmente gratuita.&lt;br /&gt;&lt;br /&gt;Si te interesa puedes darte de alta&lt;br /&gt;&lt;br /&gt;ALTA DIRECTORIO DE BLOGS&lt;br /&gt;&lt;br /&gt;o visitanos en ......&lt;br /&gt;&lt;br /&gt;DIRECTORIO DE BLOGS&lt;br /&gt;&lt;br /&gt;HTTP://PUBLIZIDA.ES&lt;br /&gt;&lt;br /&gt;Muchas Gracias por tu tiempo... y disculpa si no fue la mejor manera de darme a conocer.&lt;br /&gt;&lt;br /&gt;Un saludo.&lt;br /&gt;&lt;br /&gt;DAVID T.&lt;br /&gt;&lt;br /&gt;Webmaster de Publizida.es&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Como podéis comprobar se realiza un comentario, para mí, totalmente fuera de contexto, publicitando un sitio web que en absoluto tiene nada que ver con el tema tratado, por lo que lo considero claramente como un spam. En el blog existe una referencia a mi página personal en la cual se encuentra visible un correo de contacto, por lo que si alguien necesita ponerse en contacto conmigo, esta es la forma adecuada.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Espero que esta simple reflexión les preocupe a tanta gente como a mí y evitemos que esta gran red, que ha conseguido en tan poco tiempo tener repercusiones tan importantes condene este tipo de actos y que aquellos que simplemente nos queremos expresar sin mayor ánimo que compartir nuestros escasos conocimientos lo podamos hacer sin que personas/empresas con otros intereses interfieran en ello.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-3937101715741979902?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/3937101715741979902/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/to-spam-or-not-to-spam.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3937101715741979902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3937101715741979902'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/to-spam-or-not-to-spam.html' title='To spam or not to spam'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-9146047738735518608</id><published>2010-04-21T10:01:00.000+02:00</published><updated>2010-04-21T10:05:47.819+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Problema al iniciar Curl: “Fatal error: Call to undefined function curl_init()”</title><content type='html'>&lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;uando el sistema nos devuelve este error es porque detecta que no tenemos habilitado el servicio “curl” en nuestro servidor.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;- En Windows, debemos modificar el fichero php.ini y descomentar la línea:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;extension=php_curl.dll&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Reiniciamos el servidor y el servicio ya estará disponible.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También debemos comprobar que los archivos SSLEAY32.PHP y libEAY32.dll se encuentran en la carpeta del php.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;- Si utilizamos un Linux Server puede que no tengamos instalado el servicio curl, por lo que lo debemos instalar con el siguiente comando:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;apt-get install curl libcurl3 libcurl3-dev php5-curl&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-9146047738735518608?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/9146047738735518608/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/problema-al-iniciar-curl-fatal-error.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/9146047738735518608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/9146047738735518608'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/problema-al-iniciar-curl-fatal-error.html' title='Problema al iniciar Curl: “Fatal error: Call to undefined function curl_init()”'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8645132597940478895</id><published>2010-04-16T08:57:00.000+02:00</published><updated>2010-09-24T18:10:12.120+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IpTables'/><title type='text'>Configuración de archivo de Logs para IpTables</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 143px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TCITc4PZ0OI/AAAAAAAAAIE/6mOqgTD8lLE/s200/icono-firewall.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5485968682944942306" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;I&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;br /&gt;pTables se usa para configurar, mantener e inspeccionar las tablas de reglas de filtrado de IPs en el kernel de Linux, pero por defecto, su sistema de logs no es todo lo completo esperamos.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Por defecto, la mayoría de los logs del sistema se guardan en el fichero &lt;em&gt;/var/log/messages&lt;/em&gt; pero en este caso vamos a configurar un nuevo fichero para que almacene únicamente los logs que generaremos con algunas &lt;strong&gt;reglas en IpTables&lt;/strong&gt;, creando así su propio archivo de &lt;i&gt;bitácora&lt;/i&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Lo primero que debemos hacer es configurar el archivo &lt;em&gt;/etc/syslog.conf&lt;/em&gt;, que se trata de un archivo de configuración en el que se indica el modo en que los mensajes del sistema son &lt;i&gt;bitacorizados &lt;/i&gt;a través de la utilidad &lt;b&gt;syslogd&lt;/b&gt; que se instala y configura por defecto en todos los sistemas &lt;em&gt;GNU/Linux&lt;/em&gt;. Debemos añadir al final del fichero la siguiente sentencia:&lt;br /&gt;kern.warning &lt;em&gt;/var/log/iptables.log&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Con esto indicamos que se almacenen los mensajes provienen del kernel con prioridad 4 o superior ('warning' es el nivel de prioridad 4) en el archivo &lt;em&gt;/var/log/iptables.log&lt;/em&gt; y se ignora el resto de prioridad inferior (debug, info y notice que son del 3 hacía abajo) generalmente irrelevantes.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Guardamos el fichero y reiniciamos el servicio:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&lt;br /&gt;/etc/init.d/sysklogd restart para Debian / Ubuntu&lt;br /&gt;/etc/init.d/syslog restart para Red Hat/Cent OS/Fedora Core&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Debemos añadir que los mensajes del sistema también seguirán guardándose en &lt;em&gt;/var/log/messages&lt;/em&gt; y en otros ficheros que se encuentren definidos en /etc/syslog.conf.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Por último solo nos queda añadir las reglas al &lt;strong&gt;firewall Iptables&lt;/strong&gt; que monitorizarán los mensajes de error. Estas reglas se han de añadir justo antes de cortar un tráfico determinado. Un ejemplo del fichero de configuración de &lt;strong&gt;IpTables&lt;/strong&gt; con las &lt;strong&gt;reglas de log&lt;/strong&gt; añadidas (basado en el artículo de &lt;a href="http://xandrusoft.blogspot.com/2010/03/crear-firewall-con-iptables-en-linux.html" target="_blank"&gt;creación de firewall con IpTables&lt;/a&gt;) es el siguiente:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&lt;br /&gt;## Vaciamos las reglas&lt;br /&gt;iptables -F&lt;br /&gt;iptables -X&lt;br /&gt;iptables -t nat -F&lt;br /&gt;&lt;br /&gt;## Establecemos politicas predeterminada&lt;br /&gt;iptables -P INPUT ACCEPT&lt;br /&gt;iptables -P OUTPUT ACCEPT&lt;br /&gt;iptables -P FORWARD ACCEPT&lt;br /&gt;iptables -t nat -P PREROUTING ACCEPT&lt;br /&gt;iptables -t nat -P POSTROUTING ACCEPT&lt;br /&gt;&lt;br /&gt;# Aceptamos todo de localhost &lt;br /&gt;/sbin/iptables -A INPUT -i lo -j ACCEPT&lt;br /&gt;&lt;br /&gt;# A nuestra IP le dejamos todo&lt;br /&gt;iptables -A INPUT -s 192.168.2.1 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# A otra ip interna le permitimos todo&lt;br /&gt;iptables -A INPUT -s 192.168.2.99 -j ACCEPT&lt;br /&gt;iptables -A INPUT -s 192.168.2.100 -j ACCEPT &lt;br /&gt;&lt;br /&gt;# A una subred interna le permitimos todo&lt;br /&gt;iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;# O a un rango de una subred&lt;br /&gt;iptables -I INPUT -m iprange --src-range 192.168.1.2-192.168.1.100 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# Permitimos una conexion a ssh y telnet (22 y 23) desde un equipo&lt;br /&gt;iptables -A INPUT -s 192.168.2.10 -p tcp --dport 22:23 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# A otro le permitimos acceso FTP&lt;br /&gt;iptables -A INPUT -s 212.176.121.111 -p tcp --dport 20:21 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# El puerto 80 y 8080 (www) abierto, para un servidor web.&lt;br /&gt;iptables -A INPUT -p tcp --dport 80 -j ACCEPT&lt;br /&gt;iptables -A INPUT -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# Y el resto, lo cerramos&lt;br /&gt;# Inidcamos que se almacenen los accesos a los puertos que vamos a cerrar&lt;br /&gt;iptables -A INPUT -p tcp -m tcp --dport 22:23 -j LOG --log-prefix 'INTENTO DE ACCESO A SSH ' --log-level 4&lt;br /&gt;iptables -A INPUT -p tcp -m tcp --dport 20:21 -j LOG --log-prefix 'INTENTO DE ACCESO A FTP ' --log-level 4&lt;br /&gt;iptables -A INPUT -p tcp -m tcp --dport 6001 -j LOG --log-prefix 'INTENTO DE ACCESO A 6001 ' --log-level 4&lt;br /&gt;&lt;br /&gt;iptables -A INPUT -p tcp --dport 20:21 -j DROP&lt;br /&gt;iptables -A INPUT -p tcp --dport 22:23 -j DROP&lt;br /&gt;iptables -A INPUT -p tcp --dport 6001 -j DROP&lt;br /&gt;&lt;br /&gt;# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de &lt;br /&gt;# barreras, antes hay que abrir a los que si tienen acceso.&lt;br /&gt;iptables -A INPUT -p tcp --dport 1:1024 -j DROP&lt;br /&gt;iptables -A INPUT -p udp --dport 1:1024 -j DROP&lt;br /&gt;&lt;br /&gt;# impedimos iniciar conexion los puertos altos&lt;br /&gt;# (puede que ftp no funcione)&lt;br /&gt;iptables -A INPUT -p tcp --syn --dport 1025:65535 -j DROP&lt;br /&gt;&lt;br /&gt;# Cerramos otros puertos que estan abiertos&lt;br /&gt;iptables -A INPUT -p tcp --dport 3306 -j DROP&lt;br /&gt;iptables -A INPUT -p tcp --dport 10000 -j DROP &lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Reiniciamos el servicio &lt;strong&gt;IpTables&lt;/strong&gt; y a partir de ahora podremos consultar los mensajes del &lt;strong&gt;log de IpTables&lt;/strong&gt; en el fichero &lt;em&gt;/var/log/iptables.log&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/03/crear-firewall-con-iptables-en-linux.html" target="_blank"&gt;Crear firewall con Iptables en Linux&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/03/problema-al-iniciar-iptables-no.html" target="_blank"&gt;Problema al iniciar IpTables: “no chain/target/match by that name”&lt;/a&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8645132597940478895?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8645132597940478895/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/configuracion-de-archivo-para-logs-de.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8645132597940478895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8645132597940478895'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/configuracion-de-archivo-para-logs-de.html' title='Configuración de archivo de Logs para IpTables'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TCITc4PZ0OI/AAAAAAAAAIE/6mOqgTD8lLE/s72-c/icono-firewall.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2171888384069111386</id><published>2010-04-06T23:45:00.000+02:00</published><updated>2010-04-16T09:17:26.694+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ranking Navegadores'/><title type='text'>Ranking Navegadores Febrero 2010</title><content type='html'>&lt;span class="dropcaps"&gt;D&lt;/span&gt;&lt;p class="MsoNormal"&gt;egún datos obtenidos de la página de &lt;em&gt;DesarrolloWeb&lt;/em&gt;, el Ranking de navegadores en todo el mundo es el siguiente:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;1. Microsoft Internet Explorer: 61.58%&lt;br /&gt;2. Firefox: 24.23%&lt;br /&gt;3. Chrome: 5.61%&lt;br /&gt;4. Safari: 4.45%&lt;br /&gt;5. Opera: 2.35%&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Como vemos, esto muestra una clarísima superioridad de IE respecto al resto de navegadores y comparándolo con el mes anterior, un incremento en el uso de Chrome, por lo que Firefox se mantiene con una cuota uso de uno de cada cuatro usuarios de Internet.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si miramos los datos en España, la cosa no varía demasiado, obteniendo los siguientes resultados:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;1. Microsoft Internet Explorer: 57%&lt;br /&gt;2. Firefox: 30.84%&lt;br /&gt;3. Chrome: 2.865%&lt;br /&gt;4. Safari: 7.54%&lt;br /&gt;5. Opera: 1.06%&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Seguro que muchos de vosotros, usuarios asiduos de Firefox pensáis que al igual que vosotros, habrá mucha gente que utiliza este navegador. Pues… que sepáis que no os confundís, ya que si comprobamos los navegadores desde los que se acceden a XandruSoft.blogspot.com podemos ver a simple vista que sois la mayoría.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WFPalWVyjPQ/S7whehSv_sI/AAAAAAAAAE8/qgNwCh-h2Lg/s1600/analytics_feb.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 153px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/S7whehSv_sI/AAAAAAAAAE8/qgNwCh-h2Lg/s400/analytics_feb.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5457273656683003586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Como se puede observar en el grafico, Firefox obtiene más de un 50% de cuota, lo que permite concluir que es el navegador por excelencia utilizado para desarrollo web, IE obtiene poco más de un 20% y la gran sorpresa es que crome casi llega al 15%.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Vemos que estas estadísticas no tienen nada que ver con las globales y es que, seguro que muchos desarrolladores que trabajan sobre Windows el primer y único uso del IE es para descargarse el Firefox.&lt;br /&gt;&lt;p class="MsoNormal"&gt;Espero que, aunque este apunte no tiene mucho que ver con desarrollo web, os dé un poco de pensar.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2171888384069111386?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2171888384069111386/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/ranking-navegadores-febrero-2010.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2171888384069111386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2171888384069111386'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/04/ranking-navegadores-febrero-2010.html' title='Ranking Navegadores Febrero 2010'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WFPalWVyjPQ/S7whehSv_sI/AAAAAAAAAE8/qgNwCh-h2Lg/s72-c/analytics_feb.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6364245853990230454</id><published>2010-03-31T22:13:00.000+02:00</published><updated>2010-09-24T18:04:19.787+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IpTables'/><title type='text'>Problema al iniciar IpTables: “no chain/target/match by that name”</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 143px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TCITc4PZ0OI/AAAAAAAAAIE/6mOqgTD8lLE/s200/icono-firewall.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5485968682944942306" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;i hemos configurado IpTables para Ubuntu o cualquier otro Linux y al intentar iniciar o reiniciar IpTables nos dé un error con la descripción &lt;i&gt;“no chain/target/match by that name”&lt;/i&gt; no nos debemos volver locos pensando que tenemos mal instalado el programa o que se trata de un error imposible de encontrar.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Simplemente nos está indicando que alguna de las reglas no está bien escrita. Un error muy común suele ser confundirse al escribir &lt;em&gt;IMPUT&lt;/em&gt; en vez de &lt;em&gt;INPUT&lt;/em&gt;. Debemos revisar de nuevo todas las reglas del archivo &lt;strong&gt;IpTables&lt;/strong&gt;, prestando especial atención a los &lt;em&gt;INPUT&lt;/em&gt; y el problema quedará resuelto.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También os puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/03/crear-firewall-con-iptables-en-linux.html" target="_blank"&gt;Crear firewall con Iptables en Linux&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/04/configuracion-de-archivo-para-logs-de.html" target="_blank"&gt;Configuración de archivo para Logs de IpTables&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6364245853990230454?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6364245853990230454/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/03/problema-al-iniciar-iptables-no.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6364245853990230454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6364245853990230454'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/03/problema-al-iniciar-iptables-no.html' title='Problema al iniciar IpTables: “no chain/target/match by that name”'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TCITc4PZ0OI/AAAAAAAAAIE/6mOqgTD8lLE/s72-c/icono-firewall.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-905728542437631954</id><published>2010-03-31T22:00:00.000+02:00</published><updated>2010-09-24T17:58:21.850+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IpTables'/><title type='text'>Crear firewall con IpTables en Linux (Ubuntu Server)</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TCITM_h_u3I/AAAAAAAAAH8/-pMiKyvGoNM/s200/firewall.jpg.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5485968410024065906" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;i no disponemos de un hardware firewall pero queremos montar uno para proteger nuestro ordenador o servidor, podemos usar un software que nos proporciona Linux y es bastante potente llamado IpTables.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para usar &lt;strong&gt;IpTables en Ubuntu&lt;/strong&gt; debemos de crear un fichero dentro del directorio &lt;em&gt;/etc/init.d/&lt;/em&gt; al que podemos dar cualquier nombre, aunque os recomiendo poner algo descriptivo como &lt;i&gt;“iptables.cf”&lt;/i&gt;. Dentro de este archivo tendremos todas las reglas que queremos aplicar &lt;strong&gt;darle una protección extra a nuestro Ubuntu&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Un ejemplo de un fichero de configuración de &lt;strong&gt;IpTables&lt;/strong&gt; es el siguiente:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&lt;br /&gt;## Vaciamos las reglas&lt;br /&gt;iptables -F&lt;br /&gt;iptables -X&lt;br /&gt;iptables -t nat -F&lt;br /&gt;&lt;br /&gt;## Establecemos politicas predeterminada&lt;br /&gt;iptables -P INPUT ACCEPT&lt;br /&gt;iptables -P OUTPUT ACCEPT&lt;br /&gt;iptables -P FORWARD ACCEPT&lt;br /&gt;iptables -t nat -P PREROUTING ACCEPT&lt;br /&gt;iptables -t nat -P POSTROUTING ACCEPT&lt;br /&gt;&lt;br /&gt;# Aceptamos todo de localhost &lt;br /&gt;/sbin/iptables -A INPUT -i lo -j ACCEPT&lt;br /&gt;&lt;br /&gt;# A nuestra IP le dejamos todo&lt;br /&gt;iptables -A INPUT -s 192.168.2.1 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# A otra ip interna le permitimos todo&lt;br /&gt;iptables -A INPUT -s 192.168.2.99 -j ACCEPT&lt;br /&gt;iptables -A INPUT -s 192.168.2.100 -j ACCEPT &lt;br /&gt;&lt;br /&gt;# Permitimos una conexion a ssh y telnet (22 y 23) desde un equipo&lt;br /&gt;iptables -A INPUT -s 192.168.2.10 -p tcp --dport 22:23 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# A otro le permitimos acceso FTP&lt;br /&gt;iptables -A INPUT -s 212.176.121.111 -p tcp --dport 20:21 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# El puerto 80 y 8080 (www) abierto, para un servidor web.&lt;br /&gt;iptables -A INPUT -p tcp --dport 80 -j ACCEPT&lt;br /&gt;iptables -A INPUT -p tcp --dport 8080 -j ACCEPT&lt;br /&gt;&lt;br /&gt;# Y el resto, lo cerramos&lt;br /&gt;iptables -A INPUT -p tcp --dport 20:21 -j DROP&lt;br /&gt;iptables -A INPUT -p tcp --dport 22:23 -j DROP&lt;br /&gt;iptables -A INPUT -p tcp --dport 6001 -j DROP&lt;br /&gt;&lt;br /&gt;# Cerramos rango de los puertos privilegiados. Cuidado con este tipo de &lt;br /&gt;# barreras, antes hay que abrir a los que si tienen acceso.&lt;br /&gt;iptables -A INPUT -p tcp --dport 1:1024 -j DROP&lt;br /&gt;iptables -A INPUT -p udp --dport 1:1024 -j DROP&lt;br /&gt;&lt;br /&gt;# impedimos iniciar conexion los puertos altos&lt;br /&gt;# (puede que ftp no funcione)&lt;br /&gt;iptables -A INPUT -p tcp --syn --dport 1025:65535 -j DROP&lt;br /&gt;&lt;br /&gt;# Cerramos otros puertos que estan abiertos&lt;br /&gt;iptables -A INPUT -p tcp --dport 3306 -j DROP&lt;br /&gt;iptables -A INPUT -p tcp --dport 10000 -j DROP&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para arrancar el servicio no tenernos más que hacer &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;/ect/init.d/iptables.cf start&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si lo queremos parar&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;/ect/init.d/iptables.cf stop&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Y si lo queremos reiniciar&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;/ect/init.d/iptables.cf restart&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Podemos comprobar las reglas que se han aplicado con el comando&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;iptables -L&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También os puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/03/problema-al-iniciar-iptables-no.html" target="_blank"&gt;Problema al iniciar IpTables: “no chain/target/match by that name”&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/04/configuracion-de-archivo-para-logs-de.html" target="_blank"&gt;Configuración de archivo para Logs de IpTables&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-905728542437631954?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/905728542437631954/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/03/crear-firewall-con-iptables-en-linux.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/905728542437631954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/905728542437631954'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/03/crear-firewall-con-iptables-en-linux.html' title='Crear firewall con IpTables en Linux (Ubuntu Server)'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TCITM_h_u3I/AAAAAAAAAH8/-pMiKyvGoNM/s72-c/firewall.jpg.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7607771836888090189</id><published>2010-03-28T14:57:00.000+02:00</published><updated>2010-03-31T22:28:36.707+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Comandos Linux'/><title type='text'>Buscar archivos en Linux</title><content type='html'>&lt;span class="dropcaps"&gt;S&lt;/span&gt;eguro que muchas veces nos hemos vuelto locos buscando un archivo en la estructura de directorios de nuestro sistema. Para facilitarnos la vida podemos usar el comando &lt;em&gt;find&lt;/em&gt; que nos proporciona Linux.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WFPalWVyjPQ/S69WwtA6vhI/AAAAAAAAAE0/ohdYWLwiLHM/s1600/lupa.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 163px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/S69WwtA6vhI/AAAAAAAAAE0/ohdYWLwiLHM/s400/lupa.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5453673068486114834" /&gt;&lt;/a&gt;&lt;br /&gt;Las dos opciones más habituales  para usarlo es buscar un nombre de archivo/directorio, con el parámetro &lt;em&gt;–nam&lt;/em&gt;e o para buscar por tipo, con el parámetro &lt;em&gt;–tyfe&lt;/em&gt;.&lt;br /&gt;Por lo tanto, debemos ejecutar el comando:&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;find –name &lt;em&gt;nombre&lt;/em&gt;&lt;br /&gt;find –type &lt;em&gt;typo&lt;/em&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Si queremos conocer más opciones de éste comando podemos ejecutar la ayuda (man find)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7607771836888090189?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7607771836888090189/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/03/buscar-archivos-en-linux.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7607771836888090189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7607771836888090189'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/03/buscar-archivos-en-linux.html' title='Buscar archivos en Linux'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/S69WwtA6vhI/AAAAAAAAAE0/ohdYWLwiLHM/s72-c/lupa.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8222972302475242071</id><published>2010-02-26T09:49:00.000+01:00</published><updated>2010-02-26T10:07:50.542+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Permisos'/><title type='text'>Cómo cambiar grupo de archivos en Ubuntu (Server)</title><content type='html'>&lt;span class="dropcaps"&gt;L&lt;/span&gt;&lt;p class="MsoNormal"&gt;inux dispone de de un comando que permite cambiar el propietario de un archivo y/o directorio respectivamente:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Def: $ chgrp [nuevo grupo] [archivo/directorio] [opciones][opciones]&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;Ej: chgrp root img.jpg&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para conocer más opciones de este comando podemos ejecutar el comando &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;man chgrp&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si quieres conocer más sobre permisos en Linux puedes consultar: &lt;a href="http://xandrusoft.blogspot.com/2010/02/permisos-linux.html" target="_blank"&gt;Permisos Linux&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/02/como-cambiar-permisos-de-archivos-en.html" target="_blank"&gt;cómo cambiar permisos de archivos en Ubuntu (Server)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/02/como-cambiar-propietario-de-archivos-en.html" target="_blank"&gt;cómo cambiar propietario de archivos en Ubuntu (Server)&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8222972302475242071?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8222972302475242071/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/como-cambiar-grupo-de-archivos-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8222972302475242071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8222972302475242071'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/como-cambiar-grupo-de-archivos-en.html' title='Cómo cambiar grupo de archivos en Ubuntu (Server)'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7881211659886649607</id><published>2010-02-24T12:54:00.000+01:00</published><updated>2010-02-26T10:13:07.101+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Permisos'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Cómo cambiar propietario de archivos en Ubuntu (Server)</title><content type='html'>&lt;span class="dropcaps"&gt;L&lt;/span&gt;&lt;p class="MsoNormal"&gt;inux dispone de de un comando que permite cambiar el propietario de un archivo y/o directorio respectivamente:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Def: $ chown [nuevo usuario propietario] [archivo/directorio] [opciones]&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;Ej: chown xandru 755 img.jpg&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para conocer más opciones de este comando podemos ejecutar el comando &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;man chown&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si quieres conocer más sobre permisos en Linux puedes consultar: &lt;a href="http://xandrusoft.blogspot.com/2010/02/permisos-linux.html" target="_blank"&gt;Permisos Linux&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/02/como-cambiar-permisos-de-archivos-en.html" target="_blank"&gt;cómo cambiar permisos de archivos en Ubuntu (Server)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/02/como-cambiar-grupo-de-archivos-en.html" target="_blank"&gt;cómo cambiar grupo de archivos en Ubuntu (Server)&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7881211659886649607?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7881211659886649607/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/como-cambiar-propietario-de-archivos-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7881211659886649607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7881211659886649607'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/como-cambiar-propietario-de-archivos-en.html' title='Cómo cambiar propietario de archivos en Ubuntu (Server)'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6535935158721585678</id><published>2010-02-23T12:56:00.000+01:00</published><updated>2010-02-26T10:13:18.449+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Permisos'/><title type='text'>Cómo cambiar permisos de archivos en Ubuntu (Server)</title><content type='html'>&lt;span class="dropcaps"&gt;L&lt;/span&gt;&lt;p class="MsoNormal"&gt;inux dispone de de un comando que permite cambiar los permisos de un archivo y/o directorio respectivamente:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Def: $ chmod [permisos] [archivo/directorio] [opciones] &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;Ej: chmod 755 img.jpg&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para conocer más opciones de este comando podemos ejecutar el comando &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;man chmod&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si quieres conocer más sobre permisos en Linux puedes consultar: &lt;a href="http://xandrusoft.blogspot.com/2010/02/permisos-linux.html" target="_blank"&gt;Permisos Linux&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/02/como-cambiar-propietario-de-archivos-en.html" target="_blank"&gt;cómo cambiar propietario de archivos en Ubuntu (Server)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/02/como-cambiar-grupo-de-archivos-en.html" target="_blank"&gt;cómo cambiar grupo de archivos en Ubuntu (Server)&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6535935158721585678?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6535935158721585678/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/como-cambiar-permisos-de-archivos-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6535935158721585678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6535935158721585678'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/como-cambiar-permisos-de-archivos-en.html' title='Cómo cambiar permisos de archivos en Ubuntu (Server)'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1393290548011263723</id><published>2010-02-14T21:21:00.000+01:00</published><updated>2010-02-26T10:13:30.434+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Permisos'/><title type='text'>Permisos Linux</title><content type='html'>&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;ara trabajar con sistemas Linux es muy importante que conozcamos a la perfección su estructura de permisos y roles de sus archivos y directorios.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Existen tres tipos de permisos:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;w&lt;/b&gt; de escritura. Si es para un archivo será que podemos escribir en él y si es para un directorio significa que podemos crear ficheros dentro de él. &lt;br /&gt;&lt;b&gt;r&lt;/b&gt; de lectura. Que indica que se puede leer un archivo o directorio.&lt;br /&gt;&lt;b&gt;x&lt;/b&gt; de ejecución. Si es para un archivo será ejecutable y si es para un directorio significa que podemos pasar por él.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También debemos conocer los tres tipos de roles sobre los que se aplican los permisos:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;Usuario&lt;/b&gt;. Es el propietario del archivo.&lt;br /&gt;&lt;b&gt;Grupo&lt;/b&gt;. Indica el grupo al que pertenece el archivo.&lt;br /&gt;&lt;b&gt;Otros&lt;/b&gt;. El resto de los usuarios que puedan utilizar el archivo.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Los permisos se muestran como “rwx” o en su defecto con el número en binario correspondiente a los permisos. Cada permiso tiene un valor asociando su posición con su correspondiente binario:&lt;br /&gt;r=4&lt;br /&gt; w=2&lt;br /&gt; x=1&lt;br /&gt;-=0&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Los permisos de un archivo/directorio se muestran en este orden: permisos usuario, grupo y otros (rwx rwx rwx). Pudiendo marcar con un “-“ los permisos que no dispone.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Algunos ejemplos:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;em&gt;rw- r-- r-- (644) — Sólo el propietario tiene los permisos de leer y escribir; el grupo y los demás sólo pueden leer.&lt;br /&gt;&lt;br /&gt;rwx --- --- (700) — Sólo el propietario tiene los derechos de leer, escribir y ejecutar el archivo.&lt;br /&gt;&lt;br /&gt;rwx r-x r-x (755) — El propietario tiene los derechos de leer, escribir y ejecutar; el grupo y los demás sólo pueden leer y ejecutar.&lt;br /&gt;&lt;br /&gt;rwx --x --x (711) — El propietario tiene los derechos de lectura, escritura y ejecución; el grupo y los demás sólo pueden ejecutar.&lt;br /&gt;&lt;br /&gt;rwx rwx rwx (777) — Todo el mundo puede leer, escribir y ejecutar.&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para ver los permisos de los directorios y archivos se debe ejecutar:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;em&gt;$ ls –l &amp;lt;nombre del archivo/directorio&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Que nos devolverá una salida del estilo:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;em&gt;drwxr-xr-x 3 xandru xandru 40296 2010-02-14 21:25 permisos_linux.html&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;1.En el que el primer carácter indica el tipo de archivo.&lt;br /&gt;2-10. Los nueve siguientes se corresponden con los permisos del usuario propietario, grupo y otros usuarios.&lt;br /&gt;11. El siguiente numérico muestra si tiene un enlace físico.&lt;br /&gt;12,13. Los dos nombres siguientes son el nombre es el propietario y del grupo al que pertenece&lt;br /&gt;14. La cadena numérica se corresponde con el tamaño..&lt;br /&gt;15,16. A continuación se muestra la fecha de creación y la hora.&lt;br /&gt;17. Por último, se indica el nombre del archivo/directorio.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También te puede interesar:&lt;/p&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/02/como-cambiar-propietario-de-archivos-en.html" target="_blank"&gt;cómo cambiar propietario de archivos en Ubuntu (Server)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/02/como-cambiar-permisos-de-archivos-en.html" target="_blank"&gt;cómo cambiar permisos de archivos en Ubuntu (Server)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/02/como-cambiar-grupo-de-archivos-en.html" target="_blank"&gt;cómo cambiar grupo de archivos en Ubuntu (Server)&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1393290548011263723?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1393290548011263723/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/permisos-linux.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1393290548011263723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1393290548011263723'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/permisos-linux.html' title='Permisos Linux'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-3000115302675529417</id><published>2010-02-05T19:47:00.000+01:00</published><updated>2010-02-25T20:17:25.526+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Crear web'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Cómo crear página webs - (1) Comenzando con HTML y CSS</title><content type='html'>&lt;span class="dropcaps"&gt;H&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;TML&lt;/b&gt;, &lt;em&gt;HyperText Markup Language&lt;/em&gt;, es el lenguaje predominante para la creación de páginas de internet.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Este lenguaje está constituido de elementos que el navegador interpreta y las despliega en la pantalla de acuerdo a su objetivo. Con él podemos crear la estructura básica de la página, las diferentes partes que tendrá, las cuales se crean con “etiquetas” rodeadas por corchetes angulares (&lt;&gt;). Por supuesto, sólo con este lenguaje no podríamos confeccionar una estructura bien diseñada. Para ello, nos apoyaremos en CSS, mediante el cual podremos ubicar cada elemento que creemos con HTML en la posición que deseemos.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez realizada la estructura básica, HTML se puede combinar con otras tecnologías o lenguajes, como puede ser JavaScript, PHP, MySql... y con ello conseguir la funcionalidad deseada de nuestra página.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S2xsSRyledI/AAAAAAAAAEE/CX9TBJilrKk/s1600-h/428093_images_EquipInformatico.74194908.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S2xsSRyledI/AAAAAAAAAEE/CX9TBJilrKk/s320/428093_images_EquipInformatico.74194908.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5434837911598365138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;CSS&lt;/b&gt; son las siglas de &lt;em&gt;Cascade Style Sheet&lt;/em&gt; que traducido significa hojas de estilo en cascada.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Las hojas de estilo es una tecnología que nos permite controlar la apariencia de una página web, ya que si únicamente usamos HTML la apariencia del documento sería muy rígida y limitada. CSS describe cómo los elementos dispuestos en la página son presentados al usuario. Con CSS podemos especificar estilos como el tamaño, fuente, color, espaciado entre textos y recuadros así como el lugar donde disponer texto e imágenes en la página.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para comenzar a trabajar con esta tecnología os propongo practicar creando vuestra primera página web, siguiendo el manual expuesto en la página web de &lt;a href="http://www.comocreartuweb.com/html-kit-tutorial/tutorial-html-kit-introducion.html" target="_blank"&gt;comocreartuweb&lt;/a&gt; comenzando en la primera lección y acabando en la sexta y una vez finalizado sabremos crear una página web con HTML y CSS.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-3000115302675529417?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/3000115302675529417/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/como-crear-pagina-webs-comenzando-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3000115302675529417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3000115302675529417'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/02/como-crear-pagina-webs-comenzando-con.html' title='Cómo crear página webs - (1) Comenzando con HTML y CSS'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S2xsSRyledI/AAAAAAAAAEE/CX9TBJilrKk/s72-c/428093_images_EquipInformatico.74194908.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-907023972930679143</id><published>2010-01-19T06:58:00.000+01:00</published><updated>2010-03-28T21:22:20.755+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Xampp'/><category scheme='http://www.blogger.com/atom/ns#' term='Servidor'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual Host'/><title type='text'>Crear virtual Host</title><content type='html'>&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i estamos trabajando en varios proyectos diferentes sobre nuestro &lt;em&gt;locahost&lt;/em&gt; sería interesante que pudiésemos acceder a cada uno por distintas URL, es decir que si tenemos un proyecto “Restaurante” la URL para acceder en modo local sería &lt;b&gt;http://locahost/restaurante&lt;/b&gt;, si el contenido lo tuviésemos en el directorio restaurante dentro de nuestro directorio raíz.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Lo interesante sería poder acceder a al sitio con &lt;b&gt;http://restaurante&lt;/b&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para hacer esto, debemos buscamos el archivo de configuración de host virtuales que, dependiendo del S.O. utilizado estará en un sitio u otro. Por ejemplo en Ubuntu Server estará en &lt;em&gt;/etc/apache2/httpd.conf&lt;/em&gt; o en caso de que estemos usando XAMPP sobre windows, el archivo &lt;em&gt;httpd-vhosts.conf&lt;/em&gt; y lo editamos con la siguiente configuración:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;NameVirtualHost *:80&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;&lt;br /&gt;DocumentRoot "/path/to/htdocs"&lt;br /&gt;&lt;br /&gt;ServerName localhost&lt;br /&gt;&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;&lt;br /&gt;ServerName nuevo_host&lt;br /&gt;&lt;br /&gt;DocumentRoot "/path/to/nuevo_host"&lt;br /&gt;&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si quisiésemos añadir más host virtuales solo tenemos que duplicar el segundo VirtualHost con su configuración correspondiente.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Por último, editamos el archivo de &lt;em&gt;host&lt;/em&gt; (normalmente en &lt;em&gt;C:\WINNT\system32\drivers\etc\hosts&lt;/em&gt;) añadiendo el nuevo/nuevos host a la lista para forzar su asociación a nuestro localhost.&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;127.0.0.1       localhost&lt;br /&gt;127.0.0.1       nuevo_host&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-907023972930679143?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/907023972930679143/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/crear-virtual-host.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/907023972930679143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/907023972930679143'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/crear-virtual-host.html' title='Crear virtual Host'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8660228669652115626</id><published>2010-01-17T16:12:00.000+01:00</published><updated>2010-09-25T12:50:25.934+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blueprint Css'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriiales'/><category scheme='http://www.blogger.com/atom/ns#' term='Framework'/><title type='text'>Manual/Tutorial Blueprint CSS framework</title><content type='html'>&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;n &lt;a href="http://xandrusoft.blogspot.com/2010/01/instalacion-de-blueprint-framework-css.html" target="_blank"&gt;uno de los artículos anteriores&lt;/a&gt; habíamos cómo instalar el framework blueprint CSS, aunque para ser más exactos deberíamos decir a copiar el contenido del archivo descargado en la carpeta, que es la única instalación que necesita.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_a81d3sXAtpg/S1M5I8gKKUI/AAAAAAAAABY/nZTCtYFqeXE/s1600-h/blueprint-css.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 87px;" src="http://3.bp.blogspot.com/_a81d3sXAtpg/S1M5I8gKKUI/AAAAAAAAABY/nZTCtYFqeXE/s320/blueprint-css.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5427744801754327362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez tenemos el directorio &lt;i&gt;blueprint&lt;/i&gt; en nuestro directorio de trabajo, debemos cargar los archivos desde las páginas en las que vamos a usar el &lt;i&gt;framework&lt;/i&gt;. Para ello debemos introducir las siguientes líneas dentro de la cabecera –como si de un archivo css se tratase-.&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;link rel="stylesheet" href="css/blueprint/screen.css" type="text/css" media="screen, projection" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" href="css/blueprint/print.css" type="text/css" media="print" /&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;lt;!--[if lt IE 8]&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" href="css/blueprint/ie.css" type="text/css" media="screen, projection" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;Usando CSS en Blueprint&lt;/h2&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Existen básicamente 3 capas en el &lt;strong&gt;framework blueprint CSS&lt;/strong&gt;. La capa &lt;em&gt;reset&lt;/em&gt; que elimina cualquier regla &lt;b&gt;CSS&lt;/b&gt; establecida por cada navegador,  &lt;em&gt;typography&lt;/em&gt; que nos proporciona distintas tipografías y  la capa &lt;em&gt;grid&lt;/em&gt; que nos proporciona una serie de clases &lt;b&gt;CSS&lt;/b&gt; para hacer diseños de tablas. Las dos primeras no se necesitan  modificar, por ejemplo si queremos modificar el tamaño de un elemento lo haremos en nuestra propia hoja de estilo, así se facilita la actualización a posibles actualizaciones del &lt;b&gt;framework&lt;/b&gt;. &lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Tipos de Tipografías&lt;/h3&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Aunque la tipografía se aplica a sí misma, existen una serie de clases definidas para ser usadas:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;.small&lt;/b&gt;&lt;dd&gt;Hace el elemento más pequeño.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.large&lt;/b&gt;&lt;dd&gt;Hace el elemento más grande.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.hide&lt;/b&gt;&lt;dd&gt;Oculta el elemento.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.quiet&lt;/b&gt;&lt;dd&gt;Atenua el color de la fuente.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.loud&lt;/b&gt;&lt;dd&gt;Hace que el texto tenga color negro.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.highlight&lt;/b&gt;&lt;dd&gt;Añade un fondo amarillo al tezto.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.added&lt;/b&gt;&lt;dd&gt;Añade un fondo verde al tezto.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.removed&lt;/b&gt;&lt;dd&gt;Añade un fondo rojo al tezto.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.first&lt;/b&gt;&lt;dd&gt;Elimina el margin/padding del lado izquierdo del elemento.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.last&lt;/b&gt;&lt;dd&gt;Elimina el margin/padding del lado derecho del elemento.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.top&lt;/b&gt;&lt;dd&gt;Elimina cualquier margin/padding superior del elemento.&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;.bottom&lt;/b&gt;&lt;dd&gt;Elimina cualquier margin/padding inferior del elemento.&lt;/dd&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Diseño de los formularios&lt;/h3&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para dar estilo a los elementos de los formularios, cada elemento debe tener las clases &lt;b&gt;.text&lt;/b&gt; o &lt;b&gt;.title&lt;/b&gt; donde &lt;b&gt;.text&lt;/b&gt;  es el tamaño normal y &lt;b&gt;.title &lt;/b&gt; se corresponde con un tamaño grande.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También existen una serie de clases que se pueden utilizar para mostrar los mensajes de error:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;div.error&lt;/b&gt;&lt;dd&gt;Crear un cuadro de error (rojo).&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;div.notice&lt;/b&gt;&lt;dd&gt; Crear un cuadro de noticias (amarillo).&lt;/dd&gt;&lt;br /&gt;&lt;b&gt;div.success&lt;/b&gt;&lt;dd&gt; Crear un cuadro de mensajes correctos (verde).&lt;/dd&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Creando una tabla&lt;/h3&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;La tercera capa se corresponde con las clases, que permite crear casi cualquier clase de tabla.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;La tabla por defecto esta compuesta por 24 columnas, de 30px cada una, con 10px de margen entre cada columna. El tamaño total es de 950px.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para configurar nuestras tablas, debemos crear una columna con la etiqueta &lt;em&gt;&lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;&lt;/em&gt; y aplicar una de las clases &lt;b&gt;.span-x&lt;/b&gt; para hacerlo. Por ejemplo, si queremos 3 columnas, con dos de ellas estrechas y una más ancha, una cabecera y un pie de tabla, debemos hacer lo siguiente:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;div class="container"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;div class="span-24"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;  The header&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;div class="span-4"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;  The first column&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;div class="span-16"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;  The center column&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;div class="span-4 last"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;  The last column&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;div class="span-24"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;  The footer&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Hay dos clases importantes que deemos conocer. Ante todo, debemos tener en cuenta que cualquier sitio creado con ayuda de Blueprint debe estar envuelto en un div con la clase &lt;b&gt;.container&lt;/b&gt; que se suele colocar justo después de la etiqueta body.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En segundo lugar, la última columna de una fila (por defecto hay 24 columnas) necesita la clase &lt;b&gt;.last&lt;/b&gt; para eliminar el borde izquierdo. Sin embargo, cada &lt;b&gt;.span-24&lt;/b&gt; no necesita la clase &lt;b&gt;.last&lt;/b&gt; porque siempre ocupa todo el ancho de la página.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Algunas clases más que se pueden utilizar a la hora de trabajar con tablas son:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;.append-x&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dd&gt;Añade x número de columnas vacías despues de la columna.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;.prepend-x&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dd&gt; Añade x número de columnas vacías antes de la columna.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;.push-x&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dd&gt;Empuja una columna x columnas a la izquierda. Puede ser usada para intercambiar columnas.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;.pull-x&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dd&gt; Tira una columna x columnas a la derecha. Puede ser usada para intercambiar columnas.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;.border&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dd&gt;Aplica un borde en el lado derecho de la columna.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;.colborder&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dd&gt;Añade una columna vacía, con un borde en el medio.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;.clear&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dd&gt;Crea una columna debajo de una fila, sin importar el espacio.&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;.showgrid&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;dd&gt;Añade un contendor o columna para ver la tabla.&lt;/dd&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En la lista &lt;em&gt;x&lt;/em&gt; es un valor entre 1 y 23 para append=prepend y 1 y 24 para push/pull.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Otro ejemplo de una tabla con cuatro columnas con el mismo tamaño, con un borde entre las dos primeras y las dos últimas columnas, como si se tratase de un hueco entre ambas.&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;div class="container"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-5 border"&amp;gt;&lt;br /&gt;&lt;br /&gt;The first column&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-5 append-4"&amp;gt;&lt;br /&gt;&lt;br /&gt;The second column&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-5 border"&amp;gt;&lt;br /&gt;&lt;br /&gt;The third column&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-5 last"&amp;gt;&lt;br /&gt;&lt;br /&gt;The fourth (last) column&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Se puede anidar las columnas para lograr el diseño deseado. Haremos una configuración donde tengamos cuatro rectángulos, dos en el lado superior y dos en el inferior de la primera mitad de la página, y una columna normal ocupando la segunda mitad.&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&amp;lt;div class="container"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-12"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-6"&amp;gt;&lt;br /&gt;&lt;br /&gt;Top left&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-6 last"&amp;gt;&lt;br /&gt;&lt;br /&gt;Top right&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-6"&amp;gt;&lt;br /&gt;&lt;br /&gt;Bottom left&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-6 last"&amp;gt;&lt;br /&gt;&lt;br /&gt;Bottom right&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="span-12 last"&amp;gt;&lt;br /&gt;&lt;br /&gt;Second half of page&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;Los scripts&lt;/h2&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Blueprint viene con dos scripts: uno para comprimir y customizar el CSS, y uno para validar los archivos CSS, que es útil if se realizan cambios en los archivos.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;El validador&lt;/h3&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;El validador, como su propia palabra indica, valida los archivos centrales del CSS. El script usa una versión del validador CSS de W3C. Para ejecutarlo, se necesita tener instalado Ruby en la máquina. Se puede ejecutar el script como:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ ruby valídate.rb&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;El compresor&lt;/h3&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Como los archivos que se incluyen en el HTMl son versiones comprimidas de los archivos centrales del CSS, debemos recomprimir los archivos si queremos hacer cualquier cambio.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8660228669652115626?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8660228669652115626/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/manualtutorial-blueprint-css-framework.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8660228669652115626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8660228669652115626'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/manualtutorial-blueprint-css-framework.html' title='Manual/Tutorial Blueprint CSS framework'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_a81d3sXAtpg/S1M5I8gKKUI/AAAAAAAAABY/nZTCtYFqeXE/s72-c/blueprint-css.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-7144475699630371012</id><published>2010-01-14T12:17:00.000+01:00</published><updated>2010-02-25T20:18:45.818+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servidor'/><category scheme='http://www.blogger.com/atom/ns#' term='Webmin'/><title type='text'>Gestión de nuestro Servidor con Webmin</title><content type='html'>&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;sta aplicación nos ayudará a la gestión de nuestro servidor de forma remota a través de una interfaz web. Nos ofrece la posibilidad de modificar la configuración del servidor de una forma muy intuitiva.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_a81d3sXAtpg/S07-Bvsv3oI/AAAAAAAAABQ/OTPvg5zYfWs/s1600-h/webmin.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 261px; height: 79px;" src="http://2.bp.blogspot.com/_a81d3sXAtpg/S07-Bvsv3oI/AAAAAAAAABQ/OTPvg5zYfWs/s320/webmin.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5426553906965503618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Descargamos el paquete para Ubuntu desde &lt;a href="http://www.webmin.com/download.html" target="_blank"&gt;su página web&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez que lo tengamos en nuestra máquina, lo instalamos con: &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo dpkg –-install webmin-1.410-all.deb.&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Puede que necesitemos instalar algunos paquetes adicionales necesarios que no tenemos, pero esta es una tarea fácil y común en los sistemas operativos Linux por lo que no entraremos en detalles.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si todo ha ido bien, tendremos instalada la aplicación en el directorio &lt;em&gt;/usr/share/webmin&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para acceder a ella, simplemente lo hacemos con la dirección&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;http://IP_Servidor:10000.&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También puede ser interesante:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/01/estadisticas-hardware-de-nuestro.html"&gt;Ver estadísticas hardware de nuestro servidor&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-7144475699630371012?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/7144475699630371012/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/gestion-de-nuestro-servidor-con-webmin.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7144475699630371012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/7144475699630371012'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/gestion-de-nuestro-servidor-con-webmin.html' title='Gestión de nuestro Servidor con Webmin'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_a81d3sXAtpg/S07-Bvsv3oI/AAAAAAAAABQ/OTPvg5zYfWs/s72-c/webmin.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-4617010110082077990</id><published>2010-01-14T11:48:00.000+01:00</published><updated>2010-02-25T20:20:18.834+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servidor'/><category scheme='http://www.blogger.com/atom/ns#' term='PhpSysInfo'/><category scheme='http://www.blogger.com/atom/ns#' term='Estadísticas'/><title type='text'>Estadísticas Hardware de nuestro Servidor</title><content type='html'>&lt;span class="dropcaps"&gt;A&lt;/span&gt;&lt;p class="MsoNormal"&gt;l igual que son importantes las estadísticas web, no debemos olvidarnos de llevar un control sobre nuestro servidor físico, es decir, sobre sus componentes. Con esta serie de estadísticas tendremos un sistema que analizara todo nuestro Hardware y el tráfico de red, tanto entrante como saliente. El software a utilizar será PhpSysInfo.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_a81d3sXAtpg/S074DCx83QI/AAAAAAAAABI/5Y5-VyDJjb0/s1600-h/phpsysinfo_logo.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 100px; height: 35px;" src="http://1.bp.blogspot.com/_a81d3sXAtpg/S074DCx83QI/AAAAAAAAABI/5Y5-VyDJjb0/s320/phpsysinfo_logo.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5426547332197702914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para instalarlo, lo haremos de la siguiente forma:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo apt-get install phpsysinfo&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Creamos un enlace simbólico entre el directorio de la instalación y nuestro directorio web raíz.&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;cd /home/xandru/www/ &lt;br /&gt;ln -s /var/www/phpsysinfo&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Editamos el fichero /etc/phpsysinfo/config.php para que nos muestre las estadísticas en español.&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;sudo nano /etc/phpsysinfo/config.php&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;y solo debemos configurar la variable lang para pasarla de en a es. En este fichero de configuración podemos realizar muchas más modificaciones, pero nosotros con esta modificación nos sirve de momento.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Accedemos desde nuestro navegador a la pantalla de estadísticas desde la siguiente URL:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;http://192.168.2.106/phpsysinfo&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También puede ser interesante:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2010/01/gestion-de-nuestro-servidor-con-webmin.html"&gt;Gestionar nuestro servidor con Webmin&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-4617010110082077990?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/4617010110082077990/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/estadisticas-hardware-de-nuestro.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4617010110082077990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4617010110082077990'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/estadisticas-hardware-de-nuestro.html' title='Estadísticas Hardware de nuestro Servidor'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_a81d3sXAtpg/S074DCx83QI/AAAAAAAAABI/5Y5-VyDJjb0/s72-c/phpsysinfo_logo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6589168098053712635</id><published>2010-01-10T22:50:00.000+01:00</published><updated>2010-02-25T20:35:27.128+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blueprint Css'/><category scheme='http://www.blogger.com/atom/ns#' term='Framework'/><title type='text'>Instalación de Blueprint css framework</title><content type='html'>&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;xisten varios Frameworks para trabajar con CSS, pero por casualidades del destino hemos comenzado a trabajar con este FW y la verdad que consideramos que puede satisfacer fácilmente todas nuestras necesidades de diseño para darle a nuestras páginas el aspecto deseado.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WFPalWVyjPQ/S1Hoa7a7uRI/AAAAAAAAACs/XXh3x25eSa4/s1600-h/blueprint-css.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 87px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/S1Hoa7a7uRI/AAAAAAAAACs/XXh3x25eSa4/s320/blueprint-css.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5427374575283058962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para comenzar a trabajar con él, debemos descargar el archivo compromido (vien sea en zip o tar) desde la página oficial del proyecto &lt;a href="http://www.blueprintcss.org/"&gt;Blueprint&lt;/a&gt; y una vez descomprimido copiar el directorio &lt;em&gt;blueprint&lt;/em&gt; dentro de, por ejmplo, el directorio ccs de nuestro directorio de trabajo. En el archivo descargado podemos entrar más directorios, como el de ejemplos, que no serán necesarios copiar, pero sí nos pueden ser de utilidad, aunque eso queda a decisión de cada uno.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Aprende cómo utilizar este &lt;em&gt;framework&lt;/em&gt; desde &lt;a href="http://xandrusoft.blogspot.com/2010/01/manualtutorial-blueprint-css-framework.html" target="_blank"&gt;esta entrada&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6589168098053712635?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6589168098053712635/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/instalacion-de-blueprint-framework-css.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6589168098053712635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6589168098053712635'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/instalacion-de-blueprint-framework-css.html' title='Instalación de Blueprint css framework'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/S1Hoa7a7uRI/AAAAAAAAACs/XXh3x25eSa4/s72-c/blueprint-css.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-4225705967289926237</id><published>2010-01-09T20:25:00.000+01:00</published><updated>2010-09-24T17:25:31.239+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu server'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='USB'/><title type='text'>Montar USB en Ubuntu (Server) modo consola</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 120px; height: 80px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S1Ho0xuyBjI/AAAAAAAAAC0/PMqGHd2HP8c/s320/usb.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5427375019358553650" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;i nuestro Linux no es capaz de reconocer nuestro pendrive o nuestro SO no dispone de entorno gráfico, como puede ser en el caso de que utilizemos un Server, nos vemos obligados a montar el USB de forma manual, en este caso con Ubuntu.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Dado que los pendrives son &lt;strong&gt;montados como unidades de almacenamiento masivo&lt;/strong&gt; y como si se tratasen de unidades scsi, el usb será nombrado con la tipología "sdxX" donde x (puede ser a,b,c,d) será el canal donde está conectado y X (1,2,3,4,5....) será el numero de dispositivo, cabe destacar que en algunas distribuciones no es necesario el uso del numero de dispositivo X como en slackware (y slamd64).&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Podemos ver las unidades disponibles con:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ ls /dev/sd*&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Aunque tal vez sea más conveniente ejecutar el comando:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$ls -l /dev/sd*&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para ver qué dispositivos se encuentran actualmente en uso&lt;br /&gt;nos mostrará las unidades que se encuentran disponibles. Ahora debemos crear una carpeta para &lt;strong&gt;montar el usb&lt;/strong&gt;:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;#mkdir /media/usb&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;y ejecutamos la siguiente instrucción para &lt;strong&gt;montar el USB&lt;/strong&gt; en la carpeta creada:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;#mount -t vfat /dev/sdxX /media/usb&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;donde dsxX es la unidad que se queramos mostrar&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Con esto ya tendremos &lt;strong&gt;montado nuestro USB&lt;/strong&gt; en &lt;i&gt;/media/usb&lt;/i&gt;&lt;br /&gt;Cuando acabemos de utilizarlo, debemnos desmontarlo con la instrucción&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;umount /media/usb&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-4225705967289926237?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/4225705967289926237/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/montar-usb-en-ubuntu-server-modo.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4225705967289926237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4225705967289926237'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/montar-usb-en-ubuntu-server-modo.html' title='Montar USB en Ubuntu (Server) modo consola'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S1Ho0xuyBjI/AAAAAAAAAC0/PMqGHd2HP8c/s72-c/usb.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2459727368017766721</id><published>2010-01-08T05:28:00.000+01:00</published><updated>2010-02-25T20:35:46.970+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siguiente'/><category scheme='http://www.blogger.com/atom/ns#' term='Anterior'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP JavaScripr'/><title type='text'>Página anterior y siguiente en php y javascript</title><content type='html'>&lt;span class="dropcaps"&gt;M&lt;/span&gt;&lt;p class="MsoNormal"&gt;uchas veces necesitamos que el usuario de nuestro sitio regrese a la página anterior a la que se encuentra, o simplemente conocer de que página proviene.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Tenemos dos opciones a la hora de realizar esta tarea: mediante instrucciones en JavaScript  o PHP. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para movernos por el historial de las páginas web utilizadas con JavaScript, las instrucciones son las siguientes:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;history.back()&lt;br /&gt;history.forward()&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Pero si necesitamos hacer, por ejemplo, un retroceso de dos páginas debemos utilizar:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;history.go(x) &lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;donde x es el número de página a saltar (negativo será para retroceder).&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si preferimos usar PHP, también podemos ver de qué web procede el usuario con la variable &lt;b&gt;HTTP_REFERER&lt;/b&gt; , aunque su buen funcionamiento dependerá de si las cabeceras han sido enviadas o no, por lo que podemos decir que no es 100% fiable.&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;$_SERVER['HTTP_REFERER']&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Por ejemplo, podemos crear una página que nos indique de donde proviene el usuario:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&lt;?php&lt;br /&gt;$web = (!$_SERVER['HTTP_REFERER'])?"Ningún Sitio":$_SERVER['HTTP_REFERER'];&lt;br /&gt;//Se ve si el usuario viene de alguna web, indica de cual y si no muestra “Ningún sitio”&lt;br /&gt;$fecha = date("d/m/Y g:i:s a"); &lt;br /&gt;echo "Nuevo acceso desde: ".$web;&lt;br /&gt;?&gt; &lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También podemos añadir más información a los resultados obtenidos, aunque funciona solo con las &lt;em&gt;“register globals off”&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;IP: ".$REMOTE_ADDR."&lt;br /&gt;Pc: ".$HTTP_USER_AGENT."&lt;br /&gt;Lenguaje: ".$HTTP_ACCEPT_LANGUAGE."&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2459727368017766721?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2459727368017766721/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/pagina-anterior-y-siguiente-en-php-y.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2459727368017766721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2459727368017766721'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2010/01/pagina-anterior-y-siguiente-en-php-y.html' title='Página anterior y siguiente en php y javascript'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-3520223184879058661</id><published>2009-12-25T13:43:00.001+01:00</published><updated>2010-02-25T20:36:01.947+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Enlaces'/><category scheme='http://www.blogger.com/atom/ns#' term='Ventana'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><title type='text'>Abrir enlaces HTML en una ventana nueva</title><content type='html'>&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;ara que nuestros enlaces se abran en una ventana/pestaña nueva y no en la que estamos, simplemente debemos añadir &lt;em&gt;target="_blank"&lt;/em&gt; a nuestra etiqueta de enlace, es decir, algo como: &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;a href="http://xandrusoft.blogspot.com/" target="_blank"&amp;gt;XandruSoft_Blog&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-3520223184879058661?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/3520223184879058661/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/12/abrir-enlaces-html-en-una-ventana-nueva.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3520223184879058661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/3520223184879058661'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/12/abrir-enlaces-html-en-una-ventana-nueva.html' title='Abrir enlaces HTML en una ventana nueva'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-5088170755358198276</id><published>2009-12-21T19:36:00.000+01:00</published><updated>2010-02-25T20:36:18.469+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tortoise'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><title type='text'>Tortoise en español</title><content type='html'>&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i queremos tener la versión de tortoise en español no tenemos más que descargarlo desde alguna de las páginas de descarga como &lt;a href="http://sourceforge.net/projects/tortoisesvn/files/" target="_blank"&gt;este enlace&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WFPalWVyjPQ/S1HpvsjuGdI/AAAAAAAAAC8/u4lMBHyfviI/s1600-h/tortoise.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 144px; height: 63px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/S1HpvsjuGdI/AAAAAAAAAC8/u4lMBHyfviI/s320/tortoise.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5427376031582263762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez instalado solo debemos ir a &lt;em&gt;TortoiseSVN/Settings&lt;/em&gt; y seleccionar como idioma el español. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Si queréis saber como instalar o configurar tortoise no dudéis en mirar en &lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/10/control-de-versiones-importar-un.html"&gt;Control de Versiones&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-5088170755358198276?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/5088170755358198276/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/12/tortoise-en-espanol.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5088170755358198276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5088170755358198276'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/12/tortoise-en-espanol.html' title='Tortoise en español'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WFPalWVyjPQ/S1HpvsjuGdI/AAAAAAAAAC8/u4lMBHyfviI/s72-c/tortoise.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-204251030051444077</id><published>2009-12-21T09:33:00.000+01:00</published><updated>2010-02-25T20:37:33.811+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ñ'/><category scheme='http://www.blogger.com/atom/ns#' term='Tildes'/><category scheme='http://www.blogger.com/atom/ns#' term='acentos'/><category scheme='http://www.blogger.com/atom/ns#' term='caracteres especiales'/><title type='text'>Problemas con tildes y ñs en tu página¿?</title><content type='html'>&lt;span class="dropcaps"&gt;E&lt;/span&gt; &lt;p class="MsoNormal"&gt;ste es un problema que a mi me dio más de un dolor de cabeza, por lo que me gustaría compartir con vosotros la solución que encontré.&lt;/p&gt; &lt;p class="MsoNormal"&gt;Me gustaría dejar claro que la solución no solo depende de la configuración que apliquemos en nuestras páginas sino que también depende, por ejemplo, de la configuración del servidor.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Nuestra solución esta dada, en principio, para un servidor Apache con una configuración por defecto, por lo que no intentéis forzarlo a que interprete los caracteres por su cuenta.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Lo primero que debemos de haber es forzar todas las páginas en las que se muestren o trabajemos con caracteres especiales, a que tengan formato &lt;span style="font-weight: bold;"&gt;UTF-8 sin bom&lt;/span&gt;. Esto se consigue desde cualquier editor como el NotePad++.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;La base de datos ha de estar en alguna de las codificaciones &lt;span style="font-weight: bold;"&gt;UTF-8.&lt;/span&gt; Yo he probado con la general y todo me ha ido bien. Si estabas pensando, o tienes introducidos en la base de datos los datos con caracteres como á te recomiendo que los vallas cambiando, ya que en la base de datos los caracteres deben estar escritos igual que escribimos nosotros en el Word, es decir, con tildes y ñs.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;También debemos tener en cuenta que si utilizamos &lt;span style="font-style: italic;"&gt;PhpMyAdmin&lt;/span&gt;, a partir de la versión (creo) 2.x debemos utilizar la función&lt;/p&gt;&lt;div class="syntax_hilite"&gt;@mysql_query("SET NAMES 'utf8'");&lt;/div&gt;&lt;p class="MsoNormal"&gt;después de establecer la conexión con la base de datos para forzarla a que introduzca bien los caracteres.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;En principio con estas pequeñas modificaciones tendremos solucionado el problema.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-204251030051444077?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/204251030051444077/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/12/problemas-con-tildes-y-ns-en-tu-pagina.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/204251030051444077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/204251030051444077'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/12/problemas-con-tildes-y-ns-en-tu-pagina.html' title='Problemas con tildes y ñs en tu página¿?'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6923295572031325719</id><published>2009-10-13T19:54:00.000+02:00</published><updated>2010-02-25T20:37:54.203+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Versiones'/><category scheme='http://www.blogger.com/atom/ns#' term='Tortoise'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='repositorio'/><title type='text'>Control de versiones - Importar un directorio al repositorio con Tortoise</title><content type='html'>&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;p class="MsoNormal"&gt;xisten muchos clientes SVN para el control de versiones, pero nosotros nos hemos fija en Tortoise. Se trata de un programa muy fácil de utilizar y nos proporciona todas las funcionalidades que necesitamos.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para descargar el programa lo podemos hacer desde &lt;a href="http://sourceforge.net/projects/tortoisesvn/files/" target="_blank"&gt;aquí&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WFPalWVyjPQ/S1HpvsjuGdI/AAAAAAAAAC8/u4lMBHyfviI/s1600-h/tortoise.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 144px; height: 63px;" src="http://4.bp.blogspot.com/_WFPalWVyjPQ/S1HpvsjuGdI/AAAAAAAAAC8/u4lMBHyfviI/s320/tortoise.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5427376031582263762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez instalado el programa, debemos crear una nueva carpeta dónde albergaremos nuestros repositorios. Llamaremos a esta carpeta &lt;em&gt;SVNRepositorio&lt;/em&gt;. La podemos crear en cualquier zona del disco asegurándonos de que la carpeta se encuentra vacía. Nosotros la crearemos en &lt;em&gt;C:&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para crear el repositorio, en el menú contextual del directorio creado, seleccionamos &lt;em&gt;TorsoiseSVN -&gt; Crear repositorio aquí&lt;/em&gt;. Con esto ya tendremos nuestro directorio principal donde tendremos almacenadas las distintas versiones de nuestros archivos.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;1. Podemos crear cualquier estructura de directorios dentro de nuestro directorio principal. Para ello, lo más recomendable es hacerlo mediante el navegador de repositorios.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;2. Ejecutaremos la opción &lt;em&gt;Obtener&lt;/em&gt;  desde la carpeta que hemos creado en el navegador de repositorios sobre la carpeta de más alto nivel que queremos añadir al repositorio (la carpeta de la que queremos guardar las versiones).&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;3. Utilizamos &lt;em&gt;TortoiseSVN -&gt; Añadir&lt;/em&gt; en al carpeta que queremos guardar (podemos seleccionar qué archivos queremos guardar, añadir comentarios, etc) en el repositorio. Aunque nos muestre una advertencia de que la carpeta no está vacía le damos a continuar.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;4. Por último confirmamos la carpeta para que sea añadida.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Con esto ya tendremos nuestro árbol de repositorios, y cada vez que se modifique el estado de algún archivo se pondrá un icono en color rojo sobre este. Podemos guardar posteriormente cada versión por archivos separados o de toda la carpeta a la vez.&lt;br /&gt;&lt;p class="MsoNormal"&gt;También podéis ver&lt;br /&gt; &lt;a href="http://xandrusoft.blogspot.com/2009/12/tortoise-en-espanol.html"&gt;Tortoise en Español&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6923295572031325719?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6923295572031325719/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/10/control-de-versiones-importar-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6923295572031325719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6923295572031325719'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/10/control-de-versiones-importar-un.html' title='Control de versiones - Importar un directorio al repositorio con Tortoise'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WFPalWVyjPQ/S1HpvsjuGdI/AAAAAAAAAC8/u4lMBHyfviI/s72-c/tortoise.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2473664034231404833</id><published>2009-10-13T19:48:00.000+02:00</published><updated>2010-02-25T20:38:13.385+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='$_server'/><category scheme='http://www.blogger.com/atom/ns#' term='variables'/><category scheme='http://www.blogger.com/atom/ns#' term='request_uri'/><title type='text'>Variable PHP que contiene la URL de la página actual</title><content type='html'>&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;odemos usar la siguiente: &lt;/p&gt; &lt;div class="syntax_hilite"&gt;$_SERVER['REQUEST_URI']&lt;/div&gt; &lt;p class="MsoNormal"&gt;que, si nuestra URL actual es &lt;em&gt;www.midominio.com/pagina1/datos.php&lt;/em&gt; nos devuolverá &lt;em&gt;pagina1/datos.php&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2473664034231404833?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2473664034231404833/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/10/variable-php-que-contiene-la-url-de-la.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2473664034231404833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2473664034231404833'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/10/variable-php-que-contiene-la-url-de-la.html' title='Variable PHP que contiene la URL de la página actual'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2497515458687756419</id><published>2009-09-29T13:00:00.000+02:00</published><updated>2010-02-25T20:38:27.136+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servidor'/><category scheme='http://www.blogger.com/atom/ns#' term='.htaccess'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Apache no carga .htaccess en Ubuntu</title><content type='html'>&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i utilizamos el archivo &lt;em&gt;.htaccess&lt;/em&gt; para configurar dinámicamente Apache a la hora de cargar nuestra página web, y tenemos instalado el servidor en Ubuntu, tenemos que tener en cuenta que con la configuración por defecto de este servidor no reconocerá el archivo. Para solventar este problema debemos modificar una directiva en uno de los archivos de configuración de apache.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En el archivo &lt;em&gt;/etc/apache2/sites-available/default&lt;/em&gt; modificaremos las líneas &lt;div class="syntax_hilite"&gt;&lt;em&gt;“AllowOverride None”&lt;/em&gt;&lt;/div&gt; &lt;p class="MsoNormal"&gt;por&lt;/p&gt; &lt;div class="syntax_hilite"&gt;&lt;em&gt;“AllowOverride All”&lt;/em&gt;&lt;/div&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Reiniciamos el servicio y habremos solucionado el problema.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2497515458687756419?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2497515458687756419/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/09/apache-no-carga-htaccess-en-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2497515458687756419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2497515458687756419'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/09/apache-no-carga-htaccess-en-ubuntu.html' title='Apache no carga .htaccess en Ubuntu'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8383897010960558029</id><published>2009-09-08T08:55:00.000+02:00</published><updated>2010-02-25T20:38:43.388+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Puerto 80'/><category scheme='http://www.blogger.com/atom/ns#' term='Router'/><category scheme='http://www.blogger.com/atom/ns#' term='SMC'/><category scheme='http://www.blogger.com/atom/ns#' term='DDNS'/><title type='text'>Abrir puerto 80 en router</title><content type='html'>&lt;span class="dropcaps"&gt;A&lt;/span&gt;&lt;p class="MsoNormal"&gt;ccedemos a la pantalla de configuración de nuestro router –normalmente introduciendo su dirección IP en el navegador- y nos dirigimos a la zona de configuración del &lt;em&gt;Virtual Server (NAT&gt;Virtual Server)&lt;/em&gt; y en la tabla debemos especificar qué puerto queremos habilitar que será el 80 tanto para el puerto publico como el LAN. El protocolo lo dejamos como &lt;em&gt;TCP&lt;/em&gt; y le indicaremos la dirección &lt;em&gt;IP &lt;b&gt;privada&lt;/b&gt;&lt;/em&gt; de nuestra máquina. Por último marcamos la casilla de Enable y ya tendremos el puerto abierto para poder acceder a nuestro &lt;em&gt;http&lt;/em&gt;. En la imagen se muestra un ejemplo para un &lt;em&gt;router SMC&lt;/em&gt;. &lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_a81d3sXAtpg/SqYADPBPyQI/AAAAAAAAAA4/cz4Ny7lQCvQ/s1600-h/vs.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 131px;" src="http://4.bp.blogspot.com/_a81d3sXAtpg/SqYADPBPyQI/AAAAAAAAAA4/cz4Ny7lQCvQ/s320/vs.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5378986860512004354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;El consejo: establecer una pequeña &lt;em&gt;LAN&lt;/em&gt; casera, ya que si os conectáis por &lt;em&gt;WiFi&lt;/em&gt; al router puede que vuestra &lt;em&gt;IP privada&lt;/em&gt; cambie cada vez que establezcáis comunicación y por ello deberéis cambiar la configuración en el router. Con una &lt;em&gt;LAN&lt;/em&gt; –normalmente ya viene configurada una por defecto en el router- os evitáis este problema.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También puedes ver:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/09/configurar-ddns-dynamic-domain-name.html"&gt;Cómo configurar un DDNS&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8383897010960558029?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8383897010960558029/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/09/abrir-puerto-80-en-router.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8383897010960558029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8383897010960558029'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/09/abrir-puerto-80-en-router.html' title='Abrir puerto 80 en &lt;em&gt;router&lt;/em&gt;'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_a81d3sXAtpg/SqYADPBPyQI/AAAAAAAAAA4/cz4Ny7lQCvQ/s72-c/vs.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-4877112654733768796</id><published>2009-09-06T13:25:00.000+02:00</published><updated>2010-02-25T20:39:06.753+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='incluide'/><category scheme='http://www.blogger.com/atom/ns#' term='parametros'/><title type='text'>Paso de parámetros a include()</title><content type='html'>&lt;span class="dropcaps"&gt;E&lt;/span&gt;&lt;p class="MsoNormal"&gt;sta es una construcción bastante común en PHP, y cuando más se usa es cuando se incluyen cabeceras y pies de página.&lt;br /&gt;&lt;p class="MsoNormal"&gt;Puede que también lo utilicemos para incluir un código común que usamos en varias páginas, como un &lt;i style=""&gt;select&lt;/i&gt; de provincias o una columna que aparece en todas las páginas. En alguna de estas ocasiones podemos vernos en la necesidad de usar alguna variable de la página en la que nos encontramos. La solución a este problema es realmente trivial: simplemente definimos una variable con el valor que deseemos y dentro del código que queremos incluir hacer una referencia a esa variable, ya que recordemos que el &lt;i style=""&gt;include&lt;/i&gt; lo que hace es añadir el código de la página externa como código de la página que hace la llamada.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Ni se os ocurra tener la idea de pasarle valores a la dirección a la que hacéis la llamada, es decir, algo como&lt;/p&gt;&lt;div class="syntax_hilite"&gt;&lt;span style="font-style: italic;"&gt;include(pagina.php?var=”1”)&lt;/span&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt; Eso está totalmente prohibido.&lt;/p&gt;&lt;style&gt;&lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:0;  mso-generic-font-family:roman;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0cm;  margin-right:0cm;  margin-bottom:10.0pt;  margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-fareast-font-family:Calibri;  mso-bidi-font-family:"Times New Roman";  mso-fareast-language:EN-US;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  font-size:10.0pt;  mso-ansi-font-size:10.0pt;  mso-bidi-font-size:10.0pt;  mso-ascii-font-family:Calibri;  mso-fareast-font-family:Calibri;  mso-hansi-font-family:Calibri;} @page Section1  {size:612.0pt 792.0pt;  margin:70.85pt 3.0cm 70.85pt 3.0cm;  mso-header-margin:36.0pt;  mso-footer-margin:36.0pt;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-4877112654733768796?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/4877112654733768796/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/09/paso-de-parametros-include.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4877112654733768796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4877112654733768796'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/09/paso-de-parametros-include.html' title='Paso de parámetros a &lt;em&gt;include()&lt;/em&gt;'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-2532237361826375285</id><published>2009-09-02T10:37:00.000+02:00</published><updated>2010-02-25T20:39:21.501+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servidor'/><category scheme='http://www.blogger.com/atom/ns#' term='DynDns'/><category scheme='http://www.blogger.com/atom/ns#' term='DDNS'/><title type='text'>Configurar DDNS (Dynamic Domain Name System) con DynDns</title><content type='html'>&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;span&gt;&lt;p class="MsoNormal"&gt;i queremos configurar un servidor web, ftp, montar una VPN, etc. en nuestro servidor casero necesitamos tener localizado nuestro &lt;/span&gt;&lt;i&gt;router&lt;/i&gt;&lt;span&gt; en internet. El problema es que la mayoría de nosotros tenemos una direccionamiento dinámico, es decir, nuestra IP pública cambia, a priori, cada vez que nos conectamos. Por lo que para habilitar estos servicios necesitaremos la configuración de un DDNS.  &lt;/span&gt;&lt;p&gt;Los DNS asocian un &lt;i style=""&gt;router&lt;/i&gt;, mediante un nombre de dominio, a una dirección IP. Como en nuestro caso la dirección IP es dinámica, necesitaremos configurar un &lt;b style=""&gt;DDNS&lt;/b&gt;.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Para ello, podemos usar varios servidores &lt;b style=""&gt;DNS&lt;/b&gt; dinámicos. En este caso crearemos unos desde &lt;b style=""&gt;DynDns&lt;/b&gt; ya que es uno de los más consolidados. Nos abstendremos de explicar cómo es el funcionamiento de este servicio, aunque puede que lo hagamos en otra ocasión. &lt;/p&gt; &lt;p class="MsoNormal"&gt;Lo primero que debemos hacer es crearnos una cuenta en su portal, &lt;a href="http://www.dyndns.org/"&gt;www.dyndns.org&lt;/a&gt;, en el apartado &lt;i style=""&gt;account&lt;/i&gt;, seleccionamos &lt;span style="font-style: italic;"&gt;create account&lt;/span&gt; y rellenamos el formulario con nuestros datos. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Recibiremos un correo de confirmación de registro y una vez finalizado, podremos acceder a nuestra cuenta y crear un nuevo dominio. El mayor inconveniente que tiene este servicio es que es uno de los más utilizados, y por ello los dominios que nos ofrecen no son los más usuales (No confundamos dominios de subdominios. Nosotros podremos crear un subdominio dentro de un dominio perteneciente a DynDns). Por lo que nuestro nuevo dominio tendrá un aspecto como el siguiente: xxxxxx.dyndns.org donde xxxxx es nuestro subdominio.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;También es más que recomendable descargarse el programa que nos ofrece DynDns para llevar el control de nuestro servicio. Éste se puede descargar&lt;span style=""&gt;  &lt;/span&gt;desde &lt;span style="font-style: italic;"&gt;Support &lt;/span&gt;donde encontraremos una zona de descarga del mismo. &lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_a81d3sXAtpg/Sp4wbr30s7I/AAAAAAAAAAM/DBC3m8rP_8w/s1600-h/dyndns_update.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 158px;" src="http://3.bp.blogspot.com/_a81d3sXAtpg/Sp4wbr30s7I/AAAAAAAAAAM/DBC3m8rP_8w/s320/dyndns_update.jpg" alt="" id="BLOGGER_PHOTO_ID_5376788257318417330" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Lo instalamos, y una vez que introduzcamos nuestros usuario y login automáticamente detectará nuestra configuración, incluyendo nuestra IP dinámica. Aplicamos los cambios.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_a81d3sXAtpg/Sp4yjgjnShI/AAAAAAAAAAk/j49mdLip-g8/s1600-h/dyndns_config.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 221px;" src="http://2.bp.blogspot.com/_a81d3sXAtpg/Sp4yjgjnShI/AAAAAAAAAAk/j49mdLip-g8/s320/dyndns_config.jpg" alt="" id="BLOGGER_PHOTO_ID_5376790590743071250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Una vez creado nuestro “dominio”, lo siguiente es configurar nuestro router. En este caso lo haremos para un SMC, que nos da soporte para el servicio DynDns y es capaz de actualizar el servidor DNS cada vez que detecte un cambio de IP en la interfaz de WAN.&lt;/p&gt; &lt;p class="MsoNormal"&gt;Accedemos a la zona de DDNS, que en nuestro caso se encuentra en SYSTEM&gt;DDNS e introducimos los datos de nuestra cuenta, que son subdominio, usuario y password. Ponemos la función a enabled.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_a81d3sXAtpg/Sp4xWHPZeJI/AAAAAAAAAAc/d6MhBr4b8J8/s1600-h/SMC_DDNS.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 154px;" src="http://2.bp.blogspot.com/_a81d3sXAtpg/Sp4xWHPZeJI/AAAAAAAAAAc/d6MhBr4b8J8/s320/SMC_DDNS.jpg" alt="" id="BLOGGER_PHOTO_ID_5376789261097466002" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;Para comprobar que todo funciona, abrimos una ventana de ms-dos y hacemos un ping a nuestro dominio.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_a81d3sXAtpg/Sp4w93luxfI/AAAAAAAAAAU/qs1O6z-KfcE/s1600-h/ping.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 166px;" src="http://2.bp.blogspot.com/_a81d3sXAtpg/Sp4w93luxfI/AAAAAAAAAAU/qs1O6z-KfcE/s320/ping.jpg" alt="" id="BLOGGER_PHOTO_ID_5376788844579309042" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Por último tenemos que abrir el puerto 80 (http) en nuestro &lt;span style="font-style: italic;"&gt;router &lt;/span&gt;para poder establecer la comunicación desde el exterior. Puedes ver &lt;a href="http://xandrusoft.blogspot.com/2009/09/abrir-puerto-80-en-router.html"&gt;cómo abrir puerto 80&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-2532237361826375285?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/2532237361826375285/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/09/configurar-ddns-dynamic-domain-name.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2532237361826375285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/2532237361826375285'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/09/configurar-ddns-dynamic-domain-name.html' title='Configurar DDNS (Dynamic Domain Name System) con DynDns'/><author><name>Xandru</name><uri>http://www.blogger.com/profile/14230217063275904417</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_a81d3sXAtpg/Sp4wbr30s7I/AAAAAAAAAAM/DBC3m8rP_8w/s72-c/dyndns_update.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6791774795356838678</id><published>2009-09-01T07:03:00.000+02:00</published><updated>2010-10-01T09:42:36.100+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Funciones'/><category scheme='http://www.blogger.com/atom/ns#' term='Fecha'/><title type='text'>Cambiar formato de una fecha. Conversión entre PHP y mySql</title><content type='html'>&lt;span class="dropcaps"&gt;C&lt;/span&gt;&lt;p class="MsoNormal"&gt;uando en nuestra página web usamos bases de datos y en estas almacenamos fechas nos vemos con el inconveniente de que el formato es distinto al que estamos acostumbrados a utilizar diariamente. El formato en mysql es &lt;em&gt;aaaa-mm-dd&lt;/em&gt; y nosotros queremos usarla con el formato &lt;em&gt;dd/mm/aaaa&lt;/em&gt;.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Aunque no sea la mejor forma de hacerlo, aquí os dejo las funciones de conversión de una a otra:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;p class="MsoNormal"&gt;function cambiaFechaMySQL($fecha){&lt;br /&gt;ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fecha, $mifecha);&lt;br /&gt;$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1];&lt;br /&gt;return $lafecha;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;br /&gt;function cambiaFechaPHP($fecha){&lt;br /&gt;ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $mifecha);&lt;br /&gt;$lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1];&lt;br /&gt;return $lafecha;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si ademas de utilizar fechas las deseas validar puedes consultar:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-fecha-en-un-formulario.html"&gt;Validar fecha con jQuery&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6791774795356838678?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6791774795356838678/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/cambiar-formato-de-una-fecha-conversion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6791774795356838678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6791774795356838678'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/cambiar-formato-de-una-fecha-conversion.html' title='Cambiar formato de una fecha. Conversión entre PHP y mySql'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-6997251157166361356</id><published>2009-09-01T06:43:00.000+02:00</published><updated>2010-02-25T20:43:19.210+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='imput'/><category scheme='http://www.blogger.com/atom/ns#' term='textarea'/><title type='text'>Asignar valores por defecto a imput=”file” y a textarea</title><content type='html'>&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;eguro que muchos os habéis estado rompiendo la cabeza buscando la forma de dar un valor por defecto a el tipo de dato &lt;b&gt;imput=”file”&lt;/b&gt;. Pues que sepáis que no se puede!!!&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;No se puede dar un valor por defecto a los campos de este tipo, ya que hacen referencia a una ruta física local y podrían surgir problemas de seguridad. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Lo que se puede hacer, por ejemplo, es mostrar la imagen o el nombre del dato que tenemos almacenado y si el usuario desea modificarla, ofrecerle la opción de cargar una nueva. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;La etiqueta &lt;b&gt;textarea&lt;/b&gt;, aunque pueda parecérnoslo, no se trata de un &lt;em&gt;imput&lt;/em&gt; y para darle valor por defecto simplemente debemos mostrar el texto que deseemos entre su marca de apertura y de cierre. Es decir, en caso de que lo que deseemos mostrar por defecto sea una variable, introduciremos el siguiente código:&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&amp;lt;textarea id="txtobservaciones" name="txtobservaciones" rows="2" cols="40" class="txt" &amp;gt;&amp;lt;?=$_POST["txtobservaciones"] ?&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/div&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-6997251157166361356?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/6997251157166361356/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/asignar-valores-por-defecto-imputfile-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6997251157166361356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/6997251157166361356'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/asignar-valores-por-defecto-imputfile-y.html' title='Asignar valores por defecto a imput=”file” y a textarea'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-5112791052900947049</id><published>2009-08-19T20:24:00.000+02:00</published><updated>2010-02-25T20:43:32.960+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Error'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='404'/><title type='text'>Configurar página 404</title><content type='html'>&lt;span class="dropcaps"&gt;H&lt;/span&gt;&lt;p class="MsoNormal"&gt;oy vamos a personalizar nuestra página de error 404.&lt;/p&gt;&lt;br /&gt;Para quien no lo sepa, se muestra cuando se intenta acceder a una página que no existe o que ha sido borrada.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Lo primero que debemos hacer es crear un nuevo fichero al que llamaremos, por ejemplo, &lt;em&gt;404.php&lt;/em&gt;. &lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En este caso añadiremos unos monigotes muy graciosos que encontré y que se pueden descargar desde la página de &lt;a href="http://www.404toons.com"&gt;404 Toons&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WFPalWVyjPQ/SoxSbXSi-xI/AAAAAAAAACY/7Rn0Q4FIuhw/s1600-h/toon.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 294px;" src="http://2.bp.blogspot.com/_WFPalWVyjPQ/SoxSbXSi-xI/AAAAAAAAACY/7Rn0Q4FIuhw/s320/toon.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5371759085607910162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez descargado el fichero &lt;em&gt;.zip&lt;/em&gt; tenéis que copiarlo en una carpeta dentro de vuestro directorio de trabajo y buscar cuál os gusta más.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Después de esto, llega el turno de darle forma a nuestra página &lt;em&gt;404.php&lt;/em&gt;. Para añadir el monigote, copiamos el código que trae en su carpeta correspondiente en nuestra página de error.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Tienes que tener cuidado a la hora de escribir el enlace en el lugar donde tenéis almacenados los archivos descargados y añadir la ruta absoluta, ¿por qué? porque  las páginas 404 se comportan de forma distinta al resto y puede que, si añades una ruta relativa, te den problemas. Un ejemplo puede ser algo como lo siguiente:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;"http://localhost/proyectu/404/404police1/404police1.swf"&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si no tienes el archivo &lt;em&gt;.htaccess&lt;/em&gt; es hora de que lo crees y lo añadas a tu carpeta raíz de trabajo. Edítalo para añadir la siguiente línea de código, teniendo en cuenta que la página que acabamos de crear la tenemos en el directorio raíz:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;ErrorDocument 404 /404.php&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Con todo esto ya deberías ver tu página de error si accedes a una página que no existe. Asegúrate de que la caché del navegador está limpia.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-5112791052900947049?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/5112791052900947049/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/configurar-pagina-404.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5112791052900947049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/5112791052900947049'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/configurar-pagina-404.html' title='Configurar página 404'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WFPalWVyjPQ/SoxSbXSi-xI/AAAAAAAAACY/7Rn0Q4FIuhw/s72-c/toon.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8411093008377973081</id><published>2009-08-18T11:37:00.001+02:00</published><updated>2010-02-25T20:43:48.125+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Gráficas'/><title type='text'>Añadir gráficas de estadísticas en php</title><content type='html'>&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;i queremos dar un toque de color a nuestras páginas en las que tengamos que mostrar estad&amp;iacute;sticas, podemos utilizar la librer&amp;iacute;a &lt;a href="http://phpexperteditor.com/zxchart.php"&gt;zxchart&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Una vez que la descarguemos del &lt;a href="http://phpexperteditor.com/zxchart.php"&gt;Sitio Oficial&lt;/a&gt; debemos añadirla en una parpeta dentro de nuestro directorio de trabajo. En esta carpeta podemos encontrar un archivo &lt;em&gt;index.html&lt;/em&gt; en el que encontraremos documentaci&amp;oacute;n y ejemplos.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;La gr&amp;aacute;fica que mostraremos ser&amp;aacute; algo como la que observamos a continuaci&amp;oacute;n&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/Sop5I2fxnSI/AAAAAAAAACI/VGBTbntOHv0/s1600-h/grafica.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 242px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/Sop5I2fxnSI/AAAAAAAAACI/VGBTbntOHv0/s320/grafica.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5371238698567441698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para poder mostrar las gráficas debemos añadir el siguiente código en el lugar donde queramos incluirla en nuestro fichero:&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;br /&gt;&amp;lt;object classid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="500" height="300"&amp;gt;&lt;br /&gt;       &amp;lt;param name = movie value = "zxchart/zxchart.swf?RefreshPeriod=60&amp;datafile=datosgrafica.php&amp;stylefile=zxchart/styles/column4.stl"&amp;gt;&lt;br /&gt;       &amp;lt;param name = quality value = high&amp;gt;&lt;br /&gt;       &amp;lt;embed src = "zxchart/zxchart.swf?RefreshPeriod=60&amp;datafile=datosgrafica.php&amp;stylefile=zxchart/styles/column4.stl" quality = high type = "application/x-shockwave-flash" width="500" height="300"&amp;gt;&lt;br /&gt;       &amp;lt;/embed&amp;gt;&lt;br /&gt;       &amp;lt;/object&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Y para que los datos se impriman en la gr&amp;aacute;fica, el c&amp;oacute;digo resultante ha de ser algo del estilo:&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_WFPalWVyjPQ/Sop5zXJlR_I/AAAAAAAAACQ/tTS0jN0Y8SE/s1600-h/datos.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 121px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/Sop5zXJlR_I/AAAAAAAAACQ/tTS0jN0Y8SE/s320/datos.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5371239428887234546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Pudiendo ser escritos directamente, o si debemos realizar consultas a una base de datos, nuestro c&amp;oacute;digo pod&amp;iacute;a ser como el siguiente:&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;br /&gt;$valor = $_SESSION['estano'];&lt;br /&gt;  unset($_SESSION['estano']);&lt;br /&gt;  print "&amp;tTText=Facturación de empleados\n&lt;br /&gt;    &amp;tBText=Facturación por año\n&lt;br /&gt;    &amp;tLText=Euros\n&lt;br /&gt;    ";&lt;br /&gt;  $factura = 0;&lt;br /&gt;  $donde = array("fecha",$valor);&lt;br /&gt;  $campos = array("id_factura", "id_empleado", "fecha", "cantidad", "precio", "concepto", "borrado");&lt;br /&gt;  $elem = $dao-&gt;arrayListTableElementsLike("facturas",$campos,$donde);&lt;br /&gt;  while($row=mysql_fetch_array($elem)){&lt;br /&gt;   if($row["borrado"]!=1){&lt;br /&gt;    $id[$row["id_empleado"]] = 1;&lt;br /&gt;    if($row["concepto"]=="")&lt;br /&gt;     $cobro[$row["id_empleado"]] += ($row["precio"]*$row["cantidad"]);&lt;br /&gt;    else&lt;br /&gt;     $inv[$row["id_empleado"]] += ($row["precio"]*$row["cantidad"]);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  print "&amp;title=title;";&lt;br /&gt;  foreach($id as $key =&gt; $valor){&lt;br /&gt;   $name = $dao-&gt;getElemWhere("empleados","id_empleado",$key);&lt;br /&gt;   print $name.";";&lt;br /&gt;  }&lt;br /&gt;  print "\n";&lt;br /&gt;  print "&amp;data1=Ingresado;";&lt;br /&gt;  foreach($id as $key =&gt; $valor){&lt;br /&gt;   print $cobro[$key].";";&lt;br /&gt;  }&lt;br /&gt;  print "\n";&lt;br /&gt;  print "\n&amp;data2=No Ingresado;";&lt;br /&gt;  foreach($id as $key =&gt; $valor){&lt;br /&gt;   print $inv[$key].";";&lt;br /&gt;  }&lt;br /&gt;  print "\n";&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si queréis m&amp;aacute;s informaci&amp;oacute;n podéis consultar la documentaci&amp;oacute;n o... preguntarme. En la mayoría de lo posible intentaré ayudaros.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8411093008377973081?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8411093008377973081/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/anadir-gr-de-estad-en-php.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8411093008377973081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8411093008377973081'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/anadir-gr-de-estad-en-php.html' title='Añadir gr&amp;aacute;ficas de estad&amp;iacute;sticas en php'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/Sop5I2fxnSI/AAAAAAAAACI/VGBTbntOHv0/s72-c/grafica.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-789298014215438490</id><published>2009-08-15T17:55:00.000+02:00</published><updated>2010-10-01T09:52:07.931+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Validaciones'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='cuenta bancaria'/><category scheme='http://www.blogger.com/atom/ns#' term='formularios'/><category scheme='http://www.blogger.com/atom/ns#' term='validate'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>Validar número de cuenta bancaria en un formulario</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s1600/jquery-logo.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;S&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;eguimos con la implementación de funciones de validación para nuestros formularios.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;En esta ocasión validaremos el &lt;strong&gt;n&amp;uacute;mero de cuenta bancaria&lt;/strong&gt;. A continuación podéis ver las funciones para &lt;strong&gt;PHP&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;br /&gt;function compruebaCuenta($ofi,$cuenta){&lt;br /&gt;$pesos = Array(1,2,4,8,5,10,9,7,3,6);&lt;br /&gt;$x=8;&lt;br /&gt;for($x=8; $x&gt;0; $x--){&lt;br /&gt;$digito=$ofi[$x-1];&lt;br /&gt;$dc1=$dc1+($pesos[$x+2-1]*($digito));&lt;br /&gt;}&lt;br /&gt;$Resto = $dc1%11;&lt;br /&gt;$dc1=11-$Resto;&lt;br /&gt;if ($dc1==10) $dc1=1;&lt;br /&gt;if ($dc1==11) $dc1=0;&lt;br /&gt;for($x=10; $x&gt;0; $x--){&lt;br /&gt;$digito=$cuenta[$x-1];&lt;br /&gt;$dc2=$dc2+($pesos[$x-1]*($digito));&lt;br /&gt;}&lt;br /&gt;$Resto = $dc2%11;&lt;br /&gt;$dc2=11-$Resto;&lt;br /&gt;if ($dc2==10) $dc2=1;&lt;br /&gt;if ($dc2==11) $dc2=0;&lt;br /&gt;$DigControl=($dc1)."".($dc2);&lt;br /&gt;return $DigControl;&lt;br /&gt;&lt;br /&gt;/*if (strlen($num)==20)&lt;br /&gt;if(ereg("^[0-9]+$",$num))&lt;br /&gt;return true;&lt;br /&gt;if (strlen($num)==23)&lt;br /&gt;if(ereg("^([[:digit:]]{4})*-*([[:digit:]]{4})*-*([[:digit:]]{2})*-*([[:digit:]]{10})$",$num))&lt;br /&gt;return true;&lt;br /&gt;return false;*/&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Donde &lt;em&gt;$ofi&lt;/em&gt; contiene los 8 primeros d&amp;iacute;gitos del n&amp;uacute;mero de cuenta y &lt;em&gt;$cuenta&lt;/em&gt; es el n&amp;uacute;mero completo.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Tambi&amp;eacute;n puedes añadir m&amp;aacute;s funciones:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-fecha-en-un-formulario.html"&gt;Validar Fecha en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-dni-en-un-formulario.html"&gt;Validar DNI en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-email-en-un-formulario.html"&gt;Validar Email en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-formularios-con-jquery.html"&gt;Validaci&amp;oacute;n de formularios con jQuery&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-789298014215438490?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/789298014215438490/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-n-de-cuenta-bancaria-en-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/789298014215438490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/789298014215438490'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-n-de-cuenta-bancaria-en-un.html' title='Validar n&amp;uacute;mero de cuenta bancaria en un formulario'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s72-c/jquery-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-110045154058334618</id><published>2009-08-15T17:45:00.000+02:00</published><updated>2010-10-01T09:52:25.330+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Validaciones'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='formularios'/><category scheme='http://www.blogger.com/atom/ns#' term='validate'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>Validar email en un formulario</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s1600/jquery-logo.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;D&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;entro del apartado de configuracuión de funciones de validación de formularios para la librería &lt;i&gt;validate&lt;/i&gt; de jQuery y para PHP, esta vez nos toca añadir las restricciones de validación de email.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Aunque la librería &lt;strong&gt;&lt;i&gt;validate&lt;/i&gt;&lt;/strong&gt; de &lt;strong&gt;jQuery&lt;/strong&gt; incluya una función propia de &lt;strong&gt;validación de email&lt;/strong&gt;, creo que no es lo suficienteme restrictiva, por ello he modificado dicha función y de paso he creado la función en &lt;strong&gt;PHP&lt;/strong&gt; para la validación en el &lt;i&gt;lado del servidor&lt;/i&gt;.&lt;/p&gt;&lt;br /&gt;&lt;strong&gt;Plugin de jQuery Validate&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;function(value, element) {&lt;br /&gt;// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/&lt;br /&gt;return this.optional(element) || /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,5})$/.test(value);&lt;br /&gt;},&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;function compruebaEmail($email){&lt;br /&gt;if (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,5})$", $email))&lt;br /&gt;return true;&lt;br /&gt;return false;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si no sabes cómo usar la librer&amp;iacute;a &lt;em&gt;Validate&lt;/em&gt; de jQuery lee el siguiente post:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-formularios-con-jquery.html"&gt;Validaci&amp;oacute;n de formularios con jQuery&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Tambi&amp;eacute;n puedes añadir m&amp;aacute;s funciones:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-fecha-en-un-formulario.html"&gt;Validar Fecha en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-dni-en-un-formulario.html"&gt;Validar DNI en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-n-de-cuenta-bancaria-en-un.html"&gt;Validar N&amp;uacute;mero de cuenta bancaria en formularios&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-110045154058334618?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/110045154058334618/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-email-en-un-formulario.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/110045154058334618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/110045154058334618'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-email-en-un-formulario.html' title='Validar email en un formulario'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s72-c/jquery-logo.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-4140519261852577863</id><published>2009-08-15T16:57:00.000+02:00</published><updated>2012-02-10T11:24:41.908+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Validaciones'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Fecha'/><category scheme='http://www.blogger.com/atom/ns#' term='formularios'/><category scheme='http://www.blogger.com/atom/ns#' term='validate'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>Validar fecha en un formulario</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TKWKyzSeNUI/AAAAAAAAAKk/HUbBAuZxp8E/s1600/jquery.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;U&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;na vez que tenemos configurada la librería &lt;i&gt;validate&lt;/i&gt; de jQuery, es el turno de añadir algunas funciones que le añadan funcionalidad.&lt;/strong&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Cuando le echamos un vistazo a la librería &lt;i&gt;validate&lt;/i&gt;, vamos que las validaciones no están pensadas para el español, por lo que lo primero que debemos cambiar es la forma de &lt;strong&gt;validar la fecha&lt;/strong&gt; para adaptarla a nuestro formato.&lt;/p&gt;&lt;p class="MsoNormal"&gt;He creado la función tanto para &lt;strong&gt;jQuery&lt;/strong&gt; como para &lt;strong&gt;PHP&lt;/strong&gt;.&lt;/p&gt;&lt;strong&gt;Plugin de jQuery Validate&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;function(value, element) {&lt;br /&gt;if(!/Invalid|NaN/.test(new Date(value))){&lt;br /&gt;var d = value.substr(0,2);&lt;br /&gt;var m = value.substr(3,2);&lt;br /&gt;var a = value.substr(6,4);&lt;br /&gt;if((a &lt;= 2050) || (m &lt;= 12) || (d &lt;= 31)){&lt;br /&gt;return false&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;if((a%4 != 0) &amp;amp;&amp;amp; (m == 2) &amp;amp;&amp;amp; (d &gt; 28)){&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;if ((((m == 4) || (m == 6) || (m == 9) || (m==11)) &amp;amp;&amp;amp; (d&gt;30)) || ((m==2) &amp;amp;&amp;amp; (d&gt;29))){&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return this.optional(element);&lt;br /&gt;},&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;function compruebaFecha($date){&lt;br /&gt;if ($date == "" || $date == "dd/mm/aaaa")&lt;br /&gt;return false;&lt;br /&gt;if (!ereg("^([[:digit:]]{2})/([[:digit:]]{2})/([[:digit:]]{4})$", $date, $vec))&lt;br /&gt;return false;&lt;br /&gt;else{&lt;br /&gt;if ($vec[1] &lt;= 31)&lt;br /&gt;return false;&lt;br /&gt;if ($vec[2] &lt;= 12)&lt;br /&gt;return false;&lt;br /&gt;//if ($vec[3] &lt;= date("Y") + 1)&lt;br /&gt;//return false;&lt;br /&gt;if ($date != date("d/m/Y",mktime(0,0,0, $vec[2], $vec[1], $vec[3])))&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si no sabes cómo usar la librería &lt;em&gt;Validate&lt;/em&gt; de jQuery lee el siguiente post:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-formularios-con-jquery.html"&gt;Validación de formularios con jQuery&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;También puedes añadir más funciones:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-dni-en-un-formulario.html"&gt;Validar DNI en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-email-en-un-formulario.html"&gt;Validar Email en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-n-de-cuenta-bancaria-en-un.html"&gt;Validar Número de cuenta bancaria en formularios&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si quieres cambiar el formato de una fecha para introducirla en una base de datos mira:&lt;br /&gt;&lt;a href"http://xandrusoft.blogspot.com/2009/08/cambiar-formato-de-una-fecha-conversion.html"&gt;Convertir decha de PHP a MySql y viceversa&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-4140519261852577863?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/4140519261852577863/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-fecha-en-un-formulario.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4140519261852577863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/4140519261852577863'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-fecha-en-un-formulario.html' title='Validar fecha en un formulario'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TKWKyzSeNUI/AAAAAAAAAKk/HUbBAuZxp8E/s72-c/jquery.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1048647748963787957</id><published>2009-08-15T16:46:00.000+02:00</published><updated>2010-10-01T09:51:50.078+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Validaciones'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='DNI'/><category scheme='http://www.blogger.com/atom/ns#' term='formularios'/><category scheme='http://www.blogger.com/atom/ns#' term='validate'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>Validar DNI en un formulario</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/_WFPalWVyjPQ/TKWKyzSeNUI/AAAAAAAAAKk/HUbBAuZxp8E/s1600/jquery.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;L&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;a librería &lt;i&gt;validate&lt;/i&gt; de jQuery nos permite validar múltiples formatos, pero lo mejor de todo es que es totalmente configurable.&lt;/strong&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Cuando estamos creando un formulario en el que los usuarios han de insertar sus datos, muchas veces necesitamos que introduzcan su verdadero &lt;strong&gt;DNI&lt;/strong&gt;. Para comprobarlo, he creado dos funciones, una para la librería de &lt;strong&gt;jQuery&lt;/strong&gt; y otra para validación en la parte del servidor con &lt;strong&gt;PHP&lt;/strong&gt;.&lt;br /&gt;&lt;strong&gt;Plugin de jQuery Validate&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&lt;br /&gt;nif: function(value, element) {&lt;br /&gt;if(/^([0-9]{8})*[a-zA-Z]+$/.test(value)){&lt;br /&gt;var numero = value.substr(0,value.length-1);&lt;br /&gt;var let = value.substr(value.length-1,1);&lt;br /&gt;numero = numero % 23;&lt;br /&gt;var letra='TRWAGMYFPDXBNJZSQVHLCKET';&lt;br /&gt;letra=letra.substring(numero,numero+1);&lt;br /&gt;if (letra==let)&lt;br /&gt;return true;&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;return this.optional(element);&lt;br /&gt;},&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;code&gt;&lt;br /&gt;function compruebaNIF($num){&lt;br /&gt;if (strlen($num)==9)&lt;br /&gt;if(ereg("^([0-9])*([A-Z])$",$num))&lt;br /&gt;if($ret = $this-&gt;compruebaLletraNIF($num))&lt;br /&gt;return true;&lt;br /&gt;if (strlen($num)==10)&lt;br /&gt;if(ereg("^([0-9])*-*([A-Za-z])$",$num))&lt;br /&gt;if($ret = $this-&gt;compruebaLletraNIF($num))&lt;br /&gt;return true;&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function compruebaLletraNIF ($dni) {&lt;br /&gt;$valor= (int) ($dni / 23);&lt;br /&gt;$valor *= 23;&lt;br /&gt;$valor= $dni - $valor;&lt;br /&gt;$lletres= "TRWAGMYFPDXBNJZSQVHLCKEO";&lt;br /&gt;$lletraNif= substr ($lletres,$valor,1);&lt;br /&gt;if($lletraNif==substr ($dni,-1,1))&lt;br /&gt;return true;&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Si no sabes cómo usar la librer&amp;iacute;a &lt;em&gt;Validate&lt;/em&gt; de jQuery lee el siguiente post:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-formularios-con-jquery.html"&gt;Validaci&amp;oacute;n de formularios con jQuery&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Tambi&amp;eacute;n puedes añadir m&amp;aacute;s funciones:&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-fecha-en-un-formulario.html"&gt;Validar Fecha en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-email-en-un-formulario.html"&gt;Validar Email en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-n-de-cuenta-bancaria-en-un.html"&gt;Validar N&amp;uacute;mero de cuenta bancaria en formularios&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1048647748963787957?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1048647748963787957/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-dni-en-un-formulario.html#comment-form' title='11 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1048647748963787957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1048647748963787957'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-dni-en-un-formulario.html' title='Validar DNI en un formulario'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WFPalWVyjPQ/TKWKyzSeNUI/AAAAAAAAAKk/HUbBAuZxp8E/s72-c/jquery.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-8380975288184921972</id><published>2009-08-14T15:32:00.000+02:00</published><updated>2010-10-01T09:41:05.284+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Validaciones'/><category scheme='http://www.blogger.com/atom/ns#' term='formularios'/><category scheme='http://www.blogger.com/atom/ns#' term='validate'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>Validar formularios con Jquery</title><content type='html'>&lt;span class="imgini_vert"&gt;&lt;img border="0" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s1600/jquery-logo.png" /&gt;&lt;/span&gt;&lt;span class="dropcaps"&gt;P&lt;/span&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;ara poder validar los campos de un formulario con jQuery desde el lado del cliente, lo primero que debemos hacer es descargar la librer&amp;iacute;a &lt;em&gt;jQuery&lt;/em&gt;, en caso de no tenerla, desde &lt;a href="http://jquery.com/"&gt;la p&amp;aacute;gina oficial del proyecto&lt;/a&gt; y segundo descargar el publing &lt;em&gt;validate&lt;/em&gt; desde &lt;a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/"&gt;aqu&amp;iacute;&lt;/a&gt;.&lt;/p&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Para poder usar el pluging &lt;i&gt;validate&lt;/i&gt; lo único que debemos hacer es mover el contenido de los ficheros descargados, por ejemplo, a la carpeta &lt;em&gt;js&lt;/em&gt; y estará listo para usar.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;El c&amp;oacute;digo que debemos añadir al HTML es:&lt;br /&gt;&lt;strong&gt;Dentro de la cabecera&lt;/strong&gt; &lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;br /&gt;//realizar una llamada a la librer&amp;iacute;a jQuery y a Validate&lt;br /&gt;&amp;lt;script language="javascript" src="js/jquery.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script language="javascript" src="js/jquery.validate.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;//Una vez que se cargue la primera parte de la p&amp;aacute;gina ya se podr&amp;aacute; usar la librer&amp;iacute;a&lt;br /&gt;&amp;nbsp;$().ready(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// validate the comment form when it is submitted&lt;br /&gt;&amp;nbsp;&amp;nbsp;$("#Forms").validate();&lt;br /&gt;&amp;nbsp;});&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;//Le damos formato a los mensajes de error&lt;br /&gt;&amp;lt;script type="text/css"&amp;gt;&lt;br /&gt;#Forms label.error {&lt;br /&gt;margin-left: 10px;&lt;br /&gt;width: auto;&lt;br /&gt;display: inline;&lt;br /&gt;color: red;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;strong&gt;Dentro de los &lt;em&gt;imputs&lt;/em&gt; que queramos validar del formulario&lt;/strong&gt; debemos tener cuidado de que su marca &lt;em&gt;name&lt;/em&gt; tenga el mismo valor que dentro de la funci&amp;oacute;n de del plugin &lt;em&gt;Validate&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="syntax_hilite"&gt;&lt;br /&gt;&amp;lt;td class="obligatorio"&amp;gt;Nombre (Obligatorio)&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;lt;input id="cname" name="name" &lt;b&gt;class="required"&lt;/b&gt; minlength="2" /&amp;gt;   &lt;br /&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Donde &lt;b&gt;class="required"&lt;/b&gt; significa que el parámetro es obligatorio, pudiendo a&amp;ntilde;adir m&amp;aacute;s restricciones a continuaci&amp;oacute;n.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En la documentaci&amp;oacute;n oficial tendremos las especificaciones de todas las funciones que se pueden usar, e incluso podr&amp;eacute;is añadir vuestras propias funciones para realizar validaciones que no est&amp;eacute;n incluidas.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;En este blog podéis encontrar funciones a&amp;ntilde;adidas para completar las validaciones en formularios.&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-dni-en-un-formulario.html"&gt;Validar DNI en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-fecha-en-un-formulario.html"&gt;Validar Fecha en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-email-en-un-formulario.html"&gt;Validar Email en formularios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xandrusoft.blogspot.com/2009/08/validar-n-de-cuenta-bancaria-en-un.html"&gt;Validar N&amp;uacute;mero de cuenta bancaria en formularios&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-8380975288184921972?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/8380975288184921972/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-formularios-con-jquery.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8380975288184921972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/8380975288184921972'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/08/validar-formularios-con-jquery.html' title='Validar formularios con Jquery'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/TKWK2FcDNnI/AAAAAAAAAKo/qZVuE2N_jm4/s72-c/jquery-logo.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-192488353749097039</id><published>2009-02-22T07:23:00.000+01:00</published><updated>2010-10-01T09:41:44.842+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programación web'/><title type='text'>Evolucionando</title><content type='html'>&lt;span class="dropcaps"&gt;S&lt;/span&gt;iguiendo la evolución natural de las cosas, y más en concreto la de mi página web, una vez finalizada y comparándola con muchas otras de la red, no fue difícil percatarme de que algo le faltaba. Otras páginas tenían textos en movimiento, menús desplegables… y la mía simplemente era un pantalla inmóvil y, por qué no decirlo, inútil. Buscando un poco por diferentes foros en la red, descubrí que existían varios lenguajes o tecnologías para crear páginas web. HTML era la base, la caja, pero dentro de esa caja se pueden meter muchas cosas y la mía se encontraba vacía. Por eso intenté familiarizarme con esas, para mí, nuevas tecnologías.&lt;br /&gt;&lt;br /&gt;Descubrí la página &lt;a href="http://www.htmlya.com.ar" target="_new"&gt;HTMLYa&lt;/a&gt;, creada creo por unos argentinos (deducido de la extensión del dominio .com.ar), en la cual nos ayuda a comprender y practicar con varias de estas tecnologías, como puede ser CSS, JavaScript, DHTML, AJAX, PHP, MySql…  Esto para mí era maravilloso, fantástico: podía darle animación a mi página y yo sin saberlo!! Por lo que me puse a practicar un poco e informarme más ampliamente. Si alguno lo desea, puede hacerse con alguno de los libros de la serie “In Action” como puede ser "Manning PHP in Action" ó para usuarios más avanzados Manning JQuery in Action.&lt;br /&gt;&lt;br /&gt;Aunque todavía no he creado ninguna página en la que demuestre mis avances en la “programación web” sí que estoy inmerso en dos proyectos. Uno que es el proyecto fin de carrera, con el que me encuentro diseñando un portal web para la gestión de un local hostelero, y el otro es XandruSoft 2.0, aunque este último se encuentra parado momentáneamente mientras finalizo el proyecto.&lt;br /&gt;&lt;br /&gt;Espero dentro de poco poder mostraros mis progresos y que os sirva de "empujoncito" para que os llame la atención la creación de páginas web, que aunque me creo incapaz de trabajar en una empresa diseñando y programando 8 horas al día; sí como meta personal  se lo recomiendo a todo el mundo.&lt;br /&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" alt="" id="BLOGGER_PHOTO_ID_5442261851280970226" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-192488353749097039?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/192488353749097039/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/02/evolucionando.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/192488353749097039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/192488353749097039'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/02/evolucionando.html' title='Evolucionando'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-1841008163239017870</id><published>2009-02-19T18:22:00.000+01:00</published><updated>2010-02-25T20:47:49.913+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Artículos'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflexiones'/><title type='text'>No usar MD5!!</title><content type='html'>&lt;span class="dropcaps"&gt;H&lt;/span&gt;oy he leído un artículo creado por el Servicio de Inteligencia de una de las principales empresas de seguridad digital en el que, mediante una serie de ejemplos, nos demuestra que el MD5 (MD5 es uno de los algoritmos de reducción criptográficos) es potencialmente inseguro, ya que se puede obtener la misma cadena-resultado para distintos ficheros. El problema, por lo visto, ya viene de hace tiempo, desde que en 1996 alguien consiguiese obtener la misma cadena para dos ficheros distintos. En este artículo, muy gracioso además porque te plantean como acertar en el sorteo del Euromillones, te demuestran cómo se resuelve el problema dando lugar a distintos ficheros pdf (uno por cada resultado posible) con el mismo valor MD5. Y lógicamente, al final del artículo, te "sugieren" que no utilices MD5. Y yo me pregunto... si tantas pruebas hay de que es vulnerable, ¿por qué no se deja de usar?&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-1841008163239017870?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/1841008163239017870/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/02/no-usar-md5.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1841008163239017870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/1841008163239017870'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/02/no-usar-md5.html' title='No usar MD5!!'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-911205025247203057.post-92842095421750150</id><published>2009-02-17T23:44:00.000+01:00</published><updated>2010-02-25T20:48:08.616+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflexiones'/><category scheme='http://www.blogger.com/atom/ns#' term='Programación web'/><title type='text'>XandruSoft Blog2.0, de todo para todos</title><content type='html'>&lt;span class="dropcaps"&gt;O&lt;/span&gt;tro blog más, uno de tantos, aunque se intentará, aunque sea para disfrute propio, de crear algo diferente, abierto a infinidad de puntos de reflexión y/o paranoia y donde cualquiera pueda sentirse indentificado o interesado por alguno de los temas.&lt;br /&gt;&lt;br /&gt;XandruSoft, nace con un regalo, el regalo de un dominio y un hosting gratuito durante un año. El problema principal residia en que.. que hacer conun dominio alojado en un ISP? Podía decantarme por varias opciones:&lt;br /&gt;1. Crear una página super chula con el editor que me ofrecia la gente de mi ISP, con el cual puedes elegir entre más de 5 diseños y cambiar los colores!!!&lt;br /&gt;2. Buscar alguna empresa de diseño web y que me crease una página, aun más chula, más personalizada y se ocupasen ellos de todo.&lt;br /&gt;Después de pensar 3 segundos (no invirtáis nunca más de ese tiempo para estos casos) me decanté por la tercera opción.&lt;br /&gt;3. Buscarme la vida y crearme mi propia página, en la que pueda meter lo que yo quiera, pueda darle el diseño que me gustase, fuese gratis y sobre todo, fuese totalmente mía.&lt;br /&gt;&lt;br /&gt;Muchos pensarán que crear una página web es una tarea dura, y que lleva mucho tiempo, pero en la web (www) podemos encontrar muchos sitios que nos ayudan con esta tarea.&lt;br /&gt;Por mi parte, me decanté por la más llamativa que me salió entre las opciones del google a la hora de buscar cómo crear mi página web. Esta fue &lt;a href="http://www.comocreartuweb.com/" target="_new"&gt;ComoCrearTuWeb&lt;/a&gt;.&lt;br /&gt;En ella, nuestro amigo, nos enseña a cómo crear una página identica a la suya. En principio sería de poca utilidad tener una página igual a la que tiene otro usuario, por lo que puede que nos parezca absurdo. Pero según vamos avanzando en su tutorial, vamos dándonos cuenta de que estamos adquiriendo unos conocimientos básicos de programación HTML y CSS y vamos modelando en nuestra cabeza ideas para aplicarlas a nuestro propio sitio. Después de no más de un par de días realizando el tutorial, nos percatamos de que ya tenemos una página creada, por nosotros solitos y que ya somos capaces de crear cualquier cosa. Ya nos creeremos programadores web!!!!&lt;br /&gt;&lt;br /&gt;Y por fin animándonos a crear nuestra página -una vez que disponemos del dominio, el hosting y los conocimientos basicos- nace &lt;a href="http://www.xandrusoft.es" target="_new"&gt;XandruSoft&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s1600-h/comentario.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 67px;" src="http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s400/comentario.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5442261851280970226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/911205025247203057-92842095421750150?l=xandrusoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xandrusoft.blogspot.com/feeds/92842095421750150/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://xandrusoft.blogspot.com/2009/02/xandrusoft-blog20-de-todo-para-todos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/92842095421750150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/911205025247203057/posts/default/92842095421750150'/><link rel='alternate' type='text/html' href='http://xandrusoft.blogspot.com/2009/02/xandrusoft-blog20-de-todo-para-todos.html' title='XandruSoft Blog2.0, de todo para todos'/><author><name>xnd</name><uri>http://www.blogger.com/profile/06742947370724743489</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://2.bp.blogspot.com/_WFPalWVyjPQ/S2fUVXzP-iI/AAAAAAAAADk/C6GzZY7Qt6Y/S220/LogoXandruSoft.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WFPalWVyjPQ/S4bMUcRDEfI/AAAAAAAAAEk/SSZwPMNrN-4/s72-c/comentario.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
