Mostrando entradas con la etiqueta numeros. Mostrar todas las entradas
Mostrando entradas con la etiqueta numeros. Mostrar todas las entradas

lunes, 2 de marzo de 2015

[Parte 2]jQuery

jQuery - Conceptos basicos

jQuery es un framework construido utilizando las capacidades de javascript. Asi que usted puede utilizar todas las funciones y otras capacidades disponibles en javascript. 

Cadena

Una cadena en javascript es un objeto inmutable que contiene ninguno, o varios caracteres. Los siguientes son ejemplos validos de una cadena de javascript:

"Esto es una cadena Javascript"
'Esto es una cadena Javascript'
'Esto es "realmente" una cadena Javascript'
"Esto es 'realmente' una cadena Javascript"


Numeros

Los numeros en javascript son de formato IEEE 754 de doble precision de 64 bits. Ellos son inmutables al igual que las cadenas. Los siguientes son ejemplos validos de numeros en javascript:

5350
120.27
0.26


Booleanos

Un booleano en javascript puede ser falso o verdadero. Si un numero es cero, el valor predeterminado es falso. Los siguientes son ejemplos validos en booleano de javascript:

true // verdadero
false //  falso
0 // falso
1 // verdadero
"" // falso
"hola"  // verdadero

 

Objetos

Javascript soporta el concepto de objetos muy bien. Puede crear un objeto usando literalmente object de la siguiente manera:

var emp = {
    nombre : "Sara",
    edad : 10
}


Usted puede escribir y leer las propiedades de un objeto utilizando la notacion de puntos de la siguiente manera:

// Obtener las propiedades del objeto
emp.nombre // ==> Sara
emp.edad // ==> 10

// Estableciendo las propiedades del objeto
emp.nombre = "Deisi" // <== Daisi
emp.edad = 20 // <== 20


Arrays

Puede definir arrays utilizando literalmente array de la siguiente manera:

var x = [];
var y = [1, 2, 3, 4, 5];


Un array tiene la propiedad length que es util para la iteracion:

var x = [1, 2, 3, 4, 5];
for (var i = 0; i < x.length; i++){
    // Hacemos algo con x[i]
}


Funciones

Una funcion en javascript puede ser o bien nombrada o anonima. Una funcion nombrada se puede definir mediante la palabra clave function de la siguiente manera:

function nombrada(){
   
}


Una funcion anonima puede ser definida en forma similar que una funcion normal, pero no tendrá ningun nombre. Una funcion anonima se puede asignar a una variable o se pasa a un metodo como se muestra a continuacion:

var manejador = function(){
    // hacer algo aqui
}


jQuery hace uso de funciones anonimas con mucha frecuencia como sigue:

$(document).ready(function(){
    // Hacer algo aqui
});



Argumentos

La variable javascript arguments es una especie de array que tiene la propiedad de length. El siguiente ejemplo lo muestra muy bien:

function func(x){
    console.log(typeof x, arguments.length);
}

func(); // ==> "undefined", 0
func(1); // ==> "number", 1
func("1","2","3"); // ==> "string", 3


Los argumentos de los objetos tambien tienen una propiedad callee, que se refiere a la funcion que esta dentro de el. Por ejemplo:

function func(){
    return arguments.callee;
}

func(); // ==> func



Contexto

Javascript tiene la famosa palabra clave this que se refiere al contexto actual. Dentro de una funcion este contexto puede cambiar, dependiendo de como se llama la funcion:

$(document).ready(function(){
    // Esto hace referencia a window.document
});
$("div").click(function{
    // Esto se refiere al elemento div en el DOM
});


Puede especificar el contexto de una llamada utilizando los metodos incorporados call() y apply(). La diferencia entre ellos es la forma en que se pasan los argumentos. Call pasa todos los argumentos a traves de los arguments de la funcion, mientras apply acepta un array como arguments.


function scope(){
    console.log(this, arguments.length);
}

scope() // window, 0
scope.call("foobar",[1,2]); // ==> "foobar", 1
scope.apply("foobar",[1,2]); // ==> "foobar", 2



Ambito

El ambito de una variable es la region de su programa en el que se define. Las variables en javascript tendran solo dos ambitos.

Variables globales: una variable global tiene un alcance global que significa que se define por todas partes en su codigo javascript. 

Variables locales: una variable local sera visible solo dentro de la funcion donde se define. Los parametros de la funcion son siempre locales a esa funcion.

Dentro del cuerpo de una funcion, una variable local tiene prioridad sobre una variable global con el mismo nombre:

var miVar = "global"; // ==> declaramos una variable global

function (){
    var miVar = "local"; // ==> declaramos una variable local
    document.write(miVar); // ==> local
}


Llamadas

Una callback (llamada) es una funcion de javascript plana pasado a algun metodo como argumento o una opcion. Algunas llamadas son solo eventos, llamados a dar al usuario la oportunidad de reaccionar cuando se activa un determinado estado. El sistema de eventos de jQuery utiliza estas llamadas en todas partes, por ejemplo:

$("body").click(function(event){
    console.log("click en: " + event.target);
});


La mayoria de las llamadas proporcionan argumentos y un contexto. En el ejemplo del controlador de eventos, la devolucion de la llamada se llama como argumento. Se necesitan algunas llamadas para devolver algo, otros hacen el valor de retorno opcional. Para evitar un envio de formularios, en el controlador de eventos submit colocamos return false de la siguiente manera:

$("#miformulario").submit(function(){
    return false;
});


Cierres

Los cierres se crean cada vez que se accede a una variable que se define fuera del ambito dentro de algun ambito interno. El ejemplo siguiente muestra como la variable contador es visible dentro de crear, de incrementar, y las funciones de impresion, pero no fuera de ellos:

function crear(){
    var contador = 0;
    return {
        incrementar : function(){
            contador++;
        },
        impresion : function(){
            console.log(contador);
        }
    }
}

var c = crear();
c.incrementar();
c.impresion(); // ==> 1



Este patron permite crear objetos con metodos que operan sobre los datos que no son visibles para el mundo exterior. Cabe señalar que la ocultacion de datos es la base misma de la programacion orientada a objetos.


El patron Proxy

Un proxy es un objeto que se puede utilizar para controlar el acceso a otro objeto. Se implementa la misma interfaz que este otro objeto y pasa cualquier metodo invocandolo a él. Este otro objeto a menudo se llama real subject (sujeto real). Un proxy puede ser instanciado en lugar de real subject y permite ser accedido de forma remota. Podemos ahorrar usando el metodo setArray de jQuery en un cierre y sobreescribiendolo de la siguiente manera:

(function(){
    // registramos todas las llamadas a setArray
    var proxied = jQuery.fn.setArray;

    jQuery.fn.setArray = function(){
        console.log(this, arguments);
        return proxied.apply(this, arguments);
    }
})();


Lo anterior envuelve su codigo en una funcion para ocultar la variable proxied. El proxy entonces registra todas las llamadas al metodo y los delegados de la llamada al metodo original. Utilizando apply(this, arguments) garantiza que la persona que llama no sera capaz de notar la diferencia entre el original y el metodo proxied.


Funciones incorporadas

Javascript viene junto con un util conjunto de funciones incorporadas. Estos metodos se pueden utilizar para manipular cadenas, numeros y fechas. A continuacion se describen las funciones de javascript importantes:

+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| Metodo        | Descripcion                                                                                                                     |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| charAt()      | Devuelve el caracter en el indice especificado.                                                                                 |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| concat()      | Combina el texto de dos cadenas y devuelve una nueva cadena.                                                                    |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| forEach()     | Llama una funcion para cada elemento de la matriz                                                                               |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| indexOf()     | Devuelve el indice dentro del objeto llamado String de la primera aparicion del valor especificado, o -1 si no es encontrado.   |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| length()      | Devuelve la longitud de una cadena.                                                                                             |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| pop()         | Elimina el ultimo elemento de una matriz y devuelve dicho elemento.                                                             |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| push()        | añade uno o mas elementos al final de una matriz y devuelve la nueva longitud de la matriz.                                     |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| reverse()     | Invierte el orden de los elementos de una matriz, el primero se convierte en el ultimo, y el ultimo se convierte en el primero. |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| sort()        | Ordena los elementos de una matriz                                                                                              |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| substr()      | Devuelve los caracteres de una cadena que comienza en el lugar especificado, por el numero de caracteres especificados.         |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| toLowerCase() | Devuelve el valor de la cadena llamada convertido en minusculas.                                                                |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| toString()    | Devuelve la representacion de una cadena del valor de un numero.                                                                |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
| toUpperCase() | Devuelve el valor de la cadena llamada convertido en mayusculas.                                                                |
+---------------+---------------------------------------------------------------------------------------------------------------------------------+
 
El modelo de objetos del documento

El modelo de objetos del documento (Document object model) es una estructura de arbol de diversos elementos de HTML de la siguiente manera:

<html>
<head>
    <title>Es el titulo</title>
</head>
<body>
    <div>
        <p>Este es un parrafo</p>
        <p>Este es el segundo parrafo</p>
        <p>Este es el tercer parrafo</p>
    </div>
</body>
</html>


Los siguientes son los puntos importantes sobre la estructura de arbol de arriba:

* El <html> es el ancestro de todos los demas elementos, en otras palabras, todos los demas elementos son descendientes de <html>

* El <head> y <body> no son solo elementos descendientes, son hijos de <html> tambien.

* Del mismo modo ademas de ser antepasado de <head> y <body>, <html> tambien es su padre.

* Los elementos <p> son los hijos (y descendientes) de <div>, descendientes de <body> y <html> y hermanos unos de otros elementos <p>.

Fuente: http://www.tutorialspoint.com/jquery/index.htm

jueves, 1 de mayo de 2014

[Parte 1] PHP

PHP

PHP Hypertext Pre-Processor (anteriormente Personal Home Page) es uno de los lenguajes de programacion mas famosos es del lado del servidor y fue creado por Ramus Lerdorf, para poder ejecutarse necesita un servidor web (tecnologia LAMP, aunque no necesariamente tiene que usarse Linux). El uso que se le da es para crear aplicaciones web dinamicas. Y es multiplataforma. 

Instalar un servidor web o utilizar uno

Para poder hacer uso de PHP como comentabamos anteriormente, necesitamos hacer uso de un servidor web, con Apache y PHP tendriamos mas que suficiente para empezar a probar, pero igualmente podemos instalar el proyecto Appserv o XAMPP los cuales incluyen Apache, MySQL y PHP, ademas algunas librerias preinstaladas. 

Aunque sino quieres instalar el servidor puedes hacer uso de alguno gratis como 000webhost y conectarte via FTP para empezar a probar tus scripts PHP.

Que necesitamos saber

Conocimiento de HTML no estaria nada mal ya que en la mayoria de script de PHP se incluye la estructura HTML. 

Crear un documento basico en PHP

Para crear un documento PHP necesitamos abrir las etiquetas:


 <?php AquivanuestrocodigoPHP ?>


Y guardarlo con la extension .php


Hola mundo con la funcion echo o print

print - muestra una cadena
echo - muestra una o mas cadenas

Un ejemplo podria ser el siguiente:


 <?php
 ECho "Hola Mundo
 Este es un ejemplo";
?>

En este ejemplo quiero destacar unas cuantas cosas. PHP es case-insensitive (quiere decir que no diferencia entre mayusculas o minusculas) por eso ECho es igual a echo o tambien a eChO.
Si vemos el resultado del script anterior. Veremos todo en una sola linea, pero si vemos el codigo fuente vemos todo tal y como fue escrito en PHP:



Para poder entonces mostrar un salto de linea se utiliza HTML, en este caso podemos utilizar:


 <br /> <p></p>


Algun parrafo o salto de linea.

Con " comenzamos una cadena y con " la terminamos y con ; cerramos la linea, siempre que este ; es por que es una linea de codigo.

¿Que pasa en caso de que queramos escribir alguna comilla simple o doble dentro de las que ya tenemos? 


Tendriamos un error con el cual lidiar, pero en este caso podemos escribir comillas simples dentro de las dobles o viceversa.


O simplemente escapar las cadenas con el slash invertido \ ...



Tenemos la secuencia de escape \n que seria una nueva linea, solo que no se ve cuando lo mostramos en HTML, esta es util cuando estas programando en linea de comandos.

Nota: Recuerda siempre activar display_errors en tiempo de desarrollo, para darnos cuenta si tenemos un error de sintaxis:

Comentarios

Los comentarios no se ven en la pagina web, y te hacen ver como un profesional ya que estaras documentando tu codigo, de manera que cuando alguien lo retome le sea mas facil ver lo que estabas haciendo. Los comentarios que tienes en PHP son los siguientes:

# Este es un comentario de una sola linea
// Este es un comentario de una sola linea
/* Este es un comentario
 Multilinea...
*/ 

Tenemos los signos #, // y /**/.

Variables

Las variables son contenedores temporales que almacenan valores, estos valores pueden ser cadenas, números o datos mas complejos.

Una variable se declara usando el signo dolar ($) $acaelnombredemivariable

Las variables son case-sensitive (quiere decir que diferencia entre mayusculas y minusculas) con esto $variable no es lo mismo que $Variable, una recomendacion al utilizar variables es hacer uso de el estilo Camel Case.

Para asignarle un valor a la variable utilizamos el signo de asignacion (=), en este caso seria algo como lo siguiente:

$acaelnombredemivariable = "acamivalor";

En este caso vamos a hacer uso de las variables predefinidas usando el array $_SERVER que nos devuelve datos del servidor.


En este caso estamos haciendo uso de la sintaxis "here document" la cual no debe tener tabulacion por que sino no funcionaria correctamente, y escribimos nuestras variables para que sean mostradas en el servidor web.

En PHP no es necesario declarar el tipo de la variable ya que esta la toma tal cual convirtiendola. 

Cadenas

Podemos escribir cadenas haciendo uso de las comillas simple o dobles.




Como ves declaramos una variable que contiene nuestra cadena y la imprimimos varias veces. Una variable se puede imprimir con comillas dobles o sin ellas. Como ves aquí hay una diferencia al utilizar la comillas simples, esto se debe a que el uso de comillas simples trata todo como literal y el uso de comillas dobles lo interpreta.

Algunas de las funciones utiles que tenemos para nuestras cadenas son:

strlen() - cuenta el numero de caracteres dentro de una cadena
strtoupper() - pasa a mayusculas una cadena
strtolower() - pasa a minusculas una cadena
ucfirst() - pone en mayusculas al primer caracter de una cadena
ucwords() - pone en mayusculas el primer caracter de cada palabra en una cadena



Numeros

Para asignar un numero a una variable es tan facil como hacer lo siguiente:


En este caso asignamos el numero sin comillas o con ellas de igual manera es interpretado, aunque es mejor hacerlo sin comillas ya que de esta manera se esta seguro que es es un entero o un decimal (dependiendo de lo que hayas puesto), y al final lo sumamos haciendo uso del operador + (suma). Algunos operadores que tenemos son:

+ | suma
- | resta
* | multiplicacion
/ | division
% | resto
++ | incremento
-- | decremento

Algunas funciones utiles para los numeros son:

number_format() - le da formato a los numeros
round() - redondea al numero mas cercano



Concatenacion

La concatenacion es unir, para ello utilizamos el punto (.), por ejemplo:


Como ves en este caso unimos el 1 con el 5 quedando 15, no como en el caso anterior donde sumabamos los numeros.

Tambien podemos concatenar al momento usando .=, por ejemplo:


Constantes

Las constantes son parecidas a las variables con la diferencia de que estas nunca cambian... para definir una constante usamos:

define('NOMBRE',valor);

Esto es muy util cuando sabemos que esos datos no van a cambiar, como puede ser en el caso de una base de datos, pero para no ir tan a fondo, pongamos por ejemplo el PI :)


Como ves la constante la declaramos y al imprimirla lo hacemos fuera de la cadena y concatenandola, la constante no se debe de declarar dentro de comillas ya que no se interpreta.

Depurar nuestro codigo

1.- Ver que la url donde estamos ejecutando el script php sea la correcta
En este caso si estamos ejecutando el script 2.php que la url sea http://localhost/2.php o la carpeta correcta...

2.- Ver la version de PHP que estamos corriendo y que display_errors este activado
Esto lo hacemos con la funcion phpinfo() como vimos arriba, esta funcion nos devuelve informacion sobre la configuracion de php.

3.- Mirar el codigo fuente de la pagina...
Aveces en el codigo fuente de la pagina se muestra algun tipo de error en el HTML, lo cual puede estar causando el problema.

4.- Mensaje de error
Este se ve reflejado en la pagina y lo podemos solucionar aveces leyendolo o simplemente haciendo busqueda en Google de el error.

5.- Tomate un descanso
Probablemente puede ser que la logica este mal, o tener la mente pensando en otras cosas, con lo cual no estas concentrado en el codigo, aveces al retomar las cosas las vez mas simples de lo que son o creias que eran.