Downloading review…
Ok. Es bastante bueno…
La imagen de arriba es una sección del wallpaper con el que viene Windows 7RC por default, un pez beta (como el estado del release, beta.) en una fondo azul todo loco y enorme.
Bueno a lo que nos truje. Windows 7… creo que… bueno, no creo… si es bueno, tengo que admitirlo, es bastante bueno, es el vista que se supone debió ser. le faltan cosas como a todos los sistemas pero tengo que decir que no está nada nada mal.
Que tiene de nuevo?
Bueno yo siento que es más rápido y estable que vista, en general el “plug and play” (la mugre esa para conectarle cosas a la compu, mouses, camaras, celulares, etc. funciona mucho mejor de entrada reconoce bien cuando le conectas algo, busca el driver en la maquina y si no lo encuentra lo busca en la red y si aun asi no, busca algun equivalente que sirva, pero si no encuentra el driver bueno te avisa de una manera mucho más discreta (a eso iré despues)
Chequen:
Esa imagen es el device central, y te pone TOOOODO lo que esta conectado a la compu o todo lo que puede que este funcionando. Ahora chequen, ven abajo que hay un error, pues hasta ahi se queda ya no vuelve a molestar a menos que:
Chequensesta:
Esa es la barra de tareas. bueno la parte de la derecha, hora, volumen, etc PERO lo chido es:
Que los iconos no usados estan en un drawer inferior que puedes hacer drag and drop ahi mismo!!!
Ven la banderita que esta en la barra?
Es un icono que indica que hay cosas por hacerle al sistema, es decir, posibles problemas, pero como a ti no te importan pues windows solo se va a quedar asi, mostrandote que hay un pex, donde? pues si a ti no te importa a windows tampoco y no te molesta mas que con eso.
Si les molesta el icono lo pueden subir al drawer y se va.
Si le dan clic solo les dice que hay por hacer, recuerdan el mensaje de que no se pudo instalar algo, pues aqui aparece tambien.
ahora lo bueno:
La taskbar, que es un clon medio bizarro de la dockbar de mac. salvo que funciona mas como… bueno, siento que jala mejor.
Ahi ponen programas que usan frecuentemente y si estan corriendo se ven con un fondo cristalino, si hay mas de una ventana del mismo programa se ven como varios cristalitos encimados (vean del de messenger) un sobre un icono sin fondo de cristal abre el programa, un clic sobre un icono con fondo de cristal los lleva a la aplicación. sencillo y concreto, quieren abrir otra instancia del programa entonces denle clic derecho y vean las opciones.
Tiene muchas mas monerias que en su conjunto hacen de windows 7 algo bastante bueno.
Intentenlo a parte es gratis de aqui a junio del otro año (bueno la versión RC que es como un final beta)
Unos links:
http://windows.microsoft.com/en-US/windows7/products/home?os=win7
http://www.microsoft.com/windows/windows-7/download.aspx
Download complete.
Downloading content…
Hace tiempo empecé a trabajar en una “agile shop” (una empresa de desarrollo de software usando metodologías ágiles), bueno en realidad no es la primera vez que veo algo así, cuando fuí a Estados Unidos me tocó trabajar en un ambiente ágil pero a pesar de que eran muy agiles y todo no le ponian nombre a su metodología. Aqui tiene nombre y ese es… pom pom pooom… SCRUM.
SCRUM es un sabor de las afamadas metodologias ágiles, de que se trata todo esto? bueno es relativamente “fácil” de explicar, y digo “fácil” por que creanme que es mucho mas sencillo que CMMI o RUP (metodologias no agiles)
Pongamos una pequeña pausa, ¿ok?
¿Qué es una metodología ágil?
Metodología: Forma de hacer algo, es un proceso o una guía de pasos a seguir.
Ágil: Adaptable, rápido, flexible, etc.
Metodología ágil: Es una forma adaptable, rápida y flexible de hacer las cosas. En el desarrollo de software se le conoce por que es una forma de desarrollar sistemas adaptandote rápidamente a los cambios y entregando continuamente un producto funcional.
OYEEEEE… espera… entonces ¿como hacian las cosas antes? ¿Como era el mundo “no ágil”?
Bueno. De entrada la mayor parte del mundo sigue sin ser ágil, así que en vez de decir como era el mundo es un como es el mundo.
El mundo es horrible. (pero eso ya lo sabian)
Hace tiempo para garantizar la seguridad (y por seguridad me refiero mas a “certeza”) en el desarrollo de software se crearon procesos que permitian a la gente entender como se hacia un sistema.
¿Dudas?
Yo tambien tengo muchas.
Sobre todo una: ¿Como es que alguien mas sabe cuanto me tardo en hacer algo? son gurus? shamanes? brujos?
Bueno no, son CONSULTORES CAPACITADOS CERTIFICADOS, RESPALDADOS POR FAMA INTERNACIONAL Y QUE GANAN 10 VECES LO QUE CUALQUIER DESARROLLADOR MORTAL. woooooooooooooooooooooooooooooooooow
En fin, el proceso funciona, creanlo o no.
Y funciona por que lo hemos hecho funcionar, ya sabemos que esperar, que vamos a tener que trabajar de más, que van a estimar de menos, que si firmamos que vamos a hacer algo, solo vamos a hacer eso, y si queda mal, si no es lo que el cliente queria, ni modo, por que el firma que se va a seguir ese proceso y está de acuerdo con el. Este proceso le da certeza al desarrollo a cambio de hacerlo inflexible ya que si el cliente necesita algo extra, ni modo, tendrá que ser hasta el final, por que hay un plan y hay que hay que seguirlo.
Es un mundo horrible (y ahora lo acaban de comprobar)
Bueno bueno bueno. ¿Pero que propones?
Las metodologias agiles por supuesto, de eso se trata este post (bueno la segunda mitad del mismo)
Las metodologias agiles proponen algo distinto y mucho mas arriesgado (por eso no son tan populares) pero mucho mas eficientes cuando se quiere hacer algo nuevo.
La idea principal es.
Y aqui empieza la diversión. Ahora ya tenemos algo de prioridad suprema. vamos con los desarrolladores y les decimos que es lo que el cliente quiere, todo mundo sabe que eso no es TOOOODO lo que el cliente quiere y que esa petición es solo un pedacito de un todo que asusta a cualquiera, pero. El objetivo a corto plazo es: Hacer lo que el cliente pide ahora.
Aqui es realmente cuando el proceso inicia:
No se si ven la diferencia? En una metodologia agil no se adivina cuanto tarda en hacerse un sistema, eso se sabe siempre, lo que se adivina es que tanto se puede hacer en X tiempo y una vez que algo se termina se valida se implementa y se entrega bonito y acabado.
Suena como un mundo ideal ¿noooooo? pues no lo es. “not quite” es mejor pero no es ideal.
Requiere de mucho control para el descontrol y de muchas prácticas de programación locas que puede que no a todos les guste. Test Driven Development (Con este excelente libro: Test Driven By Example), Pair programming, Continous Integration (chequen hudson por ejemplo), etc.
Ahora vamos a un ejemplo real, ¿va?
La idea escencialmente es la misma de arriba, todos los requerimentos del usuario son escritos en historias de usuario que son los pequeños bloques de principio a fin que hacen algun tipo de funcionalidad, por ejemplo, el usuario quiere logearse al sistema, el usuario quiere poder agregar otro usuario, el usuario quiere poder borrar un usuario. Ahi vieron 3 historias distintas, todas son una funcionalidad especifica.
Ahora esas historias se estiman, la estimación no la hace un gurú la hace el equipo. Como? simple: primero se le muestran las historias y el equipo por concenso dice cual es la más fácil de hacer. Esa será nuestra historia de dificultad 1. ahora se va por las historias y se pregunta: Esta historia, ¿Cuantas veces más dificil es que la historia de dificultad 1?. Si es el doble tiene una dificultad de 2, si es 4 veces mas complicada es un 4, etc… lo que se recomienda es que se usen valores de 1,2,4 y 8… si algo es más grande que eso tal vez valga la pena dividir la historia en pedazos mas pequeños.
Entre los bloques sean mas pequeños no solo son más fáciles de desarrollar sino que tambien son más fáciles de estimar.
Ahora el equipo empieza a trabajar…
Toman un estimado “a la macha” de cuanto pueden hacer y empiezan…
Dia a dia, se hace una micro junta (Que se le conoce como SCRUM) de maximo 10 minutos donde todos los desarrolladores dicen:
De esa manera todo mundo está enterado de lo que está pasando.
Al final de los 15 dias lo que haya terminado el equipo se suma. y se obtiene un numero de historias terminadas, pero sobre todo de puntos de dificultad terminados. a eso se le llama: VELOCIDAD.
Asi que digamos que un equipo logra hacer 50 puntos. entonces podemos deducir que mas o menos haran eso consistentemente cada 15 dias. Si un sistema tiene 1500 puntos en total tomaria: 30 iteraciones de 15 dias para terminarse o bien: 450 dias.
Eso si no cambiara nada PEEEERO
Aqui empieza lo mágico de las metodologías agiles.
Cada vez que se termina un “sprint” (periodo de 15 dias, aunque algunos equipos usan 20 o 10 dias) se presenta el producto “terminado” y se pregunta si es lo que se esperaba, si no, se agregan los cambios al siguiente sprint, si si lo es entonces continuamos, PEEERO, continuamos con lo que nos diga el cliente, y como va a tener estimados de las historias de su sistema el cliente ahora va a elegir los siguientes 50 puntos que quiere que se hagan, obviamente es una desición consensual ya que el equipo ayuda al cliente a elegir aquello que le de valor a su negocio y que le permita al equipo desarrollar más rápido el sistema.
Y si el cliente cambia de opinion o algo no le gusta no se pierde mas que 15 dias de trabajo. Digamos que al cliente le gustaria mejor que se puedan hacer compras online a que se puedan registrar a una mailing list, no problem, eso se agrega en el siguiente sprint. Si eso implica dejar fuera unas historias pues así será, si requiere crear nuevas pues se hace y se estiman las nuevas historias.
En si eso son las metodologias agiles, y en el ejemplo anterior SCRUM.
Ahora bien, yo creo que no son tan usadas no por que sean malas o no funcionen, estas metodologias realmente funcionan, las grandes empresas van migrando poco a poco a estas metodologias por que saben que entregan resultados, sin embargo aun no se adoptan completamente. Por que?
Yo creo sinceramente que la industria detras de las “no agiles” es muy fuerte y hay inversiones muy fuertes en ellas, se crean certificaciones millonarias para que las empresas cumplan con standares que les permitan minimizar riesgos y darles un titulo de “empresa certificada con CMMI level 3” que te asegura cierto control.
Eso aun falta un poco aqui. ADEMAS de que la cultura agil desmotiva los esfuerzos de certificar a la gente ya que no deberia ser un requerimento, o se sabe o no se sabe, (pero eso lo veré en otro post lo prometo, por que este ya está muy largo)
En fin, yo les digo por experiencia. Funcionan, y funcionan muy bien. (como la sección amarilla :p)
Espero les sea útil para ver que no todo son procesos labrados en piedra, rigidos y pesados.
Download Complete
Hoy estaba haciendo unas cuantas pruebas de unidad en Java con JUnit con el afán de hacer correctamente el “test driven development” ya saben, esa super tendencia que están tomando desarrolladores modernos a lo largo y ancho del mundo que dice que siempre debemos de hacer el test primero y despues el codigo para cada una de nuestras clases, de esa manera nos aseguramos que la clase jale (funcione) como esperamos que funcione.
La idea es muy buena y no solo se restringe al uso de JUnit, ya que una prueba es en escencia un bloque de codigo ejecutable por si mismo que si falla arroja un error y truena (falla) y si funciona pues no hace nada. de esa manera sabes cuando algo falla.
Bueno regresando a TDD (test driven development), como pueden imaginar esta forma de trabajar tiene muchas virtudes ya que si no las tuviera nadie la usaria, entre tantas cosas facilita hacer pruebas ya que las TIENES que hacer antes de empezar a programar en la implementación, esto evita que se descuide el unit testing (pruebas de unidad), pero no falta el caso en el que pensamos en el problema y no podemos pensar en una prueba obvia que nos lleve a implementar una solución y terminamos escribiendo la solución, un tanto compleja pero sin pruebas.
La ironia de la vida, es más fácil solucionar algo y decir “confia en mí” a escribir algo y demostrarlo con pruebas “confia en las pruebas”.
Pero que es bueno probar y que no?
Yo diria que todo debe de ser probable. Algunos dirán lo mismo, otros tantos dirán que pruebes lo posible, Kent beck (casi creador de toda esta tendencia) dirá que no todo es bueno probarlo (pero yo creo que ya chochea y se ha vuelto más pragmático).
Pero que implica probar TODO.
implica que te las vas a ver negras. como dirian: estas jodido, you are in deep shit.
Por que?
por que cosas simples las puedes probar facilmente, y eso te va a llevar a escribir codigo simple lo que es bueno, pero no siempre tan sencillo como quisieramos.
Pero.
PEEEERO
que hay de cosas mas “tru tru” (de truculentas) como:
Aqui es cuando estamos en DEEP SHIT
y algunos dirán que no es probable y lo dejes así… pero vamos a ver un caso interesante y de profunda reflexión
Acceso a base de datos.
Supongamos que usas JDBC, y vamos a probar que lo hagas correctamente.
Como le haces?
Bueno primero que nada tienes que evitar un pecado capital:
– Crear la conexión a la base de datos directamente en tu código.
Connection conn = DriverManager.getConnection(url, user, passwd);
si ponen eso se acaban de condenar a no poder probar en paz
su solución en el método donde vayan a hacer uso de la conexión pidanla por parametro
Ahora. Connection es una interfaz. no?
para probar podemos mandar una implementación hecha por nosotros de la interfaz. eso definitivamente va a funcionar. no?
entonces sobreescriben el metodo createStatement() para regresar una implementación chacarrona (hechiza( hecha por nosotros)) en la que sobreescribimos los metodos necesarios para crear un query.
Ahora entonces creamos el metodo executeQuery en nuestra implementación chacarrona para que si no le mandamos un query esperado aviente una excepción (asi sabremos que la prueba no pasa), despues si nos dan el query que queremos regresamos de nuevo otro implementación chacarrona ahora de un resultset.
And so on…
Si, hay herramientas que hacen esto por nosotros, está por ejemplo Mockito, JMock, EasyMock, que nos permiten hacer stubbing (escencialmente lo de implementar a medias una interfaz o clase, aunque el termino va un poco mas allá).
Un momento…
Hagan la prueba…
Hagan la implementación…
Se van a dar cuenta de algo bien raro, su prueba parafrasea la solución. Estan escribiendo en su prueba la forma en la que quieren que se implemente algo.
Estan colocando, quiero que el programador tenga un objeto connection, y que pida un statement, al statement le pida un resultset con este query, y que el query se transforme en esto…
Algo se ve raro ahi no?
Una prueba deberia solo ser el lineamiento de lo que queremos que haga una pieza de codigo, nos dice que quiere, no el como.
Esta prueba parece que es el como…
Ahora está mal eso? YO no lo sé. Por el momento las sigo haciendo y tengo ese extraño sentimiento de que algo anda mal. ese sentimiento de que algo está demasiado repetido o que está demasiado especifico, que mi prueba encadena al programador, lo desnuda, lo golpea y lo esclaviza. (chale que raro suena eso)
En fin, pues chequenlo por ustedes mismos y si encuentran una respuesta a como hacer este tipo de pruebas menos… restrictivas, diganme.
Downloading tutorial…
On this series:
Ok, I began this series the wrong way… If you remember some time ago I posted about some MVC model that might work with swing but I think to understand that more I have to go a little more through the process of creating an application covering some tools and concepts that might come in handy.
So this is the first one.
Ok. Events. what are they and why do you care?
Events are a way to implement the Observer pattern so an Object A that depends on Object B can change its state when Object B notifies Object A. What it mostly means is that you can have an object depend on another to listen for changes on it then we can do some stuff on the main object. Why do we care? well mostly to invert control, this is another design pattern, the most famous is dependency injection (spring anyone?) but the other way of inverting control is through events. How is this possible? when an object requires the other to change something it doesn’t invoke the operation directly on the object, instead it fires an event, then the object listening can do some stuff. This pattern enforces decoupling since nothing happens if we don’t have an observer since it is not required to have one in order for our code to work, we just notify and if no one listens no problem, our job is done to the point we notify.
This has also something to do with the question: Who really cares if something changes on me?
let’s have this scenario: You have a person object that is displayed on a form (the form is done in swing), then some external code beyond our control changes the person object. How do we change the form to reflect the actual changes?
we can add the refresh operation to the external code. BUT that would mean that we need to add some functionality and add a rigid dependency on the external code to the view. BAD
we can add the refresh functionality to our person object. BUT that would impose a dependency on every person object. WORSE
we can add an event to the person object so that it can notify whoever who wants to be refreshed without knowing who is actually listening. Mmmm… a little verbose but this is the point of event driven inversion of control.
Lets get to the root of the implementation.
First lets think of how to do this. In java we use classes (anonymous and inner are most common) on C# we use delegates (but there is an actual event construct for that)
Lets focus on java:
for this to work we need:
for starters we will create the interface (believe me it will be easier)
public interface Listener { public void handleEvent(Object eventArg); }
We dont need to create an EventArg we will use Object for now
Then finally the EventObject, this is simply a wrapper for a list, and the fire event will just do the handleEvent method on all the elements on the list:
public class Event{ private List<Listener> listeners = new ArrayList<Listener>(); public void addListener(Listener l){ listeners.add(l); } public void removeListener(Listener l){ listeners.remove(l); } public void fireEvent(Object eventArg){ for(Listener l : listeners){ l.handleEvent(eventArg); } } }
And thats it… is it?
well how do we use it anyway?
in the class that is observable we need a reference to an event for every event that we need to launch. lets retake the person example.
class Person{ …. some stuff private Event personModified = new Event();
…
public Event getPersonModifiedEvent(){ return personModified; } // no setter we dont want that.
}
ok so now when we change a property we just send the event, right?
class Person{ … more stuff public void setName(String name){ this.name = name; personModified.fireEvent(this); } … }
That simple line will notify every listeners that a change occured without knowing who they are.
How do we listen to changes?
check this out:
class Meh{ … some complex code. public void initOrWhateverThatRunsOnce(){ Person p = ______ // whatever way you have this object. p.getPersonModifiedEvent().addListener(new Listener(){ public void handleEvent(Object eventArg){ refresh(); } }); }
….
private void refresh(){ …… // some really complex code you must write. }
since it is an inner anonymous class it has access to all the methods outside it, this is the power of inner classes but you may implement a different solution, this is just the basic way it is used, even swing uses this as the preferred approach.
Now this is real basic event handling this will work but surely is suboptimal, the main objective here is explaining the idea and how can you implement your own event framework, with more than this. First think about the event parameters, how can we use generics there?, then think about the event object, synchronization, etc. Then think about not returning an instance of Event on the getPersonModifiedEvent method, instead return an interface that just contains the add/remove methods. then use generics on the listeners, etc.
As you can see you can set the limit. and obviously you have the final say on using them or not. I would consider them since its a different way of notifying changes to views and related objects, they can sure save you a lot of problems, and I have seen several advantages: They are easy to test, as they decouple classes they are make other classes easy to test as well, they separate concerns on the classes since every class knows what to listen and are likely to do their stuff right there instead of telling someone else to do it for them.
Ahhh! also, there are some event frameworks out there already, I’ve heard spring has some, so take a look, also the bean spec of the JDK contains something about events.
Happy coding.
ouch
Bueno, lo que uno ve en el trafico.
Lo que me da curiosidad es como puedes darte un golpazo así… digo se nota que iba rápido, pero con tanto tráfico y tan malas calles eso es casi un suicidio, incluso en las autopistas no es muy sano, además de que en temporada de lluvias mas que manejar pareciera que estamos patinando…
En fin, supongo que el cuate de la foto no contó con todo eso y pues pensó que por tener un A6 no le iba a pasar nada o algo así, eso niños… no es cierto, no importa que traigas tienes que tener cuidado…
Por cierto esta es solo una foto de muchos golpes que me ha tocado ver ultimamente, casi casi de uno por día… en que momento chocar se volvió normal??
Recuerdo que hace unos cuantos años le pregunté a un ajustador de seguros como cuantos choques tenia, la verdad no me acuerdo de la cantidad exacta pero si me dijo que pues siempre iban a tener chamba ya que eso nunca faltaba con tanto choque por toda la ciudad.
Downloading article…
Ok, so long ago we came with a complex problem of how to make a swing application model that works and that can be tested efectively, this has proven to be more complex than what we thought at the start.
So this may seem a bit complicated at the start but this is what we managed to acomplish:
The main idea is having everything separated in our swing app and doing a kind of MVC
So we have 4 main components in this model:
So now how do this works?
The idea is that your dependencies look like that. The view depends on the controller and the notifier, the controller depends on the model and the notifier, the model has no dependencies, the notifier has no dependencies as well.
Do something looks weird? how is the view updated? i think you can understand that the model has no dependencies, but shouldn’t the notifier depend on the view?
NO… and thats the whole point.
The notifier and the view have an observer pattern inside, the view observes the notifier, the notifier will relay all the necesary information to the view through events that will be triggered from some external source.
This allows plugability and most important
TESTABILITY
The view can be tested. The only thing it does is relaying user interactions to the controller, so we can mock the controller and assert that the invocations occurs (using fest maybe or by plain java) The controller can be tested we can mock both the model and the notifier, so the controller just do some stuff and in the end notifies. The notifier is even easier, since we can have just mock listeners assigned to it and check that if the class is notified the event is thrown. The model can be tested without any dependency as well…
Why this way?
Well there are a couple of reasons, one of the main ideas is achieving inversion of control and allowing linear dependencies, circular dependencies are hard to manage and often lead to failures in configuration.
– I promise that i will update this as soon as I finish another post about inversion of control using events.
– SideNote: Yes this is MVC the only difference is the “where it happens” on normal MVC the controller updates the view. here is no exception, but the controller just screams that a change has occured and then the view has to update itself.
– I will put a tutorial too sometime.
Downloading image.
Ok, guarden sus antorchas y trinches y no me linchen hasta que exponga mi punto.
La alta definición no es mala, de hecho nada es mejor que tener una pantalla de LCD con una resolución imbecil para ver tus peliculas y programas favoritos, o por que no para conectarla a tu computadora y tener de repente un monitorsototototote de 32 pulgadas o mas.
Lo que está mal en el HD son los mecanismos de protección del mismo. Y como es mi sana costumbre, la victima del día es: (pom pom pom (sonido de tambores))
HDMI o high definition media interface.
Veran HDMI es un cablecito (bastante caro para lo poco que hace) que transfiere muchos datos en chinga a la pantalla. nos permite mandar video y audio de alta calidad para que sea vean chidas nuestras peliculas.
PAUSA!
Pero no se supone que eso ya lo haciamos con un cable VGA? que yo sepa los monitores full HD se conectan por vga, incluso hay una mugre que es el DVI que soporta muchas mas cosas, por que crearon otro cable mas? digo, vga no transferia audio pero estan los cables opticos, que paso aqui?
Señores la respuesta es… control.
AH!!! entonces yo voy a tener mas control sobre mi señal?
NO
NOOOOOOOOOOOOOO
Yo pensé que era una idea para progresar, pero me equivoque, resulta que tiene que ser un cable tan caro y sofisticado por que debe soportar…. ENCRIPCION
Si, la señal de un HDMI puede ir encriptada, y el protocolo para poder intercambiar dicha señal es el HDCP (High definition content protection)
El nombre suena mal.
ES PEOR.
A continuación les va una explicación de que pex.
El cable HDMI conecta a un transmisor con un receptor los cuales estan de acuerdo en que la señal viaje de uno a otro dispositivo sin interrupción ni intermediarios, para hacer esto ambos se presentan el uno al otro y definen un lenguaje en el cual se van a comunicar (como hablar con la F) de esta manera la señal que sale del cable solo llega a un dispositivo.
QUE QUE??? PARA QUE???
Para que no la puedas interceptar, para que no la puedas grabar enmedio y para que esta señal no la puedas grabar a tu compu para que la distribuyas despues con bittorrent :p
— Eso no es tan malo o si?
DEPENDE. En mi caso, cuando juego en mi PS3 de a ratos se le va la señal a la tele… tengo que esperar un rato a que se desatonte la tele o de a tiro quitar el cable y volverlo a conectar rezando por que ya agarre bien.
por que la señal va encriptada y ambos equipos se tienen que presentar siempre que se ven. y eso toma tiempo. si toma mucho tiempo uno de los aparatos pues se sigue de frente (el play 3) dejando a la tele atras con el horrendo flicker.
Eso me pasa por no comprar una bravia.
MAL! por que incluso a algunas bravias les pasa.
Que hacer?
Pues hay dos opciones. usen cables de componentes, o consiganse una tele que sea lo suficientemente rápida para que jurule bien con su ps3 o reproductor de bluray.
Total.
Una vez mas la tecnologia como los cangrejos, inventan algo chido (teles HD) y las echan a perder con restrincciones inutiles (HDCP)…
Nota: ahorita es muy noche pero mañana decoro el post con imagenes y ligas pa que vean que no me los estoy chamaqueando.
Downloading report…
Calentamiento global, lo vemos en todas partes, los polos se derriten mientras escribo esto, los desiertos ganan terreno y .
Las consolas de nueva generacion generan mucho mas calor de lo que cualquiera pudiera imaginar.
No me creen? chequen:
A un mono loco se le ocurrio la idea de demostrar que su PS3 podia generar suficiente calor para poder cocinar carne en el.
Como dicen que nada es imposible y a este cuate le restregaron demasiado la frase en su juventud temprana, el sujeto en cuestion tomó una sierra y abrio su PS3, encima de los disipadores puso una parrilla y VOILA!.
Cual seria su sorpresa que descubrió algo que muchos ya sabian, y si no… preparense para ser iluminados:
Listos?
Los procesadores de las computadoras generan una cantidad IDIOTA de calor cuando se usan a todo su poder.
Ahora el PS3 tiene 7!!! imaginense como arde esa cosa.
Pero no se preocupen tanto, no los va a quemar (mucho) ya que aparentemente los ingenieros que hicieron el sistema sabian lo que hacian… mmm… para relatarlo mejor les contaré una historia.
Era en una tarde cuando nos reunimos a jugar FIFA 09 en el PS3 comunitario, lo encendimos, metimos el juego, cerramos la puerta del closet donde se encontraba el PS3, tomamos 6 controles y jugamos por mas o menos media hora. A la mitad del juego un sonido perturbante como de una turbina sonaba dentro del closet, pero como estabamos muy clavados jugando nadie puso atención.
No paso mucho tiempo despues del sonido de turbina para que el PS3 rompiera nuestra concentración con un mensaje en pantalla que decia: “El sistema esta caliente, o lo apagas o muero”
La cordura vino al cuarto y nos acordamos que el PS3 se encontraba en el closet… en el closet cerrado… en el closet cerrado sin ventilacion.
Abrí la puerta… y sentí el calor en su apogeo. la cosa esa estaba en masa critica, irradiaba suficiente calor como para poner unos tamalitos a calentar o asar unas salchichas o carnes ahi adentro. lo logico que siguio fue apagarlo. y esperar a que se enfriara.
Lo cual nos deja dos lecciones:
Si algo se calienta, es electronico y es CARO. Ventilalo para que no se derrita (algunas cosas no son tan listas como el ps3)
El PS3 es listo hasta eso. te avisa antes de morir y te dice como salvarlo.
Saben que es lo mas ironico? que aunque los procesadores consumen mucha energia, hay algo que puede llegar a consumir mas energia: Los motores del disco duro y del CD/DVD/BD…
Bueno menos mal que el PS3Grill te avisa que puede morir si no lo ayudas, por ahi cuenta la leyenda que hay otra consola que tambien se calienta como loca, pero que solo te dice que va a morir inminentemente, y tiene la delicadeza de solo hacertelo saber con un sutil último gesto:
The red ring of death.
¿Y aun asi tienen dudas de que las cosas se esten calentando globalmente?
Ok, The witcher, es un videojuego RPG hecho por CD Projeckt (o algo asi) que se ubica en un mundo medieval fantasioso manchado. Algo asi como medio dark, pero sin ser gotico. simplemente manchado.
A que me refiero con eso? pues que simplemente no todas las personas que se encuentra nuestro protagonista son buena onda, sino que son manchadones y pues reaccionan relativamente normal.
Una reseña express: Nuestro personaje: Geralt de Rivia es un “witcher”, un cazador de monstruos a sueldo que pierde la memoria y es llevado a un bastion con camaradas que tambien son witchers, Geralt en vez de retirarse y ser un granjero feliz no solo quiere recuperar su memoria sino tambien continuar con su carrera erradicando mostros. No es de sorpresa que algo inesperado pasa, el bastion en el que se encuentra es atacado por mercenarios que buscan los secretos de los witchers.
Cuento largo corto: Atracan a los buenos, se roban cosas, y pues ahora es tu mision ver por que les robaron y cobrar venganza.
Aunque el juego se siente como un MMORPG tiene ciertas cosas que lo distinguen. Entre ellas el escenario y los personajes que se veian demasiado complejos como para ser alucinados por escritores de videojuego.
Ahora no me mal interpreten, hay juegos muy bien narrados, solo que este se veia que tenia algo raro.
Eventualmente supe que era.
Pues resulta que este juego (que por cierto no esta mal) esta basado en una serie de novelas y cuentos cortos escritos por Andrzej Sapkowski en los cuales a traves de historias cortas describe un mundo fantastico que pedia a gritos ser explotado.
Como muchos otros, este es un juego basado en un libro. Pero no sigue la historia de ningun libro. o al menos eso creo.
Y bien como es que supe esto? pues resulta que creo que hasta la caja del libro lo dice, pero yo no me habia dado cuenta. En fin pues hasta conseguí el libro en amazon, desafortunadamente solo esta el primer libro, se llama “The last wish”, hay una traducción al español con el nombre de: “El último deseo”, pero la verdad yo veo dificil que lo encuentren.
El juego y la novela tienen un aire maduro, tiene temas fuertes y en si me gusta por que incluye problemas no tan comunes en otras novelas y juegos más “family-friendly”, Es curioso, por que no sobreexplota esos temas.
A que me refiero?
mmm… Ya sé, violencia, algunos juegos tienen mucha violencia, ok, la violencia está bien siempre y cuando te ayude a narrar algo, cuando la narración te ayuda a tener más violencia, algo estas haciendo mal.
Si no quedo claro: lenguaje explicito (groserias) no es lo mismo demostrar descontento de algun personaje diciendo una que otra mala palabra, lo que esta mal es decir malas palabras cuando no ayudan en lo mas minimo a expresar algo.
Y asi con todos los temas triquillosos que se van a encontrar. The witcher es un juego y novela que no le teme a estos temas pero no los explota tanto. Claro esa es mi percepción aunque para muchos no dudo que digan que el juego es impudico y la novela demasiado salvaje.
Si pueden denle una oportunidad. Igual y les late. Igual y no.
Sigh…
Before I begin with this post I must question myself: Why do i get in so much trouble?
Nuff said, lets get on topic.
One day I needed to include a chart on a flash animation and seriously I was careless on the complexity of the thing at hand.
First I tried the simplistic approach: Import as an image. The result was a little upseting, the image was imported but for my demise the quality was a lot lower… there were some artifacts on the texts and around the lines there was some aliasing that make the graph look wrong.
I just copy pasted it I swear.
Ok so whats the problem, if you see at the image at its original size you will notice some aliasing. If you still dont see it: here you have it in a side by side comparison:
Look at the category text or the numbers, The 0 in the bottom looks wrong.
Now if it looks wrong now, wait till you animate it or try some crazy stuff…
How do we fix it? Well flash has a way: Setting quality of the imported resources and enabling smoothing
Right click the resource in the library, select properties.
Then in the following screen make it match the way it looks below:
You should notice an improvement in the quality. BUT don’t try to zoom in too much because in the end its a bitmap and it will get pixelated.
But HEY! Probably you want to zoom that chart, and probably you want many more things, What can you do then?
Answer 1: In office make the chart so irrationally big so when you copy it you copy a massive image. Answer 2: Try this little trick.
One little known feature of office is that it can export directly the charts to images.
to do this right click on some empty area inside the chart:
There it is, near the bottom, save as picture option.
Yeah, from here we can save a .png or .jpg. BUT what we really want is a yet obscure format known as: Enhanced Windows Metafile, This thing is actually vector based bitmap hybrid.
Now import the file to flash as you would normally do.
The fonts are imported as text, the graph is imported as many bitmaps.
If you try it with a 3D graph the result is bad to say the least since it works fine only for the text, but no fear all the simple 2D plain graphs are imported as actual vectors! and they can be modified at will in flash, isn’t that cool?
Well that’s it about importing charts.
Well there are also some charting utilities for flash, but its kinda hard to insert them on existing movies, as always it depends on what you need. Need to show off some charts only? then use this tools, there are even some open source, Need to use the charts inside an existing movie? then i would advice to keep it simple and down to just import the resource and animate it manually.