The installation directory of Apple's IDE, Xcode, moved from /Developer to /Applications starting version 4.3.1. It caused some glitches for tools, such as xcodebuild, if invoked as a command-line utility.
To point it to the new installation base, use
sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/
Verify the change with
/usr/bin/xcode-select -print-path
Monday, March 26, 2012
Monday, March 19, 2012
Examine multiple files in command less
To change to the next file after opening multiple files simultaneously in 'less' command, use this command
:n
And to change to the previous file, use
:p
The instruction should also be available from the man page.
:n
And to change to the previous file, use
:p
The instruction should also be available from the man page.
Sunday, March 11, 2012
Create symbolic links in Windows 7
I was running XAMPP on Windows 7 and tried to use symbolic link point to the folders with PHP code. The soft link created in Cygwin (ln -s <directory> <link-name>) did not seem to be recognized by Apache. I found I need to use native Windows command in the command prompt.
Run Command Prompt as administrator
> MKLINK /D <link-name> <target directory>
secpol.msc via Start or Start → Run.
Open Security Settings → Local Policies → User Rights Assignment
It did not give me the permission to create symbolic link even after I re-log in. I have to run the command as administrator.
Run Command Prompt as administrator
> MKLINK /D <link-name> <target directory>
Note
I tried to use secpol.msc to grant myself with privilege for creating symbolic link.secpol.msc via Start or Start → Run.
Open Security Settings → Local Policies → User Rights Assignment
It did not give me the permission to create symbolic link even after I re-log in. I have to run the command as administrator.
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
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.
| Type | zNear | zFar |
| iPhone SD | 175 | 655 |
| iPhone HD | 350 | 1310 |
| iPad SD | 373 | 1397 |
| iPad HD | 746 | 2794 |
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
-- 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
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.
-- 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"/>
......
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"/>
......
Subscribe to:
Posts (Atom)