Set ubuntu as Mac AFP&TimeMachine server with netatalk 3.05

准备使用netatalk在Ubuntu Server上搭建支持TimeMachine备份的文件服务器,查了一下netatalk新的版本已经不需要avahi了,不过apt-get获取的netatalk还是老版本的,so,下载源码编译安装

首先安装依赖

sudo apt-get install libssl-dev libgcrypt11-dev libkrb5-dev \
    libpam0g-dev libwrap0-dev libdb-dev libavahi-client-dev \
    libacl1-dev libldap2-dev libcrack2-dev systemtap-sdt-dev \
    libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libevent-dev

下载解压netatalk3.0.5源码

wget http://softlayer-dal.dl.sourceforge.net/project/netatalk/netatalk/3.0.5/netatalk-3.0.5.tar.bz2
tar xvf netatalk-3.0.5.tar.bz2 
cd netatalk-3.0.5/

Read More

Update: Android.mk 中的 LOCAL_SRC_FILES, LOCAL_C_INCLUDES

我在先前的两篇post
编写Android.mk中的LOCAL_SRC_FILES的终极技巧

编写 android.mk 中 LOCAL_C_INCLUDES 的技巧

中提到了一些编译android.mk文件的技巧, 由于都涉及到了shell命令, 导致不能完全在windows下工作, 下面我使用纯净的makefile语法重新编写了脚本

# 配置自己的源文件目录和源文件后缀名
MY_FILES_PATH  :=  $(LOCAL_PATH) \
                   $(LOCAL_PATH)/../../Classes

MY_FILES_SUFFIX := %.cpp %.c

# 递归遍历目录下的所有的文件
rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))

# 获取相应的源文件
MY_ALL_FILES := $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*.*) ) 
MY_ALL_FILES := $(MY_ALL_FILES:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%)
MY_SRC_LIST  := $(filter $(MY_FILES_SUFFIX),$(MY_ALL_FILES)) 
MY_SRC_LIST  := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)

# 去除字串的重复单词
define uniq =
  $(eval seen :=)
  $(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_)))
  ${seen}
endef

# 递归遍历获取所有目录
MY_ALL_DIRS := $(dir $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*/) ) )
MY_ALL_DIRS := $(call uniq,$(MY_ALL_DIRS))

# 赋值给NDK编译系统
LOCAL_SRC_FILES  := $(MY_SRC_LIST)
LOCAL_C_INCLUDES := $(MY_ALL_DIRS)

完全使用makefile语法编写, 可以工作在所有平台上

我已经在cocos2d-x中提交了一个pull request https://github.com/cocos2d/cocos2d-x/pull/3921, 希望能被集成到cocos2d-x的代码库中, 以后使用就不需要自己修改了

自定义xcode代码提示的风格

网上有个图片:

我喜欢左边的风格, 很不幸xcode默认的代码提示自动完成都是右边风格的, 修改它一下
用文本编辑工具打开文件:
/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/SystemCodeSnippets.codesnippets

可以看到里面是xcode预定义的自动完成代码, 找到要修改的{地方, 比如

<string>class &lt;#class name#&gt; {
  &lt;#instance variables#&gt;

public:
  &lt;#member functions#&gt;
};</string>

很明显这是定义一个C++类, 在{后面添加一个回车修改成

<string>class &lt;#class name#&gt; 
{
  &lt;#instance variables#&gt;

public:
  &lt;#member functions#&gt;
};</string>

依次修改需要的地方,保存,重新启动xcode, 收工.