Entrando el nuevo año, es hora de hacer balance profesional. Como dije en Whatsapp la vida es como un tren, (¡que me gusta esta paradoja!), a lo largo del recorrido hay gente que se sube y otras se bajan, este año pasado, no es que hayan bajado o subido muchas, simplemente he decidido de cambiar de vagón con gente que me acompañaba en el tren, pero que a lo largo del viaje han demostrado estar ahí, y que sin duda son mejores compañer@s de viaje.
Un abrazo muy fuerte a mis compañer@os de viaje.
martes, 7 de enero de 2014
martes, 29 de enero de 2013
Tutorial pintado en iOS
En el presente tutorial vamos a ver de forma sencilla el algoritmo de pintado que utilizamos en Imagina Group & Mono Agency para desarrollar la parte de Educación Infantil de los iCuadernos by Rubio.
En esta primera parte simplemente pondremos nuestro lienzo y, sobre él, podremos pintar definiendo de inicio un color y un grosor para nuestro “lápiz”.
Para comenzar crearemos un nuevo proyecto de tipo Simple View Application en XCode. En las opciones le daremos el nombre que consideremos, le diremos que no queremos StoryBoards y que tampoco queremos ARC. Además, concretaremos que es sólo para iPad. El código que utilizaremos es usable en iPhone tal cual, pero lo ponemos en iPad simplemente por comodidad y por espacio a la hora de pintar.
IMPORTACIÓN DE FRAMEWORKS
Lo primero que debemos hacer es importar los frameworks que utilizaremos en nuestro proyecto.
Para ello, como se ve en la imagen, iremos a la pestaña Build Phases dentro de la cabecera de nuestro proyecto. Ahí abriremos “Link binary With Libraries” y añadiremos con el botón “+” OpenGLES.framework y QuartzCore.framework.
Teniendo esto sólo nos queda insertar el import dentro del fichero .h de nuestro UIViewController.
#import <QuartzCore/QuartzCore.h>
CREANDO NUESTRO LIENZO
Para crear nuestro lienzo de dibujo simplemente pondremos un UIViewController encima de nuestra Vista principal.
Para ello, vamos ViewController.xib y arrastramos un UIImageView desde el listado de herramientas hasta nuestra vista. Seguidamente, activaremos el assistant editor (el botón que parece un frac arriba a la derecha en XCode) y, con él, arrastraremos desde nuestro xib con ctrl+click en la nueva UIImageView que añadimos hasta el .h
Esto nos creará el IBOutlet que enlaza.
Con esto, si ahora ejecutáramos veríamos simplemente una pantalla en blanco en la que no podríamos hacer nada.
DARLE CONTENIDO
Para hacer un pintado sencillo crearemos primero variables para guardar los datos de color, grosor del pincel y la posición de los toques.
Entonces, en el ViewController.h lo dejaremos de la siguiente manera:
01 #import <UIKit/UIKit.h>
02 #import <QuartzCore/QuartzCore.h>
03
04
05 @interface ViewController : UIViewController{
06 float rojo;
07 float verde;
08 float azul;
09 float pincel;
10
11 // Trazos
12 CGPoint currentPoint;
13 CGPoint previousPoint1;
14 }
15
16 @property (retain, nonatomic) IBOutlet UIImageView *image;
17
18 @end
Ahora, para gestionar el pintado inicializaremos los valores de color y pincel, dentro de viewDidLoad añadiremos el siguiente código
1 pincel = 10.0;
2 rojo = 0.2;
3 verde = 0.3;
4 azul = 0.7;
5
6 image.multipleTouchEnabled = NO;
Y, finalmente, para que todo esto cuadre sobreescribiremos los métodos touchesBegan y touchesMoved con el siguiente código:
01 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
02 {
03 UITouch *touch = [touches anyObject];
04
05 previousPoint1 = [touch previousLocationInView:image];
06 currentPoint = [touch locationInView:image];
07
08
09 }
10
11
12 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
13 {
14 UITouch *touch = [touches anyObject];
15
16
17 previousPoint1 = [touch previousLocationInView:image];
18 currentPoint = [touch locationInView:image];
19
20
21 UIGraphicsBeginImageContext(image.frame.size);
22 CGContextRef context = UIGraphicsGetCurrentContext();
23 [image.image drawInRect:CGRectMake(0, 0, image.frame.size.width, image.frame.size.height)];
24
25 CGContextMoveToPoint(context, previousPoint1.x, previousPoint1.y);
26
27 CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y);
28
29 CGContextSetLineCap(context, kCGLineCapRound);
30 CGContextSetLineWidth(context, pincel);
31 CGContextSetRGBStrokeColor(context, rojo, verde, azul, 1.0);
32 CGContextStrokePath(context);
33
34 image.image = UIGraphicsGetImageFromCurrentImageContext();
35 UIGraphicsEndImageContext();
36 }
En el código lo que hemos hecho básicamente es:
Finalmente sólo nos queda ejecutar la aplicación y ver el resultado.
Extraido de : http://www.imaginaformacion.com/tutoriales/tutorial-pintado-en-ios/
IMPORTACIÓN DE FRAMEWORKS
Lo primero que debemos hacer es importar los frameworks que utilizaremos en nuestro proyecto.
Para ello, como se ve en la imagen, iremos a la pestaña Build Phases dentro de la cabecera de nuestro proyecto. Ahí abriremos “Link binary With Libraries” y añadiremos con el botón “+” OpenGLES.framework y QuartzCore.framework.
Teniendo esto sólo nos queda insertar el import dentro del fichero .h de nuestro UIViewController.
#import <QuartzCore/QuartzCore.h>
CREANDO NUESTRO LIENZO
Para crear nuestro lienzo de dibujo simplemente pondremos un UIViewController encima de nuestra Vista principal.
Para ello, vamos ViewController.xib y arrastramos un UIImageView desde el listado de herramientas hasta nuestra vista. Seguidamente, activaremos el assistant editor (el botón que parece un frac arriba a la derecha en XCode) y, con él, arrastraremos desde nuestro xib con ctrl+click en la nueva UIImageView que añadimos hasta el .h
Esto nos creará el IBOutlet que enlaza.
Con esto, si ahora ejecutáramos veríamos simplemente una pantalla en blanco en la que no podríamos hacer nada.
DARLE CONTENIDO
Para hacer un pintado sencillo crearemos primero variables para guardar los datos de color, grosor del pincel y la posición de los toques.
Entonces, en el ViewController.h lo dejaremos de la siguiente manera:
01 #import <UIKit/UIKit.h>
02 #import <QuartzCore/QuartzCore.h>
03
04
05 @interface ViewController : UIViewController{
06 float rojo;
07 float verde;
08 float azul;
09 float pincel;
10
11 // Trazos
12 CGPoint currentPoint;
13 CGPoint previousPoint1;
14 }
15
16 @property (retain, nonatomic) IBOutlet UIImageView *image;
17
18 @end
Ahora, para gestionar el pintado inicializaremos los valores de color y pincel, dentro de viewDidLoad añadiremos el siguiente código
1 pincel = 10.0;
2 rojo = 0.2;
3 verde = 0.3;
4 azul = 0.7;
5
6 image.multipleTouchEnabled = NO;
Y, finalmente, para que todo esto cuadre sobreescribiremos los métodos touchesBegan y touchesMoved con el siguiente código:
01 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
02 {
03 UITouch *touch = [touches anyObject];
04
05 previousPoint1 = [touch previousLocationInView:image];
06 currentPoint = [touch locationInView:image];
07
08
09 }
10
11
12 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
13 {
14 UITouch *touch = [touches anyObject];
15
16
17 previousPoint1 = [touch previousLocationInView:image];
18 currentPoint = [touch locationInView:image];
19
20
21 UIGraphicsBeginImageContext(image.frame.size);
22 CGContextRef context = UIGraphicsGetCurrentContext();
23 [image.image drawInRect:CGRectMake(0, 0, image.frame.size.width, image.frame.size.height)];
24
25 CGContextMoveToPoint(context, previousPoint1.x, previousPoint1.y);
26
27 CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y);
28
29 CGContextSetLineCap(context, kCGLineCapRound);
30 CGContextSetLineWidth(context, pincel);
31 CGContextSetRGBStrokeColor(context, rojo, verde, azul, 1.0);
32 CGContextStrokePath(context);
33
34 image.image = UIGraphicsGetImageFromCurrentImageContext();
35 UIGraphicsEndImageContext();
36 }
En el código lo que hemos hecho básicamente es:
- En touchesBegan hemos inicializado el punto actual y el anterior con los puntos que tiene la vista como tocados.
- Después, en touchesMoved (es decir, cada punto que se mueve nuestro dedo):
- En las líneas 14 a la 18 actualizamos el punto actual y el anterior
- Inicializamos el contexto de pintado en las lineas 21 y 22
- En la 23 pintamos la imagen actual de nuestro UIImageView en el contexto
- Linea 25: nos posicionamos mediante CGContextMoveToPoint en la posición final del paso anterior (es decir, previousPoint)
- A partir de aquí, añadimos una linea con CGContextAddLineToPoint hasta el punto final (currentPoint) en la línea 27
- Después ponemos los valores de la línea (final de línea redondeado, ancho del pincel, color) entre las líneas 29 y 32
- Finalmente, en la línea 34 creamos la imagen a partir del contexto, se la ponemos al ImageView que tenemos en nuestra vista y cerramos el contexto en la 35
Finalmente sólo nos queda ejecutar la aplicación y ver el resultado.
Extraido de : http://www.imaginaformacion.com/tutoriales/tutorial-pintado-en-ios/
Con OS X Mountain Lion puedes manejar el Mac simplemente con los dedos
La verdad que cada día que pasa alucino mas y mas con mi iMac, vean vean....
El toque hace el cariño.
OS X Mountain Lion ofrece una respuesta aún más fluida a los gestos, como los desplazamientos con rebote, el zoom de página y de imagen, y el deslizamiento a pantalla completa. Además, con las nuevas animaciones de Mountain Lion, los gestos resultan todavía más naturales.
http://www.apple.com/es/osx/what-is/gestures.html#replay
http://www.apple.com/es/osx/what-is/gestures.html#replay
miércoles, 2 de enero de 2013
CARTA A LOS REYES MAGOS (DE LA FNAC!)
Me disponía a echar un vistazo al repertorio de Fnac para redactar la carta a los Reyes Magos cuando descubrí que Fnac había
lanzado un sorteo de un vale de 2013.-euros para bloggers.
¡¡¡¡¡¡2013.-euros!!!!!!! ¡¡¡¡¡¡¡Eso no podíamos dejarlo pasar por
alto!!!!!
Reuní a la familia y les hice escribir sus deseos basados en el amplísimo surtido de Fnac. No tuve ningún problema en que hicieran caso inmediato a mi petición. Aqui la carta de deseos:
Para Mamá:
Un Apple Ipad 32GB WiFi blanco:
Precio: 579€
Reuní a la familia y les hice escribir sus deseos basados en el amplísimo surtido de Fnac. No tuve ningún problema en que hicieran caso inmediato a mi petición. Aqui la carta de deseos:
Para Mamá:
Un Apple Ipad 32GB WiFi blanco:
Precio: 579€
Para Mi hijo mayor
Ofertazo de FNAC de 1211€
Y para mi niña:
Una Xbox 360 250Gb con un estupendo pack de regalo:
Por sólo 199,95€
Para terminar buena musica, los heroes del silencio
Por tan sólo 18,99€
domingo, 16 de diciembre de 2012
Y la Informática cambió...
Mi trayectoria dedicada casi toda mi vida a Microsoft, hace pensar que soy un incondicional. Nada mas lejos de la realidad, acontecimientos que ya he relatado en anteriores entradas de este Blog. Os traigo una entravista única de Steve Jobs recuperada. En ellas hay varias claves de éxito de Apple. Aqui hay claves que se pueden aplicar a nuevas claves. La gran diferencia es el todo o el poco, como se dice en la entrevista Microsoft, "productos sin alma". Espero os guste.
https://dl.dropbox.com/u/6217319/DOCUMENTAL%20PERDIDO%20STEVE%20JOBS.flv
lunes, 22 de octubre de 2012
martes, 21 de agosto de 2012
Tierra quemada
Según wikipedia:
La política de tierra quemada es conocida militarmente como destruir todo los recursos al retirarse de un territorio o zona conquistada. Sorprendentemente hoy día podemos encontrar similitudes en otros aspectos "civiles". Quizás haya llegado la hora de "quemar" todos los recursos y que otros no se aprovechen de tus esfuerzos y conocimientos aplicados.
Tras años de esfuerzo y dedicación a ciertos proyectos, llegan otros y con manos limpias se quedan con el trabajo y el dinero....¿os suena?.
La conocida como "política de tierra quemada" o de "tierra arrasada", es una táctica militar consistente en destruir cualquier cosa que pudiera ser de utilidad al enemigo cuando una fuerza avanza a través de un territorio o se retira del mismo.
El origen histórico del término tierra quemada proviene seguramente de la práctica de quemar los campos de cereales durante las guerras y conflictos en la antigüedad. Sin embargo, no se limita en absoluto a cosechas o víveres, sino que incluye cualquier cosa que pueda servir de refugio, transporte o suministro al enemigo.
La táctica de la tierra quemada es una acción que vincula los aspectos militares y económicos o incluso psicológicos de una estrategia militar. Estas acciones destructivas tienen la ventaja de que no requieren adelantos tecnológicos ni una especialización particular por parte de los combatientes que la aplican. Cuando se emplea en territorio enemigo se pretende destruir la voluntad de resistir del mismo mediante la intimidación, provocando sufrimiento a las poblaciones locales al destruir sus propiedades y medios de subsistencia. Si se aplica en territorio propio al retirarse, el objetivo es retrasar o incluso detener el avance enemigo al dejarle sin recursos que aprovechar, o entorpeciendo su movimiento.
La tierra quemada ha resultado históricamente muy eficaz para facciones que de otra forma no hubieran sido capaces de resistir el avance de ejércitos mejor organizados y más poderosos, aunque en la guerra moderna su utilidad es menor, ya que todo contingente armado suele cargar con sus propios suministros en lugar de vivir del terreno, como se hacía siglos atrás. En ese contexto, también se ha empleado la política de tierra quemada en la lucha contra movimientos guerrilleros con el fin de dificultar a los insurgentes el suministro y la ocultación entre la población civil.La política de tierra quemada es conocida militarmente como destruir todo los recursos al retirarse de un territorio o zona conquistada. Sorprendentemente hoy día podemos encontrar similitudes en otros aspectos "civiles". Quizás haya llegado la hora de "quemar" todos los recursos y que otros no se aprovechen de tus esfuerzos y conocimientos aplicados.
Tras años de esfuerzo y dedicación a ciertos proyectos, llegan otros y con manos limpias se quedan con el trabajo y el dinero....¿os suena?.
Suscribirse a:
Entradas (Atom)




