martes, 31 de enero de 2012

Cuidado! Nueva forma

Esta entrada no tiene nada que ver con iOS pero se me hizo importante mencionarlo.

El día de hoy recibí un correo muy sospechoso, en el cuál se me "ofrecía" un empleo de "Supervisor de Operaciones" según en Gamesa, queriendo aprovechar mi "necesidad" de un empleo la cual no existe porque pues si tengo trabajo :) Bueno esto va para la demás gente que si podría estar en esta necesidad buscando un empleo sin éxito, así que cuidado con este tipo de cosas ... El correo fue el siguiente:

Gamesa Corporativo, S.A. de C.V.

Oferta de Empleo

31 de enero de 2012 09:27a.m.

Buen día.


El perfil que describe en su CV es adecuado para la vacante "Supervisor de Operaciones" que oferta un sueldo neto mensual de $17,000 + PSL, por lo que le solicitamos atentamente presentar los exámenes médicos correspondientes para cubrir la plaza disponible en su lugar de residencia.

Debido a que hemos recibido candidatos de diferentes regiones de la zona, y de los cuales lo hemos seleccionado, la empresa contratante nos requiere su ingreso de manera urgente, por lo que sólo esta ocasión la prueba tiene un costo mínimo que debe ser cubierto por usted yel mismo se reembolsa en su primer quincena laboral.

El procedimiento es el siguiente:

1-.Cubrir mediante un depósito bancario la cantidad de $400 (Cuatrocientos pesos 00/100 MN.) que ampara los gastos médicos.

Banamex

Número de cuenta: 7003-6499905

Lic. González Hernández y/o Gamesa Corporativo, S.A. de C.V.

Departamento de Selección.

2.- Enviar por este medio una imagen legible de su comprobante de depósito indicando en el mismo la fecha, su nombre y sucursal donde lo realizó, todo ésto bajo el titulo de "Ficha de depósito"

3.-.Después del envío de su comprobante recibirá al día siguiente instrucciones anexas de dónde deberá presentarse en su lugar de residencia para dichas pruebas médicas; así mismo le enviaremos 2 evaluaciones que responderá y reenviará vía electrónica, esto para cumplir con el mecanismo de contratación y que no lo altera.

4.- Contará con 1 día hábil máximo para resolver y enviar la hoja de respuestas contestada bajo el titulo de "Resultado PRUEBAS."

5.- Le daremos respuesta con los comentarios correspondientes. Después de los resultados concertaremos la cita para la entrevista en la ciudad de su residencia.

Debido a la coordinación que este tipo de evaluación requiere, sólo contamos hasta el día jueves 2 de febrero para recibir su comprobante, en caso de NO recibir correo alguno entenderemos que espera otra oportunidad. Nuestro proceso es transparente y puede corroborar nuestra legalidad con nuestra cédula empresarial al calce.


Gamesa Corporativo, S.A. de C.V. GCO 901207 A5G

Lic. Laura Ascencio Velázquez

Reclutamiento y selección

jueves, 26 de enero de 2012

Objective-C

Primero que nada, este blog estará dedicado a tutoriales y demás cosas que se me ocurran que se puedan enseñar acerca de este lenguaje (Objective-C). Empezaré con una breve introducción del lenguaje y algunas características del mismo (espero la lectura sea de su agrado).

"The Objective-C language is a simple computer language designed to enable sophisticated object-oriented programming. Objective-C is defined as a small but powerful set of extensions to the standard ANSI C language. Its additions to C are mostly based on Smalltalk, one of the first object-oriented programming languages. Objective-C is designed to give C full object-oriented programming capabilities, and to do so in a simple and straightforward way." [1]

Como podemos leer, Objective-C es un lenguaje simple y sofisticado orientado a objetos. Define un conjunto de pequeñas pero poderosas extensiones de ANSI C, pero además de esto, se basa también en Smalltalk, el cuál fue uno de los primeros lenguajes de programación orientados a objetos. Simplemente, Objective-C está diseñado para dar todas las ventajas de C, orientado a objetos de forma simple y directa.
A pesar de que no se tocará el tema de como funciona el compilador de Objective-C "a bajo nivel", referencio un artículo de Apple por si consideras importante leer a cerca de esto [2].

Bases ...

Primeramente, una breve explicación de los frameworks más usados en Objective-C ya que son sobre los cuales son construídas casi cualquier aplicación:
  • UIKit (User Interface Kit): Como su nombre puede describirlo, es el (kit) encargado de proveer al usuario con componentes gráficos para el desarrollo de una aplicación (labels, tablas, botones, etc) [3].
  • Foundation: Contiene la capa de clases de Objective-C. Estas comienzan con el prefijo NS (de NeXTSTEP, sistema operativo orientado a objetos creado por Next Computer, empresa fundada por Steve Jobs después de ser despedido de Apple en 1985) y son las que manejan datos, por ejemplo NSString para control de cadenas, NSInteger para enteros con signo y así sucesivamente muchas otras clases [4].
Estos dos frameworks son los más básicos e importantes y los que siempre serán añadidos a cualquier tipo de proyecto que crees desde Xcode.

Memoria

Uno de los aspectos MÁS importantes de Objective-C es el manejo manual de la memoria. "¿Qué es esto?" podrías preguntarte … Si vienes de lenguajes como C o C++ puedes estar familiarizado con este conceptos; pero si vienes de Java, C# u otros lenguajes, esto será un nuevo paso para ti. Primero debemos definir los tres tipos de manejo de memoria que "conocemos" en Objective-C:
  • ARC (Automatic Reference Counting): Característica nueva en Objective-C a partir de LLVM 3.0 y iOS 4+ (en realidad fue liberada con iOS 5 pero puedes dar soporte a tus Apps de iOS 4+) la cuál consiste en que el compilador se encarga del ciclo de vida de los objetos según su propio "razonamiento" (esto obvio también dependiendo de cómo el programador maneje el ciclo de vida del objeto a conveniencia) [5].
  • MRC o MMR (Manual Reference Counting o Manual Retain/Release): Tú y SÓLO tú eres el responsable del ciclo de vida de los objetos mediante llamadas "retain" (retener) y "release" (soltar) mediante un mecanismo llamado retain count el cual determina el "tiempo" de vida de un objeto (será explicado más a fondo).
  • Garbage Collection: Tú no tienes ninguna responsabilidad sobre el ciclo de vida de los objetos sino un "collector" (no disponible en iOS, sólo OS X).

Nosotros en lo personal creemos que usar MRC es la forma efectiva ya que el programador debe ser el responsable de la memoria que crea y debe liberar en sus aplicaciones para que estas funcionen de forma óptima. Debido a que este pequeño tutorial es algo demasiado introductivo a Objective-C, dejaremos el manejo de memoria para otro momento ya que se merece su propia página para explicar a fondo muchos conceptos importantes del tema.

Más cosas básicas pero importantes

En Objective-C la forma de crear clases es similar a C++, esto es, tenemos un archivo de interface (.h) y un archivo de implementación (.m) los cuales son definidos de la siguiente manera:

@interface MiClase : NSObject {
NSString *unaCadena;
}
- (NSInteger)suma1:(NSInteger)num1 suma2:(NSInteger)num2;
+ (NSString *)cadenaFija;

@end

@implementation MiClase

- (NSInteger)suma1:(NSInteger)num1 suma2:(NSInteger)num2 {
return num1+num2;
}
+ (NSString *)cadenaFija {
return @"Mi Clase";
}
@end

Los componentes que podemos resaltar del código anterior son "@interface MiClase : NSObject" donde @interface es la directiva para declarar nuestra interfaz de clase, "MiClase" es el nombre de nuestra clase y " : NSObject" la cual nos indica que "MiClase" hereda de NSObject (toda clase debe heredar de otra, NSObject es la clase padre de todas en Foundation framework). Entre llaves ( { } ) encontramos las propiedades de la clase que son accesibles mediante instancias de esta clase. El método "suma1:suma2:" es un método de clase (delimitado por el signo "-", lo que significa que debemos crear una instancia de la clase MiClase para acceder a el) el cuál recibe dos parámetros y regresa un NSInteger (entero con signo), y el método "cadenaFija" que es un método de instancia (delimitado por el signo "+", lo que significa que no debemos crear una instancia de la clase MiClase para acceder a el, sino simplemente llamar el método desde la clase de la forma [MiClase cadenaFija]) y regresa un NSString con el valor de @"Mi Clase". Y en el archivo de implementación encontramos "@implementation MiClase" donde definiremos las funcionalidades de los métodos definidos en el .h como se muestra arriba.

Obviamente hay muchas más cosas importantes de Objective-C como delegados, protocolos, properties, categorías, subclases, y demás, pero todo esto debe ser cubierto en temas aparte para su mejor comprensión. Esta pequeña introducción ha sido a manera de sólo cubrir conceptos básicos del lenguaje para gente interesada en el desarrollo de apps para iPhone/iPad. Los tutoriales posteriores pretenden enfocarse en los temas ya mencionados para dar un preámbulo más extenso acerca de Objective-C y sus grandes características.

Fuentes Citadas: