Posts tagged: Programación

Novedades en HTML5

By , 19/04/2012 11:49

Tras varios días recopilando información y haciendo pruebas sobre lo que está por venir en HTML5 solo puedo decir que ¡Me gusta!, me gusta mucho el rumbo que va tomando, me gusta que vaya encaminada a hacer la web mucho más semántica y que permita a los buscadores indexar la información mucho mejor, me gusta mucho la integración de vídeo y audio y sobre todo todas las mejoras que se meten con CSS3. En esta entrada y sucesivas trataré de hacer un resumen de las mejoras que se han añadido.

Nuevas etiquetas

Se han añadido nuevas etiquetas que pretenden ayudar a mejorar la estructuración del código HTML.

  • <!DOCTYPE HTML>. La nueva declaración del tipo de documento, mucho más simple, mucho más clara y actualmente ya soportada por los navegadores más usados.
  • <section>. Representa una sección genérica, Puede ser usada junto a <h1>-<h6> para indicar la estructura del documento.
  • <article>. Representa un fragmento de contenido, como una entrada de blog o un artículo de periódico.
  • <header>. Representa la cabecera de la página. La parte típica donde colocamos un logotipo, un banner…
  • <footer>. Igualmente han creado una etiqueta para la parte inferior de la página donde se suelen mostrar, créditos, copyright, el about, los enlaces a redes sociales…
  • <nav>. Sección de la página en la que se integra la navegación.
  • <dialog>. Puede ser usada para marcar la existencia de un diálogo.
  • <video>. ¡Podemos insertar vídeos!. Permite añadir un elemento de vídeo con su barra básica de navegación.
  • <audio>. Igual que el vídeo pero para elementos de audio.
  • <canvas>. Crea un elemento mediante el cual por medio de javascript podremos dibujar sobre el documento. Por ahora solo en 2d.
  • <wbr>. Marca el lugar en el que una palabra puede ser cortada o dividida en caso de que el navegador lo crea necesario.
  • <section contenteditable=”true”>. Permite que un contenido sea editable directamente por el usuario.
  • <svg>. Inserta un elemento svg, para integrar imágenes de tipo vectoriales con código svg (xml).
  • <time>. Indicará a cualquier indexador que el contenido de la etiqueta es una fecha.
  • <time datetime=”2012-04-18″>. Indicará al indexador que el contenido de la etiqueta corresponde a la fecha indicada en el atributo. podemos escribir algo así… <time datetime=”2012-04-18″>Hoy</time> es mi cumpleaños.
  • <### itemscope itemtype=”*”>. Permite integrar tipos de datos reconocibles por indexadores. Podremos por tanto indicar que estamos tratando con un tipo de dato “persona” y marcar en cada uno de los textos varios valores como <span itemprop=”name”>Eduardo</span>, <span itemprop=”nickname”>Ikito</span>
  • <input type=”text” required/>. Marca un input como requerido en un formulario. Podremos darle un estilo y que por ejemplo se remarque en rojo.
  • <input type=”***”>. Se crean nutos tipos, tales como “email”, “date”, “number”, “url”, “range”. Son validados en el cliente sin necesidad de javascript y en muchos casos el elemento input tiene un diseño especial, por ejemplo, el “date” despliega un calendario.
  • <**** draggable>. Marca un elemento como “arrastrable”, una nueva API que tendremos que estudiar.
Hay mucho, mucho más y la explicación de cada uno de los elementos podría ser mucho mas extensa. Por ahora lo dejo aquí, dando paso a una nueva serie de entradas en las que iré tratando cada uno de los elementos por separado si alguno resulta interesante.
Enlaces de interés:
Diferencias entre HTML4 y HTML5

Sumar días a una fecha en PHP

By , 13/04/2012 11:27

Las fechas… ese gran problema. El último problema consistía en sumar días a una fecha dada… Seguramente tengamos veinte maneras de conseguirlo de una forma más o menos cómoda. Para mi esta es la mejor:

$fecha_final= date("Y-m-d", strtotime("$fecha_inicio + 1 days"));

Tenemos la fecha de inicio, la pasamos a formato Año/mes/día y le sumamos un día. Simple y rápido.

Fechas en texto con PHP y primera letra en mayúscula.

By , 07/03/2012 12:37

Puede parecer una tontería pero PHP no ofrece a primera vista (al menos) una forma cómoda de obtener fechas en modo texto.

Este código devuelve el formato de fecha en texto:

echo (strftime('%B de %Y')) 

Devolvería:  marzo de 2012

Poner la primera letra en mayúscula es muy simple

echo (ucfirst(strftime('%B de %Y'))) 

Recordaremos que en Español los días de la semana y los meses van en minúscula… No como en otros idiomas, de ahí que a veces tengamos confusiones. En este caso concreto el mes inicia la frase, de ahí que la “capitalicemos”. Si tuvieramos el mismo problema en inglés, donde si que se capitalizan los días de la semana y los meses podría hacerse algo así:

echo (ucfirst(date('l')) . ucfirst(date(' F \of Y'))) 

Devolviendo algo como esto: Wednesday March of 2012

Montar un servidor de Minecraft en casa Parte 1

By , 06/03/2012 10:36

Este post y los que le siguen nacen del profundo vicio en el que se ha convertido para mi y algunos amigos el puñetero juego Minecraft. (¿No sabes que es?Rápido¡Sal de aquí!. ). Después de jugar mucho en partidas locales pensamos que sería algo interesante tratar de montar un servidor en el que pudiéramos jugar en conjunto, esto añadiría un plus de diversión seguro. Así que me puse manos a la obra. Iremos por partes:

- En primer lugar necesitamos un ordenador... Lo ideal es un PC que no estemos usando, ya que el servidor de Minecraft en versión java exige bastante y no queremos que la partida se vea ralentizada o entorpecida por factores externos. En mi caso se trata de un Pc de sobremesa fruto de la unión de todas las piezas que han ido sobrando de anteriores PC’s. Un AMD 3100+, 2 Gb de Ram, Tarjeta gráfica Ati de 128 Mb, 160 Gb de disco y tarjeta Wifi. En principio pienso que será más que suficiente.

- Evidentemente necesitamos una conexión a internet, en mi caso JAZZTEL de 6 Mb. Y unos pequeños ajustes en nuestro router para redirigir y permitir ciertas entradas/salidas a algunos puertos. – Sistema operativo… Linux sin dudar (It’s free!). Más complejo, más complicado, pero mucho más eficiente en todos los aspectos que cualquier Windows que pueda meterle a esta máquina. Con windows Xp en todo caso… No he probado, pero dudo que se acerque al rendimiento de una máquina Linux dedicada. En mi caso por facilitar un poco la tarea me he decantado por una Debian de 64Bits, aunque lo realmente ideal hubiera sido una versión server… Pero como no me manejo a nivel experto en este tema he optado por una versión de escritorio que facilita mucho ciertas tareas y además permite que en un momento dado pueda darle algún otro uso a la máquina.

- Extras… Para que nos vamos a engañar, a uno le gusta liarse por naturaleza así que pretendo complicarlo todo lo posible y más allá.

  1. Pretendo añadirle algún servicio tipo dyndns, para no tener que andar avisando a todo el mundo cada vez que me cambien la IP. Por lo que optaremos por crear algo del estilo nombre.dyndns-home.com que redirija a la IP que mi router tenga en cada momento. Dyndns tiene un cliente que actualiza la IP continuamente por lo que haciendo referencia a este Hostname iremos siempre a nuestro Router.
  2. Añadiremos algún tipo de extra a Minecraft, por sencillez hemos pensado en Bukkit, que genera un entorno sencillo y una enorme comunidad que ofrece cientos de plugins para mil y una chorradas en el juego.
  3. Una web ligera. En la misma máquina que permita obtener información detallada del estado del servidor de Minecraft y si fuera posible que permita algo de administración remota.
  4. Acceso al servidor por SSH que mediante el uso de SCREEN permita administración remota del servidor y del juego. En nuestro caso somos más de un informático por lo que puede ser necesario que varias personas puedan andar trasteando en la máquina.
  5. Una base de datos MYSQL. No es imprescindible pero creo recordar que algunos de los plugins de Bukkit se pueden apoyar en una BBDD.

Esto es todo por ahora. Iré actualizando mis avances.

función iif en PHP

By , 01/03/2012 11:58

Desde mis tiempos mozos en Visual Basic hay una función que siempre me ha sido de extrema utilidad, le función iif() que en visual Basic venía a ser algo así:

Function checkIt(ByVal testMe As Integer) As String
    Return CStr(IIf(testMe > 1000, "Large", "Small"))
End Function</pre>
)

En PHP es posible hacer lo mismo siguiendo el siguiente formato:

$valor = ($numero>10 ? "afirmativo" : "negativo");

Publicar en twitter desde e-mail

By , 25/11/2011 10:47

No me preguntéis los motivos, pero llevaba un tiempo pensando en buscar alguna aplicación que permitiera publicar en twitter mandando un e-mail a una dirección de correo electrónico. Encontré más de un servicio pero en su mayoría habían desaparecido o el funcionamiento no era exactamente lo que yo esperaba. El proceso es simple, necesitamos:

  1. Hosting propio. Con cuenta de e-mail y opciones de Cron (optativo).
  2. Cuenta en twitter como developer. (Para crear una App).
  3. PHP en nuestro hosting (1 solo archivo + librería Oauth).
  • Comenzaremos creando una cuenta de correo. Por ejemplo: publicatwitter@hosting.com.
  • Un directorio con un archivo PHP en nuestro hosting. Por ejemplo:  /mail2tweet/publica.php.
  • Creamos una aplicación en twitter en la que indicaremos la url completa al archivo PHP, indicaremos que es una aplicación de lectura y escritura (READ/WRITE) y obtendremos los datos: Consumer_key, Consumer_secret, Access_token y Access_token_secret, estos últimos hay que generarlos desde una de las opciones de configuración de la aplicación. Utilizaremos la librería tOAuth.class.php la podeís encontrar aquí.
  • Ahora vamos con el php. Podéis descargar el ejemplo aquí
  • Finalmente si tenemos opción a Cron en nuestro hosting programamos una tarea sobre este archivo PHP cada hora por ejemplo. Si no tenemos Cron sería suficiente con visitar la URL anterior para ejecutar todo el proceso.
Hay un par de detalles que debo comentar. El primero es que para poder identificar claramente los correos que deben ser publicados en twitter en el archivo PHP incluimos una clave para que solo nosotros podamos publicar cosas en nuestro twitter… ¿No queremos spam de viagra verdad?. Lo segundo… No me he querido complicar demasiado con la gestión de IMAP y las partes del correo por lo que he introducido en el texto de los correos unas cadenas de inicio y de fin de mensaje para poder identificarlo facilmente. Un ejemplo de envío sería:
To: publicatwitter@hosting.com
Subject: clavesupersecreta
texto: ***Publica esto***
Ni que decir tiene que no he querido profundizar más en el tema, funciona, que es lo que yo quería. Espero que esto pueda serviros como base a cosas mayores ya que creo ofrece muchas posibilidades.

Instalar LAMP En Ubuntu Lucid Lynx 10.04

By , 11/06/2010 12:22

Con esto instalamos en Linux Apache Mysql y Php (LAMP), un paquete todo en uno.
Es muy sencillo, solo es necesario:

egarcia@egarcia:~$sudo apt-get install lamp-server^

Con esta línea (importante el carácter ^ al final) instala todos los paquetes necesarios.

Si el sector de la construcción tuviese que trabajar como el de la informática

By , 10/02/2010 15:21

Más razón que un santo…

image001

Go. el lenguaje de programación de Google

By , 12/11/2009 10:28

Go es el nuevo lenguaje de programación que viene de la mano de Google, el Dios Google, al que pronto deberemos adorar y temer. Se trata de un lenguaje,  según comentan, con la potencia de C la velocidad de Phyton y sobre todo… OPENSOURCE, algo muy a tener en cuenta sobre todo teniendo detrás el nombre de GOOGLE.

Yo mientras escribo esto estoy instalándolo todas las herramientas necesarias para empezar a trastearlo un poco, he seguido el siguiente How to de Mundogeek para Ubuntu y también he mirado en la página de Go, http://golang.org/ .

Una vez instalado todo lo necesario podemos proceder a realizar nuestra primera prueba, el mítico “Hola Mundo”.

egarcia@egarcia:~$ sudo gedit hola.go
package main
import "fmt"
func main() {
fmt.Printf("Hola mundo\n");
}
egarcia@egarcia:~$ 8g hola.go
egarcia@egarcia:~$ 8l hola.8
egarcia@egarcia:~$ ./8.out
Hola mundo
egarcia@egarcia:~$

Y acabo de hacer mi primer Hola mundo en Go :) .

Panorama Theme by Themocracy