tag:blogger.com,1999:blog-172536822024-03-05T04:06:52.442-03:00Código FuenteApuntes de programación. Ejemplos de código en PHP, C, Javascript, jQuery, Pascal, Java y C++.Unknownnoreply@blogger.comBlogger154125tag:blogger.com,1999:blog-17253682.post-52840364547723338212013-10-25T13:12:00.003-03:002013-10-25T13:14:08.260-03:00Problemas con apache2 luego de actualizar a Ubuntu 13.10En <strong>Ubuntu 13.10</strong> el paquete apache2 trae una nueva versión de apache que tiene unos cambios bastante disruptivos por lo que es muy posible que tus sitios dejen de funcionar.<br />
Una pequeña guía de pasos a chequear:<br />
<br />
<b>1. ¿Tu virtual host termina en .conf?</b><br />
<b><br /></b>
Hace un <code>ls -l /etc/sites-enabled</code> y revisa que todos los archivos terminen en .conf Los que no terminan así borralos, y luego renombralos en
<code>ls -l /etc/sites-enabled</code> para que terminen en .conf Una vez renombrados activalos con <code>a2ensite nombre_virtual_host</code>.<br />
<br />
<b>2. ¿Seguridad estás usando la sintáxis Allow from all?</b><br />
<b><br /></b>
Esto también cambia así que lo que antes era:<br />
<pre><directory tu-sitio="">
order allow,deny
allow from all
</directory>
</pre>
Cambialo a<br />
<pre><directory tu-sitio="">
Require all granted
</directory>
</pre>
<b>3. ¿Tenías el directorio por fuera de /var/www/?</b><br />
<b><br /></b>
Otra cosa rompe bo**, en la configuración por default. Lo más rápido es que hagas un symlink desde /var/wwww a tu directorio:<br />
<br />
<pre>cd /var/www
ln -s /home/user/tu-wwww
</pre>
<pre>
</pre>
Y obvio en las entradas de directorio del virtual host usá:<br />
<pre><directory tu-sitio="" var="" www="">
Require all granted
Options +Indexes +FollowSymLinks +MultiViews<directory cloudymedia.com="" var="" www="">
AllowOverride all</directory></directory></pre>
<pre><directory tu-sitio="" var="" www=""><directory cloudymedia.com="" var="" www="">
</directory>
</directory></pre>
Eso es todo lo que me falló a mi.<br />
<br />
Mensaje de error que posiblemente viste:<br />
<br />
<pre>[Fri Oct 25 12:48:54.144479 2013] [authz_core:error] [pid 6008] [client 127.0.0.1:57633] AH01630: client denied by server configuration: /home/user/tu-sitio/
</pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-6682407949956590972013-10-24T17:42:00.002-03:002013-10-24T17:42:47.335-03:00Como conectarse a un UNIX-SOCKET desde la línea de comandos<p>
Siempre pierdo este comando así que dejo esta nota en el blog. Si tenemos un proceso que permite conectarse mediante UNIX-SOCKETS hay un comando super útil para utilizar como cliente conocido como <a href="http://www.dest-unreach.org/socat/">socat</a>. Para hacerlo simplemente hacemos:
</p>
<pre>
socat UNIX-CONNECT:/tmp/Nombre_Socket -
</pre>
<p>El guión del final le indica que usaremos STDIN como método de entrada. Con esto bastaría pero con esto sólo no vamos a tener ni historial ni las capacidades de edición en línea de bash, para obtener todo esto simplemente usamos <a href="http://utopia.knoware.nl/~hlub/rlwrap/#rlwrap">rlwrap</a>. El comando final queda:</p>
<pre>
rlwrap socat UNIX-CONNECT:/tmp/Nombre_Socket -
</pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-64360795378716698952013-07-17T13:16:00.000-03:002013-07-17T18:19:34.201-03:00Como usar AJAX con jQuery todo lo que necesitas saber <h3>Ajax en jQuery la explicación que faltaba, con todos los ejemplos</h3>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjij2OlSPcsepyZ4H1AwUh3MS0QO9Le3Q9Nw9bb-IlBr_-NrZQBfl-KaV0GFHZkgBW3yXyNAVebZ8tbZYskmydjyvLxKpLNPvy-CS__DskHOEkWgj7FeA6iUP9t5nCavucU2ZTo/s1600/jquery-log.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjij2OlSPcsepyZ4H1AwUh3MS0QO9Le3Q9Nw9bb-IlBr_-NrZQBfl-KaV0GFHZkgBW3yXyNAVebZ8tbZYskmydjyvLxKpLNPvy-CS__DskHOEkWgj7FeA6iUP9t5nCavucU2ZTo/s320/jquery-log.png" /></a></div>
<p>
Vamos a ver las mejores maneras de utilizar <strong>AJAX</strong> junto a <strong>jQuery</strong></p>
<p>
En primer lugar expliquemos que AJAX es una tecnología bastante madura
por la cual los navegadores pueden realizar peticiones web sin recargar
completamente la página. La librería jQuery tiene una serie de funciones
muy convenientes con las cuales podremos simplificar el uso de AJAX para todos los
navegadores soportados.</p>
<p>
Hay varias funciones que implican el uso de AJAX en jQuery a continuación te presentamos las más comunes y
una breve descripción de su caso de uso más común. Es importante tener presente este resumen porque la al
haber tantas funciones uno no sabe exactamente cuál usar, esta lista los ayudará con esa decisión.
</p>
<ul>
<li><a href="#post_get">jQuery.get</a>: hace una petición HTTP GET debería ser uno de los usos más comunes, sobre todo cuando no deseas mandar muchos datos al servidor o para acciones que no modifican el estado del server.</li>
<li><a href="#post_post">jQuery.post</a>: hace una petición HTTP POST deberías usarla cuando queres enviar muchos datos al servidor o cuando deseas modificar el estado del server.</li>
<li><a href="#post_getJSON">jQuery.getJSON</a>: Si quien responde envia JSON, este es un buen método para simplificar la llamada porque te entregará el objeto listo para usar.</li>
<li><a href="#post_load">jQuery.load</a>: muy popular entre los usuarios de jQuery, esta petición pone el resultado directamente en el elemento desde que se llamó.</li>
<li><a href="#post_ajax">jQuery.ajax o $.ajax</a>: es la función más generica o de más bajo nivel con esta podrás hacer cualquiera de los llamados AJAX que se logran con las otras.</li>
</ul>
<h4 id="post_get">
jQuery.get e introducción a llamadas asincrónicas</h4>
<p>
La forma más sencilla de la función es <code>$.get(url)</code>
dónde <code>url</code> es el recurso que queremos solicitar. Al ejecutar ese código
simplemente le diremos a nuestro navegador que abra una petición a esa url y que no haga
nada con el resultado. No estaríamos haciendo nada en la página, pero tal vez nos interese
para notificar al server de algo (por ejemplo hacerlo cada cierto tiempo para no que no se
desloguee un usuario).
</p>
<p>
La forma más común de esta función es en realidad <code>$.get(url, function(resultado) {})</code>
con esta forma estamos pasando una función que se ejecutará con el resultado cuando la petición termine.
Es importante entendender que las peticiones en AJAX son por defecto <strong>asincrónicas</strong>, esto
significa que el javascript continuará la ejecución de las siguientes instrucciones que sigan a una petición
y en otro hilo de ejecución comenzará a realizar la entrada y salida necesaria para la petición. <strong>¿No entendiste nada de asincrónico y entrada/salida?</strong>
mira el siguiente ejemplo:
</p>
<pre class="ejemplo examplejavascript">
log('Comienza ejecución');
$.get('/feeds/posts/default', function(data) {
log('Termino de cargar la primer petición');
});
$.get('/feeds/posts/default', function(data) {
log('Termino de cargar la segunda petición');
});
log('Última línea del programa');
</pre>
<p>
Si le das al botón ejecutar, verás que los logs que deja el
programa no están en el orden en que aparecen textualmente. Esto
es porque como dijimos el hilo de ejecución no se detiene a
esperar la finalización de una llamada AJAX, simplemente
continua con el programa y otro hilo de ejecución de tu
navegador se ocupará de realizar las peticiones y a medida que
las termine llamará a las funciones (usualmente conocidas como
callbacks) con el resultado de la ejecución que le pasaste en
cada llamada a <code>get</code>. Este estilo de programación se
conoce como entrada/salida no bloqueante y es muy común en
Javascript, y se encuentra en contraposición al estilo
bloqueante tradicional de entrada y salida de otros
lenguajes/entornos (como C, Java, etc). Últimamente se puso muy de moda
por el entorno <a href="http://nodejs.org/">node.js</a>.
</p>
<h4 id="post_get">
jQuery.post haciendo una petición POST y su diferenciación con .get</h4>
<p>
Con este método haremos una petición HTTP de tipo POST,
usualmente útilizadas para realizar una acción que cambie el
estado del servidor. ¿A qué me refiero? Cuando vos te traes una
lista de usuarios generalmente no estás modificando para nada el
estado del servidor. Simplemente estás solicitando un listado y no
modificas ninguno de sus datos. El servidor seguramente hará una
query sql de tipo <code>SELECT ... </code> y tu petición no
causará ninguna modificación en el estado del servidor. Ese tipo
de peticiones suelen (y deberían hacerse) con peticiones
de <strong>tipo get</strong> (utilizando la función <code>$.get</code>).
Contrariamente si uno actualiza un nombre de usuario, o borra un usuario estaría
causando un cambio en el servidor por lo que lo correcto es usar una petición
POST con la función <code>$.post</code>. Otra razón para utilizar una petición
POST es si la cantidad de datos a enviar al servidor es muy grande (las peticiones GET envian
los datos como parte de la URL y algunos servidores web limitan el tamaño que una URL puede tener).
</p>
<p>
Veamos el mismo ejemplo anterior pero ahora utlizando peticiones POST:</p>
<pre class="ejemplo examplejavascript">
log('Comienza ejecución');
$.post('/feeds/posts/default', function(data) {
log('Termino de cargar la primer petición');
});
$.post('/feeds/posts/default', function(data) {
log('Termino de cargar la segunda petición');
});
log('Última línea del programa');
</pre>
<p>
Como verán cambiar la función get por post no cambia el caracter
asincrónico del programa, ya que como dijimos todas las llamadas
AJAX son por defecto asincrónicas.</p>
<p>
Lo siguiente es mostrar un ejemplo en dónde enviamos datos al servidor.</p>
<p>
Como dijimos en el caso de <code>$.get</code> los datos se enviarán como
parte de la URL (usualmente a estos datos se los llama query string y toman la forma de
<code>?clave=valor&clave2=valor2</code>) en cambio en el caso de POST los datos
seran parte del cuerpo de la petición. Por dar el ejemplo más común de un lenguaje servidor:
en PHP podrás acceder a los datos enviados por AJAX con: <code>$_GET["clave"]</code>, <code>$_POST["clave"]</code> o si
queres revisar los dos el conveniente <code>$_REQUEST["clave"]</code>.
Visto esto veamos dos ejemplos en los que enviamos datos al servidor, la forma es igual para
get y post:
</p>
<pre class="ejemplo">$.post("/test.php", {clave: "valor"}, function(respuesta) {
console.log("La respuesta es:", respuesta)
});
$.post("/test.php", {clave: "valor"}, function(respuesta) {
console.log("La respuesta es:", respuesta)
});
</pre>
<p>
<strong>Consejo para debugguear:</strong> los programadores suelen utilizar las
herramientas que brinda el navegador para poder ver exactamente
que peticiones esta haciendo la página web que están
programando. En el caso del navegador Google Chrome esto lo
puedes ver en la pestaña de Network o de Red de las herramientas
para el desarrollador, accediendo desde Herramientas. En el caso
de Firefox puedes bajarte la excelente extensión Firebug que
también cuenta con la misma pestaña.
</p>
<p>
Si querés probar en tu propio servidor podrías generar un archivo <code>test.php</code> con
el siguiente contenido:</p>
<pre class="ejemplo"><?php
var_dump($_REQUEST);
</pre>
<h4 id="post_getJSON">
Trabajando con JSON getJSON</h4>
<p>
Suele ser bastante común que las páginas planeadas para el uso de AJAX utilicen JSON
como lenguaje de intercambio con el servidor. Esto permite que el servidor responda
de manera liviana sin toda la sobrecarga que implica el uso de HTML, y con la ventaja de que
los datos recibidos son fácilmente parseables por el navegador. La función <code>$.getJSON</code>
realiza (a igual que <code>$.get</code>) una petición GET, con la diferencia de que esperará
como respuesta del servidor JSON bien formado.
</p>
<p>
Veamos primero como podría ser esta vez el archivo <code>test-json.php</code></p>
<pre class="ejemplo"><?php
$datos = array("mensaje" => "Hola soy json", "error" => false);
echo json_encode($datos);
</pre>
<p>
Veamos ahora el programa que podría pedir por estos datos:</p>
<pre class="ejemplo">$.post("/test-json.php", function(respuesta) {
console.log("La respuesta ya viene en forma de objeto:", respuesta.mensaje, respuesta.error)
});
</pre>
<p>
Si todo fue bien en el callback recibirás un objeto javascript construído a partir
del json enviado por el servidor.</p>
<p>
<strong>NOTA SOBRE ERRORES:</strong> no es poco común ver errores de
CrossOrigin entre los que empiezan a utilizar AJAX. Estos errores se
deben a que debido a políticas de seguridad los navegadores sólo
permiten hacer peticiones al mismo dominio desde dónde cargo la
página. Es decir uno no podría hacer una petición AJAX a google.com si
el navegador se encuentra en la página de Codigo Fuente. Este problema
puede solucionarse utilizando otras técnicas como JSONP que implica el
uso de tags <code>script</code>, pero esta técnica es algo más
compleja y la veremos en algún otro artículo.</p>
<h4 id="post_load">
jQuery.load utilizando el resultado rápidamente</h4>
<p>
Este es otro de los métodos que permite hacer una petición GET, la diferencia
es que cuando es llamado desde un elemento, el contenido de ese elemento sera cargado por la
respuesta de la petición. Esta técnica es útil para llenar un div o elemento rápidamente con
una respuesta AJA. Si se proporciona un callback, el callback se ejecutará después de cargarse
el elemento.</p>
<pre class="ejemplo">$("#destino").load("/test.php", function() {
console.log("Este mensaje se ejecutará luego de que se cargue el div con id = destino");
});
</pre>
<p>
Una de las funciones desconocidas de <code>$.load</code> que la mayoría de los desarrolladores
ignora es que a la misma respuesta se le puede aplicar un filtro por selectores para usarla parcialmente.
Esto significa que si del html que nos responde el servidor queremos utilizar sólo un div podremos seleccionarlo
con los típicos selectores de jQuery (que si por no lo sabías son selectores CSS).
</p>
<pre class="ejemplo">$("#destino").load("/test.php #detalles"); // de lo que responda test.php solo nos quedamos con el div id="detalles"
</pre>
<h4 id="post_ajax">
jQuery.ajax la función bajo nivel</h4>
<p>
Esta es la función de más bajo nivel que posee jQuery utilizandola podremos controlar
todos los aspectos importantes de la petición AJAX que estemos haciendo.</p>
<p>
Veamos un ejemplo: </p>
<pre class="ejemplo">$.ajax("/test.php", {
"type": "post", // usualmente post o get
"success": function(result) {
console.log("Llego el contenido y no hubo error", result);
},
"error": function(result) {
console.error("Este callback maneja los errores", result);
},
"data": {clave: "Valor a enviar al servidor"},
"async": true,
});
</pre>
<p>
Es interesante el último de los parametros porque permite apagar el
comportamiento asincrónico de la petición lo que causaría que antes de
ejecutar la siguiente instrucción javascript espere a que se termine
de ejecutar la petición.
</p>
Unknownnoreply@blogger.com10tag:blogger.com,1999:blog-17253682.post-75348321417596647372011-11-02T07:56:00.001-03:002013-07-17T13:55:22.921-03:00Como saber la versión de ubuntu por línea de comandos<p> Para saber que versión de Ubuntu estamos utilizando sólo valiéndonos de la línea de comandos podemos revisar el contenido de <code>/etc/lsb-release</code>. Por ejemplo:<br />
</p><pre>user@host-name:/var/www/$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.3 LTS"
</pre><br />
<p>Muestra la salida de un Ubuntu LTS (el 10.04.3)<br />
</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-89321484816637250892011-06-08T18:43:00.002-03:002011-06-08T18:44:26.922-03:00El tipo boolean y el objeto Boolean en Java<p>En <strong>Java</strong> tenemos dos maneras de representar el concepto de booleano, una forma es con el tipo primitivo <code>boolean</code> y la otra es utilizando el objeto de la clase <code>Boolean</code>. En el siguiente ejemplo se ve como crearlos y como pasar de uno a otro y como se comportan en las comparaciones:</p>
<pre class="ejemplo">
class EjemploBoolean {
public static void log(String s) {
System.out.println(s);
}
public static void main(String args[]) {
Boolean objetoTrue = new Boolean("true");
Boolean objetoFalse = new Boolean("false");
boolean valorPrimitivoTrue = objetoTrue.booleanValue(); // pasando del objeto al valor primitivo.
log("valorPrimitivoTrue: " + valorPrimitivoTrue);
log("objetoTrue: " + objetoTrue);
log("objetoFalse: " + objetoFalse);
if(objetoTrue) {
log("Rama de true");
}
if(objetoFalse) {
log("Rama de true no debería pasar.");
}
log("Comparando objetoTrue == valorPrimitivoTrue: " + (objetoTrue == valorPrimitivoTrue) );
}
}
</pre>
<p>La salida del anterio programa es la siguiente:</p>
<pre class="ejemplo">
#javac EjemploBoolean.java && java EjemploBoolean
valorPrimitivoTrue: true
objetoTrue: true
objetoFalse: false
Rama de true
Comparando objetoTrue == valorPrimitivoTrue: true
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-81077948767392371252011-06-07T23:05:00.002-03:002011-06-07T23:07:24.949-03:00Ejemplo de foreach en Java<p>Quienes vengan del mundo de PHP conocerán que la forma más sencilla de iterar un array en ese lenguaje es utilizar la estructura de control <code>foreach</code>. Java no posee esa palabra reservada, pero si puede lograrse una forma de iteración equivalente mediante el uso de <code>for</code> y una sintáxis como la que se aprecia en el siguiente ejemplo:</p>
<pre class="ejemplo">
class ForeachEjemplo {
public static void main(String args[]) {
String [] arrStr = {"1", "2", "3", "4", "5"};
for(String elemento : arrStr) {
System.out.println(elemento);
}
}
}
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-54521576580876955902011-06-07T22:53:00.002-03:002011-06-07T23:00:34.000-03:00Como pasar de int a un String en Java<p>A continuación un ejemplo de como pasar desde un String a un valor int en Java utilizando el método estático de la clase <code>String</code>.<code>parseInt</code> </p>
<pre class="ejemplo">
class StringAInt {
public static void main(String args[]) {
String valorStr1 = "1";
String valorStr2 = "1";
String valorStr3 = " 1 ";
int valorInt1 = Integer.parseInt(valorStr1);
int valorInt2 = Integer.parseInt(valorStr2);
int valorInt3 = Integer.parseInt(valorStr3.trim());
System.out.println(valorInt1 + valorInt2 + valorInt3);
}
}
</pre>
<p>Los primeros dos valores se parsearon directamente porque venían en un formato adecuado. En cambio el valor contenido en la variable <code>valorStr3</code> fue primero <em>trim</em>eado porque contenía espacios.</p>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-17253682.post-4297486304357897022011-06-07T22:16:00.002-03:002011-06-07T22:18:04.027-03:00Como leer un archivo de texto en Java<p>En el siguiente ejemplo se muestra como leer un archivo de texto utilizando Java. El archivo se lee línea por línea, y a medida que avanza la lectura se imprimen la líneas por pantalla.</p>
<pre class="ejemplo">
import java.io.*;
class LeerArchivo {
public static void main(String args[]) {
try{
// Abrimos el archivo
FileInputStream fstream = new FileInputStream("LeerArchivo.java");
// Creamos el objeto de entrada
DataInputStream entrada = new DataInputStream(fstream);
// Creamos el Buffer de Lectura
BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
String strLinea;
// Leer el archivo linea por linea
while ((strLinea = buffer.readLine()) != null) {
// Imprimimos la línea por pantalla
System.out.println (strLinea);
}
// Cerramos el archivo
entrada.close();
}catch (Exception e){ //Catch de excepciones
System.err.println("Ocurrio un error: " + e.getMessage());
}
}
}
</pre>Unknownnoreply@blogger.com24tag:blogger.com,1999:blog-17253682.post-31365184076925932112011-06-07T22:02:00.003-03:002011-06-07T22:07:24.372-03:00Ejemplo de String indexOf de Java<p>El método <strong>indexOf</strong> de la clase <strong>String</strong> de Java, nos permite obtener el índice de comienzo de una subcadena dentro de otra.</p>
<pre class="ejemplo">
public class indexOfEjemplo {
public static void main(String[] args) throws Exception{
String cadena = "Codigo Fuente en Java";
int index = cadena.indexOf("Java");
System.out.println(index);
}
}
</pre>
<p>Cuando queremos conocer sucesivas apariciones de una subcadena, podemos llamar la función repetidamente, pero con un segundo parametro que incluíra el índice de la última posición encontrada más 1. Por ejemplo: </p>
<pre class="ejemplo">
public class indexOfEjemplo01 {
public static void main(String[] args) throws Exception{
String cadena = "Codigo Fuente en Java y aca aparece otra vez Java";
int index = cadena.indexOf("Java");
System.out.println(index);
index = cadena.indexOf("Java",index+1);
System.out.println(index); // imprime segunda aparicion de Java
}
}
</pre>Unknownnoreply@blogger.com17tag:blogger.com,1999:blog-17253682.post-56127868352132174122011-06-07T21:41:00.003-03:002011-06-07T21:53:33.236-03:00El método SPLIT en Java<p>Veamos un ejemplo sencillo de como utilizar el método <strong>split</strong> en Java. En este ejemplo convertiremos una cadena a un array de cadenas.</p>
<pre class="ejemplo">
public class EjemploSplit {
public static void main (String args[]) {
String numeros = "1,2,3,4,5,6";
String[] numerosComoArray = numeros.split(",");
for (int i = 0; i < numerosComoArray.length; i++) {
System.out.println(numerosComoArray[i]);
}
}
}
</pre>Unknownnoreply@blogger.com14tag:blogger.com,1999:blog-17253682.post-23849618124789477692011-06-07T21:36:00.003-03:002011-06-07T21:39:08.580-03:00Ejemplo de Herencia en Java<p>Acá tenemos el ejemplo básico de herencia en Java. En este caso la clase <strong>Ciudadano</strong> hereda desde la clase <strong>Persona</strong>, para tomar funcionalidad y extenderla.</p>
<pre class="ejemplo">
class Humano {
protected String nombre;
protected String apellido;
public Humano(String nombre,String apellido) {
this.nombre = nombre;
this.apellido = apellido;
}
public String nombreCompleto() {
return this.apellido + ", " + this.nombre;
}
public String identificacion() {
return this.nombreCompleto();
}
}
class Ciudadano extends Humano {
protected String documento;
public Ciudadano(String nombre,String apellido, String documento) {
super(nombre,apellido);
this.documento = documento;
}
public String identificacion() {
return super.identificacion() + ", documento: " + this.documento;
}
}
public class Herencia {
public static void main (String args[]) {
Humano a = new Humano("Emilio","Rosso");
Ciudadano b = new Ciudadano("Emilio","Rosso","3052454545");
Humano [] arregloDeHumanos;
arregloDeHumanos.push(a);
arregloDeHumanos.push(b);
identificarPolimorfico(arregloDeHumanos);
}
public static void identificarPolimorfico(Humano [] arregloDeHumanos) {
for(int i = 0; i < arregloDeHumanos.length ; i++) {
System.out.println("Identificando: " + arregloDeHumanos[i].identificacion());
}
}
}
</pre>Unknownnoreply@blogger.com9tag:blogger.com,1999:blog-17253682.post-53311686122635949372011-06-04T17:52:00.004-03:002011-06-04T17:56:59.913-03:00Todo sobre jQuery y los checkbox<p>Aquí una serie de ejemplos para aprender a utilizar jQuery y los
checkbox de formulario.</p>
<h3>Saber si un checkbox está checkeado o no</h3>
<div class="exampleform">
<input class="ejemploCheckbox1" type="checkbox" name="checkbox1" value="Valor checkbox1" checked="checked" /> Checkbox 1
<input class="ejemploCheckbox1" type="checkbox" name="checkbox2" value="Valor checkbox2" /> Checkbox 2
</div>
<p>Estos checkbox abmos tienen la clase <code>checkbox1</code>, veamos
como ejecutar un código que nos diga en que estado está cada uno (para
ejecutar algo con cada uno utilizaremos el
método <a href="http://codigomaldito.blogspot.com/2011/05/jquery-each-ejemplos.html">each
de jQuery</a>.) </p>
<pre class="ejemplo examplejavascript">
$('.ejemploCheckbox1').each(function(){
var checkbox = $(this);
log('El checkbox ' + checkbox.attr('name') + ' está checkeado? ' + checkbox.is(':checked') );
});
</pre>
<p>Como ven la cuestión se reduce a utilizar el método <code>is</code>
con el prédicado <code>checked</code>.</p>
<h3>Setear el valor de un checkbox:</h3>
<div class="exampleform">
<input class="ejemploCheckbox2" type="checkbox" name="checkbox1" value="Valor checkbox1" checked="checked" /> Checkbox 1
<input class="ejemploCheckbox2" type="checkbox" name="checkbox2" value="Valor checkbox2" /> Checkbox 2
</div>
<p>Los anteriores checkbox tienen la
clase <code>ejemploCheckbox2</code>, setear el valor de cada uno de
ellos con jQuery es muy fácil utilizando el
método <code>attr</code>:</p>
<pre class="ejemplo examplejavascript">
$('[name="checkbox1"].ejemploCheckbox2').attr('checked',false);
$('[name="checkbox2"].ejemploCheckbox2').attr('checked',true);
</pre>
<p>En el código anterior utilizamos un selector por el atributo name,
y luego al elemento matcheado le seteamos la propiedad checked,
utilizando un valor <code>true</code> o <code>false</code>.</p>
<h3>Ejecutar código cuando se checkea un checkbox:</h3>
<p>Como último ejemplo veamos como realizar una acción cuando se
checkea o se descheckea un checkbox. Para eso utilizaremos el evento
click del checkbox, y el predicado <code>:checked</code> como vimos en el primer ejemplo.</p>
<div class="exampleform">
<input class="ejemploCheckbox3" type="checkbox" name="checkbox1" value="Valor checkbox1" checked="checked" /> Checkbox 1
</div>
<pre class="ejemplo examplejavascript">
$('[name="checkbox1"].ejemploCheckbox3').click(function() {
if($(this).is(':checked')) {
log('Se hizo check en el checkbox.');
} else {
log('Se destildo el checkbox');
}
});
</pre>
<p>Si hacen click en ejecutar en el código anterior. Pueden probar lo que sucede cada vez que se tilda o se destilda el checkbox del ejemplo.</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-4053312346561468562011-06-04T17:27:00.003-03:002011-06-04T17:32:18.892-03:00El método indexOf de javascript<p>El método o función <code>indexOf</code> de los arrays de
javascript, sirve para obtener el índice o posición de un elemento dado en un array.</p>
<p>Algunos navegadores como <strong>Internet Explorer 8</strong> no
cuentan con la definición de la función nativamente por lo que antes
de utilizarla la debemos definir. Tomaremos la definición que se
encuentra en la documentación de Javascript de la fundación Mozilla y
luego veremos algunos ejemplos de su uso:</p>
<pre class="ejemplo examplejavascript">
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(searchElement /*, fromIndex */)
{
"use strict";
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (len === 0)
return -1;
var n = 0;
if (arguments.length > 0)
{
n = Number(arguments[1]);
if (n !== n)
n = 0;
else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
if (n >= len)
return -1;
var k = n >= 0
? n
: Math.max(len - Math.abs(n), 0);
for (; k < len; k++)
{
if (k in t && t[k] === searchElement)
return k;
}
return -1;
};
}
var array = [1,2,3,4];
log('En array el elemento 2 se encuentra en la posición: ' + array.indexOf(2));
log('En array el elemento 4 se encuentra en la posición: ' + array.indexOf(4));
log('En array el elemento 1 se encuentra en la posición: ' + array.indexOf(1));
log('En array el elemento 0 no se encuentra, indexOf devuelve: ' + array.indexOf(0)); // -1
</pre>
<p>Hay que tener en cuenta que como se ve en la definición
de <code>indexOf</code> anterior, el operador que se utiliza para
saber si un elemento está incluído o no es: <code>===</code> y
no <code>==</code>, por lo que la comparación de tipos también se
realiza y por ejemplo la búsqueda de <code>false</code> como elemento
no dará como resultado el índice de un <code>0</code> o un string
vacío, algo que si ocurriría si se utilizara <code>==</code> como
operador de comparación de igualdad.</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-50631402390602291632011-06-04T17:17:00.002-03:002011-06-04T17:18:15.039-03:00Función trim en javascript y en jQuery<p>Javascript no cuenta con ningún método nativo para
hacer <code>trim</code> de un string. Por lo que debemos escribir
nuestra propia función <code>trim</code>. Hay varias maneras de
hacerlo, una de las más sencillas utiliza expresiones regulares:
<h3>Ejemplo de <code>trim</code></h3>
<pre class="ejemplo examplejavascript">
function trim(str) {
return str.replace(/^\s+|\s+$/g,"");
}
log(trim(" soy un ejemplo "));
</pre>
<h3>Utilizando trim de jQuery</h3>
<p>Si nuestra página se encuentra utilizando <strong>jQuery</strong>
podemos utilizar la función que trae jQuery llamada de igual manera
pero que es un método del objeto jQuery.</p>
<pre class="ejemplo examplejavascript">
log(jQuery.trim(" soy un ejemplo "));
log($.trim(" soy un segundo ejemplo "));
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-4919634200654881622011-06-04T17:06:00.001-03:002011-06-04T17:07:52.871-03:00Explicación de SWITCH y CASE en javascript<p>La estructura <strong>switch/case</strong> de Javascript nos
permite evaluar el valor de una expresión para tomar una decisión en
el flujo del ejecución. Es muy parecida a la estructura de
control <strong>if/else</strong> pero con <strong>switch/case</strong>
podemos evaluar más de dos casos.</p>
<h3>Ejemplo de switch/case evaluando una variable cadena</h3>
<pre class="ejemplo examplejavascript">
var variableAevaluar = "tres";
switch (variableAevaluar) {
case "uno":
log("Viene 1");
break;
case "dos":
log("Viene 2");
break;
case "tres":
log("Viene 3");
break;
}
</pre>
<p>En el ejemplo, como <code>variableAevaluar</code> tenía asignado el
valor <code>tres</code>, el flujo de ejecución siguió por
el <code>case "tres":</code>. Hay que tener especial atención en el
uso de la sentencia <code>break</code>. Cuando esta se omite, la
ejecución continuará por el resto de los <code>case</code> que tenga
por debajo, hasta que alguno finalice con <code>break</code>, en
general este no suele ser el comportamiento deseado.</p>
<h3>Ejemplo de switch/case utilizando el label <strong><code>default</code></strong></h3>
<p>Análogamente a <code>else</code>, la sentencia <code>switch</code>
puede utilizarse en conjunto con <code>default:</code>, etiqueta a la
cual se entrará si la expresión evaluada no coincide con los case
anteriores (o para ser más rigurosos, se entrará siempre a menos que
un <code>case</code> haya hecho terminar prematuramente la ejecución
del <code>switch</code> utilizando <code>break;</code>)</p>
<pre class="ejemplo examplejavascript">
var variableAevaluar = "NINGUNO";
switch (variableAevaluar) {
case "uno":
log("Viene 1");
break;
case "dos":
log("Viene 2");
break;
case "tres":
log("Viene 3");
break;
default:
error("El valor de variable es desconocido.");
break;
}
</pre>
<p>En la etiqueta <code>default:</code> suele ponerse código para el
manejo de errores (valores insesperados del usuarios por
ejemplo). El <code>break</code> en el último <code>case</code>
o <code>default</code> (como en este caso), es opcional ya que no hay
etiquetas que puedan seguir la ejecución, pero es buena práctica utilizarlo para
dar uniformidad al código.</p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-16623671907150727442011-06-03T18:03:00.003-03:002011-06-03T19:01:19.893-03:00Hacer un redirect con Javascript<p>Para realizar un redirect mediante <strong>javascript</strong>
podemos utilizar la propiedad <strong>window.location</strong>:</p>
<h3>Redirect normal utilizando Javascript</h3>
<pre class="ejemplo examplejavascript">
window.location.href = "http://codigomaldito.blogspot.com/2011/06/hacer-un-redirect-con-javascript.html";
</pre>
<p>Si estuviesemos adentro de un iframe y queremos hacer un redirect
en la ventana principal podemos hacer un redirect refiriendonos a la
propiedad <code>top</code> del objeto <code>window</code></p>
<h3>Redirect al top desde adentro de un iframe</h3>
<pre class="ejemplo examplejavascript">
window.top.location.href = "http://codigomaldito.blogspot.com/2011/06/hacer-un-redirect-con-javascript.html";
</pre>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-17253682.post-43523668412444589382011-06-03T17:17:00.003-03:002011-06-03T17:20:44.896-03:00Ejemplos de setTimeout en Javascript<p>
La función <strong>setTimeout</strong> permite registrar un callback
o códgo para que se ejecute dentro de un período de tiempo
determinado (o sugerido) por el segundo parametro <code>delay</code> (en
milisegundos)
</p>
<pre class="ejemplo">
var timeoutID = setTimeout(func, delay, [param1, param2, ...]);
var timeoutID = setTimeout(code, delay);
</pre>
<p>
Veamos algunos ejemplos:
</p>
<h4>Ejecutando un callback luego de 2 segundos</h4>
<pre class="ejemplo examplejavascript">
var timeoutId = setTimeout(function(){
log('Pasaron 2 segundos desde el click');
},2000);
</pre>
<h4>Ejecutando código luego de 2 segundos</h4>
<pre class="ejemplo examplejavascript">
var timeoutId = setTimeout("alert('Pasaron 2 segundos desde el click');",2000);
</pre>
<h4>Ejecutando un callback con parametros luego de 2 segundos</h4>
<p>En este caso pasaremos parametros a la función anónima que estamos registrando:</p>
<pre class="ejemplo examplejavascript">
var timeoutId = setTimeout(function(msg){
log(msg);
},2000,'Pasaron 2 segundos desde el click');
</pre>
<h4>Cancelando el timeout con clearTimeout</h4>
<p>En este ejemplo registraremos un callback pero no dejaremos que se
ejecute. Esto se puede lograr con el uso de la
función <strong><code>clearTimeout</code></strong>, a la cual podemos
pasarle el <code>id</code> devuelto por <code>setTimeout</code>.</p>
<pre class="ejemplo examplejavascript">
var timeoutId = setTimeout(function(msg){
log(msg);
},2000,'Pasaron 2 segundos desde el click');
clearTimeout(timeoutId); // "de-registramos" el callback
// nada debería ejecutarse.
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-24106861665863613072011-06-01T21:46:00.004-03:002011-06-03T15:22:26.635-03:00case en java<h3>ejemplos de for en javascript</h3>
<p>La estructura de control <code>for</code> en javascript sirve
para iterar por un <em>array</em> o un <em>objeto</em>.</p>
<h4>Usando for para iterar un array:</h4>
<p>Este es uno de los usos clásicos de <code>for</code> conocido
muchas veces como una expresión idiomática común en lenguajes como
C o C++.</p>
<pre class="ejemplo examplejavascript">
var arr = [1,2,3,4,5,6];
var arrLen = arr.length;
for(var i = 0; i < arrLen; i++) {
log('El valor de arr['+i+'] = ' + arr[i]);
}
</pre>
<p>El cuerpo de la sentencia for que está entre llaves se
ejecutará mientras sea la condición <code>i < arrLen</code> sea
verdadera. La primera expresión que inicializa <code>var i =
0</code> se ejecuta una sola vez, y la última
expresión <code>i++</code> es ejecutada por cada iteración.</p>
<p><strong>ATENCIÓN NO SE RECOMIENDA USAR ESTA FORMA.</strong>
Otra forma problemática que puede tomar la
expresión <code>for</code> para iterar un array es:</p>
<pre class="ejemplo examplejavascript">
var arr = [1,2,3,4,5,6];
for(var i in arr) {
log('El valor de arr['+i+'] = ' + arr[i]);
}
</pre>
<p>El operador <code>in</code> hace que la variable <code>i</code>
tome el valor de los índices del array, pero esto no siempre
sucedera como esperamos. Veamos algunos ejemplos en los que los
resultados con el uso de <code>for in</code> y sin <code>in</code>
varían.</p>
<pre class="ejemplo examplejavascript">
var arr = []; // declaramos un array vacío.
arr[5] = 'Valor del indice 5'; // asignamos en el elemento 5 un valor.
log('El length del array es: ' + arr.length);
for(var i ; i < arr.legnth ; i++) { // se ejecutan 5 iteraciones
log('[POR for normal] El valor de arr['+i+'] = ' + arr[i]);
}
for(var i in arr) { // sólo ejecuta una iteración
log('[POR for in] El valor de arr['+i+'] = ' + arr[i]);
}
</pre>
<p>Otro problema que puede surgir por el uso de <code>for
in</code> es que itere sobre propiedades inesperadas. Esto sucede
porque los prototipos de arrays en Javascript pueden ser
modificados (pueden agregarse propiedades). Este problema se
ilustra en el siguiente ejemplo:
</p>
<pre class="ejemplo examplejavascript">
// se modifica el prototipo de array
// para que incluya un métodos llamado `ultimo`
Array.prototype.ultimo = function () {
return this[this.length-1];
};
for (var i in []) { // en un array vacio
// nos va a listar la propiedad `ultimo`
// en nuestro array vacio
log(i);
}
// Una forma de evitar este problema es utilizar
// el método hasOwnProperty que verifica si una
// propiedad es propia del objeto y no heredada
// por su prototipo.
var arr = [];
for (var i in arr) {
if (arr.hasOwnProperty(i)) {
log(i); // en este caso no se ejecuta.
}
}
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-17253682.post-23201336474932210432011-06-01T13:12:00.002-03:002011-06-03T15:20:10.301-03:00for en javascript y for in<h3>ejemplos de for en javascript</h3>
<p>La estructura de control <code>for</code> en javascript sirve
para iterar por un <em>array</em> o un <em>objeto</em>.</p>
<h4>Usando for para iterar un array:</h4>
<p>Este es uno de los usos clásicos de <code>for</code> conocido
muchas veces como una expresión idiomática común en lenguajes como
C o C++.</p>
<pre class="ejemplo examplejavascript">
var arr = [1,2,3,4,5,6];
var arrLen = arr.length;
for(var i = 0; i < arrLen; i++) {
log('El valor de arr['+i+'] = ' + arr[i]);
}
</pre>
<p>El cuerpo de la sentencia for que está entre llaves se
ejecutará mientras sea la condición <code>i < arrLen</code> sea
verdadera. La primera expresión que inicializa <code>var i =
0</code> se ejecuta una sola vez, y la última
expresión <code>i++</code> es ejecutada por cada iteración.</p>
<p><strong>ATENCIÓN NO SE RECOMIENDA USAR ESTA FORMA.</strong>
Otra forma problemática que puede tomar la
expresión <code>for</code> para iterar un array es:</p>
<pre class="ejemplo examplejavascript">
var arr = [1,2,3,4,5,6];
for(var i in arr) {
log('El valor de arr['+i+'] = ' + arr[i]);
}
</pre>
<p>El operador <code>in</code> hace que la variable <code>i</code>
tome el valor de los índices del array, pero esto no siempre
sucedera como esperamos. Veamos algunos ejemplos en los que los
resultados con el uso de <code>for in</code> y sin <code>in</code>
varían.</p>
<pre class="ejemplo examplejavascript">
var arr = []; // declaramos un array vacío.
arr[5] = 'Valor del indice 5'; // asignamos en el elemento 5 un valor.
log('El length del array es: ' + arr.length);
for(var i ; i < arr.legnth ; i++) { // se ejecutan 5 iteraciones
log([POR for normal] 'El valor de arr['+i+'] = ' + arr[i]);
}
for(var i in arr) { // sólo ejecuta una iteración
log('[POR for in] El valor de arr['+i+'] = ' + arr[i]);
}
</pre>
<p>Otro problema que puede surgir por el uso de <code>for
in</code> es que itere sobre propiedades inesperadas. Esto sucede
porque los prototipos de arrays en Javascript pueden ser
modificados (pueden agregarse propiedades). Este problema se
ilustra en el siguiente ejemplo:
</p>
<pre class="ejemplo examplejavascript">
// se modifica el prototipo de array
// para que incluya un métodos llamado `ultimo`
Array.prototype.ultimo = function () {
return this[this.length-1];
};
for (var i in []) { // en un array vacio
// nos va a listar la propiedad `ultimo`
// en nuestro array vacio
log(i);
}
// Una forma de evitar este problema es utilizar
// el método hasOwnProperty que verifica si una
// propiedad es propia del objeto y no heredada
// por su prototipo.
var arr = [];
for (var i in arr) {
if (arr.hasOwnProperty(i)) {
log(i); // en este caso no se ejecuta.
}
}
</pre>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-17253682.post-81859140443345074742011-05-31T21:42:00.005-03:002011-06-03T20:26:42.172-03:00jquery each ejemplos<h3>La función each de jQuery</h3>
<p>La función <code>each</code> de jQuery nos sirve para iterar
uno por uno los elementos de una colección, usualmente estos son
el resultado de un selector jQuery, pero también pueden ser otras
colecciones de Javascript como un <em>array</em> o un <em>objeto</em>.</p>
<p>La forma de la función es:</p>
<pre class="ejemplo ">
jQuery.each( coleccion, callback(indiceEnElArray, valorDelElemento) )
</pre>
<p>Para entender su funcionamiento lo mejor es ver algunos ejemplos de su uso.</p>
<h4>Utilizando jQuery.each con un array</h4>
<pre class="ejemplo examplejavascript">
$.each([1,2,3],function(indice,valor) {
log('Indice es ' + indice + ' y valor es: ' + valor);
});
</pre>
<p>La función pasada como argumento se ejecutará tantas veces como
elementos tenga el array, además en cada ejecución recibirá como
argumentos el índice del elemento sobre el cual está ejecutando
y el elemento mismo (en nuestro código llamado <code>valor</code>).</p>
<h4>Utilizando jQuery.each con un objeto</h4>
<pre class="ejemplo examplejavascript">
var objeto = {'ojos': 'rojos', 'pelo': 'castaño', 'mirada': 'enigmatica' };
$.each(objeto,function(clave,valor) {
log('Clave es ' + clave + ' y valor es: ' + valor);
});
</pre>
<p>En este caso hicimos algo parecido, pero al tratarse de un
objeto tiene más sentido llamar a <code>indice</code>
como <code>clave</code> en el nombre de parametro de la función
que se pasa como argumento.</p>
<h4>Utilizando jQuery.each con una colección del DOM</h4>
<p>Este es quizá el uso más común
de <strong><code>each</code></strong>, y es cuando lo utilizamos
con una colección de elementos de jQuery. En este caso podemos
utilizar una sintáxis más cómoda omitiendo el primer argumento de
each, ya que ejecutaremos each como método de la colección:</p>
<ul>
<li class="example">un li</li>
<li class="example">otro li</li>
</ul>
<pre class="ejemplo examplejavascript">
$('li.example').each(function(indice,valor) {
log(indice,valor);
$(valor).html('Soy el li número: ' + indice + ' del DOM.');
});
</pre>
<p>Esta vez operamos sobre todos los <code>li</code> del documento
html, y reemplazamos el contenido por un texto específico en cada
caso.</p>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-17253682.post-58266884766633220882011-05-31T20:51:00.004-03:002011-06-03T15:47:04.017-03:00javascript split<h3>La función split de Javascript</h3>
<p>La función <strong>split</strong> de javascript es un método de las cadenas utilizado para obtener array cuyos valores son componentes de la cadena.</p>
<p>El prototipo de la función es:</p>
<pre class="ejemplo">
string.split([separador][, limite])
</pre>
<p>Separador puede ser o bien una cadena o bien una expresión
regular, y es el patrón por el cual se va a cortar la cadena en
los componentes que serán del array. La función siempre devuelve
un array. Cuando se llama sin argumentos, se devolverá un array vacío.</p>
<h3>Ejemplos de split</h3>
<p>Podemos utilizar <code>split</code> con una expresión regular
como muestra el siguiente ejemplo:</p>
<pre class="ejemplo examplejavascript">
var t = "Programando en Javascript".split(/ /); // devuelve el array ["Programando", "en", "Javascript"];
log(t);
</pre>
<p>En vez de usar una expresión regular podríamos utilizar una cadena y en el ejemplo anterior obtendríamos el mismo resultado:</p>
<pre class="ejemplo examplejavascript">
var t = "Programando en Javascript".split(" "); // devuelve el array ["Programando", "en", "Javascript"];
log(t);
</pre>
<p>Utilizando <code>limit</code> como segundo arguemento, podemos delimitar la cantidad de componentes máximos que tendremos en el array resultante:</p>
<pre class="ejemplo examplejavascript">
var t = "Programando en Javascript".split(" ",2); // devuelve el array ["Programando", "en"];
log(t);
</pre>
<p>El uso clásico del método <code>split</code> es <strong>separar una lista de cadenas serpados por coma</strong> por ejemplo:</p>
<pre class="ejemplo examplejavascript">
var t = "1,2,3,4,5,6,7,8,9,10".split(','); // devuelve el array: ["1","2","3","4","5","6","7","8","9","10"];
log(t);
</pre>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-17253682.post-1040016189529651512011-05-31T20:29:00.005-03:002011-06-03T15:48:42.887-03:00Javascript replace<h3>La función replace de Javascript</h3>
<p>La función <strong>replace</strong> de javascript es un método de las cadenas utilizado para obtener una nueva cadena copia de la original con una porción reemplazada.</p>
<p>El prototipo de la función es:</p>
<pre class="ejemplo">
string.replace(regexp|substr, newSubStr|function[, Non-standard flags]);
</pre>
<h3>Ejemplos de replace</h3>
<p>Podemos utilizar <code>replace</code> con una expresión regular
como muestra el siguiente ejemplo:</p>
<pre class="ejemplo examplejavascript">
var t = "Programando en Javascript".replace(/Programando/,"Hablando"); // devuelve "Hablando en Javascript";
log(t);
</pre>
<p>En vez de usar una expresión regular podríamos utilizar una cadena para el caso anterior:</p>
<pre class="ejemplo examplejavascript">
var t = "Programando en Javascript".replace("Programando","Hablando"); // devuelve "Hablando en Javascript";
log(t);
</pre>
<p>Las expresiones regulares podrían utilizarse para reemplazar patrones más complejos o específicos, por ejemplo:</p>
<pre class="ejemplo examplejavascript">
// en este ejemplo matecheamos un dígito mediante una expresión regular.
var t = "Tengo 5 libros de Javascript".replace(/\d/,10); // devuelve "Tengo 10 libros de Javasript";
log(t);
</pre>
<p>Podría darse el caso que con el resultado del matcheo
quisieramos tomar algún tipo de decisión para realizar el
reemplazo. Por ejemplo el siguiente ejemplo sirve para incrementar
el patrón capturado:</p>
<pre class="ejemplo examplejavascript">
function reemplazador(coincidencia1) {
return parseInt(coincidencia1) + 1;
}
var t = "Tengo 5 libros de Javascript".replace(/\d/,reemplazador); // devuelve "Tengo 6 libros de Javasript" ;
log(t);
var s = "Tengo 6 libros de Javascript".replace(/\d/,reemplazador); // devuelve "Tengo 7 libros de Javasript" ;
log(s);
var r = "Tengo 7 libros de Javascript".replace(/\d/,reemplazador); // devuelve "Tengo 8 libros de Javasript" ;
log(r);
</pre>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-17253682.post-33125309457382495492011-05-31T20:19:00.005-03:002011-06-03T15:42:56.571-03:00Javascript substring<h3>La función substring</h3>
<p>La función <strong>substring</strong> de javascript es un método que pertenece a las cadenas, y sirve para obtener una porción de la cadena</p>
<p>El prototipo de la función es:</p>
<pre class="ejemplo">
string.substring(indice1[, indice2])
</pre>
<p>Dónde <code>string</code> es una cadena, <code>indice1</code> un entero e <code>indice2</code> otro entero opcional.</p>
<h3>Ejemplos de substring</h3>
<p>Sí <code>indice1</code> e <code>indice2</code> son iguales, substring devuelve una cadena vacía.</p>
<pre class="ejemplo examplejavascript">
"Programando en Javascript".substring(5,5); // devuelve ""
</pre>
<p>Sí <code>indice2</code> se omite, se devuelve una cadena desde la posición <code>indice1</code> hasta el final de la cadena..</p>
<pre class="ejemplo examplejavascript">
"Programando en Javascript".substring(12); // devuelve "en Javascript"
</pre>
<p>Si queremos quedarnos con una porción bien definida de la cadena podemos utilizar los dos índices de la siguiente manera: </p>
<pre class="ejemplo examplejavascript">
"Programando en Javascript".substring(0,11); // devuelve "Programando"
</pre>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-17253682.post-44796072096767089802011-05-28T20:31:00.006-03:002011-06-03T15:51:05.843-03:00Arrays en javascript, ejemplos<h3>Declaración de un array</h3>
<p>Un array o arreglo en Javascript tiene varias maneras de declararse algunos ejemplos:</p>
<p>Utilizando el constructor de array y el operador new: </p>
<pre class="ejemplo examplejavascript">
var arr1 = new Array(); // declarando un array vacio
var arr2 = new Array(5); // declarando un array de 5 elementos (su propiedad length está en 5)
var arr3 = new Array(3,3); // declarando un array de 2 elementos [3,3]
</pre>
<p>La manera anterior no está recomendada porque da lugar a
ambiguedades (lo cual puede notarse en las dos últimas declaraciones).</p>
<p>Una mejor manera de declarar arrays en Javascrip es utilizando la notación literal de Array, va el ejemplo:</p>
<pre class="ejemplo examplejavascript">
var arr4 = []; // declarando un array vacío
var arr5 = [0,0,0,0,0]; // declarando un array de 5 elementos cuyos valores son 0
var arr6 = [3,3]; // declarando un array de 2 elementos cuyos valores son 3 y 3
</pre>
<h3>Conocer el tamaño de un array</h3>
<p>Todos los arrays tienen una propiedad llamada <code>length</code> que permite saber su tamaño.</p>
<pre class="ejemplo examplejavascript">
var arr7 = [1,2,3,4,5,6,7];
log(arr7.length); // imprime 7 porque el array tiene 7 elementos.
</pre>
<p>Hay que tener en cuenta que el <code>length</code> no es el
índice de la última posición del array. Como las posiciones
comienzan a indexarse desde <code>0</code> el índice de la última
posición del array siempre puede calcularse utilizando <code>length - 1</code> </p>
<pre class="ejemplo examplejavascript">
var arr8 = ["a","b","c"];
log(arr8[arr8.length - 1]); // imprime "c", el último elemento del array
</pre>
<h3>Accediendo a los objetos de un array</h3>
<p>Veamos como podemos acceder a los diferentes elementos del array:</p>
<pre class="ejemplo examplejavascript">
var arr = [1,2,3,4];
log(arr[0]); // accediendo al primer elemento del array
var i;
for(i = 0; i < arr.length ; i++) { // listando los elementos del array
log('En la posición: ' + i + ' esta el elemento: ' + arr[i]);
}
</pre>
<p>Los índices de los arrays comienzan en 0</p>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-17253682.post-5241087084673584802011-05-21T14:31:00.004-03:002011-05-31T20:58:29.501-03:00Algoritmo de ordenación en C [INSERTION SORT]<pre class="ejemplo"><span class="preprocessor">#</span><span class="preprocessor">include</span><span class="string"><stdio.h></span>
<span class="type">v</span><span class="type">oi</span><span class="type">d</span> <span class="function-name">swap</span>(<span class="type">int</span> *<span class="variable-name">e1</span>,<span class="type">int</span> *<span class="variable-name">e2</span>)
{
<span class="type">in</span><span class="type">t</span> <span class="variable-name">tmp</span> = *e1;
*e1 = *e2;
*e2 = tmp;
}
<span class="type">voi</span><span class="type">d</span> <span class="function-name">insertion_sort</span>(<span class="type">int</span> <span class="variable-name">s</span>[], <span class="type">int</span> <span class="variable-name">n</span>)
{
<span class="type">in</span><span class="type">t</span> <span class="variable-name">i</span>,<span class="variable-name">j</span>;
<span class="keyword">f</span><span class="keyword">or</span> (i=1; i<n; i++) {
j=i;
<span class="keyword">while</span> ((j>0) && (s[j] < s[j-1])) {
swap(&s[j],&s[j-1]);
j = j-1;
}
}
}
<span class="type">voi</span><span class="type">d</span> <span class="function-name">print_array</span>(<span class="type">int</span> <span class="variable-name">vect</span>[], <span class="type">int</span> <span class="variable-name">len</span>)
{
<span class="type">in</span><span class="type">t</span> <span class="variable-name">i</span>;
printf(<span class="string">"Imprimiendo array de: %d\n"</span>, len);
<span class="keyword">for</span>(i = 0; i < len ; i++) {
printf(<span class="string">"idx: %d = %d \n"</span>, i,vect[i]);
}
}
<span class="type">in</span><span class="type">t</span> <span class="function-name">main</span>()
{
<span class="type">in</span><span class="type">t</span> <span class="variable-name">vect</span>[10] = {9,5,7,8,4,3,2,5,6,1};
print_array(vect,10);
insertion_sort(vect,10);
print_array(vect,10);
<span class="keyword">return</span> 0;
}
</pre>
<p>Para compilar utilizar:</p>
<pre>
gcc -Wall insertion-sort.c -o insertion-sort.out
</pre>Unknownnoreply@blogger.com0