lunes, 28 de julio de 2008

¿Sabes quemar? (Parte 1)

Alien [blackhat4all@gmail.com]

Hace unos cuantos años atrás tener un ordenador con quemador era algo similar a ser el Dios de tu vecindario, todos venían a ti para obtener una copia del último disco de Maná, o para que le quemaras en un CD las fotos de la hija que recién había cumplido 15. Tampoco faltarían los que de su centro de trabajo sacaban la Encarta en un disquete y luego querían que le grabaras eso en un CD (aún no comprendían que los accesos directos no contienen ninguna información válida.)

Por suerte hoy en día las cosas han cambiado un poco y gracias al gran número de ordenadores que empiezan a circular por las calles, más las miles de plazas abiertas en los JovenClub, los cursos de computación que se imparten por los centros de trabajo y todo aquellos que de hace para elevar la cultura informática, nuestro pueblo tiene más conocimiento sobre estos temas y es capaz de no pecar de bobo ante situaciones tales. No obstante, uno de los problemas a los que se enfrenta una persona que recién adquiere un ordenador con capacidad para quemar discos es escoger el formato adecuado para cada tipo de CD que se dispone a quemar.

Pensando en esto y en quitarme a la vecina de arriba, me propongo escribir este artículo que va desde lo risible hasta lo más complejo.

¿Me vende un…? si, si, eso mismo…

A pesar de las muchas oportunidades que mencioné anteriormente para la superación de las personas, aún tenemos en nuestro país a personas (casi siempre de edad avanzada) que no sabes o les es difícil diferenciar un CD de un DVD.

Para los que tienen un poco de conocimiento sobre el tema esto les puede resultar difícil de creer, pero es la verdad. Si los CD fueran cuadrados y los DVD en forma triangular esto no ocurriese, pero como ambos tienen la misma forma geométrica y un grosor similar, a la vista de muchos tienden a ser iguales, más cuando se venden sin la caja que los identifica.

CD

Los CD son el modelo que más comúnmente se encuentran en las tiendas. Por lo general se venden dentro de un estuche cuadrado que los diferencia de los DVD ya que, en letras grandes dirá algo como CD-R o CD-RW o CD-ROM… En cualquiera de los casos, tendrá antes del guión las letras “CD”. En caso de venir sin el estuche, la mayoría de los CD tienen impreso en ellos mismos una descripción similar acompañados además de la capacidad, la que por lo general promedia sobre los 700 Mb (equivalente a cerca de 500 Disquetes [Es menos que 1 Bb]).

DVD

Al igual que el CD tiene en el estuche o sobre la superficie del disco las letras que lo diferenciarán de los CD convencionales; sin embargo la capacidad de grabación permitida por lo general es de 4.7 Gb (equivalente a 6.8 CDs).

También existen discos que no vienen ni con estuche ni con descripción plasmada en ellos mismos. Son algunos modelos que son de color completo, sin marcas ni dibujos. En casos como estos, podemos diferenciar un CD de un DVD ya que este último tiende a tener en todos los casos un color algo azuloso en la cara en que se graban los datos.

Nota: Los CDs reescribibles (CR-RW) también tienen la parte en la que se graban los datos un poco más oscura que los discos normales. Por suerte todos si vienen etiquetados de forma correcta por la otra cara.

En cualquier caso, debemos saber bien que modelo es el que necesitamos, puesto que un quemador de CD, no estará habilitado para realizar la misma función en un disco DVD, y si la situación en a la inversa y compramos un DVD parea quemar las 120 fotos de los 15 de la niñita de la casa, sería algo más o menos como comprase un P-IV para jugar buscaminas…

Otra cosa que debemos dominar antes de quemar es el programa de grabación. Por regla general la mayoría de las personas utiliza el Nero y en caso que así no fuese, lo lamento por esa gran mayoría pero es el que tengo y del que me dispondré a hablar, xD

Los DVD

Las opciones para quemar un disco DVD son muy similares a las de quemar un CD, haciendo siempre la salvedad de que el tipo de disco es DVD. Al hacer esto, Nero, de forma automática, nos mostrará solamente las opciones para el trabajo con este tipo de medio. No obstante, debemos saber con exactitud a que tipo de disco DVD nos enfrentamos.

Aunque la gran mayoría de los discos DVD que estamos acostumbrados a ver son de 4.7 Gb, esta no es el único tipo de disco que existe.

DVD convencional

Llamamos así al tipo de disco que acepta como capacidad máxima 4.7 Gb y que permite esta “salvajada” de información porque a diferencia de su hermanito menor, el CD, este graba la información en sectores más pequeños, pudiendo almacenar mucha más información que un CD.

DVD Doble Capa

Se puede encontrar con ese nombre o simplemente como DVD DL (Dual Layer). Este tipo de disco tiene en la misma cara de grabación dos capas, pudiendo así duplicar la capacidad de almacenamiento.

DVD Doble Cara

Y no es que sea hipócrita, el hecho es que no presenta como los demás un lado en el cual escribir con un marcador la información que contiene, puesto que por ambas caras es grabable. O sea, se coloca el disco, se graba la información, luego se puede sacar de la unidad, invertir su posición y volver a quemar.

DVD Doble Cara Doble Capa

Este vendría siendo algo así como el rey de reyes. Contienen dos caras y dos capas, lo que da como resultado un disco en el cual se puede grabar unas 4 veces más información que en un DVD convencional: 17.1 Gb (5 discos de estos y se puede almacenar toda la información de una máquina de 80 Gb de disco duro, Uff!!)

Nero

Nero es un eficiente programa para quemar discos. Es capaz de reconocer el hardware de la máquina y ajustarse a este de forma automática al mismo, evitándole al usuario que tenga que hacer maniobras que pudieran afectar su normal desempeño. Ofrece también varios programas de considerable valor que nos permiten visualizar imágenes, películas y reproducir música. Otras herramientas de igual forma acompañan a este multifacético software, pero como no son el centro de este artículo, se quedarán para otra edición…

Entre los entornos que les hablé en el párrafo anterior tenemos el Nero Express y el Nero Burning ROM, siendo este último más complejo de trabajar por la gran cantidad de opciones que nos brinda, lo que lo hace más personalizable y por lo tanto, desde mi punto de vista, MÁJ MEJOL (esa frase me recuerda a …)

Nero Burning ROM

Nota: Para abrir el Nero Burning ROM haga clic en Inicio, diríjase a la carpeta donde se encuentra el acceso directo al programa, luego párese en el submenú Data y seleccione “Nero Burning ROM”.

Cuando se abra lo primero que verá será algo similar a esto:

Este es la primera ventana que se abrirá y es la que da acceso a escoger que tipo de disco vamos a quemar y las características del mismo.

Como pueden ver el tipo de disco es CD y bajo este se agrupan los distintos tipos de CD que podemos crear. (En esta primera parte me centraré en los más comunes)

CD-ROM (ISO): Así se denomina lo que muchos entendemos como un CD de datos. Este tipo de disco será el idóneo para grabar información que será vista luego en un ordenador la cual no excluye la grabación de fotos, videos y música, sino que se le puede añadir también documentos de texto plano (txt), archivos de Office(*.doc, *.ppt, *.mdb, *.xls, *.pps, *.rtf…). En fin, este será el tipo de disco que debemos escoger para almacenar de forma externa todas las aplicaciones y datos que no usamos a diario pero no queremos perder de vista para siempre.

Audio-CD: Este es el típico disco de música que será reproducido en los equipos de audio, téngase en cuenta que NO ES UN CD MP3, es un CD de audio normal.

CD Copy: Marcaremos esta opción cuando queramos hacer una copia de un CD. Nótese que no se puede modificar nada, o sea, esta opción es hacer una copia idéntica de otro disco, si es de audio, pues obtendremos un CD de audio, si es video, obtendremos un CD de video, si es …

Video CD: este es el ideal para grabar videos musicales, películas y demás. Este es uno de los que, acompañado de los CD de datos y Cd de audio más e utiliza, pero ojo, antes de quemar con esta opción, debemos ir a la pestaña Video CD y asegurarnos que la opción NTSC esté se seleccionada y no PAL (para más información consulté en BlackHat #36, “Velocidad y tiempo en Cine, TV y Video”).

Super Video CD: Este es un formato muy parecido al anterior, pero a diferencia de aquel, en este tipo de CD se puede hacer algunas modificaciones al video que se graba haciendo que no sea estándar. Esto como tal no afecta al grabador ni al disco pero, en algunos reproductores de VCD puede no ser legible la grabación.

Básicamente estos son los tipos de discos que con más frecuencia se crearán.

Continuará...

Continuar leyendo

Ingeniería social

Sasuke [teresita.milo@infomed.sld.cu]

Bueno les traigo algunas informaciones sobre un término tal vez poco usado en nuestro país en cuanto a informática se trata, pero no quiere decir que no se aplique en la práctica y que también no debamos saberlo usar a nuestro favor cuando nos convenga, o estar preparados y conscientes para no ser víctimas del mismo. Sin más preámbulos me refiero al término “Ingeniería Social”.


En el campo de la seguridad informática, ingeniería social es la práctica de obtener información confidencial a través de la manipulación de usuarios legítimos. En otras palabras es el método mediante el cual se obtienen los datos necesarios directamente de las víctimas o personas cercanas a ellas para efectuar alguna maniobra, la mayoría de las veces con fines nada buenos y perjudiciales para la víctima.

Luego de la comunicación con la víctima los datos obtenidos son procesados y analizados para posteriormente utilizarlos con un fin bien diferente al que le fuera informado. Por tal motivo y con buenas o malas intenciones en muchos países la aplicación de esta técnica es considerada un delito por violar la privacidad, ya sea de usuarios individuales, empresas u organizaciones.

Anteriormente el término Ingeniería Social se despreciaba de entre las técnicas del hackeo, por no considerarse un método “técnico”, pero posteriormente fue aceptado dado la imposibilidad de llevar a cabo algunas grandes maniobras sin su utilización.

Esta técnica la pueden usar ciertas personas, tales como investigadores privados, criminales, o delincuentes computacionales (hackers, aunque el termino correcto es cracker) para obtener información, acceso o privilegios en redes o sistemas de información que les permitan realizar algún acto que perjudique o exponga a la persona u organismo comprometido a riesgo o abusos, aunque pueden haber ocasiones en que tal vez no sea usado para perjudicar a otra persona u empresa sino para mero uso a favor del “ingeniero”.

El uso de esta técnica viene dado cuando se necesita conocer algo que por otras vías no es posible y consiste en comunicarse con la víctima, convencerla, entablar conversaciones y “sacarle” la información necesaria sin que esta note lo que realmente está sucediendo.

El principio que sustenta la ingeniería social es el que en cualquier sistema "los usuarios son el eslabón débil". En la práctica, un ingeniero social usará comúnmente el teléfono o Internet para engañar a la gente, pretendiendo, por ejemplo, ser un empleado de algún banco o alguna otra empresa, un compañero de trabajo, un técnico, un cliente o un administrador de redes.

Quizá el ataque más simple pero muy efectivo sea engañar a un usuario llevándolo a pensar que un administrador del sistema está solicitando una contraseña para varios propósitos legítimos. Los usuarios de sistemas de Internet frecuentemente reciben mensajes que solicitan contraseñas o información de tarjeta de crédito, con el motivo de "crear una cuenta", "reactivar una configuración", u otra operación benigna; a este tipo de ataques se los llama phishing(pesca).

Los usuarios de estos sistemas deberían ser advertidos temprana y frecuentemente para que no divulguen contraseñas u otra información sensible a personas que dicen ser administradores. En realidad, los administradores de sistemas informáticos raramente (o nunca) necesitan saber la contraseña de los usuarios para llevar a cabo sus tareas. Sin embargo a veces el desconocimiento de las personas hace que incluso no sea necesario aplicar este tipo de técnicas para obtener lo que se quiere y puedan ser obtenidos los datos de una forma más sencilla.

Hay que destacar que en nuestro país algunas o muchas de estas técnicas no se ven o se ven bien poco porque no estamos informatizados en la medida que estos métodos necesitan para ser aplicados. Pero hay otras que si, y sobre todo las referentes a usuarios y contraseñas de cuentas de acceso telefónico, correo, e Internet, para las personas o lugares donde haya. Si mal no recuerdo algo de esto sucedió con las cuentas de Infomed hace algunos años atrás, creo que llamaban o escribían haciéndose pasar por un administrador de la red de Infomed y le pedían su usuario y contraseña con determinado objetivo, que claro está tenía algo de lógica como para engañar a muchos. Luego de eso bueno je je je, creo que de más está decir que esos usuarios no podían acceder nuevamente a sus cuentas y los problemas que esto acarrea y mas en aquel entonces que no existía eso del anclaje de la cuenta a un # de teléfono, ni el sitio http://accesotelefonico.sld.cu donde puedes ver los detalles de las conexiones, ni las famosas 25 horas.

La ingeniería social también se aplica al acto de manipulación cara a cara para obtener acceso a los sistemas computacionales.

El motivo de la ingeniería social es muy simple de entender: Siempre es necesario contar con información, mientras mayor sea el volumen de información obtenida mejor, sobre todo en movimientos relacionados con la seguridad informática, donde los actos caminan por la cuerda floja que separa lo legal de lo ilegal sin estar debidamente delimitado. Ejemplo, la diferencia entre el peor de los rateros que quiere “mudar” un domicilio y un experto en computación que quiere hacerse con una importante base de datos de determinada empresa. El primero necesita saber la hora en que no hay nadie en casa. El segundo necesita saber la hora en que no está el administrador del sistema. En esencia es lo mismo. Claro que para ambos casos con esa sola información no alcanza, pero siempre la pieza clave es la información.

Tampoco hay que creer que la ingeniería social es de un solo sentido. No siempre es el estafador o hacker que embauca a su víctima. A veces, sistemas basados en ingeniería social son diseñados para proteger a las víctimas de hechos delictivos como robos o atracos.

La principal defensa contra la ingeniería social es educar y entrenar a los usuarios en el uso de políticas de seguridad y asegurarse de que estas sean seguidas, así como no brindar información a desconocidos referente a cuentas, correos, ni nada por el estilo.

Uno de los ingenieros sociales más famosos de los últimos tiempos es Kevin Mitnick. Según su opinión, la ingeniería social se basa en estos cuatro principios:
Todos queremos ayudar.
El primer movimiento es siempre de confianza hacia el otro.
No nos gusta decir No.
A todos nos gusta que nos alaben.

Continuar leyendo

El uso de los socket

DJ_bryan [jbpineda@estudiantes.uci.cu]

El objetivo de este artículo es introducirlo a la programación orientada a las redes con el uso de los socket, en especifico trataremos dicho tema orientado al lenguaje de programación de alto nivel JAVA, que consta de una muy cómoda implementación de la clase socket además de grandes facilidades para su manejo.

Las clases de java que implementan los socket son:
java.net.Socket
java.net.SocketServer

java.net.Socket nos permite establecer un socker en el cliente y establecer una conexión con un socket servidor.
java.net.SocketServer sirve para establecer un socket en un servidor y escuchar las peticiones de soket clientes.

Trabajar con un socket cliente requiere varios pasos:
1- Abrir el socket utilizando uno de sus constructores, estableciendo la ip y puerto de destino.
2- Abrir los stream de entrada y salida mediante los métodos getInputStream() y getOutputStream().
3- Enviar y recibir los datos que deseemos procesar en nuestra aplicación utilizando los métodos definidos por nosotros en dependencia de la problemática.
4- Y por ultimo cerrar los stream mediante el método close()
5- Y cerrar los socket mediante el método close()

Los atributos con los que cuenta la clase socket son:
getLocalPort(): Devuelve el puerto origen (local).
getInetAddress(): Devuelve la dirección destino (remota).
getPort(): Devuelve el puerto destino (remoto).
getLocalAddress(): Devuelve la dirección origen (local).

Ejemplo:

import java.io.*;
import java.net.*;
public class EchoClient
{
  public static void main(String[] args)
  {
    try
    {
      Socket clientSocket = new Socket("192.168.1.2",1234);
      PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),true);
      BufferedReader in = new BufferedReader(new InputStreamReader
(clientSocket.getInputStream()));
      System.out.println("Enviando: ¡¡¡¡Ecooo!!!!");
      out.println("¡¡¡¡Ecooo!!!!");
      System.out.println("Recibiendo: " + in.readLine());
      out.close();
      in.close();
      clientSocket.close();
    }
    catch (UnknownHostException e) { }
    catch (IOException e) { }
  }
}

Trabajar con un socket servidor requiere varios pasos:
1-Abrir el socket: mediante uno de sus constructores, habitualmente dándole el puerto donde escuchar.
2- Enviar y recibir los datos que deseemos procesar en nuestra aplicación utilizando los métodos definidos por nosotros en dependencia de la problemática.
4- Cerrar los streams: mediante el método close().
5- Cerrar el socket: mediante el método close().

Ejemplo:

import java.io.*;
import java.net.*;
public class EchoServer
{
  public static void main(String[] args)
  {
    try
    {
      ServerSocket serverSocket = new ServerSocket(1234);
      Socket clientSocket = serverSocket.accept();
      PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
      BufferedReader in = new BufferedReader(new InputStreamReader
(clientSocket.getInputStream()));
      String inputLine = in.readLine();
      System.out.println("Recibiendo: " + inputLine);
      String outputLine = inputLine.toUpperCase();
      System.out.println("Enviando: " + outputLine);
      out.println(outputLine);
      out.close();
      in.close();
      clientSocket.close();
      serverSocket.close();
    }
    catch(IOException ex) { }
  }
}

Próximo artículo:

Creación de un servidor web simple con soporte para múltiples clientes paso a paso utilizando técnica de multihilos. (Trabajo con ficheros, socket, hilos)

Continuar leyendo

Formato adecuado de imagen

Alien [blackhat4all@gmail.com]

Poco o nada sabe un usuario común sobre los formatos de imágenes y su posible utilización para obtener beneficios. Ya en BlackHat se han escrito, aunque pocos, algunos artículos en los que se habla de cierta manera sobre el tema. Ahora, yo no pretendo retomar un tema viejo y tratar de sacarle el sumo para ver hasta donde llega, la idea de este artículo es más bien enseñarles a los usuarios de casa cuales son los tipos adecuados de imágenes que deben usar para cada cosa y por qué.

Cuando uno se inicia en este mundo de la informática o de la computación (para decirlo con palabras más suaves), lo primero que se le pega son las extensiones de los archivos. Y esto no se hace por la fuerza o cosa por el estilo, el caso es que uno se empieza a codear con personas que se pasan el día entero hablando de asteriscos, puntos y nosequecosa, así que por defecto se infiere que, si uno quiere estar al tanto de la conversación y dar de ves en cuando una modesta opinión, se tiene que al menos saber que tipo de archivo identifica cada extensión (al menos las más conocidas).

Las primeras en pegarse son los .exe, y no solo porque son las extensiones de los “jueguitos”, sino porque es la extensión que identifica al archivo que nos permitirá craquear digo juego. Casi inmediatamente se nos van pegando otras: .doc, .ppt, .jpg, .txt y así sucesivamente una serie de extensiones que nos serán de utilidad desde ese momento.

Poco a poco, según nos vamos metiendo adentro, vamos escuchando cada ves más extensiones y más extrañas: .psd, .ani, .gif, .mdb, .max, .wmv… todas que cumplen una función determinada para el archivo a quien representa. Pero bueno la pregunta en si es, ¿sabemos hacer un uso correcto de estas extensiones?

En la red.

Me he decidido a escribir este artículo pensando más en la red que en otra cosa. El caso es que cuando vamos a hacer una transferencia de una imagen de nuestro disco duro a una memoria, pocas veces nos interesa saber el tamaño exacto de la imagen, y estoy casi convencido que la mayoría de las veces no nos preocupamos ni siquiera por el tamaño promedio. Ya tenemos en mente que una foto, en la mejor calidad, deben ser aproximadamente unos 800 Kb, en casos más extremos aún se pueden llevar 1 o 2 Mb (Existen casos más EXTREMOS aún). Siendo así, que diablos nos importa el tamaño de la imagen si nuestra memoria supera por mucho los 128 Mb??

Pero en la red todo es distinto. Las conexiones son de aproximadamente unos 4 Kb/s, algunos disfrutamos de unos 6 o 7 Kb/s y otros que pertenecen a un grupo más selecto aún son los que superan los 10 Kb/s. Siendo así, una página que contenga una sola imagen de 20 Kb, para la gran mayoría de las personas se demorará en descargarse cerca de 5 seg. Si a esto le sumamos el tiempo que nos tardamos en conectar a dicha página, el tiempo de descarga del texto que normalmente contiene la web y demás, la espera se convierte en una verdadera desesperación.

Por cosas de la vida esas son las velocidades de conexión con las que debemos lidiar, así que solo nos queda a nosotros tratar de dar algunos consejos o sugerencias que nos ayuden a olvidar dichas pernas y navegar un poquitín más aprisa.

Formatos:

Muchas Web de las que he visto utilizan el formato de archivo GIF como un estándar para la colocación de imágenes. No me considero un experto en la materia, pero en el año y medio que llevo en BlackHat me ha dado cuenta que ese formato no es el más adecuado para web dado los bajos niveles de compresión que realiza.

Para nosotros, que a diario tenemos que estar buscando nuevas alternativas que nos permitan poner más contenido en la misma capacidad, el tamaño se ha vuelto algo así como una quimera. Cada imagen, cada nuevo diseño, cada retoque, está pensado para que, sin caer en una imagen borrosa, está reduzca su calidad lo más posible, dando así espacio para que nuevos contenido reemplacen el hueco.

Aquellos que alguna vez se han atrevido a abrir la carpeta de las imágenes, se habrán dado cuenta que solo utilizamos dos tipos de archivos de imagen: PNG y JPG, a continuación les explicaremos el porque.

PNG vs JPG

JPG: Este es el formato adecuado en caso que se quieran representar imágenes que contengasn paisajes, cuerpos y caras de personas, objetos abstractos y cosas que no puedan ser identificadas como tal. Este formato, aunque aporta gran pérdida de calidad, es el idóneo en caso de representar imágenes como estas.

PNG: Este es un tipo de archivo que su sistema de compresión está basado en gráficos y vectoriales, es algo más bien como ir escribiendo en formulas lo que se quiere representar. Es muy fácil de identificar la imagen que se debe guardar en este formato ya que por lo general no serán más que áreas rellenadas con color (por decirlo de una manera que sea comprensible por todos).

Según Wikipedia “PNG (Portable Network Graphics) es un formato gráfico basado en un algoritmo de compresión sin pérdida para bitmaps no sujeto a patentes. Este formato fue desarrollado en buena parte para solventar las deficiencias del formato GIF y permite almacenar imágenes con una mayor profundidad de contraste y otros importantes datos.”

Siendo así, sin duda alguna PNG es muy superior a GIF, entonces, ¿Por qué es aún muy utilizado en la WWW?

A veces las personas, al no conocer estas cosas, utilizan como patrones a páginas que tienen estos defectos en la selección del formato de imagen, manteniéndose por esa línea, y como no han hecho la prueba de cambiar todas sus imágenes GIF a PNG, piensan que han construido la mejor web y no es así.

Ejemplo

En este mundo tan desarrollado existen miles de programas que permiten la conversión y creación de imágenes de ambos tipos. Uno de los más conocidos y quizás hasta el más utilizado por todos es el Photoshop. (Las imágenes de BlackHat se ajustan con Photoshop).

Una vez colocada la imagen y habiéndole dado todos los retoque que queremos, en lugar de ir al habitual “Guardar como”, hacemos clic en “Guardar para Web…”. Allí nos saldrá un cuadro muy similar a este:


Y nos dará la posibilidad de cambiar el tipo de imagen mientras en la barra inferíor vemos el tamaño exacto que tendrá a la hora de guardar. Como pueden ver aparecen varios formatos (gif, jpg, png-8, png-24,wbmp).

Para mostrarles el ejemplo vamos a tomar la imagen del buscaminas de la sección de Ocio de BlackHat (Imgs/Buscaminas.png). Esta imagen tiene un tamaño de 914 bytes. Vamos a colocar esta imagen dentro del Photoshop y luego vamos a darle clic a “Guardar para Web…”, allí nos saldrá una ventana muy similar a la de arriba. Ahora vamos a seleccionar el tipo de imagen GIF y le daremos la máxima cantidad de colores (256). Como vemos, el tamaño del archivo resultante será de unos 2.374 Kb, si cambiamos ahora a PNG vemos que la reducción del tamaño es más que significativo y la pérdida de calidad es nula.

Como se puede ver, al ajustar el formato de una imagen, este puede ser mucho más pequeña, lo que sin duda alguna beneficiará al que navega en esa web.

Actualmente, aunque aún hay muchas páginas que mantienen el formato PNG para representar las imágenes, también podemos ver otras que van a la vanguardia y ganan con esto gran aceptación dentro de los navegantes, ejemplo de estas son Google y Wikipedia. Ambos sitios utilizan como formatos principales PNG y JPG, y dejan solo en GIF las imágenes que contienen animación.

Es ya sabido por todos que con cambiar las imágenes solamente no se logrará una descarga mayor de la página, pero si está claro que es uno de los aspectos claves y que, por desgracias, aún en el dominio .cu hay mucho que desear en ese tema.

Continuar leyendo

Trucos para Linux (Parte 2)

Alix [aacg@sum.upr.edu.cu]

Espero que la primera parte de este artículo les haya gustado. A continuación mas soluciones.

7. Comprobar remotamente que un ordenador está conectado a la red:

Simplemente haga:
ping <nombre o IP máquina>
Tendrá que salir mensajes indicando que se están enviando y recibiendo unos paquetes exitosamente, si no saldrá un mensaje de error y/o se quedará parado un buen rato.

8. Mandar todo lo que salga por pantalla a un fichero o impresora:

Teclee script fichero.txt o script /dev/lp0 según quiera enviar la salida a un fichero o a la impresora.
Haga todo lo que quiera que quedará registrado o impreso y cuando termine pulse simultáneamente las teclas <Control> y <D>.

9. Crear una cuenta de usuario sin contraseña.

Nos metemos como root y creamos un usuario de la manera habitual con adduser o linuxconf .
Tecleamos el comando passwd –d nombre_usuario
Cada vez que pongamos de login este usuario entrará directamente sin pedirnos la contraseña.
NOTA: Este usuario debe tener permisos muy restringidos porque lo que hemos ganado en comodidad se ha perdido en seguridad sobre todo si nos conectamos a Internet u otra red desde ese puesto. No es nada recomendable hacer esto con la cuenta root.

10. Copiar un disquete en otro.

Para esto podemos utilizar el comando dd que genera imágenes de disquetes y las vuelca después. Seguiremos estos pasos:

1. Generar la imagen del disco origen:
dd if=/1. dev/fd0 of=$HOME/imagen.img
2. Copiar la imagen en el disco destino:
dd if=$HOME/imagen.img of=/dev/fd0
3. Borrar la imagen del disco duro:
rm $HOME/imagen.img

$HOME es una variable que equivale al directorio por defecto del usuario actual en donde normalmente tendrás permisos de lectura y escritura ($HOME se puede sustituir por ~ que se consigue con <ALT> <F4>).
Si vas a usar una segunda disquetera, por ejemplo de 5.25" sustituye fd0 por fd1.

Estos comandos también sirven para copiar particiones completas unas sobre otras, sustituyendo fdx por hdxx, en estos casos debes saber muy bien lo que estas haciendo pues en la partición destino (la segunda indicada en el comando) se destruirán por completo los datos anteriores, además esta partición debe ser igual o a lo sumo mayor que la partición origen (la primera indicada en el comando).

dd if=/hdxa of=/hdyb (copia una partición en otra)
dd if=/hdx of=/hdy (copia de un disco duro en otro)

Donde: x: disco duro origen, y: disco duro destino, a: partición origen, b: partición destino.
Es conveniente hacer copia de seguridad de los datos importantes y tener a mano un disco de arranque de Linux por si las moscas.

11. Listado completo de los comandos de tu Linux.

Para conseguir un listado completo de todos los comandos instalados en tu linux tienes que pulsar dos veces la tecla <TAB> y a continuación <Y>, lo ideal es tenerlos en un fichero o bien sacarlos por impresora, pero claro al no ser esto un comando como lo vas a redireccionar a un fichero o a una impresora.
Yo lo he conseguido haciendo Telnet a mi máquina con un programa que manda un eco de la salida de consola a un fichero, quizá sea matar moscas a cañonazos pero funciona.

También puede ejecutar el comando script para capturar a un fichero todo lo que salga en pantalla.
De hecho así he obtenido el listado completo de comandos de mi Red Hat 7.3, son 4.243, así que hay para entretenerse.

12. Instalación de aplicaciones.

En Linux hay muchos tipos de instalaciones según la aplicación por lo que lo primero que hay que hacer es LEER DETENIDAMENTE los ficheros de ayuda, a veces, incluso hay que compilar:
RPMs: rpm -i nombre_aplicacion.rpm ó rpm -Uvh aplicacion.rpm
Estos comandos instalan paquetes .RPM propios de Red Hat, Mandrake o derivados.
El segundo método es más completo que el primero pues trata primero de preparar los paquetes con los que las posibilidades de éxito son mayores.
DEBs: dpkg -i nombre_aplicacion.deb
Este comando instala paquetes .DEB propios de Debian y variantes (como Knoppix).
tar.gz, tar, tgz, bz2 Proceda igual que cuando se descomprime estos ficheros.
Si después de la instalación no sabes donde se ha instalado tecleas:
whereis nombre_aplicacion

Continuar leyendo

¿Por qué Kaspersky?

yosoy [ivonnerh@infomed.sld.cu]

Ya mucho se ha hablado sobre este tema en muchos lugares, foros, revistas, etc, pero nunca se ha llegado a algo concreto. Una de las cosas que sin duda alguna tenemos que tener en cuenta para poder clasificar a un antivirus como el mejor o el menos eficiente son las comparaciones oficiales de algunas empresas dedicadas a este fin, como los son AV-COMPARATIVES, Virus-Bulletin, Check Mark y muchas más. Siempre he tenido la curiosidad de revisar estos rankings de comparaciones de antivirus, y siempre, y digo siempre sin exceptuar una vez, Kaspersky Antivirus ha logrado algún lugar en estas comparaciones; por supuesto, no siempre ha sido el primero, o el segundo, pero ha estado en algún lugar de la lista, es decir, lo importante no es ganar siempre, sino mantenerse entre los mejores, y en este sentido Kaspersky siempre ha triunfado. Lo otro que desde mi punto de vista se ha de tener en cuenta para comparar a un antivirus es la cantidad de clientes que posee, claro está que en esto siempre influyen las campañas de marketing, el lugar geográfico y todas esas cosas que todos conocemos; pero sin duda alguna la gente compra una solución antivirus y si no le resulta efectiva cambia rápidamente, y en este punto podemos decir que Kaspersky está entre los cuatro grandes a nivel mundial (Kaspersky, Symantec, Panda y McAfee).

Otra característica a tener en cuenta es la cantidad de virus detectados, para nadie es una sorpresa que la base de Kaspersky es una de las mayores internacionalmente, si contamos solamente el malware detectado el día 23/07/2008 posee en sus bases 986788 cifra que sigue en aumento constantemente, aparte de los Malicious Scripts y los Phishing Sites y de las técnicas firewall que mejoran a diario, esto demuestra la eficacia de este antivirus. Bien se ha de destacar que en las comparaciones realizadas por todas las compañías siempre se tienen en cuenta tecnologías como la heurística, dedicadas a analizar el código de las aplicaciones con el fin de determinar si son malware o no, esta técnica usada por gran cantidad de antivirus a nivel internacional es de gran importancia en la búsqueda de software no conocido. Pero este no es el secreto de Kaspersky, este posee una triple defensa que lo hace casi inmune a las infecciones hoy en día; combina tres protecciones distintas en un solo motor, la primera, la búsqueda de malware por código, técnica más usada a nivel internacional, la segunda: la heurística, esta es muy flexible ya que se puede configurar para que realice análisis poco profundo (consumiendo menos recursos), escaneo medio (combinando rapidez con efectividad) y altamente profundo (consumiendo mucho más recursos), aparte de usar las tecnologías iChecker e iSwift que permiten que un mismo archivo no tenga que ser escaneado más de una vez en el sistema, a menos que hayan sufrido cambios; y por último, la mejor de todas y la que hace verdaderamente al Kaspersky poderoso ante cualquier amenaza, la Defensa Proactiva: esta se dedica a revisar en tiempo real lo que hace cada componente de nuestro sistema, cada aplicación que se vaya o esté ejecutándose, si alguien accede al registro o intenta hacer alguna modificación a nuestro sistema, la ventaja de esta sobre la heurística es que como existen técnicas para hacer que un virus no sea detectado por un análisis heurístico, como por ejemplo detener la ejecución de la aplicación cuando un análisis heurístico esté ejecutándose; bueno en fin, la Defensa Proactiva busca lo que en realidad hacen las aplicaciones sin importar su código y en caso de detectar algo sospechoso alertaría al usuario y daría la opción de virar atrás todos los cambios producidos en el sistema por tal aplicación sospechosa.

Esta última desde su creación, a pesar de ser una gran ventaja para Kaspersky sobre otros antivirus, supuso una desventaja desde el punto de vista cliente, ya que no a muchos les agradó la idea de que cada vez que intentaba hacer algo en la máquina y al antivirus le parecía sospechoso mostraba una alerta, cosa que podía ser arreglado con una buena configuración del Kaspersky para que conozca todas las aplicaciones seguras del sistema, pero para un usuario poco avanzado en el tema sería algo bastante complicado; esto se ha ido solucionando con el tiempo a tal punto que ya en la versión oficial 8.0.0.357, es decir Kaspersky 2009 ya está resuelto el problema viniendo configurado para todas las aplicaciones conocidas como seguras internacionalmente.

Ya en los últimos tiempos el KAV (Kaspersky Anti-Virus) ha traído una revolución de tecnologías, ya la versión 8 tiene un motor para buscar vulnerabilidades en cada archivo dando la posibilidad de descargar el archivo reparado desde el sitio oficial, tiene un reparador de registro para en caso después de una infección, tiene Anti-Phishing para evitar el robo online, además de nuevas técnicas de soporte que son capaz de recolectar información de un sistema con el fin de ser analizadas por un experto y determinar si su sistema está en riesgo o no, todo esto ligado a que esta versión a pesar de ser la más completa de todas es la que menos recursos del sistema consume.

A esto debemos añadir la gran flexibilidad de la configuración del antivirus, podemos activar o desactivar cualquier cosa, e incluso podemos hasta decidir cuan efectivo deseamos que sea cada componente. También cabe señalar la potencia de las actualizaciones de Kaspersky, es el único antivirus capaz de a través de sus actualizaciones cambiar cada componente del mismo, y digo cada componente, porque están realizadas de tal forma que hasta la interfaz gráfica podrían cambiar si quisieran con una actualización. Además, desde el punto de vista de los cubanos nos convendría usar el Kaspersky, ya que es el único antivirus internacional que se ha atrevido a desafiar el bloqueo y hacer relaciones con nuestro país por lo cual somos parte de su interés de búsqueda de códigos nuevos, esto lo hace más efectivo en nuestra zona que cualquier otro antivirus internacional.

Debo aclarar que todo lo dicho anteriormente no supone un cambio de antivirus por parte del lector, solo cabe señalar que he redactado este artículo para dar a conocer las ventajas que desde mi punto de vista posee el Kaspersky sobre todos los antivirus que he usado, si alguien no comparte esta opinión está en todo su derecho y demás pudiera publicarla para entre todos llegar algún día a alguna conclusión. Sin descartar que la gran mayoría de los antivirus suelen ser eficaces en las zonas de interés de los mismos. Sin más les dejo a ustedes que saquen su propia conclusión.

Continuar leyendo

Retorno al 3D

JKS [jksware@gmail.com]

Hace un tiempo atrás h0ax (hoax@fresnomail.com) publicó un primer capítulo de lo que pretende ser un tutorial de gran escala para que los programadores interesados en el mundo del 3D pudieran juguetear con objetos y texturas en tres dimensiones mediante la aplicación de OpenGL, una engine más que potente y conocida. Pero como todas las cosas, OpenGL fue hecha en su versión inicial hace muchos años, y concebida – aunque esta última aplicación puede cambiar – para ser usada fundamentalmente por los programadores de C++ y su comprensión puede llevar más que un curso de “Apréndalo usted mismo en 21 días”.


Sin ánimo de hacer competencia, sino de ayudar a la comunidad a encontrar opciones para la programación enfocada en 3D, pienso revelar una serie de pequeños artículos que pretenden, eso sí, robándole el menor tiempo posible, encaminarlo en el maravilloso mundo de las colisiones, normales y vectores que es la base ingenieril de todas la maquinaria tridimensional de un juego. Repito que sólo me concentraré en la parte tridimensional, sin enfocar otras muchas problemáticas comunes que salen a la luz en un juego o aplicación que requiera el uso de renderización de objetos en tres dimensiones, no yéndonos más allá en lo que podría ser la introducción a cómo crear un juego, cualquiera que este sea, desde el punto de vista de interface de usuario y jugabilidad per sé.

¿QUE ENGINE USAS?

Hace poco en uno de los encuentros de BlackHat en 23 y J – que próximamente será reubicado – escuché algo parecido entre Chenry y h0ax. Maravillándome por dentro de la respuesta siguiente, me acometí a pensar que era, en términos generales, lo que había que hacer, por sólo mencionar programación, y no las matemáticas que esto trae de fondo, para realizar un juego de primera persona en 3D partiendo desde cero, o cero coma uno:
- Utilizamos mayormente DirectX. – dice Chenry refiriéndose a unos colegas – ¿Y tú?
- Hice una mía sobre OpenGL – respondió h0ax.

Por más que esto me costó procesarlo, y aunque no lo reproduzco aquí fielmente y en el orden necesario que sucedió, quedé nuevamente impactado por el hecho de programar, casi desde cero, una engine para un tipo de juego que lleva, al menos en la más básica de las estrategias, jugándose por casi una década: un first person shooter.

Reconozco que una vez hecho la programación de dicha engine, nuestro amigo h0ax dispone de una completa utilidad y libertad de movimiento – en términos lógicos, claro – para hacer lo que le venga en ganas con dicha engine. ¿Pero cada vez que alguien quiere hacer un juego tiene que programarlo desde cero, o casi cero, eso si no contamos la enumeración de dispositivos, aparatos gráficos, aparatos de input como el keyboard, el ratón o el joystick y demás, todo a nivel medio o bajo? Por supuesto que no.

LA INVENCIÓN DE LA RUEDA

La rueda – aunque no soy historiador – se inventó hace muchos siglos. No existe necesidad de volverla a inventar, procrear ni medir. Nuestras bicicletas y autos ya vienen con ruedas “prefabricadas”, por lo que cada vez que un ingeniero de la General Motors se quiere lanzar a diseñar el “carro del año”, no tiene que perder tiempo pensando cómo hacer la rueda, porque esta en definitiva, no difiere en principio en mucho de las demás ruedas: es circular, compuesta de un derivado del corcho, y la razón entre perímetro y diámetro es de 2 * pi. Lo mismo sucede con Ford, Mercedes-Benz, Land Rover y Toyota.

Entonces por qué, si es más fácil “copiar y pegar”, en términos de diseño de una engine, ciertas compañías de software requieren que sus juegos se hagan casi desde cero: en la mayoría de los casos, por qué las engines disponibles para empresas, que tienen un altísimo nivel, son caras y no están sujetas a cambios.

Un ejemplo válido es el siguiente: cuando Blizzard hace Starcraft – el original ó 1.00 – lo monta sobre una plataforma que no da a conocer cuál es. Probablemente la programaron casi desde la base, por lo que adaptaron toda la jugabilidad a un contenido plenamente bidimensional visto desde un ángulo estratégico – ya que en aquel momento no tenían ni siquiera la menor idea del récord de ventas que el mismo iba a generar. Pero evidentemente, al menos diez años después que planean lanzar la segunda parte de la saga Starcraft, no van a utilizar nuevamente el viejo engine. De hecho, la mayoría de los cambios, según declaraciones de sus propios diseñadores, consisten en agregar nuevos personajes y equipos – es decir algunas opciones de jugabilidad – pero el contenido es el mismo, una batalla épica. Por ello, han tenido que adaptar todas las viejas opciones en 2D a estas nuevas – que casi todos hemos visto en sus video-demos – en 3D.

Para ellos – una megaempresa como Blizzard con un megaproyecto como Starcraft, que cuenta con los recursos económicos, humanos y mucho pero mucho tiempo – es mejor e incluso más fácil, concentrar el cambio en el engine de base que en la reprogramación de su nivel lógico de inteligencia artificial e interfaz: cómo va a encontrar una pared determinado personaje, y cómo va a hacer para darle la vuelta; pero cómo un player ordena mover a los caracteres dentro del mapa, es prácticamente la misma historia de la versión anterior. Para nosotros – unos pobres infelices que apenas sabemos del mundo exterior – es mucho más ahorrativo de recursos y tiempo programar en base a lo ya hecho y pensado, porque nos permite concentrarnos en la estrategia y la interacción, más que en dispositivos, texturas, aparatos y flags.

3DSTATE PARA TODOS LOS GUSTOS

Busqué en Google – 3 años hace – lo que constituye el contenido real de este tutorial bajo el query “3d programming + Windows”. En realidad, no se cómo ha cambiado los resultados de la búsqueda de aquel entonces hacia el momento actual, pero esa vez me devolvió el inteligente buscador la siguiente opción de primera: www.3dstate.com. Cuando hice clic encima del vínculo – contaba con navegación internacional como comprenderán – pude ver el sitio que anunciaba la programación en 3D para Windows más fácil y robusta disponible en la web. Si bien los gráficos no me impresionaban mucho – en mayor parte por haber estado jugando por aquella época casi enviciado juegos de última generación de nivel comercial – si lo hizo la cantidad de código necesario para generar un juego de pequeñas dimensiones: era mínimo el código y máximo el placer que sentía al cambiar un par de instrucciones de unos demos que por entonces descargué.

Para qué decir que podía programar en mi lenguaje preferido: ¡Delphi!. Pero si me interesaba también podía hacerlo en Visual C++ – siempre como primera opción – además de Visual Basic y C #. Incluso en el caso que ninguno de la lista fuese mi lenguaje predilecto podía hacer un par de modificaciones a un fichero y listo, accedía al núcleo de la engine 3D State – antiguamente conocida como Morfit – mediante una biblioteca dinámica “3dstate.dll” de apenas 1 MB. Esta biblioteca, cabe apuntar, a su vez se basa en la gigantesca de Microsoft, la DirectX, específicamente en lo referido a Direct3D. En la carpeta Tools de esta edición he mandado a incluir dicho DLL y el código necesario en todos los “idiomas” que mencioné.

NOTA: Para poder visualizar todos los ejemplos es requisito tener instalado una versión 9 o superior de directX, de ser posible la última de las 9.c, casi siempre incluida en los juegos comerciales. No es necesario en cambio tener instalado su paquete SDK de creación, sólo la runtime.

Si bien ahora reconozco que no todo en el mundo del 3D es “panes y flautas”, si bien me vino un empujón de parte de los autores de este ingenioso engine que les presento. Quizá, y sólo quizá si no hubiera habido algo tan simple alrededor para una persona desconocedora por completo de dicha modalidad de programación, entonces no me hubiera inclinado por el 3D finalmente verán que hice. Ahora veo que para hacer algo realmente serio y de calidad comercial siempre hay que caer en un nivel un tanto más bajo, pero para comenzar a programar en este mundillo, 3Dstate es una opción más que recomendada.

PASOS DE INICIALIZACIÓN (ALIAS HELLO WORLD)

1. Lo primero que haremos para inicializar nuestro mundo es poner en la cláusula uses al principio de la hoja de código la unit STATED. Esto hará que nuestro programa se vincule con las funciones y procedimientos de 3D State Engine. Debemos asegurarnos de que la unidad STATED – o como sea que la deseemos llamar – sea accesible por nuestro compilador, por lo que se recomienda copiar el archivo de código al mismo directorio del código fuente de nuestra aplicación, además de posteriormente copiar el archivo 3dstate.dll a la que esta hace referencia.

2. Después de haber agregado esta unit (Stated.pas), podemos empezar a escribir el código para cargar nuestro mundo. Debemos entonces poner lo siguiente en el procedimiento OnShow del Form (TForm1.FormShow):

procedure TForm1.FormShow(Sender: TObject);
var
  LoadWld : Integer;
  ErrorMsg : string;
begin
  LoadWld := STATE_engine_load_world('Leccion1.wld', '', 'Bitmaps', USER_DEFINED_BEHAVIOR);

  if(LoadWld <> OK) then
  begin
    ErrorMsg := 'El mundo ha fallado al cargarse. Abortando';
    MessageBox(Handle,PChar(ErrorMsg),'Error',MB_OK or MB_ICONWARNING);
    Close;
    exit;
  end;
  camera := STATE_camera_get_default_camera;
end;

Si nuestro archivo se encuentra en plena disposición para ser cargado y no tiene ningún error entonces se pasará a cargar la cámara; si por el contrario se encuentra algún error se mostrará el mensaje anterior.

La función STATE_engine_load_world carga el archivo *.wld o similar. Los parámetros son:

a) Nombre del archivo. Los archivos mundo virtual soportados por esta engine son de extensión *.wld o *.state. Se debe ser cauteloso a la hora de guardar los archivos en el WorlBuilder-Webmaker – que no es más que el programa que genera estos archivos, aunque también se puede hacer por medio de un plugin a 3D Studio Max u otros editores de 3D conocidos – ya que la extensión predeterminada es en formato ASCII, que ocupa mucho espacio aunque es editable mediante notepad o similar – para la versión final de una aplicación recomiendo encarecidamente que el mismo sea binario.

b) Directorio en que se encuentra el escenario 3D. En este caso se encuentra en el mismo directorio que nuestra aplicación.

c) Directorio en que se encuentran los archivos de imágenes. El directorio es creado automáticamente por el WorlBuilder-Webmaker dentro de la carpeta del *.wld. El método clásico de organización siempre recomienda guardar las imágenes en un directorio por separado “Bitmaps”, por el que los archivos siempre sean editables desde el exterior sin necesidad de recompilar o volver a generar el escenario 3D.

d) El cuarto parámetro indica el modo de visualización de los objetos: USER_DEFINED_BEHAVIOR y EDITOR_MODE. El primero de estos dos es el modo estándar de visualización y del cual hablaremos en la mayoría de los siguientes tutoriales. Este modo tiene el control total sobre el mundo y en esencia solamente puede manejar los objetos dinámicos y no los estáticos. El modo editor (EDITOR_MODE) puede manejar los dos tipos de objetos, aunque consume más CPU. Como veremos existen muchas similitudes en este aspecto con otras engine.

NOTA: Cada vez que un archivo de escenario 3D soportado por 3D State Engine se carga en una aplicación se autogeneran dos archivos que guardan datos del momento de ejecución. Si ocurre algún problema estos guardan la razón de porqué se generó. Estos dos son: error.log y 3DState.log que se pueden encontrar en el mismo directorio de ejecución del programa.

3. Nos hemos referido ha camera como una variable del tipo DWORD. Así que debemos declararla en la sección Private de nuestra form:

Camera: DWORD;

NOTA: En este ejemplo hemos tomado la handle – o manejador, traduciéndolo duramente al español, que no es más que un puntero – de la cámara con la función STATE_camera_get_default_camera tomando la camara estándar de ese mundo, pero debo aclarar que en un escenario donde exista más de una cámara se debe especificar el nombre de la misma con la función STATE_camera_get_using_name().

4. Ahora es necesario declarar cual de las cámaras será las que representará el mundo en nuestra form. Para eso agregaremos unas cuantas líneas al método al cual llama el evento FormPaint de la ventana en cuestión.

procedure TForm1.FormPaint(Sender: TObject);
begin
  if (STATE_engine_is_empty() = YES) then
    exit;

  STATE_engine_render(handle, camera);
end;

Lo primero que hemos hecho es asegurarnos realmente de que el mundo está bien cargado, de manera contraria 3D State Engine se cerrará con nuestra aplicación a partir del código que especifico en el próximo paso. La segunda función hace el trabajo fundamental de todas nuestras operaciones, representa la imagen que nosotros hemos creado a partir de todas las propiedades asignadas al mundo virtual y a los objetos.

A diferencia de otras engines – como aquellas de nivel bajo y medio que hacía referencia – no necesitaremos preocuparnos por un buffer y por la resolución de la pantalla. Simplemente entregaremos el handle del aparato de renderización de nuestra ventana a la engine.

5. Este es el último paso que debemos complementar a nuestro trabajo antes de compilar el proyecto en Delphi o cualquiera que sea nuestro compilador por primera vez. Lo que haremos será cerrar la form y liberar de memoria el contenido de 3D State Engine y nuestro mundo virtual recién cargado. (Como se puede notar en los ejemplos incluidos que están en cada uno de los lenguajes se incluye algo más de código, pero lo expuesto aquí es lo fundamental para que se ejecute al menos sin ningún tipo de interactividad )

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  STATE_engine_close;
  Action:= CaFree;
end;

NOTA: El archivo 3DState.log que se genera automáticamente cada vez que se abre un archivo soportado no sólo informa de los errores sino también de cuanta memoria y tiempo de CPU fue utilizada en cada uno de los procesos llevados a cabo para representar una imagen, borrar la pantalla, entre otros.

ALGUNAS RECOMENDACIONES FINALES

Primero que todo dedique su tiempo al estudio de las matemáticas básicas de colisiones, perspectiva y rotaciones, traslaciones y demás: es algo que nunca cambia. Segundo, haga un espacio en su programa entre el engine que use y la lógica del juego: no cometa el error de mezclar el contenido que usted ha programado que no requieren el acceso a bibliotecas externas o hacen de mediación con el usuario, con el resto del código que sí lo requiere. Por tanto, dedique unidades de código diferentes a el cómo a va a “pensar” su juego y el cómo va a traducir esto a acciones visibles. Y tercero, una vez que se halla leído todos los manuales habidos y por haber, incluyendo este :D, empiece a estudiar código: ni siquiera importa si ha sido programado para otro engine, la lógica de un juego no cambia mucho, mucho menos si se trata del mismo pan con diferente relleno.

En próximos tutoriales se verá como se mueven las cámaras, o a su defecto, los objetos que nosotros incluimos en el mundo 3D, y alguno que otro consejo relacionado con la práctica de programación. Para aquellos interesados en acceder al sitio www.3dstate.com para bajar por completo todos los editores y la última engine – de la que hasta el momento no dispongo – deberán pasar por un webproxy ubicado en el exterior, ya que al menos desde las conexiones que lo he visto en Cuba no accede desde hace unos 6 meses.

Continuar leyendo