Sunday, March 11, 2012

The chown command equivalent in Windows 7

As 'su - chown' does not work in Cygwin, there is a alternative in Windows 7.
Log in as the user the files should be changed TO and run Command Prompt as administrator.
Run the follow command (or similar one with different parameter combination)

> takeown /F <directory name> /R

Friday, March 9, 2012

Black screen on simulator for iPad retina using cocos2d

I am excited to see that iPad has a retina display. As I am developing my first iPhone/iPad game (universal application) using cocos2d 1.0.1, I updated my Xcode to 4.3.1 to see if my code still works on the new device display.

It showed a black screen.  Nothing displayed.  But the code seems to be running and responding to touch events.  I did not know what happened so I started to search on the web.  I found one posting on cocos2d-iphone forum started a day ago was discussing exactly the same problem.  I read every post and experimented all the proposed solutions.  I don't think it is anything to do with '-hd' image files, as the sample cocos2d HelloWorld did not work in iPad retina display either. But apparently lowering the resolution makes everything work again.  I noticed one member mentioned something particularly interesting, which was about the call to

gluPerspective() in CCDirectorIOS -setProjection()

The call stack is
enableRetinaDisplay => setContentScaleFactor => setProjection, as enableRetinaDisplay is the center of the discussion.

I found that switching to the commented code one line before the now in-use code in CCDirectorIOS makes my code work again in all the simulators.  I posted it to the thread. But here is the complete posting.  Hope this helps you as well.


I was following DonomaGames's post on gluPerspective() (CCDirectorIOS line 212-213).  Line 212 was commented out and replaced with line 213,

gluPerspective(60, (GLfloat)size.width/size.height, 0.5f, 1500);

which has zFar as 1500.  I did a calculation using the formula on 212, zNear=zeye-height/2, zFar=zeye+height/2. On iPad retina, the zFar value is 2794.707275.  It is larger than 1500. The rendering may be clipped off.

For comparison I computed the whole four types.

TypezNear  zFar
iPhone SD   175655
iPhone HD  3501310
iPad SD3731397
iPad HD7462794

Given that, I changed line 212 in CCDirectorIOS.m to
gluPerspective(60, (GLfloat)size.width/size.height, 0.5f, 2800);
It worked for iPad retina simulator.

I also tried the following code and worked also.

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad &&
    [[UIScreen mainScreen] scale] > 1.0 )
{
    gluPerspective(60, (GLfloat)size.width/size.height, zeye-size.height/2, zeye+size.height/2 );
} else {
    gluPerspective(60, (GLfloat)size.width/size.height, 0.5f, 1500);
}

This combines the original 212 and 213 code.

Monday, March 5, 2012

Hostname on Mac OS X

If the dynamic hostname is provided by DHCP, and you prefer a fixed one, there are a few ways to do it.

From System Preferences/Network

  • Select the network adapter which interfaces the DHCP server.
  • Click on the "Advanced" button on the lower right.
  • In the TCP/IP tab, specify the "DHCP client ID" text field.
Or depending on the version of Mac OS:

-- Mac OS X 10.5 and older
On Mac, the hostname shown on the terminal prompt is configured by the file,
/etc/hostconfig. If it is specified as
HOSTNAME=-AUTOMATIC-,
the name shown in the prompt is provided by DHCP or BootP server.

Change that line to
HOSTNAME=(preferred-name)

-- Mac OS X 10.6 and newer
Use the command scutil (system configuration utility)
scutil --set HostName (preferred-name)

Remember to check the name set in
/Library/Preferences/SystemConfiguration/preferences.plist,
under System/System/ComputerName

Thursday, February 23, 2012

Modify grapeConfig.xml to speed up groovy script with @Grab

I had a post on speed up groovy script startup time if Grape @Grab annotation is used in the script.
The cause is described in this post, http://swainya.blogspot.com/2011/09/skip-download-when-groovy-code.html.

The solution described in that post is to add one line in the .groovy/grapeConfig.xml to decrease cache TTL.  Add

<property name="ivy.cache.ttl.default" value="15m"/>

in the <ivysettings> section.

Your grapeConfig.xml will look like this after adding that line


<ivysettings>
  <property name="ivy.cache.ttl.default" value="15m"/>
  <settings defaultResolver="downloadGrapes"/>
......

Friday, January 13, 2012

Show user Library folder in Finder

Since moved to MacOS Lion (10.7.x), the folder Library disappeared from my Finder window.  It bothers me a lot.  Apparently Apple hides it in this OS release.   Here is the way to reveal it.

From console terminal, use this command.

$ chflags nohidden ~/Library/

Friday, December 30, 2011

Comment out multiple lines in vi

Press Ctrl-v to start a VISUAL BLOCK
Move the cursor (up/down arrow key) to expand the block
Press I (Shift-i) to start insert.
Type in the character(s) that you want to insert, such as #, or //.
Press ESC to leave the visual block.

Tuesday, December 6, 2011

Global search in vi and list results

We use the simple command to search a pattern (or a fragment of text),

:/{pattern}

Sometimes, there would be a few dozens of matches that you want to list and browse quickly.  Use this command,

:g/{pattern}

It lists the search results in one buffer.  If you want to search the pattern case insensitive, add \c in the command, like

:g/\c{pattern}