Posts

Usando Mac OS X Lion y MAMP 2.0.3 el servidor Apache no arrancaba … cuando abrí la”apache_error.log” encontre este error:

[Date] [alert] (EAI 8)nodename nor servname provided, or not known: mod_unique_id: unable to find IPv4 address of “myMacbookPro”Configuration Failed

La forma en que puedo solucionar esto, fue la siguiente:

  1. Asegúrese de que tiene cerraste completamente MAMP .
  2. Abra el archivo httpd.conf con un editor de texto – “/Applications/MAMP/conf/apache/httpd.conf”
  3. Buscar la siguiente línea:
    LoadModule unique_id_module modules/mod_unique_id.so
  4.   Añadir ”#” en la mendicidad de esa línea, de esta manera:
    #LoadModule unique_id_module modules/mod_unique_id.so
  5. Abra MAMP otra vez y su Servidor Apache comenzará a funcionar con normalidad

Espero que ayude

Recientemente tuve este problema con Mac OS Lion, pero la solución es muy simple, basta con:

  1. Haga clic en  Terminal en la parte superior izquierda de la pantalla
  2. Elija Preferences
  3. Su tema actual debe ser seleccionado de manera predeterminada en la lista de temas.
  4. Haga clic en la pestaña Advanced en la parte superior derecha del cuadro de diálogo
  5. Bajo Declarar la Terminal como, elegir la opción “xterm-color”.
  6. Reinicie la Terminal, y sera todo.

Cuando yo estaba tratando de ”validar” mi aplicación (usando Xcode) para hacer una actualización de mi aplicación en iTunes Connect, por una razón desconocida que estaba recibiendo este mensaje de error:The key CFBundleVersion in the info.plist must contain a higher version than that of the previously uploaded version.

Si tienes el mismo problema, puede resolverlo de la siguiente manera:

  1. Abre el sitio de iTunes Connect, después click en Manage Your Applications >  ”Tu App” > View Details (boton de la esquina izq.) > Binary Details.
  2. Allí podrás ver  el “Bundle Version”, después todo lo que necesitas hacer es actualizar el Bundle Version de tu App.

Al principio supuse  que el ”Bundle Version” para fines iTunesConnect era el que se puede ver en “Version Information”, pero parece que Apple utilizan datos diferentes para esos fines.

Espero haber sido de ayuda.

Usando iPhone SDK 1.8.x (Appcelerator Titanium) y por alguna razón desconocida el valor de CFBundleShortVersionString siempre se queda en 1,0 y eso me estaba deteniendo para actualizar mi aplicación,  pero despues me tope con esta solución que resolver mi problema.

  1. Cuando hagas un build de tu aplicación dentro del directorio build->iphone  esta el archivo info.plist, copialo a el directorio raíz del proyecto (donde reside Tiapp.xml).
  2. Edita el info.plist que acaba de copiar en el directorio raíz, cambiando manualmente el valor de CFBundleShortVersionString (paracualquier versión que necesitas).
  3. Guarde el archivo (el que esta en el directorio raíz) y dale build de nuevo al proyecto, el info.plist generado automáticamente tomará los datos en el archivo modificado.

Fuente: Q&A Appcelerator

Las categorías son una de las características más útiles de Objective-C. En esencia, una categoría le permite añadir métodos a una clase existente, sin que la subclasificación o necesidad de conocer cualquiera de los detalles de cómo se implementa.

Una categoría recoge las implementaciones de método en archivos separados. El programador puede colocar grupos de métodos relacionados en una categoría para que sean más legibles. En otras palabras, si deseas agregar un método a todas las instancias de NSString en tu aplicación, solo hay añadir una nueva categoría. No hay necesidad de una subclase personalizada.

Por ejemplo, voy a añadir dos métodos para un NSString. uno para determinar si el contenido es una URL y la otra para añadir un método de reverseString.

Se vería así:

    1. Crear un nuevo proyecto de XCode un “Command Line Tool”. Lo llamaré ExtendsNSString
    2. A continuación, cree una nueva clase Objective-C (lo voy a llamar a NSString_Extend ). Elimine todo el código en el archivo de cabecera (NSString_Extend.h) y ponemos el siguiente código:
      #import <Cocoa/Cocoa.h>    
      
      @interface NSString (Extends)
      - (BOOL) isURL;
      - (NSString *)reverseString;
      @end

      es muy similar a una declaración de clase. La diferencia es que no hay una súper clase, y hay un nombre para la categoría entre paréntesis, el nombre puede ser el que quieras.

    3. Ahora elimine todo el código en el archivo de implementación ( NSString_Extend.m) y ponemos el siguiente código:
      #import "NSString_Extend.h"
      
      @implementation NSString (Extends)
      
      - (BOOL) isURL
      {
          if ( [self hasPrefix:@"http://"] )
              return YES;
          else
              return NO;
      }
      
      - (NSString *) reverseString
      {
          NSUInteger len = [self length];
          NSMutableString *rtr=[NSMutableString stringWithCapacity:len];
          //        unichar buf[1];
      
          while (len > (NSUInteger)0) {
              unichar uch = [self characterAtIndex:--len];
              [rtr appendString:[NSString stringWithCharacters:&uch length:1]];
          }
          return rtr;
      }
      @end

      A diferencia de las subclases, las categorías no se puede agregar variables de instancia. Puede, sin embargo, utilizar categorías para sustituir métodos existentes en las clases, pero debes hacerlo con mucho cuidado.

    4. Ahora usted puede utilizar estos métodos en cualquier NSString, vamos a cambiar el main.m, que se verá algo como lo siguiente:
         #import <Foundation/Foundation.h>
      #import "NSString_Extend.h"
      int main (int argc, const char * argv[])
      {
      
      NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
      
      // insert code here...
      NSString* string1 = @"http://pixar.com/";
      NSString* string2 = @"Pixar";
      
      if ( [string1 isURL] )
      NSLog (@"string1 is a URL");
      else
      NSLog (@"string1 is not a URL");
      
      if ( [string2 isURL] )
      NSLog (@"string2 is a URL");
      else
      NSLog (@"string2 is not a URL");
      
      NSString *test = [@"!A string to be reverted!" reverseString];
      
      NSLog(@"%@", test);
      
      [pool drain];
      return 0;
      }

      Cuando se realizan cambios en una clase con una categoría, esta afecta a todas las instancias de esa clase en toda la aplicación.

 

Puedes descargar el codigo de este tutorial Aqui
Fuente:

Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven’t found it yet, keep looking, and don’t settle. As with all matters of the heart, you’ll know when you find it.

 

Steve Jobs

Uno de los patrones de diseño mas utilizados es el singleton. El singleton es usado para instanciar solo una vez una clase. Encontre un template para un singleton en objective-c el cual quiero compartir con ustedes.

Pero para este caso usare un singleton para guardar/retener un valor de tipo NSString

A continuación pongo el código para el singleton.

MySingleton.h

#import <Foundation/Foundation.h>

@interface MySingleton : NSObject {

    NSString *stringValue;

}

+ (MySingleton *)sharedMySingleton;

- (NSString *)stringValue;
- (void)setStringValue:(NSString *)value;

@end

MySingleton.m

#import "MySingleton.h"

@implementation MySingleton

static MySingleton* _sharedMySingleton = nil;

+(MySingleton*)sharedMySingleton
{
	@synchronized([MySingleton class])
	{
		if (!_sharedMySingleton)
			[[self alloc] init];

		return _sharedMySingleton;
	}

	return nil;
}

+(id)alloc
{
	@synchronized([MySingleton class])
	{
		NSAssert(_sharedMySingleton == nil, @"Attempted to allocate a second instance of a singleton.");
		_sharedMySingleton = [super alloc];
		return _sharedMySingleton;
	}

	return nil;
}

-(id)init {
	self = [super init];
	if (self != nil) {
		// initialize stuff here
        stringValue = nil;
	}

	return self;
}

- (NSString *)stringValue{
    return stringValue;
}
- (void)setStringValue:(NSString *)value{
    stringValue = value;
}

@end

Si quieres Guardar(Set) el stringValue, usamos lo siguiente:

[[MySingleton sharedMySingleton] setStringValue:@"Hello World"];

Y si quieres obtener(Get) el stringValue, usamos lo siguiente:

[[MySingleton sharedMySingleton] stringValue];

Puedes descargar una copia de un código funcional de github

Fuente del Post : getsetgames

Si en tu proyecto tienes la necesidad de cargar imagenes desde la web, sugiero que salves las imagenes dentro documents directory del tu iPhone/iPad , esto para optimizar la aplicacion y el performance.

Para guardar, cargar o eliminar una imagen del directorio de documentos de tu app, lo hacemos con 3 simples metodos.

Para Guardar una imagen

- (void)saveImage:(UIImage*)image:(NSString*)imageName {

NSData *imageData = UIImagePNGRepresentation(image);//convert image into .png format.
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]];

[fileManager createFileAtPath:fullPath contents:imageData attributes:nil];
NSLog(@"image saved");
}

Para Eliminar una imagen

- (void)removeImage:(NSString*)fileName {

NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", fileName]];

[fileManager removeItemAtPath: fullPath error:NULL];
NSLog(@"image removed");

}

Para Cargar una imagen

- (UIImage*)loadImage:(NSString*)imageName {

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithFormat:@"%@.png", imageName]];

return [UIImage imageWithContentsOfFile:fullPath];

}

Ahora, para salvar cualquier imagen solo llamas al metodo algo asi;

[self saveImage: theUIImage: @"UIImageName"];

o para cargar:

myUIImage = [self loadImage: @"UIImageName"];

o para eliminar:

[self removeImage: @"UIImageName"];

Obtener una imagen desde una url:

NSString *urlName= @"http://theURL/image";
NSURL *url = [NSURL URLWithString:urlName];
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];

Here I put a small tutorial for embedded a youtube video on iPad also works on iPhone.

Note: The iPad/iPhone simulator does not allow online reproduction, the video will only be visible in a real device .

  1. First we create a View-based Application project.
  2. I will name it EmbeddedVideo, you can name it whatever you like.
  3. Open the EmbeddedVideoViewController.xib and added a UIWebView(drag and drop).

  4. Then in EmbeddedVideoViewController.h create an IBOutlet for ourUIWebView, leaving something like this:
    @interface EmbeddedVideoViewController : UIViewController {
       UIWebView *webVideo;
    }
    
    @property (nonatomic, retain) IBOutlet UIWebView *webVideo;
    
    @end
  5. We connect the IBOutlet with UIWebView, open the  EmbeddedVideoViewController.xib and  in File’s Owner in the Outlets section select/drag on our UIWebView:
  6. We opened in EmbeddedVideoViewController.m within viewDidLoad method (if commented, uncomment it) add a few lines of code, something like this:
    - (void)viewDidLoad
    {
           [super viewDidLoad];
           NSString *videoURL = @"http://www.youtube.com/watch?v=JOddp-nlNvQ";
           NSString *htmlString =[[NSString alloc] initWithFormat:@" ",videoURL];
           [webVideo setAllowsInlineMediaPlayback:YES];
           [webVideo loadHTMLString:htmlString baseURL:nil];
    }
  7. After that compile and run on our device and we’ll see something like this

I hope this will be useful and you can download the code from  here

Posts

Marvel’s The Avengers Super Bowl XLVI Commercial

Hermosillo Dev House #19

28/01/2012

Photos by @Dianonina

Underworld: Awakening

Taller de iOS en UABC

Curiosity with Stephen Hawking, Did God Create the Universe?

NOVA  The Pluto Files

Farewell, Steve Jobs

MACENSTEIN’S MAC CHICK de AGoSTo 2011: LEEZA GARVIN

 

Name: Leeza Garvin• First Apple Product: My first Apple product was the 3rd Gen IPod Nano, but the Macbook Air is my favorite product. It’s so light and sleek!
• Favorite game: Angry birds.
• Favorite Movies: Too many to count! Harry Potter is up there though.

More in Macenstein

Cowboys & Aliens

Aunque la causa principal del por que los aliens nos visitan. Me parece una buena pelicula y me mantuvo entretenido todo el tiempo. Vale la pena

Demon Cam.

Yo creo que es el unico y mejor video sobre una App para iPhone que he visto :P

Empece a ver la serie Modern Family a sugerencia de un compañero de trabajo, es una entretenida comedia familiar. Una de las cosas que mas me llama la atención es el formato de la serie, algo asi como si estuvieran con un consejero familiar para después desarrollar el capitulo. Es bastante entretenida…

Programación en iOS ¿Por dónde comienzo?

at Nearsoft Summer Talks

 

Macenstein’s “Mac Chick of the Month” (Mayo 2011):

- Name: Veronica Ricci
- Age: 21
- Occupation: Jill of a few trades- Model, occasional exotic feature dancer, certified massage therapist, occasional actress, student.. working on more titles with time!

More in Macenstein

360 Panorama

Excelente aplicación para iPhone/iPod/iPad2, las vistas panorámicas quedan geniales. Vale la pena el tiempo empleado para capturar la toma (Y)

Séptima Semana de Tecnologia e Ingeniería

At Universidad de la Sierra Moctezuma
Platica: Programación en iOS,  Mercado  y Alternativas

Audio

Profile

Ing. Sistemas Computacionales
Information Technology and Services | Hermosillo Area, Mexico, MX

Summary

En constante búsqueda de nuevos conocimientos que me permitan la expansión de mis habilidades técnicas y mis valores para desarrollar mi trabajo tan eficiente y efectivamente como sea posible.
Specialties: Objective-C, GHUnit, sqlite. Microsoft Windows Server 2000-2008: Active Directory, DHCP, DNS,Terminal Server. Networking

Experience

  • Oct 2010 - Present
    iPhone/iPad Jr. Developer / Nearsoft
    Trabajo como el Desarrollador Jr. para iPhone / iPad, haciendo una aplicación para obtener y enviar información a través varios Servicios Web, utilizando la clase NSXMLParser.
  • Nov 2009 - Aug 2010
    .NET Jr. Developer / Viisto Software
    Trabajando principalmente depurando aplicaciones .NET y realizando pequeños cambios u optimizaciónes a código ya existente (asp.net/vb.net).
  • Nov 2009 - Feb 2010
    iPhone Jr. Developer / Viisto Software
    iPhone Jr. Developer, desarrollo de un app que obtiene un xml de un web service, mismo que mediante el desarrollo de un parser simple presentaba esos datos de manera amigable para los usuarios sobre la plataforma iPhone OS 3.1.2.
  • Feb 2008 - Nov 2009
    Auxiliar SysAdmin / Derex Desarrollo Residencial
    Auxiliar SysAdmin, enfocado a administración de servidores (Active Directory, DHCP, DNS, FTP, TS). Utilizando HTML/PHP mantenía y actualizaba el portal de la compañía, así mismo con ASP/SQL Server implemente aplicaciones internas para el manejo de información de clientes. Mantenimiento preventivo/correctivo a los equipos.
  • Jan 2007 - Feb 2008
    Asistente de Sistemas / Dirección General de Contraloría de Estado de Sonora
    Asistente de Sistemas en el departamento de Contraloría Social, donde mantenía y actualizaba la pagina de la CPCEM, de la misma manera que daba mantenimiento preventivo/correctivo a los equipos y realizaba a los diseños(diplomas, carnets y publicidad) para las reuniones de la CPCEM.

Education

  • 2002 - 2007
    Instituto Tecnológico de Hermosillo
    Ingeniero en Sistemas Computacionales

Latest checkin

Badges

Checkin history

Friends

Information

Repos
Gists
Followers
Following

Repositories

Watched Repositories

Recent tracks

Top tracks

abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz