Mostrando entradas con la etiqueta Tutoriales. Mostrar todas las entradas
Mostrando entradas con la etiqueta Tutoriales. Mostrar todas las entradas

martes, 12 de agosto de 2014

Emular pulsación de tecla con user32.dll

Bueno, comenzaré con un tuto para presentar como emular una pulsación de tecla con la dll user32 en velneo.


Lo primero que debemos hacer es añadir un objeto librería externa en velneo con estas propiedades.


user32

Luego le creamos la función keybd_event de la dll para utilizarla


keybd_event

Esta función utiliza 4 parametros, key, scan, flag, extrainfo. En este caso, crearemos las 4 de tipo int.


parametros

Ya en este punto, lo unico que nos queda es ejecutar la función de la dll donde la necesitemos, podemos hacerlo en un evento o en alguna función (en caso de que la vayas a usar mas de una vez, es recomendable) de esta manera.


eventoun set a una variable, llamas a la función de la dll y le pasas los parámetros, donde "TECLA" es el valor numérico de la tecla, voy a dejarles un archivo con los valores de las teclas.

lunes, 11 de agosto de 2014

Creando diapositivas impress.js con strut

Bueno esta vez, vengo con un video-tutorial de como crear diapositivas impress.js con strut. Super rapido y sencillo cuando necesitas slides interesantes y no tienes mucho tiempo como para codear...


Igualmente les dejo el demo que hice en el video para que puedan ver el código y el resultado.

Saludos.

Recuperar/Reinstalar linux mint con live cd

linux-mint-logoBueno, esta vez les vengo con un tuto para poder recuperar una instalación de linux mint con el live cd, me tocó anoche ya que tuve un problema y pues me di a la tarea de buscar información acerca de tema y es bastante difícil conseguir información para esto así que voy a publicar un tuto aquí para que si alguien le sucede algo parecido pues tenga información sencilla de como hacerlo.


En este caso explico como hacerlo para linux mint, pero si no me equivoco, funcionaría para ubuntu también. Los pasos son bastante sencillos, es mas bien una publicación informativa en vez de ser un tutorial.


Primeramente lo que necesitan es descargarse la iso específica de la distro que tenían anteriormente (la que estropearon), la montan en un usb o un dvd, como les sea mas cómodo.


Inician en modo live desde el CD o desde el USB y comienzan la instalación como si fuera una totalmente nueva, les dice que deben tener internet, tantos GB libres y demas.


El detalle está ya en la parte donde te dice que si borras el disco, instalas junto con los demás sistemas operativos o una personalizada. Elegimos la parte personalizada y nos muestra las tablas de particiones que tenemos.


installation-type


El truco está en elegir la misma partición donde ya tenias instalado, darle cambiar o modificar para que te abra la configuración de esa partición, eliges el mismo tipo y el mismo punto de montaje, que todo quede exactamente igual como en tu primera instalación y NO ACTIVAR EL CHECK DE FORMATEAR ojo con esto ya que sino, no tendría ninguna ciencia intentar recuperar una instalación anterior.


partition


Luego lo siguiente es crear un usuario con el nombre exactamente igual como el anterior y de ahí en adelante seguir con la instalación como si fuera alguna nueva...


Al finalizar reinicias y cuando enciendas tendrás tu cuenta normal, el grub como en una primera instalación y tus documentos normales en tu carpeta personal.


Todo el truco está en no formatear la partición, crear el mismo usuario y colocar la misma configuración como la primera vez.


Incluso en caso de que hayas perdido las aplicaciones que tenías instalada, como fue mi caso, a instalarlas de nuevo, recuperó todas las configuraciones anteriores, como por ejemplo, había perdido skype y al instalarla de nuevo luego de recuperar mi instalación pues me logueo como si no hubiera pasado nada. Y las que no perdiste anteriormente, el sistema intenta unirlas a la nueva instalación...


Espero le sirva a cualquier necesitado, es bastante sencillo, pero no hay mucha información de ello.


Saludos a todos.

miércoles, 2 de enero de 2013

El maravilloso poder de CSS

Les mostrare algunos trucos que puedes utilizar con CSS y que te pueden ayudar mucho.

Comencemos con los links, por ejemplo este, hace que los links vacíos sean bastante obvios.
a[href = ""] {
background: red;
color: white;
font-size: x-large;
}

Puedes colocar esto en tu CSS y así te podrás dar cuenta cuando dejas un link vacío ya que con este código le puedes dar un estilo bastante obvio a los links que no tengan una ruta especificada.

Aqui el demo

Puedes también dar un estilo a los links absolutos, diferente a los links relativos:
a[href ^= http] {
display: inline-block;
color: red;
transform: rotate(180deg);
}

 Aqui el demo 

Si quieres tener un estilo diferente para links que apunten fuera de tu dominio, puedes usar el selector :not().
a[href ^= 'http']:not([href *= 'elementalcode.']) {
background: transparent url(arrow.png) no-repeat center right;
padding-right: 16px;
}

 Aqui el demo

Solo para recordar que no estas limitado a dar estilo a los links, aqui esta como invertir todas las imagenes PNG
img[src $= .png] {
filter: invert(100%);
}

Pasando a los selectores de atributos, ¿sabías puedes hacer visible el encabezado del documento, junto con los otros elementos allí?
head {
display: block;
border-bottom: 5px solid red;
}
script, style, link {
display: block;
white-space: pre;
font-family: monospace;
}

O que se puede utilizar el impresionante poder de CSS attr-function para rellenar el contenido del :after y el :before?
script:before {
content: “<script src=\”“ attr(src) “\” type=\”“ attr(type) “\”>”;
}
script:after {
content: “</script>”;
}

style:before {
content: “<style type=\”“ attr(type) “\”>”;
}
style:after {
content: “< /style>”;
}

/* Y para finalizar, */
link:before {
content: “<link rel=\”“ attr(rel) “\” type=\”“ attr(type) “\” href=\”“ attr(href) “\” />”;
}

 Aqui el demo 

Nota: Ten en cuenta que attr() lee los valores de los atributos del elemento coincidente, por lo que si usted lo usa para #foo:before, lee los atributos de #foo.

jueves, 29 de noviembre de 2012

Sass no genera código incorrecto, los malos coders lo hacen!

Los que no ven ninguna utilidad para pre-procesadores, como Sass utilizan a menudo la argumentación de "código malo". Se crean selectores demasiado específicos debido a sprites de enormes anidaciones, y odian la manera en que Sass aplica un enfoque arquitectónico que no funciona. Y todo es cierto, Si eres un mal desarrollador! Ya sabes, aquellos que hacen a mano selectores muy específicos, sprites de 15MB y no saben cómo estructurar limpiamente un proyecto.



Contrarrestando los argumentos en contra de Sass


Con este artículo voy a tratar de desacreditar los argumentos contra el uso de Sass que crean miedo, incertidumbre y duda. Creo que estos argumentos son un error y son utilizados por aquellos que no tienen experiencia real con pre-procesadores o han trabajado con personas que no "lo entienden". Estoy seguro de que puedo convertir cualquier CSS por ahí para Sass, utilizando sustancialmente una cantidad menor de caracteres, manteniendo la misma potencia exacta. Cualquiera que sea Sass compila depende de usted. Ahora, adelante!



"Pistas de selección excesiva producto del anidamiento"


El exceso de anidación que hacemos. Hay una solución muy elegante para esto: no lo hagas.!! Mario ha escrito un excelente artículo acerca de la regla de la incepción en thesassway.


Entiendo que es fácil caer presa del exceso de anidación, e incluso 37signals lo hace. La regla básica es: no trate de imitar su estructura HTML en el Sass. Puede parecer muy útil al principio, pero al final se obtendrá un código no-reusable debido a la extrema especificidad de los selectores. Usted va a terminar de copiar/pegar trozos de Sass y provocar duplicación de código. Mantenga los selectores de poca profundidad.



"Los Mixins agrandan el CSS mediante la repetición de código"


Lo pueden hacer. Cuando un mixin cuenta con cinco líneas de código, incluyendo esto en tu Sass diez veces dará lugar a 50 líneas de CSS. En la mayoría de los casos usted no quiere eso. Mi regla de oro es: me huele a mixins sin argumentos. Cuando el valor de retorno de su mixin depende de argumentos que se pasan a la misma, se debe generar una salida diferente con cada uso. Para un mixin que devuelve el ancho basado a través de un diseño de cuadrícula basado por ejemplo en un número de columnas, tiene mucho sentido.


Para muchos otros usos, la directiva @extend puede ser una mejor opción (siempre y cuando usted lea el siguiente párrafo).



"Ampliar la Directiva crea un montón de selectores feos"


Pregúntese si su CSS compilado está destinado a ser legible por humanos o de lectura mecánica. Si usted trabaja en Sass, pero reconoce  que el CSS resultante será editado mano, intentaria evitar extender los selectores. Cuando se utiliza @extend dos veces en un solo selector, habrá código relacionado con él en tres lugares en el CSS (asumiendo que no están jerarquizando el extends).


Para un navegador sin embargo, la forma en que se formatea el código no importa realmente, por lo que minificar su código es una buena práctica. Un codigo bonito es menos importante que el performance del código  y extender sus selectores puede definitivamente conducir a DRY'er su código como el uso mixins. Por otro lado, no hay que exagerar. Si usted se encuentra la ampliación de su Clase clearfix veinte veces, puede considerar añadir esto a su HTML (o aprender cómo
nfuncionan los floats). Use el sentido común.



"No se puede utilizar Sass en un Enfoque OOCSS  (o cualquier otra arquitectura)"


Claro que puedes. Si desea utilizar nombres de las clases en todos los elementos en el código HTML y define (extremos) selectores de poca profundidad en el CSS, Sass tiene tu respaldo. Si usted quiere tomar un enfoque anidado, donde sólo se establece un nombre de clase de un elemento contenedor y utilizar selectores de descendientes en el CSS, Sass es una buena opción. Incluso se puede simplemente tomar su CSS hecho a mano, cambiarle el nombre a SCSS y sólo utilizar esas características en Sass y Compass que alegrara su día. Sass no tiene nada que ver con su enfoque arquitectónico. Dile que lo que debe hacer, y lo hará.



Conoce tu compilador.


No es necesario conocer los detalles internos de Sass, solo saber lo que se hará en el código.  Tienes que abrir el CSS procesado de vez en cuando y ver lo que parece. No es ciencia de cohetes para aprender a predecir lo que el código Sass compilará. Es una buena cosa que pensar "¿cómo voy a hacer esto en plano al 'CSS" al escribir Sass?". Por lo menos usted sabrá si un determinado uso de @extend añade un trillon selectores a tu CSS y tomar una decisión informada en cuanto a usarlo o no.



Sass es solo una herramienta.


Así como no se puede esperar que todo el que tiene un martillo sea un maestro carpintero, Sass no automágicamente te convertirá en un gran desarrollador de front-end. Al final, Sass es "sólo" una herramienta de gran alcance. Y al tomar la responsabilidad en este gran poder, que le ayudará a escribir y mantener su estilo de forma fácil, independientemente del enfoque que usted tome. Conoce lo que estás haciendo y te irá bien.!!


Artículo original en inglés en: Sass doesn't create bad code. Bad coder do.

martes, 13 de noviembre de 2012

Curso de Sass y Compass

curso de  sass y compass

Empezamos con nuestro primer Curso! Este es el comienzo de una nueva aventura con un Curso de Sass y Compass, que nos facilita la creación de CSS y trabajar de manera mucho más productiva. Sass y Compass lo pueden utilizar en todos o a la mayoría de tus proyectos webs.


Sass es un lenguaje orientado a mejorar CSS que le añade un montón de nuevas capacidades para evitar la abundante redundancia en CSS.


Compass es un conjunto de herramientas y patrones que nos ayudan a mejorar aún más nuestro trabajo con Sass.




El curso


A medida que vallamos avanzando con el curso (ya que todavía no esta terminado) iremos dejando los enlaces acá para que sean más fácil de ver o bajar. No te olvides de dejar este artículo en tus favoritos ;-)




Los videos y artículos ;-)


1 - Introducción a Sass y Compass


 [Artículo] [Video en Youtube] [Descargar]


2 - Instalación


 [Artículo] [Video en Youtube] [Descargar]


3 - Lo más básico sobre la terminal


 [Artículo] [Video en Youtube] [Descargar]


4 - Crear y configurar proyectos


 [Artículo] [Video en Youtube] [Descargar]


5 - Syntax Highlighting para Sass en Sublime Text


 [Artículo] [Video en Youtube] [Descargar]


6 - Anidación en Sass


 [Artículo] [Video en Youtube] [Descargar]


7 - Comentarios, variables y operadores


 [Artículo] [Video en Youtube] [Descargar]


8 - Herencia de selectores y Mixins


 [Artículo] [Video en Youtube] [Descargar]


9 - Selector Placeholder


 [Artículo] [Video en Youtube] [Descargar]


10 - Interpolación y funciones preconstruidas de Sass


[Artículo] [Video en Youtube] [Descargar]


11 - @import y @media queries


[Artículo] [Video en Youtube] [Descargar]


12 - Keyword arguments y @content


[Artículo] [Video en Youtube] [Descargar]


13 - Directivas de control y inspeccionar código


[Artículo] [Video en Youtube] [Descargar]


14 - Bucle @for


[Artículo] [Video en Youtube] [Descargar]


15 - Bucle @while


[Artículo] [Video en Youtube] [Descargar]


16 - Bucle @each


[Artículo] [Video en Youtube] [Descargar]


17 - Construir funciones y argumentos variables


[Artículo] [Video en Youtube] [Descargar]


18 - Shell interactivo y tipos de datos


[Artículo] [Video en Youtube] [Descargar]


19 - Instalación y uso de plugin


[Artículo] [Video en Youtube] [Descargar]


20 - Uso de sprites en Compass


[Artículo] [Video en Youtube] [Descargar]


21 - Maps y selector placeholder para sufijos


[Artículo] [Video en Youtube] [Descargar]


 

Donativos


El material que ofrecemos es gratuito, puede ayudar con una donación por medio del siguiente botón.

value="PP-DonationsBF:btn_donateCC_LG.gif:NonHosted" />

 

Algunos enlaces ;-)


Web oficial de Compass


Web oficial de Sass


PlayList en Youtube


Los ejemplos en GitHub

miércoles, 17 de octubre de 2012

Algunas Características de CSS3 (parte 2)






Comenzaremos la segunda parte de este tuto mostrando caracteristicas de CSS3, con los bordes redondeados, algo que con CSS3 es muy sencillo de hacer, les mostrare una caricatura hecha solo con div's rectangulares y bordes redondeados, para que vean que es muy util.

lunes, 15 de octubre de 2012

Algunas Características de CSS3 (parte 1)





Comenzaremos este tuto con Una de las Caracteristicas de CSS3 mas destacadas, como lo son los selectores, mostraremos un ejemplo en el cual crearemos 4 div’s con la clase “columna” y al agregar nth-child(even) y nth-child(odd) haremos que una tenga un color blanco y la siguiente un color gris, y asi sucesivamente tantos divs como mostremos, el código CSS seria asi:
.columna:nth-child(even) {
background: #dde;
}
.columna:nth-child(odd) {
background: white;
}

Y aqui tenemos el resultado:

columna 1

columna 2

columna 3ndiv>
columna 4


Tenemos también atributos específicos, como por ejemplo:
input[type="text"] {
background: #eee;
}


Esto hará que todos los input de tipo texto tengan un fondo de color #eee.

Una nueva característica bastante interesante es la negación, podemos hacer una negación de esta manera:


:not(.ejemplo) {
color: red;
}
:not(span) {
align: center;
}


Con esto hariamos que los que no tengan la clase “ejemplo” tengan un color rojo y que lo que no este entre una etiqueta “span” que se centre.
Podemos tener también una mayor selectividad, como por ejemplo:


h2:first-child { ... }

div.texto > div { ... }
h2 + header { ... }


podemos tambien usar Fuentes web


@font-face {
font-family: 'LeagueGothic';
src: url(LeagueGothic.otf);
}

@font-face {
font-family: 'Droid Sans';
src: url(Droid_Sans.ttf);
}

header {
font-family: 'LeagueGothic';
}


Justificacion de texto

Aqui podemos mostrar un ejemplo de la justificacion de texto con overflow:hidden



#wrapping {width: 50%}
#overflow-hidden { font-size: 25px; height: 1.1em; overflow: hidden; }
#no-wrap { font-size: 25px; height: 1.1em; white-space: nowrap; overflow: hidden; }
#ellipsis { font-size: 25px; text-overflow: ellipsis; white-space: nowrap; height: 1.1em; overflow: hidden; }


Y aqui vemos el resultado en los tres contenedores:



Mostramos un pequeño ejemplo de el justificado de texto con overflow:hidden


Mostramos un pequeño ejemplo de el justificado de texto con overflow:hidden


Mostramos un pequeño ejemplo de el justificado de texto con overflow:hidden


 


Tenemos también las Columnas, cambiando simplemente un numero, podemos tener tantas columnas como queramos:



.Ejemplo{
column-count: 4;
column-rule: 1px solid #bbb;
column-gap: 2em;
display: block;
padding: 10px 20px;
color: black;
background: rgba(255, 255, 255, 0.4);
-webkit-border-radius: 8px;
-khtml-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
margin-bottom: 10px;
border: 1px solid rgba(0, 0, 0, 0.2);
}



Tenemos un resultado como este... claro, hay que tener en cuenta, que debes usar los prefijos o incluir prefix-free en tu web.


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam vestibulum ligula in diam ornare congue id ac erat. Quisque et justo nulla, et eleifend justo. Phasellus aliquet orci sit amet libero auctor aliquet. Nunc vulputate porta pulvinar. Sed porttitor, mi a elementum luctus, lectus sem molestie magna, ut volutpat lorem dolor eu libero. Nullam vulputate justo sem, non fringilla metus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue ac nisi semper posuere eu vulputate elit. Morbi aliquam vehicula velit eget facilisis. Integer magna sem, hendrerit sit amet auctor sit amet, scelerisque vitae elit.



Podemos crear texto con trazos utlizando text-stroke de esta manera:


#ejemplo-texto-con-trazo {
font-size: 85px;
padding: 20px 0;
text-align: center;
n
text-stroke-color: blue;
text-fill-color: white;
text-stroke-width: 1px;
}


Utilizando esta característica, obtendriamos un resultado como este:


Texto Trazo


Tenemos la libertad de usar opacitad con CSS3, algo muy util para hacer algunos efectos visules, utilizando colores RGBA. Haremos un pequeño ejemplo utilizando un div y texto para que veas como trabajar con colores RGBA.


#ejemplo-opacidad {
margin: 100px auto;
font-size: 80px;
line-height: 200px;
text-align: center;
font-weight: bold;
letter-spacing: -4px;
border-radius: 5px;
border-radius: 5px;
border-radius: 5px;
border-radius: 5px;
text-shadow: none;
color: rgba(255, 0, 0, 0.41);
background-color: rgba(0, 0, 255, 0.40);
background-position: initial initial;
background-repeat: initial initial;
}


Y asi tenemos un div con opacidad y un texto con el mismo efecto.



Opacidad



Siguiendo con los efectos en los textos, podemos jugar con los tonos, saturación y luminosidad, con HSLA.


#ejemplo-hsla {
font-size: 75px;
padding-top: 20px;
padding-right: 0px;
padding-bottom: 20px;
padding-left: 0px;
text-align: center;
color: hsla(166,81%,27%,0.30);
}


Se pueden crear colores muy buenos con hsla.


HSLA


En otro tuto, mostraremos algunas otras características, como transiciones, animaciones, transformaciones y muchas mas, espero les haya gustado.!!

viernes, 12 de octubre de 2012

Algunas Características de HTML5

[caption id="attachment_131" align="aligncenter" width="900"]Html-5 Html-5[/caption]
Bueno amigos, en este tutorial, les voy a mostrar algunas caracteristicas de HTML5 que tal vez ya las han visto, pero tal vez algunos no. Van a ser cosas simples, pero utiles como todo en HTML5.

Comenzaremos con los datalist para los inputs, esto nos crea un input que al escribir, va a ir mostrando las opciones que se parezcan a lo que estamos escribiendo, hagamos un ejemplo para ver su funcionamiento:
<input list="redessociales" placeholder="Redes Sociales..."/>
<datalist id="redessociales">
<option value="Facebook"/>
<option value="Twitter"/>
<option value="MySpace"/>
<option value="Hi5"/>
<option value="Diaspora"/>
</datalist>

Probemos el ejemplo, intenta escribir alguna de las redes sociales de la lista, y te mostrara la opcion a medida que vayas escribiendo, como un menu de autocompletado
 


Siguiendo con los input, tenemos los speech, que colocara un microfono en el input, y al darle click, activara el escucha del microfono para que al hablar, aparezca lo que pronunciaste, con un simple codigo como esto:
<input type="text" x-webkit-speech />

Y aqui tenemos el ejemplo, para que juegues con el.
 

 
Otra de las novedades simples de HTML5 son los resumenes y sus detalles, esto es para hacer algo como los botones de "Leer mas" en los cuales al darcle click te muestran el contenido que estaba oculto.



HTML 5
Este es un tuto en el cual mostramos algunas características de HTML5



Y aqui vemos que al darle click a la flecha, nos muestra el contenido

HTML 5Este es un tuto en el cual mostramos algunas características de HTML5

 
Las baras de progreso son unas de las caracteristicas mas utiles de HTML5, tenemos las "meter" y las "progress". las meter, se utilizan mas cuando su valor cambia al hacer una acción, mientras que las progress son mas usadas para descargas y progreso de los procesos, ademas de que tiene una animacion de que esta cargando.


30
60
90
Medio LLeno xD


Tu Puntuación es Baja: 30
Tu Puntuación es Media: 60
Tu Puntuación es Alta: 90
Descargando: Medio LLeno xD

Tambien tenemos ahora los enlaces descriptivos, donde colocas una descripcion de que son los links, muy recomendable hacerlo, por ejemplo:






...
old posts
tutorial
license
wannabe



Tenemos tambien SVG









Y algunos otros tipos de inputs para los formularios:












y aqui los ejemplos de cada tipo.










Y esto es todo, el proximo tuto sera de CSS3, espero les haya gustado, un saludo a todos.!!

sábado, 29 de septiembre de 2012

Notificaciones cronometradas con CSS3

[caption id="attachment_208" align="aligncenter" width="480"]notificaciones cronometradas con css3 notificaciones cronometradas con css3[/caption]

Un consejo rápido sobre cómo crear algunas notificaciones simples sincronizados con animaciones CSS. La idea es mostrar una notificación con una barra de progreso durante un tiempo específico y luego hacerla desaparecer.

Vamos a ver cómo crear una simple notificación oportuna con animaciones CSS. Vamos a utilizar un indicador de progreso para mostrar cuánto tiempo queda para que el cuadro desaparezca.

Seguramente, usted ya lo vio en alguna parte, yo lo descubrí en la buysellads.com, cuando las notificaciones programadas se muestran es decir, después de salvar a algunos ajustes.

HTML

Para el marcado simplemente tendremos una división con un mensaje en el interior y con una división adicional de la barra de progreso:
<div class="tn-box tn-box-color-1">
<p>Su configuracion se ha guardado satisfactoriamente!</p>
<div class="tn-progress"></div>
</div>

CSS

En el cuadro de la notificación se va a tener las clases tn-box y tn-box-color-1 que se utilizará para definir los diferentes colores. Luego se define el estilo de la caja:
.tn-box {
width: 360px;
position: relative;
margin: 0 auto 20px auto;
padding: 25px 15px;
text-align: left;
border-radius: 5px;
box-shadow:
0 1px 1px rgba(0,0,0,0.1),
inset 0 1px 0 rgba(255,255,255,0.6);
opacity: 0;
cursor: default;
display: none;
}
.tn-box-color-1{
background: #ffe691;
border: 1px solid #f6db7b;

Vamos a configurar el cuadro en display:none y darle 0 a la opacidad.

La barra de progreso tendrá el siguiente estilo:
.tn-progress {
width: 0;
height: 4px;
background: rgba(255,255,255,0.3);
position: absolute;
bottom: 5px;
left: 2%;
border-radius: 3px;
box-shadow:
inset 0 1px 1px rgba(0,0,0,0.05),
0 -1px 0 rgba(255,255,255,0.6);

Inicialmente, la barra tendrá 0 de ancho.

En este ejemplo, estoy usando un botón con una casilla de verificación que comenzará a las animaciones una vez que sea activado.
input.fire-check:checked ~ section .tn-box {
display: block;
animation: fadeOut 5s linear forwards;
}
input.fire-check:checked ~ section .tn-box .tn-progress {
animation: runProgress 4s linear forwards 0.5s;

El botón precede a la sección con los cuadros de notificación para que pueda utilizar el general sibling combinator.

Si usted tal vez desea agregar una clase con JavaScript en su lugar, se podría definir algo como esto:
.tn-box.tn-box-active {
display: block;
animation: fadeOut 5s linear forwards;
}
.tn-box.tn-box-active .tn-progress {
animation: runProgress 4s linear forwards 0.5s;
}

donde tn-box-active es la clase que tu agregas a el div tn-box.

La animacion en si, seria esta:
@keyframes fadeOut {
0% { opacity: 0; }
10% { opacity: 1; }
90% { opacity: 1; transform: translateY(0px);}
99% { opacity: 0; transform: translateY(-30px);}
100% { opacity: 0; }

Parece un "desvanecimiento", pero que en realidad se desvanece la caja en la primera y luego la hace desaparecer y moverse un poco. La animación de la barra de progreso seria así:
@keyframes runProgress {
0% { width: 0%; background: rgba(255,255,255,

0.3); }
100% { width: 96%; background: rgba(255,255,255,1);

Animamos la anchura a 96% (de izquierda fue de 2% en lo que queremos que se detenga el 2% de la derecha también), y la opacidad del valor RGBA.

La duración de la animación de la barra de progreso será un poco inferior a la duración de la animación cuadro, ya que va a empezar más tarde (la caja tiene que desaparecer en primer lugar).

Nota: Lo que pensé que sería bueno, es una pausa de la animación en vuelo estacionario. Esto tiene sentido si el usuario desea tener más tiempo para leer lo que dice la notificación. Pero, por desgracia, parece que hay algunos problemas con broswers WebKit. En Chrome (19.0.1084.56 en Win) la animación se rompe, mientras que en Safari (5.1.5 Win) me sale un informe de accidente en WebKit2WebProcess.exe ... Funciona perfectamente bien en Firefox 12,0.

De todos modos, así es cómo usted podría hacer:
.tn-box.tn-box-hoverpause:hover,
.tn-box.tn-box-hoverpause:hover .tn-progress{
animation-play-state: paused;

Hace falta decir que esto sólo funcionará en los navegadores que soporta CSS Animations! Usted necesitará algún tipo de reserva JS para otros navegadores.

Y eso es todo! Espero que les sea útil!

Demo: Ver                                                Archivos: Descargar

 

Efecto Navegación Circular

[caption id="attachment_196" align="aligncenter" width="480"]efecto navegacion circular efecto navegación circular[/caption]

Vamos a crear un interesante efecto hover para una navegación de imagen utilizando CSS3. La idea es ampliar una navegación circular con una flecha y hacer una burbuja con una miniatura. En nuestro ejemplo, se muestra la miniatura de la imagen anterior y posterior deslizante en torno a las flechas. El efecto se hace con transiciones CSS3.

El HTML

Para lograr este pequeño efecto CSS3  nuestra navegacion tendra una estructura como esta:
<div class="cn-nav">
<a href="#" class="cn-nav-prev">
<span>Previous</span>
<div style="background-image:url(../images/thumbs/1.jpg);"></div>
</a>
<a href="#" class="cn-nav-next">
<span>Next</span>
<div style="background-image:url(../images/thumbs/3.jpg);"></div>
</a>
</div>

En nuestra demostración vamos a hacer una plantilla de jQuery fuera de este y agregar dinámicamente las miniaturas de las imágenes anterior y posterior del slider. Sin embargo, para mostrar cómo el efecto de círculo en expansión se lleva a cabo, sólo les mostraremos esta parte:

El CSS

Vamos a ver ahora, como agregar el estilo para esta navegación

Asumiento que tenemos algun contenedor relativo alrededor, estableceremos los elementos del link con una posición absoluta. El alto y ancho sera de 70 pixeles, así no tendremos un area tan pequeña para el efecto hover.
cn-nav > a{
position: absolute;
top: 0px;
height: 70px;
width: 70px;
}
a.cn-nav-prev{
left: 0px;
}
a.cn-nav-next{
right: 0px;

El elemento span, que contendrá las flechas como una imagen de fondo tendrá una altura inicial y la anchura de 46 píxeles. Con el fin de hacer que se vea como un círculo, tenemos que establecer el radio de frontera (border radius) a la mitad de su anchura/altura. Con el truco margen del 50% y negativo, lo establecemos en el centro del elemento link. A continuación, se define la transición que tendrá todas las propiedades en cuenta con una duración de 400 ms y con ease, como la función de aceleración:
.cn-nav a span{
width: 46px;
height: 46px;
display: block;
text-indent: -9000px;
-moz-border-radius: 23px;
-webkit-border-radius: 23px;
border-radius: 23px;
cursor: pointer;
opacity: 0.9;
position: absolute;
top: 50%;
left: 50%;
background-size: 17px 25px;
margin: -23px 0 0 -23px;
-webkit-transition: all 0.4s ease;
-moz-transition: all 0.4s ease;
-o-transition: all 0.4s ease;
-ms-transition: all 0.4s ease;
transition: all 0.4s ease;
}

Los fondos de imagen de los spans (flecha derecha y la flecha izquierda):
cn-nav a.cn-nav-prev span{
background: #666 url(../images/prev.png) no-repeat center center;
}
.cn-nav a.cn-nav-next span{
background: #666 url(../images/next.png) no-repeat center center;

El div con el thumbail como imagen de fondo inicialmente va a tener una altura y anchura de 0 píxeles. Va a ser absoluta y también se coloca en el centro del elemento link. Radio Frontera (border radius) y los márgenes van a ser 0 inicialmente. La imagen de fondo llenará todo el elemento, por lo tanto, vamos a dar al fondo una anchura y la altura de 100%. La transición de este elemento será para todas las propiedades con una duración de 200 ms y con la función de ease-out para aliviar:
n>cn-nav a div{
width: 0px;
height: 0px;
position: absolute;
top: 50%;
left: 50%;
overflow: hidden;
background-size: 100% 100%;
background-position: center center;
background-repeat: no-repeat;
margin: 0px;
-moz-border-radius: 0px;
-webkit-border-radius: 0px;
border-radius: 0px;
-webkit-transition: all 0.2s ease-out;
-moz-transition: all 0.2s ease-out;
-o-transition: all 0.2s ease-out;
-ms-transition: all 0.2s ease-out;
transition: all 0.2s ease-out;

Ahora, vamos a definir cuáles son los elementos que se verían al hacer hover

El span se incrementará a 100 píxeles de anchura y altura y, en consecuencia, vamos a establecer los márgenes negativos y el radio de frontera (border radius) a la mitad de eso. Vamos a aumentar el tamaño de la imagen de fondo un poco. Además, vamos a cambiar el color de fondo y la opacidad:
cn-nav a:hover span{
width: 100px;
height: 100px;
-moz-border-radius: 50px;
-webkit-border-radius: 50px;
border-radius: 50px;
opacity: 0.6;
margin: -50px 0 0 -50px;
background-size: 22px 32px;
background-color:#a8872d;

Y, por último, el elemento div de la imagen se ampliará  un poco, a 90 píxeles, por lo que aún podemos ver el elemento span alrededor, aparece como una frontera (border) para el thumb. También vamos a aumentar el tamaño de fondo un poco y establecer los márgenes negativos y el radio de frontera (border radius) a la mitad del ancho del elemento:
cn-nav a:hover div{
width: 90px;
height: 90px;
background-size: 120% 120%;
margin: -45px 0 0 -45px;
-moz-border-radius: 45px;
-webkit-border-radius: 45px;
border-radius: 45px;

Y eso es todo! Un habil efecto sólo con CSS3! Echa un vistazo a la demo para ver cómo se ve integrado en un control deslizante con el que muestra la de miniatura anterior y el siguiente (con un navegador moderno, lo siento IE9 no está incluido)! Espero que hayan disfrutado esta pequeña guía y les sea útil.

Demo: Ver                                         Archivos: Descargar

 

viernes, 28 de septiembre de 2012

Mini-Tutorial Sass y Compass

sass-and-compass

En este pequeño artículo veremos algúnas características de Sass y Compass ¿qué son?, ¿para qué sirven?, ¿por qué debemos utilizar Sass y Compas?

Sass es un extención de CSS3 que le añade nuevas características como: variables, mixins (son como las funciones en programación pero no tienen valor de retorno), funciones, anidación, herencia de selectores y más. Y Compass es un conjunto de herramientas que apoyan al lenguaje Sass: ayuda con los prefijos, crear de manera fácil sprites, tipografías, extenciones y más.

A simple leer, tal vez a algunos no les parezca interesante y prefieran escribir CSS normal y sin complicarse la vida. Pero la curva de aprendizaje de este lenguaje y de las mayoría de las caracterísitcas es muy rápida y también nos va a ayudar mucho en nuestra productividad, al momento de diseñar. Y gracias a esto nos podemos, prácticamente, olvidar de los prefijos, nos ayuda con la compativilidad con los navegadores y muchas cosas!

¿Por qué un preprocesador para CSS?

Cualquier preprosesador para escribir CSS es mejor que escribir CSS directamente. CSS es un lenguaje de estilos no de programación, es cierto, pero esto no quiere decir que deba ser totalmente diferente a los lenguajes de programación. CSS debería incluir variables, anidacción, herencia (herencia de selectores). Por lo tanto, utilizar cualquier preprocesador de CSS como Sass, Stylus, Less es mejor que escribir CSS directamente.

¿Y las ventajas de Sass + Compass?

Ya he dicho algunas ventajas importantes, pero de todas formas haré un listado.

  • Variables

  • Mixins (son similares las funciones en programación)

  • Funciones

  • Anidación

  • Herencia de selectores

  • No más prefijos !

  • Simpliffar el uso de sprites

  • Tipografías

  • Extenciones (OMG Text, Stitch, HTML5 Boilerplate, Fancy-buttons, 960 Grid

  • CSS3 para IE6-9 (Gracias a la integración de CSS3 Pie. Gradientes, bordes redondeados, box-shadow, etc)

  • Reset (no tener que escribir los reset, completamente)

  • Integración con el framework blueprint

  • Operadores aritméricos "3px + 5px - $variable"

  • // Comentarios de una linea


Bla, bla, bla ¿y donde hay código?

Variables

Las variables en Sass se definen así:
$mi-color: blue;
$mi-borde: 1px solid red;

También se puede asignar variables a otras variables:
$mi-borde2: 1px $mi-color;

Herencia de selectores

Sí, podemos heredar los selectores y todas sus propiedades de una forma tan sencilla:
.bloque {
border: 1 px solid steelblue;
background-color: black;
border-radius: 8px;
}
// Heredamos
.bloque-principal {
@extend .bloque;
max-widht: 768px;
min-widht: 320px;
margin: 0 auto;
}

 

Mixins y funcionesnstrong>

En la programación las funciones o miembros (programación orientada a objetos) son fundamentales. Estas tienen varias características que veremos a continuación

Mixin sin parámetros.

Lenguaje SCSS:
@mixin blk {
background-color: blue;
width: 40px;
height: 40px;
}

#mi-blk1 {
@include blk;
}

Lenguaje CSS:
#mi-blk1 {
background-color: blue;
width: 40px;
height: 40px;
}

Resultado HTML:
blk1

Este último ejemplo de mixins y funciones en sass lo puedes ver funcionando en codepen.

Se quedan muchas cosas en el tintero, pero espero que te interese esto de Sass y Compass.

Recursos 

En Elementalcode estamos desarrollando un curso en video de Sass y Compass

Sass (web )

Compass (web del proyecto)

Diapositiva sobre sass y compass (en español)

Curso de Sass y Compass

Comparación entre sass y less (en inglés)

[[Este tutorial todavía no esta terminado :D]]

Efecto: Tipografía Interactiva con HTML5

[caption id="attachment_149" align="aligncenter" width="434"]tipografia interactiva tipografia interactiva[/caption]



Con HTML5 ganando popularidad, este tutorial describe lo que en realidad es sólo la punta del iceberg que es el diseño interactivo. En este tutorial voy a ir por el desarrollo de banners dinámicos, y generativa para darle a su sitio web que poco más de wow!

Si usted está interesado en leer más sobre la especificación de HTML 5, este es un gran recurso: DiveIntoHTML5 byMarkPilgrim

HTML

El formato HTML es muy sencillo, ya que vamos a hacer todo el trabajo con JavaScript, en el elemento canvas:
<canvas id="banner"></canvas>

JAVASCRIPT

Como era de esperar, sera JavaScript el que este haciendo todo el trabajo pesado aquí. Pero, ante todo, tendremos que comprobar si los usuarios están usando un navegador moderno que soporte el elemento canvas. Si no está apoyado, mostrará lo siguiente: una imagen estática. Vamos a usar Modernizr para comprobar esto.

Variables

Vamos a empezar definiendo algunas variables:
//Las palabras que se escribiran en el banner.
var keyword = "Bienvenid@s",
canvas, context,
bgCanvas, bgContext,
density = 13,
particles = [],
colour = '#fff0a4',
mouse = { x:0, y:0 },
isDrawing = false,
canvasW, canvasH;

Una pequeña explicación: La palabra clave aquí va a ser la palabra que desea mostrar en el banner. El canvas, es una variable que contendrá el elemento canvas de HTML. Este será asignado después. El contexto es lo que nos permite dibujar y escribir en el canvas. La variable de la densidad tiene el número de píxeles que queremos tener (tanto horizontal como verticalmente) entre cada partícula del banner. En la matriz de partículas se almacenan todas las partículas y sus respectivos ajustes. La variable color es el color que cada partícula tendrá. Por último, la variable isDrawing va a hacernos saber si estamos haciendo hover sobre el banner, y el canvasW y canvasH son la anchura del lienzo y la altura respectivamente.

Configurando el banner

El primer paso es llamar a la función de recarga, y también vamos a pedir a tamaño de la ventana:
this.initialize = function( canvas_id ) {
reload( canvas_id );
window.onresize = function(event) {
reload( canvas_id );

En la función de recarga se inicializa el canvas, el contexto y establecemos las medidas respectivas. Entonces llamamos las funciones prepare, setupParticles y draw.
var reload = function( canvas_id ) {
canvas = document.getElementById( canvas_id );
if ( !window.HTMLCanvasElement ) return false;
context = canvas.getContext('2d');
canvasW = window.innerWidth;
canvasH = 300;
canvas.width = canvasW;
canvas.height = canvasH;
bgCanvas = document.createElement('canvas');
bgContext = bgCanvas.getContext('2d');
bgCanvas.width = canvasW;
bgCanvas.height = canvasH;
prepare();
setupParticles();
draw();

Lo primero a destacar aquí, es que la función toma una variable de cadena, que debe coincidir con el ID de elemento en el código HTML. En nuestro caso, que pasaría "canvas-banner".

Como puedes ver, ambos, el
ncanvas de fondo y el canvas principal se establece en el mismo tamaño. Vamos a entrar aqui para ver por qué estamos utilizando dos elementos canvas en la siguiente sección.

El canvas de fondo

Ok, ahora voy dar algunas explicaciones: La razón por la cual tenemos dos canvas aquí, es más o menos el núcleo de estos banners. El canvas de fondo es donde se va a imprimir el texto o imágenes. Posteriormente, se analizará a través de los datos de la imagen (píxel por píxel) del canvas. Si nos encontramos con un píxel negro sabremos que nos hemos dibujado en este lugar, y por lo tanto, va a crear una partícula en su lugar.
var prepare = function() {
//Elegimos la funte y el tamaño
bgContext.font = "300px 'Jockey One'";
//Ahora llenamos la palabra clave en el texto del canvas
bgContext.fillText(keyword, ( canvasW / 2 ) - ( Math.round( bgContext.measureText(keyword).width/2 )) , 260 );

El comando fillText arriba, toma tres parámetros: el primero es el texto para escribir, la segunda y la tercera es la "x" y "y" respectivamente. A continuación, vamos a crear nuestras partículas. Esto pronto se elaborará en el canvas principal, pero por ahora, nos limitaremos a almacenarlos en nuestra gama de partículas:
var setupParticles = function() {
particles = [];
//Declaramos nuestras variables locales
var imageData, image_Data,
pixel,
width = 0,
i = 0,
slide = false;
//tomamos el image - data - from (0,0) a los bordes del canvas
imageData = bgContext.getImageData( 0, 0, canvasW, canvasH );
image_Data= imageData.data;
for( var height = 0; height ++i;
slide = ((i % 2) == 0);
width = 0;
if (slide == true) {
width += 6;
}
//Luego Iterar horizontalmente sobre los datos de imagen
for( width; width //Obtenemos el pixel situado en nuestra iteración actual.
pixel = image_Data[ ( ( width + ( height * canvasW )) * 4 ) - 1 ];
//El pixel se dibuja
if( pixel == 255 ) {
//añadimos coordenadas y colores a nuestro array de particulas.
particles.push({
colour : colour,
x : width,
y : height

Sí, eso es una gran parte del código, voy a ir a las partes difíciles ahora. En realidad, todo lo que estamos haciendo es recorrer cada pixel enésimo, donde n es el conjunto de la densidad en la salida. getImageData toma cuatro valores, el "X" y "Y" de la esquina superior izquierda, así como para la parte inferior derecha. En nuestro caso, le pasamos dos ceros a la izquierda (parte superior) y la anchura y altura del canvas, que son las coordenadas de la parte inferior derecha. Se devuelve una lista muy grande, que contiene los datos de color de cada píxel en el lienzo. ¿Por qué estamos multiplicando esta por cuatro? Debido a que dentro de esta lista, cada píxel está representado por cuatro valores, rojo, verde, azul y un valor de alfa. Por defecto, todos los ImageData del canvas contienen, es una larga lista de ceros - haciendo uso de este canvas (en nuestro caso, el uso fillText), los píxeles ahora contienen los datos correctos de color. Finalmente, han empujado a la coordenadas X e Y en un diccionario simple, que ahora vamos a usar para dibujar nuestro banner.

Dibujando el banner

En este sentido, finalmente, podemos unir todo. Con nuestra lista de posiciones "X" y "Y", almacenados en la matriz de partículas, podemos dibujar el banner.
var draw = function() {
context.clearRect( 0, 0, canvasW, canvasH );
var dx, dy, sqrDist,
scale = 1;
for ( var i = 0, len = particles.length; i ...
context.beginPath();
context.moveTo( x, y - height / 2 );
context.lineTo( x + width / 2, y - height / 4 );
context.lineTo( x + width / 2, y + height / 4 );
context.lineTo( x, y + height / 2 );
context.lineTo( x - width / 2, y + height / 4 );
context.lineTo( x - width / 2, y - height / 4 );
context.lineTo( x, y - height / 2 );
context.closePath();
context.fill();

nnvamos a recorrer a través de cada una de las partículas que previamente se almacenaron para establecer el color y para dibujar una forma en el punto (x, y). Con eso, tenemos un banner estático muy simple ... ahora viene la parte divertida, vamos a añadir un poco de interactividad.

añadiendo interactividad
var mouse = {x:0, y:0, o: false}

La variable del ratón se actualizará por dos funciones, una de seguimiento del movimiento, y un seguimiento de si el ratón ha dejado el elemento de tela:
var MouseMove = function( e ) {
mouse.x = e.offsetX || ( e.layerX - canvas.offsetLeft );
mouse.y = e.offsetY || ( e.layerY - canvas.offsetTop );
if( !isDrawing ) {
isDrawing = true;
drawTimeout = setTimeout( function() {
draw();
isDrawing = false;
}, 60);
}
};
var MouseOut = function(e) {
isDrawing = false;
clearTimeout( drawTimeout );
draw();

Con el fin de hacer que funcione, también es necesario unir los eventos de JavaScript a nuestro elemento canvas. Esto vendra dentro de la función de recarga.
canvas.addEventListener('mousemove', MouseMove, false);
canvas.addEventListener('mouseout', MouseOut, false);

Ahora que podemos realizar un seguimiento del ratón, tenemos que cambiar nuestra función de dibujo un poco, sobre la base de cómo queremos interactuar con el ratón.
var p = particles[i];
dx = p.x - mouse.x;
dy = p.y - mouse.y;
// Distancia del mouse a las particulas
sqrDist = Math.sqrt( dx * dx + dy * dy );
( isDrawing ) ? scale = Math.max( Math.min( 3 - ( sqrDist / 10 ), 10 ), 1 ) : scale = 1;
var width = density / scale - 4,
height = density,
x = p.x,
y = p.y;
context.fillStyle = p.colour;

Por encima, se calcula la distancia entre la partícula de corriente y el ratón. A continuación, se actualiza la escala variable a caer entre 1 (es decir, sin escala) y la distancia entre el ratón y la partícula (pero no mayor que 10). Todo lo que queda ahora, es decirle al canvas que dibuje a intervalos regulares, en lugar de una sola vez al comienzo. para no hacer esto demasiado complicado yo sólo voy a mantenerlo simple y uso setTimeouts cuando el usuario hace hover sobre el banner - pero si usted está interesado en buscar más en las animaciones del canvas, la función que se busca es requestAnimationFrame

Vamos a agregar algun color

Tenemos un banner limpio de trabajo, por qué no añadir un poco de color. Afortunadamente, ya hemos hecho la mayor parte del trabajo aquí, sólo tenemos que cambiar 2 líneas.
//Una variable para guardar cada uno de los colores que vamos a usar
var colors = ['#fff0a4', '#ffe98f', '#ffcf52', '#fbad1d', '#c48d1c'];
//Cuando estamos creando la particula, asignamos un color para esta lista
color: colors[Math.floor(Math.random() * colors.length)],

Y ahí lo tenemos! Una banner único, generativo y colorido, hecho especialmente para usted. Eche un vistazo a través de las versiones parciales del demo para ver algunos ejemplos de otros, que usted puede hacer.

Resultado: Ver                                     Archivos: Descargar

 

jueves, 27 de septiembre de 2012

Grabar el escritorio en Linux

grabar el escritorio con recordmydesktop

En Linux hay muchas formas de grabar el escritorio, pero estos programas no son de tan buena calidad como por ejemplo Camtasia Studio que es muy bueno pero no esta para Linux. En cambio si hay otros como: XVidcap, FFmpeg, Kdenlive (utiliza recordmydesktop), RecordMyDesktop, Kazam y otros!

En PCs más antiguos RecordMyDesktop se hace muy pesado grabar el escritorio, por lo que les recomiendo XVidcap ya que es mas ligero, solo que a veces cuesta hacerlo funcionar. Pero en este arítulo nos concentraremos en utilizar RecordMyDesktop desde la linea de comandos pero hay unos trucos para mejor el rendimiento al grabar con RecordMyDesktop. También existen interfaces gráficas para RecordMyDesktop: gtk-recordmydesktopqt-recordmydesktop.

 

Algunos casos útiles


Si necesitamos grabar el escritorio desde cierto punto en nuestro monitor, por ejemplo, queremos que la captura de pantalla comience en el pixel 200 horizontal y en el pixel 100 vertical de nuestro monitor; y también queremos que nuestro video tenga un tamaño de resolución que nosotros definamos. Podemos utilizar:
recordmydesktop -x 200 -y 100 --width 1280 --height 720

RecordMyDesktop por defecto convierte el video al formato ogv (Vorbis + Theora) o también conocido como formato ogg. Pero luego con algún otro programa se puede convertir el video a algún otro tipo de formato si se desea. Y si a RecordMyDesktop no se le pasa el nombre del archivo que queremos guardar nuestro video, éste por defecto le coloca out.ogv .

Las opciones que le pasamos a recordmydesktop significan:

-x se le pasa el pixel del eje x (horizontal) desde donde empieza a grabar el video en la pantalla, su valor mínimo es 1 y el valor máximo depende ya de la resolución del video.
-y se le pasa el pixel del eje y (vertical) desde donde empieza a grabar el video en la pantalla, su valor mínimo es 1 y el valor máximo depende de la resolución del video.
--width se le pasa la resolución del ancho del video
--height se le pasa la resolución del alto del video

Yo en mi caso le di --width 1280 --height 720 porque quise que mis videos sean HD720p (el tamaño estándar y común de los videos HD). Pero puedes poner los valores que quieras pero tomando en cuenta tu la resolución de tu pantalla.

 

En el caso de que queramos grabar el video a resolución de nuestra propia pantalla, no es necesario darle a RecordMyDesktop ningúna opción. Podemos utilizar:
recordmydesktop

 

En el caso de que nosotros queramos que la grabación siga el puntero del mouse, darle un framerate (numero de capturas de pantallas por segundo) y además darle un nombre a nuestro video capturado. Podemos utilizar:
recordmydesktop --width 640 --height 480 --follow-mouse --fps 1 -o miVideo.ogv

Las nuevas opciones que le pasamos a recordmydesktop significan:


nstyle="color: #3366ff;">--follow-mouse con este parámetro le decimos a recordmydesktop que siga el mouse para grabar el escritorio

--fps 1 le decimos el número de frames por segundo (el número de capturas por segundo) que tenga nuestro video. Esto es útil en el caso de que nuestro PC no grabe bien los videos ya que el framerate por defecto puede ser muy alto para algunos PCs.

-o especificamos la salida de nuestro video (el nombre de nuestro video) en mi caso le puse miVideo.ogv


También existen otras opciones interesantes, como:

--no-sound en el caso de que no queramos que el video tenga sonido

 

Algunos trucos ;-)


A veces el sonido no nos funciona muy bien para grabar, lo que podemos hacer es subirle el volumen al microfono desde alsamixer. (en el caso de que en recordmydesktop estés utilizando alsa, lo puedes verificar con recordmydesktop --print-config). Puedes subir el volumen al microfono tecleando alsamixer y luego presionar F4, te vas a capture y ahí le puedes subir y bajar el volumen al micrófono. También aprovecha de comprobar de que input source este la opción rear mic, a veces al estar mal configurado esto da algunos problemas.

Si es que no se escucha muy bien la voz en tus videos, lo que puedes hacer es convertir el audio a mono y de paso pasar el video a H264 para que pese menos. Esto lo puedes hacer con ffmpeg (debes instalarlo).
ffmpeg -i video.avi -ac 1 -vcodec libx264 video-mono.avi

-i le pasamos nuestro video

-ac el número de canales de audio 1 (si queremos fusionar el audio derecho con el izquierdo)

-vcodec libx264 este es el codec de video para que pese menos (sin perdida visible de calidad)

video-mono.avi  simplemente es el nuevo nombre de nuestro video cuando ya este convertido

 

Eso es todo amigos de furycode.com ;-)