Archivo por meses: Septiembre 2011

BlueBolt: Detrás de los efectos especiales de Game Of Thrones


Atención si no sabes que es Game of Thrones solo ve este primer tráiler y no continúes con el post ya que tiene spoilers xD.

Muchos de los que somos fans de Game of Thrones estamos esperando con impaciencia que sea lanzada la segunda temporada, mientras tanto nos tenemos que conformar con escuchar los soundtracks de la serie (al menos eso hago yo :p). Hace unos días me puso a investigar acerca de todo lo que era la parte de producción y post producción de la serie y según tengo entendida es una de las series de HBO mas caras de la historia.

La empresa encargada de realizar todos los efectos especiales es llamada como BlueBolt, y a continuación les dejo un video muy impresionante de los efectos que son agregados a las escenas :).



SPOILERS

En lo personal, hay efectos que yo no esperaba que fueran aplicados en algunas escenas :p

salu2

Conexiones simples a mysql con JDBC en Java

Hace algún tiempo ya un amigo me pregunto que si era posible conectarse a una base de datos mysql utilizando Java, y le respondí claro que si, una opción es utilizar JDBC y el driver de mysql, hice un ejemplo bastante sencillo con el que seguro queda claro cual es la idea principal.

Lo primero que tienen que hacer es descargar el driver de conexión a mysql: mysql-connector-java-5.1.5-bin.jar y lo instalan, si utilizan eclipse es muy sencillo, tienen que copiarlo a la carpeta de su proyecto y después hacer clic con el botón secundario en su proyecto y seleccionar Build Path > Libraries > Add Jars y agregan su archivo :).

Después de eso pueden probar este pequeño código de ejemplo.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class jdbcExample {

  Connection newDB;

  void getStates()
  {
        try {

            Statement STMT1 = newDB.createStatement();
            String SQLQuery = "SELECT name FROM states";
            ResultSet RX = STMT1.executeQuery(SQLQuery);

            while (RX.next()) {
                System.out.println(RX.getString("name"));
            }
        }
        catch(SQLException e) {

        }
  }

  void insertState(String name) {
    name = name.trim();
        if (name.length() > 0) {
            try {
                Statement STMT = newDB.createStatement();

                String SQLQuery = "INSERT INTO states (name) VALUES ('" + name + "');";
                STMT.executeUpdate(SQLQuery);
                System.out.println("Se agrego un nuevo estado: " + name);
            }
            catch (SQLException e) {
                System.out.println("ERROR AL INSERTAR NUEVO ESTADO " + e.toString());
            }
        }
    }

  void removeState(String name)
  {
        try {

            Statement STMT1 = newDB.createStatement();
            String SQLQuery = "DELETE FROM states WHERE name = '" + name + "'";
            STMT1.executeUpdate(SQLQuery);

            System.out.println("Se elimino el estado: " + name);
        }
        catch(SQLException e) {
          System.out.println("ERROR AL BORRAR ESTADO " + e.toString());
        }
  }

  void performConnection() {

        String new_hostName = "127.0.0.1";
        String new_userName = "root";
        String new_password = "";
        String new_dataBase = "zonauPruebas";

        try {

          Class.forName("com.mysql.jdbc.Driver");

            String newConnectionURL = "jdbc:mysql://" + new_hostName + "/" + new_dataBase + "?" + "user=" + new_userName + "&password=" + new_password;
            newDB = DriverManager.getConnection(newConnectionURL);

      } catch (SQLException e) {
        System.out.println("SQL Exception: " + e.toString());
      } catch (ClassNotFoundException cE) {
        System.out.println("Class Not Found Exception: " + cE.toString());
      }

      //obteniendo datos
      getStates();
      insertState("Java Town");
      removeState("Java Town");
  }

    public static void main(String[] args) {
      jdbcExample nuevaConexion = new jdbcExample();
        nuevaConexion.performConnection();
    }
}

Ok para los que ya están familiarizados con java les resultara muy sencillo de entender, para los que aquí va la explicación, (omitiré la parte de los imports de librerías por obvias razones xD).
public class jdbcExample {

  Connection newDB;

Al inicio de creo una nueva variable de clase de tipo Connection, desde aquí comenzamos a hacer uso de la maravilloso de los objetos :p.
void performConnection() {

        String new_hostName = "127.0.0.1";
        String new_userName = "root";
        String new_password = "";
        String new_dataBase = "zonauPruebas";

        try {

          Class.forName("com.mysql.jdbc.Driver");

            String newConnectionURL = "jdbc:mysql://" + new_hostName + "/" + new_dataBase + "?" + "user=" + new_userName + "&password=" + new_password;
            newDB = DriverManager.getConnection(newConnectionURL);

      } catch (SQLException e) {
        System.out.println("SQL Exception: " + e.toString());
      } catch (ClassNotFoundException cE) {
        System.out.println("Class Not Found Exception: " + cE.toString());
      }

      //obteniendo datos
      getStates();
      insertState("Java Town");
      removeState("Java Town");
  }

Después, esta es la parte mas importante del código, aquí es donde establecemos la conexión a la base de datos, es especial esta

String newConnectionURL = "jdbc:mysql://" + new_hostName + "/" + new_dataBase + "?" + "user=" + new_userName + "&password=" + new_password;

Donde utilizamos el protocolo JDBC para conectarnos.

Después mas abajo verán la parte donde se mandan llamar métodos de la <strong>clase</strong>

    getStates();
      insertState("Java Town");
      removeState("Java Town");

Ahora explico lo que hace cada uno de ellos, el primero hace un SELECT, el segundo un INSERT y el tercero un DELETE.
void getStates()
{
        try {

            Statement STMT1 = newDB.createStatement();
            String SQLQuery = "SELECT name FROM states";
            ResultSet RX = STMT1.executeQuery(SQLQuery);

            while (RX.next()) {
                System.out.println(RX.getString("name"));
            }
        }
        catch(SQLException e) {

        }
}

Como el código lo indica, creamos un nuevo dato de tipo Statement, armamos nuestra Query y al final realizamos la consulta (el SELECT) utilizando executeQuery y guardamos el resultado en un ResultSet que al final recorreremos utilizando un While, imprimimos el contenido con getString, esto implícitamente funciona moviendo un apuntador a través del ResulSet pero eso es otra historia xD.
void insertState(String name) {
    name = name.trim();
        if (name.length() &gt; 0) {
            try {
                Statement STMT = newDB.createStatement();

                String SQLQuery = "INSERT INTO states (name) VALUES ('" + name + "');";
                STMT.executeUpdate(SQLQuery);
                System.out.println("Se agrego un nuevo estado: " + name);
            }
            catch (SQLException e) {
                System.out.println("ERROR AL INSERTAR NUEVO ESTADO " + e.toString());
            }
        }
}

En este método al igual que en el anterior utilizamos un Statement, pero recibimos como parámetro un string, le aplicamos el método trim() que remueve espacios al inicio y al final de la cadena, después armamos nuestra consulta agregando el string de la variable name y la ejecutamos con executeUpdate

Entonces hasta ahorita ya deberían de saber como recuperar datos y como agregarlos de una base de datos :p, vamos por la tercera que seria eliminarlos.

void removeState(String name)
  {
        try {

            Statement STMT1 = newDB.createStatement();
            String SQLQuery = "DELETE FROM states WHERE name = '" + name + "'";
            STMT1.executeUpdate(SQLQuery);

            System.out.println("Se elimino el estado: " + name);
        }
        catch(SQLException e) {
          System.out.println("ERROR AL BORRAR ESTADO " + e.toString());
        }
}

Es igual al método anterior solo que ahora la consulta en lugar de contener un INSERT será un DELETE :).
    public static void main(String[] args) {
      jdbcExample nuevaConexion = new jdbcExample();
        nuevaConexion.performConnection();
    }

Al final creamos nuestro tan importante método main (se rumora que una vez un programador hizo un programa con 3 mains O.o???), y creamos una nueva instancia de nuestra clase y después ejecutamos el método performConnection() que realiza la conexión.

Bueno hasta aqui este mega tutorial relámpago de conexiones a bases de datos mysql con JDBC en Java, me voy a dormir, espero les sirva y cualquier duda comenten por favor.

Aquí les dejo el código sql de la tabla que utilice en el ejemplo para si ustedes quieren utilizarla.

Les recuerdo que aun esta en pie el concurso Ganate una cuenta premium de megaupload GRATIS

salu2

Mi opinion acerca de Anonymous mexico

Este año ha comenzado mas agitado que de costumbre, iniciando con las noticias y las nuevas tendencias del malware firmado, paquetes de crimeware que son vendidos casi a la luz del día y los grupos hacktivistas que están a la orden del día.

Me he decidido a escribir este articulo, que refleja enteramente mi opinión personal y la manera en la que yo observo las cosas debido a en esta ocasión la gente de Anonymous entro en escenario mexicano, o al menos gente que utiliza su insignia. Y es que este grupo como otros (Lulzec, por ejemplo) tienen cierta filosofía que para algunas personas podría ser moral mente correcta y para otras no, yo en lo personal converjo con la idea de no caer en el conformismo, no dejarme “pisotear” por el gobierno y salir adelante por mis propios méritos, lo que si no me parece es que este tipo de grupos vaya por la red predicando acerca de la liberación, la independencia y el libre albedrío (no ser un ladrillo mas del muro) y aun así utilicen al pueblo, a las masas como simple ganado o carne de cañón para realizar sus ataques distribuidos de denegación de servicios.

Por si fuera poco el pueblo es como una manada de búfalos, tan solo hace falta seguir a su líder y no vacilaran en aventarse por un precipicio, ojo que no estoy diciendo que nos tenemos que conformar con nuestra situación actual, el narcotráfico, la inseguridad, etc y todo eso que nos ponen frente a los ojos, lo que trato de decir es que no tenemos que seguir estúpidamente al primer Mesías que venga ante nosotros solamente por que nos dice “oye tu, si tu, me voy a enfrentar al gobierno, ¿me ayudas?”, simplemente esa no es la manera correcta de hacer las cosas.

Díganme ustedes, ¿de que sirve realizar un ataque de denegación de servicios?, ¿acaso vas a dejar tus scripts corriendo todo un mes?, en cuanto dejes de DOSEAR el sitio vuelve a estar en pie y nada paso, simplemente, realizar un DDOS es algo estúpido, lo vean por donde lo vean, y lo peor de todo es como ya mencione utilizan al pueblo para hacer el trabajo sucio, un pueblo que no tiene ni $·&$&$ idea de lo que esta haciendo, un pueblo fácilmente manipulable al cual le puedes decir: descarga este programita de samelpirata.com, instálalo, pon esta url y pícale en GO.

La verdad que me entristece entrar a los canales IRC o seguir los #hashtag de #OpIndependencia en twitter donde supuestamente miembros de anonymous están dando ordenes como “New Target”, “Tango Down”, “take down”, y cosas por el estilo y la gran cantidad de gente que tontamente esta contribuyendo en algo que están muy lejos de comprender y peor aun de entender su funcionamiento, por lo que llegue a una conclusión.

Al pueblo le gusta formar parte de algo, de algo grande aunque no tenga ni %&/(%& idea de ello, “Ya calificamos para el mundial“, “ganamos contra X país”, ¿Que ganaste?,¿En que calificaste?, ahora si que every man for himself, sálvese quien pueda, en pocas palabras comienza a hacer algo por ti mismo y no intentes cambiar el mundo que no podrás (aun no ;)).

La verdadera razón por la que se organizan este tipo de ataques es para atraer publicidad y causar polémica, ¿por que mas va a ser?, lanzar noticias nuevas y frescas a los medios es algo muy importante cuando quieres causar distracción, la verdadera gente de Anonymous les aseguro que son gente que estudio, ingenieros, doctores, maestros, gente muy bien preparada que no tiene el tiempo ni les resulta útil ser tweetstars o andar publicando videos en youtube, la gente que realiza estas acciones, y esto se los puedo asegurar son personas que tienen muy pocos o nulos conocimientos de informática, aprendieron a utilizar un troyano, escribir scripts en batch y alardean de ser hackers, obviamente no entienden la diferencia entre un hacker y un script kiddie ;).

Si bien ustedes saben, yo he pertenecido a grupos de ciber hacktivismo y es algo totalmente diferente, aunque no diga que sea bueno o correcto, ¿por que es diferente? para empezar en aquellos tiempos éramos mas organizados y no incitábamos a las masas a que descargaran y utilizaran software que probablemente esta infectado, se tenían objetivos bien definidos y no se anunciaba en los medios.

En resumen y ya para terminar no se dejen llevar por la corriente, no se involucren con la moda Anonymous pensando que lo saben todo solamente por que saben usar un programa llamado LOIC, manténganse informados acerca de lo que sucede a su alrededor y sobre todo no se dejen manipular tan vil mente como lo esta haciendo Anonymous en la actualidad.