Últimas entradas del blog

PHP 4: Bucles

2014-03-17 - Categorías: PHP
Bueno, ya llegando a éste minitutorial se va poniendo divertido. Aquí tenemos las primeras estructuras de control que con pocas líneas de código nos van a permitir hacer muchas cosas. Ahora te preguntarás que como con programando pocas líneas podemos hacer muchas cosas. Sí!

Para entenderlo rápidamente, por ejemplo, si queremos hacer una tarea un millón de veces. Programando un bucle que podría tener apenas tres lineas podría hacerse.

for

El bucle for ejecuta un número de veces una tarea, por ejemplo:

for($i=1; $i<=1000000; $i++){
  // ésto es un comentario que no se ejecuta
  // porque tiene delante las barras
  echo $i;
}

Éste bucle usa una variable $i que va desde 1 hasta 1000000, saltando de uno en uno. Es decir se ejecuta un millón de veces el echo $i;

En la primera línea podemos ver el valor inicial, hasta cuándo ejecuta el bucle, y de cuánto es el incremento entre vuelta y vuelta del bucle. Éste miniprograma imprimirá «123456789101112131415… así sucesivamente hasta llegar a …9999991000000»

Si tratas de ejecutar éste bucle probablemente no terminará porque un millón de veces es demasiado, saltará un temporizador en el servidor y cortará la ejecución por tardar demasiado.

foreach

El foreach nos sirve para recorrer los vectores o arrays que hemos visto en otro tutorial anterior. Por ejemplo si tenemos un vector como el siguiente:

$vector = array("nombre" => "Pepe", "apellidos" => "Por Ejemplo");
$vector2[0] = "Pepe";
$vector2[1] = "Por Ejemplo";
   
foreach ($vector as $valor) {
  echo $valor . ", ";
}
foreach ($vector2 as $clave => $valor) {
  echo $clave . " => " . $valor . ", ";
}

El primer bucle va a imprimir lo siguiente: Pepe, Por Ejemplo,
El segundo bucle: 0 => Pepe, 1 => Por Ejemplo,

Si nos fijamos en los dos vectores, tenemos en $vector un vector de dos elementos donde la clave nombre almacena Pepe y la clave apellidos almacena Por ejemplo. En el segundo vector tenemos lo mismo en los valores pero las claves, en vez de ser nombre y apellidos son 0 y 1.

Si hubieramos puesto en el segundo bucle en vez del $vector2 al $vector, nos hubiera impreso lo siguiente: nombre => Pepe, apellidos => Por Ejemplo,

while

Supongamos que ahora queremos ejecutar una tarea mientras que se cumpla una condición, papra ésto es es el bucle while. Por ejemplo:

$variable = 1;
while($variable < 3){
  echo $variable . ", ";
  $variable++;
}

Éste bucle escribirá lo siguiente: 1, 2,

De forma que si la $variable tuviera en un principio el valor 20, no entraría en el bucle y no se ejecutaría nunca lo contenido entre llaves.

do.. while

Si lo que queremos es primero ejecutar una tareas y después comprobar si se cumple una condición para continuar el bucle usamos el do.. while. Al contrario que con el while simple, primero ejecuta lo contenido entre llaves, luego comprueba, ésta es la diferencia. Por ejemplo:

$variable = 3;
do {
  echo $variable . ", ";
  $variable++;
} while($variable < 3);

Éste código escribirá: 3,

Ahora es cuando uno piensa, pero si he puesto que la variable debe ser menor a 3. El problema es que primero ejecuta, como he puesto arriba..

Terminando

A partir de aquí ya empieza la imaginación, podemos poner un bucle dentro de otro, un foreach con varios for dentro o viceversa. Espero haberme explicado bien, sino haz un do.. while(noentender) xDD

O deja un comentario.

Me remito de nuevo, como de costumbre a la documentación oficial:

http://www.php.net/manual/es/language.control-structures.php

Si te ha gustado o te ha sido útil dale click a compartir, +1..

¡Un saludo!


PHP 3: Condicionales

2014-03-14 - Categorías: PHP

Siguiendo con la serie de minitutoriales, hoy les voy a dejar uno sobre los condicionales en PHP. Estamos viendo lo que se llaman estructuras de control, y dentro de ellas pretendo dividirlas y ver aquí sólo los condicionales if y switch.

Si buscas un tutorial breve y concreto, sin rodeos y sin entrar en detalles, aquí lo tienes.

A saber..

If

Los condicionales comprueban si se cumple una condición, como su nombre indica, y en ése caso ejecutan el código programado en él. Por ejemplo:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <p>
            <?php
   $variable = 2;
   if ($variable == 2) {
    echo "La variable vale dos.";
   } else {
    echo "La variable no vale dos.";
   }
            ?>
        </p>
    </body>
</html>

El código habla por sí sólo. Tenemos una web que utiliza el estándar HTML5 como indica su DOCTYPE, y en el cuerpo de la página tenemos incrustado código PHP. Simplemente mira si la variable vale 2 y como así es imprimirá ‘La variable vale dos.» en la web. Si no valiera dos entonces ejecutaría lo que hayas puesto en el else.

El meollo de los condiciones está en la expresión de comparación ($variable == 2). Tenemos disponibles varios operadores de comparadores, por ejemplo: ==, <=, >=, !=
Están todos muy bien explicados aquí http://www.php.net/manual/es/language.operators.comparison.php

Switch

Por otro lado tenemos el switch. Se usa para encontrar valores concretos. Un ejemplo para vero claro podría ser:

$otravariable = "patata";
switch ($otravariable) {
  case "patata" :
    echo "Es una patata.";
    break;
  case "boniato" :
    echo "Es un boniato.";
    break;
  case "cebolla" :
    echo "Es una cebolla.";
    break;
  default :
    echo "¡Alguien me ha cambiado el valor de la variable!";
    break;
}

Podriamos haber usado varios condicionales de tipo if para ir comprobando $otravariable. Pero cuando tenemos más de dos posibles valores es mejor usar la estructura del switch. Fíjate que dentro de cada caso hay un break para indicar que ahí termina el caso. Si no los ponemos estaremos uniendo varios casos.

Es importante notar también el caso especial default que se ejecutará sólo cuando no encuentre el valor.

De nuevo para terminar me remito a la documentación oficial http://www.php.net/manual/es/index.php, aquí tiene en la sección de Estructuras de control los condicionales y muchísima más información.

Si te ha sido útil o te ha gustado dale click al +1, compartelo.. también puede dejar un comentario.

¡Un saludo!


PHP 2: Variables

2014-03-13 - Categorías: PHP
Continuando con los minitutoriales para aprender rápidamente y en dos dias PHP, ahora las variables..
No hace falta declarar el tipo de variable que vamos a usar, simplemente le damos valor y la usamos. PHP no es fuertemente tipado. No hace falta definir el tipo de variables que usamos, además de que la naturaleza de las variables puede cambiar a lo largo de la ejecución de los programas.
PHP tiene características muy buenas para aprender a programar gracias a su flexibilidad. Quizá por esto es bien popular. Pero a la vez, esta flexibilidad, libertad, o libertinaje, da lugar a quizá códigos fuentes a veces confusos i no lo mejor posibles. Pero esto es otro tema para otro post, así que vamos al grano..

Variables simples

Las variables utilizan el símbolo $ delante del nombre de la variable.
$variable = "cadena";
$variable2 = 1;
$variable3 = 1.2;
$variable4 = true;
echo $variable;
Ésto escribirá ‘cadena’ en la web. Es sencillo ¿verdad? simplemente le damos valores y las usamos.

Variables no tan simples

A modo de curiosidad, en un test me preguntaron para qué servían las variables con doble $, pues mira el código siguiente:
$variable2 = "cadena2";
$$variable2 = "otro valor";
echo $cadena2;
Ésto escribirá ‘otro valor’. Pero ¿cómo? ¡si no le he dado valor a la variable $cadena2! Ésto es lo que en la documentación oficial se llaman variables variables. Sirve para usar nombres de variables que cambien. Dejo aquí el enlace con todo ésto mejor explicado http://php.net/manual/es/language.variables.variable.php

Vectores

También tenemos vectores, de la forma que tenemos una ‘lista’ de elementos. Con un ejemplo podemos verlo claramente cómo se puede usar.
$unvector[] = "valor1";
$unvector[] = "valor2";
$unvector["algo"] = "valor3";
$unvector[0] = "primer valor";
echo $unvector[1] . " - " . $unvector["algo"]; // valor2 - valor3
var_dump($unvector);
Fijándonos en el código anterior, podemos ver que los vectores comienzan por la clave 0 de forma automática. Otra forma de utilizarlos en vez de usar un entero para los elementos, es usando cadenas. Examinando el resultado de la última instrucción especial:

array(3) { [0]=> string(12) «primer valor» [1]=> string(6) «valor2» [«algo»]=> string(6) «valor3» }

Podemos ver que tenemos un vector de 3 elementos. Lo que tenemos entre corchetes [] son las claves para darle valor o usarlo. Y después del => tenemos el valor.

Matrices y otros

Hay muchas más posibilidades, podemos tener también matrices, de forma que en vez de tener vectores de elementos, tenemos vectores de vectores, similar a una tabla.
$matrix[0][0] = 1;
$matrix[0][1] = 2;
$matrix[1][0] = 3;
$matrix[1][0] = 4;

También podemos usar tres dimensiones.

// una matriz tridimensional
$matrix[0][1][5] = 27;

..cinco dimensiones..

// una matriz de cinco dimensiones
$matrix[0][1][5][2][3] = 2723;
Así sucesivamente. Queda añadir que los elementos de los vectores, matrices y otras formas multidimensionales que podamos usar pueden ser de todos los tipos disponibles.
De nuevo, me remito para más información a la documentación oficial http://www.php.net/manual/es/index.php

PHP 1: Escribiendo la respuesta

2014-03-13 - Categorías: PHP
Aquí desde Spain la crisis sigue apretando, no hay mucho trabajo así que aprovecho para seguir con los minitutoriales. Continuando con éste nuevo post, sin demasiada teoría, vemos dónde ponemos el código PHP. Al grano..

Escribiendo la respuesta

Partimos de que ya tenemos un esqueleto básico en HTML de nuestra página index.html o cualquier otra web con incluso CSS, Javascript, etc. Por ejemplo:
<!DOCTYPE html>
<html>
    <head>
        <title>PHP 1: Escribiendo la respuesta</title>
        <meta charset="utf-8">
    </head>
    <body>
        <!-- AQUÍ VA EL CONTENIDO DE LA
        WEB -->
        <?php
 echo "<p>¡Hola mundo!</p>";
        ?>
    </body>
</html>

En cualquier lugar podemos usando las etiquetas <?php código fuente ?> incluir nuestra programación que se ejecutará antes de enviar al navegante. Éste código dará de resultado, simple y llanamente el siguiente resultado que enviará al navegador:

<!DOCTYPE html>
<html>
    <head>
        <title>PHP 1: Escribiendo la respuesta</title>
        <meta charset="utf-8">
    </head>
    <body>
        <p>¡Hola mundo!</p>
    </body>
</html>

Existen otras formas de escribir la respuesta, pero para escribir simple texto con echo tenemos bastante. Tenemos también print, printf, fprintf, etcétera..

También podemos tener una página completamente en PHP, en la que sólo hace falta que abramos la etiqueta <?php y sin cerrar. Pero en éste caso, todo debe generarse desde PHP. Es decir, todas las etiquetas HTML o contenido cliente debe generarse.
<?php
// código fuente de nuestro programa..
Lo habitual es usar éste formato cuando dividimos la aplicación en varios ficheros. Por ejemplo, podemos tener funciones, objetos, variables y otras cosas separadas en otros ficheros .php e incluirlos o requerirlos. Más adelante escribiré sobre cómo incluir o dividir la aplicación en trozos. Todo éste código PHP se ejecutará en el servidor, escribiendo la respuesta que se le va a enviar al visitante, y posteriormente se le enviará al navegador sin que el navegador del visitante pueda ver nada de la programación PHP.

Para más información me remito a la documentación oficial http://www.php.net/manual/es/index.php


PHP 0: Preparando las herramientas

2014-03-10 - Categorías: PHP
PHP

Inaguro con éste post una serie de pequeños tutoriales que pretendo publicar para auto-reciclado de nuestros conocimientos. O para aprender los nuevos, los que los lleguen a leerlos, de una manera no demasiado técnica, aprendiendo los conceptos básicos sobre programar en PHP.

La sintáxis de PHP es parecida a C/C++, Java, JavaScript, así que si ya conoces alguno de éstos lenguajes verás más claros los codigos.

Sobre navegar

En Internet, mientras navegamos, todo ocurre de la forma: el navegador pide una página aun servidor web, el servidor web se encarga de hacer lo que tenga que hacer y construye la respuesta, y finalmente ésta respuesta se la envía al nevagador web. Hay una arquitectura cliente-servidor, donde el cliente (navegador) hace peticiones al servidor (servidor web) y éste le devuelve lo pedido.

Navegador ------------------> realiza petición ---------------------> Servidor Web
..el servidor procesa la petición, aquí PHP se ejecuta..
Navegador <------------------ recibe la petición <------------------- Servidor Web
PHP se ejecuta en el servidor, aunque también permite ejecutarse en línea de comandos, como el antiguo MSDos o el bash de Linux. Es decir, lo que programemos en PHP va a ejecutarse en el servidor web que tengamos antes de enviarsa nada a nuestros navegadores. PHP se usa para construir la respuesta que vemos en el navegador. Dicha respuesta puede contener noticias, un foro.. todo tipo de contenido dinámico generado según lo que se haya programado.

Herramientas

Vamos a necesitar, como para cualquier desarrollo web, unas herramientas:
  • Editor de texto: Notepad, Notepad++, Eclipse, Aptana Studio, Vi, Nano, Gedit.. cada cual con el que más le guste, si tienes experiencia con Eclipse recomiendo ver el Aptana Studio, si no mejor algo más simple para empezar como el Notepad++, si usas Linux no tendrás problema para encontrar el tuyo y tal vez ya tengas alguno bueno instalado. También los hay de pago como PhpStorm que últimamente está muy de moda.
  • Navegador web: imprescindible tener varios para probar en caso de querer máxima compatibilidad. Internet Explorer, Chrome, Opera, Firefox y Safari son los más utilizados. De entre ellos Firefox es que más respeta los estándares y ya todos suelen traer herramientas de desarrollador que nos faciliten la tarea.
  • Servidor web con PHP: ahora viene lo complicado, tenemos muchos servidores web disponibles y le podemos. Para programar nos puede valer con cualquiera decente que tenga PHP aunque no está de más elegir uno bastante estable y completo. Directamente recomiendo Apache en sus versiones XAMPP, WAMPP, LAMPP, Uniform Server para Windows o el propio Zend Server en su versión gratuita, que ya nos traerá todo el paquete listo para usar y no tendremos que meternos a hacer tareas de administrador de sistemas.
Una vez instalado y configurado todo podemos empezar con un primer proyecto para comprobar que todo funcione.

Primer proyecto

Doy por sentado unos conocimientos mínimos sobre programación, soltura en el manejo de tu ordenador, ficheros, directorios, etc..
Tenemos mucha información de instalación sobre cada servidor en Internet, las versiones de XAMPP son muy fáciles de instalar y seguro que siguiendo las instrucciones lo instalas rápidamente. En mi caso tengo instalado Uniform Server, que simplemente se descomprime y dentro de su carpeta tengo otra llamada ‘www’ que es donde apunta ‘localhost’. Configurar el servidor se sale del propósito de éste minitutorial así que tal vez en otro..

Cabe destacar que desde la versión 5.4.0 tenemos un servidor embebido que tan sólo instalando PHP. Es muy básico pero es simple para empezar. Entramos en línea de comando al directorio donde tenemos la web y ejecutamos lo siguiente:

C:directorioDeLaWebphp -S localhost:12345

Debemos tener el ejecutable de PHP en el path del sistema. Luego accediendo a http://localhost:12345/ podremos ver nuestro index.php o index.html

Una vez tengamos configurado el servidor elegido podremos acceder a http://localhost/ o al host virtual http://hostvirtual/ y vamos a crear nuestro primer ‘hola mundo’. Escribimos en un fichero de texto lo siguiente y lo ponemos en el directorio del servidor web donde está nuestro host:
<?php
echo "¡Hola mundo!";
?>
Una opción al clásico ‘hola mundo’ es mostrar la información del PHP instalado con lo siguiente veremos todas las variables de la instalación, así como la versión y otras configuraciones:
<?php
phpinfo();
?>
Debemos ver algo parecido a la imagen siguiente:

Terminando

Si te has instalado un entorno de desarrollo, un navegador, el servidor web y has conseguido ver en el navegador la imagen anterior del phpinfo te puedes dar por satisfecho. Espero pronto poder seguir escribiendo.

Para terminar no me queda más que remitirme a la documentación oficial de donde he sacado muchos conceptos. También hay muy buenas webs con más contenido sobre PHP, como por ejemplo el proyecto http://www.phptherightway.com/

Un saludo!

Aumentar la vida del disco duro

2014-02-25 - Categorías: General
En éstos días he tenido acceso a un ordenador que ha estado trabajando con archivos grandes, generados de resultado de renderizados 3D. El ordenador ha estado trabajando duro y el disco se ha muerto. Asunto normal teniendo en cuenta la gran carga de trabajo hecho.
No ha quedado otra solución que reemplazar el disco duro, reinstalar el sistema operativo y a seguir funcionando. Pensando en ello, tengo un sistema operativo Windows, igual que el equipo en cuestión. Y resulta que hace tiempo que no desfragmentaba. Con lo que me encontré en uno de los discos la imagen del disco bastante fragmentada que adjunto.

La desfragmentación en Windows

La fragmentación ocurre cuando grabamos archivos en el disco duro en trozos dispersos. Sería mejor que un mismo archivo estuviera en el disco en el mismo sitio, mejorando así su lectura y evitando que el cabezal de lectura del disco vaya dando saltos buscando los trozos del archivo, cosa que reduce la vida del mismo aparte de su velocidad de respuesta.
Aún tenemos en los sistemas de Microsoft el problema de la fragmentación. Cuando teníamos los sistemas de archivos antiguos tipo FAT la desfragmentación era más grave. Con los nuevos sistemas de archivos NTFS se ha mejorado pero sigue pasando, con lo que el desfragmentado viene siendo necesario. Cosa que no ocurre en otros sistemas. Pero ¿porqué ocurre? ¿no sería más fácil grabar los archivos sin partirlos?
La fragmentación ocurre porque Windows da más importancia a que los datos se graben rápidamente, con lo que ahí donde esté el cabezal empezará a grabar y si queda sin espacio contiguo partirá el fichero en trozos más o menos dispersos dependiendo del espacio libre. Además si un archivo crece en tamaño y no hay espacio libre hasta el siguiente archivo entonces se fragmenta. Ésto se ha mejorado con el nuevo NTFS, dejando más espacio libre entre archivo y archivo por si acaso crece en tamaño. Pero tarde o temprano se torna necesario desfragmentar.

Otros sistemas

En los equipos Mac también ocurre la desfragmentación. En Linux, con los sistemas de archivos ‘ext’ se ha solucionado casi totalmente éste problema porque directamente dispersa los archivos por el disco duro asegurándose que no haga falta fragmentarlos. Produciéndose la desfragmentación sobre la marcha donde sólo permite un 1% de archivos fragmentados. Aunque también hay herramientas con las que se puede desfragmentar un sistema Linux.

Mejorando

Resumiendo, si queremos entonces evitar en la medida de lo posible que tu disco duro vaya dando saltos adelante y atrás, moviéndose entre discos, sectores y cilindros para leer y escribir tus datos lo que debemos hacer es desfragmentar el disco duro de vez en cuando.
En Windows 7 tenemos el desfragmentador en el botón de Inicio -> Accesorios -> Herramientas del sistema -> Desfragmentador de disco
Hay muchas soluciones en el mercado, de entre ellas, para uso personal tenemos el famoso Defraggler. Es muy completo, te permite incluso elegir qué archivos quieres compactar entre sus numerosas opciones.
Un saludo!

Probando Bootstrap 3

2014-02-17 - Categorías: General

Cada vez menos ordenadores de sobremesa visitan las páginas web. Se venden ingentes cantidades de dispositivos que no son los clásicos ordenadores como tablets, smartphones, smart TV.. Los visitantes de una web necesitan que la página sea compatible con todo tipo de dispositivos. Bootstrap de Twitter está muy de moda, a fecha de hoy van por la versión 3.1.1 así que aprovechando para ponerme al día les dejo éste post. Al grano..

Bootstrap de Twitter es un framework de desarrollo para hacer aplicaciones web compatibles con todo tipo de dispositivos. El modelo de desarrollo cambia totalmente al modo habitual porque se da preferencia a los dispositivos móviles siendo su adaptación primera, antes que para escritorios de ordenador. Para verlo claro más abajo veremos cómo el mismo menú en caso de tener una pantalla ancha se verá en horizontal como en la imagen de arriba. Si tenemos una pantalla estrecha se visualizará desplegándose hacia abajo para que quepa todo.
Lo mismo sucede con el resto de las páginas diseñadas con Bootstrap, se adaptan según cambia el tamaño del navegador. Así tendremos una web que se puede ver correctamente en cualquier dispositivo.

Esbozando la web

Para que sea lo máximo posible compatible necesitamos utilizar el estándar HTML5 con lo que la primera estructura quedará así:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Probando Bootstrap Twitter</title>

</head>
<body>

</body>
</html>
Es importante saber que con la metaetiqueta «viewport» definimos la escala inicial de la página. Ésto se utiliza para agrandar o disminuir con la función de zoom de los navegadores.

Añadiendo los archivos externos

Prefiero descagar los archivos de las páginas oficiales (getbootstrap.com) y usarlos dentro del proyecto en cuestión. Pero para simplificar ésta primera plantilla he puesto los CDN. Será necesario tener conexión a Internet para ejecutar la web y se vean el aspecto estilo Bootstrap. Si los incluyes dichos archivos no será necesario Internet. Añadimos dentro del <head> lo siguiente:
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="https:///netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>

Ésto simplemente enlaza a los archivos públicos que tenemos en Internet. Te ahorras espacio usando los CDN, pero dependes de que dichos archivos estén disponibles para que tu web funcione correctamente.

Algunos componentes para probar

A continuación he puesto un menú de navegación y tres paneles, uno simple, otro con título y un tercero con título con estilo de cabecera. Añadiendo en el body lo siguiente tendremos la barra de navegación que viene en la documentación oficial:
        <nav class="navbar navbar-default" role="navigation">
<!-- El logotipo y el
icono
que despliega el menú se
agrupan
para mostrarlos mejor en
los
dispositivos móviles -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-ex1-collapse">
<span class="sr-only">Desplegar navegación</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Logotipo</a>
</div>

<!-- Agrupar los enlaces
de
navegación, los
formularios y
cualquier
otro elemento que se
pueda
ocultar al minimizar la
barra
-->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li class="active">
<a href="#">Enlace #1</a>
</li>
<li>
<a href="#">Enlace #2</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Menú #1 <b class="caret"></b> </a>
<ul class="dropdown-menu">
<li>
<a href="#">Acción #1</a>
</li>
<li>
<a href="#">Acción #2</a>
</li>
<li>
<a href="#">Acción #3</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #4</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #5</a>
</li>
</ul>
</li>
</ul>

<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Buscar">
</div>
<button type="submit" class="btn btn-default">
Enviar
</button>
</form>

<ul class="nav navbar-nav navbar-right">
<li>
<a href="#">Enlace #3</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Menú #2 <b class="caret"></b> </a>
<ul class="dropdown-menu">
<li>
<a href="#">Acción #1</a>
</li>
<li>
<a href="#">Acción #2</a>
</li>
<li>
<a href="#">Acción #3</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #4</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>
Incluyendo dentro del body también lo siguiente tenemos los tres paneles citados:
        <div class="container">
<div class="panel panel-default">
<div class="panel-body">

<h1>¡Hola Mundo!</h1>

</div>
</div>

<div class="panel panel-default">
<div class="panel-heading">
¡Hola Mundo!
</div>
<div class="panel-body">
Contenido del panel
</div>
</div>

<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">¡Hola Mundo!</h2>
</div>
<div class="panel-body">
Contenido del panel
</div>
</div>
</div>
Nota que los paneles están dentro de un <div class=»container»>. Éste div contenedor se suele usar para el contenido de la web, alinea lo que tengas dentro, para algunos componentes es necesario si no puede que no se vean bien.

Ahora es el momento de probar con un móvil el fichero, o con una tablet. Si quieres verlo claro directamente en el ordenador puedes estrechar horizontalmente el navegador con la página cargada y verás cómo se modifica el aspecto.

Usando archivos incluidos en el proyecto

Si descargamos y descomprimimos los archivos de la página oficial getbootrap.com, tendremos tres directorios con todos los archivos necesarios menos jQuery. jQuery lo podemos descargar de su página oficial http://code.jquery.com/jquery-2.1.0.min.js y copiarlo al directorio js. Ahora tendremos un directorio /css otro /fonts y un tercero /js con todo incluido. En éste caso viendo los archivos que tengamos según la versión podremos incluir en la cabecera el código siguiente:
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>

Mira que las rutas relativas a los archivos sean correctas y que dichos archivos estén en su sitio, sino no funcionará.

Resumiendo

Entonces el archivo completo de pruebas con los archivos necesarios incluidos en el directorio del proyecto quedará tal que así:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Probando Bootstrap Twitter</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>

<nav class="navbar navbar-default" role="navigation">
<!-- El logotipo y el
icono
que despliega el menú se
agrupan
para mostrarlos mejor en
los
dispositivos móviles -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-ex1-collapse">
<span class="sr-only">Desplegar navegación</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Logotipo</a>
</div>

<!-- Agrupar los enlaces
de
navegación, los
formularios y
cualquier
otro elemento que se
pueda
ocultar al minimizar la
barra
-->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li class="active">
<a href="#">Enlace #1</a>
</li>
<li>
<a href="#">Enlace #2</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Menú #1 <b class="caret"></b> </a>
<ul class="dropdown-menu">
<li>
<a href="#">Acción #1</a>
</li>
<li>
<a href="#">Acción #2</a>
</li>
<li>
<a href="#">Acción #3</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #4</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #5</a>
</li>
</ul>
</li>
</ul>

<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Buscar">
</div>
<button type="submit" class="btn btn-default">
Enviar
</button>
</form>

<ul class="nav navbar-nav navbar-right">
<li>
<a href="#">Enlace #3</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Menú #2 <b class="caret"></b> </a>
<ul class="dropdown-menu">
<li>
<a href="#">Acción #1</a>
</li>
<li>
<a href="#">Acción #2</a>
</li>
<li>
<a href="#">Acción #3</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #4</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>

<div class="container">
<div class="panel panel-default">
<div class="panel-body">

<h1>¡Hola Mundo!</h1>

</div>
</div>

<div class="panel panel-default">
<div class="panel-heading">
¡Hola Mundo!
</div>
<div class="panel-body">
Contenido del panel
</div>
</div>

<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">¡Hola Mundo!</h2>
</div>
<div class="panel-body">
Contenido del panel
</div>
</div>
</div>

</body>
</html>
Si todo ha ido bien debemos de ver la página como la de la imagen de al lado cuando hacemos la ventana del navegador estrecha. Espero haber resumido correctamente la documentación oficial como para poder empezar a jugar con el framework Bootstrap.

Sólo me queda decir que los ejemplos de componentes que he puesto los he sacado de la documentación oficial, en ella estan todos los que hay disponibles. Como por ejemplo el uso de rejillas, las fuentes para los pequeños gráficos incluidos, y un largo etcétera..

Saludos!


Validación de páginas web

2014-02-09 - Categorías: General
Hace tiempo que no escribo, parece que estoy olvidándome de la programación pero no es así. He estado bastante liado, tal vez demasiados proyectos o demasiado «querer hacer». El que mucho abarca poco aprieta, o el que mucho aprieta poco abarca :S así que espero seguir escribiendo, aunque sea los fines de semana.

En éstos días he estado viendo cómo se puede medir la calidad de una página web. Desde un punto de vista se puede medir la cantidad y calidad de los algoritmos que trabajan en la parte servidor, sus funciones o servicios que dan. Por otro lado tenemos las validaciones de la parte cliente, si cumple con los estándares de los lenguajes..

Unos chequeos que podemos hacer para validar la parte cliente:
Otras herramientas: http://www.w3.org/QA/Tools/
Con ésto ya hay para hacerle algunos checkeos automáticos. Son pocas las webs que cumplen con todos los estándares, pero la organización mundial donde se organiza todo ésto está ahí haciendo su trabajo, queda de nuestra mano todo lo demás sino te arriesgarás a que la web pueda no funcionar bien en algunos navegadores. Ten en cuenta también que cumpliendo con la accesibilidad le hecharás una mano a personas que tienen problemas visuales, a los que necesitan traductores automáticos, de otras culturas, y un largo etcétera. La accesibilidad es algo muy importante y se nos pueden pasar por alto.
Por otro lado tenemos también los criterios de diseño como por ejemplo: «Si algo es un botón que parezca un botón.» no le pongamos una imagen con luces intermitentes.. ésto ya es otro tema, a ver si pronto tengo tiempo.. Si estás leyendo ésto gracias por haber llegado hasta aquí 🙂
Un saludo!

Redes sociales de Internet: qué son y cómo usarlas

2014-01-22 - Categorías: General
Una red social, es una estructura donde los elementos conectados en su mayor parte son personas que establecen relaciones. Se interrelacionan estableciendo lazos de diversa naturaleza: relaciones personales, familiares, de trabajo, por distribución geográficas, gustos, aficiones, etcétera.
Son una forma muy eficiente y práctica de relacionarse, estableciendo nuevos contactos, manteniendo y comunicando todo tipo de información.

Principales

Dependiendo de la naturaleza de las relaciones se pueden diferenciar los principales usos que se les está dando. Nombrarlos todos es una tarea interminable, ya que dada la naturaleza de las relaciones sociales que se pueden establecer no acabaríamos nunca.
Entre las principales redes sociales de Internet a fecha de hoy tenemos Facebook, Twitter, Google+, Linkedin, Instagram, Pinterest.. en la zona occidental del globo. Todas tienen características propias que las diferencian y son mejores para algunas cosas.

Características

Analizarlas todas en profundidad necesitaría de un estudio detenido sobre cada una por lo que vamos a citar las principales diferencias.
  • Facebook, caracterizada por su uso general para todo tipo de propósitos: familiar, amistad, trabajo, etcétera. Se pueden compartir fotos, vídeos, ficheros, comentarios, etcétera.
  • Twitter, red de difusión de pequeños mensajes de 140 caracteres. Se pueden compartir fotos, vídeos y enlazar con webs externas.
  • Google+, cuya principal característica es que enlaza todo tipo de contenidos. De igual manera que Facebook, y usando el ecosistema de servicios de Google, podemos comunicarnos mediante mensajes, emails, compartir información de Blogger, fotos de Picasa y videos de YouTube.
  • Linkedin, destaca por su uso para trabajo, estableciendo relaciones laborales entre las personas. Es buena en estructurar dicha información, facilitando las relaciones entre personas laboralmente afines.
  • Instagram, orientadaa compartir imágenes comentándolas. Destacan los retoques fotográficos que se les pueden dar.
  • Pinterest, parecida a Instagram, nos facilita enormemente compartir imágenes. Destaca la facilidad que da para organizar temáticamente tus fotos.
En líneas generales sin entrar en tecnicismos sobre conectores, grado de centralización, cohesión.. éstas son las principales. Se podrían establecer una principal diferenciación entre redes de propósito general, como Facebook o Google+, y las orientadas a ciertos usos o tareas. Existen todo tipo de redes temáticas como por ejemplo para cinéfilos, lectores, amantes de la música, gatos..

Curioso

Destaca la «teoría de los seis grados de separación». Propuesta en 1930 por el escritor húngaro Frigyes Karinthy. En la cual se establece la hipótesis de que dos personas cualesquiera de la Tierra están conectados por una cedena de conocidos de máximo cinco intermediarios.
Facebook ha realizado en 2011 un estudio relacionado estableciendo que el 99,6% de las personas de su red cumplen la teoría de los seis grados, bajando incluso la media a menos de cinco los grados de separación.

Resumiendo

La forma de relacionarnos está cambiando, las redes sociales de Internet estan pasando a formar parte de nuestras vidas. Lo queramos o no, se estan convirtiendo en una prolongación de nuestros cuerpos con la que podemos comunicarnos y relacionarnos con el resto de seres humanos. Estan ahí y parece que han llegado para quedarse.
Un saludo.

PHP siguiente nivel (editado)

2013-12-30 - Categorías: General
Pensaba que ya tenia un buen nivel de conocimiento en la programación PHP. Estaba a mitad de camino entre programar webs desde cero, o usar CMSs y adaptarlos. Indagando, indagando, y bien aconsejado me decidí por aprender a fondo sobre el tema, cómo estan hechos los CMSs, y sobre los frameworks de desarrollo. La idea que tenia en mente era no reinventar la rueda una y otra vez con cada proyecto. Ahora resulta que como dice el dicho, cuanto más aprendo, más veo que me falta por aprender. Es chistoso pero así es, a veces me siento contento de haber aprendido, pero miro hacia adelante, no quiero quedarme atrás, y pienso sobre todo lo que quisiera saber.
Por todo ésto les quiero compartir una serie de enlaces a alimento académico y herramientas. Para todos aquellos que estamos en constante reciclaje, que creo la mayoría de los programadores..

Al grano, los recursos:
  • PHP -> Imprescindible, manuales oficiales sobre el lenguaje de programación PHP.
  • LIBROSWEB -> Muchos libros gratis para la comunidad de programadores. Son libros avanzados sobre XHTML, Symfony, Silex, Composer, Git, CSS y más.
  • Composer -> Es una herramienta con la que podemos instalar de forma automática todo tipo de librerías para aplicaciones PHP. Es un manejador de dependencias. Resumiendo, eliges las herramientas, ejecutas el comando de composer y te instala todas las librerías. Por ejemplo, Symfony y Silex se pueden instalar o actualizar usando Composer.
  • Packagist -> Es el repositorio principal de paquetes para Composer. Podemos consultarlo que probablemente encontremos herramientas que nos agilicen los desarrollos.
  • Symfony -> Framework de desarrollo con una comunidad de habla hispana muy grande, podemos encontrar mucha documentación en Internet.
  • Silex -> Microframework basado en algunos componentes que usa Symfony. Muy sencillo para empezar y potente cada vez más cuando vamos aprendiendo a usar sus componentes.
  • Aptana Studio -> Un entorno de desarrollo basado en Eclipse que seguro que a mas de uno le gustará si lo prueba. Tiene de todo para el desarrollo web desde el punto de vista de un programador. Editor de código bueno, autoformateo de código, autocompletado, resaltado de sintáxis. Y es gratis.
  • PHP, la manera correcta -> Proyecto de documentación sobre buenas prácticas a la hora de programar.
Gracias a Albert por gran parte de la información.
Un saludos y ¡que aproveche!

La base de datos más grande de iconos vectoriales gratis

2013-12-30 - Categorías: General
Se trata de un proyecto libre, hecho por y para diseñadores y desarrolladores, cualquier colaboración seguro que será bien recibida. 
Su fundador, Alejandro Sánchez Blanes, se preocupaba diciendo:

«Por qué no construir una nueva herramienta para encontrar y elegir los iconos sin límites, una herramienta que puede funcionar bien en cualquier proyecto, con el tiempo.»

Flaticon es un almacén de iconos vectoriales que viene de la mano de Freepik, ya muy conocido. Pero en éste caso, se orientan a los iconos, todo tipo de iconos simples y sencillos, los ladrillos para tus trabajos.
Los tenemos ordenados por categorías, autores, packs.. también tenemos un buscador. Podemos ir añadiendo a una cesta todos los iconos que queramos y descargarlos de una vez en un archivo comprimido que se generará automáticamente. Podremos elegir los formatos de Webfont, PNG, SVG o descargar en todos los formatos de una vez.
Por otro lado tenemos disponible un plugin para Photoshop, libre en descarga también en la web. En Jnjsite, como viene siendo habitual, nos gustan los proyectos libres así que aquí les dejamos el enlace a la web:
Un saludo!

Poner tu negocio en «la nube»

2013-12-18 - Categorías: General


No es lo mismo poner un negocio en la nube, que ponerlo por las nubes, o estar en las nubes. Es  lo llamado cloud computing en inglés, se traduce por computación en la nube. Pero ¿qué es eso de la nube? ¿dónde está? ¿no está ya mi web en la nube? ¿qué es exactamente la nube de Internet?

Qué no es

Tradicionalmente, si contratamos espacio para poner una web en Internet, o si conectamos un ordenador a Internet, no estamos montando una nube. Solemos venir contratando este servicio a una empresa que nos alquila una cantidad de espacio, una velocidad del ordenador, una cantidad de visitas posibles (traducido en tasa de transferencia), cantidad de emails almacenados, etcétera…
Todo ésto es lo que no es, lo que se viene haciendo de manera tradicional limitando el uso de lo que ponemos en Internet. Hoy en día podemos encontrar soluciones cloud, en la nube, supuestos servicios en la nube que realmente no lo son. Se está utilizando esta forma de nombrar a la nube porque se vende bien, por eso debemos poner especial cuidado.

Qué sí es

En líneas generales, la nube es un conjunto de servicios que nos ofrece una empresa, los cuales se van ampliando conforme se necesita más. Para que nos entendamos, si tenemos una web y resulta que de repente necesitamos 27 Gigas extra de almacenamiento, si estamos en una nube ésto se amplia automáticamente y pagaremos por la cantidad de espacio que usemos. De igual manera ocurre con todo, tráfico entre la web y los visitantes, velocidad de procesamiento, balanceo de carga en las bases de datos, etcétera.

Es decir, se trata de un sistema escalable automáticamente, que se va aumentando o disminuyendo según es necesario y sólo pagaremos por lo que usemos. Hoy en día hay muy buenas soluciones para ésto y las empresas quieren cada vez más tener éste servicio. Pero no todas lo ofrecen realmente o dan un servicio parcial de lo que realmente es cloud computing.

Terminando

Una nube es un servicio en Internet donde al tener una aplicación web su capacidad para dar servicio aumenta o disminuye automáticamente, es escalable, dando todo el servicio que sea necesario sin colapsarse ni saturarse. De igual manera se paga por lo que se use, ni más ni menos, según las tarifas de cada empresa aumentando los costes o disminuyendo según la cantidad de servicio que se haya dado.
Para citar dos ejemplos de las empresa famosas:
  • Amazon, con sus Amazon Web Services y el Elastic Beanstalk, una solución más que interesante.
  • Google, con su App Engine, simplemente práctico y fácil de usar. 
Un saludo.

© 2024 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.