Acarus: APT para Pentesting

Pocas cosas dan tanto miedo como las siglas APT: "Una amenaza persistente avanzada, también conocida por sus siglas en inglés, APT (Advanced Persistent Threat), es un conjunto de procesos informáticos sigilosos y continuos, a menudo orquestados por humanos, dirigidos a penetrar la seguridad informática de una entidad específica. Una APT, generalmente, fija sus objetivos en organizaciones o naciones por motivos de negocios o políticos. Los procesos de APT requieren un alto grado de cobertura…

Contenido completo del post en http://ift.tt/mDaonR o haciendo clic en el título de la noticia

desde Segu-Info – Noticias de Seguridad Informática http://ift.tt/1FnX6aJ
via IFTTT

jQuery Lazy Load Plugin

Jquery Logo 1

Quizás algo de lo que más pesa a la hora de cargar una página HTML es el conjunto de imágenes que la página necesita para visualizarse correctamente. En muchas ocasiones existe la necesidad de realizar la carga de forma vaga (lazy load). Esta carga se realizará según el usuario necesite las imágenes. Uno de los plugins más habituales para realizar esta operación es jQuery LazyLoad.

Configuración

El plugin se puede instalar a traves de npm, bower, o se puede descargar a través del site de jQuery plugins. Hacer uso de este plugin es sencillo ya que basta con cargarlo y definir un selector de clase que afectará al conjunto de imágenes que se van a cargar de forma vaga.

<html>
<head>
<script src="jquery-1.11.1.js"></script>
<script src="jquery.lazyload.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("img.lazy").lazyload({
effect : "fadeIn", });
 });
</script>
</head>
<body>
<img class="lazy" src="imagencarga.jpg" data-original="imagen1.jpg" width="640" height ="480"/>
<img class="lazy" src="imagencarga.jpg" data-original="imagen2.jpg" width="640" height ="480" />
<img class="lazy" src="imagencarga.jpg" data-original="imagen3.jpg" width="640" height ="480"/>
</body>
</html>

 

 

Según el scroll de la página vaya avanzando las diferentes imágenes se cargarán.

Jquery

El plugin soporta varios parámetros de configuración interesantes:

  1. threshold (px) : Carga los primeros pixels de cada imagen antes de que se muestre en el viewport.
  2. event: Carga las imágenes como respuesta a un evento asociado, como por ejemplo click.

El plugin permite también una integración sencilla con AJAX.

También te recomendamos

Ebook: Ritual virtual

rlightbox, un plugin jQuery para multimedia y diseño sensible

CSS3 Animaciones y Frameworks


La noticia jQuery Lazy Load Plugin fue publicada originalmente en Genbeta Dev por Cecilio Álvarez .

 

desde Genbeta Dev http://ift.tt/1ItaJG0
via IFTTT

Utilizando JSON Schema

JsonvalidatorLos conceptos en programación tienden a repetirse por mucho que cambiemos el lenguaje. Hoy se utiliza JSON como formato de intercambio de datos y XML parece más relegado a una segunda posición. Una de las funcionalidades que más se demandan a la hora de intercambiar datos es validar las estructuras de estos. XML dispone de sus XML Schemas y JSON dispone de los JSON Schemas que son relativamente modernos. Vamos a ver un ejemplo de estos.

JSON Schemas

La sintaxis de un JSON Schema define los diferentes campos que una estructura concreta posee :

 { "$schema": "http://ift.tt/1h69xvr;, "properties": { "nombre": { "type": "string", "minLength": 3, "maxLength" : 20 }, "apellidos": { "type": "string", "minLength": 3, "maxLength" : 20 } "edad": { "type": "number", "description": "edad de la persona", "minimum" : 0 }, }, "required": [ "nombre", "apellidos", "edad", ] }

En este caso se definen tres propiedades (nombre,apellidos,edad) con su diferente tipología. Ademas se obliga a que todas ellas sean obligatorias. Eso implica que una estructura JSON como la siguiente será válida:

 { nombre:"juan", apellidos:"fernandez", edad:20 }

En cambio las siguientes estructuras no lo serán:

 { nombre:20, apellidos:"fernandez", edad:20 }
 { nombre:"juan", apellidos:"fernandez", }

Para validar de forma rápida las estructuras JSON contra sus Schemas podemos usar como herramienta online jsonschemavalidator.

Jsonvalidatorschemaonline

Si necesitamos usar las validaciones a nivel de programación muchas plataformas ya disponen de sus propias librerías (.NET, Java, Javascript).

También te recomendamos

Convierte tus XML a JSON y viceversa, online

Centro de innovación BBVA

Interoperabilidad en el siglo XXI


La noticia Utilizando JSON Schema fue publicada originalmente en Genbeta Dev por Cecilio Álvarez .

 

desde Genbeta Dev http://ift.tt/1JiVaHv
via IFTTT

Arc Theme, un nuevo tema para tus ventanas en Ubuntu

Arch Theme es una nueva forma de personalizar tu gestor de ventanas que ofrece temas visuales con elementos transparentes para escritorios basados en GTK 3 y GTK 2, así como para GNOME Shell. Es una nueva opción que se añade a las ya existentes para dar a nuestro escritorio el aspecto visual que más nos convenza,…

El artículo Arc Theme, un nuevo tema para tus ventanas en Ubuntu ha sido originalmente publicado en Ubunlog.

desde Ubunlog http://ift.tt/1ET01rH
via IFTTT

Ubuntu libera el código que usaba en Ubuntu One

Hace ya mucho que Ubuntu cerró el servicio de Ubuntu One y sorprendentemente hoy conocemos que el proyecto al fin revivirá aunque no de la forma que hubiéramos esperado. Ubuntu ha publicado bajo licencia AGPLv3 todo el código que se usaba para Ubuntu One, más en concreto el programa que se utilizaba para sincronizar sus…

El artículo Ubuntu libera el código que usaba en Ubuntu One ha sido originalmente publicado en Ubunlog.

desde Ubunlog http://ift.tt/1h17os8
via IFTTT

18 Essential Plugins to Get More Out Of Sublime Text – Hongkiat

Even though SublimeText comes with a bunch of great features that help our work as web developers, like any other tool, there will always be a room for enhancements. This is when plugins can be real useful (and we are huge fans of plugins). Before we proceed, maybe

Origen: 18 Essential Plugins to Get More Out Of Sublime Text – Hongkiat

La lista definitiva de los mejores sitios para descargar ROMs

Este post les va a gustar a los nostálgicos de los juegos, sobre todo aquellos que tienen más de 30 años. Quiero dejarles una lista con buenos sitios para descargar ROMs y poder revivir aquellos tiempos en los que jugábamos cuando éramos niños o adolescentes, sea cual sea la consola. Obviamente, para poder jugar y […]

Este artículo La lista definitiva de los mejores sitios para descargar ROMs fue publicado originalmente en Punto Geek.

desde Punto Geek http://ift.tt/1EeoUgR
via IFTTT

5 de los mejores plugins para crear Formularios de Contacto para WordPress | GeeksRoom

Una parte importante del blog para que los lectores se puedan comunicar con ustedes los webmasters o editores es la página de contacto. En esa página de contacto en su blog pueden tener una dirección de email para que el usuario haga clic y con su cliente de email les envíe directamente un email o algo más profesional y mucho más cómodo para el lector, un formulario de contacto. En WordPress hay muchos plugins que permiten agregar un formulario de contacto y 5 de los mejores son los siguientes, Contact Form 7 Es el que utilizamos en este blog.  Ofrece muchas características y permite al usuario crear un formulario personalizado.  Si no quieren personalizar, viene con un formulario preestablecido que solicita al lector escribir su nombre (obligatorio), dirección de email (obligatorio), página web (opcional) y la caja de texto para escribir el mensaje.  Ahora no es algo fácil de personalizar intuitivamente, pero muestran varios ejemplos como para en poco tiempo poder crear uno formulario

Origen: 5 de los mejores plugins para crear Formularios de Contacto para WordPress | GeeksRoom

Los mejores mazos de Hearthstone para trollear a base de combos

Hearthstone0

Ya se ha cumplido un año de la publicación de nuestra guía de mazos para ‘Hearthstone’ y, desde entonces, la situación en el juego de cartas de Blizzard ha cambiado lo suficiente como para que parte de aquellas colecciones hayan quedado algo desfasadas debido a las nuevas incorporaciones que han ido aterrizando en ‘Hearthstone’.

El metajuego ha cambiado casi por completo con la llegada de las nuevas cartas de Goblins vs. Gnomos y el modo aventura de Montaña Roca Negra, así que ya va siendo hora de actualizar nuestros mazos. Podríamos hacerlo con lo básico, a base de coleccions para alcanzar el modo leyenda o conseguir monedas fáciles, pero aquí hemos venido a divertirnos, y si algo tienen los mazos que encontraréis a continuación es que controlarlos a la perfección es todo un espectáculo.

Mazo: el Cazador que fingió su muerte

Hearthstone2

Empezamos por mi clase preferida, más aún después de convertirse en una de las más potentes y divertidas de jugar gracias a las nuevas cartas que han ido aterrizando en ‘Hearthstone’ durante los últimos meses. Si aventurarse a jugar con él era poco más que una locura hace apenas un año, ahora es una de las opciones más elegidas por los jugadores.

La gracia de este mazo reside en intentar aprovechar al máximo las posibilidades de Fingir muerte, la carta que activa el último aliento de todos los esbirros que tengamos en nuestra zona de la mesa. A base de secretos controlaremos el juego durante los primeros turnos y luego intentaremos llenar la mesa de legendarias o cartas fuertes con último aliento para aprovecharnos de sus poderes sin que desaparezcan de la lucha.

Para este mazo necesitarás una copia de cada carta salvo las siguientes, que requieren dos copias para alcanzar las 30: Tejerred, Fingir muerte, Arco de cuerno de águila, Crinalta de la sabana, Acaparador de botín, Científico loco, Gólem de la cosecha, Trituradora pilotada y Eructador de lodo.

mazo-de-cazador

image01 image01 image01 image01

Mazo: el Pícaro aceitoso te parte la cara

Hearthstone3

Si hay una clase que controle los combos a la perfección es la del Pícaro, no sólo por hacer uso de esa estrategia en gran parte de sus cartas al jugarlas después de otras, también por la sinergia que puedes montar entre ellas si tienes la suerte de montar una buena mano mientras aguantas los primeros embistes del rival.

Nos interesan dos cartas, el Aceite afilaespadas con su combo de +3 de ataque a tu arma y +3 a un esbirro aleatorio, y la Profesora violeta para invocar aprendices 1/1 pegándole una patada a una piedra para que aparezcan tres o cuatro por turno. Aprovecha la carta de Preparación para sumar otro hechizo más cuando te hayas quedado sin cristales y mantén tu vida a controlada a base de Chamanes clarividentes y Sanabots.

Para montar este mazo necesitarás dos copias de las cartas que encontrarás a continuación. Las únicas que sólo incluyen una copia son: Sprint, Marinero de Mares del Sur, Chamán clarividente, Sanabot antiguo, Subastador de Gadgetzan y las legendarias.

mazo-picaro

image01 image01 image01 image01

Mazo: el Sacerdote de los 30 puntos de daño

Hearthstone5

No soy un gran fan del Sacerdote (de hecho el estilo de juego de los mazos habituales de esta clase me mosquean con facilidad), pero debo reconocer que el combo que encontraréis a continuación es todo un espectáculo y, aunque difícil de ejecutar, lo suficientemente espectacular para que el esfuerzo valga la pena.

Ahí va un caso práctico. Acabas de jugar el Emperador Thaurissan para reducir el coste de todas tus cartas un punto al finalizar cada uno de tus turnos, y al llegar el turno 10 tienes cristales suficientes para lanzar el Profeta Velen, bufarlo con el hechizo El elegido de Velen (daño duplicado y +1) y reventar al enemigo con una Punición Sagrada y dos Explosión mental (0 y 2 cristales gracias al amigo Thaurissan) alcanzando los 30 puntos de daño en el décimo turno. GG y a por otro pobre infeliz.

No es un mazo excesivamente caro si ya llevas una temporada jugando porque algunas de sus legendarias son de las primeras que habrás creado. Si no es el caso, ya sabes, al menos para probar si te sale bien la jugada. Las únicas cartas incluidas que sólo necesitan una copia son: Resurrección, Acólito de dolor y legendarias.

mazo-sacerdote

image01 image01 image01 image01

Mazo: el ejército infinito del Guerrero

Hearthstone6

Cerramos la selección con otra de las clases que no acostumbraba a jugar a menudo, la del Guerrero, ¿pero cómo iba yo a resistirme a la posibilidad de llenar la mesa de esbirros atacando en manada si es lo que más disfruto de ‘Hearthstone’?

Las gracias tenéis que dárselas a la amistad entre Comandante Grito de Guerra (todos los esbirros con 3 puntos de ataque o menos reciben cargar) y Parroquiano lúgubre (un 3/3 que cada vez que recibe daño invocas a otro Parroquiano lúgubre), y como ese sentimiento se convierte en amor al utilizar el último aliento de 1 punto de daño a todos los esbirros de la Picadura de la Muerte. Cargad, mis zumbados con hacha, cargad.

Sólo una aclaración antes de que saltéis a la galería, necesitas una copia de: Grito de orden y las legendarias, el resto las metes en el mazo a pares sin olvidarte a nuestro querido amigo Thaurissan para que el tramo final de la partida se nos haga más fácil y el Torbellino (otro punto de daño a todos los esbirros) nos salga completamente gratis.

mazo-guerrero

image01 image01 image01 image01

En VidaExtra | Los mejores mazos de cartas para triunfar en Hearthstone

También te recomendamos

La perdición por Goblins vs. Gnomos, primera expansión de Hearthstone, comenzará en una semana

Mi vida en videojuegos: 11 expertos españoles escogen los títulos que más les marcaron

Más de 120 nuevas cartas en Goblins vs. Gnomos, la primera expansión de Hearthstone


La noticia Los mejores mazos de Hearthstone para trollear a base de combos fue publicada originalmente en Vidaextra por R. Marquez .




desde Vidaextra http://ift.tt/1EKyf3V
via IFTTT

12 Most Useful WordPress Custom Post Types Tutorials

WordPress allows you to create your own custom content types. These content types are called custom post types. You can use them to add custom content like products, reviews, recipes, etc. In this article, we will share the 12 most useful WordPress custom post types… Read More »

To leave a comment please visit 12 Most Useful WordPress Custom Post Types Tutorials on WPBeginner.

desde WPBeginner http://ift.tt/1Hnu1jt
via IFTTT

Formulario multi pasos con CSS y Jquery

Vamos a ver la forma de crear una sencillo formulario  del tipo multipaso, muy útil cuando tenemos formularios muy extensos o con demasiados campos, utilizaremos Jquery easing para animar la transición de las diferentes etapas o partes de las que se compondrá y le daremos el toque artístico con un poco de CSS (no esperen mucho, no soy bueno para el CSS).

Bueno lo primero sera confeccionar nuestro formulario, para ello utilizaré el siguiente código, el cual no presenta secretos.

En primer lugar definimos la cantidad de pasos para confeccionar una barra de progreso, para mantener informado al usuario y evitar que deje el formulario abandonado y perdamos trafico,  en este ejemplo serán 3 (Configurar tu cuenta, Perfil Social y Detalles Personales).

<form id="formulario">
<!-- progreso -->
<ul id="progreso">
<li class="active">Configurar tu cuenta</li>
<li>Perfil Social</li>
<li>Detalles Personales</li>
</ul>
</form>

La barra de progreso sera una simple etiqueta ul  con un id llamado progreso, con sus correspondientes etiquetas li (tantas como pasos tenga el formulario) [highlight color=yellow]no olvidar asignar la clase active al primer li[/highlight] que mediante jQuery y CSS posteriormente la dotaremos de vida.

Luego de definir los step o pasos del formulario, creamos diferentes campos fieldsets para contener cada paso y dentro todo lo que se requiera (inputs, h2, h3, p, label, etc).

<!-- fieldsets -->
<fieldset>
    <h2 class="fs-title">Crear su cuenta</h2>
    <h3 class="fs-subtitle">Paso 1</h3>
    <input type="text" name="email" placeholder="Email" />
    <input type="password" name="pass" placeholder="Password" />
    <input type="password" name="cpass" placeholder="Confirmar Password" />
    <input type="button" name="next" class="next action-button" value="Next" />
</fieldset>
<fieldset>
    <h2 class="fs-title">Perfil social</h2>
    <h3 class="fs-subtitle">Tu presencia en las redes</h3>
    <input type="text" name="twitter" placeholder="Twitter" />
    <input type="text" name="facebook" placeholder="Facebook" />
    <input type="text" name="gplus" placeholder="Google Plus" />
    <input type="button" name="previous" class="previous action-button" value="Previous" />
    <input type="button" name="next" class="next action-button" value="Next" />
</fieldset>
<fieldset>
    <h2 class="fs-title">Detalles Personales</h2>
    <h3 class="fs-subtitle">Nunca venderemos tu informaci&oacute;n personal</h3>
    <input type="text" name="fname" placeholder="Nombre" />
    <input type="text" name="lname" placeholder="Apellido" />
    <input type="text" name="phone" placeholder="Telefono" />
    <textarea name="address" placeholder="Direcci&oacute;n"></textarea>
    <input type="button" name="previous" class="previous action-button" value="Previous" />
    <input type="submit" name="submit" class="submit action-button" value="Submit" />
</fieldset>

En cada fieldset, adicional a los campos que requiramos, debemos agregar un input tipo button para avanzar de paso en paso y otro para retroceder (según corresponda), por tanto en este ejemplo necesito agregar uno el primer fieldset para avanzar, dos al segundo y uno para retroceder en el ultimo junto a uno tipo submit.
Si probamos el código obtendremos una simple pagina de fondo blanco con un formulario donde veremos todos los campos así.

Un toque de sensibilidad

Ahora lo principal es hacer mas vistoso nuestro formulario, para ello sacamos nuestros dotes artísticos (mas de alguien fumara algo para encontrar su inspiración xD) y nos zambullimos en CSS, yo no tengo estudios formales en CSS, pero la web es basta y repleta de información al respecto, al final de este articulo les dejare algunos link relacionados para el que desee profundizar alguno de los temas tratados en este post.

Primero importaremos una fuente tipografica desde el CDN de fuentes de google, yo usare la fuente Montcerrat, pero pueden usar la que estimen, desde google fonts podran navegar, buscar y elegir la que mas les agrade.

/*importamos una fuente personalizada desde google*/
@import url(http://fonts.googleapis.com/css?family=Montserrat);

Un pequeño reset de estilos al documento,  sera muy básico.

/*reset basico*/
* {margin: 0; padding: 0;}

Altura del documento html y aplicamos un combo de imagen como patern + gradient, cave señalar que la mayoría de CSS que usaremos, no aplica en internet explorer, esto debido a su incompatibilidad con esta versión de CSS 3 (pero bueno a quien le importa esos dinosaurio xD).

html {
    height: 100%; /*Image only BG fallback*/
    background: url('bitmaps/gs3.png'); /*background = combo gradient + imagen pattern*/
    background: linear-gradient(rgba(196, 102, 0, 0.2), rgba(155, 89, 182, 0.2)), url('bitmaps/gs3.png');
}

A pesar que mencione que no funcionaba bien en internet explorer  debemos asegurarnos que los otros navegadores entiendan nuestra codificación de estilos y para ello utilizaremos los prefijos para sus respectivos motores de render:

[checklist]
  • -webkit- : Para la familia Chrome / Chromium y Safari
  • -moz- : Para Mozilla Firefox y derivados
  • -o- : Para Opera (o si, aun existe)
  • -ms-: Para internet explorer 9 (pero linear-gradient no funciona bien en ie)
[/checklist]
background: -webkit-linear-gradient(rgba(196, 102, 0, 0.2), rgba(155, 89, 182, 0.2)), url('bitmaps/gs3.png');
background: -moz-linear-gradient(rgba(196, 102, 0, 0.2), rgba(155, 89, 182, 0.2)), url('bitmaps/gs3.png');
background: -o-linear-gradient(rgba(196, 102, 0, 0.2), rgba(155, 89, 182, 0.2)), url('bitmaps/gs3.png');
background: -ms-linear-gradient(rgba(196, 102, 0, 0.2), rgba(155, 89, 182, 0.2)), url('bitmaps/gs3.png');

Aplicamos la fuente importada

body {
    font-family: montserrat, arial, verdana;
}

Ahora el formulario y su contenido

/*estilo formulario*/
#formulario {
    width: 400px;
    margin: 50px auto;
    text-align: center;
    position: relative;
}
#formulario fieldset {
    background: #ffffff;
    border: 0 none;
    border-radius: 3px;
    -webkit-box-shadow: 0 0 15px 1px rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 15px 1px rgba(0, 0, 0, 0.4);
    padding: 20px 30px;
    width: 80%;
    margin: 0 10%; /*Posicionamos todos los fieldset uno encima del otro*/
    position: absolute;
}
/*Ocultamos todos menos el primer fieldset*/
#formulario fieldset:not(:first-of-type) {
    display: none;
}
/*inputs*/
#formulario input,#formulario textarea {
    padding: 15px;
    border: 1px solid #ccc;
    border-radius: 3px;
    margin-bottom: 10px;
    width: 100%;
    font-family: montserrat;
    color: #2C3E50;
    font-size: 13px;
}
/*buttons*/
#formulario .action-button {
    width: 100px;
    background: #27AE60;
    font-weight: bold;
    color: white;
    border: 0 none;
    border-radius: 1px;
    cursor: pointer;
    padding: 10px 5px;
    margin: 10px 5px;
}
#formulario .action-button:hover,#formulario .action-button:focus {
    -webkit-box-shadow: 0 0 0 2px white, 0 0 0 3px #27AE60;
    box-shadow: 0 0 0 2px white, 0 0 0 3px #27AE60;
}
/*headings*/
.fs-title {
    font-size: 15px;
    text-transform: uppercase;
    color: #2C3E50;
    margin-bottom: 10px;
}
.fs-subtitle {
    font-weight: normal;
    font-size: 13px;
    color: #666;
    margin-bottom: 20px;
}

Solo resta la parte superior del formulario, donde se marcan los pasos:

/*progreso*/
#progreso {
    margin-bottom: 30px;
    overflow: hidden; 
    counter-reset: step; /*CSS contador para numerar los pasos, lo aprendi en http://www.w3schools.com/*/
}
#progreso li {
    list-style-type: none;
    color: white;
    text-transform: uppercase;
    font-size: 9px;
    width: 33.33%;
    float: left;
    position: relative;
}
#progreso li:before {
    content: counter(step);
    counter-increment: step;
    width: 20px;
    line-height: 20px;
    display: block;
    font-size: 10px;
    color: #333;
    background: white;
    border-radius: 3px;
    margin: 0 auto 5px auto;
}
/*conectores de progreso*/
#progreso li:after {
    content: '';
    width: 100%;
    height: 2px;
    background: white;
    position: absolute;
    left: -50%;
    top: 9px;
    z-index: -1; /*lo pone detrás de los números*/
}
#progreso li:first-child:after {
    /*el conector no es necesario antes de que el primer paso*/
    content: none; 
}
/*marca activo/completado los pasos en verde*/
/*El numero del paso y el conecto quedaran en verde*/
#progreso li.active:before,#progreso li.active:after {
    background: #27AE60;
    color: white;
}

Con esto hemos terminado la parte «artistica» de nuestro formulario. Si probamos nuestro formulario notaran que se ve bien esteticamente, que solo vemos la primera parte del formulario, pero al darle click al boton Next, no pasa nada, ahora le daremos vida con un poco de JQuery.

Crearemo un nuevo archivo con extension js, llamenlo como quieran, yo lo llamare funciones.js

$(document).ready(function(){
//jQuery time
var current_fs, next_fs, previous_fs; //fieldsets
var left, opacity, scale; //propiedades fieldset que vamos a animar
var animating; //

$(".next").click(function(){
    current_fs = $(this).parent();
    next_fs = $(this).parent().next();

    //activar el siguiente paso en progreso usando el índice de next_fs
    $("#progreso li").eq($("fieldset").index(next_fs)).addClass("active");

    //mostrar el siguiente fieldset
    next_fs.show(); 
    //ocultar el fieldset actual con estilo
    current_fs.animate({opacity: 0}, {
        step: function(now, mx) {
            //como la opacidad de current_fs está reducida a 0 - almacenado en "now"
            //1. escala current_fs hasta 80%
            scale = 1 - (1 - now) * 0.2;
            //2. traer next_fs desde la derecha (50%)
            left = (now * 50)+"%";
            //3. aumentar la opacidad de next_fs a 1 a medida que avanza
            opacity = 1 - now;
            current_fs.css({'transform': 'scale('+scale+')'});
            next_fs.css({'left': left, 'opacity': opacity});
        }, 
        duration: 800, 
        complete: function(){
            current_fs.hide();
        }, 
        //Esto viene del plugin easing
        easing: 'easeInOutBack'
    });
});

$(".previous").click(function(){
    current_fs = $(this).parent();
    previous_fs = $(this).parent().prev();

    //des-activar paso actual en progreso
    $("#progreso li").eq($("fieldset").index(current_fs)).removeClass("active");

    //mostrar el fieldset anterior
    previous_fs.show(); 
    //ocultar el fieldset actual con estilo
    current_fs.animate({opacity: 0}, {
        step: function(now, mx) {
            //as the opacity of current_fs reduces to 0 - stored in "now"
            //1. escalar previous_fs de 80% a 100%
            scale = 0.8 + (1 - now) * 0.2;
            //2. take current_fs to the right(50%) - from 0%
            left = ((1-now) * 50)+"%";
            //3. increase opacity of previous_fs to 1 as it moves in
            opacity = 1 - now;
            current_fs.css({'left': left});
            previous_fs.css({'transform': 'scale('+scale+')', 'opacity': opacity});
        }, 
        duration: 800, 
        complete: function(){
            current_fs.hide();
        }, 
        //Esto viene del plugin easing
        easing: 'easeInOutBack'
    });
});

$(".submit").click(function(){
    return false;
})

});

Ahora si hemos terminado, si desean que su formulario envié deben editar la ultima función del script.

Adicionalmente deben refererciar al plugin easing porque ocuparemos uno de sus metodos para animar nuestro formulario.

<!-- jQuery easing plugin -->
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js" type="text/javascript"></script>

A continuacion les dejare un enlace con una demo de este formulario y un link donde podrán descargar el ejemplo completo listo para usar o editar a su conveniencia.

Referencias

 

Demo

Ver Demostración

Descargar ejemplo