<?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>JaLeRu Blog &#187; Tutorial</title>
	<atom:link href="http://jestudio.cl/blog/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://jestudio.cl/blog</link>
	<description></description>
	<lastBuildDate>Mon, 17 Jan 2011 22:16:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Tutorial: PHP, SQL y Bases de Datos</title>
		<link>http://jestudio.cl/blog/php-sql-y-bases-de-datos/</link>
		<comments>http://jestudio.cl/blog/php-sql-y-bases-de-datos/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 19:45:27 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Datos]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=704</guid>
		<description><![CDATA[A la hora de hacer grandes proyectos en PHP necesitaremos almacenar y tener clasificados muchos datos en algún lugar. Las Cookies solo nos sirven para almacenar datos temporalmente, y solo es visible para el visitante. Guardar la información en archivos de texto por otro lado resultaría imposible de leer en caso de que tuviéramos muchos [...]]]></description>
			<content:encoded><![CDATA[<p>A la hora de hacer grandes proyectos en PHP necesitaremos almacenar y tener <a href="http://www.mundoanuncio.cl/">clasificados</a> muchos datos en algún lugar. Las Cookies solo nos sirven para almacenar datos temporalmente, y solo es visible para el visitante. Guardar la información en archivos de texto por otro lado resultaría imposible de leer en caso de que tuviéramos muchos datos, sin contar que la seguridad de estos datos seria muy mala.<br />
Para facilitar el almacenamiento de información existen las <strong>Bases de Datos</strong>.</p>
<h2>¿Que son las Bases de Datos?</h2>
<p>Son espacios donde se pueden guardar en formato de tablas grandes cantidades de datos. Las Bases de Datos se ordenan de la siguiente Manera:</p>
<div id="attachment_708" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-708" title="BasesDeDatos" src="http://jestudio.cl/blog/wp-content/uploads/2009/11/BasesDedatos.jpg" alt="Bases De Datis" width="500" height="190" /><p class="wp-caption-text">Bases De Datos</p></div>
<p>Cada Base de Datos cuenta con una serie de tablas y cada tabla tiene diferentes campos<em> (fields)</em> y a su vez estos campo tiene propiedades y valores.  Le llamaremos <strong>Registro</strong> a este conjunto de campos que conforman una tabla.<br />
De esta manera si visualizamos una Tabla de una Base de Datos la veríamos así.</p>
<p></br><br />
</br></p>
<table border="1" >
<tbody>
<tr>
<td></td>
<td>Campo1</td>
<td>Campo2</td>
<td>Campo3</td>
</tr>
<tr>
<td>1 Registro</td>
<td>Valor</td>
<td>Valor</td>
<td>Valor</td>
</tr>
<tr>
<td>2 Registro</td>
<td>Valor</td>
<td>Valor</td>
<td>Valor</td>
</tr>
</tbody>
</table>
<p></br><br />
De esta manera cada vez que insertemos datos dentro de una tabla se irá creando una nueva columna con los datos. Por ejemplo si tuviésemos una tabla que guardara el nombre, el apellido y la edad de distintas personas la visualizaríamos así luego de que 3 personas hallan ingresado sus datos:</p>
<p></br><br />
</br></p>
<table border="1">
<tbody>
<tr>
<td></td>
<td>Nombre</td>
<td>Apellido</td>
<td>Edad</td>
</tr>
<tr>
<td>1º</td>
<td>Javier</td>
<td>Letelier</td>
<td>17</td>
</tr>
<tr>
<td>2º</td>
<td>Jaime</td>
<td>Ruiz</td>
<td>52</td>
</tr>
<tr>
<td>3º</td>
<td>Pedro</td>
<td>Troemel</td>
<td>26</td>
</tr>
</tbody>
</table>
<p></br></br></p>
<h2>Tipos de Bases de datos:</h2>
<p>Existen diferentes tipos de Bases de datos, entre estos podemos destacar:</p>
<ul>
<li> Oracle</li>
<li> Mysql</li>
<li> MS SQL Server</li>
<li> Acces</li>
</ul>
<p>Cada una con sus ventajas y desventajas.</p>
<h2>Diseñar Bases de Datos:</h2>
<p>Al momento de idear como estará ordenada nuestra base de datos, cuantas tablas, cuantos campos o para que usaremos tablas y no campos etc&#8230; deberemos intentar hacerlo de la mejor manera y es aquí donde más tiempo le debemos dar antes de comenzar cualquier proyecto. La Base de Datos debe ser ordenada y estar pensada para poder acceder a los datos de la manera más cómoda posible. Pensando bien una base de datos desde un principio nos ahorraremos problemas luego.<br />
</br></br><br />
En fin una Base de Datos nos puede ser de gran utilidad al momento de hacer paginas web mucho más dinámicas y ahorrarnos un montón de trabajo.<br />
</br></br></p>
<h2>SQL</h2>
<p>Si bien ahora sabemos que es una base de Datos debemos aprender como ingresar datos a esta y manejarlos. Para la interacción con Bases de Datos usamos el Lenguaje SQL<em> (Lenguaje de Consultas Estructurado o Structured Query Lenguage)</em>. Este lenguaje es Estándar por ello es soportado por casi todos los tipos de bases de datos.</p>
<p>SQL como dice su nombre funciona a través de Consultas o Querys que no son más que ordenes o preguntas que se le dan a una Base de Datos para que agregue datos o nos los dé.</p>
<h2>Funciones Básicas de SQL:</h2>
<p></br></br><br />
<strong>Crear Base de datos:</strong></p>
<p><code>CREATE DATABASE nombrebase;</code></p>
<p><cite>Ocuparemos mayúsculas para denotar cuales son las palabras claves de el lenguaje, y minúsculas para las variables y datos ingresados.  Pero realmente no importa por que SQL no distingue entre mayúsculas y minúsculas, pero si es una buena practica para facilitar la lectura.</cite><br />
</br></br><br />
<strong>Borrar Base de Datos:</strong></p>
<p>Una vez creada una base de datos podremos borrarla con todas sus tablas e información.</p>
<p><code>DROP DATABASE nombrebase;</code></p>
<p><strong>Usar Base de Datos:</strong></p>
<p>Cuando queramos trabajar con alguna base primero deberemos especificar en cual, para ello usamos:<br />
<code>USE nombrebase;</code></p>
<p>de ahí en adelante todo lo que escribamos será aplicado sobre la Base de datos <strong><em>&#8220;nombrebase&#8221;</em></strong>.<br />
</br></br><br />
<strong>Crear Tablas:</strong></p>
<p>Antes de leer el siguiente código, te aviso que no debes asustarte a pesar de que se ve algo más complicado es bastante simple.<br />
<code><br />
CREATE TABLE nombretabla ( campo1 int(6) auto_increment, campo2 varchar(50)  NOT NULL, campo3 varchar(4) NULL, PRIMARY KEY (campo1) );</code></p>
<p>Esto creará una Tabla dentro de de la base anteriormente especificada con USE, esta tabla tendrá los campos:</p>
<ul>
<li><strong>campo1</strong>, que soportara datos enteros <em>(int) </em>de 6 caracteres y se auto-incrementará lo que quiere decir que es un campo que se completa solo con un valor que aumenta a medida que más datos se ingresen.</li>
<li><strong>campo2 </strong>que soporta texto de máximo 50 caracteres y no puede estar vacía (no puede ser nula)</li>
<li><strong>campo3 </strong>que puede ser nulo, y que soporta una cadena de texto de máximo 4 caracteres.</li>
</ul>
<p>Además se especifica que el campo1 sera la clave primaria, lo que quiere decir que es campo que encabeza esa tabla.<br />
</br></br><br />
<strong>Insertar datos en una tabla (Crear un Registro):</strong></p>
<p>Al insertar datos en una tabla nos crea un nuevo registro, que seria como una nueva fila en la tabla. Siendo cada columna un campo. Como en el ejemplo del principio donde 1º, Javier, Letelier 17 era un Registro y 2º,  Jaime Ruiz, 52 era otro.<br />
<code><br />
INSERT INTO nombretabla (campo1, campo2, campo3) VALUES ('valor_campo1','valor_campo2','valor_campo3');<br />
</code><br />
Como vemos los datos se agregan primero especificando la tabla y los campos a rellenar en orden. Luego los valores de cada campo en el mismo orden. En caso de que esta tabla fuese la misma del ejemplo anterior, no sería necesario rellenar el campo1 ya que es de auto-incremento y se podría omitir al igual que el campo3 que puede ser nulo.<br />
</br></br><br />
<strong>Borrar una tabla:</strong></p>
<p>Casi igual que para borrar Bases de datos.<br />
<code>DROP TABLE nombretable;</code><br />
</br></br><br />
<strong>Consultar:</strong></p>
<p>Luego de que tenemos todos nuestros datos guardados en una tabla lo más seguro es que luego necesito consultarle a la tabla cuales son los datos que esta tiene para esto tenemos diferentes formas.<br />
</br></br><br />
<strong>Seleccionar:</strong></p>
<p><code>SELECT campo1, campo2 FROM nombretabla;</code></p>
<p>Esto nos devolverá todos los datos ingresados en los campos campo1 y campo2 de la tabla nombretabla</p>
<p>Si quisiéramos que nos mostrase TODOS los campos podemos usar el comodín<strong> *</strong></p>
<p><code>SELECT * FROM nombretabla;</code></p>
<p>lo que nos devolvería todos los datos ingresados en todos los campos.</p>
<p>así mismo podemos filtrar las búsquedas para que nos devuelven campos que cumplan ciertas condiciones.</p>
<p><code>SELECT * FROM nombretabla WHERE campo1="Condición";</code></p>
<p>Esta consulta nos dará como resultado todos los datos de cualquier campo de la tabla<strong> nombretabla</strong> que cumplan la condición de que su campo1 tenga el valor <strong>Condición</strong></p>
<p>También se puede usar la palabra LIKE para encontrar resultados que no sean idénticos a lo pedido, si no que solo lo contengan.<br />
<code>SELECT *  FROM nombretabla WHERE campo1 LIKE  "%plo%";</code></p>
<p>como vemos usamos el signo %, que sirve para indicar un &#8220;comodín&#8221; lo que quiere decir que si ponemos un % antes de la condición se encontraran todos los que terminen en la condición. Si lo tiene al final todas las que comiencen, y si la tiene a los dos lados, no importa donde se encuentre.<br />
Por ejemplo:<br />
%plo% nos devolvería cualquier campo1 que contenga cosas como palabra &#8220;Plomero, Ejemplo, aplomar&#8221; etc..<br />
si fuera %plo, solo nos encontraria &#8220;Ejemplo, Templo, Contemplo&#8221;, si fuese plo% nos encontraría solo los que tuviesen &#8220;Plomero, Plomo&#8221; y por ultimo si fuese a%to% nos encontraria palabras como &#8220;Anatomico, Atomico, Atontado, Amatorio, Ato&#8221;<br />
</br></br><br />
<strong>Borrar datos de una tabla (Borrar un Registro) </strong></p>
<p>Para<strong> </strong>borrar un registro ocupamos DELETE, como vemos debemos especificar que borrar para ello ocupamos una condición.Aquí es cuando los campo &#8220;Auto-increment&#8221; comienzan a ser muy útiles, ya que siempre estos campos tendrán un valor único (Ningún registro más que el mismo tendrán ese numero que se da por el orden en que fueron ingresados) Así podremos borrar un registro especifico.</p>
<p><code>DELETE FROM nombretabla WHERE campo1="Condición";</code></p>
<p>Y para borrar uno especifico:<br />
<code>DELETE FROM nombretabla WHERE campoautoincrement=2;</code></p>
<p>De esta manera nos borrara el registro numero 2.<br />
</br></br><br />
<strong>Actualización y edición de datos (Edición de un registro)</strong>:</p>
<p>Cuando necesitemos actualizar los datos de algun registro, por ejemplo por que alguien cambio su numero de telefono, o desea cambiar su avatar necesitaremos cambiar ese registro.<br />
<code>UPDATE nombretabla SET campo1 = "Nuevo valor", campo2 = "Nuevo valor2" WHERE campo1="Condición";</code></p>
<p>Al igual que al borrar datos, nos será muy util usar campos de auto incremento para reconocer registros únicos. Por ejemplo ocupando nuevamente la tabla del ejemplo de las Bases de Datos si quisiéramos cambiar la edad de Pedro podríamos usar:<br />
<code><br />
UPDATE nombretabla SET edad="27" WHERE nombre="Pedro";</code><br />
y para evitar que podamos cambiar tal vez la edad de otra persona también llamada Pedro seria mejor usar:<br />
<code>UPDATE nombretabla SET edad="27" WHERE id="3";</code></p>
<h2>PHP y SQL</h2>
<p>Por fin! ahora podremos desde PHP modificar, crear, actualizar, etc&#8230; nuestras bases de datos.<br />
A pesar de que PHP soporta conexión con la gran mayoría de los tipos de bases de datos nosotros hablaremos solo de la conexión con las de tipo MySQL, pero no te sientas tan excluido si no es la que usas tu. Ya que la manera de usarlas es prácticamente igual cambiando tal vez una que otra palabra, busca en Google cuales serian los reemplazos de las funciones.  Por ejemplo una función para conectarse a SyBase es <strong>sybase_connect(</strong>) mientras que la de Mysql es <strong>mysql_connect();</strong> como vez no es muy grande la diferencia.<br />
</br></br><br />
<strong>Conectarnos al Servidor</strong></p>
<p>Antes que nada debemos conectarnos al servidor para poder realizar cualquier modificación de nuestra base de datos.<br />
<code>mysql_connect("Servidor","usuario","contraseña");<br />
</code><br />
pero es importante que deberemos dejar la conexión dentro de una variable para poder despues usarla con mayor facilidad.<br />
<code><br />
$conexion=mysql_connect("localhost","myuser","mypass");<br />
</code><br />
<strong> </strong><br />
</br></br><br />
<strong>Desconectandonos del Servidor</strong></p>
<p>Una vez que hayamos hecho todo lo que necesitábamos deberemos desconectarnos del Servidor, para ello usaremos la funciona <strong>mysql_close()</strong> dándole como valor nuestra conexión.<br />
<code><br />
$conexion=mysql_connect("localhost","myuser","mypass");<br />
mysql_close($conexion);<br />
</code><br />
<strong> </strong><br />
</br></br><br />
<strong>Seleccionar Base de Datos.</strong><br />
Es común que se tengan más de una base de datos, por ello deberemos luego seleccionar cual es la base de datos con la cual trabajaremos. Usaremos la función <strong>mysql_select_db() </strong>y se le dan como valores el nombre de la base de datos y la conexión a la base de datos.<br />
<code><br />
$conexion=mysql_connect("localhost","myuser","mypass");<br />
mysql_select_db("nombreBaseDeDatos",$conexion);<br />
mysql_close($conexion);<br />
</code><br />
<strong> </strong><br />
</br></br><br />
<strong>Realizar una consulta</strong></p>
<p>Ahora lo más importante, como realizar cualquier clase de consulta a través de PHP.<br />
Para ello usaremos la función <strong>mysql_query() </strong>y le daremos como valores la consulta misma en SQL y la conexión.<br />
Siempre que esperemos resultados de nuestra consulta deberemos almacenarla en una variable, para después poder acceder a los resultados.<br />
<code><br />
$conexion=mysql_connect("localhost","myuser","mypass");<br />
mysql_select_db("nombreBaseDeDatos",$conexion);<br />
$resultados = mysql_query("SELECT * FROM nombretabla WHERE campo1='condición';",$conexion);<br />
mysql_close($conexion);</code><br />
</br></br><br />
<strong>Obtener datos de la consulta:</strong></p>
<p>Muchas veces nuestras consultas nos darán respuestas, ya sean tablas completas o numero de resultados para ello contamos con las siguientes funciones.</p>
<p><strong>mysql_num_rows(<em>$resultados</em>); </strong> Nos dará el numero de registros obtenidos por nuestra consulta.</p>
<p><strong>mysql_result($resultado, <em>registro</em>, <em>campo</em>);</strong> Nos dará el valor que tenga el campo de un registro. Su uso es colocando números por ejemplo si ocupamos <em>mysql_result($resultado, 2,4)</em> nos dara el valor del campo que esta en la posición numero<strong> 5<em> </em></strong><em>(4+1) </em>de el registro encontrado numero <strong>3</strong><em> (2+1) </em>.<br />
</br><br />
Bueno existen muchas otras funciones que nos permitirán ver los datos en forma de Arrays, saber los nombres de los campos, tipos de datos, crear o borrar Bases etc&#8230; Les dejare aquí una pequeña lista sin especificar mucho como se usan, pero de seguro realizando una búsqueda en Google de dicha función encontraran la manera correcta de usarla.</p>
<ul>
<li><strong>mysql_fetch_array(<em>$resultado</em>)</strong> = Crea un array con los resultados.</li>
<li><strong>mysql_field_name(<em>$resultado</em>, <em>campo</em>)</strong> = Nos da el nombre de un campo.</li>
<li><strong>mysql_field_type(<em>$resultado</em>, <em>campo</em>)</strong> = Nos da el tipo de dato que almacena el campo.</li>
<li><strong>mysql_errno()</strong> = Numero del ultimo error dado.</li>
<li><strong>mysql_error() </strong>= Nos da el ultimo mensaje de error dado.</li>
<li><strong>mysql_create_db(<em>&#8220;NombreBaseNueva&#8221;</em>, <em>$conexion</em>) </strong>= Crea una nueva base de datos.</li>
<li><strong>mysql_drop_db(<em>&#8220;Nombrebase&#8221;</em>,<em>$conexion</em>) </strong>= Borra una base.</li>
<li><strong>mysql_free_result(<em>$resultados</em>)</strong>= Libera la memoria de resultados.</li>
</ul>
<p></br></br><br />
Espero que esto haya sido de utilidad, realmente este tutorial no es más que una pincelada de lo mucho que se puede aprender. Con esto entenderán las bases, pero aun queda mucho por aprender. Busca en Google y documentate. </p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/php-sql-y-bases-de-datos/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Uso de la propiedad Float y Clear [CSS]</title>
		<link>http://jestudio.cl/blog/uso-de-la-propiedad-float-y-clear-css/</link>
		<comments>http://jestudio.cl/blog/uso-de-la-propiedad-float-y-clear-css/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 17:05:23 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Clear]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Float]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Propiedades]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=546</guid>
		<description><![CDATA[Al momento de diseñar nuestra pagina web, las propiedades más importante que debemos aprender para poder lograr casi todas las formas posibles es Float y Clear. Ambas se trabajan juntas, pues una sirve para complementar a la otra. Float: Float en simples palabras es una propiedad de CSS que nos permite &#8220;hacer flotar&#8221; un elemento [...]]]></description>
			<content:encoded><![CDATA[<p>Al momento de diseñar nuestra pagina web, las propiedades más importante que debemos aprender para poder lograr casi todas las formas posibles es <strong>Float</strong> y <strong>Clear</strong>.<br />
Ambas se trabajan juntas, pues una sirve para complementar a la otra.</p>
<h2>Float:</h2>
<p><strong>Float</strong> en simples palabras es una propiedad de CSS que nos permite <em>&#8220;hacer flotar&#8221;</em> un elemento a una posición relativa rompiendo el esquema normal de la pagina.<br />
Nos permitirá con facilidad crear paginas con 2 o más columnas, entre muchas otras cosas.</p>
<p>Esta propiedad tiene 3 valores importantes:</p>
<ul>
<li><strong>Left:</strong> Flota el elemento a la Izquierda.</li>
<li><strong>Right:</strong> Flota el elemento a la Derecha</li>
<li><strong>None:</strong> Que el elemento no Flota.</li>
</ul>
<p>Ahora veremos una serie de ejemplos.</p>
<p>Primero debemos tener dos archivos, el HTML y EL CSS:<br />
EL HTML sera así:</p>
<pre>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt;
&lt;title&gt;Aprendiendo Float y Clear&lt;/title&gt;
&lt;link href="style.css" type="text/css" rel="stylesheet"/&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="box"&gt;1&lt;/div&gt;
&lt;div class="box"&gt;2&lt;/div&gt;
&lt;div class="box"&gt;3&lt;/div&gt;
&lt;div class="box"&gt;4&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Al archivo html lo podremos llamar como queramos, en él simplemente se encuentran 4 <strong>divs</strong> con un numero dentro y<strong></strong> la clase <strong>Box</strong> asignada a ellos.</p>
<p>Luego nuestro archivo CSS que deberá llamarse <strong>style.css</strong> y estar en la misma carpeta que el html.</p>
<pre>.box{
width:200px;
height:200px;
background:#999;
float:left;
border:1px solid #444;
}</pre>
<p>Como vemos le he dado ciertas propiedades como <strong>tamaño</strong>, <strong>color </strong>y un <strong>borde</strong>. Solo para reconocer mejor cada div.</p>
<p>Con este codigo nuestros divs se verían así:<br />
<img class="size-full wp-image-551" title="Float Example1" src="http://jestudio.cl/blog/wp-content/uploads/2009/01/float1.jpg" alt="Float Example1" width="500" height="130" /></p>
<p>Como vemos el primer div flota a la izquierda y luego los otros intentan lo mismo, quedando al lado en orden.</p>
<p>Así mismo, si en vez de tener <strong><em>float:left</em> </strong>lo cambiamos a <em><strong>float:right</strong></em> veríamos todo de la siguiente manera:</p>
<p><img class="size-full wp-image-553" title="Float Example 2" src="http://jestudio.cl/blog/wp-content/uploads/2009/01/float3.jpg" alt="Float Example 2" width="500" height="130" /></p>
<p>Como vemos los objetos <em>&#8220;cambiaron sentido&#8221;</em> el primer div se fue a la derecha y así los demás se fueron poniendo a su lado en orden.</p>
<p>Para que noten la utilidad y el cambio, veremos como sería <strong>sin</strong> la propiedad float.</p>
<p><img class="size-full wp-image-554" title="Float Example 3" src="http://jestudio.cl/blog/wp-content/uploads/2009/01/float2.jpg" alt="Float Example 3" width="100" height="357" /></p>
<p>Como se puede ver los objetos no flotan por lo tanto simplemente van quedando uno abajo de otro.<br />
Con float podremos lograr paginas y diseños de varias columnas.</p>
<p>Pero surge un problema, cuando el tamaño de la pantalla es menor a lo que ocupan nuestros objetos estos se irán corriendo para abajo de la siguiente manera:</p>
<p><img class="size-full wp-image-555" title="Float Example 4" src="http://jestudio.cl/blog/wp-content/uploads/2009/01/float4.jpg" alt="Float Example 4" width="400" height="405" /></p>
<p>Este problema se puede solucionar encerrando a todos estos divs dentro de otro que tenga un tamaño igual o mayor al que ocupan todos los divs en linea. Por ejemplo para corregir este error en mi ejemplo deberíamos encerrarlos en un div con un <strong>width:808px;</strong> <em>(Contando que cada uno mide 200px más 2px de borde y son 4)</em></p>
<p>Pero puede ocurrir lo contrario, que queramos que se vea como en la imagen anterior pero al agrandar la resolución de pantalla nuestro diseño se deforme y se forme una linea como en la primera imagen. Para eso tenemos <strong>Clear</strong>.</p>
<h2>Clear:</h2>
<p>Clear es la propiedad que sirve para &#8220;romper&#8221; el esquema que estaba formando float.<br />
Como vimos por cada objeto que contenga la propiedad float se irán agrupando a su lado uno tras otro sin interrupción al menos que el tamaño de su contenedor sea menor.  Al colocarse <strong>clear </strong>a un objeto le decimos que actúe como si fuese el primero objeto en tener la propiedad<strong> float</strong> pero en la siguiente linea, y así el esquema anterior se rompe y comienza uno nuevo de ahí para abajo.<br />
Puede tener los siguientes valor:</p>
<ul>
<li><strong>Left</strong>: Se rompe el esquema de orden para los elementos con &#8220;Float:left&#8221;</li>
<li><strong>Right: </strong>Se rompe el esquema de orden para los elementos &#8220;Float:right&#8221;</li>
<li><strong>Both: </strong>Se rompe el esquema de orden para los elementos con cualquier float, ya sea right o left.</li>
</ul>
<p>Por ejemplo si en nuestro HTML al tercer div le cambiamos su id a <strong>box2</strong> y agregamos al css:</p>
<pre>.box2{
width:200px;
height:200px;
background:#999;
clear:left;
float:left;
border:1px solid #444;
}</pre>
<p>Con esto, sin importar cuanto agrandemos la pantalla nuestra web se vería así.</p>
<p><img class="size-full wp-image-555" title="Float Example 4" src="http://jestudio.cl/blog/wp-content/uploads/2009/01/float4.jpg" alt="Float Example 4" width="400" height="405" /></p>
<p>Con float y Clear podremos crear muchas formas de paginas, aquí algunos ejemplos.</p>
<p><img class="size-full wp-image-556" title="Float Example 5" src="http://jestudio.cl/blog/wp-content/uploads/2009/01/float5.jpg" alt="Float Example 5" width="500" height="311" /></p>
<p>Espero que les sea de utilidad. Para cualquier duda, comenten.</p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/uso-de-la-propiedad-float-y-clear-css/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Programación en Batch 3º Parte.</title>
		<link>http://jestudio.cl/blog/programacion-en-batch-3%c2%ba-parte/</link>
		<comments>http://jestudio.cl/blog/programacion-en-batch-3%c2%ba-parte/#comments</comments>
		<pubDate>Mon, 19 May 2008 20:24:54 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Tip]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Winamp]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=91</guid>
		<description><![CDATA[Antes de leer esto deberías ya saber algo de Batch, tal vez te sirva leer la primera y segunda parte. Si sigo así tendré que escribir un libro. xD En esta tercera parte, sera básicamente de técnicas y tips. Nuestro indice sera: Abrir archivos con Borrar de agrandes cantidades Mover o Copiar de a grandes [...]]]></description>
			<content:encoded><![CDATA[<p><important>Antes de leer esto deberías ya saber algo de Batch, tal vez te sirva leer la <a title="Batch 1º Parte" href="http://jestudio.cl/blog/programacion-en-batch-1%c2%ba-parte/">primera</a> y <a title="Batch 2º Parte" href="http://jestudio.cl/blog/programacion-en-batch-2-parte/">segunda parte</a>.</important><br />
Si sigo así tendré que escribir un libro. xD</p>
<p>En esta tercera parte, sera básicamente de técnicas y tips. Nuestro indice sera:</p>
<ul>
<li> Abrir archivos con</li>
<li> Borrar de agrandes cantidades</li>
<li> Mover o Copiar de a grandes cantidades</li>
<li> Crear listas de reproducción (Para Winamp)</li>
</ul>
<h2><strong>Abrir Archivos Con:</strong></h2>
<p>Como algunos saben al hacer clic en un archivo la mayoría de las veces nos muestra la opción <em><strong>Abrir Con</strong></em><strong>.</strong></p>
<p>Este tip es especial para archivos que necesitamos abrir y no podemos ingresar a la carpeta, para archivos que no tienen la opciones de Abrir Con, y también para los que tienen computadoras lentas que al apretar esta opción demoran mucho en mostrarla.</p>
<p>Como hablamos en los tutoriales anteriores con la función <strong>start </strong>iniciamos procesos, por lo que por eso haremos lo siguiente.</p>
<pre>start archivo programa.exe</pre>
<p>o también.</p>
<pre>start programa.exe archivo</pre>
<p>Ambas dos funcionan igual. Lo que hacemos es elegir un programa, y un archivo de manera que el programa abrirá al archivo dado. Como un ejemplo simple, abramos la carpeta C:/WINDOWS con el explorer.</p>
<pre>start C:/WINDOWS explorer.exe</pre>
<p>Para algunos archivos (Los que tiene direcciones y nombres con espacios) deberemos encerrarlos en comillas.</p>
<pre>start "C:\Carpeta con Espacios\Archivo con Espacios.txt" notepad.exe</pre>
<p>Como en este ejemplo donde abrimos un texto con Notepad (Bloc de Notas).</p>
<p>De esta manera podemos abrir cualquier archivo o carpeta solo sabiendo su dirección.</p>
<p>Aqui una pequeña lista de programas, para que sepan sus &#8220;nombres&#8221;.</p>
<ul>
<li>explorer.exe -&gt; Explorer (El para ver las carpetas)</li>
<li>iexplorer.exe -&gt; Internet Explorer</li>
<li>firefox.exe -&gt; Firefox  (Abrir webs con:<em><strong> start firefox.exe www.jestudio.cl</strong></em>)</li>
<li>wmplayer.exe -&gt; Reproductor de Musica Windows Media Player</li>
<li>winamap.exe -&gt; Reproductor de Musica Winamp player.</li>
<li>mspaint.exe -&gt; Paint</li>
<li>cmd.exe -&gt; Shell de comandos</li>
<li>notepad.exe -&gt; Bloc de notas</li>
<li>photoshop.exe -&gt; Photoshop</li>
</ul>
<p>Entre muchos otros, para saber como se &#8220;llama&#8221; un programa podemos ver en la pestaña<em> procesos</em> de el administrador de tareas mientras el programa este abierto(CTRL+ALT+SUPR, o CRTL+ALT+DEL).<br />
Además muchas veces podemos simplemente adivinar su nombre.</p>
<h2><strong>Borrar de Agrandes Cantidades:</strong></h2>
<p>A mi me a pasado muchas veces que me han quedado carpetas infectadas de archivos inútiles y he comenzado a borrarlos uno por uno. Cuando iba en la mitad me aburrí y decidí ser eficiente, asi que se me ocurrió un código para borrar.</p>
<p>Los archivos que yo quería borrar tenían todos la misma desconocida extensión que ya no me acuerda como era, pero supongamos que era <strong>.sfk, </strong>¿Como aniquilarlos todos sin mover un dedo?<br />
Pues con esta función, podemos borrar todos los archivos que tengan cierta cosa en común, pero recuerden tener extremo cuidado pues pueden llegar a borrar algo no deseado.</p>
<pre>FOR /R %%x in (*.sfk) DO (DEL "%%x")</pre>
<p>Como vemos tiene el formato:</p>
<pre>FOR /R %%Variable in (ElValorEnComun) DO (AccionAEjecutar)</pre>
<p>Donde <strong>/R </strong>significa que no solo afectara a una carpeta si no que a todas las superiores.</p>
<p>Si agregáramos ese código en algún Batch, al correrlo comenzara a borrar todos los archivos con la extensión sfk que hayan en directorios superiores al suyo o en el mismo.  (Directorios = Carpetas)</p>
<p>Claramente yo quise tener cuidado, y no borrar cosas indeseadas. Por lo que antes hice esto:</p>
<pre>FOR /R %%x in (*.sfk) DO (echo "%%x")</pre>
<p>Es lo mismo, solo que como acción en vez de borrar los listé. Una vez verificado que no había ningún archivo que me importara ejecute el otro.</p>
<p>Para el &#8220;valor en comun&#8221; hay varias maneras de darlo. Son de la siguiente manera.</p>
<ul>
<li>común.mp3 -&gt; Todos los archivos con ese nombre exacto.</li>
<li>común.* -&gt; Todos los archivos con ese nombre, sin importar la extensión.</li>
<li>común* -&gt; Todos los archivos que comiencen en <strong>común</strong>.</li>
<li>*común.mp3 -&gt; Todos los archivos terminados en <strong>común.mp3</strong>.</li>
<li>*.mp3 -&gt; Todo los archivos con la extensión<strong> mp3</strong>.</li>
<li>*común* -&gt; Todos los archivos que contengan la palabra <strong>común</strong>.</li>
<li>* -&gt; Todos los archivos, sin importar su nombre o extensión.</li>
</ul>
<p>Por ejemplo si ejecuto:</p>
<pre>FOR /R %%x in (*a*) DO (DEL "%%x")</pre>
<p>Se borraran todos los archivos que tengan una <strong>a</strong> en su nombre o extensión.</p>
<pre>FOR /R %%x in (*) DO (DEL "%%x")</pre>
<p>Se borraran todos los archivos existentes.</p>
<p>Yo mi &#8220;programa&#8221; lo deje así:</p>
<pre>@echo off
echo Se han encontrado los siguiente sfk:
FOR /R %%x in (*.sfk) DO (echo "%%x")
echo -----------------------------------------
echo Presione una tecla si desea eliminarlos
echo De lo contrario cierre la ventana.
pause&gt;nul
echo Estas seguro?
pause&gt;nul
echo Pues comencemos
pause&gt;nul
FOR /R %%x in (*.sfk) DO (DEL "%%x")
echo LISTO
pause&gt;nul
echo adiós
pause&gt;nul
exit</pre>
<h2><strong>Mover o Copiar de a grandes cantidades</strong></h2>
<p>Como se puede ver, en el punto anterior se borran muchos archivos en común con solo una linea de codigo. Pues para copiar y mover se hace casi lo mismo.</p>
<pre>FOR /R %%x in (*) DO (MOVE "%%x" C:\DestinoDeLosArchivos\)</pre>
<p>En la carpeta que lo ejecutemos moverá todos los archivos a &#8220;C:\DestinoDeLosArchivos\&#8221;</p>
<pre>FOR /R %%x in (*.txt) DO (COPY "%%x" C:\DestinoDeLosArchivos\)</pre>
<p>En la carpeta que lo ejecutemos moverá todos los archivos con extensión<strong> .txt</strong> a &#8220;C:DestinoDeLosArchivos&#8221;.</p>
<h2><strong>Crear una lista de reproducción.</strong></h2>
<p>Como fue visto en los tutoriales anteriores, podemos crear fácilmente archivos desde batch. Pero comúnmente solo se nos ocurriría escribir otro batch o un texto.<br />
Bueno, me di cuenta que la forma de escribir de las listas de reproducción de Winamp son extremadamente simple. Simplemente los nombres de las canciones. (Solo sirve para winamp)</p>
<p>Por ejemplo, si quisiéramos crear un bat que al apretarlo crea una lista de reproducción con todos los archivos de música existentes en la carpeta haríamos lo siguiente.</p>
<pre>@echo off
echo. &gt; lista.m3u
FOR %%x in (*.mp3) DO (
echo %%~nx.mp3 &gt;&gt; lista.m3u
)
start lista.m3u winamp.exe
exit</pre>
<p>Al ejecutarlo nos crearía un lista de reproducción de nuestra carpeta y comenzaría a reproducirla.<br />
La lista quedaría creada, si es que quieres que la lista no quede en tu pc.<br />
agrega estas lineas antes de <strong>exit</strong>:</p>
<pre>pause
DEL lista.m3u</pre>
<p>Basicamente lo que hago con este codigo es crear un archivo con extensión .m3u que dentro contiene los nombres de las canciones.<br />
<strong>%%~nx</strong> significa que nos devolverá solo el nombre de el archivo sin la dirección.</p>
<p>Eso es básicamente todo lo que doy a conocer hoy.<br />
Si alguien descubre la manera de hacer el creador de Lista de Reproducción pero que sirva incluso si es que se abre en un directorio raíz le pediría que me lo haga saber, pues no lo logré. (Solo funciona para una carpeta, no funciona como todos los otros batch que hice.)</p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/programacion-en-batch-3%c2%ba-parte/feed/</wfw:commentRss>
		<slash:comments>54</slash:comments>
		</item>
		<item>
		<title>Tutorial completo para aprender Ajax (Muy Bueno)</title>
		<link>http://jestudio.cl/blog/tutorial-completo-para-aprender-ajax-muy-bueno/</link>
		<comments>http://jestudio.cl/blog/tutorial-completo-para-aprender-ajax-muy-bueno/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 23:59:00 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Libro]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=52</guid>
		<description><![CDATA[Dando vuelta por Internet me encontré con este Libro que es más que nada un muy largo Tutorial para aprender Ajax. Es muy bueno, aun no me lo leo por completo ni tampoco lo he aplicado a nada pero si le doy un poco de tiempo lograre algo bueno. Lo saque de http://www.librosweb.es/ajax/index.html. El libro [...]]]></description>
			<content:encoded><![CDATA[<p>Dando vuelta por Internet me encontré con este Libro que es más que nada un muy largo Tutorial para aprender Ajax.<br />
Es muy bueno, aun no me lo leo por completo ni tampoco lo he aplicado a nada pero si le doy un poco de tiempo lograre algo bueno. Lo saque de <a title="Libro De Ajax" href="http://http//www.librosweb.es/ajax/index.html">http://www.librosweb.es/ajax/index.html</a>.<br />
El libro puede ser leído de manera OnLine (Se Actualiza cada cierto tiempo) o descargando el PDF.</p>
<p>Muy completo, muy recomendable.</p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/tutorial-completo-para-aprender-ajax-muy-bueno/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Local Connection As2, comunicación entre dos SWF.</title>
		<link>http://jestudio.cl/blog/local-connection-as2/</link>
		<comments>http://jestudio.cl/blog/local-connection-as2/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 21:44:00 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[As2]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Local Conection]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=26</guid>
		<description><![CDATA[En este tutorial vamos a aprender a ocupar local connection en As2. Local Connection, es una forma simple de conecta dos Swf diferentes. Les explico lo que queremos hacer: Con Local Connection vamos a hacer dos SWF, uno que envié una variable y el otro que la reciba y la muestre en pantalla. Si no [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jestudio.cl/blog/wp-content/uploads/2008/04/20060906-local.jpg"><img class="alignnone size-full wp-image-51" title="20060906-local" src="http://jestudio.cl/blog/wp-content/uploads/2008/04/20060906-local.jpg" alt="LocalConection Jestudio" width="200" height="200" /></a></p>
<p>En este <a title="Tutoriales de Jestudio" href="http://jestudio.cl/blog/category/tutoriales/">tutorial</a> vamos a aprender a ocupar local connection en As2.<br />
Local Connection, es una forma simple de conecta dos Swf diferentes.</p>
<p>Les explico lo que queremos hacer:<br />
Con Local Connection vamos a hacer dos SWF, uno que envié una variable y el otro que la reciba y la muestre en pantalla.<br />
Si no saben a lo que me refiero con SWF, son las películas, archivos creados por Flash.</p>
<p>(Continuar Leyendo para ver el Tutorial)<br />
<span id="more-26"></span><br />
Lo primero que vamos a hacer es crear el que envía la variable.<br />
Creamos un <strong>.fla</strong> llamado <strong>&#8220;conexion.fla&#8221;</strong></p>
<p>En el integremos 1 Input Text con la Variable <strong>&#8220;mensaje&#8221;<br />
</strong>(Recuerda no confundir Variable con Instancia)</p>
<p>y también un botón con la instancia <strong>&#8220;con_btn&#8221;</strong></p>
<p><strong></strong><img class="alignnone size-full wp-image-28" title="Especificación de Casillas" src="http://jestudio.cl/blog/wp-content/uploads/2008/04/ejemploconection.jpg" alt="Especificación de Casillas" width="500" height="104" /><br />
<em>En esta imagen puedes ver cuales son las casillas.</em></p>
<p>en nuestro frame escribiremos esta acción:</p>
<pre>con_btn.onPress=function(){
enviar = new LocalConnection();
enviar.send("miconexion","metodo",mensaje)
delete enviar;
}</pre>
<p>Ahora les explico esta acción.<br />
Primero le asignamos un nombre al local connection:<br />
<strong>enviar = new LocalConnection()</strong><br />
Luego enviamos el mensaje<br />
<strong>enviar.send()</strong><br />
Donde dice <strong>&#8220;miconexion&#8221;</strong> este es el nombre con el cual la otra película se conectara, <strong>&#8220;metodo&#8221;</strong> es donde se guardara el mensaje, y <strong>&#8220;mensaje&#8221;</strong> es lo que enviamos, que en este caso seria lo que uno escriba en el input text<br />
y por ultimo después de enviar el mensaje eliminamos la conexión<br />
<strong>delete enviar;</strong></p>
<p>Bueno ya tenemos la mitad del trabajo logrado.<br />
Ahora tenemos que hacer un archivo .Fla en la misma carpeta. Este llamado &#8220;conexion2.fla&#8221;</p>
<p>En este creamos un Dinamic Text con la Variable <strong>&#8220;carta&#8221;</strong><br />
Luego en el frame colocamos la siguiente acción</p>
<pre>recibir = new LocalConnection();
recibir.connect("miconexion");
recibir.metodo = function (e){
_root.carta=e
}</pre>
<p>Explicación:<br />
Iniciando creamos el Local Connection. y lo nombramos<br />
<strong>recibir = new LocalConnection();</strong><br />
Luego nos conectamos a la conexión<br />
<strong>recibir.connect()</strong><br />
Entre los paréntesis se escribe el nombre de la conexión. Si te acuerdas antes lo habíamos llamado <strong>&#8220;miconexion&#8221;</strong></p>
<p>También, antes aviamos asignado la palabra <strong>&#8220;metodo&#8221;</strong> como donde se iba a guardar el mensaje,. bueno entonces ponemos<strong><br />
recibir.metodo = function (e) {}</strong><br />
Aquí asignamos que lo escrito dentro de <strong>&#8220;metodo&#8221;</strong> se cargue a la variable <strong>&#8220;e&#8221;</strong><br />
Luego asignamos a la variable <strong>&#8220;carta&#8221;</strong> el valor de <strong>&#8220;e&#8221; </strong>que seria equivalente al valor de <strong>&#8220;mensaje&#8221;</strong>.<br />
<strong> _root.carta=e</strong></p>
<p>Ahora abramos las dos películas al mismo tiempo y envía desde la primera un mensaje, el segundo la debería recibir.</p>
<p>Ejemplo:</p>
<p>Este es el SWF que envía.<br />

<object width="200" height="100">
<param name="movie" value="http://jestudio.cl/blog/wp-content/uploads/2008/04/localconection1.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#ffffff"></param>
<embed type="application/x-shockwave-flash" width="200" height="100" src="http://jestudio.cl/blog/wp-content/uploads/2008/04/localconection1.swf" quality="high" bgcolor="#ffffff" wmode="window" menu="false" ></embed>
</object>
</p>
<p>y este va ser el que recibe. Si envías algo arriba aparecerá en este (Tiene fondo blanco, por eso no se ve).</p>
<p>
<object width="200" height="100">
<param name="movie" value="http://jestudio.cl/blog/wp-content/uploads/2008/04/localconection2.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#ffffff"></param>
<embed type="application/x-shockwave-flash" width="200" height="100" src="http://jestudio.cl/blog/wp-content/uploads/2008/04/localconection2.swf" quality="high" bgcolor="#ffffff" wmode="window" menu="false" ></embed>
</object>
</p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/local-connection-as2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Programación en Batch 2º Parte.</title>
		<link>http://jestudio.cl/blog/programacion-en-batch-2-parte/</link>
		<comments>http://jestudio.cl/blog/programacion-en-batch-2-parte/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 02:32:10 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Bat]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=25</guid>
		<description><![CDATA[Esta es la segunda parte de mi tip Programación Batch con archivos .bat, así que te recomiendo leerlo si es que no estas instruido en el tema. A continuación veremos los siguientes temas: Uso de etiquetas Condicionales Creación de Menús Apagado y Reiniciado de Pc con archivos .bat Leer archivos externos Insertar al Registro Otras [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es la segunda parte de mi tip <a href="http://jestudio.cl/blog/programacion-en-batch-1%c2%ba-parte/" target="_blank">Programación Batch con archivos .bat</a>, así que te recomiendo leerlo si es que no estas instruido en el tema.</p>
<p>A continuación veremos los siguientes temas:</p>
<ul>
<li>Uso de etiquetas</li>
<li>Condicionales</li>
<li>Creación de Menús</li>
<li>Apagado y Reiniciado de Pc con archivos <em>.bat</em></li>
<li>Leer archivos externos</li>
<li> Insertar al Registro</li>
<li> Otras cosas útiles</li>
</ul>
<p>Si te interesa, sigue leyendo.<br />
<span id="more-25"></span></p>
<h2>Uso de etiquetas</h2>
<p>Como  bien sabemos la lectura de los códigos Batch se leen de una manera  lineal, pero existe una forma para que el Batch se salte lineas, o  vuelva a alguna anterior. Esto se logra con <strong>Etiquetas </strong> y la función <strong>GOTO</strong>.</p>
<p>Para crear una etiqueta solo debemos escribir:</p>
<pre>:nombreEtiqueta</pre>
<p>Dos punto (<strong>:</strong>) seguido del nombre que le daremos a la etiqueta.  De esta manera el <strong>GOTO</strong> funciona escribiendo</p>
<p><strong>GOTO</strong> seguido del nombre de la etiqueta, como vemos en el siguiente ejemplo.</p>
<pre>@echo off
goto :mietiqueta
echo ¿Por que me saltan?
:MiEtiqueta
echo Hola, esta es la etiqueta y nos saltamos una parte del codigo.
pause&gt;nul
exit</pre>
<p><em>Dato Interesante:</em></p>
<p><em>En Batch las Mayúsculas y Minúsculas no se diferencian.</em></p>
<h2>Condicionales:</h2>
<p>El primer condicional que veremos el más usado.</p>
<p>IF:</p>
<p>Se puede ocupar para comparar, cadenas, números o para saber si existen archivos.</p>
<p>Ejemplo de sintaxis<strong>, if %cadena1% == %cadena2% OrdenAEjecutar</strong></p>
<p>Que se podría leer de la siguiente manera. Si cadena1 es igual a Cadena2 ejecutemos la Orden OrdenAEjecutar.</p>
<p>También existe el <strong>NOT</strong> para ver si no son iguales.</p>
<p><strong>if not %cadena1%== %cadena2% ejecutarAccion</strong></p>
<p>Para saber si un archivo existe, se usa:</p>
<p><strong>if exist &#8220;NombreDelArchivo&#8221; AccionAEjecutar</strong></p>
<p>o también para ver si NO existe:</p>
<p><strong>if not exist &#8220;NombreDelArchivo&#8221; AccionAEjecutar</strong></p>
<p>No solo se puede ocupar el signo <strong>==</strong> para hacer comparaciones.</p>
<p><strong>EQU</strong>, que es el equivalente a <strong>==</strong></p>
<p><strong>NEQ</strong>, Sirve para cuando queremos ver Desigualdad.</p>
<p><strong>LSS</strong>, Para verificar si el numero es Menor</p>
<p><strong>LEQ</strong>, Para verificar si es menor o igual.</p>
<p><strong>GTR</strong>, Si es mayor</p>
<p><strong>GEQ</strong>, Si es Mayor e igual.</p>
<p>Un ejemplo de esto seria:</p>
<pre>if 5 GTR 4 echo Hola</pre>
<p>FOR:</p>
<p>Nos sirve para repetir un comando varias veces, en distintas variables.</p>
<p>Un ejemplo, es este:</p>
<p><strong>for /L %%i IN (0,1,21) DO (echo %%i)</strong></p>
<p>En donde <strong>/L</strong> es para especificar que nuestro for se basara en un conteo de números.</p>
<p>Aquí se repetirá un Echo, que imprimirá números del 0 al 21.</p>
<p><strong>%%i </strong>sera el nombre de la variable que almacenara datos</p>
<p><strong>in (0,1,21) </strong>aquí especificamos que se repetirá del 0 al 1 y del 1 al 21.</p>
<p><strong>do (echo %%i)</strong> Esto es la función que se ejecutara en cada repetición del comando, en este caso un echo que imprimirá la variable.</p>
<div>Batch en algunos casos <strong>SI</strong> reconoce entre mayúsculas y minúsculas, como en el caso de la variable  %%i si esta se llamara %%I no seria reconocida como la misma.</div>
<p>Otro uso que puede ser aplicado en el FOR es el listado de carpetas o archivos, como veremos a continuación:</p>
<p>Listado de archivos:</p>
<pre>@echo off
FOR %%x in (a*) DO echo %%x
pause</pre>
<p>Este código, listaría todos los archivos que comienzan con A.</p>
<p>¿Por  que? * (asterisco) es un signo comodín, por lo cual al poner a*,  estamos diciendo cualquier archivo que tenga una A delante y luego  cualquier cosa.</p>
<p>Otro ejemplo del uso de comodín, es listar archivos con extensión común como seria este:</p>
<pre>@echo off
FOR %%x in (*.jpg) DO echo %%x
pause</pre>
<p>Aqui nos estaria listando todos los archivos que tengan la extensión <strong>.jpg</strong></p>
<p>Listado de Carpetas:</p>
<p>FOR /D %%x in (a*) DO echo %%x</p>
<p>Es casi lo mismo anterior, tan solo que al indicar <strong>/D</strong> solo se aplica a directorios.</p>
<p>Si quisiéramos que se listaran los directorios, juntos a los directorios que tienen estos dentro se ocupa<strong> /R</strong></p>
<p><strong>FOR /R /D %%x in (a*) DO echo %%x</strong></p>
<p>y  si quisiéramos listar todos los documentos que están dentro de una  carpeta contando los que están dentro de carpetas se ocupa solamente <strong>/R</strong> (Sin /D)</p>
<p><strong>FOR /R %%x in (a*) DO echo %%x</strong></p>
<p>Con  esto creo que tenemos lo básico, y más importante de los condicionales.</p>
<h2>Creación de Menús:</h2>
<p>Como ya vimos Condicionales y Etiquetas les enseñare una manera de hacer Menús.</p>
<p>Comenzaríamos indicando las instrucciones y las opciones, de esta manera:</p>
<pre>@echo off
:Menu
cls
echo Seleccione su opcion tecleando el numero respectivo.
echo.
echo 1. Primera Opcion
echo 2. Segunda Opcion
echo 3. Salir</pre>
<p>Luego para seguir ocuparíamos esto:</p>
<pre>set /p var=
if %var%==1 goto <img src='http://jestudio.cl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> rimero
if %var%==2 goto :Segundo
if %var%==3 goto exit
if %var% GTR 3 echo Error
goto :Menu</pre>
<p>Con  esto damos una variable en la que se guardara el numero insertado para  luego ser verificado por los condicionales, si el numero es mayor que 3  nos avisara que no existe esa opción. También al principio cree una  etiqueta para que se pueda volver</p>
<p>al menú y un &#8220;<strong>cls</strong>&#8221; para limpiar la pantalla.</p>
<p>Para terminar creamos las respectivas etiquetas.</p>
<pre> <img src='http://jestudio.cl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> rimero
cls
color a
Echo Esta es la Primera Opcion
Echo Precione una tecla para volver al menu
Pause&gt;Nul
goto :Menu
:Segundo
cls
color 1a
Echo Esta es la Segunda Opcion
Echo Precione una tecla para volver al menu
Pause&gt;Nul
goto :Menu</pre>
<p>Quedando para terminar nuestro codigo así:</p>
<pre>@echo off
:Menu
cls
echo Seleccione su opcion tecleando el numero respectivo.
echo.
echo 1. Primera Opcion
echo 2. Segunda Opcion
echo 3. Salir
set /p var=
if %var%==1 goto <img src='http://jestudio.cl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> rimero
if %var%==2 goto :Segundo
if %var%==3 goto exit
if %var% GTR 3 echo Error
goto :Menu
 <img src='http://jestudio.cl/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> rimero
cls
color a
Echo Esta es la Primera Opcion
Echo Precione una tecla para volver al menu
Pause&gt;Nul
goto :Menu
:Segundo
cls
color 1a
Echo Esta es la Segunda Opcion
Echo Precione una tecla para volver al menu
Pause&gt;Nul
goto :Menu</pre>
<p>Bueno, con eso les basta para imaginarse como crear sus menús personales.</p>
<p>Como vieron puede cada sección tener su color, incluso puedes cambiar la barra de titulo.</p>
<p>Ve probando, no pierdes nada.</p>
<h2>Apagado y Reiniciado de Pc:</h2>
<p>Una  cosa muy interesante que puedes hacer con Batch es Apagar y Reiniciar  tu Pc, incluso programarlo para que apague a la hora que desees.</p>
<p>Es notablemente fácil.</p>
<p>se ocupa de la siguiente manera el apagado.</p>
<p><strong>shutdown -s -t Tiempo -c &#8220;Comentario&#8221;</strong></p>
<p>donde <strong>-s</strong> significa que lo apagaremos,<strong> -t</strong> debe ir seguido de los segundos que demorara apagar. En windos XP mostrara un contador, con el comentario que va luego de<strong> -c</strong>, pero en Windows Vista no abra ni un contador, solamente saldrá una alerta con el Comentario, que ni siquiera es obligatorio.</p>
<p>Bueno, de seguro quieres hacer la prueba. La puedes hacer pero antes de eso te recomiendo que leas lo siguiente.</p>
<p>Puedes cancelar el apagado (Antes de que el contador termine) solamente escribiendo <strong>shutdown -a</strong> ya sea en un archivo de texto con extensión bat, como en el mismo Shell.</p>
<p>Entonces, pues has la prueba</p>
<p><strong><br />
</strong></p>
<pre>shutdown -s -t 999999 -c "Esto se esta apagando"</pre>
<p>Tendrás suficiente tiempo para ejecutar el siguiente código. (11 días <img src="http://www.cristalab.com/foros/images/smiles/icon_lol.gif" border="0" alt="Riendo" /> )</p>
<pre>shutdown -a</pre>
<p>Con esto ya probamos los dos y podemos ser felices.</p>
<p>Ok, si en vez de ocupar<strong> -s </strong>usas<strong> -r</strong> el PC se reiniciara.</p>
<p>También puedes forzar el cierre de los programas, para que no de tiempo de guardar nada. Tan solo ocupando <strong>-f</strong></p>
<p>Un ejemplo de un Pc, que se Apaga Forzosamente y que puede dañar el pc y luego se reinicia es este:</p>
<pre>shutdown -r -f -t 0 -c "Bye"</pre>
<p>(No lo recomiendo probar en tu pc, Ya que apaga el pc en 0 segundos sin preguntar nada. )</p>
<p>Para programar un apagado lo veremos al final en los Datos Extras, ya que con la función AT puedes programar el apagado.</p>
<h2>Leer archivos externos:</h2>
<p>Para leer un archivo externo con Batch, como un archivo de texto por ejemplo. Se usa el siguiente código:</p>
<pre>type "NombreDelArchivo.txt"</pre>
<p>¿Simple no?</p>
<h2>Insertar al Registro:</h2>
<p>Insertar  al registro tu Batch puede ser muy útil, la verdad yo no entiendo mucho  del registro pero leí un poco y aquí tienen un ejemplo que se encuentra  a ser sincero en muchas web. Donde aremos que nuestro batch se ejecute  con el Sistema.</p>
<pre>REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v MIBATCH.bat /t REG_SZ /d

C:\MIBATCH.bat</pre>
<p>Con la función <strong>REG ADD</strong> Agregamos algo al registro. Con otros comando podemos borrar.</p>
<p>Lo  que sigue es la &#8220;Dirección&#8221; de donde insertaremos el registro que en  este caso sera para que nuestro batch se ejecute al iniciar Sesión.</p>
<p>En medio de toda la dirección se puede leer<strong> MIBATCH.bat</strong> yo puse el nombre del Batch pero también se puede poner cualquier otra  cosa. Más adelante donde dice C:\MIBATCH.bat, es la dirección completa  de donde esta nuestro Batch.</p>
<p>Con solo esta linea estamos listos. Haz la prueba!</p>
<h2>Otras cosas útiles:</h2>
<p>Para terminar hablare de pequeñas funciones que pueden ser de utilidad.</p>
<p><strong>Msg</strong></p>
<p>Esta función tiene otras utilidades, pero les enseñare esta que no funciona en todos los PC.</p>
<p>Sirve para abrir una alerta con un mensaje su utilización es la siguiente:</p>
<pre>msg * EsteEsMiMensaje</pre>
<p><strong>AT</strong></p>
<p>Esta es una de las que más me gusta, es para programar alguna acción a cierta hora.</p>
<p>Ejemplo:</p>
<pre>At 20:00 msg * Son Las 8 de la noche</pre>
<p>Con esto a las 20:00 nos aparecerá un mensaje que nos dirá que son las 8 de la Noche.</p>
<p>También puedes programar un apagado o cualquier Cosa.</p>
<p>Si la hora que das ya paso, se tomara como para el día siguiente.</p>
<p>Creo  que he terminado, me costó un poco. Ojala no me haya faltado nada.  Disfrútenlo y seria bueno que los Clabers aporten con más información.  Yo creo que seria útil para todos, incluyéndome.</p>
<p>Suerte.</p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/programacion-en-batch-2-parte/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Uso de la Clase Tween en As3</title>
		<link>http://jestudio.cl/blog/uso-de-la-clase-tween-en-as3/</link>
		<comments>http://jestudio.cl/blog/uso-de-la-clase-tween-en-as3/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 16:40:49 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[As3]]></category>
		<category><![CDATA[Clase]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Tween]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=17</guid>
		<description><![CDATA[Hola, en este Tutorial les enseñaré cómo lograr un efecto de Easing Tween mediante Actionscript 3, ya que es una de las primeras cosas que aprendí solo en ActionScript 3. Primero debemos importar los paquetes necesarios: import fl.transitions.*; import fl.transitions.easing.*; Luego creamos un nuevo Sprite, en este caso dibujaremos un simple cuadrado. var box:Sprite= new [...]]]></description>
			<content:encoded><![CDATA[<p>
<object width="550" height="150">
<param name="movie" value="http://www.cristalab.com/images/tips/actionscript_3/efecto-easing/tween2.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#ffffff"></param>
<embed type="application/x-shockwave-flash" width="550" height="150" src="http://www.cristalab.com/images/tips/actionscript_3/efecto-easing/tween2.swf" quality="high" bgcolor="#ffffff" wmode="window" menu="false" ></embed>
</object>
</p>
<p>Hola, en este <a href="http://www.jestudio.cl/blog/index.php/category/tutoriales/" target="_blank">Tutorial</a> les enseñaré cómo lograr un efecto de Easing Tween mediante Actionscript 3, ya que es una de las primeras cosas que aprendí solo en ActionScript 3.</p>
<p>Primero debemos importar los paquetes necesarios:</p>
<pre>import fl.transitions.*;
import fl.transitions.easing.*;</pre>
<p>Luego creamos un nuevo Sprite, en este caso dibujaremos un simple cuadrado.</p>
<pre>var box:Sprite= new Sprite   //  Se crea
box.graphics.beginFill(Math.random()*0xffffff); // Se elije color
box.graphics.drawRect(0,0,100,100); // Dibujamos el cuadrado
box.graphics.endFill(); //Terminamos de dibujar
box.x=10  //Posición
box.y=10
addChild(box); // Lo enviamos al Stage.</pre>
<p>Comenzando ya con el Tween lo creamos, dándole las opciones de:</p>
<p>(Objeto,Propiedad,Método,Partida,Termino,Duracion,Animación)</p>
<p><strong>Objeto: </strong> Es el sprite que creamos en este caso. O sea, a lo que le queremos aplicar el Tween.</p>
<p><strong>Propiedad: </strong>Es La propiedad que queremos cambiarle, ya sea el x, el y o el alpha.</p>
<p><strong>Método: </strong>Es el tipo de Animación, existen varias. El modo de escribirla es: Movimiento.ease:</p>
<ul> <strong>Donde movimiento:</strong><strong><br />
None:</strong> Se mueve de el lugar a otro pero no le afectan los ease<strong><br />
Elastic:</strong> Efecto Elástico<br />
<strong>Bounce:</strong> Efecto de Rebote<br />
<strong>Regular:</strong> Se mueve de manera regular.<br />
<strong>Strong:</strong> Se mueve de una manera más fuerte.<br />
<strong>Back:</strong> Se mueve y Vuelve un poco<strong>y Ease:</strong></p>
<p><strong>easeIn():</strong> Parte lento</p>
<p><strong>easeinOut():</strong> Parte y Termina Lento</p>
<p><strong>easeOut():</strong> Termina Lento</ul>
<p><strong>Partida y Término</strong>, es donde empieza y donde termina la propiedad a la cual vamos animar.</p>
<p><strong>Duración :</strong> Es el tiempo que demorará en hacer la animación.</p>
<p>Por ultimo “Animación”, siempre déjenlo en true, ya que en false no la muestra.<br />
<span id="more-17"></span><br />
Esto resumido para crear el Tween es:<strong><br />
</strong></p>
<pre>var mover:Tween = new Tween(box,"x",Elastic.easeInOut, box.x, 400,3, true)</pre>
<p>Quedando luego nuestro código así:</p>
<pre>//Primero debemos importar los paquetes correspondientes:
import fl.transitions.*;
import fl.transitions.easing.*;
// Luego seleccionamos el RateFrame
stage.frameRate=30 // &lt;= Numero que uno desee
// Creamos el Sprite "box" así lo he llamado,y luego dibujamos en ella una caja
var box:Sprite= new Sprite   //  Se crea
box.graphics.beginFill(Math.random()*0xffffff); // Se elije color
box.graphics.drawRect(0,0,100,100); // Dibujamos el cuadrado
box.graphics.endFill(); //Terminamos de dibujar&lt;
box.x=10  //Posición
box.y=10
addChild(box); // Lo enviamos al Stage.
//Creamos el Easing
var mover:Tween = new Tween(box,"x",Elastic.easeInOut, box.x, 400,3, true)</pre>
<p>Con esto, al ver la película el cuadrado haría una animación pequeña.</p>
<p>También podemos detenerla, comenzarla o hacer que “loopee” o sea que la animación se repita constantemente. Para esto se ocupa:</p>
<pre>mover.stop() //Lo detiene
mover.start() //Lo Comienza
mover.looping=true // Para que se repita</pre>
<p>Lo otro interesante es que podemos agregarle Listeners, que se ocupan así:</p>
<pre>mover.addEventListener(TweenEvent.MOTION_FINISH, termino)
function termino (e:TweenEvent){trace("Termino");
}</pre>
<p>Con  todo esto logré hacer que el cuadrado, al terminar una animación,  vuelva a su estado original, con otra animación, y así repitiendo.</p>
<p>El código me quedó así:</p>
<pre>import fl.transitions.*;
import fl.transitions.easing.*; //Importo Paquetes
stage.frameRate=40
var box:Sprite= new Sprite();
box.graphics.beginFill(0xFF000);
box.graphics.drawRect(50,50,50,50);
box.graphics.endFill();
addChild(box);
//Creo un Tween
var mover:Tween = new Tween(box,"x",Elastic.easeInOut, 50, 350,5, true)
var mover2:Tween = new Tween(box,"x",Elastic.easeInOut, 350, 50,5, true)
mover2.stop();
//Creo un Listener
mover.addEventListener(TweenEvent.MOTION_FINISH, list); //En este caso es al terminar
mover2.addEventListener(TweenEvent.MOTION_FINISH, list3);
{
mover2.start();
}
function list3 (event:Event){
mover.start();}</pre>
<p>Ojalá se entienda y sirva de algo <img class="wp-smiley" src="http://www.jestudio.cl/blog/wp-includes/images/smilies/icon_smile.gif" alt=":D" /></p>
<p><strong>Ejemplos:</strong></p>
<p>(Click sobre el cuadro rojo para repetir);<strong></strong><br />

<object width="550" height="100">
<param name="movie" value="http://www.cristalab.com/images/tips/actionscript_3/efecto-easing/tween.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#ffffff"></param>
<embed type="application/x-shockwave-flash" width="550" height="100" src="http://www.cristalab.com/images/tips/actionscript_3/efecto-easing/tween.swf" quality="high" bgcolor="#ffffff" wmode="window" menu="false" ></embed>
</object>
</p>
<p>
<object width="550" height="150">
<param name="movie" value="http://www.cristalab.com/images/tips/actionscript_3/efecto-easing/tween2.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#ffffff"></param>
<embed type="application/x-shockwave-flash" width="550" height="150" src="http://www.cristalab.com/images/tips/actionscript_3/efecto-easing/tween2.swf" quality="high" bgcolor="#ffffff" wmode="window" menu="false" ></embed>
</object>
<strong></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/uso-de-la-clase-tween-en-as3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Programación en Batch 1º Parte.</title>
		<link>http://jestudio.cl/blog/programacion-en-batch-1%c2%ba-parte/</link>
		<comments>http://jestudio.cl/blog/programacion-en-batch-1%c2%ba-parte/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 22:09:31 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=16</guid>
		<description><![CDATA[En este tutorial hablaremos sobre cómo manejar algunas funciones de Windows mediante archivos Batch. Batch, según Wikipedia es: Es un archivo de procesamiento por lotes: se trata de archivos de texto sin formato, guardados con la extensión *.bat que contienen un conjunto de comandos DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son [...]]]></description>
			<content:encoded><![CDATA[<p>En este <a href="http://jestudio.cl/blog/category/tutoriales/">tutorial</a> hablaremos sobre cómo manejar algunas funciones de Windows mediante archivos Batch.</p>
<p>Batch, según Wikipedia es:<br />
<cite>Es  un archivo de procesamiento por lotes: se trata de archivos de texto  sin formato, guardados con la extensión *.bat que contienen un conjunto  de comandos DOS. Cuando se ejecuta este archivo bat, los comandos  contenidos son ejecutados en grupo, de forma secuencial, permitiendo  automatizar diversas tareas.</cite></p>
<p>Cualquier comando DOS puede ser utilizado en un archivo batch.<br />
Hay que aclarar Batch que no es un Lenguaje de Programación. Es un archivo de código que contiene comandos del, <a href="http://es.wikipedia.org/wiki/Int%C3%A9rprete_de_comandos">Shell</a> de Windows, llamado MS-DOS, que pueden ejecutar desde <strong>Inicio-&gt;Ejecutar-&gt;CMD</strong>.</p>
<p>Hay dos maneras de ejecutar comandos Batch.</p>
<ul>
<li>Desde el Shell de Windows.</li>
<li>Escribiéndolos en un archivo de texto con extensión <strong>.bat</strong> y luego ejecutarlo.</li>
</ul>
<h2><strong>Hola Mundo en Batch</strong></h2>
<p>Comenzaremos creando un Simple y clásico &#8220;Hola Mundo&#8221;, escribiendo en un archivo de texto el siguiente código.</p>
<pre>@echo off
echo Hola Mundo
pause
exit</pre>
<p>Ahora guardemos el archivo como <strong>Nombre.bat</strong> y lo ejecutamos. Nos aparecerá una pantalla negra que dirá &#8220;Hola  Mundo&#8221;, luego una linea abajo dirá &#8220;Presione una tecla para continuar&#8221;</p>
<p>Explicamos:</p>
<h3><strong>echo:</strong></h3>
<p>Imprime  un texto en pantalla, que es el texto que viene después (el que le  pasamos como parámetro), que en este caso es &#8220;Hola Mundo&#8221;. Echo  significa eco, por lo mismo &#8220;@echo off&#8221; elimina el eco, la repetición  de la ruta en la que nos encontramos en cada línea código.</p>
<h3><strong>pause:</strong></h3>
<p>Como bien se lee, pausa la ejecución del código. Además muestra el texto <em>&#8220;Presione una tecla para continuar&#8221;</em></p>
<h3><strong>exit:</strong></h3>
<p>Cierra la ventana de comandos.</p>
<p>Para dejar más en claro cual sería la diferencia de no ocupar la linea <strong>@echo off</strong> la imagen de a continuación muestra como se vería la pantalla sin esta linea.</p>
<div><img src="http://www.cristalab.com/images/tips/stuff/batch/ejemplo1.jpg" border="0" alt="Imagen1" /></div>
<p>Ahora aprenderemos algunas funciones de Batch:<span id="more-16"></span></p>
<h3><strong>CD o CHDIR:</strong></h3>
<p>Si  has trabajado en PHP, te sera fácil entender este concepto. Sirve para  cambiar de Directorio o Mostrar el nombre del actual. Para usarlo, <strong>CD</strong> o <strong>CHDIR</strong> seguido de la ubicación del directorio al cual nos moveremos.</p>
<p><strong>cd &#8220;C:\&#8221;</strong></p>
<p><strong>chdir &#8220;C:\&#8221;</strong></p>
<p>Los ejemplos anteriores hacen exactamente lo mismo, cambian al <strong>Disco C</strong></p>
<h3><strong>COPY:</strong></h3>
<p>Sirve para copiar uno o más archivos a otro destino.</p>
<p>Su sintaxis es la siguiente:</p>
<p><strong>Copy &#8220;Dirección del archivo&#8221; &#8220;Nueva dirección&#8221;</strong></p>
<p>Ejemplo:</p>
<pre>Copy "C:\archivo.txt" "C:\archivo2.txt"</pre>
<p>Aquí copiaríamos un archivo del Disco C llamado &#8220;archivo.txt&#8221; como &#8220;archivo2.txt&#8221;</p>
<p>Para acortar un poco podríamos usar:</p>
<pre>cd "C:\"
Copy "archivo.txt" "archivo2.txt"</pre>
<p>Donde primero cambiamos de directorio al Disco C con <strong>cd &#8220;C:\&#8221;</strong> y luego al copiar no tenemos que especificar que esta en el Disco C ya que ya nos encontramos en el.</p>
<h3><strong>DEL:</strong></h3>
<p>Sirve para eliminar uno o más archivos. Su sintaxis es:</p>
<p><strong>Del &#8220;ARCHIVO&#8221;</strong></p>
<p>También se puede añadir:</p>
<p><strong>del /f /q &#8220;archivo&#8221;</strong></p>
<p>Donde no pide confirmación de eliminación (/q) y fuerza al archivo a borrarse ( /f )</p>
<h3><strong>Move:</strong></h3>
<p>Sirve para mover un archivo. Su sintaxis es:</p>
<p><strong>Move &#8220;Dirección Archivo&#8221; &#8220;Nueva Dirección&#8221;</strong></p>
<h3><strong>Cls:</strong></h3>
<p>Sirve para limpiar el contenido de la pantalla:</p>
<p>Ejemplo:</p>
<pre>@echo off
echo Hola, Cuando pulses la tecla se borrara el contenido y cambiara por otro.
pause
cls
echo ¿Ves?
pause
exit</pre>
<p>Si  quisiéramos averiguar más sobre las funciones, o conocer algunas nuevas  por nuestra propia cuenta podemos escribir en el Shell el nombre del  comando seguido de <strong>/?</strong> y aparecerá toda la información necesaria.</p>
<p>Podemos poner en práctica esto de la siguiente manera:</p>
<ul>
<li>Abramos el Shell de windows:
<div>Inicio-&gt;Ejecutar-CMD</div>
</li>
<li>Una vez abierto escribamos:<strong><br />
</strong></p>
<pre>echo off</pre>
<p>Para eliminar el eco.</li>
<li>Luego para borrar el contenido de pantalla escribe:
<pre>cls</pre>
</li>
<li>Ahora veamos la ayuda de la función Copy:<strong><br />
</strong></p>
<pre>copy /?</pre>
</li>
<li>Cerremos la ventana:<br />
<strong></strong></p>
<pre>exit</pre>
</li>
</ul>
<p>Ahora  vamos a crear un Batch que copie un archivo, luego lo mueva a otro  directorio, borre el original y vuelva a copiar el copiado.</p>
<p>En la carpeta donde crearás el archivo <em>.bat</em> crea un archivo de texto llamado <em>copiame.txt</em>. En él, escribe lo que quieras. Este será el archivo que copiaremos.</p>
<p>Ahora el Batch:</p>
<pre>@echo off
echo Hola, Copiaremos un archivo
pause
copy "copiame.txt" "copiado.txt"
move "copiado.txt" "C:\copiado.txt"
del "copiame.txt"
cd "C:\"
copy "copiado.txt" "copiado2.txt"
exit</pre>
<p>Guárdalo en la carpeta como <strong>NombreQueTuQuieras.bat</strong>, y ejecútalo.</p>
<p>Lo que ha hecho la cadena de instrucciones es más o menos lo siguiente:</p>
<p>Primero <strong>apagamos el eco</strong>, luego <strong>imprimimos</strong> en pantalla &#8220;Hola, Copiaremos un archivo&#8221;</p>
<p><strong>Pausamos</strong> el intérprete para que no siga de largo.</p>
<p>A continuación, <strong>copiamos</strong> el archivo &#8220;<em>Copiame.txt</em>&#8221; y su copia se llamará &#8220;<em>copiado.txt</em>&#8220;. La <strong>movemos</strong> a la carpeta raíz del disco C, y <strong>eliminamos</strong> el original.</p>
<p>Por ultimo cambiamos de directorio al disco C, copiamos la copia y cerramos el Batch.</p>
<p>Después  de que ejecutemos el Batch, si vamos al Disco C, veremos que hay dos  nuevos archivos de texto: uno llamado copiado.txt y otro copiado2.txt.</p>
<p>También si vamos a la carpeta del Batch, veremos no está el archivo de texto original, <em>&#8220;copiame.txt&#8221;</em>.</p>
<h2><strong>Creación de nuevos archivos:</strong></h2>
<p>Con Batch podemos crear otros archivos. Para ello, tenemos que escribir algo como esto:</p>
<pre>echo TEXTO DE PRIMERA LINEA &gt; nombre.extensión
echo TEXTO SEGUNDA LINEA &gt;&gt; nombre.extensión
echo TEXTO SIGUIENTE LINEA &gt;&gt; nombre.extensión</pre>
<p>Al escribir <strong>echo</strong> seguido de un texto y el signo &gt; creamos un archivo con el nombre que siga.</p>
<p>Si ocupamos un <strong>echo</strong> seguido de un texto y el doble signo &gt; (&gt;&gt;) se escribirá en la siguiente linea vacía del archivo que prosiga.</p>
<p>Hagamos la prueba:</p>
<pre>echo Creando un Archivo de texto &gt; nuevo.txt
echo Esta es la Segunda linea &gt;&gt; nuevo.txt
echo Y esta es la Siguiente &gt;&gt; nuevo.txt
echo Esto esta genial &gt;&gt; nuevo.txt</pre>
<p>Si ejecutamos eso, la pantalla negra se abrirá y cerrará.</p>
<p>Pero  en la carpeta en la que está nuestro batch se abra creado un nuevo  archivo &#8220;nuevo.txt&#8221; que si lo abrimos, dentro estará escrito lo que  especificamos.</p>
<h2><strong>Personalizando el SHELL</strong></h2>
<p>Seguro que no te gusta mucho el aspecto del Shell.</p>
<p>Aquí veremos como personalizarlo un poco.</p>
<h3><strong>COLOR:</strong></h3>
<p>Con la función color podemos cambiar los colores de fondo y las letras. Siendo su sintaxis:</p>
<p><strong>COLOR AB</strong></p>
<p>Donde A= El color de el Fondo y B= Color de las letras.</p>
<p>Para ver todos los colores ve el MS-Dos y escribe <strong>color/?</strong></p>
<h3><strong>TITLE:</strong></h3>
<p>Para cambiar el título de la barra de tareas solo escribe:</p>
<p><strong>Title Loquequierascomotitulo</strong></p>
<h3><strong>Pause Personalizado:</strong></h3>
<p>¿No te gusta que al poner pause salga &#8220;Presione una tecla para continuar&#8230;&#8221;?</p>
<p>Pues si escribes &#8220;pause&gt;nul&#8221; no aparecerá ni un texto.</p>
<p>Entonces si anteponemos un mensaje, quedaría así.</p>
<pre>echo Aprieta cualquier tecla para seguir
pause&gt;nul</pre>
<p>Además puedes jugar con los caracteres. Aquí un ejemplo, donde cambié los colores y jugué con los caracteres y personalicé el <em>pause</em>:</p>
<div><img src="http://www.cristalab.com/images/tips/stuff/batch/ejemplo2.jpg" border="0" alt="IMagen2" /></div>
<p>El código que empleé para esto fue:</p>
<pre>@echo off
color 30
echo ==================================
echo =                                =
echo =               Personalizado    =
echo =                                =
echo ==================================
echo.
echo.
echo Esto esta personalizado, para salir presiona una tecla.
pause&gt;nul
exit</pre>
<p>Cabe mencionar que <strong>echo.</strong> (<em>Echo</em> seguido de un punto)sirve para saltarse una línea.</p>
<h2><strong>Matando Procesos:</strong></h2>
<p>¿Alguna vez has presionado CTRL+ALT+DELETE?</p>
<p>Si  lo haces se abre el Administrador de tarea. En la pestaña procesos  salen algunos procesos que están andando en tu pc, haciéndoles clics y  apretando &#8220;terminar proceso&#8221; lo puedes acabar.</p>
<p>Con batch eso es muy fácil, se usa la función:</p>
<p><strong>Taskkill </strong>(No funciona en todos los pc, para ver si esta disponible escribe <strong>taskkill/?</strong>)</p>
<p>Su sintaxis es:</p>
<pre>taskkill /f /im proceso.exe</pre>
<p><strong>/f</strong> Fuerza el término del proceso.</p>
<p>Un ejemplo seria escribir.</p>
<pre>taskkill /f /im wmplayer.exe</pre>
<p>Si lo ejecutas y tienes el Reproductor de Windows Media abierto, este se cerrará.</p>
<h2><strong>ABRIENDO PROCESOS:</strong></h2>
<p>Ahora abramos ese proceso que cerramos. Para abrir procesos se usa la función <strong>Start</strong> que funciona así:</p>
<pre>start proceso.exe</pre>
<p>También puedes abrir paginas web con tu explorador predeterminado.</p>
<h5>Ejemplo1:</h5>
<pre>start wmplayer.exe</pre>
<p>Se abrirá el Reproductor de Música</p>
<h5>Ejemplo2:</h5>
<pre>start <a href="http://www.google.cl" target="_blank">www.google.cl</a></pre>
<p>Se abrirá tu Explorador de Internet en Google.</p>
<h2><strong>VARIABLES:</strong></h2>
<p>Ahora aprendamos a declarar variables. Para crear una se escribe:</p>
<pre>set NOMBREVARIABLE = VALOR</pre>
<p>Para llamarla debemos escribir su nombre entre los signos <strong>%%</strong></p>
<p>Ejemplo:</p>
<pre>@echo off
set Nombre= Javier Letelier Ruiz
echo %Nombre%
pause</pre>
<p>La pantalla nos mostrara algo así:</p>
<div><img src="http://www.cristalab.com/images/tips/stuff/batch/ejemplo3.jpg" border="0" alt="IMagen3" /></div>
<p>Para cambiar el valor solo debemos hacer esto:</p>
<pre>set Nombre= Nuevo Valor</pre>
<p>Si quieres que tu Variable sea dinámica, osea que el Usuario la elija antepones <strong>/p</strong>:</p>
<pre>set /p Nombre=Escriba su Nombre:</pre>
<p>Donde el Batch se pausara solo mostrando el Mensaje que va luego de <strong>&#8220;=&#8221;</strong> dejando que se escriba algo.</p>
<p>También podemos multiplicarlas, sumarlas, etc&#8230; con <strong>/a</strong>:</p>
<pre>set numero1=2
ser numero2=43
set /a suma= %numero1% + %numero2%
echo %suma%
pause
exit</pre>
<p>Si ejecutamos este, nos devolverá la suma de 2 + 43, 45.</p>
<p>Creo que con esto será suficiente.</p>
<p>Ojalá  hayan entendido y les haya interesado el batch, que principalmente se  puede usar para facilitar algunas tareas de Windows, ya que como  veremos en la segunda parte del tutorial se pueden lograr cosas bastante  interesantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/programacion-en-batch-1%c2%ba-parte/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Fisica en 3D Studio Max</title>
		<link>http://jestudio.cl/blog/12/</link>
		<comments>http://jestudio.cl/blog/12/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 22:44:20 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Computación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Studio Max]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=12</guid>
		<description><![CDATA[En este Tutorial veremos simular física en 3D Studio Max. Fue hecho en la octava versión de este programa, por lo cual no aseguro que funcione en versiones anteriores. Pero haz la prueba en todo caso. Lo primero que haremos sera crear una caja (box) que la usaremos como suelo, por lo tanto debe abarcar [...]]]></description>
			<content:encoded><![CDATA[<p>En este <a href="http://jestudio.cl/blog/category/tutoriales/" target="_blank">Tutorial</a> veremos simular física en <a href="http://www.google.es/url?sa=t&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fes.wikipedia.org%2Fwiki%2F3D_Studio_Max&amp;ei=nbRnR_fVGqO--QLd0tzfDg&amp;usg=AFQjCNHgyPNdux_Ji3EcXwp8gQFTyABbcQ&amp;sig2=C-pg4ZZCxbbVa2GcpllLBA" target="_blank">3D Studio Max</a>. Fue hecho en la octava versión de este programa, por lo cual <strong>no aseguro que funcione en versiones anteriores</strong>. Pero haz la prueba en todo caso.</p>
<p>Lo  primero que haremos sera crear una caja (box) que la usaremos como  suelo, por lo tanto debe abarcar un espacio relevante pero con poca  altura. Como suelo también podemos ocupar un plano (plane)</p>
<p>Luego, a cierta altura del suelo colocaremos distintos objetos. Ojala sean cajas y esferas, en mi caso ocupé dos cubos.</p>
<p>Mi escenario quedo de esta forma:</p>
<div><img src="http://www.cristalab.com/images/tips/stuff/fisica3dmax/3dmax1.jpg" border="0" alt="Imagen1" /></div>
<p><span id="more-12"></span>Luego seleccionaremos todos nuestros objetos del escenario para transformarlos en una &#8220;Rigid Body Collection&#8221;.</p>
<p>Esto  se puede lograr clickeando el icono de 3 cubos apilados en forma de  pirámide que esta en el panel de &#8220;reactors&#8221; (Normalmente se sitúa  arriba o a la izquierda) o desde el menú:</p>
<ul>
<li><strong>Reactor&gt;Create Object&gt;Rigid Body Collection</strong>(Recuerda de que los objetos deben estar seleccionados)</li>
</ul>
<div><img src="http://www.cristalab.com/images/tips/stuff/fisica3dmax/3dmax2.jpg" border="0" alt="IMagen2" /></div>
<p>Una vez hecho esto debemos darle las propiedades físicas a los objetos.</p>
<p>En mi caso quiero darles las mismas propiedades a ambos cubos (Aunque podrían ser diferentes)</p>
<p>Por lo que seleccione a ambos y abrí el Editor de Propiedades.</p>
<ul>
<li><strong>reactor&gt;Open Property Editor</strong>(o desde el panel reactors)</li>
</ul>
<p>En la ventana que me apareció le di la propiedad de:</p>
<div>masa: 10</p>
<p>Fricción: 0,3  (predeterminado)</p>
<p>Elasticidad: 0,3 (predeterminado)</p>
<p>Y además seleccione la opción Bounding Box (en caso de ser una esfera seleccionamos Bounding Sphere)</p>
</div>
<div><img src="http://www.cristalab.com/images/tips/stuff/fisica3dmax/3dmax3.jpg" border="0" alt="IMagen3" /></div>
<p>Ahora  le daremos las propiedades al suelo, clickeamos sobre la caja que  simula ser el suelo y le damos las siguiente propiedades en el Editor  de Propiedades. Masa 0, Fricción y Elasticidad 0.3, y la opción  Bounding Box (En caso de ser un plano Concave Mesh).</p>
<p>Una vez todo esto listo, vamos a:</p>
<ul>
<li><strong>Reactor &gt; Preview Animation </strong></li>
</ul>
<p>Para ver como se vería nuestra animación.</p>
<p>Y si es que ya nos gusta vamos a:</p>
<ul>
<li><strong>Reactor &gt; Create Animation</strong></li>
</ul>
<p>(Aquí nos advertirá que el proceso es irreversible)</p>
<p>Con algunos cambios de color y un renderizado quedo así:<br />
<a href="http://www.youtube.com/watch?v=A2GFbheIUbE"><img src="http://img.youtube.com/vi/A2GFbheIUbE/default.jpg" width="130" height="97" border=0></a><br />
Pueden crear cosas mucho mejores con un poco de imaginación, como por ejemplo un circuito de domino.</p>
<p>Ojala les sea de ayuda. Suerte <img src='http://jestudio.cl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Onda sonora con perdida de Intencidad en As3.</title>
		<link>http://jestudio.cl/blog/onda-sonora-as3/</link>
		<comments>http://jestudio.cl/blog/onda-sonora-as3/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 00:13:22 +0000</pubDate>
		<dc:creator>JaLeRu</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[As3]]></category>
		<category><![CDATA[Efectos]]></category>
		<category><![CDATA[Fisica]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tip]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://jestudio.cl/blog/?p=10</guid>
		<description><![CDATA[Primero que todo creemos un nuevo proyecto en As3. Luego, para que entiendan un poco lo que hago explicare lo que haremos. Una onda sonora, imaginémosla como una esfera (tridimensional) que se expande, crece. Que cuando esa esfera llega a nuestros oídos, escuchamos el sonido. Una sonora al viajar por el espacio, va perdiendo su [...]]]></description>
			<content:encoded><![CDATA[<p>
<object width="300" height="300">
<param name="movie" value="http://jestudio.cl/blog/wp-content/uploads/2008/04/onda-sonora-con-perdida-de-intencidad.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#ffffff"></param>
<embed type="application/x-shockwave-flash" width="300" height="300" src="http://jestudio.cl/blog/wp-content/uploads/2008/04/onda-sonora-con-perdida-de-intencidad.swf" quality="high" bgcolor="#ffffff" wmode="window" menu="false" ></embed>
</object>
</p>
<p>Primero que todo creemos un nuevo proyecto en As3.<br />
Luego, para que entiendan un poco lo que hago explicare lo que haremos.<br />
Una onda sonora, imaginémosla como una esfera (tridimensional) que se expande, crece. Que cuando esa esfera llega a nuestros oídos, escuchamos el sonido.<br />
Una sonora al viajar por el espacio, va perdiendo su intensidad por lo que entre más lejos estemos, menos la escucharemos. La razón de intensidad es potencia partido por superficie de la esfera.<br />
De manera que entre más superficie tenga la esfera (mayor sea su tamaño) menor sera la intensidad.<br />
La potencia lo podemos pensar como con la fuerza que comienza. Ejemplo, su yo susurro mi potencia sera mucho más pequeña que si diera un fuerte grito.<br />
Como ultimo, recordar que la superficie de una esfera es: 4<strong>π</strong>r2<strong> </strong>(4 Pi por radio al cuadrado)<br />
Dejémonos de tanto blabla y vamos al grano.<br />
<span id="more-10"></span>Vamos a el primer frame y escribimos lo siguiente:</p>
<pre>var potencia:Number=10000; //Potencia de la Onda
function newOnda(e:MouseEvent){
var onda:MovieClip=new MovieClip();
addChild(onda);
onda.x=mouseX;<code>
onda.y=mouseY;
onda.radio=1;
onda.superf=1;
onda.pot=potencia;
onda.addEventListener(Event.ENTER_FRAME, expandir);
}
function expandir(e:Event){
var target=e.currentTarget;
target.superf=4*Math.PI*Math.pow(target.radio,2);
var inten=target.pot/target.superf;
target.graphics.clear();
target.graphics.lineStyle(2,0,inten);
target.graphics.drawCircle(0,0,target.radio);
target.radio++;
if(target.inten&lt;0.01){
target.removeEventListener(Event.ENTER_FRAME,expandir);
removeChild(target);
}
}
stage.addEventListener(MouseEvent.MOUSE_DOWN, newOnda);</code></pre>
<p>Explico el código.<br />
Primero esta la variable <strong>Potencia </strong>que no es nada más que la potencia. Intenten que no sea menor que 100.<br />
Luego esta la función <strong>newOnda </strong>lo que hace es crear la nueva onda con sus propiedades. (Posición del Mouse por ejemplo, para que aparezca donde hacemos click) luego al final de la función, a este MovieClip que sera una de nuestras Onda Sonoras se le agrega un Listener con la función <strong>expandir</strong> que se encarga de dibujar la onda según las propiedades.  Una vez que la onda tiene una Intensidad menor a 0.01 sera eliminada, para no gastar demasiados recursos.<br />
Por ultimo la función de abajo es la que se encarga de que cada vez que se haga click se ejecute la función <strong>newOnda</strong></p>
<p>!Wala, tenemos una onda Sonora con perdida de intensidad ( 2D eso sí) y un bonito efecto.<br />
(Click aquí abajo, para probar)</p>
<p>
<object width="300" height="300">
<param name="movie" value="http://jestudio.cl/blog/wp-content/uploads/2008/04/onda-sonora-con-perdida-de-intencidad.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#ffffff"></param>
<embed type="application/x-shockwave-flash" width="300" height="300" src="http://jestudio.cl/blog/wp-content/uploads/2008/04/onda-sonora-con-perdida-de-intencidad.swf" quality="high" bgcolor="#ffffff" wmode="window" menu="false" ></embed>
</object>
</p>
<p>Enjoy It.</p>
]]></content:encoded>
			<wfw:commentRss>http://jestudio.cl/blog/onda-sonora-as3/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

