NSLog replacement

Posted by kusno mudiarto at June 19th, 2009

copied from http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog

basically just put these code into your precompiled header file:

// DLog is almost a drop-in replacement for NSLog
// DLog();
// DLog(@"here");
// DLog(@"value: %d", x);
// Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable);
#ifdef DEBUG
#	define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#	define DLog(...)
#endif

// ALog always displays output regardless of the DEBUG setting
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

you might need to add this flags to the project:
OTHER_CFLAGS = -DDEBUG
GCC_PREFIX_HEADER = YourProject_Prefix.pch # this is needed especially for static library

Bookmark and Share

Posted in idea / rant| No Comments | 

Trace32 script to print stack frame to a file

Posted by kusno mudiarto at March 26th, 2009

A very simple scripts, but took me a while to found it. Basically in Trace32, I need to capture stack trace whenever a certain memory location is being written. I got tired of doing it manually, and have to copy & paste the stack trace everytime. Searching it in Google didn’t give me a clue, so I read through Trace32 manual to find out how to do it.

Finally, I found the easy way to do it, here is the script / command in its glory:

# printer.clipboard -> to redirect to clipboard
# use this to redirect to file
printer.open "c:/kusno_trace_1.txt"

# command to be run inserted in the  the breakpoint
wp.var.Frame

# close printer after we're done
printer.close

The trick here is using printer to print the content of the var.Frame…

Tags:

Bookmark and Share

Posted in software / tools| No Comments | 

Adding Custom Compilation Flags in XCode

Posted by kusno mudiarto at March 24th, 2009

I just found out how to add additional compilation Flags in XCode. It may looks stupid, but I couldn’t find it anywhere couple days ago :( .

Basically just do “Get Info” on a project / target, and add user defined settings with this value :

OTHER_CFLAGS and set the additional compilation flags : -DTARGET_OS_X -DMUDI_DEBUG

edit:

another additional flags : GCC_PREFIX_HEADER to specify your precompiled header – useful for static library

Tags:

Bookmark and Share

Posted in software / tools| No Comments | 

OS X Leopard DNS performance problem – enabling local name server

Posted by kusno mudiarto at October 12th, 2008

Lately I have been having problem with slow DNS lookup while browsing. You can see it when I browse, it took some time in the “looking up for youtube.com …” for example.

I googled around and tried several solutions as suggested by others.

  1. Using Open DNS (208.67.222.222, 208.67.220.220) and verizon? (4.2.2.1, 4.2.2.2, 4.2.2.3) as my dns server.
  2. Disable Apple IPv6 in System Preference -> Network -> Advanced -> Configure IPv6
  3. Change firefox dns preference in about:config -> network.dns.disableIPv6

All of those doesn’t seem to fix my problem. I tried the DNS Performance Test and it looks like it is ok, not too fast, but not too slow either; but even though DPT is running correctly, I still see that annoying problem.

I saw there was a suggestion on turning on local DNS server from macosxhints.

I followed it, and it works very good in my case, it fixes all my problems, and now I can browse very fast. There are several things that tripped me when I was installing this, so this is my notes for other brave enough to follow the direction.

Notes :

  • on step 2 (Set up your machine to run BIND server), you have to put forwarders inside the options section. At first I thought I should put it in the end of file, but it didn’t work, I just found it out after careful examination
  • You have to do step 3 (Create StartupItem for DNS). There are 2 files that have to be created there.
  • on step 6, you can start the DNS right away, or you can also try to start the dns server manually first by using this command (without quote): “/usr/sbin/named -f -g” . -f & -g is to  run the server in the foreground, not as a daemon. It is useful if you want to test your configuration
  • There is also a software “named-checkconf” that can check if your named configuration is correct or not.
  • Before switching your network settings to use the local dns, you can test it up by using nslookup like this (without quote): “nslookup yoursite.com – 127.0.0.1″. If your server is set up correctly, nslookup should return the ip address for yoursite.com

I hope this helps other who have the same problem like me.

Tags:

Bookmark and Share

Posted in idea / rant| No Comments | 

Mercurial tips & tricks for mac

Posted by kusno mudiarto at July 28th, 2008

I am collecting several useful mercurial tricks for me :

- See diffs when committing in vim
see : http://www.selenic.com/mercurial/wiki/index.cgi/DiffsInCommitMessageInVIM
but instead of using the instruction as is, I have to modify the string a little bit to work in my mac:
what I did is replacing :

 $EDITOR "$HGTMP/msg" "$HGTMP/diff" || exit $?

with

 vim "+e $HGTMP/diff" '+set nobl buftype=help filetype=diff' "+vsplit $HGTMP/msg"
 

I’ll add more tricks later if I find any

Tags:

Bookmark and Share

Posted in idea / rant| No Comments | 

Reminder to self. Never set the permission of the /

Posted by kusno mudiarto at July 24th, 2008

In a lapse of judgment, I set my hard drive permission to disable readonly for all user, except myself & admin (Using hard drive get info – sharing & permission ). The reasoning was because I can see my root when I enable wireless sharing.

It turned out to be a very bad decision though, my computer won’t boot up anymore. Luckily, I found some helps in the internet.

* first go into single user mode (by pressing command-s during bootup
* mount -a
* mount -uw
* chmod 755 /
* halt

and then restart your computer.

I hope it will fix your problem.

Tags:

Bookmark and Share

Posted in idea / rant| No Comments | 

batch file rename in mac

Posted by kusno mudiarto at July 23rd, 2008

I am missing batch renaming functionality that I used to have in windows -> “ren *.xxx *.xxx.orig” in my macbook. But using utility “mmv”, I finally can do the same in mac & windows.

You can download the utility from here :

http://www.joel.lopes-da-silva.com/articles/computer-science-technology/62-tips-tricks/79-mmv-under-mac-os-x-leopard-for-mac-intel.html

some example usage :

http://debaday.debian.net/2007/06/13/mmv-mass-moving-and-renaming-files/

Tags:

Bookmark and Share

Posted in idea / rant| No Comments | 

IPhone simulator breakpoints problem

Posted by kusno mudiarto at June 12th, 2008

Sometimes I got problem settings breakpoints. I found this solution in apple discussions:
x
As saggymac said:
“The default setting for debugging libraries and frameworks is Load Symbols Lazily. On occasion this causes breakpoints to not be hit. Turning off this setting makes it take longer to start debugging, but hits breakpoints more reliably.”
may be you should set this option OFF… (XCode-Preferences-Debugging)

Tags:

Bookmark and Share

Posted in idea / rant| 2 Comments | 

Objective-C simple command line program and compilation

Posted by kusno mudiarto at June 4th, 2008

I am trying to compile a simple command line for experiment, and it is somehow not as obvious as I thought.

Here is a the very simple program I copied somewhere from internet

#import <Foundation/foundation.h>

int main( int argc, const char* argv[])
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

  NSObject *object = [[NSObject alloc] init];
  NSLog(@"Created Object: %@", object);

  [pool release];
  return 0;
}

and here is how to compile it :

gcc main.m -o main -ObjC -framework Foundation

setting “-framework Foundation” is the one that threw me off. I couldn’t find it anywhere !

Tags:

Bookmark and Share

Posted in idea / rant| 1 Comment | 

My os x nginx configuration

Posted by kusno mudiarto at June 2nd, 2008

First, to install nginx do this :

sudo port install nginx

then use this configuration – this is only for testing, with setting for my os x (for access log / pids). It also use proxy to merb

# nginx using macports installation
# for my local testing
user kusno staff;
worker_processes  1;

pid /opt/local/var/run/nginx.pid;
error_log  /opt/local/var/log/nginx/error.log  info;

events {
    worker_connections  16;
}

http {
  include        etc/nginx/mime.types;
  default_type   application/octet-stream;
  access_log /opt/local/var/log/nginx/access.log;
  sendfile        on;
  #tcp_nopush     on;
  keepalive_timeout  65;
  tcp_nodelay        on;
  gzip  on;
  gzip_min_length  1100;
  gzip_buffers     4 8k;
  gzip_types       text/plain;
  client_max_body_size 100m;

  upstream merb {
    server 127.0.0.1:4000;
  }

  server {
    listen       80;
    server_name  localhost;

    root /Users/kusno/ezify/public;

    index  index.html index.htm;

    location / {
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect false;
      #if (-f $request_filename/index.html) {
      #  rewrite (.*) $1/index.html break;
      #}
      #if (-f $request_filename.html) {
      #  rewrite (.*) $1.html break;
      #}
      if (-f $request_filename) {
        rewrite (.*) $1 break;
      }
      if (!-f $request_filename) {
        proxy_pass http://merb;
        break;
      }
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
  }
}

use this to restart nginx :

sudo launchctl stop org.macports.nginx
sudo launchctl start org.macports.nginx

Tags:

Bookmark and Share

Posted in idea / rant| 1 Comment | 

Next Postings »