SublimeText3中Python UnicodeEncodeError问题解决

Tags

, ,

在用SublimeText3写Python3的一个简单的Crawler时出现了UnicodeEncodeError错误,仔细查看错误信息发现是获取到的内容含有Unicode编码字符导致的。然而纳闷的是Python3默认就是utf-8编码,试着在控制台中执行,结果果然是正常的。
那么问题就很显然了:SublimeText的build system没有正确设置编码。将.sublime-build文件改为如下:

{
    "cmd": ["python3", "-u", "$file"],
    "file_regex": "^[ ]*File "(...*?)", line ([0-9]*)",
    "selector": "source.python",
    "encoding": "utf8",
    "path": "/Library/Frameworks/Python.framework/Versions/3.4/bin/",
    "env": {"LANG": "en_US.UTF-8", "PYTHONIOENCODING": "UTF-8"}
}

OK,问题解决

iTunes查找歌词的AppleScript

Tags

,

每次iTunes查找歌词好麻烦,写了个AppleScript脚本节省时间,作用是复制当前歌曲名并在特定网站搜索:

tell application "iTunes"
    if player state is playing then
        set myTrack to current track
    end if
end tell

set songName to name of myTrack
set searchURL to "http://www.kasi-time.com/allsearch.php?q=" & songName

tell application "Google Chrome"
    activate
    open location searchURL
end tell

配合Alfred的Workflow简直不能更方便

realm使用小记

Tags

,

最近一个小iOS项目可能会需要Local Storage,需求非常简单的那种,也几乎不存在扩展、升级问题,于是有时间试了试各种方法,最终发现了一个很有趣的东西
官方介绍是这么说的

Realm is a mobile database: a replacement for SQLite & Core Data
Realm can save you thousands of lines of code & weeks of work,
and lets you craft amazing new user experiences.

主页上就有Java/Objective-C/Swift的实例代码,下载下来安装编译运行确实十分easy。

不过使用过程中遇到了一点小问题,在swift的实体类声明时忘了在字段前面加dynamic描述,结果看上去能work,数据库里也确实存放了正确的内容,Fetch操作正常执行,结果数量正确,但是对象各个字段却是空,后来发现加上dynamic就正常了。查了一下,发现dynamic是要告诉swift编译器不要自作主张给字段加Getter和Setter,这些工作之后会被我们自己处理。实际上dynamic描述在CoreData的模型类中也有使用。
难怪Java和Objective-C的实体类只需要简单的声明就好了,而swift由于太过“聪明”反而需要修饰一下,告诉他不要做多余的工作,233。

Bash Shell批量zip脚本

Tags

, , ,

突然发现平时不怎么用Shell脚本,最多也是改改现成别人写好的。今天有个需求,要将一个目录下的所有目录分别压缩成ZIP,用脚本再合适不过了,记下来:

for f in *; do zip -r "$f" "$f"; done

如果不包括当前目录下的文件,可以改成这样:

for d in */ ; do
    # Do some thing
done

PS,别用ls列文件名,空格烦死你