Translate

lunes, 24 de enero de 2011

Cocoa Application--->Hello World

Para crear la aplicación Hola Mundo seguiremos los siguientes pasos.

1º En XCode abriremos un nuevo proyecto,
seleccionando en el templare inicial el tipo Cocoa Application de las Mac-OS Applications. Le pondremos de nombre Hello.
De esta manera se crean todos los ficheros necesarios para ejecutar dicha aplicación. Si observamos el fichero main.m veremos que se ha creado una instancia de NSApplication:

return NSApplicationMain(argc,  (const char **) argv);


2º Crearemos una Custom View Class. Es decir una subclase de la cal NSView. Esta es la forma en la que podemos dibujar objetos en Cocoa. Para ello existe la clase NSView. Ésta incorpora todas las funciones relativas a dibujo, impresión y manejo de eventos. La idea es no usar directamente esta clase, sino crear una subclase que herede todas las propiedades de esta.
Para ello iremos a XCode y seleccionaremos en Group & Filer la carpeta clases, después en el menú cogeremos la opción File y New File. Seleccionaremos entonces Cocoa Class, Objetive-C Class, y NSView antes de pulsar Next. Después fijaremos el nombre "HelloView" y pulsaremos finish

3º Mediante el Interface Builder vamos a crear la ventana que mostraremos. Interface Builder es un editor gráfico que sirve para diseñar interfaces de usuario. Interface Builder no crea código, pero nos permite manipular los objetos y almacenarlos en archivos de tipo .nib o de tipo .xib
La idea ahora sería añadir una instancia de la clase HelloView que hemos creado antes a la ventana de la aplicación.
Abriremos Interface Builder haciendo doble click sobre el fichero MainMenu.xib que se encuentra dentro de la carpeta Resources. Una vez se abre este haremos doble clik sobre el ícono Window y se mostrará la ventana que aparecerá al ejecutar la aplicación.
Si pulsamos sobre la Window Title Bar y después en Tools escogemos Attribute Inspector veremos una ventana donde podremos cambiar algunos atributos del componente seleccionado, en este caso la Barra de Título de la ventana de la aplicación.

4º Añadir contenido a la ventana
. Para ello escogeremos Tools y Library, y aparecerá una ventana con la paleta de componentes que podemos usar para nuestra venta. En nuestro ejemplo usaremos el componente Custom View, que pertenece al grupo Layouts Views.
Una Custom View es una subclase de NSView. Una vez colocada sobre la ventana estiraremos el área de esta para que ocupe toda la ventana entera.
Mediante Tools e Identity Inspector seleccionaremos del pop-up menú Class la clase HeloView. Esta clase fue creada mediante XCode, pero como XCode e Interface Builder se comunican entre sí aparecerá en el pop-up menú.
Si te fijas el nombre del objeto que hemos echado en la ventana abra cambiado de Custom View a HeloView.
Podemos cerrar el Inspector Builder.

5º Volvemos a XCode
y vemos como han quedado los archivos HelloView.h y .m En el caso del segundo se abran añadido dos métodos automáticamente: initWithFrame: y drawRect:
El primero sirve para inicializar la clase NSView, mientras que el segundo es el que sireve para dibujar dentro del Custom View, aquí añadiremos el código necesario para dibujar lo que queremos.

//Especificamos la cadena que vamos a dibujar
NSString* hello = @"¡Hola, Mundo!";


//Especificamos en que posición dibujar
NSPoint point = NSMake

Una vez escrito esto dejamos el cursor detrás de NSMake y pulsamos ESC y como vimos anteriormente aparecerá un menú con las posibles instrucciones que podemos usar, en este caso necesitamos NSMakePoint que necesita dos números que son la posición X e Y donde empezamos a dibujar el texto. La sentencia deberá quedar así:

//Especificamos en que posición dibujar
NSPoint point = NSMake (15,75);


Después completaremos el resto de código con las siguientes instrucciones que permiten fijar el formato de la letra, tamaño, etc.

  NSMutableDictionary* font_attributes = [NSMutableDictionary new];
    NSFont* font = [NSFont fontWithName:@"Futura-MediumItalic" size:42];
    [font_attributes setObject:font forKey:NSFontAttributeName];

    [hello drawAtPoint:point withAttributes:font_attributes];

    [font_attributes release];


Por último grabamos seleccionando File y Save

6º Nos queda por compilar y ejecutar
para ello tan simple como pulsar el botón Build and Run y podremos ver el resultado.

sábado, 22 de enero de 2011

XCode Fundamentals

Hoy un poco del entorno de programación para aplicaciones MacOS. Vuelvo a insistir en que estos artículos me sirven a modo de apuntes durante el proceso de formación en XCode/Cocoa en el que estoy inmerso, por eso estoy abierto e interesado en cualquier tipo de comentario al respecto.
Bueno, vamos al lío. Hoy toca XCode. XCode es un IDE (del inglés Integrated Development Enviroment, es decir, entorno de desarrollo integrado) altamente "customizable" con la idea de poder facilitar el trabajo de desarrollo de aplicaciones.
Todo producto software que vayamos a desarrollar comienza con un project. (vuelvo a recordar que todos estos nombres los voy a usar tal cual se llaman en su lenguaje original para así evitar confusiones).


Un project no es mas que un repositorio en el que se incluyen todos los elementos necesarios para el diseño y construcción del producto que estamos creando. Entre otros encontraremos ficheros con el código fuente, imágenes, sonidos, llamadas a otras librerías, etc.
Evidentemente el producto más conocido que se puede crear a partir de un proyecto es una Aplicación, pero también podremos crear frameworks, plug-ing, extensiones del kernel, aplicaciones para la línea de comandos, etc…

El centro de control para un proyecto es la Window Project. Dentro de esta ventana encontraremos varias partes fundamentales que se muestran en el siguiente gráfico: (Los proyectos en XCode tienen un fichero descriptivo con la extensión Xcodeproj, podemos abrir el project haciendo doble click sobre este)




Toolbar, aquí encontremos controles que nos permiten compilar y ejecutar la aplicación, establecer breakpoints, etc.
Group & files, permite organizar la estructura de archivos de nuestro project.
Text Edit, muestra el archivo fuente seleccionado en la parte de Group & files.
    En la parte superior del Text Edit encontraremos una serie  de controles con los que podemos ver los breakpoints fijados en el código, ver la clase a la que pertenece el objeto seleccionado en el editor de texto, ver el listado de includes, etc…



Un ejemplo de la utilidad de esta parte del código es permitirnos buscar una función determinada, y luego acceder al código donde se define o al código donde se accede. Para ello en el Function Menu seleccionamos la función deseada, y con el botón counterpart podremos cambiar entre la llamada a la rutina y el lugar en el que se define dicha función.

Una característica importante en el editor de texto es el denominado Code Completion, que básicamente consiste en una vez que has escrito varios caracteres de la función a escribir, pulsamos ESC, y aparecerá un pop-up menú con las funciones mas parecidas. Es similar a usar el Tabulador cuando estamos escribiendo instrucciones en la línea de comandos y no queremos escribirla entera.



Una forma rápida de obtener la documentación disponible referente a una determinada función es usar la Quick Help, para ello podremos el cursor sobre la función en concreto, y manteniendo pulsada la tecla opción (alt), haremos doble click, aparecerá una pequeña ventana con la documentación asociada a la función.

La próxima sesión haremos el típico ejemplo "Hello World", bastante sencillo, pero no tanto como en un entorno .net o delphi.

sábado, 15 de enero de 2011

Fundamentos de Cocoa

Comenzado he mi formación para el desarrollo de aplicaciones para MacOs e IOS, como diría el maestro Joda. Iré colocando los apuntes de lo que voy viendo para que así cualquiera de los que esteis interesados también en el tema podais acceder a ellos. Si alguno de vosotros estais en la misma tarea agradeceré los comentarios, materiales, apuntes, etc. que podais tener.



Presentaciones

¿Qué es cocoa?, cocoa consiste en un conjunto de librerías orientadas a objeto, runtimes y un entorno integrado de desarrollo.

Con cocoa se pueden crear aplicaciones para dos tipos de plataformas:
  • Sistemas operativos Mac OS X
  • IOS, sistemas operativos de dispositivos multitouch (ipad, iphone, etc.)

Muchas de las aplicaciones que pueden verse en los productos mac están implementadas mediante cocoa, por ejemplo safari, Mail, etc...

El entorno de desarrollo para aplicaciones cocoa se llama XCode, así mediante este entorno de desarrollo y el conjunto de librerías de software orientado a objetos proporcionado por cocoa podremos construir las aplicaciones para las dos plataformas empleadas por los productos apple, Mac OS X e IOS.

Cocoa es por lo tanto una suite de componentes de software basados en programación orientada a objetos. Serán lo que denominaremos clases. Estas clases son las que nos permiten crear aplicaciones. Podremos usarlas tal cual están definidas, o incluso podremos extenderlas según nuestras necesidades.

Un poco de historia

Cocoa fue presentado por la compañía NeXT Computer en Septiembre de 1989  y se llamó originalmente NeXTSTEP, y era algo más que un entorno de desarrollo, ya que incluía el propio sistema operativo, el sistema de imágenes y el de ventanas. Posteriormente NeXT se asociaría a Sun Microsystem para conjuntamente lanzar OPENSTEP.

NeXTSTEP fue la combinación de los siguientes elementos:
   1. Un sistema operativo Unix basado en el kernel Mach kernel.
   2. Display PostScript y un motor gráfico.
   3. Objective-C como lenguaje de programación y runtime.
   4. Una capa de aplicación orientada a objetos, incluyendo varios kits.
   5. Herramientas de desarrollo para las capas OO.

Posteriormente entra en escena Apple, la cual compra la compañía NeXT, y decide evolucionar OPENSTEP, para derivar en MacOS X.

Como nota curiosa resaltar que el primer navegador web de la historia fue desarrollado empleando OpenStep.

Lenguajes empleados en cocoa
Muchos lenguajes pueden ser usados al desarrollar aplicaciones mediante cocoa, no obstante el fundamental es Objetive-C.
Objetive-C deriva del ANSI C, y está extendido para el manejo de objetos añadiéndole características sintácticas y semánticas sacadas del lenguaje de programación orientado a objetos SmallTalk.
Podemos por lo tanto mezclar Objetive-C con instrucciones puras de C o de C++, o incluso hacer llamadas a librerías BSD que se hallen en el directorio /usr/incclude. Incluso

Las librerías de clases más importantes vienen empaquetadas en dos "core frameworks" (lo pongo en inglés porque es más fácil identificarlos de esta manera) por cada una de las plataformas: Application Kit y Foundation Kit.
La idea de dividir las clases en dos bloques es separar aquellas que están orientadas a interfaz gráfica de usuario o no.
Existen otros core frameworks que engloban clases orientadas por ejemplo al manejo de datos, webs, etc.

jueves, 13 de enero de 2011

objetive-c Cocoa----Segundo objetivo del año

Este año cuenta por ahora con un objetivo importante, Niza. He decidido añadir un segundo objetivo, aprender a desarrollar aplicaiones para entornos Mac OS.

domingo, 9 de enero de 2011

Road to Nice---> Semanas 7, 8 y 9

Semanas complicadas, especialmente la primera de ellas y la segunda. En la tercera fue más sencillo volver a la rutina. 
Comenzamos la primera de ellas (la siete) con una semana muy cargada de trabajo ya que estamos en el inicio de la instalación de los telecentros, lo cual obliga a entrar al trabajo muy temprano lo que hace que la hora de 7 a 8 de la mañana que tan bién me viene no pueda hacerla. Consecuencia tengo que agrupar todo el entreno en el horario de 7 a 10 de la noche. 
Se hacen pesados los entrenos, ya que a parte de la larga jornada de trabajo y tener que juntarlo todo al final del día, se une el echo de haber juntado la parte gruesa del entreno de Lunes a Miércoles, ya que el Jueves nos íbamos a Francia, y durante el resto de la semana poco podría hacer salvo correr. Así que acumulé los entrenos de piscina al principio de la semana, y al final de la siguiente a la vuelta del viaje. Igual haría con la piscina dejando los dias de descanso (el Jueves de la semana 7 y el Martes de la 8),de ámbas semanas para que coincidieran con los dias de viaje. 
En París los últimos tres dias de la semana 7 y el primero de la 8 solo me limitaría a correr, pero fue literalmente imposible, no por falta de tiempo o sitio para hacerlo, sinó por un tiempo infernal en el que la temperatura no subió de los 2 grados bajo cero, viento, y muchísima nieve y hielo.
Así que filosofía de descanso, con la acumulación de trabajo que hice las semanas anteriores me vendrían bién para descansar y desconectar algo.
La segunda semana volvíamos de viaje el martes, con lo que quedaba toda la semana para ponerme al día, además con vacaciones, con lo cual podría repartir bién los entrenos.


La tercera semana fue una vuelta a la rutina con los entrenos habituales, además estra semana incluía dos dias con salida a la hora de comer y uno festivo, fácil para poder completar el enteno asignado. El Sábado dia de escándalo y super test de forma con la bici. Salida a lanjarón con el grupo y con guerra en dos partes, primero subida a Lanjarón a un ritmo altísimo en el que llegué a marcar un 186 de pulso máximo, pero en el que me ví bastante bién tanto de piernas como de ritmo. La segunda batalla algo menos intensa pero más larga fue la subida desde Lecrín a Durcal en la que me encontré bastante bién sobre todo a medida que pasaban los km.

jueves, 6 de enero de 2011

Los culpables de la crisis actual

¿Quien es el culpable de la crisis actual?, ¿el gobierno?, ¿la oposición?, ¿los bancos?,.... creo que no... son parte de la crisis, pero la parte más importante de la actual crisis podemos verla en el siguiente vídeo...
Puede doler, pero es así, deberíamos tomar nota y quizás si todos pusíeramos de nuestra parte podríamos llegar a solucionar algo.

Nike Vomero+ 5

Quinta generación de estas zapatillas de la marca de Oregon. Segunda vez que uso estas zapatillas. La vez anterior fueron unas Vomero 2 las elegidas.
Zapatillas muy muy amortiguadas, ideales para aquellos que busquen estabilidad y amortiguación a raudales. 
Al principio y acostumbrado como estoy a entrenar/correr con zapatillas voladoras, las noto demasiado blandas, tanto que tengo la sensación de correr demasiado lento, como si el pie tardase más tiempo en hacer su recorrido normal. Pero nada más lejos de la realidad, y para corroborarlo nada mejor que salir a correr con el sensor de distancia del Polar, el cual me indica que mi ritmo durante el rodaje es el mismo que el del dia anterior con la Adidas Oozweego climacol. Pero con una diferencia muy importante, no voy a ras de suelo y por lo tanto la carrera es más comoda.
La comparación con un coche sería como llevar unas llantas de perfil bajo. Te pegas mas a las curvas, pero notas todos los baches de la carretera. En este caso las Vomero serían como unas ruedas de un todo terreno, muy amortiguadas, pero en este caso con la velocidad de las ruedas de perfil bajo.
Pero en cuanto se moja el terreno es cuando sale a relucir el principal problema que la marca Nike parece no reconocer. ¡¡¡ Las Nike resbalan con asfalto mojado!!!, lo cual es un problema para unas zapatillas que van a correr en carreras de larga distancia, y en las que tendrás que pasar por puntos de avituallamiento con todo el agua derramada.
Por lo demás excelentes para entrenamientos de larga distancia, tus rodillas, gemelos y articulaciones lo agradecerán. En cuanto a la transpirabilidad es mas que aceptable, ya que no resultan unas zapatillas calurosas, pero tampoco te hacen pasar frio como ocurre con las climacool de Adidas que vienen muy bién para el verano y olvídate de usarlas con lluvia o en invierno.

Por último reseñar que estas zapas incluyen el famoso sistema nike+ para incorporar el sensor de movimiento para un ipod, aunque este será otro gadget que aunque ya no uso próximamente le haré un artículo.


Ventajas: 
  • Amortiguación, amortiguación y amortiguación.
  • Estabilidad.
  • Sistema Nike+.
Inconvenientes:
  • Resbalan a la mas mínima en cuanto se moja el asfalto.