Uso de async/await en C#, parte 3: Cancelar una tarea

Vimos como notificar al usuario de que la operación está corriendo. Pero, ¿qué pasa si el usuario desea cancelar la operación? ¿Qué si queremos cancelarla automáticamente por timeout luego de un tiempo?

Es posible cancelar una tarea, e incluso .NET nos provee metodos para facilitarnos la cancelación por timeout. El codigo se ensucia un poco, pero si necesitamos cancelar, no hay mas remedio.

Esta guia también esta disponible en forma de video, si asi lo preferís:

Continuar leyendo “Uso de async/await en C#, parte 3: Cancelar una tarea”

Uso de async/await en C#, parte 2: Reportar Progreso

En el post anterior vimos como ejecutar tareas en un hilo separado al de la GUI. Si bien esto evita que se bloquee la interfaz, el problema es que el usuario no sabe si la operación esta corriendo, se bloqueo, se finalizo… etc.

Esta guia también esta disponible en forma de video, si asi lo preferís:

Entonces, uando una operación se hace muy larga, se vuelve necesario notificar al usuario del estado. Para esto tenemos la interfaz IProgress que, por supuesto, también es genérica.
Continuar leyendo “Uso de async/await en C#, parte 2: Reportar Progreso”

Uso de async/await en C#

Introducción

A partir de C# 4.5, se incorporaron al lenguaje las palabras clave async y await, que facilitan la escritura de código asíncrono. Esto no significa que con solo poner estas palabras el código se ejecutará de manera asíncrona. Es un poco mas complejo, y lo veremos en este post.

Esta guia también esta disponible en forma de video, si asi lo preferís:

La forma antigua

Los que hemos trabajado con Winforms (y tambien los programadores Java) sabemos del gran problema de llamar a operaciones largas desde el hilo principal. Como este es el hilo donde corre la UI, si llamamos a una operación larga se bloquea y no es posible ni siquiera mover la ventana.
Continuar leyendo “Uso de async/await en C#”

Solución al problema de componentes faltantes en Eagle

Hoy me volvió a pasar que, al intentar agregar componentes en la vista de esquemático, no había ningún componente de las librerías estándar de Eagle. Este problema suele presentarse a veces, luego de actualizar Eagle.

La solución es muy sencilla. Simplemente hay que ir al panel de control de Eagle, subir hasta donde dice Libraries y hacer clic derecho y luego “Use All”.

Les dejo un video del paso a paso:

Fabricación de Circuitos Impresos por transferencia de toner sobre vinilo

Les dejo este video, donde explico paso a paso como fabricar circuitos impresos caseros utilizando vinilo, del que se usa para ploteos, como medio para transferir la imagen. Además, se explica como utilizar una solución de acido clorhídrico (muriático) y agua oxigenada para atacar el cobre. Pueden utilizar cloruro férrico si asi lo desean

Tutoriales de Eagle 8 en español

Les dejo unos videos en los que vengo trabajando hace un tiempo. Es una serie de videotutoriales sobre Eagle para principiantes. Se empieza desde cero y vamos subiendo la complejidad en cada video.

Como obtener el número de serie de un disco rígido en Linux sin hdparm

Tenía que testear unos discos con badblocks. Descubrí que el instalador de Debian tiene este programa, así que podés testear tus discos. Comencé a testear uno de los discos y empezó a fallar. Necesitaba sacar el número de serie para saber cual cambiar. Normalmente con hdparm se puede obtener este dato, pero no esta en el instalador de Debian.
Gracias a esta pregunta en Stackoverflow, obtuve la respuesta:

/sbin/udevadm info --query=property --name=sda

Moddeando el HTC Sensation de Personal

El otro dia compre un lindo HTC Sensation en Personal pero no me aguante, y ni bien terminó de cargar la bateria le instale una ROM nueva, ya que no me gustaba para nada la que viene con el equipo. La animacion de boot de Personal es irritante, con su musiquita pedorra. Y la cantidad de apps preinstaladas por personal da miedo. Y ademas es Android 2.3.x. Estamos grandes, este equipo funciona perfectamente con Android 4.0 (tambien probe CM10, Jellybean/4.1 y funciona perfecto excepto algunos detalles de la camara).

En mi caso instalé Android Revolution HD 6.7.2, que es Android 4.0.3 (Ice Cream Sandwich) + Sense UI 3.6 + Beats Audio.
Continuar leyendo “Moddeando el HTC Sensation de Personal”

Cambiar el tamaño de los agujeros en una PCB en Eagle

Muchas veces habremos notado, a la hora de fabricar una PCB con Eagle, que el tamaño del agujero es demasiado grande para nuestro componente. Además, si hacemos el trabajo manualmente, probablemente en el tercer o cuarto agujero pensemos ¿no sería mas facil si el agujero fuera mas chico, asi se centraria mejor mi herramienta?

En el caso de tener un taladro CNC, o de enviar la placa a fabricar, simplemente debemos dejar marcada la casilla “Fill holes”, lo que producira una mascara sin los agujeros marcados. Esto sirve perfectamente para un taladro CNC pero es una pesadilla para trabajo manual.

Para hacerlo manualmente, deberiamos cambiar manualmente todos los agujeros de las librerias. Un trabjo tedioso, y que ademas provocaría que, si algún dia deseamos enviar la placa a fabricación, la harán con un drill size muy pequeño.

Propondremos entonces 2 soluciones para este problema. Una mediante el uso de círculos en una capa, que cubren los agujeros; y la otra mediante el procesador CAM, que modificará la salida.
Continuar leyendo “Cambiar el tamaño de los agujeros en una PCB en Eagle”