Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
M
OE
-R UY
D CL
C IN
Precio: 6 € (España) (IVA incluido) • AÑO XVI. 2.ª ÉPOCA • Nº 172 • UNA PUBLICACIÓN DE: REVISTAS PROFESIONALES S.L.
172
Arquitectura de
Fuentes
Hispano
Podcast java st – 043, 044,
JavaHispano Podca
048
045, 046, 047,
sobre
Vídeo-Curso a Visual
REVISTAS , S.L. Actualización
P SIONALES LinQ con
Studio 2008:
ROFE , 42 - 3.ª
9.0 (VI)
Visual Basic
VALENTÍN BEATO
28037 MADRID
M-26827- 1994
DEPÓSITO LEGAL: 92
ISSN: 1134-47
Y además…
res 170
Solo Programado f
en formato pd
Solo Programadores
número 170
en formato pdf
Videocurso
Curso Actualización a Visual Studio 2008 -
LinQ con Visual Basic 9.0 (VI)
JAVAHISPANO
Actualidad Java
REDES
Cookies en el navegador y en el servidor (II)
ALGORITMOS
Programación orientada a objetos con C++ (V)
XNA Framework 2.0 y 3.0: DirectX y Direct3D
en C# para mortales (IV) Incluido en el CD de regalo
“LinQ con Visual Basic 9.0
BASES DE DATOS (VI)”, código de los artículos
Arquitectura de Oracle (I) principales, últimos podcast
de JavaHispano
Número 172
Edi ta : R EVISTAS PR OF ESIO N AL ES S. L .
solop@revistasprofesionales.com
EDITORIAL
C/ Valentin Beato 42, 3ª 28037 - Madrid
www.revistasprofesionales.com
BASES DE DATOS
DISTR I B U CION EN MEX ICO
DIMSA - C/ Mariano Escobedo, 218
Col. Anáhuac. 11320 México, D.F.
Y ADEMÁS. . .
Capital Federal: Distrimachisa
Interior: York Agencysa - Tlf: (5411) 433 150 51
••••••••••••••••••••••••••••••••••
04
Quedan expresamente prohibidas la reproducción, la
distribución y la comunicación pública de todo o parte de Noticias
14 javaHispano
los textos contenidos en esta publicación, por cualquier
medio y en cualquier soporte, y para cualquier fin,
60 Dudas
incluyendo la realización de resúmenes de prensa
comerciales, sin la autorización expresa de esta Editorial,
64 Vídeo-Curso
conforme a lo dispuesto en la vigente Ley de Propiedad
Intelectual. La infracción de la presente prohibición
66 Contenido CD
será perseguida penalmente.
Cualquier forma de reproducción, distribución, comunicación
pública o transformación de esta obra solo puede ser
realizada con la autorización de sus titulares, salvo excepción
prevista por la ley. Diríjase a CEDRO (Centro Español de
Derechos Reprográficos, www.cedro.org) si necesita
fotocopiar o escanear algún fragmento de esta obra.
Depósito legal: M-26827-1994
P R IN TED IN SPAIN
P.V.P. 6 euros
04-13 Noticias:NOTICIAS 5/6/09 11:00 Página 4
NOTICIAS
LA GRIPE PORCINA SE CONVIERTE EN la circulación de correos electrónicos con manos a la obra para redefinir y fortalecer
VIRUS INFORMÁTICO supuestos vídeos y mensajes del Presidente su infraestructura informática.
de México, Felipe Calderón, o de empleados Los principales problemas que se detecta-
La gripe porcina ha creado las condiciones de la Secretaría de Salud, ofreciendo nue- ron fueron los de software mal configura-
perfectas para que el ciber-crimen actúe y vas medidas y datos sobre la epidemia. do y programas reinstalados a los que no se
coseche nuevos “éxitos”, tal y como explica El mensaje ya ha sido bloqueado por Trend les volvían a aplicar los parches de seguri-
Trend Micro, que alerta de la difusión men- Micro gracias a su tecnología Smart dad acumulativos. No obstante, parece ser
sajes de spam a través de los que se propa- Protection Network. Asimismo, la compañía que no se valoró un cambio de plataforma,
gan virus y código malicioso. se ha encargado de avisar a los usuarios sino que se optó por hablar directamente
Después de que la Organización para que ignoren este y otros men- con el fabricante, con Microsoft, para ver si
Mundial de la Salud (OMS) sajes similares que puedan llegar esta compañía podía suministrarles una
elevara el nivel de alerta a sus bandejas de entrada y versión de Windows con seguridad aumen-
sobre la difusión del virus opten por elegir fuentes más tada. Y para ello, la USAF accedió directa-
de la gripe porcina, el fiables para informarse sobre mente a lo más alto de la compañía de
equipo de técnicos de la gripe porcina. La pandemia Redmond: su CEO Steve Ballmer.
Trend Micro, líder global ya se ha cobrado 159 víc- Ballmer se involucró personalmente en el
en seguridad de conteni- timas en México, donde proyecto y, de resultas, el equipo de des-
dos en Internet, advierte de se sitúa el foco del arrollo encargado acabó produciendo una
que los spammers rápida- brote, mientras que, a versión de Windows XP en la cual se había
mente han aprovechado esta medida que pasan los cambiado la forma en la que se manejan las
situación de alerta para extender sus cam- días, cada vez es mayor el número de casos contraseñas de administradores, a la vez
pañas de spam. Así, ya se han detectado que se conocen en otras partes del mundo. que se introducían herramientas para
casos de correo basura con mensajes del actualizar de forma automática el sistema
tipo “¡La gripe porcina afecta a todo el COMO HACER QUE WINDOWS con los últimos parches y prevenir altera-
mundo!” o “¡Brote de gripe porcina!”. SEA UN SISTEMA MUY SEGURO: ciones en la configuración. Más de 600 pre-
Los spammers están utilizando esta técnica ferencias y “flags” se bloquearon para que
de ingeniería social porque aprovechando LA EXPERIENCIA DE LA USAF no fuesen cambiados por el usuario.
las últimas noticias y dada la alerta social El despliegue de estos Windows XP modifi-
que se está produciendo, el hecho de incluir Microsoft creó en 2005 una versión ultra- cados se inició en 2005 y finalizó en 2007.
estos temas en el asunto del mensaje de segura de su sistema operativo Windows Su efectividad se demuestra con los núme-
correo electrónico supone incrementar de XP para la fuerza aérea norteamericana. ros: según John Gilligan, es-CIO (Chief
forma notable la posibilidad de que el des- Esta es su particular historia que nos deja Information Officer) de la USAF, hasta un
tinatario que lo reciba abra estos mensajes una pregunta: ¿cuánta de su tecnología ha 85% de los ataques son bloqueados direc-
de spam. pasado a Windows Vista y 7? tamente gracias a la nueva configuración
“Mediante el uso de ingeniería social, la Es obvio que unas fuerzas armadas necesi- blindada de que disponen sus escritorios
gripe porcina se ha convertido en un virus tan sistemas informáticos seguros, inde- Windows. El éxito ha sido tal que estos sis-
informático que aprovecha el miedo, la pendientemente del país al que pertenez- temas reforzados están en uso en otros
confusión y el interés por la información can, y es también obvio que Microsoft departamentos del gobierno.
disponible en la web acerca de la epidemia Windows no tiene precisamente buena La USAF impone a sus contratistas que
para propagar códigos maliciosos, correos fama en este aspecto. A los posibles ata- incluyan el Windows XP modificado como
electrónicos basura e infectar equipos ques procedentes de fuerzas armadas de sistema preinstalado en todas las computa-
informáticos”, tal y como explica Juan países enemigos o potencialmente enemi- doras que adquiere, por lo que un efecto
Pablo Castro, Coordinador de Tecnología de gos, sus respectivos servicios de inteligen- colateral del nuevo sistema es que se ha
Trend Micro Latinoamérica. cia y los miles de hackers repartidos por simplificado la gestión ya que ahora no hay
“La gripe porcina no sólo ha hecho que los todo el mundo que no sienten un gran que lidiar con varias configuraciones dis-
ciudadanos permanezcan recluidos en sus afecto por los estamentos gubernamenta- tintas, sino con una sola.
hogares. Este fenómeno hará que pasen les norteamericanos, hay que sumarle las Después de todo esto, particularmente se
más tiempo conectados a Internet en busca vulnerabilidades normales y corrientes del me ocurren dos preguntas: en primer lugar,
de información, recomendaciones o sistema, las posibilidades de infección con y si se necesitaba un sistema muy seguro
comentarios sobre el tema, prolongando de virus y, en general, todas las incidencias de ¿por qué no recurrir a OpenBSD o NetBSD?
paso su tiempo de exposición a ataques de seguridad que afectan al común de los ambos han demostrado ser de los más
ciber-criminales. Es la tormenta perfecta mortales.
para la delincuencia por Internet”, comenta Es por ello que la USAF (United States Air
el directivo. Force) encargó en 2003 a la NSA (National
El contenido de estos mensajes de spam Security Agency, la agencia federal nortea-
evidentemente no está relacionado con el mericana encargada de garantizar la segu-
virus de la gripe porcina, sino que se trata ridad en las comunicaciones) una auditoria
de un mensaje breve relativo a spam far- de seguridad de sus sistemas. El resultado
macéutico y de medicinas con un link que fue, como mínimo, decepcionante, y podría
dirige directamente al usuario a una tienda resumirse diciendo que la red de la USAF
online que vende medicamentos para la era un auténtico queso de gruyere... Así que
erección. para garantizar la seguridad de la primera
Asimismo, Trend Micro también advierte de potencia del mundo, la fuerza aérea se puso
NOTICIAS
seguros hasta la fecha. Y, en segundo lugar, Las guerras de religión son probablemente
si Microsoft es capaz de ofrecer una versión tan antiguas como la misma historia de la
tan segura de Windows a las fuerzas arma- humanidad, que no solamente no se pone
das ¿por qué toda o parte de esta tecnolo- de acuerdo en si existe o no un ser superior,
gía no pasa a nuestros Windows de consu- sino en cuál de los postulados es el verda-
mo? dero y único. Internet se ha convertido en
La segunda pregunta tiene, sin lugar a arma y campo de batalla en estas nuevas
dudas, una respuesta más simple que la pri- cruzadas religiosas, una de las cuales -por
mera. Y es que si hacemos un sistema segu- suerte para todos incruenta- es la que
ro, complicamos más su gestión para el enfrenta a partidarios y detractores de la
usuario final, que es precisamente lo que Iglesia de la Cienciología.
no quiere hacer Microsoft para que su pla- Esta viene de lejos, y ha tenido diferentes
taforma continúe siendo tan popular como episodios, cosa que no es de extrañar ya
hasta ahora. Cortar servicios y limitar lo que la Iglesia de la Cienciología ha pasado
que se puede hacer con el software de ter- casi toda su breve pero intensa historia
ceras partes podría llevar a un desencanto envuelta en la polémica. La última ha sido
de sus usuarios con la plataforma, lo que máquina a otra, dificultan mucho su locali- dada a conocer por el rotativo británico
llevaría a los clientes a alzar la vista hacia zación. dedicado a las nuevas tecnologías The
alternativas como Mac OS X o GNU/Linux, Esta es una de las tretas que usa el gusano Register, el cual ha informado que la enci-
con la consiguiente pérdida de cuota de Conficker, el más mencionado en la reunión clopedia en línea Wikipedia, regida por el
mercado y dominio. como ejemplo del auge del código malicio- modelo colaborativo al mismo estilo que
Por lo tanto, va a ser difícil que Windows so, que dobla sus cifras cada año y sobre- proyectos de software como Open
sea mucho más seguro de lo que ya es pasa en ritmo de crecimiento al "phishing". Office.org o Linux, ha incluido las direccio-
Windows Vista, tal vez el mayor exponente Panda Security detectó 20 millones de nue- nes IP de las computadoras que se sabe a
hasta ahora de la seguridad en los sistemas vos virus en 2008. Cambian muy rápido, ciencia cierta pertenecen a la Iglesia de la
operativos de la compañía de Redmond, y tanto en su forma como en los mensajes de Cienciología en una lista mediante la cual
que ha sido mucho menos criticado en este correo en los que viajan, las páginas web en se les prohíbe editar artículos de la enciclo-
aspecto que Windows XP, el cual (y reto- las que se esconden y las direcciones IP de pedia. Es lo que se conoce como banear a
mando una frase del principio del artículo) las mismas. Se necesitan meses para desci- dicha organización.
tenía fama de auténtico “queso de gruyere”. frar su código, cuando antes se hacía en
De hecho, es posible que alguna parte de la días. FACEBOOK Y OTROS SERVICIOS
tecnología y las configuraciones desarrolla- MIENTEN: LAS FOTOS RETIRADAS
das para este Windows tan particular WIKIPEDIA VS. LA CIENCIOLOGÍA
hayan pasado a nuestros Windows de POR LOS USUARIOS NO SON
escritorio a través de Vista y el futuro El comité directivo que se encarga de ELIMINADAS INMEDIATAMENTE
Windows 7, del que recientemente se ha supervisar los “baneos” de usuarios en la
publicado su primera release candidate. famosa enciclopedia libre ha cortado el Con diversos casos de personas que han
acceso a todas las IP's correspondientes a sufrido las consecuencias de haber colgado
LA SEGURIDAD EN INTERNET computadoras que se sabe son propiedad fotografías online que después las han
VA DE MAL EN PEOR de la Iglesia de la Cienciología, acusando a puesto en situaciones comprometidas, el
esta organización de manipular artículos tema es serio y polémico. Un estudio lleva-
"Hay millones de delitos informáticos que para eliminar las críticas dirigidas contra do a cabo por la Universidad de Cambridge
no se denuncian y los que sí, sólo el 9% ella. Es un episodio más de la larga guerra ha demostrado que la mayoría de los sitios
acaban en detenciones", afirmó la investi- que esta organización religiosa, tolerada en sociales de la Web 2.0 tardan demasiado en
gadora Erin Kenneally en la reunión anual algunos países y prohibida en otros, eliminar las imágenes o nunca lo hacen,
del Anti Phishing Working Group (APWG), mantiene en la Red de redes con sus pese a honrosas excepciones.
celebrada en Barcelona. Y eso no es nada detractores. La prueba fue fácil: crear un perfil en cada
según el asesor de las Naciones Unidas, uno de los servicios online sociales más
Raoul Chiesa: "Por suerte los terroristas aún populares de la Web (16 en total), publicar
no saben atacar las infraestructuras críti- imágenes en ellos, retirarlas y comprobar
cas, que están desprotegidas en todo el cuanto tardaban en desaparecer de forma
mundo". efectiva. Los resultados fueron en algunos
El robo de identidad, sean contraseñas o casos decepcionantes y, en otros, sorpren-
datos bancarios, es la estrella de los fraudes dentes. Facebook y MySpace se encuentran
en Internet que, según la empresa S21sec, entre las redes sociales que más han tarda-
se han doblado en un año. El 62% son do en retirar las fotografías (hasta un mes
casos de "phishing", que se está cebando en después de haberlas eliminado del perfil,
el Sistema de Nombres de Dominio: los cri- aún se podía acceder a ellas), mientras que
minales registran o secuestran dominios y Orkut (propiedad de Google) y Flickr
los dan a ordenadores infectados bajo su (Yahoo!) se contaron entre las más rápidas
control, que actúan como señuelo para que en eliminar de forma efectiva el contenido
los incautos introduzcan datos bancarios. tras la solicitud del usuario de darlo de baja.
Al cambiar velozmente el dominio de una El estudio fue llevado a cabo por cuatro
NOTICIAS
Sólo Programadores
en Formato
Digital
Por mucho menos dinero
Llegará antes a su ordenador que a los quioscos
Suscríbase en www.revistasprofesionales.com
NOTICIAS
bién trabaje con Linux, pero sin lugar a arquitectura x86; se trata de un Xcore86 de adquirir un paquete de pilas (dos en caso
dudas la guerra que se mantiene entre los bajo voltaje que funciona a 1 GHz. y no que sean de cuatro unidades), abrir la com-
creadores de Windows y la comunidad del necesita ventilador para disipar el calor putadora, instalarlas... ¡y empezar a utilizar-
software libre hacen que cualquier peque- generado, lo que permite reducir el consu- lo nuevamente!
ña noticia de este tipo adquiera un carácter mo eléctrico de la máquina a la vez que se Los amantes de realizar pruebas y experi-
marcadamente importante. disminuye su volumen y se eliminan ruidos. mentos pueden aprovechar la tarjeta SD
Algo parecido sucedió hace tiempo cuando Su precio también se ve disminuido gracias que utiliza como medio de almacenamien-
salió a la luz que Hotmail utilizaba también al uso de estos componentes, y pese a que to para tener diversas tarjetas, cada una de
servidores Linux, aunque debe tenerse en aún no ha salido al mercado, en su sitio ellas con un sistema operativo diferente. Y
cuenta que esta empresa fue adquirida por web podemos leer que rondará los 200 los distribuidores y vendedores pueden
Microsoft, con lo que la entonces compañía dólares en su configuración más básica. adaptarlo exactamente a las necesidades
de Bill Gates debió manejar una situación Para la unidad de almacenamiento, el que tenga su cliente.
heredada de antemano. Y no resulta tan Gecko EduBook puede funcionar con un Las operadoras de telecomunicaciones
fácil migrar los servidores de un servicio disco duro de 2,5” estándar o con una uni- también pueden venderlo configurado con
con tantos usuarios y datos almacenados. dad SSD. Incluso podemos reciclar viejas módulos WiMAX o 3G a su conveniencia,
No obstante, es de destacar que solamente unidades de almacenamiento para utilizar- sin hablar de aplicaciones empotradas y
por pundonor y por imagen, Microsoft las con él. usos muy concretos que le queramos dar.
debería poner su nuevo motor de búsque- Dispone de un puerto USB interno (además El único handicap que va a tener es el
das online en funcionamiento sobre sus de tres externos), lo que permite conectar microprocesador, del que sin lugar a dudas
propios servidores, ya que si utiliza los de la un módulo WiFi, WiMAX o 3G sin excesivos muchos potenciales clientes no se van a
competencia directa y, se presupone que problemas. También en el interior, y una vez fiar al no ser un Intel Atom u otra marca
toda empresa busca lo mejor, deberíamos retirada la tapa inferior, disponemos de un conocida. También al ser de un fabricante
entender que tal vez Microsoft no confíe en slot para memorias SD (al igual que un slot pequeño y desconocido, esto probablemen-
su propio producto... externo), el cual podemos utilizar como te disuadirá a muchos potenciales compra-
almacenamiento de bajo coste o, incluso, dores.
EL NETBOOK MÁS VERSÁTIL DEL para tener diversas tarjetas con diferentes
MUNDO FUNCIONA CON PILAS sistemas operativos instalados. MICROSOFT LANZA EL SP2
Esta máquina puede funcionar con PARA WINDOWS VISTA... SIN DECIR
El NorhTec Gecko EduBook presenta una Windows XP, aunque según reza en su
estructura modular fácilmente ampliable y página web, viene con Ubuntu Netbook NADA
adaptable a la funcionalidad concreta que Remix preinstalada y puede funcionar con
se le quiera dar, se basa en un procesador cualquier distribución de GNU/Linux (y es La nula publicidad que ha dado la compa-
compatible x86 y utiliza ocho pilas AA de suponer que con cualquier otro sistema ñía de Redmond al lanzamiento deja bien
recargables como batería, lo que le da la operativo que funcione sobre procesadores patente el futuro que le espera a esta ver-
posibilidad de ser utilizado incluso cuando x86 como OpenSolaris). sión de su sistema operativo, que ha repre-
se nos acaba la carga, comprando pilas en sentado junto a Windows ME uno de sus
cualquier comercio. Una oferta muy intere sante grandes fiascos comerciales y de crítica.
Rompe esquemas en diversos puntos, Solamente por el uso de pilas estándar Si habitualmente las grandes compañías
empezando por la batería: tal y como afir- como batería, esta máquina ya se presenta de informática en general y Microsoft en
man desde este fabricante de hardware tai- como una opción muy suculenta. particular nos tienen acostumbrados a
landés, no emplea ninguna batería propie- Imaginemos la siguiente situación: de viaje, espectaculares lanzamientos de sus princi-
taria, sino que echa mano de pilas estánda- se nos acaba la batería de nuestro netbook pales productos y las posteriores actualiza-
res de formato AA, recargables. y nadie es tan amable como para permitir- ciones, la compañía de Steve Ballmer ha
Dependiendo del tipo de pilas, la autonomía nos acceder a un enchufe. Si realmente hecho todo lo contrario con el Service Pack
de la máquina oscila entre las cuatro y las necesitamos utilizar nuestra máquina, 2 para Windows Vista, cuyo desarrollo ter-
seis horas (dependiendo de si se utilizan podemos entrar en cualquier tienda y minó a finales del pasado mes de abril con
pilas basadas en Níquel o en Litio). la versión RTM (Release To Manufacture) y
NorhTec, la compañía madre que ha des- cuya versión final vio la luz el 26 de mayo.
arrollado y fabrica esta computadora (que Ni la página inicial del sitio web de la com-
no se encuentra todavía en el mercado), ha pañía ha reflejado la novedad, ni se ha
previsto el Gecko EduBook como una podido encontrar una nota de prensa al
máquina altamente flexible y adaptable a respecto, por lo menos en las primeras
casi cualquier necesidad imaginable: el horas de disponibilidad del producto.
microprocesador y la memoria RAM se Con la publicidad que se le está dando a
encuentran en módulos independientes y Windows 7, la próxima iteración de la pla-
actualizables, de forma que puede ampliar- taforma de Microsoft, y la buena acepta-
se en cualquier momento según se necesi- ción y críticas de las que está disfrutando,
te, reutilizando la CPU y memoria RAM en esta es la puntilla que marca el próximo
otras máquinas del mismo tipo. punto y final de Windows Vista, un sistema
El microprocesador no es un Intel Atom o que seguirá recibiendo soporte técnico por
un VIA, ni siquiera un AMD, sino que se parte de la multinacional norteamericana
corresponde con una marca mucho menos siguiendo los plazos fijados pero que,
conocida, aunque es compatible con la obviamente, no va a disfrutar de prórrogas
NOTICIAS
a los microchips VIA Nano. Por la definición, como proyectos que empiezan y empresas
estos serían los candidatos ideales a equi- que prevén una expansión y crecimiento
par máquinas del tipo netbook o MID, constante.
pequeñas y que necesitan de componentes También es un producto orientado a com-
que pese a ser poco potentes, tampoco ele- petir en un segmento de clientes que habi-
ven el precio ni el tamaño del aparato. Y así tualmente apuestan por servidores en for-
los concibió VIA pero sin desmerecer sus mato torre, menos ampliables o, como
capacidades para tareas “superiores”. Y de mínimo, ampliables de forma menos
esta forma lo ha entendido Dell, que ha cómoda.
presentado la nueva serie de servidores El precio de cada uno de los módulos (que
XS11-VX8, más conocidos por su sobre- recordemos, constituyen un servidor por si
nombre “Fortuna”, que los emplean como solos) estará acorde con la filosofía mini-
procesadores centrales. malista, ya que rondará los 400 dólares, por
en su ciclo de vida como ha tenido Estos no son servidores para lo que para una empresa que empiece
Windows XP, sin lugar a dudas el sistema competir directamente su actividad y tenga previsto crecer,
más exitoso de la compañía. La misma con las grandes máqui- supondrá una inversión inicial baja
Microsoft se contradice con sus acciones, nas de los centros de que podrá ir creciendo según sus
pues pese a admitir algunos errores con proceso de datos necesidades y recursos económi-
Vista y que no ha sido tan exitoso como el (para los que la cos disponibles. A esto, debere-
resto de versiones, no ha llegado a admitir misma compañía ya mos añadirle el coste del basti-
nunca abiertamente que haya sido un fra- tiene las potentes dor.
caso y, en cambio, el trato que le da (al sis- series PowerEdge), sino El movimiento de Dell abre todo
tema y a sus usuarios) es de segunda fila, para empresas que nece- un campo de posibilidades, espe-
según podemos ver. sitan mantener sus propios cialmente a Intel para su arquitectu-
Técnicamente, Windows Vista SP 2 no servidores, que no requieran de ra Atom, hasta la fecha inédita en otro
aporta grandes novedades: incluye una potencia desmedida ni de unas campo que no sean los netbooks y UMPC's.
Windows Search 4.0 (la herramienta de infraestructuras costosas para mantener- ¿Tardaremos mucho en ver un servidor
búsqueda desktop), un asistente para la los. modular basado en estos microchips? ¿y
conexión rápida y simple a redes WiFi Los VIA Nano utilizados por Dell son proce- quién será la afortunada que los lance en
(WCN, Windows Connect Now), soporte sadores de 64 bits construidos empleando primer lugar? ¿HP? ¿IBM? Personalmente
para CPU's VIA de 64 bits, y mejora la ges- tecnología de 65 nanometros, cuyo consu- apuesto por Hewlett-Packard.
tión de la energía hasta en un 10%, sin mo energético oscila entre los 20 y los 29
lugar a dudas algo muy útil en los portáti- vatios a pleno rendimiento, y unos 15 PUBLICADO CHROME 2...
les. También se ha añadido soporte para cuando no mantiene carga de trabajo. PERO SÓLO PARA WINDOWS
Bluetooth 2.1 y se han adjuntado parches Cuentan también con extensiones de vir-
que corrigen diversos bugs. tualización, algo ya imprescindible en cual- Mayor rapidez para la nueva versión de un
La descarga de este Service Pack puede ser quier servidor moderno que se precie, pues programa que progresa de forma inusita-
realizada mediante la herramienta de todos los sistemas operativos líderes en damente rápida respecto a otros desarro-
actualización del sistema operativo, o bien este campo cuentan con sus funcionalida- llos de Google. Los “maqueros” y “linuxeros”
descargándolo manualmente desde el sitio des de virtualización, ya sean nativas o pro- aún no ven en el horizonte una versión
web de Microsoft. En caso de haber instala- porcionadas por software de terceras par- final para sus respectivas plataformas.
do alguna versión previa de este mismo tes. Las velocidades a las que pueden fun- Con aún muy poca vida a sus espaldas, el
paquete, esta deberá ser desinstalada pre- cionar estos chips varían entre 1 y 1,8 GHz. navegador web Google Chrome ha llegado
viamente. El formato en el que se presenta uno de a su versión 2.0, un proceso de madurez
Paralelamente al Service Pack 2 de estos servidores no es mucho más grande inusitadamente rápido que se contradice
Windows Vista, también se ha lanzado el que un disco duro. Las imágenes que ha con la habitual filosofía de “beta continua”
SP2 para Windows 2008. El binario de ins- publicado Dell son, de hecho, una infraes- de los productos de la multinacional del
talación es el mismo, demostrando así que tructura muy modular, disponiendo cada buscador. Esta veloz progresión es probable
ambas ramas del sistema operativo com- uno de los módulos de los recursos sufi- que se deba a la necesidad estratégica de la
parten la mayor parte del código fuente. cientes para actuar en solitario (memoria compañía de contar con una opción de
RAM, conexión de red, microprocesador, mercado fuerte, potente, y probablemente
DELL PODRÍA REVOLUCIONAR almacenamiento). Estos módulos se enca- un paso más en el asalto de la compañía a
EL MUNDO DE LOS SERVIDORES denan montándolos en un chasis que faci- los sistemas operativos de escritorio.
lita su interconexión. De hecho, Chrome también se encuentra en
GRACIAS A LOS CHIPS VIA NANO La conexión de un nuevo módulo en un un desarrollo continuado en el seno de
rack preexistente puede realizarse en Chromium, un proyecto de código abierto
La compañía norteamericana ha presenta- caliente (hot plug), lo que significa que el que recopila el código donado por progra-
do una arquitectura altamente modular y servidor puede ampliarse sin tener que madores independientes y contribuidores y
de gran eficiencia energética, basada en la pararlo. se ocupa de compilar las betas intermedias
plataforma del fabricante taiwanés, inicial- El target de este tipo de servidores son, entre versiones. Así que esta versión 2.0
mente destinada al segmento de los netbo- como he dejado a entrever anteriormente, estable ha sido el producto de compilar los
oks. Pequeños, baratos y con un bajo con- compañías que no requieren de un servidor últimos avances producto de diversas betas
sumo, así podemos definir de forma rápida exageradamente potente pero si escalable, previas.
NOTICIAS
NOTICIAS
(RF) fiable y homogénea para que las máquinas, optimizarlas para el máximo
empresas puedan ampliar su cobertura y rendimiento con él, y desarrollar nuevos
mejoren así su capacidad inalámbrica. drivers para que el hardware existente
La tecnología M-Drive de Cisco incluye funcione bien y el nuevo que será lanzado
además la función ClientLink, que ayuda a en el futuro sea compatible.
prolongar la duración de los dispositivos La llegada de la RTM de Windows 7 se
802.11a/g, mejorando el rendimiento de hará a tiempo para que los fabricantes
los nuevos 802.11n. De hecho, según el tengan listas sus nuevas computadoras
laboratorio independiente Miercom, la para la campaña navideña preparadas con
ción del Aironet 1140, el primer punto de función ClientLink incrementa hasta el Windows 7, especialmente en lo que res-
acceso inalámbrico que combina todas las 65% la velocidad de los dispositivos pecta a los netbooks, de los que se prevé
prestaciones del protocolo 802.11n con 802.11a/g actuales conectados a una red que serán nuevamente una de las estrellas
una fácil instalación. Cisco 802.11n. Además, al aumentar la de la campaña -aunque probablemente
En un momento en el que la movilidad de velocidad de los clientes 802.11a/g, sin llegar a las altísimas cotas que consi-
los trabajadores es cada vez más impor- ClientLink incrementa eficazmente la guieron estas pasadas navidades-.
tante y en el que se precisan de soluciones capacidad total del canal disponible hasta El lanzamiento de Windows 7 debe consi-
colaborativas para alcanzar las mayores el 27% y puede ayudar a optimizar el ren- derarse estratégico para Microsoft, des-
cotas de productividad dentro de la dimiento de los dispositivos 802.11n y pués de que Windows Vista se haya con-
empresa, el nuevo punto de acceso Cisco 802.11a/g. vertido en un fracaso de crítica y comer-
Aironet 1140 ha sido diseñado para inte- cial en ventas OEM comparable al que
grar voz, vídeo y dispositivos móviles CONFIRMADO: WINDOWS 7 supuso en su momento Windows
802.11n en las redes inalámbricas, con un PARA NAVIDADES Millenium. Pasar otra campaña navideña
rendimiento y una velocidad nueve veces con Vista podría significar para la compa-
superior a las redes inalámbricas Un post en uno de los blogs oficiales de ñía de Redmond perder ventas en favor de
802.11a/g anteriores. Asimismo, Cisco Windows 7 alojados por la red MSDN, GNU/Linux, especialmente en las máqui-
Aironet 1140 se completa con el estándar indica que la RTM del nuevo sistema esta- nas de bajo coste.
Power over Ethernet (PoE), que proporcio- ría lista en agosto y, por lo tanto, la ver- En el terreno de los netbooks, un Vista
na un ahorro considerable en gastos y sión final podría ser instalada en máqui- demasiado “pesado” y lento para estos
mantenimiento, ya que evita la necesidad nas por navidades. pequeños aparatos podría ser el que más
de alimentar independientemente el punto Microsoft ha revelado un nuevo dato que sufriese la pérdida de cuota de mercado,
de acceso. apunta a que el sucesor de Windows Vista canibalizado por su propio antecesor
La compañía, que ya en 2007 anunció la estará al alcance de los consumidores Windows XP, con el que los chicos de
primera plataforma homologada 802.11n para la campaña navideña. Con esto, la Steve Ballmer parecen incapaces de cortar
para empresas, comercializa ahora nuevas compañía de Redmond persigue borrar lo lazos debido a esta incapacidad de su
soluciones basadas en dicho estándar que más rápidamente posible el fiasco que ha sucesor para funcionar medianamente
ofrecen facilidad de uso e instalación, fia- supuesto Windows Vista a nivel comer- bien en los ultraportátiles más pequeños.
bilidad y rendimiento. Para conocer el cial. Con un Windows 7 optimizado para esta
catálogo de productos de Cisco para el La revelación se ha producido a través de categoría de máquinas, Microsoft podría
estándar 802.11n, se puede visitar el vídeo un post del blog Engineering Windows 7, permitirse dejar de proporcionar licencias
de Ben Bibson, director sénior para solu- oficial de la compañía de Redmond y alo- de XP a los fabricantes de netbooks,
ciones de movilidad de Cisco. jado en los servidores de MSND. En dicho pasando página definitivamente por lo
Entre los beneficios del nuevo Aironet post se analizan las distintas etapas por que se refiere a este sistema operativo.
1140 destacan un incremento significativo las que está pasando y va a pasar el futu- También hay que tener en cuenta la
de la velocidad de los dispositivos ro sistema de Microsoft, y se afirma que la entrada en escena de los netbooks basa-
802.11a/g; un aumento en la capacidad versión RTM del sistema (Release to dos en chips ARM equipados con Ubuntu
general de los canales inalámbricos; y una Manufacturing, es decir, preparada para y Android, cuyo rendimiento comercial es
reducción de los huecos de cobertura enviar a fabricantes e integradores) esta- toda una incógnita pero que están levan-
inalámbrica de dispositivos anteriores. rá lista para agosto. Esto significa que, tando mucha expectación en los medios
Ecológico e innovador entre agosto y octubre/noviembre, los especializados y la audiencia profesional.
Cisco Aironet 1140 cuenta, además, con un fabricantes e integradores podrán experi- Si no se llegase a tiempo para la campaña
diseño innovador y elegante, que favorece mentar con este sistema, probar sus navideña de este año, un retraso signifi-
la reducción de gastos y la eficiencia ener- caría perder una gran cantidad de ventas
gética. El Aironet 1140 será distribuido en y, sensiblemente, cuota de mercado, por
un paquete ecológico, que agrupa 10 pun- lo que podemos tener por seguro que la
tos de acceso, que reduce el embalaje en multinacional de Redmond hará lo impo-
un 50% y facilita el desembalado, la sible para que Windows 7 esté listo para
ampliación y su instalación en las organi- estas fechas. Le queda muy poco, pues la
zaciones. existencia de la versión Release Candidate
Mejora del rendimiento con la tecnología indica que ya buena parte del trabajo está
M-Drive hecho.
Por otro lado, Cisco ha integrado en el
Aironet 1140 la tecnología M-Drive, que Por: Guillem Alsina (guillem@imatica.org)
crea una plataforma de radiofrecuencia
JAVAHISPANO
Jetty, el contenedor web Java EE cuya popularidad sólo es sobrepasada por la de Tomcat, está
en la incubadora de proyectos de EclipseRT (Eclipse Runtime Projec). Desde hace tiempo que la
fundación Eclipse y Jetty (proyecto que hasta ahora sólo estaba alojado en Codehaus) estaban
discutiendo sobre la posibilidad de mover Jetty a Eclipse. Uno de los motivos era que el entor-
no de desarrollo está cada vez más integrado con este servidor web. Finalmente, se han deci-
dido a dar este paso.
Jetty, al menos por lo de ahora, también va a seguir alojado en Codehaus, pero el código de
lo que será Jetty 7 ya ha sido movido al paquete org.eclipse.jetty y ya se encuentra en el repo-
sitorio SVN de Eclipse. La anterior licencia del proyecto, Apache 2.0, se va seguir manteniendo.
Pero ahora se va a distribuir bajo una doble licencia, añadiendo la licencia de Eclipse.
JAVAHISPANO
Actualidad Java de la mano de javaHispano
OPINIÓN
Sobre IBM y la compra
Soporte para Java en Google App Engine
Sobre el autor
Abraham Otero (abraham.otero@javahispano.org) es responsable de calidad y miembro de la junta de javaHispano.
BASES DE DATOS
Arquitectura de Oracle
DAVID ROLDÁN MARTÍNEZ
Los procesos relacionados con el usuario.
Dr. Ingeniero en Telecomunicación, Analista-Programador
del ASIC de la Universidad Politécnica de Valencia La instancia de Oracle.
La base de datos.
En este artículo, el primero de una Por cada instancia de Oracle se tiene una sola
serie sobre la base de datos Oracle base de datos. En un servidor se pueden crear
(http://www.oracle.com), se estudiará varias instancias, pero se recomienda solo una
porque cada instancia consume muchos recur-
con cierto nivel de detalle la sos.
arquitectura de este sistema de
gestión de base de datos. Para seguir Procesos de usuario
este artículo y el resto de la serie, se A nivel de usuario, existen dos procesos que per-
recomienda instalarse la Express miten al usuario final interactuar con la instan-
Edition de Oracle, disponible en cia, y en último punto, con la base de datos y son
el proceso de usuario y el proceso servidor.
http://www.oracle.com/technology/pr Dependiendo de la arquitectura técnica de la
oducts/database/xe/index.html. aplicación, el Proceso de Usuario corre en el pro-
Queda fuera del ámbito de este pio PC del usuario o en algún servidor de capa
intermedia. Cuando un usuario ejecuta una apli-
artículo ofrecer la instalación y el cación, Oracle inicia un Proceso de Usuario que
manejo básico de esta herramienta, soporta la conexión del usuario con la instancia.
ya que en la web de Oracle existe El proceso de iniciar y mantener una comunica-
ción entre el Proceso de Usuario y la instancia de
suficiente documentación al respecto. Oracle, recibe el nombre de conexión. Una vez
que ha conexión se ha creado con éxito, el usua-
Introducción rio establece una sesión con la instancia sobre
dicha conexión.
La arquitecutra del servidor de base de datos Puesto que los procesos de usuario no se pueden
Oracle se divide en tres componentes básicos: comunicar directamente con la base de datos,
tras establecer una sesión, cada usuario arranca
un Proceso Servidor en el propio servidor, que
será el responsable de realizar aquellas tareas
que permiten al usuario interactuar con la base
de datos.
Figura 1. Arquitectura del servidor de base de Figura 2. Relación entre los procesos de usuario
datos Oracle. y el resto de componentes de Oracle.
BASES DE DATOS
Arquitectura de Oracle
Además de los procesos asociados a cada El tamaño de las estructuras del SGA puede
conexión de usuario, por cada sesión de cambiar en múltiplos de la unidad de gra-
usuario se crea un área específica de nularidad. Esta unidad depende del tamaño
memoria llamada PGA (Program Global definido de SGA; así, la unidad de granula-
Area) que almacenará información especí- ridad es 4 MB si el SGA es menor que 128
fica de la sesión del usuario y que no se MB y 16 MB, si el SGA es mayor de 128 MB.
comparte con otras sesiones. Cada Proceso El tamaño de las estructuras del SGA puede
Servidor tiene su correspondiente PGA y es consultarse en la vista v$SGA_DYNAMIC_
es el que realmente se comunica con la ins- COMPONENTS.
tancia de Oracle en nombre del usuario.
La PGA contiene datos e información de Figura4. Datos de la instancia de Oracle
control para los procesos de usuario que se obtenidos de la vista v$instance.
ejecutan en el servidor de Oracle. El tama-
ño y contenido de la PGA depende de las En SQL/Plus podemos ver el tamaño del
opciones del servidor que se hayan instala- SGA con la instrucción
do.
La instancia de Oracle
La instancia está formada por procesos los
procesos de respaldo que acceden a los Figura 7. Consulta de los parámetros de
inicialización.
ficheros de la base de datos y por un área
de memoria compartida denominada El SGA compuesta por las siguientes
System Global Area (SGA). Es la SGA con la estructuras de memoria, cada una de ellas
que se comunica el proceso de servidor del de tamaño fijo:
usuario cuando éste accede a la base de El buffer de caché (database buffer
Figura 5. Datos de la instancia de Oracle
datos Oracle. obtenidos de la vista v$instance. cache): almacena los bloques de datos
que han sido cargados recientemente (se
El tamaño del SGA es determinado por hayan o no confirmado sus cambios en
varios parámetros de inicialización. Los uti- el disco) como consecuencia de la ejecu-
lizados con más frecuencia son: ción de sentencias SQL desde los datafi-
Figura 3. Arquitectura de la Instancia de Si queremos consultar el valor de un pará- les, tales como tables, índices y clusters.
Oracle. metro debemos consultar la vista Al utilizarse este buffer, se reducen las
v$parameter. Por ejemplo: operaciones de entrada y salida y por
Podemos utilizar la vista v$instance para esto se mejora el rendimiento.
consultar los datos relacionados con la ins- Cuando un proceso requiere datos, el
tancia. proceso servidor mira en el Database
Buffer si encuentra el bloque de datos
El Área Global del Sistema (SGA) buscado lo retorna al cliente, sino lo
El SGA es un área de memoria compartida carga desde los Data Files. Se trata de
por todos los usuarios que se utiliza para evitar cuando sea posible el acceso a
almacenar información de control y de los archivos en disco, pues la lectura es
datos entre el servidor y las aplicaciones costosa en términos de desempeño.
cliente. Se crea cuando se “levanta” (es El buffer de redo log (redo log buffer
decir, se arranca) la instancia y se borra cache): guarda los cambios efectuados
cuando ésta se “baja” (es decir, cuando se en la base de datos y que serán escritos
hace shutdown). La SGA está situada en la en el archivo físico de redo log. Se uti-
memoria virtual del computador, donde Figura 6. Parámetros de inicialización de liza para recuperar la base de datos
reside el servidor Oracle. la SGA. ante eventuales fallos del sistema.
BASES DE DATOS
Los cambios almacenados en este buf- información acerca del espacio asigna- Java Pool: Es una estructura opcional,
fer se llaman “redo entries” y contienen do y utilizado por los objetos de un se requiere solo si se esta usando Java
la información necesaria para poder esquema. y se utiliza para realizar el parse de las
reconstruir los cambios realizados por El área de librería (library cache): con- clases java que se utilizan como los
las instrucciones INSERT, UPDATE, CRE- siste de dos estructuras: Shared SQL y métodos PL/SQL.
ATE, ALTER ó DROP. Shared PLSQL: Oracle utiliza el algoritmo LRU (Least
Shared pool: almacena las sentencias Shared SQL: Almacena y comparte el Recently Used) para gestionar los conteni-
SQL y PLSQL más recientemente ejecu- plan de ejecución de las sentencias SQL dos del Shared Pool y el database buffer
tadas y los datos más recientemente que han sido ejecutadas más reciente- cache. Cuando el proceso servidor de un
utilizados del diccionario de datos. Una mente. El Parse es el proceso por el cual usuario necesita poner una sentencia SQL
cantidad insuficiente de espacio asig- el servidor Oracle determina la forma en el shared pool o copiar un bloque de la
nado a esta área podría acarrear pro- más conveniente de acceder a los datos bbdd en el buffer cache, Oracle utiliza el
blemas de rendimiento. o de ejecutar la sentencia, a este méto- espacio en memoria ocupado por la última
La asignación de memoria para el do se le conoce como Plan de sentencia SQL accedida o el buffer para
Shared Pool está determinada por el Ejecución. albergar la SQL solicitada o copiar el blo-
parámetro de inicialización SHA- que. Con esta técnica, las SQL más frecuen-
RED_POOL_SIZE. Este parámetro puede tes permanecen más tiempo en memoria,
ser modificado dinámicamente ejecu- mejorando las prestaciones.
tando el comando ALTER SYSTEM SET. El tamaño de los componentes de la SGA
Después del análisis de rendimiento es puede configurarse de dos modos: manual-
posible afinar el tamaño pero sin que el mente, y entonces habrá que ajustar el
SGA sobrepase el tamaño definido por tamaño inicial explícitamente de acuerdo al
el parámetro SGA_MAX_SIZE. funcionamiento de la aplicación; y, auto-
Contiene las áreas del caché de biblio- máticamente, y es Oracle el que ajusta el
teca y del caché del diccionario de tamaño de los componentes de la SGA de
datos. Figura 8. Consulta de la estructura de la manera transparente al usuario.
SGA.
Caché de biblioteca (Database dictio- Independientemente de cual sea la opción
nary cache): almacena la información escogida, Oracle divide el espacio de alma-
de los datos del diccionario más recien- Shared PLSQL: Almacena las unidades cenamiento de la SGA en porciones más
temente utilizados, como definiciones de programa como procedimientos pequeñas denominadas gránulos, que son
de tablas y columnas, nombres de almacenados, funciones y paquetes que alojados y desalojados dinámicamente.
usuario, claves y privilegios. Aquí se han sido parseados, compilados y eje-
manejan los árboles de parsing y el plan cutados recientemente. Procesos de la Instancia
de ejecución de las queries. Durante la Estructuras de datos opcionales Los procesos de una instancia Oracle reali-
fase parse, el proceso del servidor busca Large Pool: Es una estructura opcional zan funciones que son necesarias para
la información en el Data Dictionary que se puede definir dentro del SGA, atender las solicitudes de varios usuarios
Cache para resolver los nombres de los sirve para almacenar datos de la sesión concurrentes, sin comprometer la integri-
objetos especificados en la sentencia de usuario y operaciones de backup y dad y rendimiento de todo el sistema. Se
SQL y para validar los privilegios de restauración de datos, este pool se usa cargan en memoria y son transparentes
acceso. Si es necesario, el proceso del en un entorno de servidor compartido. para los usuarios.
servidor inicia la carga de esta informa-
ción a partir de los ficheros de datos. Si Componentes obligatorios de la SGA
varias aplicaciones utilizan la misma Shared pool Guarda las sentencias SQL ejecutadas más recientemente por
sentencia SQL, esta área compartida los usuarios
garantiza el acceso por parte de cual- Database buffer cache Almacena los datos que han sido accedidos más reciente-
quiera de ellas en cualquier instante. mente por los usuarios
El caché del diccionario de datos está Redo log buffer Guarda información de las transacciones para los procesos de
conformado por un grupo de tablas y recuperación de la base de datos
vistas que identifican la base de datos.
La información que se almacena aquí Componentes opcionales
guarda relación con la estructura lógi- Guarda los objetos JAVA y el código de aplicación más recien-
Java Pool
ca y física de la base de datos. El diccio- temente empleado cuando se utiliza la JVM de Oracle.
nario de datos contiene información tal Large Pool Guarda datos para operaciones costosas.
como los privilegios de los usuarios, Guarda información asociada con los mensajes de petición
restricciones de integridad definidas Streams Pool encolados cuando se emplea la opción de encolado avanzado
para algunas tablas, nombres y tipos de de Oracle.
datos de todas las columnas y otra
BASES DE DATOS
Arquitectura de Oracle
Estos procesos relacionan las estructuras copia los datos afectados desde los datafi- El número de Checkpoint en las cabece-
físicas con las estructuras lógicas en les a al Database Buffer Cache del SGA. Si el ras de los Data Files.
memoria y manejan el tránsito de informa- usuario comitea una transacción que modi- El número de Checkpoint, número de
ción desde y hacia la SGA, mejorando así el fica esos datos, el proceso DBWn escribirá secuencia de log, nombre de los
rendimiento y las prestaciones al centrali- los datos modificados en los correspon- Archived Log Files y el número de cam-
zar las tareas que son compartidas por dientes datafiles. bio del sistema dentro del Control File.
todos los usuarios. Por otra parte, el LGWR (Log Writer) escribe El proceso de Checkpoint no registra blo-
Se pueden utilizar varios procesos, depen- datos desde la SGA hacia los redo log files. ques de datos en los Data Files ni en los Log
diendo de la configuración, pero hay cinco Como se verá más adelante, el proceso de Files, registra el control de secuencia en los
procesos obligatorios en una instancia llenado de estos ficheros es circular, por lo Data Files y en el control File.
Oracle. que antes de empezar a sobreescribir en Este proceso es opcional. Si no está presen-
El DBWR (Database Writer) es el responsa- uno de ellos, se marca un punto de verifica- te, es el proceso LGWR quien asume la res-
ble de la escritura en disco de toda la infor- ción y el LGWR envía la orden de escritura ponsabilidad de la tarea.
mación almacenada en los buffers de blo- en los datafiles al DBWR. Por su parte, el PMON (Process Monitor)
ques que no se han actualizado. Cuando un LGWR realiza escrituras secuenciales en los monitoriza los procesos del servidor y
usuario realiza una operación SQL sobre ficheros redo log en las siguientes situacio-
una tabla, proceso servidor del usuario nes:
Cuando una transacción es confirmada
con COMMIT.
Cuando el redo log buffer cache esta
lleno en un tercio de su capacidad.
Cuando hay mas de 1Mb de cambios
registrados en el redo log buffer cache.
Antes que el DBWR escriba los bloques
modificados en el database buffer a los
data files.
Cada tres segundos.
LGWR confirma el Commit solo después
que los cambios fueron escritos a disco.
Podemos utilizar la vista v$logfile para con-
sultar los archivos Redo Log Files.
Otro de los procesos obligatorios es el CKPT
(Checkpoint). Es el responsable de advertir al
proceso DBWR de efectuar un proceso de
actualización en el disco de los datos man- Figura 12. Funcionamiento del LGWR.
BASES DE DATOS
BASES DE DATOS
Arquitectura de Oracle
Password File: es opcional y almacena Data files corrompiese. Estos conjuntos de redo logs
los nombres de los usuarios con privile- Los datafiles son los ficheros físicos que reciben en el nombre de grupos de redo
gios SYSDBA y SYSOPER. almacenan los datos de las tablas, índices o logs y cada bbdd debe tener, como mínimo
Archived Log Files: son copias off-line agrupamientos (clusters) y procedimientos. dos grupos que se emplean de manera cir-
de los archivos Redo Log que son nece- El tamaño de los datafiles está directamen- cular.
sarios para el proceso de recuperación te relacionado con la cantidad de datos que La Figura muestra un ejemplo de una bbdd
Es posible utilizar un nombre de base de pueden contener. que tiene tres grupos de redo logs. Cada
Los datafiles son la estructura física que se grupo está compuesto por dos miembros y
encuentra por debajo de otra área de alma- el primer miembro de cada grupo se guar-
cenamiento llamada tablespace. Un tables- da en el directorio /u02/oradata/PROD; el
pace es un área de almacenamiento lógica segundo, se multiplexa y se guarda en
en que se divide la base de datos. Los /u04/oradata/PROD.
tablespace agrupan segmentos relaciona-
dos desde un punto de vista lógico.
En una base de datos Oracle se puede tener
sólo uno datafile o cientos de ellos. Muchos
objetos (tablas, índices) pueden compartir
Figura 13. Ubicación de los ficheros redo varios datafiles. El número máximo de
log.
datafiles que pueden ser configurados está
datos distinto al nombre de la instancia, limitado por el parámetro de sistema MAX-
aunque Oracle recomienda que utilicemos DATAFILES.
el mismo nombre para la instancia y para la Cuando un usuario ejecuta una sentencia
base de datos para que su administración SQL sobre una tabla, el proceso servidor del
sea más sencilla. usuario copia los datos implicados en el
database buffer cache de la SGA. Si el usua- Figura 16. Determinación del número
Control files rio comitea los datos y los modifica, el d eprocesos de la instancia en ejecución.
Los control files son críticos porque contie- DBWn guarda los datos modificados en los
nen información que no se guarda en nin- datafiles correspondientes. Se puede utilizar la vista v$logfile para
gún otro sitio, ya que contienen la descrip- obtener los nombres de los grupos de redo
ción física y la dirección de los data files y logs y sus ubicaciones físicas:
de los redo log files, necesarios para el
correcto arranque de la base de datos.
Los control files se crean al crearse la bbdd
y se guardan en ubicaciones especificadas
en el parámetro control_files del fichero de
parámetros. Puesto su pérdida tendría un
impacto negativo en la capacidad para
recuperar la bbdd, en algunos entornos de
producción suelen duplicarse en ubicacio-
nes diferentes. El proceso CKPT es el encar-
gado de actualizar estos ficheros, mante- Figura 15. Otros procesos de la instancia.
niendo todas las copias sincronizadas.
Figura 17. Estructura de la base de datos
Para saber los ficheros y sus ubicaciones es Redo logs Oracle.
posible emplear la vista v$controlfile: Cuando un usuario realiza una transacción
en la base de datos, la información necesa- Esta salida muestra que la bbdd tiene un
ria para reproducir la transacción en caso total de dos grupos de redo logs y que cada
de que se produjera una caída de la base de grupo tiene un miembros. Cada uno de
datos se almacena en los redo log buffer. estos miembros está ubicado en un directo-
Los contenidos de este buffer, finalmente, rio y un volumen de disco separados, de
se escritos en los redo log files por el pro- manera que un fallo en un único disco no
ceso LGWR. producirá la pérdida de la información
Dado el importante papel que juegan los guardada en los redo logs.
redo logs en la recuperación de una bbdd Cuando un usuario ejecuta una sentencia
Oracle, se suelen multiplexar o copiar, es DML, la información de recuperación de
decir, que cada redo log contiene una o más esta transacción es escrita en el redo log
copias de sí mismo por si se produjese un buffer por el proceso servidor del usuario.
Figura 14. Funcionamiento del CKPT. fallo de harware o alguna de ella se Cuando el redo log activo se llena con la
BASES DE DATOS
BASES DE DATOS
Arquitectura de Oracle
BASES DE DATOS
una sola tabla que comparten una Un objeto puede almacenarse en uno En caso de encontrarla, no sería nece-
columna en común. Si a menudo se nece- o más datafiles pero de un solo sario procesar la sentencia, ganando así
sita recuperar datos de dos o más tablas tablespace. en prestaciones.
basado en un valor de la columna que Dos objetos diferentes de un esquema, Si la sentencia SQL no está en el Shared
tienen en común, entonces es más efi- pueden estar en distintos tablespaces. Pool, se procesa y su versión ejecutable
ciente organizarlas como un cluster, ya Los objetos pueden almacenarse en se coloca en el lugar del Shared Pool
que la información podrá ser recuperada múltiples discos. corresEl proceso del servidor intenta
en una menor cantidad de operaciones leer los bloques de datos del database
de lectura realizadas sobre el disco. buffer caché de la SGA. Si no están,
Indice: es una estructura de la base de deberán cargarlos desde los datafiles
datos creada para ayudar a recuperar en que se encuentren
datos de una manera más rápida y efi- Se registra el valor antiguo de los datos
ciente. Un índice se crea sobre una o en un segmento derollback y se crea un
varias columnas de una misma tabla. registro redo log.
De esta manera, cuando se solicita Se crea una copia de la transacción en
recuperar datos de ella mediante algu- un registro redo log.
na condición de búsqueda (cláusula Figura 29. Datafiles asociados a cada Se ejecuta la sentencia SQL modifican-
tablespaces.
where de la sentencia), ésta se puede do los datos, y se crea un registro redo
acelerar si se dispone de algún índice log que así lo refleje.
sobre las columnas-objetivo. Las Transacciones El proceso usuario valida la transacción
Vista: Una vista implementa una selec- (COMMIT), registrandose en un regis-
ción de varias columnas de una o dife- El término transacción describe a una uni- troredo log.
rentes tablas. Una vista no almacena dad lógica de trabajo que está compuesta El LGWR escribe los buffers del redo log
datos; sólo los presenta en forma diná- de una o más sentencias SQL, que deben en el disco.
mica. Se utilizan para simplificar la terminar con una instrucción commit o El servidor indica al cliente que la ope-
visión del usuario sobre un conjunto de rollback. En ese instante, una nueva trans- ración ha sido completada de manera
tablas, haciendo transparente para él la acción dará comienzo y estará activa hasta satisfactoria.
forma de obtención de los datos. que se ejecute alguno de esos dos coman- Se registra la terminación de la trans-
Procedimientos y funciones: son blo- dos otra vez. acción en un registro redo log.
ques de código PL/SQL que se almace- Cabe destacar que una transacción no se Se libera la información del rollback,
nan en el diccionario de datos y que considera confirmada hasta que ésta se pues ya no va a necesitarse.
pueden ser llamados desde una aplica- termina de escribir en el archivo de redo Si, a partir del paso 6, el usuario cancelara la
ción. Se ejecutan directamente desde la log. transacción (ROLLBACK), se podría utilizar la
base de datos, disminuyendo así el trá- Por ejemplo, supongamos que se desea información de rollback para restablecer el
fico de información a través de la red y hacer un UPDATE de una tabla. El ciclo de valor original. Por otra parte, si sucediese
mejorando el rendimiento de los proce- actualización sería el siguiente (ver figuras algo que impidiera que la transacción vali-
sos implementados mediante estos siguientes). dada por el usuario pueda llevarse a cabo (es
programas. Se agrupan en paquetes. El proceso cliente pasa la sentencia SQL decir, el usuario lanza un COMMIT pero éste
Trigger: es un procedimiento que se (en este caso, el UPDATE) al su proceso no puede ejecutarse), se puede utilizar la
ejecuta en forma inmediata cuando servidor y lo carga en la library caché información contenida en los registros redo
ocurre un evento especial. Estos even- del Shared Pool de la la SGA. log para rehacer la transacción (a partir del
tos sólo pueden ser la inserción, actua- Los procesos del servidor buscan en el paso 6). Finalmente, el DBWR escribe en el
lización o eliminación de datos de una la library caché de SQL del Shared Pool archivo de datos la copia de los bloques de
tabla. una versión ejecutable de la sentencia. datos modificados que se encuentran en el
Secuencias: se trata de un mecanismo database buffer cache.
de obtención de listas de números
secuenciales. El generador de secuencias Conclusión
de Oracle se utiliza para generar núme-
ros únicos y utilizarlos, por ejemplo, En este artículo se ha descrito la arquitec-
como claves de tablas. La principal ven- tura del sistema de gestión de bases de
taja es que libera al programador de datos Oracle, estudiando cuáles son sus
obtener números secuenciales que no se componentes básicos y cómo interaccionan
repitan con los que pueda generar otro entre ellos. En números posteriores se
usuario en un instante determinado. aprenderá cómo crear una base de datos
Para llevar a cabo el almacenamiento de un Oracle y configurarla adecuadamente y se
objeto en la base de datos, se contemplan Figura 30. Relación entre la base de datos, abordarán otros problemas de gestión y
las siguientes reglas: los tablespaces y los datafiles. diseño de bases de datos.
ACTUALIDAD
BASES DE DATOS
tendríamos si se implementase. En
mación para generar el plan. Pues bien, en esta
la hora de su creación.
almacena en el plan y en una caché interna. La
característica de índices que faltan permite
tener acceso a esta información para poder
decidir qué índices deberían implementarse.
Introducción Consta, por lo tanto de dos componentes: Un
conjunto de objetos de administración dinámi-
En el presente artículo nos vamos a sumergir en ca que son los que vamos a ver en este artícu-
la nueva funcionalidad que tiene el motor de lo, y el elemento MissingIndexes en planes de
base de datos de SQL Server 2005/2008, que presentación XML, que dejamos para más
nos ayuda a encontrar índices que pueden ace- adelante.
lerar las consultas. No nos estamos refiriendo al
Database Engine Tuning Advisor (consejero de Grupos de índices
optimación del motor de base de datos), sino a
las vistas y funciones de administración diná- La información de índices faltantes no la orga-
mica relacionadas con la creación de índices. niza SQL Server 2005/2008 en índices aislados,
Son 4: sino en grupos de índices. Por esto, las demás
sys.dm_db_missing_index_groups: Como vistas giran en torno a sys.dm_db_missing_
veremos, esta vista es la espina dorsal de la index_groups y se necesita para unirlas. Tiene
información que vamos a analizar. Devuelve dos columnas que identifican el grupo y los
los identificadores de los índices que faltan. índices que faltan. Se llaman respectivamente
sys.dm_db_missing_index_group_stats: index_group_handle e index_handle.
BASES DE DATOS
Análisis de índices de SQL Server 2005/2008
Detalles
Es la vista por antonomasia para obtener
la instrucción con la que crear el índice
(sys.dm_db_missing_index_details). Como
podemos apreciar en el apéndice, pode-
mos construir una consulta que nos de
hasta la instrucción CREATE INDEX. Las
columnas que tiene son:
El identificador del índice (index_
handle). Es la clave de esta vista.
El identificador de la base de datos
(database_id). Nos puede servir para
restringir los resultados a una base de
datos determinada: [Database_Id] =
Db_Id (‘AdventureWorks’).
El identificador de la tabla a la que le
falta el índice (Object_Id). Lo podemos
añadir al filtro si nos interesa analizar
sólo una tabla: AND [Object_Id] =
Object_Id (‘[Person].[Address]’).
Los tipos de columna según el uso que
les da la consulta (equality_columns,
En la práctica, en SQL Server 2005/2008 otras consultas mediante el operador inequality_columns e included_
cada grupo de índices sólo tiene un índice, CROSS APPLY. Devuelve tres informa- columns), que ya hemos visto en la
por lo que, aunque ambas columnas son la ciones que nos van a ser muy útiles parte anterior. Se pueden usar directa-
clave de cada índice, la realidad es que para la creación de los índices: mente para construir la consulta.
cada valor es único en su columna. A pesar El identificador de la columna dentro Como extra nos trae el nombre com-
de eso, interviene en las consultas porque de la tabla (column_id). Si nos fijamos pleto de la tabla sobre la que construir
las otras vistas se relacionan conceptual- en los índices que crea el Tuning el índice (statement), aunque el nom-
mente con un grupo de índices o con un Advisor, veremos que el nombre lo bre indique otra cosa. Por esto sólo
índice. construye usando estos identificado- hace falta usar database_id y
res. Así podemos saber si ya tenemos Object_Id en caso de que queramos
Columnas un índice parecido que podemos restringir los resultados, pero no para
mejorar y revisar, por ejemplo. traer el nombre de la base de datos,
Para obtener información individualizada El nombre de la columna de la tabla esquema y tabla.
sobre las columnas de la tabla a la que le (column_name). Según Microsoft, para convertir la infor-
falta algún índice, tenemos que acudir a El uso que la consulta da a la columna mación devuelta por esta vista en una ins-
sys.dm_db_missing_index_columns. A (column_usage). Nos devuelve tres trucción de creación de índice, se deben
diferencia de los otros objetos que vamos tipos, además en el siguiente orden: colocar las columnas de igualdad antes de
a ver, este es una función y necesita como «EQUALITY» cuando la columna está en las columnas de desigualdad, y juntas
parámetro el identificador del índice un predicado que expresa igualdad, deben formar la clave del índice. Las
(index_handle). bien sea en una unión (JOIN), en el fil- columnas incluidas se deben agregar a
Por lo tanto la usaremos para obtener tro (WHERE) o en el orden (ORDER BY). dicha instrucción mediante la cláusula de
información de un índice una vez «INEQUALITY» en el caso de que se use inclusión nueva en SQL Server 2005/2008.
sabemos su identificador, o le aplica- cualquier operador distinto a la igual- Esto es la base, realmente hay que mirar
remos los identificadores obtenidos en dad; estas columnas, por tanto, sólo más cosas.
BASES DE DATOS
Estadísticas A continuación hay una serie de De esta manera podemos evaluar tanto
columnas que nos dan la misma infor- consultas muy repetidas (User_Seeks), muy
Hasta aquí todo muy bien. Pero ¿cómo mación, pero para acciones iniciadas grandes (Avg_Total_User_Cost) o que se
sabemos la conveniencia de crear un índi- por el sistema, como pueden ser esta- beneficiarían mucho del índice
ce? Pues además, el motor de optimación dísticas. Como suelen ser valores (Avg_User_Impact). Es muy importante
de SQL Server nos hace un cálculo del pequeños, no son tan importantes. ponderar los tres valores y refrenar la ten-
ahorro que vamos a tener al crear el índi- dencia a crear índices por el mero hecho de
ce y nos lo muestra en la vista sys.dm_db_ Consulta que sean muy beneficiosos, cuando la reco-
missing_ index_group_stats. De esta mendación puede ser debida a una consul-
manera podemos saber la conveniencia de Aunque al ir explicando cada objeto y cada ta esporádica que no se va a volver a hacer
crear un índice. Veamos qué analizar en columna, hemos ido indicando cómo usar- o a consultas muy rápidas que no necesitan
esta información: las, vamos a ver un ejemplo práctico que realmente optimación.
La primera columna no podía ser otra nos diga qué índices sería bueno crear y Como la vista de estadísticas tiene como
que un identificador (group_handle), que inclusive nos construya la consulta. clave un identificador de grupo y la de
pero en este caso es de un grupo de Lo primero es construir un ratio que nos detalles uno de índice, tendremos que unir-
índices, que, como ya hemos comenta- indique la conveniencia de crear el índice. las mediante la de grupos de índices.
do, se corresponde con un único índi- Para ello, vamos a coger las estadísticas En los filtros, podemos añadir una base de
ce en SQL Server. Por lo tanto, tendre- más relevantes y a resumirlas. Como las datos, una tabla, que no esté vacío el
mos que usar las vistas anteriores para búsquedas son bastante más importantes campo equality_columns, ver los índices
saber a qué índice en concreto se que los recorridos, se suelen usar éstas en principales, etc. El orden, obviamente, será
refieren las estadísticas. exclusiva para la fórmula. También se según el beneficio que nos de el índice.
Un dato orientativo es el número de podrían usar ambas ponderando más las ¿Qué valores nos pueden indicar la necesi-
compilaciones y recompilaciones que se primeras (User_Seeks + User_Scans * dad de crear un índice? Bueno, lo primero
beneficiarían (unique_compiles). A esto 0.01), pero haría que los cálculos variasen es que depende de cuánto lleve la instancia
pueden contribuir consultas distintas marginalmente en la mayoría de los casos. funcionando (ver siguiente punto). Según
por lo que nos viene a decir cuántas Ya tenemos el número de veces que nos va van pasando los días y se ejecutan las con-
veces se ha sugerido este índice. a ser útil el índice. sultas, el ratio va aumentando –debido a
El número de búsquedas (user_seeks) A continuación, habría que calcular la user_seeks–, por lo que habría que ver tam-
y de recorridos (user_scans) iniciadas ventaja que nos supone cada uso del índi- bién la velocidad de crecimiento. En todo
por consultas de usuario para las que ce. Es fácil ver que usaremos el coste caso, se suele recomendar que si el ratio
se podría haber utilizado el índice medio de las consultas multiplicado por el pasa de 5.000, se debería evaluar la crea-
recomendado. Como ya sabemos, hay beneficio (teniendo en cuenta que es un ción del índice y que si pasa de 10.000, se
que ponderar más las búsquedas que porcentaje): Avg_Total_User_Cost * tiene un índice que puede dar una mejora
los recorridos. (Avg_User_Impact * 0.01). importante en las operaciones de lectura.
Fecha y hora de la última búsqueda
(last_user_seek) y del último recorrido
(last_user_scan) para el que podría Código de la Consulta
haber servido el índice recomendado. SELECT [Beneficio],
Es muy importante saber si el índice 'CREATE NONCLUSTERED INDEX IX_' + Replace(Replace(Replace([Statement],
sigue siendo útil o no. Puede que '[', ''), ']', ''), '.', '_')
+ '_' + Convert(VARCHAR, user_seeks) + '_' + Convert(VARCHAR,
algún cambio en la base de datos haya GROUP_HANDLE) + ' ON '
hecho que ya no lo siga recomendado + [Statement] + ' ( ' + IsNull(equality_columns, '')
+ CASE WHEN inequality_columns IS NULL THEN '' ELSE CASE WHEN
el motor de optimación y por lo tanto, equality_columns IS NULL THEN '' ELSE ',' END END
se nos indique que era (en pasado) útil. + IsNull(inequality_columns, '') + ' )'
El costo medio de las consultas de
+ CASE WHEN included_columns IS NULL THEN '' ELSE ' INCLUDE ( '
+ included_columns + ' );'
usuario que podrían usar el índice del END AS [Instrucción]
grupo (avg_total_user_cost). Este cál- FROM (
SELECT Convert(DECIMAL(8, 2), User_Seeks * Avg_Total_User_Cost
culo es en segundos en un ordenador *
de referencia de Microsoft. En otros (Avg_User_Impact * 0.01)) AS [Beneficio],
Migs.*
ordenadores puede ser más o menos, FROM sys.dm_db_missing_index_group_stats Migs
pero nos sirve de orientación. ) AS Migs_Adv
El beneficio porcentual medio que INNER JOIN sys.dm_db_missing_index_groups AS Mig
ON Migs_Adv.Group_Handle = Mig.Index_Group_Handle
podrían obtener las consultas de usuario INNER JOIN sys.dm_db_missing_index_details AS Mid
si se implementara este índice ON Mig.Index_Handle = Mid.Index_Handle
WHERE [Database_Id] = Db_Id('AdventureWorks')
(avg_user_ impact). Como es porcen- AND [Object_Id] = Object_Id('[Person].[Address]')
tual, en los cálculos se suele multiplicar ORDER BY [Beneficio] DESC;
por 0’01.
BASES DE DATOS
Análisis de índices de SQL Server 2005/2008
Conclusión
Como todo tiene un pero, veamos el para la Optimación del Motor de Base Como hemos visto, SQL Server nos ha rega-
siguiente punto (y los próximos artículos de Datos. lado con unas vistas que son de mucha
sobre optimación de índices y selectividad No pueden reunir estadísticas de más ayuda para mejorar el rendimiento de nues-
y cardinalidad). de 500 grupos de índices que faltan, lo tro servidor de base de datos. Analizando
que puede enmascarar auténticas periódicamente los objetos de administra-
Habilitación y limitaciones mejoras en bases de datos grandes ción dinámica relacionados con índices
con muchas tablas y muchos tipos de podemos ver, no sólo los cuellos de botella
Por último, y para tener toda la informa- consultas, dado que SQL Server no que tiene el servidor, sino además cómo
ción, debemos conocer las limitaciones de permite filtrar qué sugerencias se aña- mejorar su rendimiento.
los objetos que hemos visto. La caracterís- den en base a la mejora. Este límite no Ningún Administrador de Base de Datos
tica de índices que faltan se activa de es un parámetro ajustable y no se puede pasar sin la revisión periódica de
forma predeterminada. No se proporciona puede cambiar. estos objetos ni sin echarles un vistazo en
ningún control para activar o desactivar la No especifica un orden para las momentos de crisis: las estadísticas pueden
característica, ni para restablecer cual- columnas que se van a utilizar en un indicar que una tabla que antes no necesi-
quiera de las tablas devueltas cuando se índice: como veremos, esta es la limi- taba un índice, ahora le sea beneficioso, y su
consultan los objetos de administración tación más importante para la genera- carencia está haciendo que el servidor se
dinámica. Cuando se reinicia SQL Server, ción automática de índices. pare.
se quita toda la información sobre índices En las consultas que implican sólo Pero, para determinar el orden efectivo para
que faltan. predicados de desigualdad, devuelve las columnas de igualdad, qué columnas
La característica de índices que faltan una información de costos menos pre- son las más importantes, si merece la pena
tiene las siguientes limitaciones: cisa, por lo tanto es conveniente no incluir columnas que cubren un índice, etc.
Es una herramienta simple para ver generar índices basados sólo en des- podemos analizar más en profundidad estos
sugerencias de índices que podrían igualdades. objetos, lo que dejamos para otros artículos,
mejorar el rendimiento de una con- Sólo devuelve columnas de inclusión que ya bastante hemos visto por hoy.
sulta, aunque no se pueden tomar para algunas consultas: esta es una En los Servicios Profesionales Danysoft
literalmente sus consejos, como, repi- limitación relativa pues siempre que se podéis obtener ayuda ya sea como forma-
to, veremos más adelante. crea un índice hay que ponderar si ción o como consultoría para ampliar el
Generalmente lo mejor, aunque merece la pena añadir columnas de tema, o podéis enviar vuestros comentarios
menos rápido, es usar el Asistente inclusión o es más rápido obtener la a sp@danysoft.com.
ALGORITMOS
complejidad y brindarles
tiene algo mágico y trágico a la vez. Cuando pare-
movimiento e interacción,
ce que ya está todo bajo control y que solamente
ALGORITMOS
XNA Framework 2.0 y 3.0:
DirectX y Direct3D en C# para mortales (y IV)
ALGORITMOS
// Crear un diccionario para que nos permita almacenar las instancias y listas adicionales
// y luego poder accederlas desde la propiedad general "Tag"
Dictionary<string, object> loDiccionario = new Dictionary<string, object>();
// Almacenar la caja delimitadora del modelo completo generada a partir de los vértices, en el diccionario bajo
la entrada "BoudingBoxModelo"
loDiccionario.Add("BoudingBoxModelo", loBoundingBoxModelo);
// Almacenar la esfera delimitadora del modelo completo generada a partir de los vértices, en el diccionario bajo
la entrada "BoudingSphereModelo"
loDiccionario.Add("BoudingSphereModelo", loBoundingSphereModelo);
// Almacenar la información sobre los vértices como un arreglo de Vector3, en el diccionario bajo la entrada "Vertices"
loDiccionario.Add("Vertices", pavVertices.ToArray());
// Asignar el diccionario a la propiedad Tag del modelo
lmModelo.Tag = loDiccionario;
/// <summary>
/// Extrae la lista de todas las posiciones de vértices en un modelo (se llama en forma recursiva)
/// </summary>
void GenerarListaDeVertices(NodeContent poNodo)
{
MeshContent loMalla = poNodo as MeshContent;
if (loMalla != null)
{
// Es una malla
Matrix loTransformacionAbsoluta = loMalla.AbsoluteTransform;
ALGORITMOS
XNA Framework 2.0 y 3.0:
DirectX y Direct3D en C# para mortales (y IV)
ALGORITMOS
poBoudingBoxModelo = (BoundingBox)loDiccionario["BoudingBoxModelo"];
poBoudingSphereModelo = (BoundingSphere)loDiccionario["BoudingSphereModelo"];
}
ALGORITMOS
XNA Framework 2.0 y 3.0:
DirectX y Direct3D en C# para mortales (y IV)
CargarPropiedadesEncapsuladasEnTag();
base.LoadContent();
}
// Asignar la textura para que se presente en todas las mallas del laberinto
miEfecto.Texture = poTextura;
miEfecto.TextureEnabled = true;
}
// Dibujo la malla, utilizando los efectos especificados
miMalla.Draw();
}
}
}
ALGORITMOS
Figura 4. El laberinto, sin texturas, demasiado simple. Figura 5. El laberinto, con la textura del nivel 1 envolviendo sus
paredes. Mucho más vistoso.
return piPasoZ;
}
set
{
piPasoZ = value;
}
}
El eje Z lo vamos a utilizar como arriba y
abajo, por su similitud con un escenario en
2D. Si bien no es del todo correcto, es más
fácil de comprender. Vamos a reemplazar el
método Update de la clase Personaje por uno
más general y esta vez teniendo en cuenta si
el modelo tiene movimiento o no, para con-
siderar o no las teclas presionadas. En el
Figura 6. El laberinto, con la textura del nivel 2 envolviendo sus paredes. Listado 4 se presenta el código.
Diferenciándose con poco código. Utilizamos cuatro métodos para llevar a cabo
el movimiento:
ProbarDesplazarIzquierda.
return poLaberinto;
coincide con la presentación del laberinto y
ProbarDesplazarDerecha.
}
no conseguimos recorridos correctos. Esto se
} debe a que, en el mundo 3D se añade el eje Z ProbarDesplazarArriba.
private Laberinto poLaberinto; y el laberinto está presentado de tal manera ProbarDesplazarAbajo.
Y, en el constructor de Game1, el código para que los personajes se pueden mover dentro Estos métodos se llaman según la tecla pre-
añadir el componente para que se dibuje en de éste de izquierda a derecha y de mayor a sionada (lo cual vimos en detalle en la entre-
pantalla: menor profundidad. ga anterior).
poLaberinto = new Laberinto(this); Esto tiene que ver con la ubicación de la Los métodos llaman a la función
Components.Add(poLaberinto); cámara y cómo está presentado el laberinto. HayColisionConEscenario, que devuelve un
Si rotamos la cámara, los movimientos pue- bool indicando si el modelo colisiona con
poLaberinto.Rotacion = 0.0f;
den invertirse. Por un momento, vamos a alguna de las paredes del laberinto en la
poLaberinto.Posicion = new Vector3(0, 0, 0);
olvidarnos de las colisiones y de las paredes. nueva posición que adquiere y con la nueva
En las Figuras 4, 5 y 6 podemos ver los resul- Queremos que los personajes se muevan rotación. Si hay colisión, no se produce ni el
tados de la presentación del laberinto, sin los dentro del laberinto libremente. movimiento ni la rotación.
personajes, sin textura y con las texturas de Por lo tanto, hay que permitirles desplazarse La función HayColisionConEscenario la simu-
los niveles 1 y 2. en el eje Z añadiendo una variable y una pro- lamos inicialmente devolviendo un valor
piedad a la clase Personaje: false (falso), para que los personajes se pue-
Nivel 17: Desplazando los personajes protected float piPasoZ = 5.0f; dan desplazar libremente.
en el laberinto public float PasoZ Ahora, es necesario ubicar a los personajes en
ubicaciones que inicialmente no tengan coli-
{
Si empezamos a desplazar los personajes a siones con las paredes del laberinto, es decir,
get
través de los movimientos en los clásicos ejes que sean de libre circulación, por lo cual,
X e Y de las aplicaciones 2D, veremos que no { vamos a modificar la parte del constructor
ALGORITMOS
XNA Framework 2.0 y 3.0:
DirectX y Direct3D en C# para mortales (y IV)
Código añadido y reemplazado en la clase Personaje para lograr un desplazamiento que vaya
LISTADO 4 teniendo en cuenta las potenciales colisiones con las paredes del laberinto.
public override void Update(GameTime gameTime)
{
if (pbTieneMovimiento)
{
// Guardo el estado del teclado y luego analizo todas las posibilidades
KeyboardState miEstadoTeclado = Keyboard.GetState();
// Si presionó la flecha hacia la izquierda, muevo al modelo hacia la izquierda, -X
if (miEstadoTeclado.IsKeyDown(pkTeclaIzquierda))
{
ProbarDesplazarIzquierda();
}
// Si presionó la flecha hacia la derecha, muevo al modelo hacia la derecha, +X
if (miEstadoTeclado.IsKeyDown(pkTeclaDerecha))
{
ProbarDesplazarDerecha();
}
// Si presionó la flecha hacia arriba, muevo al modelo hacia arriba, -Y
if (miEstadoTeclado.IsKeyDown(pkTeclaArriba))
{
ProbarDesplazarArriba();
}
// Si presionó la flecha hacia abajo, muevo al modelo hacia abajo +Y
if (miEstadoTeclado.IsKeyDown(pkTeclaAbajo))
{
ProbarDesplazarAbajo();
}
}
base.Update(gameTime);
}
public bool ProbarDesplazarIzquierda()
{
// Guardo la posición anterior del personaje, para volver a ella si hay colisión
Vector3 lvPosicionAnterior = pvPosicion;
float liRotacionAnterior = piRotacion;
piRotacion = MathHelper.ToRadians(-90.0f);
// Muevo al modelo hacia la izquierda, -X
pvPosicion.X -= piPasoX;
if (HayColisionConEscenario())
{
// Hay colisión, falló el desplazamiento
pvPosicion = lvPosicionAnterior;
piRotacion = liRotacionAnterior;
return false;
}
return true;
}
public bool ProbarDesplazarDerecha()
{
// Guardo la posición anterior del personaje, para volver a ella si hay colisión
Vector3 lvPosicionAnterior = pvPosicion;
float liRotacionAnterior = piRotacion;
piRotacion = MathHelper.ToRadians(90.0f);
// Muevo al modelo hacia la derecha, +X
pvPosicion.X += piPasoX;
if (HayColisionConEscenario())
{
// Hay colisión, falló el desplazamiento
pvPosicion = lvPosicionAnterior;
piRotacion = liRotacionAnterior;
return false;
}
return true;
}
public bool ProbarDesplazarArriba()
{
// Guardo la posición anterior del personaje, para volver a ella si hay colisión
Vector3 lvPosicionAnterior = pvPosicion;
float liRotacionAnterior = piRotacion;
piRotacion = MathHelper.ToRadians(180.0f);
// Muevo al modelo hacia arriba, -Z
pvPosicion.Z -= piPasoZ;
if (HayColisionConEscenario())
{
// Hay colisión, falló el desplazamiento
pvPosicion = lvPosicionAnterior;
piRotacion = liRotacionAnterior;
return false;
ALGORITMOS
Código añadido y reemplazado en la clase Personaje para lograr un desplazamiento que vaya
LISTADO 4 teniendo en cuenta las potenciales colisiones con las paredes del laberinto. (continuación)
}
return true;
}
piRotacion = MathHelper.ToRadians(0.0f);
// Muevo al modelo hacia abajo, +Z
pvPosicion.Z += piPasoZ;
if (HayColisionConEscenario())
{
// Hay colisión, falló el desplazamiento
pvPosicion = lvPosicionAnterior;
piRotacion = liRotacionAnterior;
return false;
}
return true;
}
Figura 7. El laberinto con los personajes ubicados correctamente Figura 8. Los personajes se pueden desplazar correctamente por
para poder desplazarse por sus caminos entre las paredes. el laberinto.
ALGORITMOS
XNA Framework 2.0 y 3.0:
DirectX y Direct3D en C# para mortales (y IV)
lbHuboColision = (miBoundingSphere.Intersects(suBoundingSphere));
return lbHuboColision;
}
ALGORITMOS
poEstadoRatonAnterior = miEstadoRaton;
if (poRatón.HayColision(poGato1))
{
this.Exit();
}
if (poRatón.HayColision(poGato2))
{
this.Exit();
}
if (poRatón.HayColision(poNoviaRatón))
{
this.Exit();
}
//poGato1.Desplazarse(poRatón);
//poGato2.Desplazarse(poRatón);
base.Update(gameTime);
}
ALGORITMOS
XNA Framework 2.0 y 3.0:
DirectX y Direct3D en C# para mortales (y IV)
ALGORITMOS
ALGORITMOS
XNA Framework 2.0 y 3.0:
DirectX y Direct3D en C# para mortales (y IV)
ALGORITMOS
ALGORITMOS
XNA Framework 2.0 y 3.0:
DirectX y Direct3D en C# para mortales (y IV)
Figura 11.
supuesto que hay que investigar mucho más, Es importante aclarar que no se buscó un Nivel 21: Añadiendo lógica
pero, sin dudas, será un muy buen punto de algoritmo perfecto de búsqueda al ratón,
partida para arrancar (ver la Figura 11). pues recordemos que los gatos tienen Resta añadir la lógica para que cuando se
mayor velocidad de desplazamiento. Eso se detecta la colisión entre los personajes,
Nivel 20: Conduciendo automáticamente iría mejorando en futuros niveles. suceda algo en el juego. Por ejemplo, la
a los gatos Si no se logra desplazar en la dirección que cámara podría tomar un primer plano del
más le conviene, busca en la otra dirección, ratón y su novia añadiendo un corazón y
No vamos a añadir una inteligencia artifi- pero si no lo logra en varias pasadas, toma bailando juntos.
cial sofisticada, que sería lo ideal. Pero, una decisión aleatoria (ver la Figura 12). Los gatos podrían desaparecer, cambiar el
queremos que los gatos intenten, de un Como la rotación de los personajes no es per- color de fondo, pasar de nivel dibujando un
modo sencillo y no muy elaborado, perse- fecta, se pueden notar efectos como que el nuevo escenario con diferentes texturas y
guir al ratón para que el juego tenga senti- gato da vueltas una y otra vez. Esto se debe nuevos personajes.
do. Con sus limitaciones por tratarse de un a que buscar una rotación perfecta de los En el Listado 11 podemos ver el código que
caso de ejemplo y por razones de espacio, personajes implicaría modelos más comple- añade simplemente llamadas a métodos en el
pero atractivo al fin. jos y mayor cantidad de código. método Update de la clase Game1 para veri-
Para ello, vamos a añadir el código que se
Las últimas líneas del código del método
Update de la clase Game1.
muestra en el Listado 10 a la clase Gato.
Luego, hay que eliminar el comentario para LISTADO 11
las dos líneas que figuraban comentadas en if (poRatón.HayColision(poGato1))
{
el método Update de la clase Game1: // El gato 1 se comió al ratón
poGato1.Desplazarse(poRatón); this.Exit();
}
poGato2.Desplazarse(poRatón); if (poRatón.HayColision(poGato2))
{
El método desplazarse recibe como pará- // El gato 2 se comió al ratón
this.Exit();
metro el personaje objetivo, que en ambos }
casos es la instancia que representa al
if (poRatón.HayColision(poNoviaRatón))
ratón. {
Según la distancia que hay entre el gato y // El ratón alcanzó la salida del laberinto
el ratón en los 2 ejes (X y Z) que se tienen this.Exit();
}
en cuenta en el juego, buscará desplazarse
al mejor X o al mejor Z. Las paredes hacen poGato1.Desplazarse(poRatón);
poGato2.Desplazarse(poRatón);
su juego y se pueden interponer, volviendo
loco al gato. base.Update(gameTime);
ALGORITMOS
ficar las colisiones y tomar acciones en base a Y, por qué no, añadir un perro que busque a nes típicas para conseguir aprovechar las
ello. Se muestran las últimas líneas que se los gatos en un laberinto mucho más grande capacidades de DirectX y Direct3D.
añaden y que reemplazan a las anteriores. y con cámaras que se van desplazando a Es verdad que hay muchas más técnicas y
En este caso, solamente se sale del juego sea medida que el personaje activo se escape de complejidades en esta clase de aplicacio-
ganador o perdedor el ratón. la vista de la cámara. Es muy sencillo aplican- nes. Pero, combinando las capacidades de
do todos los patrones aprendidos. El método las herramientas de creación de contenido
Nivel 21: Selección de personajes y para Desplazarse programado para el gato digital con XNA Framework y con mucha
presentación recibe como parámetro el personaje objetivo. experimentación, prueba y error, se pueden
Se pueden generar grandes laberintos donde conseguir resultados sorprendentes en
La típica selección de personajes los presenta todos se corren y las novias los pueden espe- poco tiempo.
rotando. Es muy sencillo conseguirlo con rar en cada salida posible. Con estas entregas se buscó presentar casos
todos los conocimientos adquiridos. Sabemos Más allá del juego, con la aparición de la típicos para juegos y otras aplicaciones 3D
cómo presentar un modelo 3D y cómo cam- versión definitiva de XNA Game Studio 3.0, que tanta demanda tienen en los tiempos que
biarle texturas. Como utilizamos código orien- este marco de trabajo se está convirtiendo corren y que seguirán vigentes por muchos
tado a objetos, es muy sencillo añadir nuevos en el estándar para el desarrollo de aplica- años más.
personajes. Hay que trabajar un poco en la lógi- ciones 3D y 2D con aceleración con gran Vale la pena seguir experimentando. El
ca de presentación y en los estados del juego. velocidad para el mundo de las PC, Xbox mundo de las aplicaciones 3D es complejo,
360 y Zune. pero a la vez apasionante y extremadamente
Nivel 22: Añadiendo niveles entretenido. Una vez que se empieza, no se
Conclusión puede abandonar.
En la clase Game1 se mantiene toda la lógica
de funcionamiento del juego. Cambiando A lo largo de estas entregas hemos presen- Más información
colores de fondo, texturas y escenarios, es tado muchas de las características ofreci- Real-Time Rendering; Tomas Akenine-Möller y
muy sencillo gestionar los niveles del juego, das por XNA Game Studio en sus diferentes Eric Haines, AK Peters Ltd, 2nd edition, July 2002.
así como ir incrementando la velocidad de versiones 2.0 y 3.0. Presentando el ejemplo Presenta excelentes algoritmos que se pueden
los adversarios del pobre ratón. de un juego vimos muchas de las operacio- aplicar a aplicaciones 3D complejas.
SÚPER OFERTA
¡Aprovecha la ocasión
y suscríbete ya!
66 €
SUSCRIPCION A
SOLO PROGRAMADORES
FORMATO PAPEL
+ FORMATO DIGITAL
Suscríbete en
www.revistasprofesionales.com
Curso C++ (V):Curso C++ (II) 5/6/09 11:33 Página 48
ALGORITMOS
Programación orientada
a objetos con C++ (V)
Primeramente se declara una variable s que es de
ADOLFO ALADRO GARCÍA
comunes.
do max_size devuelve el número máximo de
caracteres que un objeto de tipo string puede
guardar. Volviendo al código principal del ejem-
plo, cuando se llama a showStringInfo la prime-
CADENAS DE TEXTO: LA CLASE string ra vez el resultado que aparece en la consola de
salida es el siguiente:
En la entrega anterior se comenzó con un ejerci- ...length = 0
cio que consistía en la creación de una clase que ...capacity = 0
implementara cadenas de texto, y que interna-
...max_size = 1073741820
mente trabajara con char*, el tipo estándar de C.
En realidad todo esto está ya resuelto en la libre- La cadena de texto representada por la variable s
ría estándar <string> (Y algunas otras que per- es la cadena vacía así que la primera línea está
miten realizar toda clase de tareas con las cade- vacía. Lógicamente el tamaño de la cadena es 0.
nas de texto). En el fichero main.cpp se encuen- La capacidad de la cadena en ese momento es
tran algunos ejemplos que ilustran el uso de la también 0. En último lugar, el número máximo
clase string. El primero de ellos está en la función de caracteres que puede almacenar un objeto de
main1. Es muy sencillo y consiste únicamente en tipo string es 1.073.741.820 caracteres. Después
mostrar algunos atributos básicos de objeto de se concatena la cadena de texto SPP utilizando el
tipo string: operador + y al volver a mostrar la información
void main1() { la consola muestra:
string s = “”; SPP
showStringInfo(s); ...length = 3
s = s + “SPP”; ...capacity = 3
showStringInfo(s); ...max_size = 1073741820
s.reserve(1024); La cadena es ahora SPP y así se muestra. El
showStringInfo(s); tamaño y la capacidad han tomado el valor 3. El
}; número máximo de caracteres que puede alma-
ALGORITMOS
Programación orientada a objetos con C++ (V)
ALGORITMOS
ALGORITMOS
Programación orientada a objetos con C++ (V)
Los vectores se pueden recorrer de dos for- El vector se declara de la misma forma, memoria dinámica de aquello que almace-
mas distintas. La primera es la más sencilla aunque ahora el tipo es string*: na, en este caso lo que almacena son direc-
y obvia. El tamaño del vector se obtiene con vector<string*> vecStr; ciones de memoria. Por lo tanto, la clase
el método size. La clase vector sobrescribe vector podría liberar el espacio dedicado a
el operador [] de tal forma que se puede La inserción de elementos es similar. Debe guardar esas direcciones, pero no el espacio
acceder a los elementos utilizando un índi- recordarse en todo momento que en reali- utilizado por los datos almacenados en esas
ca de la misma forma que se haría con un dad el vector no está almacenando las cade- direcciones. De nuevo aparece la doble
array de C: nas de texto, sino las direcciones de memo- indirección. Si se quieren eliminar las cade-
for (vector<string>::size_type i=0; ria donde dinámicamente esas cadenas han nas de texto de verdad, primero hay que
i<vecStr.size(); i++) { sido almacenadas con el operador new: recorrer el vector y con el método delete
cout << “[“ << i << “]=” << vecStr[i] vecStr.push_back(s1); borrar una a una las cadenas:
<< “\n”; vecStr.push_back(s2); for (vector<string*>::iterator
vecStr.push_back(s3); it=vecStr.begin(); it!=vecStr.end();
}
it++) {
La otra forma consiste en utilizar iterado- Para recorrer el vector se puede emplear la delete *it;
res. Como ya puede apreciar por lo visto misma técnica de los iteradores. Ahora
}
hasta el momento, los iteradores son unos bien, como ya se sabe un iterador es un
de los elementos más comunes que se puntero a un elemento. Es decir, la direc- Posteriormente, con el método clear se lim-
emplean para recorrer todo tipo de conte- ción de memoria del elemento. Pero en este pia el vector y con ello se evita que esas
nedores de datos. El método begin de la caso el elemento, que es de tipo string*, es posiciones sean utilizadas:
clase vector devuelve un iterador que también otro puntero. Por consiguiente, vecStr.clear();
apunta a la primera posición del vector. El hay una doble indirección y para mostrar el
método end hace lo propio, pero el iterador dato real, la cadena de caracteres, hay que LA CLASE map
devuelto apunta al final de la colección de aplicar el operador * dos veces:
datos. Con un bucle for resulta muy senci- for (vector<string*>::iterator Otro clásico entre los contenedores son los
llo recorrer todos los elementos. No hay it=vecStr.begin(); it!=vecStr.end(); mapas. Los mapas permiten crear pares de
que olvidar que un iterador es un puntero it++) { datos o diccionarios. La clase map de la
con lo que el acceso al elemento “real” se string* s = *it;
librería <map> proporciona esta funciona-
produce con el operador *: lidad. En la función main7 puede verse un
cout << *s << “\n”;
for (vector<string>::iterator caso muy sencillo. Al igual que ocurría con
} la clase vector, al declarar un mapa es
it=vecStr.begin(); it!=vecStr.end();
Uno de los aspectos más delicados es la necesario indicar los tipos de datos de los
it++) {
liberación de la memoria obtenida dinámi- pares. El primer tipo corresponde a las cla-
cout << *it << “\n”;
camente con el operador new. Aunque la ves. El segundo corresponde a los valores
} clase vector gestiona por sí misma la de esas claves:
Un caso que suscita bastantes problemas es
cuando los contenedores almacenan no
datos, si no punteros a datos (o si se prefie-
re, direcciones de memoria donde se
encuentran realmente los datos). Ya se ha
estudiado este caso en las entregas ante-
riores cuando se creaban clases de este
tipo. Clases como vector, y otras tantas de
la librería estándar, presentan los mismos
problemas. Aunque en realidad no hay tales
problemas sino que más bien es la mala
práctica la que puede originarlos. En ejem-
plo main6 se ilustra el uso de la clase vec-
tor, pero a diferencia del caso anterior en
este se almacenan punteros a objetos de
tipo string. De hecho las cadenas se crear
dinámicamente usando el operador new:
string* s1 = new string(“Revista”);
string* s2 = new string(“Sólo”);
string* s3 =
new string(“Programadores”); Código correspondiente a la función trim que elimina los espacios en blanco por la
derecha de la cadena de texto.
ALGORITMOS
ALGORITMOS
Programación orientada a objetos con C++ (V)
REDES
Cookies en el navegador
y en el servidor (II)
ADOLFO ALADRO GARCÍA detalles de la sintaxis, en casi todas las tecnolo-
caracteres.
petición llegada al servidor contiene cookies:
Cookie[] arrCookie = req.getCookies();
if (arrCookie==null ||
arrCookie.length==0) {
EN EL SERVIDOR ···
} else {
Dependiendo del lenguaje de programación
empleado, la forma de leer y escribir las cookies ···
en el servidor, cambia. Sin embargo salvando los }
REDES
Cookies en el navegador y en el servidor (II)
REDES
REDES
Cookies en el navegador y en el servidor (II)
REDES
REDES
Cookies en el navegador y en el servidor (II)
DUDAS
Preguntas y respuestas
ADOLFO ALADRO GARCÍA cabe señalar que Content-Type y Content- La lectura de la respuesta del servidor
Length son bastante importantes. La pri- comienza con la apertura del canal de lectu-
Estoy creando una aplicación J2ME para mera indica el tipo de datos, como ya se ha ra. El método openInputStream permite obte-
móviles. En un momento dado la aplica- indicado anteriormente. La segunda es un ner el correspondiente canal InputStream:
ción se tiene que conectar a Internet valor numérico que indica el númeto de is = httpCon.openInputStream();
para mandar el usuario y la contraseña bytes que se van a tranferir:
introducida por el usuario. En el servidor httpCon.setRequestProperty(“User- Agent”, En toda comunicación basada en el protoco-
se comprueba el login y si es correcto se “Profile/MIDP-2.0 Configuration/CLDC-1.0”); lo HTTP antes de pasar a leer la respuesta del
devuelve OK o en caso contrario KO. httpCon.setRequestProperty(“Content-
servidor siempre hay que verificar el código
Además de mandar esos datos también Type”, “application/octec-stream”);
de respuesta. El método getResponseCode
necesito poder mandar una foto que devuelve ese valor:
httpCon.setRequestProperty(“Content-
tenga el usuario en el móvil. ¿Cómo se final int iResponseCode = httpCon.
Length”, Long.toString(lContentLength));
puede hacer? getResponseCode();
Teniendo en cuenta que los datos que se httpCon.setRequestProperty(“Cache-control”,
desean mandar son heterogéneos, una de “no-cache”); Si el código de respuesta es distinto de 200
las opciones más interesantes consiste en httpCon.setRequestProperty(“Pragma”, OK (lo que en el API viene definido por la
hacer una petición POST de forma que el “no-cache”); variable HttpConnection.HTTP_OK) entonces
Content-Type de la petición, y de la res- httpCon.setRequestProperty(“Accept”, de lanza una excepción. En otro caso se
puesta, sea application/octec-stream. Este “application/octet-stream”); puede comenzar a leer los datos:
tipo de datos indica al servidor que la infor- httpCon.setRequestProperty(“Connection”, if (iResponseCode != HttpConnection
mación transmitida es simplemente un “close”); .HTTP_OK) {
flujo bytes al que el programador puede dar throw new IOException(“HTTP response
el formato que más le interese. Una vez que las cabeceras HTTP se han esta-
code: “ + iResponseCode);
En un móvil, una conexión HTTP se abre con blecido, se escriben los dos empleando el
el método estático open de la clase canal de escritura: }
Connector. El parámetro que recibe es una os.write(···); Finalmente cabe hacer hincapié en un dato
cadena de texto conteniendo la URL. El valor que resulta de vital importancia. Una aplica-
os.flush();
devuelto debe convertirse explícitamente en ción J2ME que hace una llamada HTTP siem-
un objeto de tipo HttpConnection:
httpCon = (HttpConnection)Connector.
open(sUrl);
DUDAS
Preguntas y Respuestas
OPINIÓN
La virtualización de la amistad
Las Redes Sociales han surgido de
NICOLÁS VELASQUEZ
dustries.com/introvertster) o Isolatr (isolatr.com)
¿Luchas
contra
el caos?
…ahora puedes solucionarlo !!
VIDEOCURSO
capítulos 12 y 13.
LinQ to SQL, no solo ofrece funcionalidades
para consultar bases de datos SQL, si no que
también permite modificar datos del servidor
12.- LinQ to SQL II. utilizando la propia sintaxis de LinQ.
-La traducción a SQL. Cuando se modifican datos en una base de
-Modificar datos con LinQ to SQL. datos es muy importante tener presente todos
-Concurrencia y LinQ to SQL. los aspectos relacionados con la concurrencia
-Ejecutar Procedimientos Alamacenados. de la información. LinQ ofrece herramientas
para garantizar la coherencia de la informa-
13.- LinQ to SQL III. ción cuando se trabaja en escenarios desco-
-Transacciones. nectados.
-Consultas de sólo lectura. LinQ to SQL permite también ejecutar
-Cargas de datos completas. Procedimientos Almacenados, programados
-Definir límites de datos. previamente en el servidor.
-Agregar lógica empresarial con métodos partial.
-Consultar vistas y funciones Capítulo 13. LinQ to SQL III.
Capítulo 12. LinQ to SQL II.
Este es el segundo módulo que dedicamos a
LinQ to SQL.
En este módulo continuamos con las caracte-
rísticas del acceso a servidores SQL utilizando
LinQ.
Entre otras cosas, se presta una especial aten-
ción al proceso de traducción a SQL. Esto es
muy importante, pues según la sintaxis que
utilicemos en LinQ, obtendremos un tipo u otro
NÚMEROS ATRASADOS
171 - Mayo 2009 LA PRIMERA REVISTA DE PROGRAMACIÓN EN CASTELLANO
170 - Abril 2009
M
OE
-R UY
D CL
C IN
Una de las partes esenciales del API NIO es la relativa a la Lascookiessirvenparaalmacenarlainformacióndeformaqueelpro-
entrada y salida con ficheros. En la programación orientada a tocoloHTTPconellasadquiereunafuncionalidaddelaquecarecepor
objetos tiene tanta importancia el propio lenguaje como la Precio: 6 € (España) (IVA incluido) • AÑO XVI. 2.ª ÉPOCA • Nº 170 • UNA PUBLICACIÓN DE: REVISTAS PROFESIONALES S.L. su definición: la persistencia. En Java, como en cualquier otro len-
metodología. Cuando se habla de navegación a través de los 170
Podcast javaHispano
– 035 036 037
JavaHispano Podcast
sobre
Vídeo-Curso a Visual
REVISTAS SL
Actualización
P ROFESIONALES
LinQ con
42 3 ª
9
Visual Basic
M 26827 1994
contenidos de un portal, suele pensarse en usuarios conectados gestión dinámica de la memoria es probablemente uno de los aspec-
DEPÓSITO LEGAL 4792
ISSN 1134
Cuántico
Y además…
ores 168
Solo Programad
en formato pdf
oportunidad de conseguirlo
tratamiento y generación de gráficos SVG con Javascript es
una opción muy interesante. Tras haber repasado los funda-
+40 = 50%
confiaba en ejecutar nuevamente el código y llevar adelante
unas pocas pruebas para verificar que su cambio no corrompía
nada de lo existente.
BOLETÍN DE PEDIDO
Rellene o fotocopie el cupón y envielo a REVISTAS PROFESIONALES, S.L.
(Revista SÓLO PROGRAMADORES) C/ Valentín Beato, 42 - 3ª Planta - 28037 MADRID
Tel.: 91 304 87 64 - Fax: 91 327 13 03 - www.revistasprofesionales.com - rpsuscripciones@revistasprofesionales.com
Deseo me envíen los número/s: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NOMBRE Y APELLIDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .EDAD . . . . . . . . TELÉFONO . . . . . . . . . . . . . . . .
DOMICILIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .C.P.: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CIUDAD . . . . . . . . . . . . . . . . . .PROVINCIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FORMAS DE PAGO
Talon Bancario a nombre de REVISTAS PROFESIONALES S.L.
Domiciliación Bancaria
Banco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Domicilio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Firma:
Numero de cuenta: _ _ _ _/ _ _ _ _/ _ _ / _ _ _ _ _ _ _ _ _ _ _ _
Titular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tarjeta de crédito _ _ _ _/ _ _ _ _/ _ _ _ _/ _ _ _ _/ Fecha de caducidad:
Extranjero: Gastos de envio 5€ por paquete. Unica forma de pago tarjeta de crédito (VISA, Mastercard, American Express,...)
66 CD ROM:Layout 2 3/6/09 09:19 Página 66
CD-ROM
Podcast javaHisp
ano
Fuentes • Empresa referencia de Autentia que imple- REVISTAS
PROFESIONALES,
VALENTÍN BEATO . .
SL
JavaHispan
o Podcast – 043,
045, 046, 047, 048
044,
, 42 - 3.ª
28037 MADRID
menta IceFaces. Vídeo-Curso sobr
e
DEPÓSITO LEGAL:
M-26827- 1994
Actualización a Visu
ISSN: 1134-4792