viernes, 19 de marzo de 2010

Cómo tomar screenshots en Java

0 comentarios
Aquí les dejo un pequeño truco (curioso, por cierto) en el cual se explica cómo tomar una captura de pantalla en Java desde un código bastante corto.

En esta ocasión lo haremos sin interfaz gráfica, el resultado será el mismo.

Lo primero: importamos las clases que ocuparemos:


import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import javax.imageio.ImageIO;

... y ahora sí, vamos con la clase:

public class ScreenshotApplication
{
    public static void main(String []args)
    {
        try
        {



            //Obtenemos un "ayudante"
Robot robot = new Robot();

            //Con lo siguiente sabremos qué resolución tiene nuestra pantalla
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();


            //Creamos un BufferedImage para poderlo manejar en memoria
BufferedImage bi = robot.createScreenCapture(new Rectangle(d));




            /*



             * La siguiente técnica consiste en darle un nombre de archivo



             * a partir de la hora y fecha del sistema, para poder generar



             * archivos cuyos nombres no se repitan.



             */
String filename = "/CualquierRuta/" + Calendar.getInstance().getTime() + ".jpg";




            /*
             * Utilizamos el método write, al que le pasamos los siguientes



             * parámetros:



             *



             * 1.- Cualquier objeto de tipo Buffer, en este caso un ImageBuffer,



             *     en pocas palabras, qué va a ser guardado en el archivo.



             * 2.- El tipo de archivo



             * 3.- La ruta donde será almacenada nuestra imágen en archivo.



             */
ImageIO.write(bi, "jpg", new File(filename));
            System.out.println("¡Screenshot tomada!");

        }
        catch (AWTException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

Algunos procesos levantarán excepciones (en caso de que exista algún error), por lo que es necesario "cacharlos" con sus respectivos try-catch. Para una mejor comprensión del manejo de excepciones visiten este enlace.

Podrán ver un resultado como el siguiente:

miércoles, 17 de marzo de 2010

Tips para crear un buen sistema (Desktop o Web)

0 comentarios
¡Qué tal lectores!

Durante la vida del programador vienen proyectos, otros se van, otros se quedan una muy buena temporada sacándonos canas verdes y en otras ocasiones simplemente no viene ni uno solo (jaja si, malas rachas).

Pero cuando tenemos listos los requerimientos del sistema, en muchos casos no sabemos ni cómo empezar ni mucho menos cómo quedará nuestro sistema. Para esto les dejaré algunos consejos que les podrían servir de algo:

1.- Plasma tus ideas. Recuerda que la mente es bastante traicionera y que todo puede quedar en el olvido. Por otro lado, el tener por escrito los requerimientos del sistema te ayudará a descartar las partes indispensables de las que no lo son.



2.- Todo por escrito. Cuando se trata de un sistema en el que va de por medio un compromiso con algún cliente, debes dejar bien claro lo que tu sistema hace y lo que no hace, ya que en muchas ocasiones el cliente suele ser bastante tirano inteligente, aprovechando lo que no se dijo para exigirte más y más. Desde luego que entre más te exige, más debe pagar... ya que estaría estipulado previamente en un documento legal.



3.- Utiliza una Programación Orientado a Objetos.- El utilizar esta técnica te va ayudar a tener tu código muy bien organizado, ya que podrás trasladar "la vida real" a "la vida programática", así como aprovechar las ventajas de herencia, polimorfismo y demás características de esta técnica [ver más sobre POO].



4.- Utiliza diagramas.- Organizar tu proyecto con diagramas UML, o Diagramas E-R (Entidad-Relación) te servirá de apoyo para tener mucho más clara la forma en que desarrollaremos nuestro sistema.



5.- Trata de no empezar desde cero. Si ya existen cosas hechas... ¿Para qué volverlas a hacer? El uso de librerías (ya probadas cientos de veces previamente por desarrolladores expertos) te servirá para hacer las cosas de una manera más rápido, pero ojo con no dejar que las cosas las hagan por ti, simplemente te servirá de apoyo. 


6.- Elige un buen lenguaje de programación. Tomando en cuenta que programar Orientado a Objetos, debes dar un segundo buen paso: elegir un lenguaje que los soporte (¿demasiado obvio no?). Existe una gran gama de lenguajes bastante buenos, cada uno con características especiales y que hacen muy diferentes unos de otros (p. ej. que funcionen bajo un sistema operativo en especial).




7.- Elige bien el IDE que utilizarás. Cuando tengas todo listo y decidas codificar, tómate un tiempo para pensar qué IDE es el que más se acomoda a tus necesidades. Existe una gran variedad de IDE's que te facilitarán la codificación: con su herramienta de autocompletado de código, algún plug-in para el diseño de interfaces gráficas (web o desktop), la posibilidad de agregar código personalizado (templates) etcétera.



8.- Procura usar software libre. Sabemos que es bastante difícil utilizar software privativo, es decir, que para poder desarrollar nuestro sistema debemos utilizar software cuya empresa creadora te vende "el permiso para usarlo". Por eso trata de encontrar software libre: que no te "ate" ni te obligue a pagar, porque recuerda algo: si utilizas software privativo debes pagar las licencias, de otro modo podrías tener problemas legales.

Bueno, he aquí unos cuantos tips, podrían ser más pero son los que considero importantes y que no se deben dejar pasar, espero les haya servido esta entrada. ¡Saludos!

viernes, 12 de marzo de 2010

Devede, un excelente conversor de video

0 comentarios
¿Alguna vez han tenido la necesidad de grabar algún archivo de video y convertirlo en DVD? En alguna ocasión tuve esa necesidad y no conocía ningún programa para Linux que me sacara de ese apuro; buscando en San Google me topé con un programa llamado Devede.



Devede es un programa que permite crear DVD's a partir de casi cualquier archivo de video. Para ser más preciso, convierte cualquier tipo reproducible en MPlayer.

Para poder ser instalado, es necesario tener instaladas algunas dependencias:

  • Mplayer
  • Mencoder
  • DVDAuthor
  • VCDImager
  • MKisofs 
  • Python
  • PyGTK y
  • PyGlade

Para instalar Devede, basta con abrir la terminal y echarle un vistazo a los repositorios escribiendo:
sudo aptitude install devede.


Definitivamente recomiendo este programa, pueden encontrar mas información visitando su página oficial.

jueves, 11 de marzo de 2010

El porque ser un Diseñador Freelance es riesgoso

0 comentarios

Buscando por la net algo sobre diseño web, me encontre un artículo que me llamó mucho la atención puesto que va dirigido a todas aquellas personas que se guían por el camino del freelance (Independiente), aquellos que quieren empezar una empresa, otros que ya la empezamos, etc.

Esto es para ti lector que quieres jugartela en el mundo del diseño web, y recuerden algo que siempre he dicho, aquí en México siempre ha habido crisis, al igual que siempre ha habido trabajo, para quien quiere trabajar, tenganlo siempre muy en cuenta. Espero les guste este artículo y les sirva de referencia futura.


El porqué ser un Diseñador Freelance es riesgoso: 7 estrategias de negocio para ayudarte a triunfar.


uno de los mayores problemas que se presentan al ser un diseñador freelance es que el trabajo puede ser todo
un reto. no importa que tan clara sea la tarea y la direccion del cliente, hay trampas que evitar. Aqui se muestran 7 sugerencias para ayudar a tu negocio freelance triunfe.

1.- Redacta un contrato


Antes de que empiezes a trabajar, es algo critico el redactar un contrato que delimite el producto a ser entregado, así como tambien la cantidad de revisiones que el cliente obtendra. Y plasmar que no será incluido en tus servicios esto cubre todas tus bases. Pues que no quieres estar atrapado en una situacion donde haras incontables revisiones y ademas sin recibir un pago por ello.


2.- Confirma el formato a ser entregado

Es crucial para saber cómo un cliente quiere que el diseño sea entregado. Querrás saber la aplicación en la que el diseño está siendo utilizado y por lo tanto asegúrarte que entregas un formato que funcione para el CMS (CMS o no). Esto también debe ser especificado en el contrato.

3.- Garantiza que te paguen

Cuando eres independiente(freelancer) no tendras la seguridad de tener una gran firma de diseño respaldandote y manejando tus cuentas. Una cosa inteligente que hacer es poner una marca de agua en el trabajo o entregarlo en una resolucion que es muy baja como para ser usada por el cliente. Una vez que el trabajo es pagado en su totalidad puedes entregar el trabajo en su resolucion total sin marca de agua.

4.- Puede que tengas que empezar desde abajo.

Siempre existe la tentacion de ser independiente,trabajar las horas que quieras y tomar los proyectos que quieras ¿cierto? Bien, puedes encontrar que no es del todo asi, especialmente en las etapas iniciales. Puede que tengas que aceptar cualquier trabajo que se te cruze en tu camino, hasta que te puedas vender y obtener una lista de clientes que te daran suficiente trabajo para apoyarte a ti y a tu nuevo trabajo.

5.- Establece una Política de Arbitraje.

Si hay una discrepancia en la cantidad debida o sobre el contrato inicial que elaboró con el cliente, necesitas asegurarte de que están legalmente cubiertas. Al redactar el contrato debes asegurarte de que el cliente lo firmó y que te devuelve la copia original y que comprende la obligación de arbitraje para poner fin a cualquier controversia. Esto será crucial si tienes que llevarlos a la corte de reclamos menores. Siempre sé lo más específico posible.

6.- Gasta el dinero solo en caso necesario.



No puedes tener todo el equipo mas moderno como lo harias en una empresa de diseño. Compra de computadoras,
software, lapices, acuarelas, son costos muy marcados en tu nuevo negocio, manten tus gastos bajos al mantener
tu laptop unos pocos meses más, y busca descuentos en software.





7.-Nombres importantes.



Mantenga un archivo detallado de direcciones para estar al día de sus contactos profesionales. Tus contactos son tu activo más importante. Desearás estar en contacto con tus clientes, incluso después de terminado un trabajo. Envíando actualizaciones por email, boletines de noticias o promociones pueden ser una buena manera de mantenerse en contacto.

Freelancing es un camino difícil. No todo el mundo es adecuado para un estilo de vida como éste. Se necesita cerebro, bolas, y el ingenio para permanecer fuera del agua. Pero esperamos que estos siete consejos te darán una ventaja para tener éxito.


leer el articulo original



martes, 9 de marzo de 2010

Cómo crear una memoria USB a partir de un simple cable

0 comentarios
Curioseando por la Web, me topé con un artículo bastante interesante (y bastante gracioso, cabe mencionar) el cual me impresionó bastante. ¡Qué cosas no se pueden hacer el día de hoy!

Resulta que "Windell", como se hace llamar el usuario, publicó el siguiente artículo, es bastante fácil de elaborar, tanto que un compañero del trabajo ya lo hizo y le quedó a la perfección.


    


En el artículo vienen los pasos detallados y podrán acceder al sitio en el siguiente enlace.

http://www.evilmadscientist.com/article.php/usbkey

Python ¿Ya lo conocían?

0 comentarios
¡Qué tal lectores!

Esta entrada está dedicada para hablar de un buen lenguaje de programación: Python.





Python es un lenguaje de programación  interpretado; esto quiere decir que está diseñado para que un intérprete (vía terminal o consola) esté en la espera de recibir alguna orden, tal y como lo vemos en MS-DOS, en el Shell de Linux y en la terminal de Mac.

A su vez, este lenguaje cumple con los requisitos del paradigma de Programación Orientado a Objetos, logrando así una programación bastante sencilla y completa (para quienes están acostumbrados a POO). Otra característica importante de este lenguaje es que omite la tipificación de datos, (sí, dije OMITE), así que para quienes esto de la tipificación es un problema, he aquí una solución: por ejemplo, que la variable "x" tome el valor de "Hola Python", pero durante la ejecución del programa ésta pueda obtener otro valor, ya sea entero, doble, etcétera. Fascinante ¿no?.

Entre otras características, existe también la eliminación de las llaves del cuerpo de algún subproceso ({, }) ya que se maneja todo por indentación, es decir, dejar indentación por cada sub-bloque. Respetando cada indentación, el código puede ser interpretado correctamente.

Para más información acerca de Python o ver su documentación, visiten su página oficial.

sábado, 6 de marzo de 2010

Nueva cara de Ubuntu 10.04

0 comentarios
En vísperas del lanzamiento de Ubuntu 10.04 LTS, me he encontrado (gracias a los consejos de mi amigo Luis Montiel [www.luismontiel.com])que Ubuntu cambiará de marca, es decir, tendrá un nuevo look (si quieres ver el artículo original haz click aquí).

Dicha presentación tendrá un nuevo splash, el logotipo de ubuntu tendrá un nuevo diseño, al estilo Canonical... todo por su nueva ideología "Light", por lo visto están adoptando un nuevo concepto, la ligereza.

Veamos algunas imágenes.




Nuevo logo.


A su vez, tendrá nuevos temas (se rumora acerca de GNOME 3).






Pues bien, es sólo cuestión de esperar a que sea liberado en el mes de Abril, que podría apostar que será bien recibido.