Feb 22, 2013

(XCode) How to search text in xib files

After several months of dev, a project could easily become ugly, probablly contains many used resources files(like pngs). It is easy to remove images that you know they are not using anymore, but that's not working for these looks unfamiliar. So i need to check their existence, it's simple to do a search in xcode, but xcode doesn't search in the xib files. Here is a line of command you can use in the terminal:

grep -i -r --include=*.xib "text you want to search" /your project's path

This command could search for all files (*.*).

Jun 27, 2012

(XCode) How to have lower simulator in Xcode 4.3 of Lion

The Xcode 4.3 does not have a simulator other than 5.1 and 4.3, but sometimes we need to test apps on the lower environment. So here is the trick: You need to have lower Xcode installation files, and copy the simulator folders to Xcode 4.3.

For exemple:
sudo mv /XCode file/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/

Jan 4, 2012

(Linux) Couldn't start Apache in Lampp

After upgrading Lampp to the latest version, apache could not be started, the error message is:

/opt/lampp/bin/php: error while loading shared libraries: /opt/lampp/lib/libsybdb.so.5: cannot restore segment prot after reloc: Permission denied
XAMPP: Starting Apache with SSL …
XAMPP: Error 1! Couldn't start Apache!
XAMPP: Starting diagnose…
XAMPP: Sorry, I've no idea what's going wrong.


It needs to disable selinux by using this command:

setenforce 0

Aug 23, 2011

(Android) How to listen MessageEvent in XMPP with asmack

The asmack could not load providers from smackx.jar automatically, if any project needs listen MessageEvent (composing, delivered, displayed, offline etc.), these lines must be added manually.

After established a connection:
connection.connect();
ProviderManager pm = ProviderManager.getInstance();

// Add extension provider
pm.addExtensionProvider("x", "jabber:x:event",new MessageEventProvider());

Dec 7, 2010

(iOS) Available font family

A good example to list all available font family of iOS system. Check it out.

Nov 19, 2010

(iPhone)How to display different color text

There are several ways to display different color text in iOS device.
  1. Use multiple UILabel and each contains different font style.
  2. Use HTML tag and UIWebView.
  3. Use NSMutableAttributedString, this classe is added in iOS from 3.2, it needs Core Text to render rich text on the view. AliSoftware created a useful classe UIAttributedLabel which is an UILabel's subclass and supports NSMutableAttributedString. Check AliSoftware's github for more information.

Aug 19, 2010

(iPhone)How to customize UIAlertView

First solution is using addSubview which add subviews into an UIAlertView, just don't forget add newlines in the initWithTitle method's message to make sure you have enough space for subviews. Like :

[[UIAlertView alloc] initWithTitle:@"Title" message:@"\n\n\n" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil]

But this solution couldn't change UIAlertView's background, here is second solution that creates an UIAlertView's subclass, overrides several methods (setAlertText, alertText, drawRect, layoutSubviews and show), Joris Kluivers made an excellent sample, check it here : CustomAlert 

(iPhone)How to customize UINavigationBar's background

UINavigationBar has 2 methods to change it's style, barStyle and tintColor, but neither could set a background image for UINavigationBar.

Here is a solution to do that, add following code in your app delegate implementation file (.m) :

@interface UINavigationBar (MyCustomNavBar)
@end
@implementation UINavigationBar (MyCustomNavBar)
- (void) drawRect:(CGRect)rect {
    UIImage *barImage = [UIImage imageNamed:@"background_image.png"];
    [barImage drawInRect:rect];
}
@end

And change the "background_image.png" to the image what you want. This add a category in all UINavationBar used in your application, and you will see a fancy UINavigationBar.

Jul 28, 2010

(iPhone)How to debug EXC_BAD_ACCESS

In iOS programming, the EXC_BAD_ACCESS happens when application try to access some deallocated objects, but the Debugger Console usually display a simple message of "EXC_BAD_ACCESS", here is an useful solution to track the deallocated object.

- Set NSZombieEnabled = YES. With this argument, console will display a little bit more information, like "method : message sent to deallocated instance ...", sometime we can track the object in the method when it is easy to find.

- Set MallocStackLoggingNoCompact = 1, this argument allow to display alloc history of the object, for example: we got a message "message sent to deallocated instance 0x58448e0", type "info malloc-history 0x58448e0" in the console will display the allocate history of object 0x58448e0, which contains object allocation and deallocation, it is really useful to debug the incorrect release call.

To setup these 2 arguments, you should go to "Project"->"Edit Active Executable project name", add these 2 variables in "Variables to be set in the enviroment", names are "NSZombieEnabled" and "MallocStackLoggingNoCompact", values are "YES" and "1". And check the checkbox to active.

Don't forget remove these variables when you release your application.

May 17, 2010

(iPHone)How to retrieve value of "Bundle version"

Here is how to retrieve value of "Bundle version" in the project.plist using code.

NSString *version = [[[NSBundle mainBundle] infoDictionary] 
objectForKey:@"CFBundleVersion"];

(Iphone)How to move up an UIAlertView

Here is a trick to move your UIAlertView up on the screen.

UIAlertView * alert = [ [ UIAlertView alloc ] initWithTitle:@"Alert" 
message:@"Alert" 
delegate:self 
cancelButtonTitle:@"OK" 
otherButtonTitles:nil ];

alert.transform = CGAffineTransformTranslate(alert.transform, 
0.0, 100.0);

[ alert show ];

May 10, 2010

(iPhone)How to resolve "resources have been modified" when install an adhoc version

It's pretty weird my client has met this problem when he install an adhoc version on his iPhone. Arial Balkan posted a very useful solution, the idea is transforming the application (file .app) to an .ipa file which is executable in the iTunes.

May 6, 2010

(XCode)How to resolve Error: 155015 (A conflict in the working copy obstructs the current operation)

It happens on a file i updated from SCM, the solution i found is:

- Backup current working file.
- Run svn revert in console.

Mar 19, 2010

(XCode) How to resolve "Warning: Multiple build commands for output file ..."

Just met a weird warning message in XCode which is "Warning: Multiple build commands for output file ..." after deleting a resource file, and i checked the file does not exist in resource folder any more, finally i found the the file did appear in "targets/app name/copy bundle resources/", than i figure out i accidentally pressed "Delete reference" when i delete the file, and that's why the resource file still exist in the "copy bundle resources" folder

Dec 29, 2009

(Objective-c)How to round a number

Here is a solution to round a float number:

NSString *pi = @"3.14159265";
int floatSize = 3;
NSDecimalNumber *numericValue = [NSDecimalNumber decimalNumberWithString:pi];
NSDecimalNumberHandler *roundingStyle = [NSDecimalNumberHandler 
decimalNumberHandlerWithRoundingMode:
NSRoundBankers scale:floatSize raiseOnExactness:NO raiseOnOverflow:NO 
raiseOnUnderflow:NO 
raiseOnDivideByZero:NO];
NSDecimalNumber *roundedNumber = [numericValue 
decimalNumberByRoundingAccordingToBehavior:
roundingStyle];

or

NSString *pi = @"3.14159265";
NSString *roundedNumber = [[NSString alloc] initWithFormat:
@"%.3f",[pi floatValue]];

Result: 3.142

Dec 7, 2009

(Eclipse)How to resolve "Initializing Java Tooling"

Just met an initialization error on Eclipse, the error message is:

'Initializing Java Tooling' has encountered a problem. An internal error occurred during: "Initializing Java Tooling".

It's really annoying, after googling several sites, here is a working solution:

Delete
the following directory: WORKSPACE_HOME/.metadata/.plugins/org.eclipse.core.resources/.project, and restart Eclipse and problem should be solved.

Aug 19, 2009

(Other)The Google Online Marketing Challenge 2008 Campaign Results

I have chosen the course "E-Commerce" in my last semester in the Université de Montpellier 2. Dr. Jean-Yves Delort which is our professor organized 14 student teams participating to The Google Online Challenge 2008. I just get the rating of our team from Dr. Jean-Yves Delort's site. We are "Strong Campaign", it is such a good news, because marketing is not our major, and we really did a good job.

Dr. Jean-Yves Delort's site

2008 Campaign Results

Jul 10, 2009

(Objective-c) How to get MD5 hash string of a NSData


- (NSString*)dataMD5:(NSData*)data {
CC_MD5_CTX md5;

CC_MD5_Init(&md5);

CC_MD5_Update(&md5, [data bytes], [data length]);

unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5_Final(digest, &md5);
NSString* s = [NSString stringWithFormat: 
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
digest[0], digest[1],
digest[2], digest[3],
digest[4], digest[5],
digest[6], digest[7],
digest[8], digest[9],
digest[10], digest[11],
digest[12], digest[13],
digest[14], digest[15]];
return [s uppercaseString];
}