viernes, 11 de noviembre de 2016

viernes, 27 de diciembre de 2013

SQL para obtener fechas y modificar horas


Hace poco tuve que hacer unas modificaciones de fechas en Base de Datos (SQL Server 2008). Voy a comentar unas SQL que me vinieron bien.
  • Para obtener el último día del mes anterior a una fecha dada (siendo GETDATE() la fecha dada, puede sustituirse por una columna de tipo date/datetime)
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
  • Para modificar la hora de un datetime (en este ejemplo, ponemos las 3:30 de la mañana)
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '03:30:00')

Combinando estas SQL, cambio la fecha-hora al último día del mes anterior sin modificar la hora. Tengo que meter el substring, porque el time me devuelve los milisegundos, y eso no le mola nada al DATEADD (en este caso, el primer GETDATE() lo utilizo para obtener la fecha actual y sacar el último día del mes anterior, y el segundo GETDATE() para obtener la hora, pero este último lo puedo cambiar por un time en string, '03:30:00' para modificar la hora del último día del mes anterior)

SELECT DATEADD(day, DATEDIFF(day, 0, DATEADD(s, -1, DATEADD(mm, DATEDIFF(m, 0, GETDATE()), 0))), SUBSTRING(CONVERT(varchar, CONVERT(time, GETDATE())),1, 8))

miércoles, 30 de enero de 2013

Limitar número de enteros y de decimales por Javascript

Hace poco he tenido que lidiar con un código demasiado manual, de modo que he tenido que echar mano de Javascript para meter una limitaciones en textbox (input), y no permitir la introducción de un número máximo de decimales y de enteros.
Por supuesto, googleando encontraba cosas, pero no terminaron de convercerme, así que con un poco de esto y otro de aquello, et voila:

La invocación, como siempre en el onkeypress:


1
<asp:TextBox ID="txtValidate" runat="server" onkeypress="return validateFloatKeyPress(this, event, 4, 6);"></asp:TextBox>


 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/// <summary>
/// Validamos el número de enteros y decimales
/// </summary>
/// <param name="el">Elemento que lanza el método</param>
/// <param name="evt">Evneto</param>
/// <param name="ints">Número de enteros permitidos</param>
/// <param name="decimals">Número de decimales permitidos</param>
function validateFloatKeyPress(el, evt, ints, decimals) {

    // El punto lo cambiamos por la coma
    if (evt.keyCode == 46) {
        evt.keyCode = 44;
    }
    
    // Valores numéricos
    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode != 44 && charCode > 31
        && (charCode < 48 || charCode > 57)) {
        return false;
    }
    
    // Sólo una coma
    if (charCode == 44) {
        if (el.value.indexOf(",") !== -1) {
            return false;
        }

        return true;
    }

    // Determinamos si hay decimales o no
    if (el.value.indexOf(",") == -1) {
        // Si no hay decimales, directamente comprobamos que el número que hay ya supero el número de enteros permitidos
        if (el.value.length >= ints) {
            return false;
        }
    }
    else {

        // Damos el foco al elemento
        el.focus();

        // Para obtener la posición del cursor, obtenemos el rango de la selección vacía
        var oSel = document.selection.createRange();

        // Movemos el inicio de la selección a la posición 0
        oSel.moveStart('character', -el.value.length);

        // La posición de caret es la longitud de la selección
        iCaretPos = oSel.text.length;

        // Distancia que hay hasta la coma
        var dec = el.value.indexOf(",");

        // Si la posición es anterior a los decimales, el cursor está en la parte entera
        if (iCaretPos <= dec) {
            // Obtenemos la longitud que hay desde la posición 0 hasta la coma, y comparamos
            if (dec >= ints) {
                return false;
            }
        }
        else { // El cursor está en la parte decimal
            // Obtenemos la longitud de decimales (longitud total menos distancia hasta la coma menos el carácter coma)
            var numDecimals = el.value.length - dec - 1;
                
            if (numDecimals >= decimals) {
                return false;
            }
        }
    }
    
    return true;
}

martes, 11 de diciembre de 2012

Números mágicos

En términos de programación, un "Magic Number" es una constante numérica usada para identificar un ente (ya sea valor de un diccionario, un estado, una constante...). Algo que directamente podría interpretarse como una mala práctica. Desde luego, el uso de estos números, no condiciona el propio código en sí, ya que seguirá funcionando perfectamente; ahora bien, no se puede decir lo mismo en cuanto a la mantenibilidad del mismo.

Buscando en la wikipedia sobre estos bichitos, encuentro dos códigos para una misma tarea.

   for i from 1 to 52
       j := i + randomInt(53 - i) - 1
       a.swapEntries(i, j)

En este primer código, encontramos que nos devuelve 52 valores aleatorios de un Array.

   constant int deckSize := 52
   for i from 1 to deckSize
       j := i + randomInt(deckSize + 1 - i) - 1
       a.swapEntries(i, j)

En este, ya comprendemos un poco más. Resulta que el 52 es el tamaño de una baraja (deckSize) en cartas.

Obviamete, y para mi gusto, el hecho de tener una variable que identifique con su nombre el porqué de un valor, no es suficiente.

Usemos enumerados por favor. En este caso, podríamos tener por ejemplo, un enumerado llamado Deck (baraja). Aquí nos hemos ido a .NET:


Ahora, el uso de un enumerado, junto con una buena descripción de la variable, nos lo dice todo:





Hay una herramienta para ello: 13 herramientas esenciales para el desarrollador web Ninja

Destacaré algunas herramientas que considero útiles a la hora de desarrollar web, y lo mejor de todo, casi todas son completamente gratis!!

Herramientas generales

  • Fiddler : Uno de las mejores herramientas para hacer debug HTTP hoy en día.

Herramientas generales para exploradores & Plugins

Inspección y debugging en cliente


Subtítulos en vídeos con HTML 5

Es de todos sabido, o por lo menos, conocida, la nueva etiqueta de HTML 5 <video>, gracias a la cual se pueden reproducir de manera nativa en el entono web, vídeos. Pues bien, resulta que HTML 5 ha ido más allá, dándonos más control.

En este caso, con la característica de los subtítulos, lo cuales están ganando terreno cada vez más.


La idea es que estos subtítulos cumplan con el sistema Closed Caption para que las personas con deficiencia auditiva o visual puedan comprender el contenido que les queremos transmitir, o simplemente para dotar a nuestros vídeos de una transcripción en otros idiomas.
Dependiendo del navegador podremos utilizar diferentes formatos, como por ejemplo TTML, SRT, WebVTT, etcétera. En este post hablaremos del último nombrado.


40 APIs para diseñadores web y programadores

Una API (Application Programming Interface) es un conjunto de reglas y especificaciones que los programas de software pueden seguir para comunicarse o relacionarse con cualquier otro.

Como sabemos los desarrolladores, hay cientos de APIs para hacer casi cualquier cosa imaginable online. Algunas son mejores que otras, y algunas definitivamente más útiles que otras.

Entre otras, tenemos:

  • APIs de Google, entre las que se encuentran la de Places, Geocoding, Blogger, Calendar, YouTube,  etc.
  • APIs de Yahoo!, entre las que están Flickr, Delicious, Meme, etc.
  • API de Twitter
  • API de Facebook
  • API de Digg.
  • ....

Resto del artículo (fuente original).

Tests en Javascript


Cuando trabajamos con lenguajes dinámicos como Javascript los tests son mucho más importantes que en lenguajes estáticos. Ahora que he empezado a usar mas Javascript en la vida real y tener cosas más complejas que aplicaciones básicas con node.js o Knockout, mantener el código funcionando se hace más complicado y los tests más necesarios.

La principal razón por la que los tests son más necesarios se porque no hay una fase de compilación como tal. Esto provoca que no podamos detectar fallos hasta el momento de ejecutar la aplicación, pero sobre todo impide aprovechar las capacidades de análisis estático de un compilador moderno.

viernes, 16 de noviembre de 2012

Programming Windows 8 Apps with HTML, CSS, and JavaScript (Second Preview)

Desarrollo de Aplicaciones Windows 8 Apps con HTML, CSS y Javascript.

Accceso a blog oficial de Microsoft en el que podemos acceder a la dercarga de la "Second Preview" (en formato pdf) del título oficial de próxima publicación orientado al desarrollo de aplicaciones para Windows App Store con HTML, CSS y Javascript.

Acceso, igualmente, a los vídeos y soluciones que tratan en el libro. Lo que ellos llaman, "Second Preview’s companion content"

Aquí el enlace.

Microsoft HTML 5


Links a páginas que pueden ser de interés

Channel 9 MSDN

MVA – Microsoft Virtual Academy

jueves, 13 de septiembre de 2012

Tutorial HTML 5 para principiantes

Se trata de un tutorial (en inglés, pero como es para beginners... no problem!) para comenzar con HTML 5 y sus etiquetas.

Cuando se haya completado este tutorial, se tendrá un conocimiento básico del HTML y sabrá obtener un dominio y construir un sencillo website.

Resto del artículo (fuente original)

martes, 11 de septiembre de 2012

ASP .NET, creando Custom Validators

Pese a que los validadores (de .NET) llevan en nuestras algunos cuantos años (si no recuerdo mal, Microsoft los introdujo en la versión 2.0).

Pero han sacado una versión 2 del framework web, y en éste han incluido un nuevo framework. Aquí, han metido una serie de validadores específicos que cubren los típicos escenarios como validación de la presencia, tipo de datos o intervalos[...].

Resto del artículo (fuente original)

Otra guía más de conceptos básicos de jQuery

Por ahí se dice que es el tutorial definitivo para aprender jQuery de un modo rápido, sencillo y eficaz. Vosotros mismos....

Aquí está el enlace.

viernes, 7 de septiembre de 2012

Tutorial de Backbone.js

Una excelente introducción a Backbone.js, y además.... en castellano!!

Llevo un tiempo analizando y aprendiendo a trabajar con la librería Backbone.js y me parece una librería estupenda para desarrollar aplicaciones JavaScript. El mayor problema que estoy encontrando es la falta de tutoriales y documentación al respecto, y por ese motivo he decido crear un pequeño tutorial donde se analice el funcionamiento de la librería. Este tutorial lo iré desarrollando poco a poco en distintas entradas, intentando resaltar los aspectos más importantes y analizando cada uno de sus componentes.

Resto del artículo (fuente original)

martes, 17 de julio de 2012

Páginas para desarrolladores Android en inglés


Además de los mejores recursos para Android en español nada es comparable con la inmensa cantidad de contenidos en inglés.

Android developers: La referencia oficial de Android. Podemos encontrar en ella el SDK y una guía de referencia cubriendo la mayor parte de los temas necesarios para crear tus propias aplicaciones en Android, desde lo más básico hasta guías para publicar en Google Play o para optimizar procesos.

Stackoverflow: El mayor lugar de preguntas y respuestas sobre programación. Los usuarios votan las mejores respuestas a una pregunta, lo que hace que éstas aparezcan más arriba en la página. Todo lo que puedas preguntarte ya se ha tratado antes en esta página, seguro. Es la referencia de cualquier lenguaje de programación, y Android no iba a ser una excepción.

Vogella: Impresionante blog con una cantidad inmensa de tutoriales. En el apartado de Android podemos encontrar una referencia completa para aprender sobre cualquier tema. Los apartados son muy extensos y altamente detallados, por lo que es casi imposible no encontrar lo que buscas aquí. Además tiene la gran ventaja de que los va actualizando a la última versión de Android, algo que no ocurre en la mayoría de las páginas y que sirve de mucho para estar al tanto de todas las novedades sobre el API.

Android UI Design Patterns: Como bien he querido hacer ver en la serie de posts sobre interfaces de usuario que inicié hace poco, la parte visual es casi tan importante como la funcionalidad. En ocasiones incluso más, porque un usuario puede dejar de usarla simplemente porque no le guste su apariencia. Es por eso que este blog nos será de mucha utilidad para tomar sus ideas como referencia.

Android Patterns: En la línea de la anterior, pero de una forma muy visual, nos dan ideas sobre los patrones de diseño más empleados para aplicaciones Android. Excelente opción para inspirarse a la hora de diseñar nuestras propias aplicaciones.

Si conoces alguna otra página que pueda ser de utilidad, coméntala en la parte inferior de esta entrada.

Resto del artículo (fuente original)

Mejorar la apariencia de la interfaz de usuario en Android


Centrándonos en los aspectos relacionados con la apariencia visual, sobre todo en los colores y decorados, los consejos para este caso son los siguientes:
1. Utiliza colores y diseños simples
El minimalismo está a la orden del día, y no es sólo un capricho o una moda pasajera. La tendencia a destacar el contenido sobre el continente consigue evitar distraer al usuario con lo que rodea a la información y conseguir que se centre en lo que realmente importa. Esto es más significativo si cabe en aplicaciones móviles, donde cualquier adorno innecesario nos hará malgastar el ya de por sí reducido espacio de pantalla.
2. Emplea gamas cromáticas complementarias, y con poca cantidad de colores diferentes
Los colores empleados en el tema de un diseño deben ajustarse a una gama de colores que permitan ser combinados entre sí. Es una tarea complicada de llevar a cabo a ojo, pero hoy en día existen muchas herramientas útiles para esta tarea, como puede Color Scheme Designer. No te excedas con la cantidad de colores a usar, dos ó tres serán más que suficientes para la mayoría de los contextos. Escoge tus colores y cíñete a ellos en todas las pantallas de tu aplicación.
3. Evita los efectos de relieve
A diferencia de los degradados o los sombreados, que usados con cuidado pueden darle un toque profesional a nuestra aplicación, los efectos de relieve deberían ser eliminados de la interfaz. Destruyen la sensación de limpieza que conceden las estructuras planas y le otorgan un aspecto tosco al conjunto. Recuerda: lo importante es el contenido, no incluyas elementos innecesarios que puedan distraer la atención.
4. Crea un alto contraste entre la letra y el fondo
Este detalle es siempre importante en cualquier aplicación para facilitar la legibilidad y evitar que la vista se canse, pero más aún en una aplicación para un dispositivo móvil, que en ocasiones se emplea en situaciones extremas de luz, como puede ser la exposición directa al sol.
5. Evita los negros puros sobre los blancos
Al igual que es importante el contraste, un exceso del mismo puede resultar perjudicial. Prueba a sustituir los negros por grises oscuros para letras con fondo blanco. A la inversa, por el contrario, funciona bastante bien, aunque no estaría de más que probases con algún tono de gris muy claro sobre los fondos negros.
6. Aporta imagen de marca
A nadie le va a llamar la atención de primeras una aplicación cuya apariencia es igual a la de otros miles de aplicaciones. Al final la funcionalidad es lo más importante, pero al usuario medio se le suele ganar por el impacto inicial, y este se puede conseguir con una mínima personalización del tema básico.
7. No abuses de bordes y recuadros
Siguiendo con el aspecto de la limpieza visual, recomiendo tratar de minimizar al máximo los bordes y los recuadros innecesarios. La interfaz Holo de Android ya ni siquiera enmarca por completo las cajas de texto. Ese el estilo a seguir.

Resto del artículo (fuente original)

lunes, 11 de junio de 2012

Usabilidad en el diseño de Apps


Otra charla del congreso web​.
Para empezar, repasaremos las 10 leyes de la simplicidad:
1) Reducir, La manera más sencilla de alcanzar la simplicidad es mediante la reducción razonada.
Para cualquier producto de consumo, una persona tiene actualmente decenas de opciones. 30 variedades de cereales son, probablemente, más de las que un consumidor necesita. En medio del caos, la simplicidad aparece como una estrategia casi imprescindible: este consumidor no tiene tiempo de estudiar todas las posibilidades, tiene que captar el mensaje y entender el producto de un vistazo.

La simplicidad aplica en muchos ámbitos: el diseño del propio producto, el packaging, la publicidad, etc. Maeda sugiere una estrategia para buscar esta simplicidad: el modelo SHE (Shrink, Hide, Embody):
  • Reducir el tamaño
  • Esconder: no hace falta que los atributos y funciones del producto estén todos visibles simultáneamente, sino solo cuando el consumidor los necesita.
  • Incorporar la calidad en el producto, sin que se vea exteriormente.
En el fondo, se trata de evitar la tentación de contar algo por el simple hecho de poder contarlo, de hacer gala de todos los beneficios y atributos del producto (por ejemplo, unas galletas integrales, con Omega3, con vitaminas, sin azúcar, etc.). El posicionamiento está en la mente del consumidor, y éste no hace listas de pros y contras cuando está delante del lineal del supermercado.


2) Organizar, La organización permite que un sistema complejo parezca más sencillo.
Agrupar la información simplifica la comprensión y el recuerdo. 30 variedades de cereales quizá sean imposibles de memorizar, pero cinco gamas son más asequibles. Si cada gama de productos tiene un posicionamiento claro y una propuesta de valor diferenciada, el consumidor sabrá distinguirlas y recordarlas. Por ejemplo, Danone ha hecho un gran ejercicio de simplificación al crear las plataformas de Vitalínea, Activia o Danonino (aunque luego tenga cierta tendencia a expandir exageradamente cada gama).

En el lineal de un supermercado, el consumidor busca categorías antes que marcas, así que la buena organización es fundamental: dirige la vista del cliente, simplifica su proceso de decisión y le ayuda a encontrar lo que quiere comprar.


3) Tiempo, El ahorro de tiempo simplifica las cosas.
A nadie le gusta esperar; y la frustración de la espera es aún mayor en un momento en que todos tratamos de comprimir en un día decenas de actividades, exprimiendo las horas y correteando de un lado a otro. Para ahorrar tiempo también puede ayudar el modelo SHE: reducir el tiempo (con productos como un GPS que indica la ruta más corta, o un libro de cocina con recetas listas en cinco minutos), esconderlo (entretener a las personas que esperan en una cola con un video), e incorporarlo (indicar el tiempo de lectura en un artículo). El objetivo es doble: reducir el tiempo de espera y hacer esa espera más tolerable.

En el mundo del marketing, la ley del tiempo puede llevar a diseñar productos cuyo beneficio principal es ahorrar tiempo (arroz listo en 3 minutos), a diseñar procesos de compra más rápidos (las listas en los supermercados online), a crear productos autoexplicativos, que se pueden usar desde el primer minuto sin libro de instrucciones (como el iPhone, que literalmente no tiene instrucciones) o a crear campañas promocionales donde el regalo es tiempo (por ejemplo, un servicio de limpieza doméstica).


4) Aprendizaje, El conocimiento simplifica todo.
Todos nos hemos enfrentado a una tarea que nos parecía muy compleja la primera vez y trivial al cabo de un tiempo. Aprender a conducir es un reto, pero luego se hace de forma automática, casi sin pensar.

Para amar un producto hay que conocerlo, hay que pasar la barrera de la primera cita y llegar al noviazgo lo más rápidamente posible. Educar al consumidor es fundamental para que aprecie la marca, especialmente aquellas con propuestas de valor más premium.

En la innovación de las marcas, a menudo basada en constantes lanzamientos, enseñar es también un punto clave: lo peor que le puede pasar a un producto es que el consumidor no sepa para que sirve, o no sepa que hacer con él.


5) Diferencias, La simplicidad y la complejidad se necesitan entre sí.
La simplicidad solo se percibe como contraste de la complejidad. Por eso es cada vez más relevante, porque la complejidad aumenta en todas las áreas de la vida. Lo ideal es encontrar un ritmo que alterne las dos situaciones extrayendo lo mejor de cada una.

Un anuncio sin sonido destaca en un mar de anuncios gritones; una página en blanco de un periódico sobresale entre tanta letra negra; un aparato con un sólo botón sorprende frente a otro con 10 botones; un producto con un sólo beneficio se entiende mejor que uno que pretende ser bueno en todo. Como algunas artes marciales, donde la estrategia consiste en apoyarse en la fuerza del contrincante, la simplicidad se apoya en complejidad de los demás.


6) Contexto, Lo que se encuentra en el límite de la simplicidad también es relevante.
No se puede simplificar algo solamente centrándose en sus aspectos definitorios; el contexto en el que se sitúa es clave para percibir su simplicidad. Demasiado enfoque es negativo, se ven sólo los árboles y no el bosque.

Al diseñar un producto, no sólo hay que hacerlo sencillo, potente y elegante, sino pensar en como se verá en los dos momentos de la verdad: en el lineal, entre otros muchos productos, y en casa del consumidor.


7) Emoción, Es preferible que haya más emociones a que haya menos.
Llenar de emoción un producto puede requerir alejarse de la simplicidad, para introducir nuevos niveles de significado. Hay personas que eligen productos sencillos y minimalistas, como algunos móviles o un iPod, y lo primero que hacen es personalizarlos, con pegatinas, fundas y todo tipo de accesorios. Dotar de sentimiento y emoción a un objeto es una característica muy humana.

Aunque parezca contradecir la ley de reducir, hay algunas cosas donde más es mejor que menos: más cariño, más amor, más intensidad, más significado.

En los últimos años, muchas campañas de marketing se han centrado casi exclusivamente en comunicar emociones, olvidando los aspectos racionales y contando historias extrañas y complejas. El reto es mantener el nivel emocional, aunándolo con un enfoque más simple y directo.


8) Confianza, Confiamos en la simplicidad.
Los aparatos y los servicios que utilizamos son cada vez más complejos, pero para nosotros es irrelevante: confiamos en que harán bien su misión, y los usamos sin tener ni idea de como funcionan. El paradigma es un coche, que casi todo el mundo sabe utilizar pero casi nadie sabe como funciona por dentro.

La simplicidad transmite confianza, y la confianza nos ahorra tiempo y esfuerzo. Las marcas son el paradigma de la confianza, y ese es su mayor valor. No deben confundirse en batallas de precios o perderse en innovaciones innecesarias.

Para las marcas de servicios, la confianza es especialmente relevante, ya que al no existir un objeto físico es lo único que garantiza la calidad al cliente. En gran consumo, las marcas que consigan aprender de un cliente y simplificar sus decisiones tendrán mucho ganado.


9) Fracaso, En algunos casos nunca es posible alcanzar la simplicidad.
A pesar de la enorme importancia que le otorgo a la simplicidad, en algunos casos la complejidad es necesaria. Hay temas demasiado difíciles, llenos de matices y detalles que no pueden ser explicados de un plumazo. Sin embargo, las personas rechazan cada vez más un enfoque complejo (leer un párrafo de más de 6 líneas, memorizar algo que no puedo aprender de un vistazo, etc.). El resultado es que la simplicidad se convierte en simplismo, se cae en lugares comunes y cualquier cosa se acaba pareciendo a muchas otras.

Cuando una marca tiene un producto suficientemente bueno y diferente, no debe tener miedo de explicar su complejidad, si es necesario para apreciar su valor. Hay que darle un voto de confianza a los consumidores, y tratarlos/tratarnos como seres inteligentes.


10) La Única, La simplicidad consiste en sustraer lo que es obvio y añadir lo específico.
Las diez leyes, resumidas en una. Cualquier campaña de marketing puede aprender de esta ley: eliminar textos absurdos y repetitivos, tópicos mencionados por todas las marcas, guiños que nadie entiende, etc; y añadir mensajes relevantes, que aporten valor al que los escucha, que diferencien de la competencia, que den una buena razón para levantarte de tu silla, ir a la tienda y comprar el producto.


Ejemplo: Una app para bajar en una tienda y que muestra las ofertas actuales que tiene, o algo relativo a comprar, no puede ocupar 50Mb, nadie la bajará usando 3G.
Para probar apps móviles en distintos dispositivos y tamaño de pantallas, tenemos:

Artículos originales:

Diseño para programadores


​Esto es una entrada que tiene que ver con la charla de "Diseño para programadores". No se trata más que de saber qué y cómo meter algo de diseño a nosotros los back end capaces de hacer sistemas de la leche pero sin diseño alguno.

Para empezar, se recomienda la herramienta Balsamiq mockups, con la que puedes hacer un diseño, imprimirlo, y poder discutir sobre él sobre papel. Tiene un efecto de mano alzada únicamente para dejar claro, en caso de estar con el cliente, que es un mockup.

Así, lo que tendremos que mirar desde un principio es tanto el color como el espacio:
Usemos la rueda cromática para ver qué colores combinan --> para elegir


más de un color, no tenemos más que trazar un triángulo equilátero, poner la punta del mismo sobre el color que queremos combinar, y nos dará dos colores.

Tip: Usar 3 colores --> 2 principales y 1 para darle algo de vida
  • Usemos la paleta, como se muetra en esta web
  • Tipografía, las familias se clasifican en:
    • Serif
    • Sans Serif
Con respecto a la tipografía, podemos usar:
  • Web Safe
  • Google fonts, esta además, mola mucho porque está libre de derechos, y tiene previsualizaciones estupendas.
Tip: Usar 2 tipografías, una con Serif y otra sin Serif
  • Consistencia, como por ejemplo, esta web
Podemos usar frameworks como Blueprint o 52framework

viernes, 18 de mayo de 2012

CSS Arrows Please

CSS Arrows Please es a las flechitas CSS lo que Spin.js a los spinners, :) Se trata de una web donde puedes crear flechitas CSS para poder incorporar fácilmente a tus hojas de estilos, perfectas para tooltips o mensajes emergentes.



Resto del artículo (fuente original)