LOGITECH G500
PROBAMOS EL NUEVO MOUSE LÁSER PARA GAMERS
#82 AR $ 12,90 (recargo por envío al interior $ 0,20) MX $ 35
(R ROUND UP
C COOLERS P PARA CPU
(LANCOOL K62
E ELEGIMOS LOS MEJORES DISIPADORES DE CALOR D DEL MOMENTO D
ANALIZAMOS UN GABINETE PENSADO PARA PCS DE ALTO DESEMPEÑO
(WI-FI EN UBUNTU ( CÓMO SOLUCIONAR UNO DE LOS PROBLEMAS MÁS COMUNES DE ESTE SISTEMA
ADEMÁS
(V VAIO AIO S SERIE E
SOPORTE TÉCNICO + PHP TWEAKERZONE + PYTHON ¡Y MUCHO MÁS!
LA NU L NUEVA EVA L LAPTOP DE SONY PROCESADOR CORE I3 CON PROCE
(VIRTUALIZACIÓN PROFESIONAL ( (VIRT
MOSTR TE MOSTRAMOS LAS HERRAMIENTAS PARA VIRTUALIZAR SERVIDORES
POWER 82.indd 1
29/06/2010 10:51:01
POWER 04-08 _News_PWR82.qxp
30/06/2010
01:45 p.m.
PÆgina 4
MÁS MEMORIAS NAND PARA TODOS
TOSHIBA SIGUE EXPLOTANDO EL ALMACENAMIENTO MÓVIL indica que podrían ser incluidas en equipos de pequeñas medidas. Si hacemos cálculos con las prestaciones de esta nueva tecnología, se podría lograr un almacenamiento portátil que soportara más de 16 horas de video en calidad 1080 p. Hasta el momento, las pruebas realizadas sobre el chip de 128 GB fueron exitosas, y se planifica que este producto comience a arribar al mercado antes de fin de año. Entre las empresas
»
T
oshiba sigue esforzándose por mejorar las memorias NAND flash: ahora logró llevarlas a capacidades de hasta 128 GB. Se incorpora en estos nuevos modelos de tan sólo 1,4 milímetros de espesor un chip construido en 32 nanómetros (con 16 capas de pilas de 8 GB NAND cada una), que duplican la capacidad sin tener que ocupar más espacio. El voltaje empleado por estas memorias va de 2,7 a 3,6 volts, la velocidad de escritura estimada es de 21 MB por segundo secuencial, mientras que la de lectura alcanza los 46 MB por segundo. Estas memorias están preparadas para operar bajo un amplio rango de temperaturas, que van de 25 a 85 grados Celsius, lo que
VOLTAJES REDUCIDOS, ALMACENAMIENTO AMPLIO Y TAMAÑO DIMINUTO, UNA FÓRMULA QUE NO PARA DE REPETIRSE.
que pueden adoptar estas nuevas NAND, Apple está a la cabeza, por la extensa relación que mantiene con Toshiba.
APPLE NO ABANDONA NI A LA MÁS PEQUEÑA
MAC MINI AL DESNUDO L
a nettop Mac mini sufrió una nueva revolución en cuanto a su diseño: comparándola con su antecesora, este nuevo modelo creció 3 centímetros de ancho, pero se ha reducido 1,4 de alto, y todo tiene su razón de ser. Su cubierta de aluminio reciclable está diseñada en una sola pieza, con la ya conocida técnica unibody. El ensanchamiento hacia los laterales tiene su explicación lógica: se eliminó la fuente de alimentación externa, para llevarla al interior de la cubierta, dotándola de paso con 7 amperes de consumo a 12 volts, y disminuyendo así casi tres veces su consumo de energía total. La parte trasera incluye más puertos de conexión: cuatro USB, un HDMI, un 4
mini Displayport, un puerto Firewire 800, ranura para tarjetas SD, una conexión Ethernet, y la entrada de línea y conector para auriculares. También, como siempre, el superDrive, que permite grabar y leer DVD y CD; y una conexión WiFi, ahora actualizada a la norma 802.11n. Lo mejor de todo es la practicidad que tuvieron en cuenta para desarmar el equipo: se incluye en la base un panel desmontable, que facilita el acceso a la memoria RAM y otros componentes del equipo. También se incluyen dos ranuras que permiten desmontar la placa madre rápidamente.
BOMBO - PRE FASC WEB DESIGN - Jul 10 - EDITABLE.indd 1
02/06/2010 17:55:34
LA NUEVA GENERACIÓN Los antecedentes y objetivos de la nueva GPU GeForce
20
Si hacemos memoria recordaremos que en junio de 2008 las nuevas generaciones de placas de video tarjetas gráficas de NVIDIA y AMD se lanzaron casi al mismo tiempo. Entonces, la GeForce GTX 280 de NVIDIA superaba a la ATI Radeon HD 4870 por alrededor del 20 % en altas resoluciones, pero esta Radeon competía formidablemente en el precio. Después de 15 meses, en septiembre de 2009, se lanzó la nueva generación de Radeon, la HD 5800. Con esta GPU se inauguró la era DirectX 11 en que nos encontramos. La respuesta de NVIDIA se hizo esperar: la nueva GPU, con el nombre código Fermi, fue lanzada seis meses más tarde, a fines de marzo del año 2010. Una buena explicación de esta importante demora puede encontrarse en las palabras de Ujesh Desai, Vicepresidente de Marketing de producto de NVIDIA, cuando dice que “diseñar una GPU grande como esta es malditamente difícil”. Para los fanáticos de las GPUs la espera fue larga, pero al analizar las características técnicas de la nueva GPU y probarla en funcionamiento, es difícil negar la veracidad de las palabras de Ujesh. Fermi es realmente un procesador de video tremendamente complicado. Fue diseñado para cumplir todas las tareas posibles. Ser la GPU más rápida del mundo, la mejor en DirectX 11 y ganarse a los gamers. Su diseño también tuvo como objetivo formar parte de la “3D PC”, que permite disfrutar de juegos y películas Blue Ray en 3 dimensiones y, en el caso de configuraciones SLI, hacerlo utilizando tres monitores. Y, aparte, ser sumamente flexible para posteriormente aplicar su arquitectura en las tarjetas del segmento medio del mercado, algo muy importante en este segmento.
GeForce GTX400
NVIDIA CONTRAATACA
Luego de una larga espera ha llegado la nueva generación de tarjetas gráficas de NVIDIA, la GeForce GTX400. En este artículo analizaremos detalladamente el nuevo gigante de las GPU, y veremos si se las trae.
CÓMPUTO GENERAL Otra aspiración importante del concepto original de Fermi es que la GPU formase parte de las supercomputadoras más potentes que existen y que brindan poder de cálculo a la ciencia y la industria. Para lograr una versatilidad que le permitiese abarcar todas las tareas antes mencionadas, el chip maneja diferentes niveles de caché (como si fuera una CPU), corrección de errores (ECC) y puede ser programado en C++, el lenguaje más utilizado del mundo. Desde luego, cumplir con los estándares abiertos como OpenCL, y propietarios como DirectX 11, CUDA y PhysX. Ahora bien, ¿es posible cumplir con todas estas expectativas de los gamers, de los científicos y de la industria y hacerlo bien? Sí, es posible, pero como veremos tomar la decisión de desarrollar una GPU de tal complejidad trae consecuencias positivas y negativas. Por otra parte, no debemos olvidar que NVIDIA no está sola en esta cruenta batalla. El brillante grupo de ingenieros de ATI hizo que la serie 5800 sea una de las más populares en la historia de la marca. Así que con su tardío lanzamiento NVIDIA podrá causar sensación, pero los “rojos” ya están preparando para volver a adelantarse con su nuevo chip. El mundo de las placas de video se ha manejado de esta manera durante años.
El procesador gráfico Fermi es uno de los mayores diseñados hasta el momento. Su diseño original cuenta con 512 shaders (o motores CUDA). Sin embargo, la primera placa que lo utiliza, la GeForce GTX 480, sólo tiene habilitados 480 de ellos. 21
40-42 _SFT-Virtualizacion_PWR82.qxp
.sft
30/06/2010
02:06 p.m.
PÆgina 40
PABLO NESTOR SALABERRI EXPERTO EN NETWORKING EMPRESARIAL
salaberrip@gmail.com
«
UN REPASO POR LOS PUNTOS CLAVE EN LA VIRTUALIZACIÓN DE SERVIDORES
VIRTUALIZACIÓN DE SERVIDORES a hemos hablado en POWER sobre virtualización en computadoras de escritorio como una solución para muchos problemas de compatibilidad con sistemas operativos viejos, aplicaciones heredadas, etc. Sin embargo, más allá de una cuestión de compatibilidad, la virtualización de servidores se hace presente para cubrir otras necesidades o nichos de mercado. Hoy veremos qué opciones tenemos para virtualizar servidores.
Y
BREVE DESCRIPCIÓN DEL ENTORNO En una empresa mediana o grande tenemos una gran variedad de equipos. Seguramente tendremos un controlador de dominio, un servidor de archivos, un servidor de correo electrónico, servidores de aplicaciones, y un largo etcétera. El problema es que cada equipo instalado no sólo insume un costo de hardware y licencias de software. También lleva mantenimiento, consumo de energía (y la consecuente disipación de calor) y
espacio en el datacenter. Si bien uno no aprecia en el día a día los costos implícitos de tener un servidor sub-utilizado, en un año el consumo energético de un equipo mal utilizado o el coste de aire acondicionado para mantenerlo frío se vuelven significativos. De hecho, hoy en día la palabra de moda es TCO (Total Cost of Ownership), que es ni más ni menos un número que muestra cuantos dólares al año consume un equipo. Para obtener ese valor se tienen en cuenta variables como consumo energético, generación de calor, mantenimiento, etc. Ahora, ¿que sucede cuando tenemos necesidades especiales? Les vamos a plantear un caso real: resulta que en una empresa se tuvo un crecimiento exponencial de personal. Dicho crecimiento no sólo acarreó una mejora en la plataforma, en donde incrementamos la potencia y capacidad de los almacenamientos, servidores de correo, backup, switching, etc. Sino que también con el crecimiento de las áreas operativas y la creación de nuevas áreas
naturalmente surgieron nuevas demandas en lo que a plataforma se refiere. Por ejemplo, los desarrolladores web nos solicitaron un servidor Apache bajo Linux y un Internet Information Server bajo Windows para hacer pruebas de websites. Otro sector nos solicitó un SQL para una base de datos encargada de hacer datawarehouse. Un tercer sector nos solicitó un terminal services server para poder atender remotamente ciertos aplicativos o bien acceder desde sus hogares vía VPN y usarlo como servidor de aplicaciones, y la lista se incrementaba día a día… Y eso que todavía no mencionamos a los desarrolladores de software, que nos solicitaban permanentemente equipos de prueba para hacer sus pre-implementaciones. En un escenario realmente convencional, todos los nuevos requerimientos nos hubieran llevado, sin dudarlo, a comprar muchos servidores y asignarle funciones a cada uno de ellos. Pero afortunadamente, de la mano de la virtualización muchos de esos problemas se solucionan de manera muy simple y práctica.
«
¿POR QUÉ VIRTUALIZAR SERVIDORES?
40
ESTE ES UN ESQUEMA DE HYPERVISOR DE VMWAREVSPHERE. NÓTESE CÓMO LOS SISTEMAS OPERATIVOS SOLO ESTÁN SEPARADOS POR LA CAPA DE VIRTUALIZACIÓN.
Básicamente, la idea principal de la virtualización de servidores es reducir el famoso TCO. Imaginen que en el escenario anterior se requerían al menos diez equipos nuevos. Muchos de ellos de baja potencia de procesamiento, ya que su utilización es pobre (estadísticamente está demostrado que un servidor stand alone el uso promedio de CPU es de un 15 % máximo). Pero siguen siendo diez equipos rackeados, consumiendo energía, generando calor, multiplicando la tasa de fallos (siempre se puede romper un disco o volar una fuente)… todo para que alguien tenga un simple webserver de pruebas. Suena excesivo ¿no? Ahora ¿qué dicen si todo esto se puede solucionar con uno o dos servidores más potentes? ¿Imposible? Para nada; bienvenidos a la virtualización.
aviso a10t.indd 1
04/02/2010 15:26:48
52-54 _Net-PytonPWR82.qxp
.net
30/06/2010
02:47 p.m.
PÆgina 52
JUAN GUTMANN PROGRAMADOR ENTUSIASTA DEL SOFTWARE LIBRE
juangsub@gmail.com
«
LES PRESENTAMOS OTRA LIBRERÍA GRÁFICA PODEROSA Y FÁCIL DE USAR
COCOS2D: ANIMACIÓN Y EFECTOS VISUALES EN PYTHON n la edición pasada, recorrimos brevemente las posibilidades de PyGame, una librería pensada para programar videojuegos en Python con escaso esfuerzo. En esta ocasión, veremos cómo usar un framework similar, que está armado sobre Pyglet, una librería para desarrollar aplicativos que hagan uso de la API estándar para gráficos OpenGL. El empleo de OpenGL permite trabajar con Cocos2D no solamente para escribir juegos, sino que también podemos realizar demos, presentaciones gráficas con lucidos efectos visuales, y más. Aquí les mostramos, con un ejemplo conciso y sencillo, la forma de aplicar sofisticados efectos sobre una imagen en muy pocas líneas de código.
DESCARGA E INSTALACIÓN
CON TONADA CORDOBESA
«
E
COCOS2D ES UNA PODEROSA LIBRERÍA GRAFICA QUE SE CARACTERIZA POR SU FACILIDAD DE USO.
Como ya mencionamos, Cocos2D se basa en Pyglet, una librería para el desarrollo de aplicaciones con uso extensivo de gráficos y/o reproducción de contenidos multimedia, lo que incluye audio y video con diversos códecs. Por lo tanto, y obviamente teniendo Python ya instalado (la versión con la que consideramos más conveniente trabajar por el momento es la 2.5), nos dirigimos al sitio oficial de Pyglet (www.pyglet.org), y allí vamos al enlace de descarga, en el que escogeremos la opción adecuada para nuestro Sistema Operativo. En GNU/Linux, podemos emplear el administrador de paquetes; por ejemplo, en Debian y derivados, como Ubuntu, seremos capaces de instalarlo sencillamente escribiendo desde la consola apt-get install python-pyglet. Los usuarios de Windows deben descargar e instalar el
Hace algo más de un año, en la POWER USERS #69, publicamos un reportaje a integrantes de PyAr, una comunidad de desarrolladores de Python compuesta, principalmente, por programadores argentinos, aunque también participan vía lista de correo y chat personas de muchos otros países de habla hispana. Los entrevistados nos contaron que, entre otras actividades, solían llevar a cabo campamentos en distintas localidades del interior del país, durante los cuales se reunían no sólo para programar en Python e intercambiar conocimientos, sino también para conocerse personalmente y compartir momentos gratos. En el verano de 2008, tuvo lugar uno de los “PyCamps”, en la mediterránea provincia argentina de Córdoba, más precisamente en la serrana localidad de Los Cocos, ubicada en el hermoso Valle de Punilla. En ese campamento, se dio inicio al proyecto Cocos2D, bautizado así por la localidad cordobesa en donde surgió. Luego de que la librería fuera liberada al público, se sumaron a él numerosos colaboradores de varios lugares del globo y sus posibilidades crecieron rápidamente. Analicemos, gráfica tiene para ofrecernos.
52
EN EL SITIO OFICIAL DE COCOS2D ENCONTRAREMOS ALGUNOS VIDEOTUTORIALES QUE EXPLICAN LAS NOCIONES BÁSICAS DEL MANEJO DE SPRITES, ELEMENTOS INDISPENSABLES PARA EL DESARROLLO DE VIDEOJUEGOS CON GRÁFICOS EN DOS DIMENSIONES.
«
entonces, algunas de las cosas que esta biblioteca
52-54 _Net-PytonPWR82.qxp
30/06/2010
02:48 p.m.
PÆgina 53
«
y efectos, que en otras épocas les llevaban a equipos de programadores expertos en Assembler y en el hardware de sus equipos respectivos cuantiosas horas de trabajo, se hacen posibles en un lapso sorprendentemente breve y a través de un código fácil de aprender y escribir: es decir, de una forma Pythónica. LOS GAMERS Y COMPUADICTOS MÁS VETERANOS RECUERDAN BIEN QUE EN EUROPA, HACE YA QUINCE O VEINTE AÑOS ATRÁS, SE HACÍAN FIESTAS DE DOS O TRES DÍAS DURANTE LAS CUALES LOS PROGRAMADORES MÁS HÁBILES DEL MOMENTO PASABAN LARGAS NOCHES SIN DORMIR PARA DESARROLLAR UNA DEMO GRÁFICA DE UNOS POCOS MINUTOS DE DURACIÓN. TAN POCOS COMO LOS QUE LLEVA, HOY EN DÍA, CODIFICAR UN SCRIPT DE APENAS UNAS LÍNEAS EN PYTHON PARA LOGRAR LO MISMO, GRACIAS A FRAMEWORKS COMO COCOS.
paquete www.redusers.com/u/ee, para lo cual tendrán que contar previamente en su sistema con el Microsoft Windows Installer 3.0. En el caso raro de que no sea así, puede conseguirse en el sitio de descargas de Microsoft: www.redusers.com/u/ef. Una vez que instalamos Pyglet, descargamos Cocos2D desde su sitio oficial. La versión más reciente, la 0.3.0, se baja desde www.redusers.com/u/eg. Los formatos Tar y gzip, de archivado y compresión respectivamente, son nativos del mundo de los herederos de UNIX, pero en Windows podemos abrirlos sin inconvenientes con varios descompresores, entre ellos WinZip, WinRAR y nuestro preferido por ser de código abierto: 7-zip. Extraemos el contenido del archivo .tar en un directorio de trabajo. Observaremos que el archivo tar contiene documentación, herramientas, dos directorios con ejemplos de código (test y samples) y un directorio cocos, en el cual se alojan los archivos de la librería propiamente dicha. Este directorio debemos copiarlo a la carpeta en la que alberguemos el proyecto que vayamos a desarrollar con este framework.
TRABAJANDO CON COCOS2D El espectro de posibilidades de Cocos2D es tan amplio que excedería con creces al alcance que podemos darle en estas páginas. Por ello, nos limitaremos a mencionar brevemente algunas de sus capacidades. De manera similar al ejemplo que vimos en el número pasado, realizado con PyGame, con Cocos2D podemos animar una imagen en la pantalla, ya sea tratándola como un objeto de imagen común o bien como un Sprite. Este último caso es preferible a la hora de programar juegos, ya que el framework nos brinda todo lo necesario para animar los sprites, detectar colisiones entre ellos y demás; en definitiva, todo lo que tiene que ver con la mecánica básica de un juego con gráficos en dos dimensiones. Asimismo, nos provee de eventos para permitir al jugador controlar a su personaje por medio del teclado u otro periférico de entrada, como el mouse o joysticks. Pero otra posibilidad interesante es la de tomar una imagen estática y someterla a diversas transformaciones que para programarlas en otros lenguajes precisarían de la escritura de complejas funciones de cálculo matemático. Esta librería nos ofrece sus propios métodos para realizar una gran cantidad de efectos sobre una imagen, y utilizarlos es extremadamente simple: apenas si cada uno de ellos requiere especificar unos pocos parámetros. Así, es cuestión de minutos desarrollar una presentación, un slideshow o una demo, como las que solían deslumbrarnos en la vieja y querida Amiga durante el final de la década del ochenta. Complejas transiciones
EL SCRIPT DE EJEMPLO Nuestro programita Python para demostrar algunos de los efectos visuales que ofrece Cocos2D se basa en uno de los ejemplos que podemos encontrar en el subdirectorio “samples” del archivo. Antes de comenzar, es menester advertir a los lectores que algunos de estos efectos hacen uso, mediante OpenGL, de la aceleración por hardware de nuestra placa de video, por lo cual es factible que en algunos equipos no funcione correctamente. Si son los afortunados poseedores de una tarjeta de video NVIDIA o ATI, les garantizamos que podrán correr el programa sin ningún problema, siempre y cuando hayan instalado las librerías Pyglet y Cocos2D como se indicó previamente. Como imagen para nuestras pruebas, elegimos el logo de un videojuego que es uno de los favoritos de la gran mayoría de los gamers de PC: el increíble Half-Life 2. Este logo pueden descargarlo del sitio de esta edición dentro de redusers.com y deben copiarlo en el mismo directorio en el que se halla el script de prueba. Desde ya que pueden utilizar cualquier otro gráfico si así lo desean; para ello, únicamente deben modificar una línea de código del script. Un dato importante que es imprescindible tener presente una vez tipeado el script es que el mismo no se ejecutará como corresponde si lo corren desde una IDE como IDLE, que se incluye junto con la implementación de CPython en Windows. Esto sucede porque la imagen se carga a través de un método de la librería Pyglet -resource.image()- que busca el gráfico en el directorio actual. Cuando ejecutemos el script desde IDLE, el directorio actual no será aquel en el que reside el script y, por lo tanto, Pyglet no será capaz de encontrar el recurso. Esto podría resolverse agregando la ruta completa de la carpeta en donde guardamos la imagen de prueba en la lista de “directorios de recursos” de Pyglet, pero para simplificar el script, optamos por especificar sólo el nombre del archivo. Para que se ejecute sin inconvenientes, bastará con invocarlo dando doble clic al archivo del script en el file manager (en Windows, el nunca bien ponderado Explorer) o con llamarlo desde la línea de comandos de esta manera, habiéndonos situado previamente en el directorio correspondiente mediante un comando “cd”: “python efectos.py”. import pyglet from cocos.director import director from cocos.scene import Scene from cocos.layer import Layer from cocos.actions import * class BackgroundLayer(Layer): def __init__(self): super(BackgroundLayer, self).__init__() self.image = pyglet.resource.image(‘hl2-logo.png’) def draw(self): self.image.blit(0,0) 53
58-61 _NetPHP_PWR82.qxp
.net
30/06/2010
02:56 p.m.
PÆgina 58
JUAN GUTMANN PROGRAMADOR ENTUSIASTA DEL SOFT LIBRE
juangsub@gmail.com
«
CONTINUAMOS CON NUESTRO CURSO SOBRE NOCIONES BÁSICAS DE PHP.
CURSO BÁSICO DE PHP n la entrega anterior del tutorial, cubrimos los tipos de datos existentes en PHP, y la declaración y asignación de variables de diversas clases, así como los ámbitos en los que las declaraciones tienen validez. También explicamos el concepto de matriz y vimos brevemente cómo aplicarlo para almacenar un set de datos recuperado desde la base relacional MySQL. Naturalmente, con sólo asignar datos a posiciones de memoria (lo que, en definitiva, representa el concepto abstracto de “variable”) y, luego, mostrarlos en una página, no podemos conseguir gran cosa. Para casi cualquier tarea que emprendamos en cualquier lenguaje de programación, por mínima que sea, es necesario poder controlar el “flujo” del código que confirma el programa. Es por eso que, en esta oportunidad, explicaremos la manera de hacerlo, a través de la “toma de decisiones”, recurriendo a la sentencias IF. Comencemos entonces.
SENTENCIAS CONDICIONALES Para controlar el flujo de un programa informático, es indispensable que ésta pueda evaluar el estado de los datos que maneja (normalmente contenidos en variables), y realizar distintas operaciones de acuerdo con los diversos estados posibles. Para esto, todos los lenguajes disponen de sentencias condicionales. La más conocida, por ser la misma “palabra reservada” en la enorme mayoría de los lenguajes de programación, es IF, palabra inglesa que significa “si”, pero un “si” condicional, que podríamos expresar en nuestro idioma de la siguiente manera: “si se da determinada condición, realizar esta secuencia de acciones”. A la sentencia IF puede agregarse una cláusula llamada ELSE, que puede traducirse como “si no”, lo que conforma algo como “si no se da la condición anteriormente expresada, realizar esta otra lista de instrucciones”. Las próximas páginas profundizarán sobre estos conceptos. 58
==
Es igual a (coinciden los valores de
===
Es idéntico a (coinciden valor y
!=
Es distinto de (no coinciden los
!==
No es idéntico a (no coinciden el
<
Es menor que
<=
Es menor o igual que
>
Es mayor que
>=
Es mayor o igual que
ambas expresiones) tipo de datos) valores de las expresiones) valor o el tipo de datos)
OPERADORES DE COMPARACIÓN Para emplear las sentencias condicionales, necesitaremos aprender dos tipos de operadores: los de comparación y los lógicos. Veamos entonces los primeros, que son los que se utilizan para comparar dos expresiones entre sí. Algunas observaciones relevantes para hacer son las siguientes. El operador de comparación de igualdad son dos signos igual ==, en vez de uno solo, como en otros lenguajes; para diferenciarlo claramente del operador = (un único signo igual), el empleado para asignar variables. Los operadores <, >, <= y >= pueden usarse tanto sobre valores numéricos como sobre cadenas (valores alfanuméricos). En este último caso, el criterio para determinar cuál es mayor es EXPRESIÓN A
«
E
OPERADOR EXPLICACIÓN
EXPRESIÓN B
según su orden alfabético. Para los números y las letras contenidas en una cadena está claro cuál viene primero y cuál después, pero para símbolos o caracteres de control no es tan simple. En estas ocasiones, para establecer el mayor y el menor se recurre al valor ASCII del carácter correspondiente. Los códigos ASCII de los diferentes caracteres pueden consultarse en www.asciitable.com. Ahora, supongamos que queremos comparar que dos variables, $a y $b, contengan un mismo valor numérico. Para hacerlo, escribimos en la sentencia IF las dos expresiones por comparar (en este caso, las dos variables) y el operador de comparación de igualdad ==. if ( $a == $b ) print “Los valores de a y b son iguales.”; else print “Los valores de a y b son distintos.”;
Como vemos, la expresión de comparación que se especifica luego de IF debe ir siempre entre paréntesis ( ). Si la condición especificada en la comparación es verdadera (en este ejemplo, se verifica que los valores de a y b son iguales), se ejecuta la instrucción escrita a continuación de if. Por el contrario, si la condición es falsa, se ejecuta la instrucción que sigue a la cláusula else. Vale aclarar que esta cláusula es optativa y podemos prescindir de ella si no la necesitamos. OPERADOR
RESULTADO
TRUE
TRUE
AND
TRUE
FALSE
AND
FALSE
FALSE
TRUE
AND
FALSE
TRUE
TRUE
OR
TRUE
TRUE
FALSE
OR
TRUE
FALSE
TRUE
OR
TRUE
TRUE
TRUE
XOR
FALSE
TRUE
FALSE
XOR
TRUE
FALSE
TRUE
XOR
TRUE
TRUE
EL BLOQUE DE CÓDIGO QUE SIGUE A LA SENTENCIA IF SE EJECUTA CUANDO EL RESULTADO ES TRUE (ES DECIR, VERDADERO), MIENTRAS QUE EL ESPECIFICADO BAJO LA CLÁUSULA ELSE LO HARÁ CUANDO EL RESULTADO SEA FALSE (ES DECIR, FALSO).
58-61 _NetPHP_PWR82.qxp
30/06/2010
02:57 p.m.
PÆgina 59
PRESENTAMOS PARA TODOS NUESTROS POWER USERS LA TERCERA PARTE DEL CURSILLO PARA APRENDER PHP, UNO DE LOS LENGUAJES QUE DAN VIDA A LA DINÁMICA WEB. EN ESTA OCASIÓN, HABLAREMOS DE LAS SENTENCIAS IF Y SU IMPORTANCIA PARA CADA UNO DE NUESTROS PROYECTOS.
BLOQUES DE CÓDIGO Si queremos que, al cumplirse una condición especificada con IF, en lugar de ejecutarse una sola línea de código, se ejecuten varias instrucciones, debemos indicarle a PHP el bloque que debe ejecutarse al verificarse que la condición sea verdadera. Para esto, usamos las famosas llaves { y }, herederas de la sintaxis de otros lenguajes, como C y Java, donde se las emplea con fines muy similares. Con la llave de apertura señalamos el comienzo del bloque de código, y con la de cierre, el fin. Veamos esta situación mediante un ejemplo: $a = 1; $b = 2; // Primera comparación if ( $a == $b ) print “Los valores de a y b “; print “son iguales.”; print “¡Hasta Luego!”
En la primera comparación, las sentencias print “son iguales.” y print “¡Hasta Luego!” se ejecutan, aunque no se cumple que $a y $b sean iguales. Al no haber especificado por medio de llaves un bloque de código, el intérprete PHP asume que sólo corresponde (en la situación de que la expresión lógica evaluada en el IF sea verdadera) ejecutar la primera línea de código que se encuentre inmediatamente después. En cambio, en la segunda comparación, la línea print “son iguales.” no se ejecuta porque aquí se ha delimitado el bloque de código que queremos que corra si la condición es verdadera mediante las llaves {}. De esa forma, queda evidente para el intérprete PHP cuáles son las líneas de código que corresponde ejecutar si la condición se cumple y cuáles las que deben ejecutarse una vez finalizada la toma de decisiones. Con la cláusula ELSE se procede de idéntica manera. Hay programadores que, para evitar confusiones, acostumbran a utilizar siempre las llaves, aunque deba ejecutarse una sola instrucción si se cumple o no la expresión evaluada. Existen múltiples criterios sobre el lugar más conveniente para ubicar las llaves, pero los dos más habituales y apropiados por razones de legibilidad son los siguientes:
SÍMBOLO VALOR EXPLICACIÓN !a
“NOT”
Devuelve TRUE si la expresión “a” NO es verdadera
a && b
“AND”
Devuelve TRUE si tanto “a” como “b” son verdaderas
a AND b
“AND”
Ídem anterior
a || b
“OR”
Devuelve TRUE si “a” o “b” son verdaderas (OR inclusivo)
a or b
“OR”
Idem anterior
a xor b
“XOR”
Devuelve TRUE si “a” es verdadera o “b” es verdadera,
pero
FALSE si ambas lo son (OR exclusivo)
«
// Segunda comparación if ( $a == $b ) { print “Los valores de a y b “; print “son iguales.”; } print “¡Hasta Luego!”
EL SCRIPT DE EJEMPLO DE ESTA EDICIÓN PROPONE AL USUARIO ADIVINAR UN NÚMERO SECRETO MEDIANTE LA SENTENCIA IF PARA DARLE PISTAS Y AYUDARLO A DEVELAR LA INCÓGNITA.
// Primer criterio (el más común en PHP): //La llave de apertura va en la misma línea que el IF if ( $a == $b ) { print “Los valores de a y b”; print “son iguales.”; } // La llave de cierre va sola, al final del bloque // Segundo criterio (habitual en Java): //La llave de apertura va sola, al inicio del bloque if ( $a == $b ) { print “Los valores de a y b”; print “son iguales.”; } // La llave de cierre también va sola, al final del bloque
OPERADORES LÓGICOS En muchas ocasiones, precisaremos evaluar más de dos expresiones de una sola vez. Para hacerlo, recurriremos a los operadores lógicos. Por ejemplo, queremos determinar en un único paso si el valor numérico almacenado en una variable es mayor que 1 pero menor que 99. En ese caso, escribimos la expresión de esta manera: ( $a > 1 and $a < 99 ) o bien ( $a > 1 && $a < 99 ). Como podemos observar, mediante la combinación de un operador lógico con operadores de comparación, seremos capaces de evaluar varias expresiones, ya sean 59
30/06/2010
17:22
PÆgina 62
ALBERTO GASAGLIA
.gam
TÉCNICO Y PERIODISTA INFORMÁTICO
agasaglia@redusers.com
«
NUESTROS ELEGIDOS DE TODOS LOS TIEMPOS
TOP 5
UNO DE LOS ASPECTOS MÁS DIVERTIDOS DE LOS JUEGOS ES SU LIBERTAD: HOY EN DÍA EXISTE UN GÉNERO DEDICADO A LOS MUNDOS ABIERTOS, DONDE LOS JUGADORES SON LIBRES DE HACER LO QUE REALMENTE QUIERAN. SE TRATA DE LOS SANDBOX, QUE TIENEN A JUEGOS COMO GRAND THEFT AUTO Y FALLOUT 3 COMO SUS GRANDES EXPONENTES. VEAMOS QUÉ OTROS TÍTULOS DE ESTE TIPO HAY EN LA ACTUALIDAD.
JUEGOS SANDBOX
5. JUST CAUSE 2
★★★★★
62-63_TOP5JuegosPWR81.qxp
«
Desarrollo: Eidos Interactive Año: 2010 Web: www.justcause.com No existe otro juego tan ridículamente divertido como Just Cause 2: tiene una combinación perfecta de explosiones, vehículos y tierra para explorar que le regala un puesto en nuestra lista. Este shooter en tercera persona no respeta ninguna ley de la física, pero no le importa. Controlamos a Rico Rodriguez, un agente especial estadounidense que tiene que desestabilizar el gobierno de una enorme isla en el pacífico. Para lograrlo, nuestra mejor arma es un gancho, que nos permite movernos libremente por todo el mapa: basta apretar un botón para deslizarnos de un punto a otro. Una de las características más importantes del juego es la cantidad de espacio disponible, que bate varios records y nos ofrece una experiencia realmente sin igual. En Just Cause 2 no nos quedaremos nunca sin nada que hacer, porque el objetivo final es, sobre todo, causar caos y destrucción. Si lo logramos, ganaremos dinero, y podremos seguir destruyendo.
«
Desarrollo: Rockstar Año: 2010 Web: www.redusers.com/u/eq
★★★★★
4. RED DEAD REDEMPTION
¿La única desventaja del título? Actualmente solo está disponible para las consolas de última generación: deja a los gamers de PC de lado.
Los muchachos de Rockstar se hicieron tan famosos como estrellas de rock luego de desarrollar juegos como Grand Theft Auto y Bully, que además de cantidades siderales de dinero ganaron fanáticos y detractores por igual. Ahora, la nueva apuesta del grupo es Red Dead Redemption, una especie de GTA ambientado en el viejo oeste. En este caso, controlamos a un cowboy que debe cumplir misiones a caballo en algún pueblo perdido del desierto, defendiéndose de los bandidos y malhechores en el camino. Lo bueno de este juego, además de un planteo realmente original, es que nos ofrece un mapa enorme del desierto, que podemos cabalgar a gusto para encontrarnos con sus muchas sorpresas. Aunque en esta ocasión no tengamos autos de carreras, esto no nos impedirá perdernos en uno de los mapas más grandes entre los juegos de la actualidad.
OTROS TÍTULOS INTERESANTES ■ Infamous: Publicado en 2009 para consolas Playstation 3, este título amasó una cantidad envidiable de fanáticos. En él, se nos plantea ponernos en los zapatos de Cole MacGrath, quien tiene superpoderes eléctricos gracias a una explosión en la que queda atrapado. Aunque esté solo para consolas de Sony, vale la pena probarlo.
62
■ Prototype: Desarrollado por Radical Entertainment, Prototype es otro de los juegos tipo sandbox que acumulan comunidades enteras de fanáticos. En este caso, controlamos a un personaje bastante particular, que tiene la habilidad de cambiar de forma al absorber a sus enemigos. En este caso, está disponible tanto para consolas como para el querido Windows.
Proyecto1 - Base Avisos.qxp
03/09/2009
17:45
PĂ&#x2020;gina 1
64-Powerzone82.qxp
30/06/2010
03:50 p.m.
PÆgina 64
« POWER.REDUSERS.COM
EXCLUSIVO LECTORES
COMPRANDO ESTA REVISTA, SE OBTIENE DERECHO DE ACCESO A POWER ZONE, EL ÁREA EXCLUSIVA EN INTERNET PARA LOS LECTORES. ESTE MES ENCONTRARÁN LOS SIGUIENTES PROGRAMAS SELECCIONADOS Y COMENTADOS POR NUESTRO EQUIPO. LOS SUSCRIPTORES DE LA REVISTA RECIBEN UN CD-ROM CON ESTE MATERIAL. INCREDIMAIL 2.7
CÓDECS DE VIDEO
Outlook Attach View 1.13
MESA
K-Lite Códec Pack 6.0
Utilidad para mejorar Outlook.
Domination 1.0
Batería de códecs listos para usar.
El tradicional juego de estrategia, Scott’s Gmail Alert 4.3
Vista Codec Package 5.7.5
ahora en la PC.
Recibe notificaciones de e-mails.
Paquete de códecs para Windows Vista.
+
El equipo de Incredimail ha mejorado su aplicación estrella, con nuevos diseños, un motor de búsqueda interno de e-mails, mejor estabilidad y una gran mejora en la velocidad de funcionamiento.
Up2Date 1.2
In-Poculis Mahjong 3.0 Interesante juego de mesa.
Lector de feeds RSS. DEPORTES Sensational World Soccer
ENCRIPTACIÓN
2010
Axcrypt 1.7
Gran juego de fútbol.
Codifica archivos y carpetas.
United Football 3.83
Clicksign 10.0
Realístico juego de fútbol.
Agrega nuestra firma electrónica
NAVEGADORES Avant Browser 11.7 Navegador rápido y seguro. CHIT CHAT FOR FACEBOOK 1.31
Nueva versión del navegador de
Este sencillo programa nos permite chatear con nuestros contactos de Facebook a la manera del Windows Messenger. Esto soluciona el gran problema de chatear a través de los perfiles del Facebook, que noes lo más cómodo que hay. Además, su interfaz permite tener todos los contactos en un listado y por tener una ventana por cada conversación.
Google.
a los e-mails. EDITORES DE AUDIO Jackbeat 0.7.5
Silver Key 3.80
Secuenciador de audio.
Encripta archivos fácilmente.
Power Audio Cutter 3.0
MENSAJERÍA
Conversor de audio digital.
Aim 7.3
+
Chrome 5.0
Maxthon 2.5.13 Explorador web. RETOQUE Pano2VR 2.3 Genera panorámicas en 3D.
La herramienta de chat de AOL. EMAIL
Unshake 1.5
Chul Gmail Notifier 1.0.1
Chit Chat for Facebook 1.31
Recibe notificaciones de Gmail.
Cliente de chat para Facebook.
imágenes.
eMailaya 4.0
Pidgin 2.7.1
VIRTUALIZACIÓN
Sencillos cliente de correo
Integra a los diferentes
VirtualBox 3.2.0
electrónico.
mensajeros instantáneos.
Crea un SO. independiente.
Gmail Assistant 2.0
Trillian Astra 4.2
VMWare Tweaker 0.5.1.4
Asistente para clientes de correo
Cliente de mensajería multired
Para configurar la máquna virtual.
Gmail.
para unificar servicios.
Incredimail 2.7
Xfire
Photoful!1.0
Nueva versión de este excelente
Programa de mensajería
Herramienta para realizar
navegador.
instantánea para gamers.
montajes fotográficos.
Aplicación para hacer mejoras en
MAQUETACIÓN
64
JACKBEAT 0.7.5
+
Jackbeat es la herramienta ideal para realizar composiciones musicales a partir de sonidos prediseñados. Lo utilizan los DJs del mundo para hacer música electrónica, crear animaciones y soporta una variedad extensa de formatos.