推开窗户看世界 — Objective-C之外

引子

App Store 如今正风靡世界,许多人都想尝试去自己开发一个 iOS App,不过苹果官方推荐使用的是 Objective-C 这个语言。而 Objective-C 与 C、Java 之类的语言风格差异有些大,短时间并不容易掌握,又或者许多人只是想尝试开发一个可以运行在 iOS 上的程序而已,不想再去额外去学一门新的语言,那这个时候就可以考虑另外的一些技术来开发 iOS App。

在移动开发领域,得益于现在手机的性能越来越好,浏览器的功能越来越强大,JavaScript 也成为一门很流行的程序开发语言,而对应到 iOS 平台上,也有多种使用 JavaScript 来开发 iOS App 的技术。这次要介绍的三种技术之中,就有两种使用了 JavaScript。

另外,许多开发跨平台移动应用开发的解决方案,首选要支持的就是 iOS,因此在 iOS 这个平台上可以看到很多种不使用 Objective-C 去开发 iOS App 的技术,而且其中技术所编写出来的程序,除了可以在 iOS 上运行之外,还可以运行在 Android 以及其他系统平台上。能少写一份代码,何乐而不为呢~

不使用 Objective-C

这次要介绍的是三个不使用 …

阅读全文 »

使用 node.js + nginx 建设网站

昨天搞定了一个小网站的搭建,用了 node.js,另外为了能在一个 VPS 上搭建多个网站,用了 nginx 作为反向代理。

软件介绍

嗯,从维基上复制了一下~

node.js

Node.js是一个事件驱动I/O伺服端JavaScript环境,基于V8。目的是为了提供撰写可扩充网络程式,如web服务。第一个版本由Ryan Dahl于2009年释出,后来,Joyent雇用了Dahl,并协助发展Node.js。

nginx

nginx(发音同engine x)是一款由俄罗斯程序员Igor Sysoev所开发轻量级的网页服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。

cluster

在 node.js 0.6.0 之前,有一个第三方的 node.js 模块 cluster,用来进行多核服务器上运行 node.js,以及提供扩展的支持。但是在 node.js 0.6.0 之后,node.js 本身就提供了 cluster 的支持,另外,第三方的 cluster 也与 node.js 0.6 有兼容性问题。目前 node.js 的稳定版本是 0.6.5,因此需要使用原生的 cluster 来代替第三方的 cluster。

幸好内置的 cluster 也足够简单,如果只是为了多核负载均衡,以及支持即时服务重启的话,只需要写一点的代码就可以完成这些功能了。

server.js

var path = require('path');
var 


阅读全文 »

iOS App 自定义 URL Scheme 设计

在 iOS 里,程序之间都是相互隔离,目前并没有一个有效的方式来做程序间通信,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个程序。

例如在 iPad 上浏览网页,并且 iPad 已经安装了 淘宝 HD,那么就打开下面这个链接就会在淘宝 HD 中查看这个商品的详细信息,也可以方便的使用淘宝 HD 进行购买、收藏等操作。

在淘宝 HD 中查看商品“2012西藏卓明谷方舟登舰卡(船票)”

当然,如果你在 Mac OS X 中打开这个链接,或者在没有安装 淘宝 HD 的 iPad 中打开这个链接,会提示没有程序来打开这个链接。

配置

要为 iOS 程序添加自定义协议的支持是一件很方便的事,只需要在程序的 Info.plist 添加一个 URL types 节点就可以了。在这个节点里,可以设置这个程序所支持的自定义协议名称,像 http、ftp 这种,一般我们可以设置为程序英文名称,像淘宝客户端中就设置了 taobao,这样 taobao:// 这个形式的 URL 就会关联到淘宝客户端的 …

阅读全文 »

一个路由器,两种网络,VPN和下载两不误

最近在用 Titanium 写一个 Twitter 客户端,因为要用到 OAuth 认证,所以就在手机连接 VPN,但是速度比较慢。刚好想在家里的路由器上加上 OpenVPN,昨天就折腾了一下。

在家里路由器上加上 OpenVPN 的一个主要问题是,家里的网络中还有下载机,而下载的流量是不想通过 VPN 去传输的。虽然 chnroutes 项目的路由表可以让国内的 IP 走直连,国外的 IP 走 VPN,但是 eMule 或者 BT 下载时,难免会连接到国外的用户或者服务器,这个时候也不想去浪费 VPN 的流量。

因为这些,我的想法是在路由器上做判断,如果是从下载机过来流量,就通过直接连接,如果其他机器,例如笔记本,就根据目标 IP 来判断是通过直接连接还是 VPN 来传输。

下载机是通过 LAN 连接到路由器的,本来想按进入流量的设备来判断是否为下载机,后来发现实现比较麻烦,就决定按流量来源 IP 来判断是否为下载机的数据。

准备工作

  • 运行 dd-wrt 的路由器一个,要带有 OpenVPN
  • OpenVPN 服务器一个,认证方式选择证书认证
  • Linux 知识若干

当然 dd-wrt 并不是必须的,也可以是 openwrt …

阅读全文 »

淘宝 for iOS 历程

这是在 [淘宝2011技术嘉年华](http://developerclub.taobao.com/) 上讲的关于淘宝 for iOS 开发过程的演示文稿。

View more presentations from ohdarling88.

--- EOF ---…

阅读全文 »

My Book Live 评测

早上到手,开箱照见 My Book Live 开箱照

之前做过 DS211j 的性能评测,这次也主要做一些传输性能的评测,另外加一些功能介绍。

在很早之前,就关注过西数的 My Book 系列,My Book World Edition 也是带网络接口的,不过价格相对较高,而且性能也是很强,性价比不高。前段时间在 Hi!PDA 看到别人发的 My Book Live 介绍之后就看了一下,目前的价格降到合适的位置,刚好下载机的硬盘坏了,就入手了一个 My Book Live。

基本信息

型号:WDBACG0010HCH-SESN

内核:

Linux MyBookLive 2.6.32.11-svn22400 #2 Fri Apr 15 11:08:36 PDT 2011 ppc GNU/Linux

CPU 和 内存:

MyBookLive:~# cat /proc/cpuinfo 
processor   : 


阅读全文 »

WD My Book Live 开箱照

下载机的硬盘快挂了,MSS 是很老的东西,再买块硬盘挂上也不爽,刚好最近看到西数的 My Book Live,配置还不错,刚好入一个当下载机。

不过买了之后才想到,我已经有 DS211j,也可以当下载机⋯⋯不过 My Book Live 配置还不错,可以同时挂更多任务了。

--- EOF ---

给 iOS 项目添加自动更新属性

在 iOS 项目中,有些时候为了方便跟踪发布时的版本,方便调试,或者为了展示程序的编译日期,可以通过在 Info.plist 里面添加自定义属性的方式来实现,但是这个工作是一个纯粹机械的重复劳动,每次手工去更新是比较麻烦的一个事情。

好在 Xcode 项目支持自定义脚本的编译步骤,我们可以通过在编译过程中使用自定义脚本去更新 Info.plist。

在 /usr/libexec 目录下面,有一个工具 PlistBuddy,它可以很方便地修改 plist 文件,而不需要去用 sed 之类的编辑工具来修改。

为了在使用 PlistBuddy 的时候可以直接用 Set 命令设置属性,我们先在 iOS 项目的 Info.plist 里面加一个需要自动更新的属性,例如 BUILD_DATE 和 GIT_REVISION,类型选择为字符串,值填 AUTO_GENERATED。

然后在 iOS 项目的 Target 上添加一个新的编译步骤 Run Script Build Phase:

下页就是要编写脚本了

# 获取编译的日期
DATE=`date +%Y.%m.%d`

# 获取编译时 Git 库的短版本号
GIT_REVISION=`git rev-parse 


阅读全文 »

HostsManager for Mac OS X v0.4.2 Released

更新日志

HostsManager for Mac OS X v0.4.2 更新

  • 修正在 Mac OS X Lion 下启动失败的bug
  • 在 Mac 系统中,使用 \n 作为 hosts 文件的行分隔符

下载

HostsManager for Mac OS X v0.4.2

注意: 此次仅更新 Mac OS X 版本,HostsManager for Windows 版本没有更新

路由器 DIY,加装液晶屏

嗯,这算是一个帖子引发的血案。之前在逛恩山的时候,看到一个帖子,《给tp-link wr941n增加一个液晶屏,散热片和USB口》,这就跨上了改造路由器的不归路。

先秀一下最终改造结果:

需要说明的是,改造路由器加装液晶屏,只能算是一个玩票的行为,实际意义不是特别大,成本相对路由器来说,也不低,所以只推荐喜欢折腾的人玩。

另外,这篇文章只介绍怎么去加装液晶屏,不涉及到加装 USB 口。

准备材料

要改造路由器,首先就需要去准备一个路由器,一般的路由器可不行。为了能在液晶屏是显示内容,需要有程序去控制液晶屏,而一般的路由器是不能运行自己的程序的,这就需要路由器可以刷机,可以刷 dd-wrt 或者 openwrt 等等的都可以。

我用的路由器是迅捷 fw300r,实惠,京东的价格在79左右浮动,比较便宜的另外一个好处就是折腾坏了不心疼,这篇文章的内容也是以 fw300r 为基础而写。我买的 fw300r 是 v2 版本,配置为 4M Flash 和 32M RAM。

加装液晶屏,再需要的当然就是液晶屏了。我这里选择的是 12864 液晶,分辨率是 128x64。

需要注意的是,一般买到的 12864 的接口都是并行或者SPI,并不能直接连接在路由器上使用。因此,在选购液晶的时候,要注意选择带 TTL 或者 UART 支持的,要不然还得加个单片机在路由器和液晶屏之间。如果是在淘宝上购买,可以找串口支持的 12864 液晶,但是特别注意,SPI 串口不是我们这里要用的串口,最好和卖家沟通之后再买。

液晶屏的电压也需要注意,路由器的 TTL 针脚一般也带电源输出,但是电压只有 3.3v,如果选购的液晶屏驱动电压是 5v 的话,那就需要安装额外的电源了。

液晶屏建议选择小屏,路由器本身体积不大,如果选择大屏的话,有可能装不下,要把液晶屏放在外面。

另外,路由器上需要加装 …

阅读全文 »