miércoles, 10 de agosto de 2011

Que involucra ser un programador de software.

     Una persona que desee ser programador, o manejar algun tipo de lenguaje de programación en particular, debe sentir, como cualquier otra profesión, un gusto, una pasión por el tema. Este tipo de temas requieren aún un gusto mayor, puesto que un detalle minimo que se nos escape, da como resultado un programa que no es capaz de ejecutarse, o bien en su caso defectuoso. Nadie quisiera un programa que se ejecute mal, o que se cuelgue a cada instante. 

     Una de las habilidades que tiene que ser capaz de manejar un programador puede resumirse en los siguientes puntos:
  • Capacidad para resolver los distintos problemas. Un programador debe ser capaz de detectar dentro de un codigo complejo un punto, un punto y coma, un paréntesis, una declaración de variables, cualquier detalle que afecte el buen funcionamiento del programa.
  • Busqueda constante de información. Cualquier lenguaje, y mas aún como lo es C, requiere que los programadores esten en constante busqueda para mejorar o aprender los comandos que aun no manejamos, esto va mas alla de lo básico, puede ser que un programa en particular la primera vez que lo redactemos lleve 30 mil líneas de codigo, y luego de una buena busqueda se pueda resumir en 20 mil. 
  • Una capacidad de entender un programa no escrito por nosotros. Un programador puede y debe ser capaz de leer cualquier código no programado por nosotros, a pesar que nos pueda llevar algun tiempo, y mejorarlo si es posible, sabiendo clasificar o identificar para tanto nosotros como para las otras personas que puedan leerlo puedan entenderlo rapidamente.
  • No sentirse atemorizado. A veces, como yo incluso, cuando vemos un complejo código, tendemos a ponernos asustado o frenados por el hecho que no sabemos como leer dichas líneas, con un poco de paciencia e investigación se podra entender perfectamente.

     Esto tendrá como resultado una enorme cantidad de beneficios, y dependiendo desde el ángulo de donde se vea hasta puede ser divertido. Podrás darte la satisfacción que has aprendido algo nuevo, también es muy pero muy gratificante que como programador, luego de muchas errores y pruebas finalmente puedas ejecutar tu programa para lo cual fue diseñado. Y por supuesto dependiendo de la ubicación es un trabajo bien remunerado. 


     Aunque lo anteriormente mencionado son en parte los beneficios, debemos tener en cuenta los retos para lograr un éxito. No debemos olvidar que el fracaso no es una opción, nuestro programa en cuestión debe lograrse si o si. A veces la investigación puede tomar mas tiempo de lo que se dura para programar algo en concreto. Dependiendo del ambiente, a veces se sacrifica la vida personal para lograr lo que se requiere. A veces incluso estamos sentados tanto tiempo intentando lograr que se ejecute nuestro código que nos cansamos rapidamente, no olvidemos tomar un descanso. Incluso, es mejor detener el trabajo y continuar al dia siguiente, es mucho mejor retomarlo con una cabeza fresca que con la presión encima. 

     Tambien tenemos tener mucho en cuenta que cuando programamos fuertemente, nuestro horario de trabajo no es como la de la mayoria de la gente, no tenemos hora de entrada, mucho menos hora de salida, y que muchas veces no terminamos en el lugar de trabajo y lo continuamos desde nuestros hogares, y que requiere mucha pero mucha parte de nosotros el aprender constanemente, con un toque de imaginación propia.


Continuando en el siguiente apartado.

Lenguajes de Programacion

     Un tema tan amplio como cualquier otro, y en lo que refiere a la informatica y a la computación podria pasarme horas y horas y semanas hablando de lo mismo, y nunca acabaría puesto que estos tipos de temas requieren constante actualización tanto a nivel de software como nivel de aprendizaje. Decidí abrir un nuevo tema apartando un poco sobre la alta definición, puesto que como programador que soy, me he encontrado una pagina muy interesante (en lo personal), donde enseñan a uno desde lo basico hasta lo profesional. Si bien yo he crecido y aprendido con lenguajes como Pascal, Dbase, Basic, Clipper, Foxpro, nunca he logrado adquirir por lo menos las partes mas basicas sobre lo que es el Lenguaje C.

    Me animé a compartir estos temas con los distintos lectores de la web e ire colocando secciones para que todos puedan entender poco a poco lo que es el lenguaje C. Voy a recalcar que soy un nuevo usuario sobre este lenguaje, y recien hasta hace poco he empezado a leer informacion por lo que al igual que ustedes tendre mis dudas, pero vamos, entre todo podemos lograr algo. 

    La pagina de la que tomare referencia es http://wibit.net/. Tengo permiso de sus creadores para realizar citas textuales de ser necesario y ante cualquier duda y/o consulta ellos estan dispuestos a colaborar con este pequeño Blog. En la misma pagina, ellos tienen video tutoriales que empiezan desde cero, hasta llegar con el lenguaje en si. Bueno sin más introduccion en el siguiente apartado empezaremos.


lunes, 7 de febrero de 2011

Playstation 3 y su unica vulnerabilidad que le costo su seguridad completa.

  Playstation 3 ha sido una de la consolas mas costosas y potentes que han salido al mercado hasta ahora, si bien su gran fuerte ha sido su seguridad con la cual ha evitado a los hackers y crackers tener acceso total al sistema, hubo un detalle pequeño pero lo suficientemente efectivo para dar un primer y gran paso y lograr ejecutar la primera carga de backup o respaldo sin tener la necesidad de tener un disco original.
  Para mediados de agosto del 2010, empezo a circular un video en youtube donde se mostraba finalmente la ejecución por primera vez de la carga de un respaldo. Consistía en conectar un dispositivo con entrada usb previamente cortandole el suministro de corriente y luego de conectarse volver a suministrar la corriente. Seguidamente Presionando el Boton Power e inmediatamente el boton eject, luego de unos segundos se produce la carga del sistema de manera normal y nos daremos cuenta en el menu de juegos, que hay dos nuevas entradas, Intall package Files y Games. A este punto ya tenemos control del sistema para cargar cualquier respaldo. Ahora bien si este es el prodecimiento, que es lo que ocurre realmente cuando hacemos todo y cada uno de los pasos.
  Bueno el primer requisito es cortarle el suministro de corriente, conectar el dispositivo usb o dongle, y como tercero volver a suministrar la corriente, en este paso, al conectar el dongle y mandar la corriente, la consola tarda 2 segundos en reconocer las entradas usb (2 en caso de la playstation), y al momento de reconocer las entradas ya esta nuestro dongle insertado. Ahora viene la parte interesante, en el justo momento de presionar Power y Eject, cargamos e inyectamos un código y hacemos creer a la consola que lo que esta conectado es un concentrador Hub y por ende se carga en el menu del sistema lo mencionado anteriormente. Por supuesto, parece sencillo pero creo que las personas involucradas en este descubrimiento habran pensado y trabajado mucho para llegar a dar este paso.
  La otra parte interesante es que los juegos no necesitan ser grabados en discos blu ray, puesto que para muchos y dependiendo de la zona de ubicación, puede resultar muy costoso sin incluir la quemadora de pc. Todos y cada uno de los juegos pueden ser almacenados en un disco duro usb externo. Aunque en el principio el unico detalle es que tenia que ser formateado previamente en FAT32, y para los que ya estan al tanto del tema, no acepta archivos unicos mayores de 4 gb, por lo que supone un obstaculo. Pero como los programadores no podian quedarse de brazos cruzados, han sacado una serie de alternativas para superar estos detalles, y uno de esas soluciones es pasar el respaldo al disco duro interno de la consola, puesto que trabaja con otro sistema de archivo distinto a NTFS y FAT32.

  Por unas semanas esto supuso un gran avance y muchos podian ejecutar respaldos sin problema alguno, pero Sony actuo rapidamente y sacó actualizaciones que inhabilitaría la carga de respaldos, y a su vez los nuevos juegos venían con el archivo EBOOT.BIN encriptado para que ningun programa que cargue respaldos pueda hacerlo correr. Para los que no estan al tanto, el archivo EBOOT.BIN vienen en cada juego en una carpeta que hace que el juego se cargue y permita ser ejecutado. Y dedibo a esto, hubo unos dias de pausa en el mundo de la Scene, hasta que se desarrollo un congreso de Hackers a finales de diciembre y dieron con algo que supuso el sello definitivo del quiebre de seguridad de la consola. Un codigo programado en lenguace C, que en vez de devolver un valor aleatorio, siempre devolvía un valor fijo y único. Al día siguiente ya estaba circulando herramientras para ejecutar los ultimos juegos y futuros juegos que tambien seran lanzado al mercado y qué podran ser ejectuados sin problema alguno. A esto los hackers lo llamaron EPIC FAIL, comentando que no hay hueco en la programación del firmware. El FIRMWARE es el hueco en sí, y que para solucionar este problema, Sony deberia rediseñar la consola o sacar una nueva. 
  Hasta el día de hoy, no ha habido ningún problema en la carga de respaldos, de hecho ha habido una reprogramación del firmware por parte de programadores, lo que llaman Custom firmware que permite a los usuarios a quien decida instalarlos, poder ingresar a la red de Sony y jugar sin problema alguno para los Multiplayer.



viernes, 4 de febrero de 2011

Alta Definición 4ta Parte

  Este punto si no es el mas importante, es casi a punto de serlo. La industria de los videojuegos, algo que parecen tan sencillo pero que logra mover enormemente la economía, por colocar un ejemplo, un solo juego puede generar mas de diez millones de dolares en su lanzamiento, y eso sin contar de media a largo plazo.
  Dos compañías y dos consolas han sabido aprovechar la alta definición. Si bien como ya conocen muchos la Xbox 360 de Microfost y la Playstation 3 de Sony. Si bien estas dos compiten a nivel de HD, la consola de nintendo WII por ser una consola que muchos consideran Semi HD que trabaja a una resolución maxima de 480p ha logrado hasta el día de hoy ser pionera en cuanto a ventas y jugabilidad. Si bien este punto es algo que requiere una explicación aparte y extensa si puedo mencionar que las compañías que saben aprovechar el hardware del Wii puede lograr un juego poderoso.
  Ahora bien, desde hace un buenos años, muchos jugadores han pedido mas variedad de juegos, algo que se incline mas al publico hardcore, de acción, de suspenso. Y he aca donde la Xbox y Sony han sabido entrar al mercado de una manera rapida y ganar audiencia. Si comparamos el Xbox con el Playstation ambas pueden reproducir juegos en HD, pero la Xbox 360 tiene una gran desventaja, como ya no se da soporte a la tecnología HD DVD su consola se vio limitada a reproducir juegos almacenados en discos de doble capa, es decir 8.4Gb. Aunque esto no supone limitación para los lanzamientos de los juegos, si limita en algunos casos mejorar la calidad grafica de los juegos, esto es opinión personal mia. Muchos juegos se ven incluso verse mejor que los de Playstation, un gran ejemplo es el de Resident Evil 5, si buscamos algunos videos en youtube veran la diferencia. Por otro lado Playstation 3 tiene un procesador mas potente y un lector de discos blu ray, lo que en consecuencia puede reproducir juegos con gran cantidad de información, claro ejemplo es God Of War 3 que ocupa un tamaño de 41 gigas promedio. 
  Las compañias desarroladoras, las mas conocidas se han inclinado por desarrollar juegos en alta definición, algo que la compañía de Nintendo aun no logra llegar, aunque estamos claros que no es por que no quieran o puedan, simplemente van paso a paso sin descuidar la jugabilidad. Recientemente Nintendo hizo oficial el lanzamiento de la nueva consola portatil Nintendo 3DS y con una gran innovación, una consola capaz de reproducir alta definición en formato 3D y sin la necesidad de usar lentes especiales para la misma. Algo que para sus competidoras directas supondra una fuerte competencia.

  Ahora bien, me he enfocado sobre de manera muy general lo que son capaces de hacer estas consolas en cuanto a espacio físico y a nivel de competencia. Pero que es lo que buscan los jugadores y mi persona tambien me incluyo, en esta variedad de juegos de alta definición, bueno la respuesta es algo sencilla, como un punto gráficos de alta definición sin ningun tipo de retraso o lentitud con una jugabilidad que permita apreciar y disfrutar los distintos puntos de vista del juego, con un reto que implique tiempo y dedicación. Algo que yo busco es un juego que muestre unos gráficos lo mas realistas posible, que se detalle la profundidad del aspecto visual y que se sepa aprovechar las características de la consola en uso, usando los brillos, sombras y reflección de luces. La jugabilidad debe ser práctica pero eficiente, donde resulten comodos usar ambas manos sin caer en confusiones, por supuestos todos los juegos no cometen errores por este lado.

  Unos juegos que se pueden colocar como ejemplo aprovechando muchas de las características de la consola Xbox 360 y Playstation 3 son: 
      1. Resident Evil 5, en ambas consolas
      2. Gran Turismo, que este se reproduce perfectamente a 1080p y es exclusivo de Sony.
      3. God Of War III, igualmente exclusivo de la Sony, pero explota las capacidades de la consola.
      4. Red Dead Redemption, para ambas consolas, un gran ejemplo de como crear un mundo amplio y complejo sin desaprovechar la calidad grafica. 
      5. Por parte de Nnintendo, Mario Galaxy 2.
      6. The Conduit.
      7. Super Smash Brothers.
      8. Y por supuesto Twilight Princess, The Legend Of Zelda.

  Todos estos juegos que he mencionado, son parte de muchos que aprovechan en gran parte la capacidad de cada consola en su aspecto gráfico sin sacrificar ningun otro aspecto.

  Algunos juegos de alta definición vienen ya predispuestos para ser reproducidos en formato 3D, si bien no es obligatorio usar esta característica, esta como una opción para los que tengamos televisores en 3D.

  Algo que no he agregado son las computadores de escritorio, si hay algo mas potente que cualquier consola de video juego pueda reproducir mejor con las Pc's. Una buen computadora con un buen procesador, memoria Ram, y una tarjeta gráfica mínimo DDR3 hasta DDR5, su aspecto visual sera indiscutiblemente mejor que el resto. Ahora muchas compañías desarrolladoras no centran toda su atención en las Pc's de escritorio, pero ultimamente parecen interesarse mas en ellas. Un gran ejemplo de videos es sin duda Starcraft II, para los que han tenido la oportunidad de jugarlo, la calidad de los videos cortos es sin duda los mejores que he visto. Otro juego que explota muy bien su capacidad es Resident Evil 5, corriendo a una tasa decente de 60 Fps.Y el que hasta ahora es el mejor segun la critica es Crysis.

  Tengamos en cuenta que un juego bien importate y conocido y que incluya todos estos puntos, y para que tenga un exito, necesida un desarrollo de por lo menos como mínimo 1 año, algunos como mínimo 2 años. Por su complejidad de programación y creación. 


  Por ahora concluyo estos puntos que he querido destacar. Posiblemente en el punto siguiente mencionare algo que en agosto del 2010 ha causado una revuelta mundial. La carga de respaldos par la consola de Sony.