Ads 468x60px

Perfil

martes, 30 de abril de 2013

Robird, una aplicación ideal para usuarios de Twitter

unnamed1
Cualquier persona que haya adquirido o que tenga en su poder un smartphone, probablemente sea un asiduo usuario de las redes sociales. Entre ellas, Twitter es una de las más populares, encabezando la lista junto con Facebook. Esta red social de microblogging a su vez es la más elegida por aquellos usuarios de teléfonos inteligentes, sobre todo porque es muy fácil de utilizar y nos ayuda a pasar el rato e incluso a comunicarnos con los demás. Robird, a su vez, es un cliente de Twitter disponible para Android que viene pisando fuerte en el market, debido a algunas características que destacan sobre otros clientes.

Utilizando Robird en Android

Robird, además de todas las funcionalidades regulares que nos ofrece para manejar nuestra red social predilecta y sacarle el mayor de los provechos, destaca principalmente por su sistema de notificaciones, bastante novedoso y definitivamente diferente a todas las demás aplicaciones que se conocen hasta el momento. Se preguntarán “¿qué es eso tan diferente que tiene Robird?”. Lo que hace que sea tan destacada como aplicación, es su sistema de notificaciones push. ¿Qué significa esto? Que las notificaciones llegan automáticamente a nuestro smartphone, lo que las hace más accesibles. La única aplicación que tiene esta característica es la oficial de Twitter, pero si por algún motivo queremos trasladarnos a otra, Robird es la que deberíamos elegir para conservar la mayor cantidad de prestaciones posibles.
En cuanto a la interfaz gráfica  dato que muchos usuarios toman en cuenta a la hora de descargar o no un aplicación, es bastante atractiva y está muy a tono con todo el sistema Google que caracteriza a los smartphones con Android. Los colores similares, las fuentes de letra, e incluso la manera de funcionar se ajusta perfectamente al sistema operativo. Además del punto estético, la aplicación es muy intuitiva, funciona rápido, y es muy fácil de configurar. ¡Los animo a probarla!

lunes, 29 de abril de 2013

Cómo realizar tu analítica blogger en tiempo real

analitica_web
Todos los que trabajamos en la red y los que vivimos de está maravillosa herramienta que es la Internet, sabemos la importancia que tiene el tiempo real. Metafóricamente incluso muchos cibernautas comparan el “tiempo real” diciendo que es algo así como el Santo Grial de los webmasters y bloggers. Y sí, tener acceso a los resultados y al rendimiento de lo que hemos publicado en el minuto a minuto es algo así como el rating en televisión, nos brinda información jugosa y por supuesto nos ayuda a tener una idea de cómo está funcionado nuestro sitio, qué cosas impactan bien y cuáles no tienen tanto resultado, a su vez nos brindan datos importantes a la hora de plantear estrategias con respecto a los contenidos, horarios de publicación, geolocalización de los usuarios y del publico objetivo, etc.
Ahora bien, los que recién están adentrándose en esto de las analíticas webs y del tiempo real para hacer seguimiento de resultados, probablemente no sepan cómo dar el primer paso. Existen herramientas muy útiles para realizar seguimientos en tiempo real, y en este caso hablaremos de una en particular, para luego también brindar algunas alternativas en caso de que la primera no resulte del todo convincente. Veamos a continuación.

Lucky Orange, el tesoro de la red

Lucky Orange es un sitio que nos permite realizar esto que mencionamos anteriormente, un seguimiento en tiempo real de los usuarios que ingresan al blog para ir comprobando el rendimiento y los resultados de aquello que hemos publicado. Se preguntarán, ¿cómo funciona? lo único que debemos hacer una vez creada la cuenta es copiar un codigo de javascript que nos brindará el sitio mismo dentro del código de nuestro blog. Si bien el servicio es de pago, tenemos un período de prueba sin costo a través del cual podemos probarlo para decidir si lo queremos de manera definitiva, o no.
El análisis en tiempo real que ofrece Lucky Orange es muy completo. Además de permitirnos hacer un conteo de visitantes únicos podemos también podemos ver cuáles son las palabras clave con más peso en nuestro sitio, y los países y ciudades de dónde proviene mayor cantidad de trafico, entre otras funciones. Por otro lado, una de las cosas que hace a Lucky Orange destacar de las demás analiticas es que nos permite hacer un seguimiento de los tweets que están hablando de nosotros, en tiempo real. Finalmente, la función de “Heat Map” que nos ayuda a conocer las zonas más “calientes” del sitio, en qué partes se situó más el cursor y dónde se concentra mayormente el movimiento tanto del teclado como del mouse.

Alternativas para análitica web

En la red nos podemos topar con un sin fín de paginas web donde podamos realizar la analitica de nuestro sitio. Lo cierto es que no todas estas paginas son tan buenas y precisas, por eso hemos hecho una pequeña selección para tener como alternativa en caso de no querer usar Lucky Orange.
WooRank. En esta pagina además de acceder a la analítica también podremos utilizar otras herramientas que nos brindarán una enorme cantidad de información sobre el rendimiento de nuestro sitio en general. Una vez hecho el análisis del sitio, WooRank no proporciona el puesto que tenemos en el ranking, nos otorga una calificación y nos brinda un informe sobre el SEO del sitio. Pruebalo aqui.
ChartBeat. Este servicio es especial para los sitios con un flujo masivo y constante de visitantes. A través de estadísticas detalladas y gráficos muy bien elaborados nos ofrece un informe del funcionamiento de nuestro sitio en tiempo real. La información brindada, además de la cantidad de visitantes, abarca los países y ciudades de donde provienen las visitas, el tiempo de carga, la fuente de trafico y las paginas que hayan sido compartidas en redes sociales ajenas. Pruebalo aqui.

domingo, 28 de abril de 2013

phpDocumentor – organiza tu documentación PHP y expórtala a HTML

php documentorExisten algunas herramientas que permiten generar documentación de forma automática a partir del código fuente. Javadoc es la herramienta estándar en Java. Para PHP una de las herramientas más utilizadas es phpDocumentor.
La documentación de un proyecto de software es tan importante como su código. Una buena documentación nos facilita en gran medida el mantenimiento futuro de la aplicación. Si además estamos trabajando en equipo es muy útil saber lo que hacen las partes que desarrollan otras personas, sobretodo si tenemos que utilizarlas en nuestra parte.
Para ayudarnos existe la aplicación PhpDocumentor, que nos permite generar automáticamente una buena documentación de nuestro código, de una forma parecida a como lo hace JavaDoc. Mediante comentarios y unas etiquetas especiales podemos definir de forma sencilla que hace cada clase, cada método y cada función de nuestro código.

Los elementos que pueden ser documentados son:
  • define
  • function
  • class
  • class vars
  • include/require/include_once/require_once
  • global variables


Además se puede incluir documentación global a nivel de fichero y clase mediante la marca @package

Documentación para classes y archivos

Marca Significado
@access Si @access es ‘private’ no se genera documentación para el elemento (a menos que se indique explícitamente). Muy interesante si sólo se desea generar documentación sobre la interfaz (métodos públicos) pero no sobre la implementación (métodos privados).
@author Autor del código
@copyright Información sobre derechos
@deprecated Para indicar que el elemento no debería utilizarse, ya que en futuras versiones podría no estar disponible.
@example Permite especificar la ruta hasta un fichero con código PHP. phpDocumentor se encarga de mostrar el código resaltado (syntax-highlighted).
@ignore Evita que phpDocumentor documente un determinado elemento.
@internal
inline {@internal}}
Para incluir información que no debería aparecer en la documentación pública, pero sí puede estar disponible como documentación interna para desarrolladores.
@link
inline {@link}
Para incluir un enlace (http://…) a un determinado recurso.
@see Se utiliza para crear enlaces internos (enlaces a la documentación de un elemento).
@since Permite indicar que el elemento está disponible desde una determinada versión del paquete o distribución.
@version Versión actual del elemento
Dejo aquí un ejemplo

Documentación para funciones y métodos

Marca Significado
@global Permite especificar el uso de variables globales dentro de la función.
@param Parámetros que recibe la función. Formato:
* @param tipo $nombre_var comentario
@return Valor devuelto por la función. Formato:
* @return tipo comentario
Ejemplo :
Para terminar este post decir que mi IDE favorito PHPDesigner está perfectamente integrado con PHPDocumentor tanto para documentar como para compilar la documentación. Esta es una de las razones por las que es mi IDE favorito.

sábado, 27 de abril de 2013

Generar archivos PDF dinámicamente con PHP

pdf logoLos documentos PDF han demostrado ser un medio muy importante dentro de la ofimática actual. Crear, administrar y exportar archivos PDF suele ser un requerimiento esencial dentro de cualquier proyecto web. Necesitamos una herramienta para
  1. Insertar imágenes y gráficas.
  2. Establecer la fuente del PDF.
  3. Tener dinámicamente control sobre el diseño del mismo.
  4. Realizar una maquetación decente para esta clase de documentos es esencial.
De nuestra habilidad para crear estos documentos dependerá la calidad del archivo finalmente exportado. Es por esto que desde este blog os quiero presentar mi herramienta preferida la clase FPDF de PHP.
FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib. La F de FPDF significa Free (gratis y libre): puede usted usarla para cualquier propósito y modificarla a su gusto para satisfacer sus necesidades.
La clase genera documentos en muchos otros idiomas aparte de los europeos occidentales: europeo central, ciríloco, griego, báltico y tailandés, si se dispone de fuentes TrueType o Type1 con el conjunto de caracteres adecuado. El chino y el japonés también están admitidos. UTF-8 también está disponible.
Como es lógico, la velocidad de generación de un documento es menor que con PDFlib. Sin embargo, la desventaja en cuanto a rendimiento es muy razonable y se adecúa a la mayoría de los casos, a no ser que sus documentos vayan a ser especialmente complejos o extensos.
He aquí un ejemplo de uso de la clase simple. El desarrollador tiene en su página muchos más ejemplos más aparte de documentación: http://www.fpdf.org/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
require('fpdf.php');
class PDF extends FPDF
{
//Cabecera de página
function Header()
{
    //Logo
    $this->Image('logo_pb.png',10,8,33);
    //Arial bold 15
    $this->SetFont('Arial','B',15);
    //Movernos a la derecha
    $this->Cell(80);
    //Título
    $this->Cell(30,10,'Title',1,0,'C');
    //Salto de línea
    $this->Ln(20);
}
//Pie de página
function Footer()
{
    //Posición: a 1,5 cm del final
    $this->SetY(-15);
    //Arial italic 8
    $this->SetFont('Arial','I',8);
    //Número de página
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
//Creación del objeto de la clase heredada
$pdf=new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)     $pdf->Cell(0,10,'Imprimiendo línea número '.$i,0,1);
$pdf->Output();

viernes, 26 de abril de 2013

PHPMailer I – gestiona todos los correos de tu site con esta librería



Es posible enviar email con la funcion mail() de php, pero dicha función no permite algunas de las más populares características que proporcionan los clientes de correo usados actualmente. PHPMailer hace fácil la difícil tarea de enviar correos con características especiales y puedes incluso utilizar tu propio servidor smtp aunque éste requiera autenticación (un nombre de usuario y contraseña), con lo que se podrá usar una cuenta gratuita de correo que permita este tipo de conexión.
Características principales:
  • Capacidad de uso de uno o varios servidores SMTP externos
  • Uso de html en el envío
  • Adjuntar imágenes y/o archivos en el mail
  • Embeber imágenes dentro del correo electrónico
  • Buena descripción de errores
Descargas:
http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php4/0.90/
Ejemplos de uso:
http://phpmailer.worxware.com/index.php?pg=examples
Página de los desarrolladores:
http://phpmailer.worxware.com/

jueves, 25 de abril de 2013

Patrones de Diseño II – Singleton en PHP

Una breve entrada para describir el patrón de diseño denominado Singleton y para contaros cómo podríamos implementarlo en PHP.
Intención del patrón

Garantiza que una clase sólo tenga una instancia y proporciona un punto de acceso global a ella.
Problema a resolver

Varios clientes distintos precisan referenciar a un mismo elemento y queremos asegurarnos de que no hay más de una instancia de ese elemento.
Solución -> Singleton

Garantizaremos una única instancia.

¿Cómo obtengo una instancia de la clase y cómo uso sus métodos?
.

miércoles, 24 de abril de 2013

Patrones de Diseño I : introducción

1.- ¿Qué son los patrones de diseño?

Voy a hacer un copy-paste de la wikipedia porque creo que yo mismo no encontraré mejores palabras para definirlo :
“Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.”
2.- ¿Para que sirven los patrones de diseño?
Seguro que casi todos vosotros habéis usado el MVC (Modelo Vista Controlador) en más de una ocasión usando algún Framework o librería. ¿Os habéis dado cuenta de los fácil que es programar con este método una web? ¿Habéis observado lo límpio que queda el código y lo rápido que se programa? Pues bien el MVC no es más que un patrón de diseño que se adapta perfectamente a la programación web.
En general los objetivos de cualquier patrón de diseño los podemos resumir en los siguientes puntos:
  1. Aportar elementos reutilizables en el diseño de sistemas software.
  2. Evitar la repetición de búsqueda de soluciones a problemas ya conocidos y ya solucionados anteriormente.
  3. Definir un vocabulario común entre Analistas-Programadores.
  4. Estandarizar el modo en que se realiza el Análisis estructural de la aplicación.
  5. Facilitar el aprendizaje de las nuevas generaciones de programadores condensando conocimiento ya existente.
3.-  ¿Que importancia tienen?
Saber de patrones de diseño te ayuda a tener un lenguaje común con otros programadores. Cuando te toque modificar un programa, el autor del código seguramente tendrá que explicarte qué fue lo que hizo, cómo funciona su código y por qué hizo cualquier cambio. Se puede demorar horas. Pero esa conversación puede acortarse si te dice, aquí estoy utilizando tal o cual patrón (por ejemplo: el patrón Factory). Serás tú el que ya conozcas los conceptos detrás de esa palabra y sabrás cómo fue diseñado el programa.

martes, 23 de abril de 2013

UML2PHP – Generación automática de aplicaciones PHP

logo UML2PHP
UML2PHP es un servicio online de generación de código que combina las mejores ventajas del modelado de sofware con las funcionalidades avanzadas de los frameworks PHP actuales.
En todo momento, la filosofia es maximizar el código generado minimizando el esfuerzo de modelado necesario.
Este servicio online permite utilizar tu herramienta de modelado UML preferida para, a partir de un simple diagrama de clases (olvídate de profiles, anotaciones,…) generar una aplicación PHP completamente funcional (con formularios para crear/actualizar/borrar objetos, páginas para listar los datos con paginación, ordenación y posibilidad de filtros, validaciones de los datos de entrada, mensajes flash para informar al usuario de posibles errores,…) sin escribir una sola línia de código PHP.
Más concretamente, el servicio genera un esquema doctrine que puede luego usarse como entrada para, por ejemplo, el framework Symfony PHP para generar de forma totalmente automática todo el código CRUD de la aplicación. El resultado es totalmente customizable (se puede cambiar la template CSS por defecto, modificar el código generado si así se desea, etc).
El servicio se puede probar de forma totalmente gratuita.
Para más información puedes contacta con los autores . Y no olvides que en el portal Modeling Languages puedes encontrar otros servicios de generación de código (para SQL, Python,…) y mucha información sobre el desarrollo de software dirigido por modelos (model-driven engineering en inglés) tanto en inglés como en español.

lunes, 22 de abril de 2013

Leer y crear archivos excel XLS XLSX con PHP

icono excel

Es muy común dentro del desarrollo web tener que realizar informes en el formato Excel de Microsoft. Este tipo de archivos está tan sumamente extendido a nivel usuario por lo que resulta prácticamente imposible intentar evadir el tener que usarlo. En este post voy a sugeriros una librería bastante eficiente y util para leer - escribir archivos XLS y XLSx.
- ¿Pero YoPHPro por qué no usas CSV ?
- Sí… ya sé que el formato CSV puede ser más beneficioso para todo el mundo pero … si viene en la especificación del proyecto ¿Qué puedo hacer yo?
En fin, espero que os sirva.

PHPExcel – opensource

Proyecto que proporciona un conjunto de clases para PHP, que permiten escribir y leer diferentes formatos de archivo, como Excel 2007, PDF, HTML, … Este proyecto se articula en torno estándar OpenXML de Microsoft y PHP.
Repasa las funciones que este conjunto de clases proporciona, tales como el establecimiento de datos de hojas de cálculo metadatos (autor, título, descripción, …), varias hojas de cálculo, diferentes fuentes y estilos de fuente, bordes de celdas, rellenos, gradientes, añadir imágenes a la hoja de cálculo, el cálculo de fórmulas , la conversión entre tipos de archivos y mucho, mucho más!

Puedes descargarlo de manera gratuita desde la siguiente URL: http://phpexcel.codeplex.com/

jueves, 18 de abril de 2013

7 errores que debemos evitar al diseñar sitios web


Aunque cada trabajo de diseño web es distinto, hay ciertas cosas que se deberían de evitar a toda costa si deseamos que el resultado sea lo más atractivo posible de cara al cliente/usuario final. Se trata de cosas básicas al diseñar sitios web y que sin embargo algunas veces algunos pasan por alto, sobre todo aquellos que recién comienzan en este vasto mundo de gustos y colores.
1. Tipo de letra incorrecto
El tipo de letra que se usa en un sitio web suele ser un aspecto al que muchas veces se le presta poca atención y sin embargo es el alma de cualquier página. El tipo de letra debe de ser amigable a la vistade fácil lectura, tener buenas formas e integrarse perfectamente en el diseño general. Hay que evitar usar tipos de letra demasiado extraños, aunque tampoco hay que irse por la vía fácil y usar siempre Arial o Lucida Grande.
2. Demasiados tipos de letra
Aunado al punto anterior, hay que evitar utilizar demasiados tipos de letra en nuestro diseño. La variedad es buena, sí, pero si abusamos podríamos terminar con un diseño inconsistente y de mal aspecto.
3. Mala combinación de colores
Los colores del diseño general también deben de estar bien combinados. Si estamos faltos de inspiración siempre podemos hacer uso de herramientas en línea que nos proporcionan paletas de colores que, la mayoría de las veces, son bastante buenas.
4. Imágenes mal optimizadas
Aunque las velocidades de conexión a Internet son cada vez más rápidas, hay que recordar que en algunos lugares hay aún conexiones muy lentas. Por ello hay que asegurarnos de optimizar adecuadamente las imágenes de nuestro diseño para que carguen rápidamente sin que pierdan demasiada calidad, sobre todo si utilizamos elementos en formato JPG.
5. Enlaces que confunden
Hay que asegurarnos de que los enlaces se vean claramente como enlaces y que avisen al usuario si han sido visitados o no. Es realmente molesto visitar el mismo enlace dos veces.
6. Mala alineación
A no ser que el cliente nos encargue un diseño asimétrico debemos asegurarnos de que la alineación de los distintos elementos de la página es la correcta, cuidando espacios y márgenes. Un diseño mal estructurado da la sensación de dejadez, causando una mala impresión.
7. Incompatibilidad entre navegadores
Finalmente llegamos al último punto, tal vez uno de los más importantes: la compatibilidad de nuestro diseño en los distintos navegadores del mercado. Hay quienes diseñan sólo para uno o dos navegadores, cuando como mínimo deberíamos de diseñar para los 5 más populares (en orden aleatorio): Firefox, Opera, Internet Explorer, Chrome y Safari. Aunque más que preocuparnos por nombres de navegadores deberíamos de hacerlo por motores de renderizado como Gecko, WebKit, Trident, etcétera.

miércoles, 17 de abril de 2013

7 errores que debemos evadir para evitar perder clientes


trato con clientes 7 errores que debemos evadir para evitar perder clientes
Los diseñadores freelance tienen que mantener siempre una buena relación con los clientes, seguros y potenciales, si no quieren perderlos. Si bien es cierto que hay ocasiones en que los clientes no facilitan esta tarea, hay que poner todo de nuestra parte siempre que sea posible.
A continuación se listan algunos de los errores más comunes al tratar con clientes. Hay que poner cuidado en no caer en ellos si deseamos conservar y conseguir más encargos.
1. Falta de cortesía
Esto es algo que se aplica en todos los ámbitos en los que la interacción con el cliente es algo esencial. Los clientes, y todas las personas en general, quieren ser tratados con amabilidad y respeto. Hay que hacerlo para recibir lo propio de ellos.
2. Despreciar sus ideas
Nunca hay que pasar por alto las ideas de los clientes por muy pintorescas que éstas sean, después de todo el trabajo es para ellos. Eso sí, siempre podemos realizar comentarios sobre esas ideas y, en casos extremos, explicar la razón por la que no son viables o no funcionarían dentro del diseño.
3. Responder tardíamente
El intercambio de ideas entre el diseñador y el cliente debe de ser ágil, rápido y oportuno. Tardar en responder al cliente pude hacer que éste piense que hay falta de compromiso por parte nuestra, así que hay que hacerlo lo más rápido posible aunque estemos muy ocupados o aún no sea un trabajo seguro.
4. Ignorar las fechas de entrega
El cliente paga por tener un trabajo realizado para determinada fecha y espera tener su encargo listo según lo acordado así que nosotros, como diseñadores responsables, tenemos que cumplir con lo pactado. Está bien pedir uno o dos días extra, pero entregar el trabajo una semana después no es precisamente un indicador de profesionalismo. Este punto dependerá también de la confianza que tengamos con nuestro cliente y éste con nosotros.
5. Realizar cambios en las tarifas
Hay que realizar meticulosamente el presupuesto antes de presentar el precio a nuestro cliente. De no hacerlo es posible que se presenten después cambios en el precio que a los clientes no les parecerá precisamente emocionante. Esto no tendría porqué aplicarse, claro, si el cliente nos pide sobre la marcha cosas que no entraban dentro del presupuesto/idea original.
6. No ser claros en los precios
Aunado al punto anterior tenemos que ser bastante claros en nuestra tarifas, sin letras pequeñas ni cargos escondidos. Nadie ve con buenos ojos los cobros ocultos, así que hay que evitarlos siempre. Sin excepción.
7. Crear falsas expectativas
Por mucho que creamos en nuestras habilidades nunca hay que prometer más de lo que podemos ofrecer. Si creamos expectativas en el cliente que al final no cumplimos seguramente lo habremos perdido para siempre. Hay que reconocer nuestros límites sin importar lo mucho que deseemos conseguir un encargo, de otra manera podríamos quedar mal, arruinando la relación con nuestro cliente y posiblemente nuestra reputación. No hay que olvidar que en el trabajo freelance se depende mucho de las recomendaciones.
Por supuesto que hay muchos más errores que deben de evitarse a toda costa, esta es sólo una pequeña lista de los —tal vez— más comunes.

lunes, 15 de abril de 2013

¿Quieres texturas gratis para tus proyectos 3D? Aquí tienes


texturas gratis 3d01 ¿Quieres texturas gratis para tus proyectos 3D? Aquí tienes
A la hora de trabajar en 3D, un aspecto fundamental para que nuestros proyectos funcionen son las texturas. El modelado es importante, la iluminación influye en gran medida, la posición de la cámara… pero las texturas son las que terminan por definir la escena. Aquí tienes unos cuantos portales de texturas gratis para facilitarte esta ardua tarea.
Texturer, posee una completa selección de texturas de alta resolución. Para ayudarnos a encontrar exactamente lo que buscamos, todo se encuentra perfectamente ordenado en categorías y subcategorías. Arroway Texturesincorpora texturas más enfocadas para el diseño de interiores y la arquitectura. Es necesario un cuota para descargar las texturas, aunque siempre podremos disponer de una muestra en baja resolución de cada una.
texturas gratis 3d02 ¿Quieres texturas gratis para tus proyectos 3D? Aquí tienes
Muestra de texturas del portal Cgtextures
3D Valley incluye además modelos gratuitos y tutoriales. Sus texturas son gratuitas para uso personal y no comercial. Posiblemente el más conocido por todos sea Cgtextures, que tiene una amplísima biblioteca. El único requisito para poder llevar a cabo las descargas de texturas, es registrarse.
TexturePortal cuenta con texturas de alta resolución, ideal para trabajos con un acabado fotorrealista. Una ventaja añadida es que la textura suele ir acompañada de sus mapas Normal, Bump y Especular. Finalizamos la selección conTurboSquid, que posiblemente contiene la mayor colección de texturas a nivel mundial. Además, incita a los usuarios a enviar sus propias texturas.
Creo que con toda esta información, ya dispone de una ayuda más que suficiente para apoyarse en la búsqueda de texturas. Cuando no tenga mucho tiempo o simplemente no quiera entretenerse en crear ese material que desea, póngase manos a la obra en cualquiera de los portales anteriormente citados.

Zebra Form, una librería PHP especial para formularios


zebra form Zebra Form, una librería PHP especial para formularios
Los formularios son uno de los elementos más usados a diario en la web: meter datos, validarlos, enviarlos, procesarlos… todo forma parte del día a día de millones de personas en todo el mundo.
Zebra Form es una librería PHP que nos ayuda a crear formularios mucho más seguros, más bonitos que los estándar y todo ello empleando unas pocas líneas de código PHP.
Usa jQuery para procesar la validación del lado del cliente -necesaria siempre- y obviamente PHP para la validación del lado del servidor -¡obligatoria!-. Y encima soporta uploads por Ajax.
Enlace | Zebra_Form

miércoles, 10 de abril de 2013

CREAR BARRA DE PROGRESO EN HTML5


Con el elemento de progreso o avance, las páginas en HTML5 pueden mostrar el progreso de una tarea, por ejemplo una descarga o una actividad de fondo o background.
En este tutorial voy a mostrar cómo utilizar el elemento de progreso en tus páginas, con una simple función de JavaScriptque actualiza el elemento de progreso. A día de hoy este elemento sólo es compatible con Firefox, Chrome y Opera, se está desarrollando para Internet Explorer y Safari, pero todavía no se puede confiar que funcione en éstos últimosnavegadores.
Para la demostración, simplemente se va a actualizar el elemento de progreso a través de un timeout de JavaScript, aunque el ejemplo se puede exportar y adaptar a las necesidades de cada uno.
Este ejemplo se inicia al pulsar un botón, el cual se desactiva mientras se está ejecutando la tarea, al mismo modo se va actualizando la barra de progreso y un indicador textual. Cuando la tarea se ha completado, el botón se activará de nuevo y el usuario puede iniciar la tarea de nuevo si así lo desea.
Crear una página
Crea tu página HTML utilizando el siguiente esquema:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">

</script>
</head>
<body>

</body>
</html>
Pondremos nuestras funciones y código JavaScript entre las etiquetas head. Obviamente también lo podemos sacar a un archivo .js e incluirlo en el html.
Agregar el elemento de progreso
Agregar el elemento de progreso en el body de nuestra página. Añadimos un breve textos descriptivo
<p>Barra de progreso:</p>
<progress id="prog" value="0" max="100"></progress>
Simplemente indicamos a nuestra barra de progreso que la tarea empieza desde 0. El valor máximo es 100, que es lo que aparecerá cuando la tarea se haya completado.
Proporcionar interacción con el usuario
Vamos a permitir que el usuario inicie el progreso de la tarea presionando un botón. También se indicará el porcentaje de avance mediante un texto.
<input id="startBtn" type="button" value="start" onclick="startProgress()"/>
<div id="numValue">0%</div>
El elemento de entrada iniciará la ejecución de la tarea, lo que hará que la función de JavaScript inicie la actualización del elemento de avance. También vamos a actualizar el div con el indicador de porcentaje a medida que avanza la tarea.
El código JavaScript
Ahora vamos a agregar el código JavaScript que indica el progreso de nuestra tarea.
//progreso actual
var currProgress = 0;
//esta la tarea completa
var done = false;
//cantidad total de progreso
var total = 100;
Agregamos la función que llamaremos para iniciar el proceso:
//funcion para actualizar el progreso
function startProgress() {

}
Dentro de la función, en primer lugar debemos recuperar las referencias a los elementos de la página que estamos trabajando:
//recuperamos el elemento de progreso
var prBar = document.getElementById("prog");
//get the start button
var startButt = document.getElementById("startBtn");
//recuperamos el valor del texto
var val = document.getElementById("numValue");
Tenemos que actualizar el elemento de barra de progreso y el elemento textual, así como deshabilitar el botón mientras la tarea se está desarrollando, lo haremos de la siguiente manera:
//deshabilitamos el botón
startButt.disabled=true;
Cuando la tarea termine, volvemos a habilitar el botón. Ahora tendremos que recuperar y actualizar la barra de progreso con el dato actual:
//actualiza la barra de progreso
prBar.value = currProgress;
Esto hará que el indicador visual con el texto muestre exactamente el mismo valor que la barra de progreso. Vamos a actualizar dicho indicador de texto. Podemos hacer que nuestros resultados aparezcan con números redondeados de la siguiente manera.
//actualizamos el indicador visual con el texto
val.innerHTML = Math.round((currProgress/total)*100)+"%";
La próxima vez que llamemos a la función, incrementamos el progreso de la tarea:
//incrementamos el valor del progreso cada vez que la función se ejecuta
currProgress++;
Cuando lleguemos a 100 indicamos a la función que debe parar
//comprobamos si hemos terminado
if(currProgress>100) done=true;
Hemos seteado la variable que hemos declarado fuera de la función para que podamos referirnos a ella cada vez que se ejecute la función. Ahora vamos a adaptar a lo que ocurre si la tarea se ha completado o no:
// sino hemos terminado, volvemos a llamar a la función después de un tiempo
if(!done)
    setTimeout("startProgress()", 100);
//tarea terminada, habilitar el botón y resetear variables
else
{
    document.getElementById("startBtn").disabled = false;
    done = false;
    currProgress = 0;
}
Si la tarea no se ha completado, simplemente llamamos otra vez a la función después de un tiempo de espera.
conclusión
Como he comentado antes, este ejemplo es muy sencillo y apenas tiene una funcionalidad determinada, sino que la barra de carga comienza al pulsar un botón, pero es suficiente para explicar una nueva ventaja y funcionalidad de HTML5 como es la etiqueta progress. Al igual que con la mayoría de elementos de HTML5, no todas las etiquetas y funcionalidades son soportadas por todos los navegadores por lo que no es posible dar soporte a todos los usuarios, o hay que utilizar otras técnicas para replicar esta funcionalidad de barra de progreso en internet explorer u otros.
Código completo y demo
<!DOCTYPE html>
<html>
<head>
<title>Blog Pedro Ventura | Visualización del progreso de las tareas con HTML5 | Demo</title>
<script type="text/javascript">
//progreso actual
var currProgress = 0;
//esta la tarea completa
var done = false;
//cantidad total de progreso
var total = 100;

//funcion para actualizar el progreso
function startProgress() {
//recuperamos el elemento de progreso
var prBar = document.getElementById("prog");
//get the start button
var startButt = document.getElementById("startBtn");
//recuperamos el valor del texto
var val = document.getElementById("numValue");
//deshabilitamos el botón
startButt.disabled=true;
//actualiza la barra de progreso
prBar.value = currProgress;
//actualizamos el indicador visual con el texto
val.innerHTML = Math.round((currProgress/total)*100)+"%";
//incrementamos el valor del progreso cada vez que la función se ejecuta
currProgress++;
//comprobamos si hemos terminado
if(currProgress>100) done=true;
// sino hemos terminado, volvemos a llamar a la función después de un tiempo
if(!done)
  setTimeout("startProgress()", 100);
//tarea terminada, habilitar el botón y resetear variables
else   
{
  document.getElementById("startBtn").disabled = false;
  done = false;
  currProgress = 0;
}
}
</script>
</head>
<body>

<p>Barra de progreso:</p>
<progress id="prog" value="0" max="100"></progress> 
<input id="startBtn" type="button" value="start" onclick="startProgress()"/>
<div id="numValue">0%</div>

</body>
</html>
Fuente: http://www.developerdrive.com/2012/07/displaying-the-progress-of-tasks-with-html5/