viernes, 4 de julio de 2014

CSS3 Transition

Otra de las características interesantes de CSS3, es que ahora soporta las animaciones cuando hay un cambio de estilo, es decir una transición animada sin necesidad de javascript, ni flash. 

Lo cual nos permite darle un toque animado a nuestras paginas, sin javascript, y de paso de una manera sumamente sensilla.

Soporte de los Navegadores.
Este característica es soportada por Chrome, Firefox, Opera, Safari, IE10. cada uno con su correspondiente prefijo. http://caniuse.com/#feat=css-transitions

Como funciona?
Esta nueva funcionalidad hace que la modificación de las propiedades de un elemento se hagan de manera gradual, y estas modificaciones tienen que ocurrir por un evento o tiene que suceder algo que las desencadene. Para usarlas debemos especificar la duración de la transición en segundos solamente, aparte podemos especificar el delay, el tipo de efecto de la transición: linear, ease, ease-in, ease-out, ease-in-out y cubic-bezier(n,n,n,n) que permite crear nuestra propia animación, ademas también podemos especificar a que propiedad vamos a aplicar cada animación.

Syntax

transition: propiedad duración efecto-transición (delay|initial|inherit);
  • Propiedad: es la propiedad a la cual se le va a aplicar la transición.
  • Duración el tiempo que va a durar la transición.
  • Efecto-transicion: la funcion que se va a aplicar en el tiempo espacio. 
  • delay: seria el tiempo que va a tardar la transición en iniciar.
  • initial: estable esta propiedad a su valor inicial.
  • inherit: hereda la propiedad de su padre.

Funciones

  • transition-delay
  • transition-duration 
  • transition-property
  • transition-timing-function



Ejemplo: http://bomba1990.pythonanywhere.com/sosinformatico/js/css3-transition

.prueba{
  width:150px;
  height:100px;
  border:1px solid red;
  margin:30px;
 }
       #prueba1{transition: 1s ease-in-out; }
 #prueba1:hover{
  transform: rotate(30deg);
  -webkit-transform: rotate(30deg);
  -moz-transform: rotate(30deg);
  -o-transform: rotate(30deg);
 }
       #prueba2{transition: 1s ease-out, width 2s cubic-bezier(.03,1.77,1,-0.67); }
 #prueba2:hover{
                width:500px;
  transform: translate(20px,20px);
  -webkit-transform: translate(20px,20px);
  -moz-transform: translate(20px,20px);
  -o-transform: translate(20px,20px);
 }



Para crear sus propias curvas de animación con la función cubic-bezier les recomiendo: http://cubic-bezier.com


Modular Mobile/PhoneGap Apps Backbone.js

Aqui les dejo una aplicación creada con Backbonejs, Phonegap y jquery mobile. Ya tiene algun tiempo. Pero puede servir de guia o ayuda para alguien. tiene una gaeria un blog y algunas cosas.


Saludos..


https://play.google.com/store/apps/details?id=com.nonvulgi
https://github.com/bomba1990/Nonvulgi-Backbone-JS-Application

lunes, 30 de junio de 2014

Packt Publishing celebrates 10 years with a special $10 offer



t has been 10 years since Packt Publishing embarked on its mission to deliver effective learning and information services to IT professionals. In that time, it has published over 2000 titles and helped projects become household names, awarding over $400,000 through its Open Source Project Royalty Scheme.
To celebrate this huge milestone, Packt is offering all of its eBooks and Videos at just $10 each – this promotion covers every title and customers can stock up on as many copies as they like until July 5th.
If you’ve already tried a Packt title in the past, you’ll know this is a great opportunity to explore what’s new and maintain your personal and professional development. If you’re new to Packt, then now is the time to try their extensive range – Within their 2000+ titles range, you’ll find the knowledge you really need , whether that’s specific learning on an emerging technology or the key skills to keep you ahead of the competition in more established tech fields.’

More information is available at: http://bit.ly/1jCdcmj

viernes, 20 de junio de 2014

Eliminar Filas duplicadas en sql

Hoy les traigo un pequeño codigo, para eliminar filas duplicadas, algo bastante sencillo:



delete from {{db}} where {{id}} in (SELECT {{id}} FROM {{db}} GROUP BY {{unique_column}} HAVING COUNT(*) > 1) 

Donde id seria el indice de la tabla, db, el nombre de la tabla, unique_column la columna que debería ser unica.

lunes, 9 de junio de 2014

Review Getting Started with Backbone Marionette

 

 Is a excellent book about a excellent framework, Its help you to introduce at the fascinating world of Backbonejs & Marionettejs, Each chapter covers the basics in a very concise way and moves on to more useful concepts and examples applicable to developing a real world application.

The book start with the basic, Router, Views, initial application, for test purposes. Continue with great chapters about how to manage many views on the same page, regions , and how to make a modularity app, thinking on grow in the future. There are a great chapter on using AMD with require.js.

In summary: i am very pleased whit this book, and is a good start to learn about this framework.

lunes, 5 de mayo de 2014

Packt celebrates International Day Against DRM, May 6th 2014



According to the definition of DRM on Wikipedia, Digital Rights Management (DRM) is a class of technologies that are used by hardware manufacturers, publishers, copyright holders, and individuals with the intent to control the use of digital content and devices after sale.

However, Packt Publishing firmly believes that you should be able to read and interact with your content when you want, where you want, and how you want – to that end they have been advocates of DRM-free content since their very first eBook was published back in 2004.


To show their continuing support for Day Against DRM, Packt Publishing is offering all its DRM-free content at $10 for 24 hours only on May 6th – that’s all 2000+ eBooks and Videos. Check it out at: http://bit.ly/1q6bpha

domingo, 6 de abril de 2014

Dropbox MySQL Backup Python


Dropbox se a vuelto hoy en día una de las herramientas más imprescindibles para cualquier negocio. Esta pequeña startup ha conseguido que todos mantengamos nuestros archivos en la nube y podamos disponer de ellos de una forma sincronizada y en cualquiera de nuestros dispositivos (android, ios, mac, pc linux, etc...). Hace un tiempo lanzo una API en su espacio para desarrolladores para poder acceder a los archivos y, lo más importante, crear aplicaciones sobre su servicio de almacenamiento en la nube.
Es un servicio, que permite la creación de un mundo infinito de aplicaciones, que aunque se puede hacer con otro tipo de servicios, el api de dropbox nos ofrece una facilidad inigualable a la hora de desarrollarlo. 
La API cuenta con SDKs para iOS, Android, Python, Ruby y Java. Las aplicaciones creadas deberán ser registradas en Dropbox para obtener un App Key, los usuarios concederán acceso a las aplicaciones de forma centralizada desde la propio web de Dropbox. En principio todas las aplicaciones que desarrollemos accederán a un carpeta dedicada, sólo determinadas aplicaciones aprobadas y revisadas por Dropbox podrán solicitar permisos para acceder a todos los ficheros del usuario. Se podrá buscar, descargar y subir ficheros. Las peticiones REST API viajan por SSL para mayor seguridad

DROPBOX API BACKUP PostgreSQL PYTHON

Hoy les voy a dejar un ejemplo de para hacer un backup  automático de nuestra base de datos MySQL con dropbox. Realmente nos va a servir no solo para respaldar la base de datos sino para cualquier archivo que necesitemos respaldar en el Dropbox.
Este fichero lo hago con el fin de poder respaldar de manera automática la base de datos de un sistema en producción, y así ahorrarse la problemática de estarlo haciendo a diario o semanal, y tener que descargar directamente a nuestra computadora la base de datos.  Sino que simplemente un Cron y listo.


Python Wrap
Junto con el src del dropbox viene un archivo de ejemplo que es una consola interactiva con comandos comunes en linux como ls, cat, cd, put, etc... e adaptado un poco esta consola para manejar archivos, y simplificar AUN MAS el uso del API de dropbox. Nos permite logear un usuario, y guardar la sesión del usuario en un archivo, para no tener que re-introducir los datos.

backup.py

Lo primero que necesitamos es registrar nuestra aplicación en dropbox https://www.dropbox.com/developers/apps/create, luego necesitamos tener instalado gzip, para comprimir archivos o cualquier otro comando que necesitemos. y este es el archivo:
import os, datetime

from DropboxWrap import DropboxTerm

# app key y secret de la pagina de desarolladores de dropbox
app_key = ''
app_secret = ''

#Datos para conectarnos a la base de datos
username = ""
password = ""
hostname = ""
database = ""

today = datetime.datetime.today()

#Le damos nombre a la base de datos
filename = database+"-"+today.strftime("%d-%b-%Y-%H:%M:%S.sql")
filename_gz = filename+".gz"

#instanciamos la clase 
d = DropboxTerm(app_key,app_secret)

#comprobamos si esta el usuario logeado o no
if d.is_logged() == False:
    d.login()

#ejecutamos el comando y comprimimos el resultado, para que sea más ligero el archivo
os.popen("mysqldump -u %s --password='%s' -h %s -e --opt -c %s | gzip -c > '%s'" % (username, password, hostname, database, filename_gz))

#montamos el archivo resultante en el dropbox
print d.put(filename_gz,'/database/'+filename_gz)

#listo


Ya lo que nos quedaría es ejecutarlo por primera vez,  para autorizar el acceso a la aplicación y configurar el cronjob y listo.

Source en GITHUB