<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pedro Ventura | Blog tutoriales artículos tutoriales Encuentra manuales y tutoriales sobre tutoriales Una selección de tutoriales que he ido haciendo y que tratan temas tan importantes como Google Apps, facebook Connect y recaptcha.
 </title>
	<atom:link href="http://www.pedroventura.com/blog_programacion/tag/tutoriales/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pedroventura.com</link>
	<description>Portfolio Profesional y Blog</description>
	<lastBuildDate>Sat, 04 Feb 2012 10:50:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Cadenas en JavaScript. Parte 1</title>
		<link>http://www.pedroventura.com/blog_programacion/javascript/cadenas-en-javascript-parte-1/</link>
		<comments>http://www.pedroventura.com/blog_programacion/javascript/cadenas-en-javascript-parte-1/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 08:00:01 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[librerias y funciones]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3202</guid>
		<description><![CDATA[Hace unas semanas que he recibo 2 libros de Javascript que me he comprado en Amazon y estoy empezando poco a poco a leerlos. Intentaré todo lo que pueda ir colgando resúmenes de los capítulos de uno de los libros : Javascript Cookbook. Por lo que he visto, una maravilla. Las cadenas en JavaScript es uno de los componentes mas importantes, probablemente mas usado que cualquier otro tipo de dato. Las cadenas son también usadas como parámetros cuando se invoca aplicaciones AJAX del lado del servidor, además de crear el formato de serialización básica de todos los objetos JavaScript. Uno de los métodos que comparten todos los objetos JavaScript es toString, que devuelve una cadena que contiene el formato serializado del objeto. Una cadena JavaScript puede ser un tipo de dato primitivo o un objeto. Los tipos de datos primitivos en Javascript son: números, Boolean (true or false), null (sin dato), and undefined (unknown o no conocido). Adicionalmente como tipo de dato primitivo las cadenas son también literales JavaScript: una colección que incluye los números (ya sean floats o enteros), el formato literal de las matrices, objetos y expresiones regulares, así como los números y booleanos. Una cadena Objeto Un [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/php/funcion-en-php-para-limpiar-cadenas-de-texto-en-utf8/' rel='bookmark' title='funcion en php para limpiar cadenas de texto en utf8'>funcion en php para limpiar cadenas de texto en utf8</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/obtener-el-nombre-del-dominio-con-javascript/' rel='bookmark' title='obtener el nombre del dominio con javascript'>obtener el nombre del dominio con javascript</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/revelar-las-contrasenas-con-javascript/' rel='bookmark' title='Revelar las contraseñas con Javascript'>Revelar las contraseñas con Javascript</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/funciones-javascript-%e2%80%93-setinterval-clearinterval-settimeout-2/' rel='bookmark' title='funciones Javascript – setInterval() clearInterval() setTimeout() – 2'>funciones Javascript – setInterval() clearInterval() setTimeout() – 2</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/funciones-javascript-setinterval-clearinterval-settimeout/' rel='bookmark' title='funciones Javascript – setInterval()  clearInterval() setTimeout()'>funciones Javascript – setInterval()  clearInterval() setTimeout()</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hace unas semanas que he recibo 2 libros de Javascript que me he comprado en Amazon y estoy empezando poco a poco a leerlos.<br />
Intentaré todo lo que pueda ir colgando resúmenes de los capítulos de uno de los libros : <a href="http://oreilly.com/catalog/9780596806149/" rel="nofollow" target="_blank">Javascript Cookbook</a>. Por lo que he visto, una maravilla.<br />
<br />
<img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/07/cat.gif" alt="" title="javascript cookbok" width="180" height="236" class="aligncenter size-full wp-image-3213" /></p>
<p>Las cadenas en JavaScript es uno de los componentes mas importantes, probablemente mas usado que cualquier otro tipo de dato.<br />
Las cadenas son también usadas como parámetros cuando se invoca aplicaciones AJAX del lado del servidor, además de crear el formato de serialización básica de todos los objetos JavaScript. Uno de los métodos que comparten todos los objetos JavaScript es <em>toString</em>, que devuelve una cadena que contiene el formato serializado del objeto.</p>
<p>Una cadena JavaScript puede ser un tipo de dato primitivo o un objeto. Los tipos de datos primitivos en Javascript son: números, Boolean (true or false), null (sin dato), and undefined (unknown o no conocido). Adicionalmente como tipo de dato primitivo las cadenas son también literales JavaScript: una colección que incluye los números (ya sean floats o enteros), el formato literal de las matrices, objetos y expresiones regulares, así como los números y booleanos.</p>
<p><strong>Una cadena Objeto</strong></p>
<p>Un objeto de cadena se llama String,  y como todos los otros objetos JavaScript tiene un conjunto de propiedades que vienen predefinidos en el tipo de objeto.</p>
<p>Un objeto String puede crear una instancia mediante el operador <em>new </em>de JavaScript, para crear una nueva instancia de objeto:</p>
<pre class="brush: jscript; title: ;">
var ciudad= new String(&quot;Salamanca&quot;);
</pre>
<p>Una vez que una instancia, cualquiera de las propiedades de la cadena disponibles se puede acceder a ella. Por ejemplo podemos usar el método <em>toLowerCase  </em> para pasar todo a minúsculas</p>
<pre class="brush: jscript; title: ;">
var ciudad_min= ciudad.toLowerCase(); //  quedaría como salamanca
</pre>
<p><strong>Concatenando cadenas</strong></p>
<p>Se pueden concatenar cadenas de varias formas en JavaScript.<br />
Lo normal es usar el operador (+).</p>
<pre class="brush: jscript; title: ;">
var string1 = &quot;Hola &quot;;
var string2 = &quot;mundo&quot;;

var string3 = string1 + string2; // creará una cadena nueva con &quot;Hola mundo&quot;
</pre>
<p>Se puede concatenar las cadenas de texto que sean necesarias con el operador (+).</p>
<p>También se puede usar la asignación (+=) para concatenar varias cadenas.</p>
<pre class="brush: jscript; title: ;">
var oldValue = &quot;creando &quot;;
oldValue += &quot; un tutorial&quot;; // concatendo las cadenas nos resultaría &quot;creando un tutorial&quot;
</pre>
<p>Hay un método incorporado en <em>String</em> que permite concatenar multiples cadenas. Se necesita uno o más parámetros, cada uno de los cuales se anexan al final del objeto de cadena. Este método es <em>concat</em>.</p>
<pre class="brush: jscript; title: ;">
var nwStrng = &quot;&quot;.concat(&quot;Esto&quot;,&quot;es &quot;,&quot;una &quot;,&quot;cadena&quot;); // que devolverá &quot;Esto es una cadena&quot;
</pre>
<p>El método concat puede ser una manera más sencilla de generar una cadena de varios valores, como la generación de una cadena de varios campos del formulario. Sin embargo, el uso del operador de suma es el método más comúnmente utilizado.</p>
<p><strong>Que ocurre cuando quieres concatenar con otro tipo de dato?</strong></p>
<p>Usar exactamente los mismos operadores, tales como la suma (+) y la asignación  (+=), para concatenar.</p>
<p>Por ejemplo con números:</p>
<pre class="brush: jscript; title: ;">
var numValue = 23.45;
var total = &quot;El total es:  &quot; + numValue; // la cadena será &quot;El total es: 23.45&quot;
</pre>
<p>Con el tipo de dato Boolean o booleano</p>
<pre class="brush: jscript; title: ;">
var boolValue = true;
var strngValue = &quot;El valor es: &quot; + boolValue; // resultará &quot;El valor es: true&quot;
</pre>
<p>O con tipo de datos number o con números</p>
<pre class="brush: jscript; title: ;">
var numValue = 3.0;
strngValue = &quot;El valor es: &quot; + numValue; // resultará  &quot;El valor es: 3&quot;
</pre>
<p>La conversión automática de datos también se aplica en la concatenación de un objeto String con una cadena literal, que es una capacidad necesaria cuando no sabes que las cadenas con las que estas trabajando son objetos o literales, pero igualmente se quiere concatenar.</p>
<pre class="brush: jscript; title: ;">
var strObject = new String(&quot;El valor es: &quot;);
var strngLiteral = &quot;una cadena&quot;;
var strngValue = strObject + strngLiteral; // resultará  &quot;El valor es: una cadena&quot;
</pre>
<p><strong>Comparando cadenas</strong></p>
<p>Para comparar cadenas se utiliza el operador (==)</p>
<pre class="brush: jscript; title: ;">
var strName = prompt(&quot;Introduce tu nombre&quot;, &quot;&quot;);

if (strName == &quot;Pedro&quot;) {
   alert(&quot;ooh yeah!!&quot;);
} else {
   alert(&quot;no eres el peter!&quot;);
}
</pre>
<p>Ahora digamos que queremos comparar la cadena y el tipo de dato. Para ellos usaremos el comparador estricto de igualdad (===) que comprueba que el dato sea el mismo, así como el tipo de dato.</p>
<pre class="brush: jscript; title: ;">
var  strObject = new  String(&quot;Pedro&quot;);
var  strLiteral  =  &quot;Pedro&quot;;

if (strObject  ==  strLiteral) // esto devolverá true

if (strObject === strLiteral) // esto fallará porque los tipos de dato son distintos
</pre>
<p>También se pueden comparar cadenas para saber el orden alfabético de una palabra. Esto se hace muy fácilmente con el comparador (<) o (>), es decir, el mayor que o menor que.</p>
<pre class="brush: jscript; title: ;">
var sOne = &quot;gato&quot;;
var sTwo = &quot;perro&quot;
if (sOne &gt; sTwo) //devolverá true porque la &quot;g&quot; está antes que la &quot;p&quot;
</pre>
<p>También se puede usar con mayúsculas y minúsculas.</p>
<pre class="brush: jscript; title: ;">
var sOne  = &quot;Gato&quot;;
var sTwo  = &quot;gato&quot;;
if (sOne &gt;=  sTwo) // true, porque 'G'  tiene mas importancial léxicamente que &quot;g&quot;.
</pre>
<p>Otra forma para comparar cadenas es usar el método <em>localeCompare</em> de String.</p>
<pre class="brush: jscript; title: ;">
var fruit1 = &quot;manzana&quot;;
var fruit2 = &quot;pero&quot;;
var i = fruit1.localeCompare(fruit2); // devolverá -1
</pre>
<p><strong>Pasar cadena a mayúsculas. O bien pasar cadena a minúsculas</strong></p>
<p>Hay varios métodos incorporadoras en String para convertir textos a mayúsculas o minúsculas que son <em>toUpperCase</em> y <em>toLowerCase </em> respectivamente.</p>
<p>Pasar cadena de texto a mayúsculas en Javascript.</p>
<pre class="brush: jscript; title: ;">
var strName = prompt(&quot;Cual es tu nombre&quot;, &quot;&quot;);

var NombreMayuscula = strName.toUpperCase ();
</pre>
<p>Pasar cadena de texto a minúscula en Javascript.</p>
<pre class="brush: jscript; title: ;">
var strName = prompt(&quot;Cual es tu nombre&quot;, &quot;&quot;);

var NombreMayuscula = strName.toLowerCase ();
</pre>
<p>Fuente : <a href="http://oreilly.com/catalog/9780596806149/" rel="nofollow" target="_blank">Javascript Cookbook</a></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> parte de cadena jscript, cadenas en javascript, javascript comparar cadenas, javascript comparar texto, javascript enviar parametros string, javascripts cadenas inicio, limpiar cadena con javascript, limpiar cadena javascript, limpiar string en javascript, msgbox javascript concatenar variable</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/php/funcion-en-php-para-limpiar-cadenas-de-texto-en-utf8/' rel='bookmark' title='funcion en php para limpiar cadenas de texto en utf8'>funcion en php para limpiar cadenas de texto en utf8</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/obtener-el-nombre-del-dominio-con-javascript/' rel='bookmark' title='obtener el nombre del dominio con javascript'>obtener el nombre del dominio con javascript</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/revelar-las-contrasenas-con-javascript/' rel='bookmark' title='Revelar las contraseñas con Javascript'>Revelar las contraseñas con Javascript</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/funciones-javascript-%e2%80%93-setinterval-clearinterval-settimeout-2/' rel='bookmark' title='funciones Javascript – setInterval() clearInterval() setTimeout() – 2'>funciones Javascript – setInterval() clearInterval() setTimeout() – 2</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/funciones-javascript-setinterval-clearinterval-settimeout/' rel='bookmark' title='funciones Javascript – setInterval()  clearInterval() setTimeout()'>funciones Javascript – setInterval()  clearInterval() setTimeout()</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/javascript/cadenas-en-javascript-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estructura del sistema de archivos de Linux</title>
		<link>http://www.pedroventura.com/blog_programacion/linux/estructura-del-sistema-de-archivos-de-linux/</link>
		<comments>http://www.pedroventura.com/blog_programacion/linux/estructura-del-sistema-de-archivos-de-linux/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 06:10:43 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2881</guid>
		<description><![CDATA[El sistema de archivo de Linux sigue todas las convenciones de Unix, lo cual significa que tiene una estructura determinada, compatible y homogénea con el resto de los sistemas Unix. Al contrario que en Windows o MS-DOS el sistema de archivos en cualquier sistema Unix no está ligado de una forma directa con la estructura del hardware, esto es, no depende de si un determinado ordenador tiene 1, 2 o 7 discos duros para crear las unidades c:\, d:\ o m:\. Todos el sistema de archivos de Unix tiene un origen único la raíz o root representada por /. Bajo este directorio se encuentran todos los ficheros a los que puede acceder el sistema operativo. Estos ficheros se organizan en distintos directorios cuya misión y nombre son estándar para todos los sistema Unix. / Raíz del sistema de archivos. /dev Contiene ficheros del sistema representando los dispositivos que estén físicamente instalados en el ordenador. /etc Este directorio esta reservado para los ficheros de configuración del sistema. En este directorio no debe aparecer ningún fichero binario (programas). Bajo este deben aparecer otros dos subdirectorios: /etc/X11 Ficheros de configuración de X Window /etc/skel Ficheros de configuración básica que son copiados al directorio [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/contar-todos-los-archivos-existente-en-un-directorio-en-linux/' rel='bookmark' title='contar todos los archivos existente en un directorio en linux'>contar todos los archivos existente en un directorio en linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/nomenclatura-para-discos-duros-y-particiones-de-linux/' rel='bookmark' title='Nomenclatura para discos duros y particiones de linux'>Nomenclatura para discos duros y particiones de linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/usando-awk-y-grep-para-mostrar-informacion-del-sistema-como-memoria-libre-y-espacio-en-disco/' rel='bookmark' title='Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.'>Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/copiar-archivos-entre-servidores-con-scp-linux/' rel='bookmark' title='Copiar archivos entre servidores con SCP Linux'>Copiar archivos entre servidores con SCP Linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/deshabilitar-sonido-del-altavoz-desde-consola-en-linux/' rel='bookmark' title='Deshabilitar sonido del altavoz desde consola en linux'>Deshabilitar sonido del altavoz desde consola en linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>El sistema de archivo de Linux sigue todas las convenciones de Unix, lo cual significa que tiene una estructura determinada, compatible y homogénea con el resto de los sistemas Unix. Al contrario que en Windows o MS-DOS el sistema de archivos en cualquier sistema Unix no está ligado de una forma directa con la estructura del hardware, esto es, no depende de si un determinado ordenador tiene 1, 2 o 7 discos duros para crear las unidades c:\, d:\ o m:\.<br />
Todos el sistema de archivos de Unix tiene un origen único la raíz o root representada por /. Bajo<br />
este directorio se encuentran todos los ficheros a los que puede acceder el sistema operativo.</p>
<p>Estos ficheros se organizan en distintos directorios cuya misión y nombre son estándar para todos los<br />
sistema Unix.</p>
<ul>
<li><strong>/</strong> Raíz del sistema de archivos.</li>
<li><strong>/dev</strong> Contiene ficheros del sistema representando los dispositivos que estén físicamente<br />
instalados en el ordenador.</li>
<li><strong>/etc</strong> Este directorio esta reservado para los ficheros de configuración del sistema. En este<br />
directorio no debe aparecer ningún fichero binario (programas). Bajo este deben aparecer<br />
otros dos subdirectorios:</li>
<li>
<ul>
<li><strong>/etc/X11</strong> Ficheros de configuración de X Window</li>
<li><strong>/etc/skel</strong> Ficheros de configuración básica que son copiados al directorio del usuario cuando se crea uno nuevo.</li>
</ul>
</li>
<li><strong>/lib</strong> Contiene las librerías necesarias para que se ejecuten los programas que residen en /bin (no las librerías de los programas de los usuarios).</li>
<li><strong>/proc</strong> Contiene ficheros especiales que o bien reciben o envían información al kernel del sistema (Se recomienda no modificar el contenido de este directorio y sus ficheros).</li>
<li><strong>/sbin</strong> Contiene programas que son únicamente accesibles al superusuario o root.</li>
<li><strong>/usr</strong> Este es uno de los directorios más importantes del sistema puesto que contiene los programas de uso común para todos los usuarios. Su estructura suele ser similar a la siguiente:
<ul>
<li><strong>/usr/X11</strong>R6 Contiene los programas para ejecutar X Window.</li>
<li><strong>/usr/bin</strong> Programas de uso general, lo que incluye el compilador de C/C++.</li>
<li><strong>/usr/doc</strong> Documentación general del sistema.</li>
<li><strong>/usr/etc</strong> Ficheros de configuración generales.</li>
<li><strong>/usr/include</strong> Ficheros de cabecera de C/C++ (.h).</li>
<li><strong>/usr/info</strong> Ficheros de información de GNU.</li>
<li><strong>/usr/lib</strong> Librerías generales de los programas.</li>
<li><strong>/usr/man</strong> Manuales accesibles con el comando man (ver más adelante).</li>
<li><strong>/usr/sbin</strong> Programas de administración del sistema.</li>
<li><strong>/usr/src</strong> Código fuente de programas.</li>
</ul>
<p>Existen además de los anteriores otros directorios que se suelen localizar en el directorio <strong>/usr</strong>, como por ejemplo las carpetas de los programas que se instalen en el sistema.</li>
<li><strong>/var</strong> Este directorio contiene información temporal de los programas (lo cual no implica que se<br />
pueda borrar su contenido, de hecho, ¡no se debe hacer!)</li>
</ul>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> estructura de linux, estructura linux, estructura del sistema de archivos de linux, comentarios en ficheros linux, sistema de archivos linux, la estructura del sistema de archivos en linux, estructura sel sistema de archovs de linux, estructura fichero rhosts unix, estructura del sistema de archivo de unix, estructura de los sistemas de archivos linux</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/contar-todos-los-archivos-existente-en-un-directorio-en-linux/' rel='bookmark' title='contar todos los archivos existente en un directorio en linux'>contar todos los archivos existente en un directorio en linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/nomenclatura-para-discos-duros-y-particiones-de-linux/' rel='bookmark' title='Nomenclatura para discos duros y particiones de linux'>Nomenclatura para discos duros y particiones de linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/usando-awk-y-grep-para-mostrar-informacion-del-sistema-como-memoria-libre-y-espacio-en-disco/' rel='bookmark' title='Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.'>Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/copiar-archivos-entre-servidores-con-scp-linux/' rel='bookmark' title='Copiar archivos entre servidores con SCP Linux'>Copiar archivos entre servidores con SCP Linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/deshabilitar-sonido-del-altavoz-desde-consola-en-linux/' rel='bookmark' title='Deshabilitar sonido del altavoz desde consola en linux'>Deshabilitar sonido del altavoz desde consola en linux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/linux/estructura-del-sistema-de-archivos-de-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como configurar la red de Ubuntu / Debian desde la consola</title>
		<link>http://www.pedroventura.com/blog_programacion/linux/como-configurar-la-red-de-ubuntu-debian-desde-la-consola/</link>
		<comments>http://www.pedroventura.com/blog_programacion/linux/como-configurar-la-red-de-ubuntu-debian-desde-la-consola/#comments</comments>
		<pubDate>Sat, 07 May 2011 14:24:11 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2751</guid>
		<description><![CDATA[En este tutorial veremos como configurar la red de un sistema Ubuntu / Debian desde la consola de comandos o shell. A veces es más rápido y útil configurar la red de nuestro ordenador (o computadora) desde el shell, especialmente cuando estas en un ambiente de servidor y no tienes opción. Lo primero es ver tus interfaces de red para esto utilizamos el siguiente comando: ifconfig Este comando solo muestra las interfaces que están funcionando o “arriba”, si queremos que nos muestre todas las interfaces sin importar si están arriba o no utilizamos la opción -a: ifconfig -a Nos debería mostrar algo como esto: eth0 Link encap:Ethernet HWaddr 00:11:25:29:3D:F6 inet addr:10.26.3.144 Bcast:10.26.3.255 Mask:255.255.255.0 inet6 addr: xxxx::xxx:xxxx:xxxx:xxxx/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:16328475 errors:0 dropped:0 overruns:0 frame:0 TX packets:11020911 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2262220726 (2.1 GiB) TX bytes:1803853996 (1.6 GiB) Interrupt:18 eth1 Link encap:Ethernet HWaddr 00:11:25:29:3D:F7 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:19 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2634 errors:0 dropped:0 overruns:0 frame:0 [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/como-comprimir-una-carpeta-entera-en-linux-desde-consola/' rel='bookmark' title='Como comprimir una carpeta entera en linux desde consola'>Como comprimir una carpeta entera en linux desde consola</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-usar-los-dns-publicos-de-google-para-navegar-mejor/' rel='bookmark' title='Como usar los DNS publicos de Google para navegar mejor.'>Como usar los DNS publicos de Google para navegar mejor.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/deshabilitar-sonido-del-altavoz-desde-consola-en-linux/' rel='bookmark' title='Deshabilitar sonido del altavoz desde consola en linux'>Deshabilitar sonido del altavoz desde consola en linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/descargar-un-sitio-web-completo-desde-consola-con-linux/' rel='bookmark' title='Descargar un sitio web completo desde consola con linux'>Descargar un sitio web completo desde consola con linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>
En este tutorial veremos como configurar la red de un sistema Ubuntu / Debian desde la consola de comandos o shell. A veces es más rápido y útil configurar la red de nuestro ordenador (o computadora) desde el shell, especialmente cuando estas en un ambiente de servidor y no tienes opción.</p>
<p>Lo primero es ver tus interfaces de red para esto utilizamos el siguiente comando:</p>
<pre class="brush: plain; title: ;">
ifconfig
</pre>
<p>Este comando solo muestra las interfaces que están funcionando o “arriba”, si queremos que nos muestre todas las interfaces sin importar si están arriba o no utilizamos la opción -a:</p>
<pre class="brush: plain; title: ;">
ifconfig -a
</pre>
<p>Nos debería mostrar algo como esto:</p>
<blockquote><p>eth0      Link encap:Ethernet  HWaddr 00:11:25:29:3D:F6<br />
inet addr:10.26.3.144  Bcast:10.26.3.255  Mask:255.255.255.0<br />
inet6 addr: xxxx::xxx:xxxx:xxxx:xxxx/64 Scope:Link<br />
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
RX packets:16328475 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:11020911 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000<br />
RX bytes:2262220726 (2.1 GiB)  TX bytes:1803853996 (1.6 GiB)<br />
Interrupt:18</p>
<p>eth1      Link encap:Ethernet  HWaddr 00:11:25:29:3D:F7<br />
BROADCAST MULTICAST  MTU:1500  Metric:1<br />
RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000<br />
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)<br />
Interrupt:19</p>
<p>lo        Link encap:Local Loopback<br />
inet addr:127.0.0.1  Mask:255.0.0.0<br />
inet6 addr: ::1/128 Scope:Host<br />
UP LOOPBACK RUNNING  MTU:16436  Metric:1<br />
RX packets:2634 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:2634 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:0<br />
RX bytes:3270519 (3.1 MiB)  TX bytes:3270519 (3.1 MiB)</p></blockquote>
<p>En este caso tenemos dos interfaces de red eth0 y eth1 y sólo eth0 esta arriba (up), fíjense que eth1 no está configurada y no tiene ninguna dirección IP asignada. Por último tenemos la interfaz lo, que es la interfaz de loopback es decir nuestra propia máquina y que podemos acceder a través de la dirección 127.0.0.1 (o cualquier rango de 127.0.0.X), y sirve para comprobar que por lo menos nos responde nuestro propio ordenador o computadora.</p>
<p>Bien ya una vez que tenemos identificadas nuestras tarjetas de red podemos realizar varias operaciones.</p>
<h2>Configurar la interfaz de red para que funcione con DHCP</h2>
<p>Casí todos los sistemas vienen ahora por defecto para que tomen su dirección IP por DHCP (es decir que se asigne dinámicamente a través de un servidor DHCP que puede ser un router, switch o algún servidor dedicado a esto). Para configurar cualquier interfaz para DHCP debemos modificar el archivo /etc/network/interfaces ejecutando el siguiente comando</p>
<pre class="brush: plain; title: ;">
sudo vi /etc/network/interfaces
</pre>
<p>Nota: en caso de Debian debemos estar como root para ejecutar este comando</p>
<p>Tambien puedes utilizar cualquier otro editor como emacs, nano, gedit a tu preferencia.</p>
<p>En el archivo debemos colocar las siguientes líneas (en este ejemplo utilizamos eth0 puede ser cualquiera de las interfaces y tantas como quieras)</p>
<p># Utilizar DHCP para la interfaz eth0</p>
<pre class="brush: plain; title: ;">
auto eth0
iface eth0 inet dhcp
</pre>
<p>Guardamos el archivo y ejecutamos:</p>
<pre class="brush: plain; title: ;">
sudo /etc/init.d/networking restart
</pre>
<p>Para reinicializar los servicios de red .</p>
<h2>Configurar una dirección estática en la interfaz de red</h2>
<p>Para configurar una dirección IP estática también debemos modificar el archivo de /etc/network/interfaces</p>
<pre class="brush: plain; title: ;">
sudo vi /etc/network/interfaces
</pre>
<p>Si tienes algo como iface eth0 inet dhcp debemos comentar estás líneas o borrarlas sino tendremos problemas.</p>
<p>Ahora agregamos al archivo si queremos configurar por ejemplo eth0 (cambialo por la interfaz que quieras configurar):</p>
<p># Configurar IP estatica en eth0<br />
auto eth0<br />
iface eth0 inet static<br />
address 192.168.1.110<br />
gateway 192.168.1.1<br />
netmask 255.255.255.0<br />
network 192.168.1.0<br />
broadcast 192.168.1.255</p>
<p>Con esto le hemos configurado la IP 192.168.1.110 con una máscara 255.255.255.0 y una puerta de salida (gateway) 192.168.1.1. Por supuesto cambia estas direcciones por las que quieras configurar.</p>
<p>Una vez más guardamos el archivo y ejecutamos:</p>
<pre class="brush: plain; title: ;">
sudo /etc/init.d/networking restart
</pre>
<p>Para reinicializar los servicios de red .</p>
<p>Colocando una segunda dirección IP o una dirección IP virtual en una interfaz de red</p>
<p>Muchas veces cuando trabajamos con servidores y a veces en nuestras propias máquinas queremos configurar más de una dirección IP a una misma interfaz de red. Para esto debemos modificar el archivo /etc/network/interfaces ejecutando:</p>
<pre class="brush: plain; title: ;">
sudo vi /etc/network/interfaces
</pre>
<p>Y colocamos lo siguiente:</p>
<pre class="brush: plain; title: ;">
sudo vi /etc/network/interfaces
</pre>
<p># Asignando una direccion virutal a eth0</p>
<p>auto eth0:1<br />
iface eth0:1 inet static<br />
address 192.168.1.60<br />
netmask 255.255.255.0<br />
network x.x.x.x<br />
broadcast x.x.x.x<br />
gateway x.x.x.x</p>
<p>Tienes que agregarles todos los detalles necesarios de tu red, dirección de broadcast, gateway, etc.Una vez que hayas hecho esto guarda el archivo y ejecutamos:</p>
<pre class="brush: plain; title: ;">
sudo /etc/init.d/networking restart
</pre>
<p>Para reinicializar los servicios de red .</p>
<h2>Configurando DNS</h2>
<p>Para hacer que tu computadora u ordenador busque en un servidor DNS específico tienes que modificar el archivo /etc/resolv.conf ejecuntado</p>
<pre class="brush: plain; title: ;">
sudo vi /etc/resolv.conf
</pre>
<p>Nota: Recuerda que si estas en Debian no utilizas el sudo y tienes que estar como root</p>
<p>Ahí puedes agregar los servidores que quieras por ejemplo con:</p>
<p>nameserver 10.50.50.130<br />
nameserver 10.50.50.131</p>
<p>Utilizando las direcciones IP de los servidores DNS que quieras.</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> configurar tarjeta de red ubuntu 11 10, comandos configurar dns ubuntu 10, 11 10 configuar intenet comandos, configurar targeta red en ubuntu 11 10, crear red virtual con ubuntu 11 10, eth0 configure dhcp ubuntu 11 10, iniciar ubuntu 11 10 en modo consola, ip estatica ubuntu 11 10, ip fija ubuntu 11 10, linux configurar arranque con red internet</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/como-comprimir-una-carpeta-entera-en-linux-desde-consola/' rel='bookmark' title='Como comprimir una carpeta entera en linux desde consola'>Como comprimir una carpeta entera en linux desde consola</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-usar-los-dns-publicos-de-google-para-navegar-mejor/' rel='bookmark' title='Como usar los DNS publicos de Google para navegar mejor.'>Como usar los DNS publicos de Google para navegar mejor.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/deshabilitar-sonido-del-altavoz-desde-consola-en-linux/' rel='bookmark' title='Deshabilitar sonido del altavoz desde consola en linux'>Deshabilitar sonido del altavoz desde consola en linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/descargar-un-sitio-web-completo-desde-consola-con-linux/' rel='bookmark' title='Descargar un sitio web completo desde consola con linux'>Descargar un sitio web completo desde consola con linux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/linux/como-configurar-la-red-de-ubuntu-debian-desde-la-consola/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Crear un esquema EER desde el gestor de base de datos MySQL Workbench</title>
		<link>http://www.pedroventura.com/blog_programacion/gestion-de-proyecto/crear-un-esquema-eer-desde-el-gestor-de-base-de-datos-mysql-workbench/</link>
		<comments>http://www.pedroventura.com/blog_programacion/gestion-de-proyecto/crear-un-esquema-eer-desde-el-gestor-de-base-de-datos-mysql-workbench/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 11:26:55 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Gestión de Proyecto]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2566</guid>
		<description><![CDATA[Usando MySQL Workbench. MySQL Workbench es una herramienta para desarrollar y administrar bases de datos. Tiene 3 grandes areas de funcionalidad: SQL Development: Reemplaza a MySQL query browser. Desde aquí termine al usuario conectar a una base de datos existente, permite realizar queries, y una administración básica de la base de datos. Data Modeling: Es un completo gestor visual para diseñar y definir la arquitectura de la base de datos. Database Administration:Reemplaza a MySQL Administrator, es un interface gráfico para administración de la base de datos y del servidor en general, se puede editar archivos de configuración de Mysql, se puede crear nuevos usuarios, y si estamos trabajando con una base de datos local, se puede reiniciar el servicio de mysql. Planificando la base de datos Como siempre lo mejor es hacer un boceto rápido en papel. Como veis en la siguiente imagen no podría entregar a un equipo de desarrolladores la arquitectura de la base de datos con el siguiente gráfico, aunque en el mundo real a veces las especificaciones que te dan se parecen a estas, un infierno. El esquema que se puede elaborar desde Mysql WorkBench es un esquema EER. EER es un modelo de alto nivel [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/una-aplicacion-multiples-bases-datos-cakephp/' rel='bookmark' title='Una aplicación, multiples bases de datos CakePHP'>Una aplicación, multiples bases de datos CakePHP</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/esquema-de-una-peticion-en-cakephp-y-funcionamiento-general-del-framework/' rel='bookmark' title='Esquema de una peticion en CakePHP y funcionamiento general del Framework'>Esquema de una peticion en CakePHP y funcionamiento general del Framework</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/sql/optimizando-consultas-mysql-creando-y-definiendo-indices-manage-index/' rel='bookmark' title='Optimizando consultas mysql. Creando y definiendo indices. Manage index'>Optimizando consultas mysql. Creando y definiendo indices. Manage index</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/gestor-de-arranque-lilo/' rel='bookmark' title='Gestor de Arranque LILO'>Gestor de Arranque LILO</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/sql/que-diferencias-basicas-hay-entre-innodb-y-myisam/' rel='bookmark' title='Que diferencias (básicas) hay entre InnoDB y MyISAM'>Que diferencias (básicas) hay entre InnoDB y MyISAM</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><strong>Usando MySQL Workbench.</strong></p>
<p>MySQL Workbench es una herramienta para desarrollar y administrar bases de datos. Tiene 3 grandes areas de funcionalidad:<br />
<img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/workbenchStart-150x150.png" alt="" title="workbenchStart" width="150" height="150" class="alignleft size-thumbnail wp-image-2570" /></p>
<ol>
<li>
    <strong>SQL Development</strong>: Reemplaza a MySQL query browser. Desde aquí termine al usuario conectar a una base de datos existente, permite realizar queries, y una administración básica de la base de datos.</li>
<li> <strong>Data Modeling</strong>: Es un completo gestor visual para diseñar y definir la arquitectura de la base de datos.</li>
<li> <strong>Database Administration</strong>:Reemplaza a MySQL Administrator, es un interface gráfico para administración de la base de datos y del servidor en general, se puede editar archivos de configuración de Mysql, se puede crear nuevos usuarios, y si estamos trabajando con una base de datos local, se puede reiniciar el servicio de mysql.</li>
</ol>
<p></p>
<p><strong>Planificando la base de datos</strong><br />
Como siempre lo mejor es hacer un boceto rápido en papel.<br />
Como veis en la siguiente imagen no podría entregar a un equipo de desarrolladores la arquitectura de la base de datos con el siguiente gráfico, aunque en el mundo real a veces las especificaciones que te dan se parecen a estas, un infierno.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/IMG_20110401_131849B.jpg" alt="" title="IMG_20110401_131849B" width="500" height="667" class="aligncenter size-full wp-image-2575" /></p>
<p>El esquema que se puede elaborar desde Mysql WorkBench es un esquema EER.<br />
EER es un modelo de alto nivel o modelo conceptual de datos que mejora la entidad-relación (ER), que se utiliza en el diseño de bases de datos. Se utiliza para reflejar con toda la precisión que se pueda las características y limitaciones que se encuentran en una base de datos. EER viene del ingles enhanced entity-relationship o modelo entidad-relación mejorado.</p>
<p>El modelo EER incluye todos los conceptos introducidos por el modelo ER. Además, incluye los conceptos de una subclase y superclase, junto con los conceptos de especialización y generalización. Además, se introduce el concepto de un tipo de unión o de una categoría, que se utiliza para representar una colección de objetos que es la unión de objetos de diferentes tipos de entidades.</p>
<p><b>Relaciones entre tablas</b></p>
<p>Si queremos crear tablas físicas en MySQL las relaciones tienen que estar mapeadas de alguna manera.<br />
Para mapear estas relaciones entre tablas existen diferentes reglas:</p>
<ul>
<li><strong>1:1</strong>. El primary key para una de las tablas es incluido como foreing key en otra tabla.</li>
<li><strong>1:n</strong>. uno-a-muchos. Consiste en establecer una relación entre un atributo identificativo, ya sea un primary key u otro campo que permita diferenciarlo de otra instancia de una tabla A, con n campos de la tabla B. Por ejemplo:<br />
Una factura (entidad) se emite (relación) a una persona (entidad) y sólo una, pero una persona puede tener varias facturas emitidas a su nombre. Todas las facturas se emiten a nombre de alguien. </li>
<li><strong>n:m</strong>. Es cuando se crea una tabla mediante un join. La clave primaria es compuesta por los primary keys de las dos tablas originales. Por ejemplo: Un cliente (entidad) puede comprar (relación) varios artículos (entidad) y un artículo puede ser comprado por varios clientes distintos.</li>
</ul>
<p><strong>Crear El schema y las tablas</strong></p>
<p>Desde el menú principal de Mysql Workbench seleccionamos la opción de Create New EER Model.</p>
<p>Creamos o importamos nuestra base de datos con las tablas. O las vamos creando desde 0, a partir de nuestro boceto inicial.<br />
La creación de la arquitectura de la base de datos y las tablas no es algo que salga a la primera, requiere ir profundizando en la aplicación, estimar que necesitarás a largo plazo y contemplarlo en el modelo de datos a pesar de que no se programe inicialmente.</p>
<p>El menu principal que veremos será algo parecido a esto.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/eer1a.jpg" width="506" height="620" class="aligncenter size-full wp-image-2616" /></p>
<p>Una vez tengamos nuestras tablas creadas, o al menos la primera version o fase de las tablas, pinchamos en el botón de EER Diagram para crear nuestro modelo EER.O bien podemos seleccionar Model >Create Diagram from catalog object.</p>
<p>Esto nos cargará todas las tablas que hemos creado en el canvas de la aplicación y podremos empezar a establecer las relaciones entre las tablas.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/eer2.png" alt="" title="eer2" width="498" height="349" class="aligncenter size-full wp-image-2619" /></p>
<p>Como he explicado anteriormente usaremos los tipos de relaciones para ir creando el modelo de relación entre nuestra tablas. Para ello usaremos las opciones de MySQL Workbench para establecer las relaciones.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/relaciones_eer.png" alt="" title="relaciones_eer" width="353" height="179" class="aligncenter size-full wp-image-2621" /></p>
<p>A medida que se vayan creando las relaciones irá quedando el modelo definido, como aparece en la siguiente imagen.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/eer3.png" alt="" title="eer3" width="457" height="318" class="aligncenter size-full wp-image-2623" /><br />
(Nota: este modelo es una ejemplo que estoy utilizando, no es real)</p>
<p>Se puede cambiar el tipo de notación que representan las relaciones. A mi personalmente me gusta mas el tipo de notación UML que el que esta usando Workbench.<br />
Para cambiarlo, dentro de la Diagrama EER > Model > Relationship Notation y se pueden elegir entre 5 opciones.</p>
<p>Esto llevará varias horas, o como a mi varios días. Si se esta haciendo un modelo de datos profesional para un entorno en producción puede llevar bastante tiempo en el desarrollo de la arquitectura de la base de datos. Incluso a pesar de todo el tiempo invertido siempre pueden surgir limitaciones y deficiencias.<br />
Es muy importante intentar desarrollar el modelo pensando en todas la funcionalidades que tendrá la aplicacion a corto y que pueda tener a largo plazo. Para por lo menos tener un buen modelo de datos en el momento de salida y poder escalar bien la base de datos.</p>
<p>El diagrama se puede exportar a PNG, SVG, PDF o un archivo PostScript.</p>
<p>Uno de mis proyectos actuales presenta el siguiente aspecto:</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/IMG_20110414_141406B.jpg" alt="" title="IMG_20110414_141406B" width="500" height="375" class="aligncenter size-full wp-image-2576" /></p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/IMG_20110414_141534B.jpg" alt="" title="IMG_20110414_141534B" width="500" height="667" class="aligncenter size-full wp-image-2574" /></p>
<p>Conclusión: MySQL Workbench es una herramienta excepcional y sin duda algo que se debería usar en todo momento a la hora de gestionar una base de datos, como mínimo la parte de Data Modeling y Database Administration. En este tutorial no me acerco ni de lejos a todo el potencial del programa pero al menos he comentado a modo de introducción una de las partes que es el diagrama EER.</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> modelado de base de datos en mysql, administrador de bd mysql relaciones, ejemplo de relaciones en sql: compras por internet, esquema bd mysql, generar esquema de base de datos mysql, instalador aplicación o software para administración y consulta de tablas de mysql 2011, manual de workbench en español, modelos para hacer una tabla, mysql eer, mysql varias bases de datos</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/una-aplicacion-multiples-bases-datos-cakephp/' rel='bookmark' title='Una aplicación, multiples bases de datos CakePHP'>Una aplicación, multiples bases de datos CakePHP</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/esquema-de-una-peticion-en-cakephp-y-funcionamiento-general-del-framework/' rel='bookmark' title='Esquema de una peticion en CakePHP y funcionamiento general del Framework'>Esquema de una peticion en CakePHP y funcionamiento general del Framework</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/sql/optimizando-consultas-mysql-creando-y-definiendo-indices-manage-index/' rel='bookmark' title='Optimizando consultas mysql. Creando y definiendo indices. Manage index'>Optimizando consultas mysql. Creando y definiendo indices. Manage index</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/gestor-de-arranque-lilo/' rel='bookmark' title='Gestor de Arranque LILO'>Gestor de Arranque LILO</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/sql/que-diferencias-basicas-hay-entre-innodb-y-myisam/' rel='bookmark' title='Que diferencias (básicas) hay entre InnoDB y MyISAM'>Que diferencias (básicas) hay entre InnoDB y MyISAM</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/gestion-de-proyecto/crear-un-esquema-eer-desde-el-gestor-de-base-de-datos-mysql-workbench/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Eliminar el pie o footer de squid linux proxy</title>
		<link>http://www.pedroventura.com/blog_programacion/linux/eliminar-el-pie-o-footer-de-squid-linux-proxy/</link>
		<comments>http://www.pedroventura.com/blog_programacion/linux/eliminar-el-pie-o-footer-de-squid-linux-proxy/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 10:05:17 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2557</guid>
		<description><![CDATA[En antiguas versiones de squid había que realizar las siguientes modificaciones antes de compilar Editar cd /home/pedro/Descargas/squid-3.1.11/src/errorpage.c Eliminar la cadena de texto “Generated %T by %h (%s)\n” Para la ultima versión de squid la 3.1.11 parece que la situación cambia un poco #tar xvzf squid-3.1.11.tar.gz Descomprimimos #./configure --prefix=/opt/squid/ --mandir=/usr/share/man/man1/ #make #make install En la ultima versión los mensajes de error están separados por idiomas y en cada una de las carpetas aparece el texto del footer que se puede eliminar después de la compilación vi /opt/squid/share/errors/es/ERR_ACCESS_DENIED Eliminamos la cadena de texto: &#60;div id=&#8221;footer&#8221;&#62; &#60;p&#62;Generado %T por %h (%s)&#60;/p&#62; &#60;!&#8211; %c &#8211;&#62; &#60;/div&#62; Con esto ya no aparece el footer con el mensaje como se puede ver en el pantallazo. Web oficial de Squid: http://www.squid-cache.org/ Tags de búsquedas: borrar proxy de linux, como eliminar proxy en linux, como eliminar un proxy squid, como se eliminan mensajes de textos antiguos en htc magic, editar mensajes del squid version, squid error de codificacion, squid proxy 2012 nuevos trucos Related posts:Truco WordPress. Añadir widgets al pie o footer de tu tema de wordpress Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux Enviar un correo via telnet desde consola [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/wordpress/truco-wordpress-anadir-widgets-al-pie-o-footer-de-tu-tema-de-wordpress/' rel='bookmark' title='Truco WordPress. Añadir widgets al pie o footer de tu tema de wordpress'>Truco WordPress. Añadir widgets al pie o footer de tu tema de wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-vaciar-o-eliminar-el-contenido-de-un-archivo-existente-en-unix-linux/' rel='bookmark' title='Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux'>Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/descargar-un-sitio-web-completo-desde-consola-con-linux/' rel='bookmark' title='Descargar un sitio web completo desde consola con linux'>Descargar un sitio web completo desde consola con linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/deshabilitar-sonido-del-altavoz-desde-consola-en-linux/' rel='bookmark' title='Deshabilitar sonido del altavoz desde consola en linux'>Deshabilitar sonido del altavoz desde consola en linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En antiguas versiones de squid había que realizar las siguientes modificaciones antes de compilar<br />
Editar cd /home/pedro/Descargas/squid-3.1.11/src/errorpage.c<br />
Eliminar la cadena de texto “Generated %T by %h (%s)\n”</p>
<p>Para la ultima versión de squid la 3.1.11 parece que la situación cambia un poco</p>
<pre class="brush: plain; title: ;">
#tar xvzf squid-3.1.11.tar.gz Descomprimimos
#./configure --prefix=/opt/squid/ --mandir=/usr/share/man/man1/
#make
#make install
</pre>
<p>En  la ultima versión los mensajes de error están separados por idiomas y  en cada una de las carpetas aparece el texto del footer que se puede  eliminar después de la compilación</p>
<pre class="brush: plain; title: ;">
vi /opt/squid/share/errors/es/ERR_ACCESS_DENIED
</pre>
<p>Eliminamos la cadena de texto:</p>
<blockquote><p>
&lt;div id=&#8221;footer&#8221;&gt; &lt;p&gt;Generado %T por %h (%s)&lt;/p&gt; &lt;!&#8211; %c &#8211;&gt; &lt;/div&gt;</p></blockquote>
<p>Con esto ya no aparece el footer con el mensaje como se puede ver en el pantallazo.</p>
<p><a href="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/Pantallazo-10.png" target="_blank" rel="nofollow"><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/Pantallazo-10-300x171.png" alt="" title="Eliminar footer de squid linux proxy" width="300" height="171" class="aligncenter size-medium wp-image-2558" /></a></p>
<p>Web oficial de Squid: <a href="http://www.squid-cache.org/" rel="nofollow" target="_blank">http://www.squid-cache.org/</a></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> borrar proxy de linux, como eliminar proxy en linux, como eliminar un proxy squid, como se eliminan mensajes de textos antiguos en htc magic, editar mensajes del squid version, squid error de codificacion, squid proxy 2012 nuevos trucos</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/wordpress/truco-wordpress-anadir-widgets-al-pie-o-footer-de-tu-tema-de-wordpress/' rel='bookmark' title='Truco WordPress. Añadir widgets al pie o footer de tu tema de wordpress'>Truco WordPress. Añadir widgets al pie o footer de tu tema de wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-vaciar-o-eliminar-el-contenido-de-un-archivo-existente-en-unix-linux/' rel='bookmark' title='Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux'>Como vaciar o eliminar el contenido de un archivo existente en UNIX / Linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/descargar-un-sitio-web-completo-desde-consola-con-linux/' rel='bookmark' title='Descargar un sitio web completo desde consola con linux'>Descargar un sitio web completo desde consola con linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/deshabilitar-sonido-del-altavoz-desde-consola-en-linux/' rel='bookmark' title='Deshabilitar sonido del altavoz desde consola en linux'>Deshabilitar sonido del altavoz desde consola en linux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/linux/eliminar-el-pie-o-footer-de-squid-linux-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestor de Arranque LILO</title>
		<link>http://www.pedroventura.com/blog_programacion/linux/gestor-de-arranque-lilo/</link>
		<comments>http://www.pedroventura.com/blog_programacion/linux/gestor-de-arranque-lilo/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 09:34:43 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2548</guid>
		<description><![CDATA[LILO es el método de arranque más arcaico Cuando empieza el gestor de arranque LILO, va mostrando las letras de LILO. A veces daba un error y se quedaba en alguna de las letras, de este modo servira para indentificar el problema. La interpretación de los mensajes es la siguiente: * (nada) No se ha cargado nada de LILO. O LILO no está instalado o la partición en la que se encuentra el sector boot no está activa. * L error La primera parte de la carga se ha efectuado pero no se puede cargar la segunda parte. Los dos dígitos de error indican el tipo de problema. Normalmente suelen indicar un fallo de dispositivos o un error en la geometría. * LI La primera parte de la carga puede cargar la segunda pero falla al ejecutarla. Esto puede ser debido a un error en la geometría o por mover /boot/boot.b sin correr el &#8220;map installer&#8221;. * LIL Se ha arrancado la segunda parte del arranque, pero no se puede cargar la tabla de descriptores del mapa de ficheros. Suele estar causado por un fallo en algún dispositivo o por un error de geometría. * LIL? La segunda parte se [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/gestion-de-proyecto/crear-un-esquema-eer-desde-el-gestor-de-base-de-datos-mysql-workbench/' rel='bookmark' title='Crear un esquema EER desde el gestor de base de datos MySQL Workbench'>Crear un esquema EER desde el gestor de base de datos MySQL Workbench</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/comprobar-si-existe-un-fichero-con-php-y-unix/' rel='bookmark' title='comprobar si existe un fichero con php y linux'>comprobar si existe un fichero con php y linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/nomenclatura-para-discos-duros-y-particiones-de-linux/' rel='bookmark' title='Nomenclatura para discos duros y particiones de linux'>Nomenclatura para discos duros y particiones de linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/anadir-y-dar-formato-a-un-nuevo-disco-duro-en-linux/' rel='bookmark' title='Particionar, dar formato y montar un disco duro en linux. Pasos para añadir un nuevo disco duro.'>Particionar, dar formato y montar un disco duro en linux. Pasos para añadir un nuevo disco duro.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-comprimir-una-carpeta-entera-en-linux-desde-consola/' rel='bookmark' title='Como comprimir una carpeta entera en linux desde consola'>Como comprimir una carpeta entera en linux desde consola</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>LILO es el método de arranque más arcaico</p>
<p>Cuando empieza el gestor de arranque LILO, va mostrando las letras de LILO. A veces daba un error y se quedaba en alguna de las letras, de este modo servira para indentificar el problema. La interpretación de los mensajes es la siguiente:</p>
<ul>
<li> <strong> * (nada) </strong>
<p>No se ha cargado nada de LILO. O LILO no está instalado o la partición en la que se encuentra el sector boot no está activa.</li>
<li> <strong> * L error </strong>
<p>La primera parte de la carga se ha efectuado pero no se puede cargar la segunda parte. Los dos dígitos de error indican el tipo de problema. Normalmente suelen indicar un fallo de dispositivos o un error en la geometría.</li>
<li><strong> * LI </strong>La primera parte de la carga puede cargar la segunda pero falla al ejecutarla. Esto puede ser debido a un error en la geometría o por mover /boot/boot.b sin correr el &#8220;map installer&#8221;.</li>
<li><strong> * LIL </strong>Se ha arrancado la segunda parte del arranque, pero no se puede cargar la tabla de descriptores del mapa de ficheros. Suele estar causado por un fallo en algún dispositivo o por un error de geometría.</li>
<li><strong> * LIL? </strong>La segunda parte se ha arrancado en una dirección incorrecta. Normalmente causado por un error de geometría o por mover el fichero /boot/boot.b sin correr el &#8220;map installer&#8221;.</li>
<li><strong> * LIL- </strong>La tabla de descriptores está corrupta. Normalmente causado por un error de geometría o por mover el fichero /boot/boot.b sin correr el &#8220;map installer&#8221;.</li>
<li><strong> * LILO </strong>Todas las partes de LILO se han cargado satisfactoriamente.</li>
</ul>
<p>Las principales causas para un error de geometría no son los defectos físicos ni tablas de particiones invalidas. Normalmente suelen estar causadas por ignorar el límite de los 1024 cilindros.</p>
<h2>Configuración LiLo</h2>
<p>El archivo de configuración lilo.conf suele estar ubicado en /etc/lilo.conf</p>
<p>* La clausula &#8220;boot=&#8221; especifica donde se instalara LILO<br />
* La clausula &#8220;root=&#8221; indica cual sera la particion raiz del sistema (&#8220;root=/dev/hda2&#8243;)<br />
* Con &#8220;install=/boot/boot.b&#8221; indicamos que ese fichero contiene el sector de arranque que queremos instalar. Normalmente se trata de un enlace simbolico a cada una de las posibilidades que nos ofrece LILO:<br />
* Mediante &#8220;delay=20&#8243; indicamos cuanto tiempo esperara LILO hasta decantarse por la opcion por defecto especificada con &#8220;default=&#8221;. Este tiempo es en decimas de segundo, por lo que en nuestro caso esperaremos 2 segundos.<br />
* Cada una de las opciones para sistemas Linux se configurara mediante &#8220;image=&#8221;. Concretaremos donde reside el kernel para cada una de las imagenes.<br />
* Mediante &#8220;prompt&#8221; indicamos nuestro deseo a ser preguntados acerca de lo que hay que hacer, es decir, se nos deja elegir e incluso añadir opciones al arranque.<br />
* Cuando queramos acceder a otro SO diferente a Linux desde LILO, deberemos utilizar &#8220;other=&#8221;. En nuestro ejemplo indicamos que si queremos arrancar FreeBSD, LILO debera acceder a /dev/hda1. Si quisieramos que convivieran mas SOs diferentes en nuestro sistema, bastara con añadir mas clausulas &#8220;other=&#8221;.</p>
<h2>Ejemplo de configuración en LILO</h2>
<p>boot = /dev/hda   # particion root<br />
delay = 10</p>
<p>image = /boot/vmlinux<br />
root = /dev/hda1<br />
label = Linux<br />
read-only</p>
<p>other = /dev/hda4<br />
table = /dev/hda<br />
label = dos</p>
<h2>Manual Completo LILO</h2>
<h2>Opciones Globales</h2>
<p> Hay muchas opciones disponibles. La siguiente descripción está tomada casi literalmente de user.tex (sólo que un poco abreviada). </p>
<p><strong>backup=</strong><em>fichero-de-resguardo</em>Copia el sector de arranque original al fichero <em>fichero-de-resguardo</em> (el cual también puede ser un dispositivo, p.ej. <em>/dev/null</em>) en vez de a <em>/boot/boot.NNNN</em>.</p>
<p><strong>boot=</strong><em>dispositivo-de-arranque</em>Establece el nombre del dispositivo (p.ej. una partición del disco rígido) que contiene el sector de arranque. Si se omite esta opción, el sector de arranque se lee y escribe del dispositivo que esté montado como raíz.</p>
<p><strong>change-rules</strong>Define cambios a realizar en el arranque para los números de los tipos de las particiones (`oculto&#8217;). Para más detalles, vea la sección &#8220;Reglas para cambiar el tipo de las particiones&#8221; (Partition type change rules) en user.tex.</p>
<p><strong>compact</strong>Intenta agrupar operaciones de lectura en sectores adyacentes en una sola operación. Esto reduce drásticamente el tiempo de carga y hace que el mapa sea mas pequeño. Se recomienda usar `compact&#8217; cuando se arranca de un disco flexible.</p>
<p><strong>default=</strong><em>nombre</em>Utiliza la imagen especificada como la imagen de arranque por omisión. Si se omite `default&#8217;, se utilizará la primer imagen mencionada en el fichero de configuración.</p>
<p><strong>delay=</strong><em>décimas-seg</em>Especifica la cantidad de décimas de segundo que el cargador de arranque debe esperar antes de arrancar la primera imagen. Esta opción es útil en aquellos sistemas que arrancan inmediatamente desde el disco rígido después de habilitar el teclado. El cargador de arranque no esperará si se omite la opción `delay&#8217; o si ésta se pone como 0.</p>
<p><strong>disk=</strong><em>nombre-dispositivo</em>Define parámetros no estándares para el disco especificado. Véase la sección &#8220;Disk geometry&#8221; de user.tex para más información. Especialmente útil es el parámetro `bios=&#8217;. La BIOS numera sus discos como 0&#215;80, 0&#215;81, etc. y es imposible decidir qué disco de Linux se corresponde con qué disco de la BIOS (ya que esto depende de la configuración de la BIOS y del tipo de la BIOS) por lo que, si tiene una configuración inusual, necesitará establecer la correspondencia entre los discos de Linux y los discos de la BIOS. Por ejemplo, </p>
<pre>    disk=/dev/sda
            bios=0x80
    disk=/dev/hda
            bios=0x81
</pre>
<p>diría que su disco SCSI es el primer disco de la BIOS y que su disco IDE (maestro primario) es el segundo disco de la BIOS.</p>
<p><strong>disktab=</strong><em>fichero-tabla</em>Especifica el nombre de la tabla de parámetros del disco. Si se omite esta opción, el instalador del mapa busca en <em>/etc/disktab</em>. No se recomienda utilizar tablas de parámetros de disco.</p>
<p><strong>fix-table</strong>Esta opción permite a lilo ajustar las direcciones 3D en tablas de partición. Cada entrada en la tabla contiene una dirección 3D (sector/cabeza/cilindro) y una dirección lineal del primer y del último sector de la partición. Si una partición no está alineada con una pista y ciertos sistemas operativos (p.ej. PC/MS-DOS u OS/2) están usando el mismo disco, estos sistemas pueden cambiar la dirección 3D. Lilo puede almacenar su sector de arranque sólo en particiones donde ambos tipos de direcciones se corresponden. Lilo reajusta direcciones 3D incorrectas si se especifica la opción `fix-table&#8217;. ADVERTENCIA: Esto no garantiza que otros sistemas operativos no intenten cambiar esta dirección. También es posible que este cambio tenga otros efectos inesperados. La solución correcta es reparticionar el disco con un programa que alinee las particiones a las pistas. Además, con algunos discos (p.ej. algunos discos EIDE con traducción de direcciones habilitada), tener entradas conflictivas en la tabla de particiones puede llegar a ser inevitable.</p>
<p><strong>force-backup=</strong><em>fichero-resguardo</em>Igual que `backup&#8217;, pero graba sobre una copia de resguardo vieja, si ésta existe.</p>
<p><strong>ignore-table</strong>Le dice a lilo que ignore tablas de partición corruptas.</p>
<p><strong>install=</strong><em>sector-arranque</em>Instala el fichero especificado como el nuevo sector de arranque. Si la opción `install&#8217; se omite, lilo utiliza <em>/boot/boot.b</em>.</p>
<p><strong>linear</strong>Genera direcciones de sector lineales en vez de direcciones sector/cabeza/cilindro. Las direcciones lineales se traducen en tiempo de ejecución y no dependen de la geometría del disco. Nótese que discos de arranque con la opción `linear&#8217; pueden no ser portables, porque el servicio BIOS para determinar la geometría del disco no es confiable para discos flexibles. Si se utiliza la opción `linear&#8217; con discos grandes, <em>/sbin/lilo</em> puede generar referencias a áreas del disco inaccesibles, porque las direcciones 3D de los sectores no son conocidas antes de arrancar.</p>
<p><strong>lock</strong>Graba automáticamente las líneas de órdenes de arranque y las usa como valores por omisión para subsiguientes arranques. De esta forma, las opciones quedan fijas hasta que se cambien manualmente.</p>
<p><strong>map=</strong><em>fichero-mapa</em>Especifica la ubicación del fichero mapa. Si la opción `map&#8217; se omite, lilo utiliza el fichero <em>/boot/map</em>.</p>
<p><strong>message=</strong><em>fichero-mensajes</em>Especifica un fichero con un mensaje que se muestra antes del indicador de arranque. Lilo no muestra ningún mensaje mientras espera la pulsación de la tecla de cambio a mayúsculas, Ctrl, Alt o AltGr después de imprimir &#8220;LILO &#8220;. En el mensaje, el caracter FF ([Ctrl L]) borra la pantalla. El fichero de mensajes no puede exceder de 65536 bytes. El fichero mapa se debe reconstruir cada vez que el fichero de mensajes se cambia o mueve de lugar.</p>
<p><strong>nowarn</strong>Deshabilita advertencias sobre posibles peligros futuros.</p>
<p><strong>optional</strong>La opción `optional&#8217; para cada imagen (ver abajo) se utiliza para todas las imágenes.</p>
<p><strong>password=</strong><em>contraseña</em>La opción `password=&#8230;&#8217; para cada imagen (ver abajo) se utiliza para todas las imágenes.</p>
<p><strong>prompt</strong>Muestra el indicador de arranque sin esperar la pulsación de ninguna tecla. Es imposible arrancar el sistema automáticamente si se utiliza `prompt&#8217; y no se utiliza `timeout&#8217;.</p>
<p><strong>restricted</strong>La opción `restricted&#8217; para cada imagen (ver abajo) se utiliza para todas las imágenes.</p>
<p><strong>serial=</strong><em>parametros</em>Habilita el control desde una linea serie. El puerto serie especificado se inicializa y el cargador de arranque espera entrada de datos desde el puerto y desde el teclado del PC. Si se envía un &#8220;break&#8221; por la línea serie, se obtiene el mismo resultado que al apretar la tecla May (o Ctrl o Alt o AltGr) en la consola. Todas las imágenes de arranque deberían estar protegidas con contraseña si el acceso por puerta serie es menos seguro que el acceso a la consola, p.ej. si la línea está conectada a un módem. Los parámetros tienen la siguiente sintaxis: </p>
<pre>    &lt;port&gt;[,&lt;bps&gt;[&lt;parity&gt;[&lt;bits&gt;]]]
</pre>
<p>&lt;port&gt;: el número del puerto serie, comienza en cero. 0 corresponde a COM1 (/dev/ttyS0), etc. Se pueden usar los cuatro puertos a la vez (si están presentes).</p>
<p>&lt;bps&gt;: la velocidad del puerto serie. Se puede usar una de las siguientes velocidades: 110, 150, 300, 600, 1200, 2400, 4800 y 9600 bps. Por omisión se utiliza 2400 bps.</p>
<p>&lt;parity&gt;: la paridad usada en la línea sere. El cargador de arranque no hace caso de la paridad de entrada y elimina el 8º bit. Las siguientes letras (mayúsculas o minúsculas) se utilizan para describir la paridad: `n&#8217; para no usar paridad, `e&#8217; para paridad par, y `o&#8217; para paridad impar.</p>
<p>&lt;bits&gt;: la cantidad de bits por carácter. Sólo se pueden usar 7 u 8 bits. Si la paridad es `n&#8217;, se usan 8 bits por omisión. Si la paridad es `e&#8217; u `o&#8217;, se usan 7 bits por omisión.</p>
<p>Si se utiliza la opción `serial&#8217;, el valor de `delay&#8217; se eleva automáticamente a 20.</p>
<p>Ejemplo: serial=0,2400n8 inicializa COM1 con los parámetros por omisión.</p>
<p><strong>timeout=</strong><em>décimas-seg</em>Establece un límite de tiempo (en décimas de segundo) para entradas por teclado. Si no se aprieta ninguna tecla en el tiempo especificado, el sistema arranca automáticamente con la primera imagen. En forma similar, la entrada de contraseñas se cancela si el usuario deja de escribir durante mucho tiempo. El límite de tiempo por omisión es infinito.</p>
<p><strong>verbose=</strong><em>nivel</em>Habilita los mensajes de progreso. Mientras más grande sea el número, más mensajes serán mostrados. También se puede usar la opción -v en la línea de órdenes. El nivel máximo es 5.Además, los parámetros de configuración del núcleo </p>
<p><strong>append</strong>, </p>
<p><strong>ramdisk</strong>, </p>
<p><strong>read-only</strong>, </p>
<p><strong>read-write</strong>, </p>
<p><strong>root</strong> y </p>
<p><strong>vga</strong> también se pueden usar en la sección de opciones globales. Estas opciones se utilizan como valores por omisión si no se especifican en las secciones de configuracion de las imágenes individuales.</p>
<p><a> </a></p>
<h2>Secciones para cada imagen<br />
</h2>
<p> Una sección para una imagen comienza con la línea </p>
<pre>

<strong>image=</strong><em>nombre-de-ruta</em>
</pre>
<p>(para indicar un fichero o dispositivo que contiene la imagen  de arranque de un núcleo Linux), o con la línea</p>
<pre>

<strong>other=</strong><em>nombre-de-ruta</em>
</pre>
<p>para arrancar cualquier otro sistema.</p>
<p>En el primer caso,  si se usa la línea </p>
<p><strong>image</strong> para arrancar de un dispositivo, se tiene que indicar el rango de sectores a asociar usando</p>
<p><strong>range=</strong><em>comienzo-fin</em>En el segundo caso (arrancando otro sistema) hay tres opciones</p>
<p><strong>loader=</strong><em>cargador-cadena</em>Indica que debería emplearse un cargador en cadena. Por omisión, lilo utiliza <em>/boot/chain.b</em>. El cargador en cadena se debe especificar si se arranca desde otro dispositivo que no sea el primer disco rígido o el primer disco flexible.</p>
<p><strong>table=</strong><em>dispositivo</em>Indica el dispositivo que contiene la tabla de particiones. El cargador de arranque no le va a enviar información de partición al sistema operativo si se omite esta variable. (Algunos sistemas operativos tienen otra forma de determinar de qué partición han sido arrancados. P.ej., MS-DOS generalmente guarda la geometría del disco de arranque o partición en su sector de arranque.) Nótese que se debe ejecutar /sbin/lilo cada vez que se modifica una tabla de partición referenciada con la opción `table&#8217;.</p>
<p><strong>unsafe</strong>Indica que lilo no debe acceder al sector de arranque cuando cree el mapa. Esta opción deshabilita algunas comprobaciones, incluyendo la de la tabla de particiones. Si el sector de arranque está en disco flexible de formato fijo, el uso de `unsafe&#8217; evita la necesidad de poner un disco legible en la unidad cuando se ejecuta el instalador del mapa. `unsafe&#8217; y `table&#8217; son incompatibles.En ambos casos se pueden usar las siguientes opciones.</p>
<p><strong>label=</strong><em>nombre</em>El cargador de arranque utiliza el nombre principal del fichero (sin la ruta de acceso) de cada especificación de imagen para identificar dicha imagen. Se puede usar un nombre diferente mediante la variable `label&#8217;.</p>
<p><strong>alias=</strong><em>nombre</em>Define un segundo nombre (o alias) para la misma imagen.</p>
<p><strong>lock</strong>(Véase la discusión de más arriba.)</p>
<p><strong>optional</strong>Omitir la imagen si no esta disponible cuando se cree el mapa. Esta opción es útil para especificar núcleos de prueba que no están siempre presentes.</p>
<p><strong>password=</strong><em>contraseña</em>Protege la imagen con una contraseña.</p>
<p><strong>restricted</strong>Sólo se necesita contraseña para arrancar la imagen si se especifican parámetros en la línea de órdenes (p.ej., single).<a> </a></p>
<h2>Opciones del núcleo<br />
</h2>
<p> Si la imagen a arrancar es un núcleo Linux, entonces se pueden pasar parámetros de línea de órdenes a este núcleo. </p>
<p><strong>append=</strong><em>cadena</em>Agrega las opciones especificadas a la línea de parámetros pasada al núcleo. Se suele usar para especificar parámetros del equipo que no pueden ser detectados automáticamente o porque pueden ser peligrosos de sondear. Por ejemplo: </p>
<pre>     append = "hd=64,32,202"
</pre>
<p><strong>literal=</strong><em>string</em>Igual que `append&#8217;, pero elimina todas las otras opciones (p.ej., la ubicación del dispositivo raíz). Debido a que se pueden eliminar sin querer opciones vitales con `literal&#8217;, esta opción no se puede poner en la sección de opciones globales.</p>
<p><strong>ramdisk=</strong><em>tamaño</em>Especifica el tamaño del disco RAM opcional. Cero se utiliza para no crear un disco RAM. Si se omite esta variable, el sistema utiliza el tamaño configurado en la imagen de arranque.</p>
<p><strong>read-only</strong>Indica que el sistema de ficheros raíz debe ser montado de lectura exclusiva. En general, el proceso de comienzo del sistema re-monta el sistema de ficheros raíz para lectura-escritura (p.ej. después de hacer la comprobación).</p>
<p><strong>read-write</strong>Especifica que el sistema de ficheros raíz debe ser montado para lectura-escritura.</p>
<p><strong>root=</strong><em>dispositivo-raíz</em>Especifica el dispositivo que debe ser montado como raíz. Si se utiliza el nombre especial </p>
<p><strong>current</strong>, lilo utiliza el dispositivo que actualmente esté montado como raíz. Si la raíz se ha modificado con -r, lilo utiliza el dispositivo respectivo. Si se omite la variable `root&#8217;, lilo utiliza el dispositivo raíz configurado en la imagen del núcleo. (El cual se establece cuando se compila el núcleo usando la variable ROOT_DEV en el Makefile del núcleo, y también se puede cambiar con el programa <a href="http://localhost/cgi-bin/man/man2html?8+rdev">rdev</a>(8).)</p>
<p><strong>vga=</strong><em>modo</em>Esta opción especifica el modo de texto VGA que debe usarse al arrancar el sistema. Se reconocen los siguientes valores (no importa si las letras con mayúsculas o minúsculas): </p>
<p><strong>normal</strong>: selecciona el modo de texto normal 80×25.</p>
<p><strong>extended</strong> (o </p>
<p><strong>ext</strong>): selecciona el modo de texto 80×50.</p>
<p><strong>ask</strong>: se para y le pregunta al usuario (al arrancar el sistema).</p>
<p>&lt;número&gt;: usa el modo de texto correspondiente al número. Para obtener una lista de modos disponibles, arranque con &#8216;vga=ask&#8217; y pulse [Intro].</p>
<p>Si se omite esta variable, lilo utiliza el modo VGA configurado en la imagen del núcleo. (El cual se establece cuando se compila el núcleo con la variable SVGA_MODE en el Makefile del núcleo. Ese valor se puede cambiar más adelante con el programa rdev(8).)</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> direccion lineal disco duro</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/gestion-de-proyecto/crear-un-esquema-eer-desde-el-gestor-de-base-de-datos-mysql-workbench/' rel='bookmark' title='Crear un esquema EER desde el gestor de base de datos MySQL Workbench'>Crear un esquema EER desde el gestor de base de datos MySQL Workbench</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/comprobar-si-existe-un-fichero-con-php-y-unix/' rel='bookmark' title='comprobar si existe un fichero con php y linux'>comprobar si existe un fichero con php y linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/nomenclatura-para-discos-duros-y-particiones-de-linux/' rel='bookmark' title='Nomenclatura para discos duros y particiones de linux'>Nomenclatura para discos duros y particiones de linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/anadir-y-dar-formato-a-un-nuevo-disco-duro-en-linux/' rel='bookmark' title='Particionar, dar formato y montar un disco duro en linux. Pasos para añadir un nuevo disco duro.'>Particionar, dar formato y montar un disco duro en linux. Pasos para añadir un nuevo disco duro.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-comprimir-una-carpeta-entera-en-linux-desde-consola/' rel='bookmark' title='Como comprimir una carpeta entera en linux desde consola'>Como comprimir una carpeta entera en linux desde consola</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/linux/gestor-de-arranque-lilo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nomenclatura para discos duros y particiones de linux</title>
		<link>http://www.pedroventura.com/blog_programacion/linux/nomenclatura-para-discos-duros-y-particiones-de-linux/</link>
		<comments>http://www.pedroventura.com/blog_programacion/linux/nomenclatura-para-discos-duros-y-particiones-de-linux/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 10:19:31 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2537</guid>
		<description><![CDATA[Antes de realizar ninguna operación de formateo o instalar linux, hay que conocer un poco el sistema de archivos así como la nomenclatura de los discos duros y las particiones. En el siguiente artículo explicaré estos conceptos. Sistema de archivos Es la estrucuturación de la informacion en un disco duro. El gestor de archivos es que el se encarga de representar la información ya sea textual o gráficamente. Window y Linux tienen sistemas de archivos diferentes. En linux existen los siguientes sistemas de archivos: 1.- Ext2 el primer sistema de archivos diseñado expresamente para Linux. 2.- Ext3 versión mejorada de Ext2, ampliamente utilizada en distribuciones Linux 3.- Ext4 nuevo sistema de ficheros para Linux evolucionado de Ext3 algunas de sus ventajas con respecto a este último son: Aumento del tamaño del sistema de ficheros a 1 Exabay = 2^20 Terabyte y del tamaño máximo por archivo (16 Tb). Número ilimitado de directorios frente a los 32.000 de Ext3 Mayor velocidad en la creación y borrado de ficheros Disco duros Todos los discos duros en linux están localizados bajo la carpeta /dev Dos Letras Iniciales &#8211; las primeras dos letras del nombre de la partición indican el tipo de dispositivo donde [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/anadir-y-dar-formato-a-un-nuevo-disco-duro-en-linux/' rel='bookmark' title='Particionar, dar formato y montar un disco duro en linux. Pasos para añadir un nuevo disco duro.'>Particionar, dar formato y montar un disco duro en linux. Pasos para añadir un nuevo disco duro.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/usando-awk-y-grep-para-mostrar-informacion-del-sistema-como-memoria-libre-y-espacio-en-disco/' rel='bookmark' title='Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.'>Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/estructura-del-sistema-de-archivos-de-linux/' rel='bookmark' title='Estructura del sistema de archivos de Linux'>Estructura del sistema de archivos de Linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/gestor-de-arranque-lilo/' rel='bookmark' title='Gestor de Arranque LILO'>Gestor de Arranque LILO</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/rabbitvcs-herramienta-para-control-de-versiones-con-subversion-y-git-para-linux/' rel='bookmark' title='RabbitVCS herramienta para control de versiones con Subversion y Git para Linux'>RabbitVCS herramienta para control de versiones con Subversion y Git para Linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Antes de realizar ninguna operación de formateo o instalar linux, hay que conocer un poco el sistema de archivos así como la nomenclatura de los discos duros y las particiones.<br />
En el siguiente artículo explicaré estos conceptos.</p>
<h2>Sistema de archivos</h2>
<p>Es la estrucuturación de la informacion en un disco duro. El gestor de archivos es que el se encarga de representar la información ya sea textual o gráficamente. Window y Linux tienen sistemas de archivos diferentes.</p>
<p>En linux existen los siguientes sistemas de archivos:</p>
<p>    1.- Ext2 el primer sistema de archivos diseñado expresamente para Linux.<br />
    2.- Ext3 versión mejorada de Ext2, ampliamente utilizada en distribuciones Linux<br />
    3.- Ext4 nuevo sistema de ficheros para Linux evolucionado de Ext3 algunas de sus ventajas con respecto a este último son:</p>
<ul>
<li>Aumento del tamaño del sistema de ficheros a 1 Exabay = 2^20 Terabyte y del tamaño máximo por archivo (16 Tb).</li>
<li> Número ilimitado de directorios frente a los 32.000 de Ext3</li>
<li>Mayor velocidad en la creación y borrado de ficheros</li>
</ul>
<h2>Disco duros</h2>
<p>Todos los discos duros en linux están localizados bajo la carpeta /dev</p>
<ul>
<li> Dos Letras Iniciales &#8211; las primeras dos letras del nombre de la partición indican el tipo de dispositivo donde reside la partición. Normalmente serán hd (para discos IDE) o sd (para discos SCSI).</li>
<li> Tercera Letra &#8211; esta letra indica que dispositivo contiene la partición. Por ejemplo /dev/hda (el primer disco duro IDE) o /dev/sdb (segundo disco SCSI).</li>
<li>Número &#8211; indica la partición. Las primeras cuatro (primarias o extendidas) particiones son numeradas de 1 a 4. Particiones lógicas empiezan en 5. Por ejemplo /dev/hda3 es la tercera primaria o extendida en el primer disco IDE; /dev/sdb6 es la segunda partición lógica del segundo disco duro SCSI</li>
</ul>
<p>La nomenclatura cambia si se trata de un disco duro IDE o SATA</p>
<p>    * ide0 = primario maestro = hda<br />
    * ide1 = primario esclavo = hdb<br />
    * ide2 = secundario maestro = hdc<br />
    * ide3 = secundario esclavo= hdd</p>
<p>Para dispositivos SCSI exactamente igual que para dispositivos IDE<br />
/dev/sda o /dev/scd0 (dispositivo 1), /dev/sdb o /dev/scd1 (dispositivo 2), /dev/sdc o /dev/scd2(dispositivo 3), etc</p>
<h2>Particiones</h2>
<p>Solo puede haber 4 particiones primarias.<br />
1-4 particiones primaras<br />
5-16 particiones logicas</p>
<p>Primera partición del dispositivo maestro del canal 1 IDE</p>
<p>/dev/hda1<br />
Segunda partición del dispositivo maestro del canal 1 IDE</p>
<p>/dev/hda2</p>
<p>Primera unidad lógica del dispositivo maestro del canal 1 IDE</p>
<p>/dev/hda5</p>
<p>Primera unidad lógica del dispositivo esclavo del canal 1 IDE</p>
<p>/dev/hdb5</p>
<p>Un buen comando para mostrar un listado con todos los discos duros y particiones es fdisk</p>
<pre class="brush: plain; title: ;">
# fdisk -l
</pre>
<p>El modificador -l es para mostrar el listado de los dispositivos instalados.</p>
<p>Para ver todos los posibles usos de fdisk usar el manual</p>
<pre class="brush: plain; title: ;">
man fdisk
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> comando unix para formatear disco, primer disco duro partición lógica 1 nomenclatura, particiones en linux, particiones disco duro en linux, nomenclaturas en linux, nomenclatura particiones linux, nomenclatura para discos y particiones de una pc, nomenclatura de discos duros, nOMENCLa de discos y prticiones, linux ficheros de dispositivos</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/anadir-y-dar-formato-a-un-nuevo-disco-duro-en-linux/' rel='bookmark' title='Particionar, dar formato y montar un disco duro en linux. Pasos para añadir un nuevo disco duro.'>Particionar, dar formato y montar un disco duro en linux. Pasos para añadir un nuevo disco duro.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/usando-awk-y-grep-para-mostrar-informacion-del-sistema-como-memoria-libre-y-espacio-en-disco/' rel='bookmark' title='Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.'>Usando awk y grep para mostrar informacion del sistema como memoria libre y espacio en disco.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/estructura-del-sistema-de-archivos-de-linux/' rel='bookmark' title='Estructura del sistema de archivos de Linux'>Estructura del sistema de archivos de Linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/gestor-de-arranque-lilo/' rel='bookmark' title='Gestor de Arranque LILO'>Gestor de Arranque LILO</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/rabbitvcs-herramienta-para-control-de-versiones-con-subversion-y-git-para-linux/' rel='bookmark' title='RabbitVCS herramienta para control de versiones con Subversion y Git para Linux'>RabbitVCS herramienta para control de versiones con Subversion y Git para Linux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/linux/nomenclatura-para-discos-duros-y-particiones-de-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Componente de AutoLogin para CakePHP, no cerrar sesión. Uso y manejo de Cookies</title>
		<link>http://www.pedroventura.com/blog_programacion/cakephp/componente-de-autologin-para-cakephp-no-cerrar-sesion-uso-y-manejo-de-cookies/</link>
		<comments>http://www.pedroventura.com/blog_programacion/cakephp/componente-de-autologin-para-cakephp-no-cerrar-sesion-uso-y-manejo-de-cookies/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 13:02:11 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2310</guid>
		<description><![CDATA[En este artículo voy a explicar como trabajar con las cookies en CakePHP. El uso de cookies en aplicaciones web, en todo lo que llevo trabajando, es algo fundamental. Claro está que sean aplicaciones web grandes o portales web donde se necesite registrar algún tipo de dato en cookie y que permanezca un tipo almacenada en el ordenador del usuario. Con CakePHP el uso de las cookies es relativamente sencillo, igual que si usamos php puro. No hay mucho misterio. Cakephp crea un componente en su core para trabajar con cookies. Se puede incluir añadiéndolo en el array $components $components = array('Cookie'); Hay varias funciones básicas para trabajar con el componente de Cookie de CakePHP La funcion write() que se encarga de guardar una cookie. write(mixed $identificador_cookie, mixed $valor, boolean $encriptacion, mixed $expiracion) $this-&#62;Cookie-&#62;write('nombre_cookie','Pedro Ventura'); También añadir grupos de cookies especificando un punto en la notificación en el campo $nombre $this-&#62;Cookie-&#62;write('User.name', 'Pedro Ventura'); $this-&#62;Cookie-&#62;write('User.role','Admin'); El tercer parámetro indica si la cookie va encriptada o en claro. Obviamente si encriptamos la cookie ofrecerá mas seguridad. Claro está si se trata de alo irrelevante o no implica información crítica tampoco hará falta encriptar la cookie. Google en algunos casos no encripta sus [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/subir-ficheros-con-swfupload-componente-cakephp/' rel='bookmark' title='subir ficheros con swfupload componente cakephp'>subir ficheros con swfupload componente cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/componente-geo-posicionamiento-ip-con-cakephp/' rel='bookmark' title='componente geo posicionamiento ip con cakephp'>componente geo posicionamiento ip con cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/expresiones-regulares-y-uso-del-enrutador-routes-php-de-cakephp/' rel='bookmark' title='Expresiones regulares y uso del enrutador routes.php de CakePHP'>Expresiones regulares y uso del enrutador routes.php de CakePHP</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-aumentar-el-tiempo-de-session-timeout/' rel='bookmark' title='Cakephp aumentar el tiempo de session timeout'>Cakephp aumentar el tiempo de session timeout</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/' rel='bookmark' title='cakephp funcion para bloquear ips y evitar spam'>cakephp funcion para bloquear ips y evitar spam</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En este artículo voy a explicar como trabajar con las cookies en CakePHP.<br />
El uso de cookies en aplicaciones web, en todo lo que llevo trabajando, es algo fundamental. Claro está que sean aplicaciones web grandes o portales web donde se necesite registrar algún tipo de dato en cookie y que permanezca un tipo almacenada en el ordenador del usuario.</p>
<p>Con CakePHP el uso de las cookies es relativamente sencillo, igual que si usamos php puro. No hay mucho misterio.</p>
<p>Cakephp crea un componente en su core para trabajar con cookies. Se puede incluir añadiéndolo en el array $components </p>
<pre class="brush: php; title: ;">$components = array('Cookie');</pre>
<p>Hay varias funciones básicas para trabajar con el componente de Cookie de CakePHP</p>
<p>La funcion write() que se encarga de guardar una cookie.</p>
<p>write(mixed $identificador_cookie, mixed $valor, boolean $encriptacion, mixed $expiracion)</p>
<pre class="brush: php; title: ;">
$this-&gt;Cookie-&gt;write('nombre_cookie','Pedro Ventura');
</pre>
<p>También añadir grupos de cookies especificando un punto en la notificación en el campo $nombre</p>
<pre class="brush: php; title: ;">

$this-&gt;Cookie-&gt;write('User.name', 'Pedro Ventura');
$this-&gt;Cookie-&gt;write('User.role','Admin');
</pre>
<p>El tercer parámetro indica si la cookie va encriptada o en claro. Obviamente si encriptamos la cookie ofrecerá mas seguridad. Claro está si se trata de alo irrelevante o no implica información crítica tampoco hará falta encriptar la cookie. Google en algunos casos no encripta sus cookies.</p>
<p>Para más información este es el link de la documentación oficial <a rel="nofollow" target="_blank" href="http://book.cakephp.org/view/180/Using-the-Component">http://book.cakephp.org/view/180/Using-the-Component</a></p>
<p>La función read() que se encarga de recuperar el contenido de una cookie especificando su nombre</p>
<p>read(mixed $identificador_cookie)</p>
<pre class="brush: php; title: ;">
echo $this-&gt;Cookie-&gt;read('nombre_cookie');
</pre>
<p>Devolverá: Pedro Ventura </p>
<p>La funcion del(). Elimina una cookie indicando el identificador de cookie.<br />
del(mixed $key)</p>
<pre class="brush: php; title: ;">
$this-&gt;Cookie-&gt;del('nombre_cookie')
</pre>
<p>Después de esta breve introducción en el uso y manejo de las cookies en CakePHP, añado el componente que he desarrollado como sistema de autologin.<br />
Esto es el típico sistema de login directo en caso de que haya marcado en el formulario de login la opción de &#8220;manterme logeado&#8221; o &#8220;No cerrar sesión&#8221; (como pone facebook)</p>
<p>Para mas informacion leer todos los comentarios que he dejado en el código del component.</p>
<p>Irá guardado en /app/controllers/components/auto_login.php</p>
<pre class="brush: php; title: ;">
&lt;?php
/**
* Clase para generar la cookie y procesar la lógica de la cookie de recuerdo.
* Es la típica acción de &quot;manterme logeado&quot;  o &quot;no cerrar sessión&quot;.
*
* El componente va a constar de dos partes fundamentales, la creación de la cookie y la comprobación de la misma.
*
* Cuando un usuario se logea, habrá un checkbox que se pueda marcar, activando el desencadenante (&quot;trigger&quot;) que llamará a este componente.
* Desde el controlador que comprueba las credenciales del usuario, se llamará a la función guardar_cookie_user() enviando los parámetros necesarios.
*
* No hay que decir, que este componente es para programadores experimentados en cakephp, por lo que los parámetros que se le pueda enviar a esta función
* serán totalmente personalizables a las necesidades de cada código, creando así una cookie específica.
* En el código que he desarrollado, presenta una función standard con unos datos normalmente utilizados a la hora de representar información de un usuario.
*
* La segunda parte del componente, será la de comprobar el status y los datos de la cookie.
* Uno de los campos de la cookie es una cadena de texto hasheada con todos los datos del usuario y una clave &quot;salt&quot;
* (una clave única que creamos para añadir más seguridad a la cadena).
* Tendremos que hacer una comprobacion de la cadena hash con el resto de datos de la cookie.
*
* A la hora de registrar la sesión del usuario o crear la cookie, lo estoy haciendo desde el objeto heredado.
* De manera que lo que hago es esto $this-&gt;controller-&gt;Session-&gt;write y no esto
* $this-&gt;Session-&gt;write. Hacer esto implica que hay que añadir la clase Sessión en este componente, y puede crear conflicto con la sessión activa sobrescribiendola.
* Por lo normal, lo más aconsejable es no incluir en el array $components el componente de Sessión, e indicar en el archivo core.php que inicialize la session siempre.
*
* @version 1.0
* @uses CakePHP 1.2
* @author Pedro Ventura www.pedroventura.com
*
*/

# en el código añado la siguiente constante en la cookie. Representa el dominio del site.
# utilizada par añadir mas complejidad a la cookie.
# para este ejemplo he indicado en este mismo componente la definición de la constante, pero lo ideal es añadirlo en el bootstrap.php
# también podéis eliminar esta define() y en todos los lugares donde se añade.
define('HTTP_DOMINIO','www.mi_dominio.com');

class AutoLoginComponent extends Object
{
    var $expires = 15552000; # 6 Meses
    var $clave_seguridad = '3487t90japAS%242'; # clave usada para crear el hash de la cookie. Añadiendo complejidad adicional a la cadena codificada
    var $cookie_name = 'autoLogin_';

    /**
    * seteamos el componente heredando los datos del controller
    *
    * @param mixed $controller
    */
    function startup (&amp;$controller)
    {
        $this-&gt;controller =&amp; $controller;
        return true;
    }

    /**
    * Función que guarda la cookie con los datos del usuario.
    * Los datos de la cookie van cifrados.
    * Al mismo tiempo, se crea un campo hash que esta cifrado con varios parámetros.
    * Este campo tendrá que coincidir para crear la sesión automáticamente
    *
    * @param mixed $id_user
    * @param mixed $nombre_user
    * @param mixed $email_user
    * @param mixed $nick_user
    *
    * @version 1.0
    * @author Pedro Ventura www.pedroventura.com
    */
    function guardar_cookie_user($id_user, $nombre_user, $email_user,$nick_user)
    {
        $cookie = array();
        $cookie['id'] = $id_user;
        $cookie['nombre'] = $nombre_user;
        $cookie['email'] = $email_user;
        $cookie['nick'] = $nick_user;
        $cookie['time'] = time();
        $cookie['hash'] = md5($this-&gt;clave_seguridad.$cookie['id'].$cookie['nombre'].$cookie['email'].$cookie['nick'].$cookie['time'].HTTP_DOMINIO);

        # creamos la cookie con el contenido
        # el primer parámetro es el nombre de la cookie.
        # el segundo parámetros son todos los datos que la cookie va a contener, puede ser un string, un numero entero o un array. En este caso es un array
        # el tercer parámetro puede ser true o false. Especifica si se cifra la cookie o irá en claro. Si se pone a true irá cifrada.
        # el cuarto parámetro indica el tiempo de expiración, por defecto si no se especifica nada en CakePHP , la cookie espirará con la sesión del usuario
        $this-&gt;controller-&gt;Cookie-&gt;write($this-&gt;cookie_name, $cookie, true, $this-&gt;expires);
        # Para realizar pruebas de testeo y debugin no estaría mal guardar un log con las cookies que se van creando.
        $this-&gt;log('guardando cookie para: '.$nombre_user. ' nick: '. $nick_user .' email: '. $email_user . ' id: '.$id_user. ' time :'.$cookie['time'],'cookies_log');
        # esto guardará el siguiente log: /app/tmp/logs/cookies_log.log
    }

    /**
    *
    * Función para comprobar la existencia de la cookie de recuerdo.
    *
    * Nueva mejora, si la cookie ha sido leida y se genera la session a partir de ésta, voy a crear una nueva variable de session que
    * que marca como se ha leido la cookie y ya no se vuelve a consultar todo el tiempo la cookie.
    *
    * @param mixed $controller
    *
    * @version 1.0
    * @author Pedro Ventura. www.pedroventura.com
    */
    function comprobar_cookie_user()
    {
        $cookie = $this-&gt;controller-&gt;Cookie-&gt;read($this-&gt;cookie_name);   

        if ($cookie['hash'] != md5($this-&gt;clave_seguridad.$cookie['id'].$cookie['nombre'].$cookie['email'].$cookie['nick'].$cookie['time'].HTTP_DOMINIO))
        {
            $this-&gt;delete($this-&gt;cookie_name);
            return false;
        }
        else
        {
            # si los hash coinciden inicio el proceso de login registrando los datos de session.
            $this-&gt;controller-&gt;Session-&gt;write('User.id', $cookie['id']);
            $this-&gt;controller-&gt;Session-&gt;write('User.nombre', $cookie['nombre']);
            $this-&gt;controller-&gt;Session-&gt;write('User.email', $cookie['email']);
            $this-&gt;controller-&gt;Session-&gt;write('User.nick', $cookie['nick']);
            # guardo una session para que no se vuelva a comprobar la cookie en lo que dure la session del usuario en la aplicacion.
            # esta sessión no se leerá en el componenten, sino en el controlador que llama al componente.
            $this-&gt;controller-&gt;Session-&gt;write('UserCookie.lectura', 1);

            return true;
        }
    }

    /**
    * Funcion para borra la cooke de autoLogin.
    * Se utiliza desde el mismo componente o se pueda invocar desde un controlador.
    *
    * @param mixed $nombre_cookie
    */
    function delete($nombre_cookie)
    {
        if(isset($nombre_cookie) &amp;&amp; (!empty($nombre_cookie)))
        {
            $this-&gt;controller-&gt;Cookie-&gt;del($nombre_cookie);
        }
    }
}
?&gt;
</pre>
<p>A continuació un ejemplo de como se usaría en un controlador.</p>
<pre class="brush: php; title: ;">
&lt;?php
/**
* Ejemplo de integracion del componente de AutoLogin en un controlador.
* Un controlador de ejemplo como puede ser usuarios, users, etc...
*
* Se incluye el componente AutoLogin en el array de $components
*
*/

class UsuariosController extends AppController
{
    var $components = array('AutoLogin');

    /**
    * Antes de que se ejecute cada funcion de la clase se ejecuta la funcion beforeFilter
    * De esta manera simpre comprobamos la existencia de la cookie.
    * En este ejemplo vemos para que sirve la session que hemos seteado en la funcion comprobar_cookie_user()
    * La session UserCookie.lectura evita que siempre se esté comprobando la cookie. De manera que tan sólo se realiza una vez que el usuario entra
    * en la aplicacion y que se haya comprobado la cookie con exito.
    */
    function beforeFilter()
    {
        parent::beforeFilter();
        if($this-&gt;Session-&gt;read('UserCookie.lectura') != 1)
        {
            $this-&gt;AutoLogin-&gt;startup($this);
            $this-&gt;AutoLogin-&gt;comprobar_cookie_user();
        }
    } 

    /**
    * Funcion que realiza toda la comprobacion de las credenciales del usuario y efectua el login.
    *
    * Esta función queda abierta al desarrollo de cada programador.
    *
    * Lo único que yo mostraré es el proceso de generar la cookie.
    * Como se puede ver en el código si en el formulario de login han activado el checkbox el valor de éste será 1
    * Es nuestro trigger o desencadenante para registrar la cookie en el sistema.
    * La variable $user, contiene la informacion de nuestro usuario logeado.
    *
    */
    function login()
    {
        // toda la logica para comprobar las credenciales del usuario

        # genero la cookie que guarda los datos del usuario
        if($this-&gt;data['Usuario']['auto_login_checkbox'] == 1) # esto es el checkbox del formulario de login.
        {
            $this-&gt;AutoLogin-&gt;guardar_cookie_user($user['id'],$user['nombre'],$user['email'],$user['nick']);
        }
    }
}
?&gt;
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> cake php formulario crear usuario, para la session cakephp, obtener usuario cakephp en controller, login y logout por cookies php y mysql, inicio de sesion en cakephp, id de sesion en cakephp, function get plataforma () ne cakephp, despues de loguearse cakephp, crear y eliminiar session en cakephp, checkbox no cerrar sesion php mysql</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/subir-ficheros-con-swfupload-componente-cakephp/' rel='bookmark' title='subir ficheros con swfupload componente cakephp'>subir ficheros con swfupload componente cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/componente-geo-posicionamiento-ip-con-cakephp/' rel='bookmark' title='componente geo posicionamiento ip con cakephp'>componente geo posicionamiento ip con cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/expresiones-regulares-y-uso-del-enrutador-routes-php-de-cakephp/' rel='bookmark' title='Expresiones regulares y uso del enrutador routes.php de CakePHP'>Expresiones regulares y uso del enrutador routes.php de CakePHP</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-aumentar-el-tiempo-de-session-timeout/' rel='bookmark' title='Cakephp aumentar el tiempo de session timeout'>Cakephp aumentar el tiempo de session timeout</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/' rel='bookmark' title='cakephp funcion para bloquear ips y evitar spam'>cakephp funcion para bloquear ips y evitar spam</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/cakephp/componente-de-autologin-para-cakephp-no-cerrar-sesion-uso-y-manejo-de-cookies/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>10 trucos o &#8220;hacks&#8221; tutorial para personalizar el dashboard de WordPress.</title>
		<link>http://www.pedroventura.com/blog_programacion/wordpress/10-trucos-o-hacks-para-personalizar-el-dashboard-de-wordpress/</link>
		<comments>http://www.pedroventura.com/blog_programacion/wordpress/10-trucos-o-hacks-para-personalizar-el-dashboard-de-wordpress/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 15:53:26 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[template wordpress]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2221</guid>
		<description><![CDATA[El siguiente tutorial recopila una serie de funciones que modifican el aspecto de WordPress, es muy útil para programadores o freelance que están realizando la implementación del desarrollo de wordpress para un cliente o empresa. El panel de control o dashboard de wordpress como ya sabemos es una herramienta muy potente desde la que podremos realizar las tareas de crear artículos, cambiar el tema, activar widgets y una serie de funcionalidades. Pero cuando se construye un site para un cliente, es especialmente importante ser capaz de controlar y editar el panel de control en función de las necesidades y la personalización que le queramos dar. Este artículo he recopilado 10 &#8220;hacks&#8221; que podemos usar para editar, extender o modificar funciones del dashbard o escritorio de WordPress. Eliminar menús del dashboard Esta es una de las primeras tareas que necesitamos realizar cuando implementamos un wordpress para un cliente, y es ocultar y desactivar ciertos menús de la columna lateral izquierda. De manera que podemos ocultar el menú de &#8220;Apariencia&#8221; para que nuestro cliente no pueda acceder a esta sección evitando que pueda eliminar accidentalmente el tema o temas. Otro menú crítico que se tiene que desactivar es el menú de &#8220;Ajustes&#8221; [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/wordpress/personalizar-la-pagina-de-login-de-wordpress/' rel='bookmark' title='Personalizar la pagina de login de wordpress'>Personalizar la pagina de login de wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/truco-wordpress-anadir-widgets-al-pie-o-footer-de-tu-tema-de-wordpress/' rel='bookmark' title='Truco WordPress. Añadir widgets al pie o footer de tu tema de wordpress'>Truco WordPress. Añadir widgets al pie o footer de tu tema de wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/crear-y-usar-plantillas-para-paginas-de-wordpress/' rel='bookmark' title='Crear y usar plantillas para páginas de WordPress'>Crear y usar plantillas para páginas de WordPress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/seguridad-en-wordpress-elimina-el-meta-con-la-version-de-wordpress/' rel='bookmark' title='Seguridad en WordPress, elimina el meta con la version de wordpress'>Seguridad en WordPress, elimina el meta con la version de wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/mostrar-todos-los-post-wordpress-en-una-pagina/' rel='bookmark' title='Mostrar todos los post wordpress en una página'>Mostrar todos los post wordpress en una página</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>El siguiente tutorial recopila una serie de funciones que modifican el aspecto de WordPress, es muy útil para programadores o freelance que están realizando la implementación del desarrollo de wordpress para un cliente o empresa.</p>
<p>El panel de control o dashboard de wordpress como ya sabemos es una herramienta muy potente desde la que podremos realizar las tareas de crear artículos, cambiar el tema, activar widgets y una serie de funcionalidades. Pero cuando se construye un site para un cliente, es especialmente importante ser capaz de controlar y editar el panel de control en función de las necesidades y la personalización que le queramos dar. Este artículo he recopilado 10 &#8220;hacks&#8221; que podemos usar para editar, extender o modificar funciones del dashbard o escritorio de WordPress.</p>
<p><strong>Eliminar menús del dashboard</strong></p>
<p>Esta es una de las primeras tareas que necesitamos realizar cuando implementamos un wordpress para un cliente, y es ocultar y desactivar ciertos menús de la columna lateral izquierda. De manera que podemos ocultar el menú de &#8220;Apariencia&#8221; para que nuestro cliente no pueda acceder a esta sección evitando que pueda eliminar accidentalmente el tema o temas. Otro menú crítico que se tiene que desactivar es el menú de &#8220;Ajustes&#8221; o &#8220;Settings&#8221; (en inglés). Evitando que el cliente pueda alterar la configuración que hemos realizado del blog.<br />
Desde el siguiente ejemplo eliminaremos todos los menús que se indican en el array $restricted.<br />
Hay que copiar el siguiente código en nuestro archivo functions.php</p>
<pre class="brush: php; title: ;">
function remove_menus () {
global $menu;
		$restricted = array(__('Dashboard'), __('Posts'), __('Media'), __('Links'), __('Pages'), __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Comments'), __('Plugins'));
		end ($menu);
		while (prev($menu)){
			$value = explode(' ',$menu[key($menu)][0]);
			if(in_array($value[0] != NULL?$value[0]:&quot;&quot; , $restricted)){unset($menu[key($menu)]);}
		}
}
add_action('admin_menu', 'remove_menus');
</pre>
<p><strong>Personalizar con tu propio logo</strong></p>
<p>También es importante dar una imagen corporativa en todo momento, y el cliente siempre nos los requerirá. De manera que la página principal de login, /wp-login.php, que muestra el formulario de acceso a nuestro dashboard, contiene el logotipo de WordPress. Lo óptimo sería poner el logotipo de nuestro cliente o nuestro site.</p>
<p>Ver el siguiente artículo para editar el logotipo <a href="http://www.pedroventura.com/blog_programacion/2011/02/20/personalizar-la-pagina-de-login-de-wordpress/" target="_bank">Personalizar la pagina de login de wordpress</a> </p>
<p><strong>Reemplazar el logo del panel de control o dashboard</strong></p>
<p>Siguiendo con la dinámica anterior, a un cliente le gustará ver el logo en la página de login, pues también le gustará verlo en el panel de control.<br />
Para ello hay que añadir el siguiente código en functions.php</p>
<pre class="brush: php; title: ;">
add_action('admin_head', 'my_custom_logo');

function my_custom_logo() {
   echo '&lt;style type=&quot;text/css&quot;&gt;
         #header-logo { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.gif) !important; }&lt;/style&gt;';
}
</pre>
<p><strong>Deshabilitar el mensaje de actualización</strong></p>
<p>Como ya sabemos wordpress va lanzando nuevas versiones, y cada vez que lo hace, el código alberga funciones que son capaces de comprobar la versión instalada con la ultima release. Cuando hay una nueva versión nos aparece el típico mensaje de &#8220;Please upgrade now&#8221;. Pues bien, a nosotros como programadores y administradores de wordpress, pues como que nos da igual, podemos actualizarlo cuando queremos, recomendable hacerlo cuanto antes, pero no está bien que este mensaje le aparezca al cliente.</p>
<p>Para evitar que aparezca este mensaje, incluiremos la siguiente línea en nuestro archivo functions.php</p>
<pre class="brush: php; title: ;">
if ( !current_user_can( 'edit_users' ) ) {
  add_action( 'init', create_function( '$a', &quot;remove_action( 'init', 'wp_version_check' );&quot; ), 2 );
  add_filter( 'pre_option_update_core', create_function( '$a', &quot;return null;&quot; ) );
}
</pre>
<p><strong>Eliminar widgets o paneles del escritorio</strong></p>
<p>Los usuarios que acceden a WordPress entran el la página principal de escritorio o dashboard, aquí se presenta mucha información en diferentes widgets. Es útil eliminar ciertos paneles que son irrelevantes para un cliente, o incluso para nuestro propio blog.</p>
<p>Colocar el siguiente código en functions.php</p>
<pre class="brush: php; title: ;">
function example_remove_dashboard_widgets() {
	// array global metaboxes array, contiene todos los widgets para  wp-admin
 	global $wp_meta_boxes;

	// Elimina el widget de &quot;incomming links&quot;
	unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);	

	// Elimina el widget &quot;right now
	unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
	unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
	unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}

// Hacemos un &quot;Hook&quot; o gancho a la acción 'wp_dashboard_setup' para registrar nuestra propia función
add_action('wp_dashboard_setup', 'example_remove_dashboard_widgets' );
</pre>
<p><strong>Crear nuestro propio widget para el escritorio o dashboard de WordPress</strong></p>
<p>Desde el ejemplo anterior hemos borrado widgets del escritorio, ahora bien, incluiremos uno nuestro con un mensaje de bienvenida o lo que se nos ocurra o nos solicite nuestro cliente.</p>
<p>Seguimos editando el archivo functions.php</p>
<pre class="brush: php; title: ;">
function example_dashboard_widget_function() {
	// Aquí mostramos lo que queramos o necesitemos
	echo &quot;Bienvenido al panel de control del blog&quot;;
} 

// Crea la función usando la accion de un &quot;hook&quot; o gancho
function example_add_dashboard_widgets() {
	wp_add_dashboard_widget('example_dashboard_widget', 'Ejemplo de Widget en Escritorio', 'example_dashboard_widget_function');
}
add_action('wp_dashboard_setup', 'example_add_dashboard_widgets' );
</pre>
<p><strong>Editar los estilos de panel de control</strong></p>
<p>Siempre se puede editar los estilos del escritorio de WordPress sin necesidad de editar los archivos del core, para ello se crea una función que simplemente añada las etiquetas de apertura y cierre de  &lt;style&gt; y dentro se van añadiendo las clases e identificadores de los estilos que queremos reemplazar con las propiedades que queremos.<br />
En el siguiente ejemplo se modifica el color gris de la cabecera por uno azulado.</p>
<p>Añadir el siguiente código en el archivo functions.php</p>
<pre class="brush: php; title: ;">
function custom_colors() {
   echo '&lt;style type=&quot;text/css&quot;&gt;#wphead{background:#069}&lt;/style&gt;';
}
add_action('admin_head', 'custom_colors');
</pre>
<p>Como se puede ver en este ejemplo sigue el mismo patrón que el punto 3, donde hemos cambiado el logo del escritorio. La función es muy básica un echo que pinta el html con nuevos estilos que &#8220;atacan&#8221; o sobre-escriben los que ya hay.</p>
<p><strong>Añadir mensajes de ayuda</strong></p>
<p>Se pueden incluir mensajes de ayuda cuando un usuario entra en un menú determinado, ofreciéndole información relevante sobre que puede hacer.<br />
Estos son los mensajes que aparecen en el menú desplegable, cuando se pulsa sobre la pestaña &#8220;Ayuda&#8221; que aparece en la cabecera de nuestro panel de control en WordPress.</p>
<pre class="brush: php; title: ;">
/**
        * Funcion que se encarga de modificar los textos de ayuda en el panel de control de wordpress.
        *
        * @param mixed $contextual_help, este es el texto de ayuda por defecto definido para una página en concreto.
        * Se hereda desde otras librerías de wordpress y contendrá un valor ya definido.
        * @param mixed $screen Esta es la página en la que estamos.
        *
        * @returns Siempre se devuelve el valor de $contextual_help. Puede que este no se sobreescriba cuando pase por el switch case, devolviendo su valor original.
        * Si la página en la que estamos, está incluida en el switch case, el valor de la variable $contextual_help se sobreescribe con lo que añadamos.
        *
        * @version 1.0 Pedro Ventura. Actualmente esta funcionando para la version de WP 3.0.3
        *
        */
        function paneles_ayuda($contextual_help, $screen)
        {
            switch($screen)
            {
                # poner este case para hacer pruebas, despues quitarlo para un entorno en produccion.
                case 'dashboard':
                    $contextual_help = 'Este mensaje de ayuda esta reemplanzando al que hay en la página principal del escritorio o dashboard';
                break;
                case PAGINA_EJEMPLO:
                    $contextual_help = 'Este es otro texto de ayuda para una nueva pagina del panel de control.';
                break;
            }
            return $contextual_help;
        }
        /**
        * Registramos la función paneles_ayuda, para la accion de contextual_help, que pinta los mensajes de ayuda del panel de control
        * Los dos siguientes valores indican lo siguiente:
        * 10 - Es la prioridad de la función. por defecto se suele usar 10.
        * 2 -Indica el número de parámetros que enviamos a la función registrada. Si se quita este valor dará un error de &quot;missing arguments&quot;
        * @link Para conocer más sobre la funcion add_action() de Wordpres visitar http://codex.wordpress.org/Function_Reference/add_action
        */
        add_action( 'contextual_help', 'paneles_ayuda',10,2 );
</pre>
<p><strong>Monitorizar los errores de de php</strong></p>
<p>Este hack esta muy bien para entornos de desarrollo, y pre-producción, de manera que se puede ir comprobando todos los errores de php que puede ir generando nuestra aplicación.</p>
<p>Al mostrar los errores de php, es obvio que una vez terminado el trabajo y se le entregue la plataforma al cliente, este widget habrá que quitarlo.</p>
<p>Como todas estas funciones se añade en el archivo functions.php<br />
La única modificación que hay que hacer es introducir el path completo al archivo de log que se va a revisar desde la variable $logfile y comprobar que se tenga permisos de lectura sobre el archivo de log.</p>
<pre class="brush: php; title: ;">
function slt_PHPErrorsWidget() {
	$logfile = '/home/path/logs/php-errors.log'; // Añadir el path completo a log de errores de apache
	$displayErrorsLimit = 100; // El numero máximo de lineas que se mostrarán en el widget
	$errorLengthLimit = 300; // El número máximo de caracteres que mostraremos por línea.
	$fileCleared = false;
	$userCanClearLog = current_user_can( 'manage_options' );
	// Clear file?
	if ( $userCanClearLog &amp;&amp; isset( $_GET[&quot;slt-php-errors&quot;] ) &amp;&amp; $_GET[&quot;slt-php-errors&quot;]==&quot;clear&quot; ) {
		$handle = fopen( $logfile, &quot;w&quot; );
		fclose( $handle );
		$fileCleared = true;
	}
	// Read file
	if ( file_exists( $logfile ) ) {
		$errors = file( $logfile );
		$errors = array_reverse( $errors );
		if ( $fileCleared ) echo '&lt;p&gt;&lt;em&gt;File cleared.&lt;/em&gt;&lt;/p&gt;';
		if ( $errors ) {
			echo '&lt;p&gt;'.count( $errors ).' error';
			if ( $errors != 1 ) echo 's';
			echo '.';
			if ( $userCanClearLog ) echo ' [ &lt;b&gt;&lt;a href=&quot;'.get_bloginfo(&quot;url&quot;).'/wp-admin/?slt-php-errors=clear&quot; onclick=&quot;return confirm(\'Are you sure?\');&quot;&gt;CLEAR LOG FILE&lt;/a&gt;&lt;/b&gt; ]';
			echo '&lt;/p&gt;';
			echo '&lt;div id=&quot;slt-php-errors&quot; style=&quot;height:250px;overflow:scroll;padding:2px;background-color:#faf9f7;border:1px solid #ccc;&quot;&gt;';
			echo '&lt;ol style=&quot;padding:0;margin:0;&quot;&gt;';
			$i = 0;
			foreach ( $errors as $error ) {
				echo '&lt;li style=&quot;padding:2px 4px 6px;border-bottom:1px solid #ececec;&quot;&gt;';
				$errorOutput = preg_replace( '/\[([^\]]+)\]/', '&lt;b&gt;[$1]&lt;/b&gt;', $error, 1 );
				if ( strlen( $errorOutput ) &gt; $errorLengthLimit ) {
					echo substr( $errorOutput, 0, $errorLengthLimit ).' [...]';
				} else {
					echo $errorOutput;
				}
				echo '&lt;/li&gt;';
				$i++;
				if ( $i &gt; $displayErrorsLimit ) {
					echo '&lt;li style=&quot;padding:2px;border-bottom:2px solid #ccc;&quot;&gt;&lt;em&gt;More than '.$displayErrorsLimit.' errors in log...&lt;/em&gt;&lt;/li&gt;';
					break;
				}
			}
			echo '&lt;/ol&gt;&lt;/div&gt;';
		} else {
			echo '&lt;p&gt;No errors currently logged.&lt;/p&gt;';
		}
	} else {
		echo '&lt;p&gt;&lt;em&gt;There was a problem reading the error log file.&lt;/em&gt;&lt;/p&gt;';
	}
}

// Add widgets
function slt_dashboardWidgets() {
	wp_add_dashboard_widget( 'slt-php-errors', 'PHP errors', 'slt_PHPErrorsWidget' );
}
add_action( 'wp_dashboard_setup', 'slt_dashboardWidgets' );
</pre>
<p><strong>Ocultar campos dependiendo del role del usuario</strong></p>
<p>Cuando se esta editando un artículo hay ciertos paneles que aparecen, entre ellos el campo de texto donde se escribe, las revisiones del artículo, el panel donde aparece el autor, el panel donde aparecen los campos personalizados,etc.. </p>
<p>Si tenemos un blog con diferentes tipos de roles, tales como administrador, autores, contribuidores,etc. Podemos ocultar el panel de campos personalizados para que no interfiera o confunda al otro usuarios.</p>
<p>De esta manera podemos añadir el siguiente código en functions.php para ocultar el panel de &#8220;campos personalizados&#8221; de la página de edición de un artículo para todos los usuarios.</p>
<pre class="brush: php; title: ;">

add_action('admin_init','customize_meta_boxes');

function customize_meta_boxes() {
     remove_meta_box('postcustom','post','normal');
}
</pre>
<p>Si lo que queremos es ocultar el panel de &#8220;campos personalizados&#8221; para usuarios con roles de autor o inferiores, añadimos el siguiente hook o gancho en el código, en functions.php</p>
<pre class="brush: php; title: ;">
//hook the admin init
add_action('admin_init','customize_meta_boxes');

function customize_meta_boxes() {
     //obtenemos la informacion del usuario
     global $current_user;
     get_currentuserinfo();

     //si el nivel actual del usuario es 3 o menos se elimina el campo &quot;postcustom&quot;, es decir &quot;Campos personalizados&quot;
     if ($current_user-&gt;user_level &lt; 3)
          remove_meta_box('postcustom','post','normal');
}
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> eliminar paneles en android, 10 trucos o hacks para personalizar wordpress, personalizar escritorio de wordpress, personalizar escritorio usuario wordpress, plantillas de escritorio android, poner mensajes en el escritorio de wordpress, pweronalizar dashboard de wp, quitar escritorio wordpress, subir archivos en dashboard, temas wordpress que no figure el autor</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/wordpress/personalizar-la-pagina-de-login-de-wordpress/' rel='bookmark' title='Personalizar la pagina de login de wordpress'>Personalizar la pagina de login de wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/truco-wordpress-anadir-widgets-al-pie-o-footer-de-tu-tema-de-wordpress/' rel='bookmark' title='Truco WordPress. Añadir widgets al pie o footer de tu tema de wordpress'>Truco WordPress. Añadir widgets al pie o footer de tu tema de wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/crear-y-usar-plantillas-para-paginas-de-wordpress/' rel='bookmark' title='Crear y usar plantillas para páginas de WordPress'>Crear y usar plantillas para páginas de WordPress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/seguridad-en-wordpress-elimina-el-meta-con-la-version-de-wordpress/' rel='bookmark' title='Seguridad en WordPress, elimina el meta con la version de wordpress'>Seguridad en WordPress, elimina el meta con la version de wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/mostrar-todos-los-post-wordpress-en-una-pagina/' rel='bookmark' title='Mostrar todos los post wordpress en una página'>Mostrar todos los post wordpress en una página</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/wordpress/10-trucos-o-hacks-para-personalizar-el-dashboard-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Guia rápida para Instalar y configurar un servidor samba.</title>
		<link>http://www.pedroventura.com/blog_programacion/linux/guia-rapida-para-instalar-y-configurar-un-servidor-samba/</link>
		<comments>http://www.pedroventura.com/blog_programacion/linux/guia-rapida-para-instalar-y-configurar-un-servidor-samba/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 16:23:31 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2195</guid>
		<description><![CDATA[Samba es la implementación de un código libre para la utilización del protocolo SMB (Server Message Block) el cual permite la compartición de archivos, impresoras y recursos en una red entre equipos Windows y Linux. Puertos samba: 134, 137, 445, 449 Puede usar tanto tcp como udp. Samba no es un sistema para estar en produccion. Es un sistema para estar en red, en una intranet. No deberia ponerse nunca en un sistema publico. Porque puede tener las vulnerabilidades de windows. Samba arrancará 2 demonios: smbd y nmbd smbd -> samba nmdb -> netbios Instarlar samba #yum install samba samba-client smbfs Arrancamos el servicio y comprobamos que todo ha ido ok. # /etc/init.d/smb start Iniciando servicios SMB: [ OK ] Iniciando servicios NMB: [ OK ] [root@pventura Server]# Hasta aquí todo nos tiene que haber resultado muy fácil y tiene que haber arrancado samba sin problema Crear usuarios para samba # smbpasswd -a usersamba1 New SMB password: Retype new SMB password: Added user usersamba1. Usamos el modificador -a para cree el usuario en el samba Conectamos al servidor samba [usersamba1@pventura samba]$ smbclient -L 127.0.0.1 Password: Domain=[PVENTURA] OS=[Unix] Server=[Samba 3.0.28-0.el5.8] Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/instalar-controladora-para-tarjeta-grafica-nvidia-en-fedora/' rel='bookmark' title='Instalar controladora para tarjeta grafica Nvidia en Fedora'>Instalar controladora para tarjeta grafica Nvidia en Fedora</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-instalar-memcached-guia-de-instalacion-y-uso-de-memcached/' rel='bookmark' title='Como instalar memcached. Guía de instalación y uso de memcached'>Como instalar memcached. Guía de instalación y uso de memcached</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/pautas-y-consejos-para-comparar-y-elegir-un-servidor-dedicado/' rel='bookmark' title='pautas y consejos para comparar y elegir un servidor dedicado'>pautas y consejos para comparar y elegir un servidor dedicado</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-configurar-la-red-de-ubuntu-debian-desde-la-consola/' rel='bookmark' title='Como configurar la red de Ubuntu / Debian desde la consola'>Como configurar la red de Ubuntu / Debian desde la consola</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/sysadmin/configurando-y-optimizando-un-servidor-log-slow-queries/' rel='bookmark' title='Configurando y Optimizando un servidor. log slow queries'>Configurando y Optimizando un servidor. log slow queries</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Samba es la implementación de un código libre para la utilización del protocolo SMB (Server Message Block) el cual permite la compartición de archivos, impresoras y recursos en una red entre equipos Windows y Linux.</p>
<p>Puertos samba: 134, 137, 445, 449<br />
Puede usar tanto tcp como udp.</p>
<p>Samba no es un sistema para estar en produccion. Es un sistema para estar en red, en una  intranet. No deberia ponerse nunca en un sistema publico. Porque puede tener las vulnerabilidades de windows.</p>
<p>Samba arrancará  2 demonios: smbd y nmbd<br />
smbd -> samba<br />
nmdb -> netbios</p>
<p><strong>Instarlar samba</strong></p>
<pre class="brush: plain; title: ;">
#yum install samba samba-client smbfs
</pre>
<p>Arrancamos el servicio y comprobamos que todo ha ido ok.</p>
<pre class="brush: plain; title: ;">
# /etc/init.d/smb start
Iniciando servicios SMB:                                   [  OK  ]
Iniciando servicios NMB:                                   [  OK  ]
[root@pventura Server]#
</pre>
<p>Hasta aquí todo nos tiene que haber resultado muy fácil y tiene que haber arrancado samba sin problema</p>
<p><strong>Crear usuarios para samba</strong></p>
<pre class="brush: plain; title: ;">
# smbpasswd -a usersamba1
New SMB password:
Retype new SMB password:
Added user usersamba1.
</pre>
<p>Usamos el modificador -a para cree el usuario en el samba</p>
<p><strong>Conectamos al servidor samba</strong></p>
<pre class="brush: plain; title: ;">
[usersamba1@pventura samba]$ smbclient -L 127.0.0.1
Password:
Domain=[PVENTURA] OS=[Unix] Server=[Samba 3.0.28-0.el5.8]

        Sharename       Type      Comment
        ---------       ----      -------
        IPC$            IPC       IPC Service (Samba Server Version 3.0.28-0.el5.8)
        usersamba1      Disk      Home Directories
Domain=[PVENTURA] OS=[Unix] Server=[Samba 3.0.28-0.el5.8]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
        MYGROUP              MIEMBRO2
</pre>
<p>smbclient -L 127.0.0.1 -U usersamba &#8211;> con el modificador -U USUARIO podemos conectar con un determinado servidor desde otro</p>
<p><strong>Crear recursos</strong></p>
<p>Tendremos que editar el fichero  /etc/samba/smb.conf<br />
Al final de éste añadimos los recursos compartidos</p>
<pre class="brush: plain; title: ;">
[CompartidoPedro]
        comment = Esta es mi carpeta compartida de prueba
        browseable = yes
        path = /var/compartido_pedro
        writable = yes
        valid users = usersamba1
</pre>
<p>Desde nuestro windows accedemos a la ip del servidor \\192.168.1.100, nos aparece la carpeta que hemos compartido en /var/compartido_pedro  y podemos escribir dentro</p>
<p><strong>Crear recurso compartido cdrom y pendrive</strong><br />
Montamos un cdrom para compartirlo con el resto de usuarios</p>
<pre class="brush: plain; title: ;">
[cdrom]
        comment = cdrom de linux
        path = /media
        read only = yes
        browseable = yes

        root preexec = /bin/mount -t iso9660 /dev/hdc  /media/cdrom ----&gt; lo montamos desde el usuario root para que tenga privilegios
        root postexec = /bin/unmount   /media/cdrom ---&gt; cuando se desmonta una unidad o se pone el punto de montaje o el dispositivo
</pre>
<p>Ahora montamos un pendrive</p>
<pre class="brush: plain; title: ;">
[pendrive]
        comment = pendrive linux
        path = /media/pendrive
        writable = yes
        browseable = yes

        root preexec = /bin/mount -t ext3 /dev/hsda  /media/pendrive
        root postexec = /bin/unmount   /media/pendrive
</pre>
<p>Reiniciamos el servicio para que surtan efecto los cambios</p>
<pre class="brush: plain; title: ;">
/etc/init.d/samba restart
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> como instalar nmb en linux, guia samba, configurar usuarios samba pdf, configurar samba fedora, configurar samba en fedora pdf, Configurar samba android, configurar samba 2011, configuracion rapida samba fedora, configuracion rapida para samba, servidor samba android</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/instalar-controladora-para-tarjeta-grafica-nvidia-en-fedora/' rel='bookmark' title='Instalar controladora para tarjeta grafica Nvidia en Fedora'>Instalar controladora para tarjeta grafica Nvidia en Fedora</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-instalar-memcached-guia-de-instalacion-y-uso-de-memcached/' rel='bookmark' title='Como instalar memcached. Guía de instalación y uso de memcached'>Como instalar memcached. Guía de instalación y uso de memcached</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/pautas-y-consejos-para-comparar-y-elegir-un-servidor-dedicado/' rel='bookmark' title='pautas y consejos para comparar y elegir un servidor dedicado'>pautas y consejos para comparar y elegir un servidor dedicado</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/como-configurar-la-red-de-ubuntu-debian-desde-la-consola/' rel='bookmark' title='Como configurar la red de Ubuntu / Debian desde la consola'>Como configurar la red de Ubuntu / Debian desde la consola</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/sysadmin/configurando-y-optimizando-un-servidor-log-slow-queries/' rel='bookmark' title='Configurando y Optimizando un servidor. log slow queries'>Configurando y Optimizando un servidor. log slow queries</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/linux/guia-rapida-para-instalar-y-configurar-un-servidor-samba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced
Database Caching 72/222 queries in 1.737 seconds using disk: basic
Object Caching 3753/4050 objects using disk: basic
Content Delivery Network via Amazon Web Services: S3: blogpv2011.s3.amazonaws.com

Served from: www.pedroventura.com @ 2012-02-06 21:42:01 -->
