miércoles, 28 de diciembre de 2011

Compilando el Doom3 en PPC

Anteriormente les comente que había sido liberado el código de fuente del juego Doom3.
Ahora tengo el agrado de comentarles como compilarlo para la arquitectura ppc,
Para lograr compilarlo en mi PowerBookG4 con Debian6.0.3 tuve que agregarle un par de parches ya que el codigo solo estaba pensado para MacosX-PPC y no Linux-PPC
Si bien compila y arranca el juego no es jugable dado que presenta muchos giltches de video y audio que todavia no se a que se deben.

#apt-get install scons
#apt-get install libc6-dev libgcc1 gcc-multilib libstdc++6 g++-multilib zlib1g-dev
#apt-get install libopenal-dev
#apt-get install libxxf86vm-dev
#apt-get install libglu-dev
#ln -s /usr/lib32/libz.a /usr/lib/libz.a

Clonamos el repositorio con los parches tanto de github o de gitorious
$git clone https://github.com/daedalus/iodoom3.git
$git clone git://git.iodoom.org/iodoom3-ppc/iodoom3-ppc.git iodoom3

Compilamos...
$cd doom3.gpl
$cd neo
scons --cache-populate

Por ultimo ejecutamos ./doom.ppc
DOOM 1.3.1.1304-debug linux-ppc Dec 28 2011 09:33:06
found interface lo - loopback
found interface eth0 - 200.40.20.134/255.255.255.0
found interface vboxnet0 - 192.168.56.1/255.255.255.0
no 'base' directory in exe path /home/daedalus/code/iodoom3/neo, skipping
WARNING: using hardcoded default base path
------ Initializing File System ------
Current search path:
/home/daedalus/.doom3/base
/usr/local/games/doom3/base
game DLL: 0x0 in pak: 0x0
Addon pk4s:
file system initialized.
--------------------------------------
Unknown command 'vid_restart'
idRenderSystem::Shutdown()
Sys_Error: Couldn't load default.cfg
Ahora estamos en condiciones de agregarle el contenido del CD y probar el juego copiando el contenido del directorio "base" a $HOME/.doom3/base

Bookmark and Share

lunes, 26 de diciembre de 2011

NO SOPA















Después del boicot contra Godaddy ahora son 141 las empresas que soportan SOPA plenamente.
Anteriormente les comente sobre un plugin de Firefox que se encargaba de saltear el bloqueo de DNS de SOPA.
Ahora se trata de una extensión para Chrome que se llama NOSOPA
Esta extensión se encarga de notificar al usuario con una barra superior si el sitio que estamos visitando es de alguna de las compañías que soportan plenamente SOPA.

Fuente [http://alt1040.com/2011/12/no-sopa-la-extension-que-te-notifica-si-te-encuentras-en-una-pagina-que-apoya-sopa]

Bookmark and Share

miércoles, 21 de diciembre de 2011

Liberado el codigo de fuente del Doom3























Me entero leyendo barrapunto que hace un mes atrás fue liberado el código de fuente del juego Doom3.

Anteriormente John Carmack había prometido hacerlo pero por problemas de patentes con el algoritmo de Sombras Volumétricas que creo John Carmack bajo el nombre Carmack Reverse y que por similitudes con el código patentado por Creative Labs, id software se vio obligado a comprar una licencia de la biblioteca EAX e incluirla en el juego.

Así que ahora: el código fuente de Doom 3 ya está publicado, y es software libre bajo la GPL, versión 3.

Pero lo único que es libre es el código del motor, y no los datos (niveles, gráficos, sonidos, músicas), que siguen siendo propietarios. cosa que me importa poco ya que como en contribuciones anteriores nacieron proyectos como Tremulous, OpenArena y UrbanTerror ahora hay que esperar y ver que se viene...

Bookmark and Share

Si no te gusta la Sopa dos platos!

Hoy todo el mundo esta hablando de SOPA (Stop Online Piracy Act) la ley draconiana y de censura que se esta por aprobar en el Congreso de los Estados Unidos la cual se teme que podría acabar con el Internet que conocemos en nuestros días y que amenaza la libertad de expresión.
Esta ley permitirá al departamento de Justicia de los Estados Unidos y a los que mantengan copyrights el poder levantar ordenes judiciales en contra de sitios acusados de facilitar el infracción de copyrights o "piratería".
Esta ley abarca la eliminación de los registros DNS, el bloqueo de medios financieros como paypal y el derecho de exigir a los motores de búsqueda el bloqueo del sitio infractor.
Pero hecha la ley hecha la trampa:

DeSopa es un plugin que permite a Firefox la circumvencion del bloqueo de DNS utilizando servidores DNS extranjeros.

Bookmark and Share

lunes, 12 de diciembre de 2011

Anatomia del algoritmo de Luhn

ATENCION: Los fines de este post son solo educativos no me hago responsable por su utilización.

El algoritmo de Luhn desarrollado por Hans Peter Luhn es un algoritmo que se encuentra en el dominio publico.
Permite verificar la validez de un numero y distinguir o discriminar un conjunto de números "validos" de otro conjunto al azar.
Su utilizad reside en que permite la corrección de errores debidos a la mala transcripción de estos numeros.
Se aplico extensamente para verificar tanto números de tarjeta de crédito como los números IMEI.
Se puede aprender en no mas de 5 minutos.
No es un algoritmo criptográfico seguro, lo cual lo hace vulnerable a ataques.

Veamos el algoritmo:

El primer dígito de la tarjeta es el "dígito mayor identificador industrial" o Rubro:

Ej:
1 y 2 son compañias aéreas
3 Viajes y entretenimiento
4 y 5 Bancos y Financieras
6 Marcado y Bancos
7 Petróleo
8 Telecomunicaciones
9 Asignación Nacional

Los primeros 6 dígitos componen el numero de la institución emisora del numero.
Ej:

Visa: 4xxxxx
Mastercard: 51xxxx - 55xxxx
Discover: 6011xx - 644xxx - 65xxxx
Amex: 34xxxx - 37xxxx

Los siguientes digitos que pueden variar entre 9 y 12 dígitos dependen de la tarjeta y son identificadores de la cuenta personal.

El ultimo dígito es el verificador.

Forma facil:

Supongamos que el numero de tarjeta sea: 4417 1234 5678 9113

El algoritmo es el siguiente: se recorren de izquierda a derecha multiplicando los dígitos impares por dos, se excluye el dígito verificador
Se suman los dígitos obtenidos por ejemplo si teníamos 5x2 = 10, sumamos: ...+1+0+....

Numero de tarjeta: 4 4 1 7 1 2 3 4 5 6 7 8 9 1 1 3
Primer paso: 4x2 4 1x2 7 1x2 2 3x2 4 5x2 6 7x2 8 9x2 1 1x2
Segundo paso: 8 + 4 + (2) + 7 + (2) + 2 + (6) + 4 + (1 + 0) + 6 + (1 + 4) + 8 + (1 + 8) + 1 + (2) = 67

Por ultimo: A la sumatoria agregamos el dígito verificador y verificamos el modulo 10:

67 + 3 = 70 y (70 mod 10) = 0

Si el numero es divisible entre 10 significa que el numero de tarjeta es valido.

Una forma alterna:  
Seria excluir el dígito verificador, revertir el orden del resto de los números y multiplicar los números en las posiciones impares por dos.
Si son superiores a 9 se le resta 9.
Luego se suma todo.

Numero de tarjeta4 4 1 7 1 2 3 4 5 6 7 8 9 1 1 3
Primer paso: 1 1 9 8 7 6 5 4 3 2 1 7 1 4 4
Segundo paso 1x2 1 9x2 8 7x2 6 5x2 4 3x2 2 1x2 7 1x2 4 4x2
Tercer paso: 2 + 1 + (18-9) + 8 + (14-9) + 6 + (10-9) + 4 + (6) +2 + (2) + 7 +(2) +4 + (8) = 67

Por ultimo: como dio 67 y 67 + 3 = 70 y 70 mod 10 = 0 otra vez podemos llegar a la conclusión de que el numero es valido.

En python el codigo resultante seria:

def cardLuhnChecksumIsValid(card_number):
  sum = 0
  num_digits = len(card_number)
  oddeven = num_digits & 1

  for count in range(0, num_digits):
    digit = int(card_number[count])
    if not (( count & 1 ) ^ oddeven ):
      digit = digit * 2
    if digit > 9:
      digit = digit - 9

    sum = sum + digit

  return ( (sum % 10) == 0 )

Bookmark and Share