今天小百合十大的前三条是这样的:
第二条的内容是这样的:
从拿到 iPhone 的第一天起,我就在不断地寻找好用的 RPN 计算器。我的要求是
![]()
我一直使用的都是一个 HP i41CX 模拟器。它基本符合第一条,但是不符合第二条:它的堆栈只有四层,而且最顶层还就是你正在输入的这个。不过它非常非常得符合第三条,看看这个计算器的像板砖一样的手册就知道了。这个计算器也有一些不便,它实在是太复杂了。比如他默认的键盘配置上没有切换弧度和角度的键。键绑定是可以设的,但是我一直没有搞明白怎么设… 同样因为这个原因,我一直不知道怎么算双曲三角函数。其他的 RPN 计算器要不就是操作方式诡异,要不就是功能太少。所以昨天我终于决定自己写一个计算器。
奋斗了两天以后把四则运算都搞定了… -_- 在 iPhone 上开发程序还是很方便的,和在 Mac 上差不多,熟练了以后写界面用不了太多的时间,而且 Interface Builder 做 prototyping 也非常得爽。我的时间主要都浪费在用 UITableView 显示一个堆栈上。UITableView 就是一个和菜单差不多的可选择的列表,几乎每一个 iPhone 程序里都能看到。但是这个东西必须要有一个符合某种特定协议的数据源… 我曾经一度都想自己用 label 和 UIScrollView 实现一个这种列表了… 不过最后搞定以后发现这个东西还是挺爽的,并且附赠动画效果~~
在 iPhone 上开发程序需要花 $99 买一个许可证。… … …… 噢,不对,说错了,是苹果声称你需要买一个,实际上你不需要。免费开发程序的代价就是开发出来的程序只能在 jailbreak 过的 iPhone 上运行。当然这其实没什么,因为各种迹象表明,没有 jailbreak 过的 iPhone 的使用价值其实就和一个板砖差不多。默认情况下,如果你没买这个许可证,Xcode 是不会让你把程序往 iPhone 上传的,只能在模拟器里运行。要想在 iPhone 里运行,
ldid,这一节貌似没什么用,我从来没有成功的运行过 ldid,不过我还是做了。关于调试,在开始使用 Linux 之后,我就再也没有使用过任何调试器,只使用 printf(及各种语言里的等效的函数)。Objective-c 里是有 printf 的,但是比较方便的做法是使用 NSLog()。运行的时候在 Xcode 里选择 Run -> Console,可以看到输出。顺便提一下,Objective-c 的标准库还是很牛逼的,嗯,NSString, NSNumber, NSArray, …
今天好好看了一下 ConTeXt 的新文档 co-fonts,然后把平时常用的字体都写成 typescript 放到 texmf-local 里。这样以后写作业就不会出现字体定义比文档内容还长的情况了-_-…
首先定义几个 feature sets
\definefontfeature[latin-smallcaps][smallcaps][script=latn]
\definefontfeature
[fancy]
[language=dflt, script=latn, method=node, pnum=yes, onum=no,
kern=yes, liga=yes, dlig=no, zero=no, tlig=yes, trep=yes,
protrusion=quality, expansion=quality, mapping=tex-text]然后定义单个字体的 typescript
\starttypescript[myCaslon] \definefontsynonym[proserif][name:ACaslonPro-Regular] \definefontsynonym[proserifit][name:ACaslonPro-Italic] \definefontsynonym[proserifbf][name:ACaslonPro-Bold] \definefontsynonym[proserifbi][name:ACaslonPro-BoldItalic] \definefontsynonym[Serif][proserif][features=fancy] \definefontsynonym[SerifItalic][proserifit][features=fancy] \definefontsynonym[SerifBold][proserifbf][features=fancy] \definefontsynonym[SerifBoldItalic][proserifbi][features=fancy] \definefontsynonym[SerifCaps][Serif][features=latin-smallcaps] \stoptypescript \starttypescript[myPalatino] \definefontsynonym[palarm][name:PalatinoLTStd-Roman] \definefontsynonym[palait][name:PalatinoLTStd-Italic] \definefontsynonym[palabf][name:PalatinoLTStd-Bold] \definefontsynonym[palabi][name:PalatinoLTStd-BoldItalic] \definefontsynonym[Serif][palarm][features=fancy] \definefontsynonym[SerifItalic][palait][features=fancy] \definefontsynonym[SerifBold][palabf][features=fancy] \definefontsynonym[SerifBoldItalic][palabi][features=fancy] \definefontsynonym[SerifCaps][Serif][features=latin-smallcaps] \stoptypescript \starttypescript[myOptima] \definefontsynonym[prosans][name:OptimaLTStd] \definefontsynonym[prosansit][name:OptimaLTStd-Italic] \definefontsynonym[prosansbf][name:OptimaLTStd-Bold] \definefontsynonym[prosansbi][name:OptimaLTStd-BoldItalic] \definefontsynonym[Sans][prosans][features=fancy] \definefontsynonym[SansItalic][prosansit][features=fancy] \definefontsynonym[SansBold][prosansbf][features=fancy] \definefontsynonym[SansBoldItalic][prosansbi][features=fancy] \definefontsynonym[SansCaps][Sans][features=latin-smallcaps] \stoptypescript \starttypescript[myFutura] \definefontsynonym[prosans][name:FuturaStd-Medium] \definefontsynonym[prosansit][name:FuturaStd-MediumOblique] \definefontsynonym[prosansbf][name:FuturaStd-Bold] \definefontsynonym[prosansbi][name:FuturaStd-BoldOblique] \definefontsynonym[Sans][prosans][features=fancy] \definefontsynonym[SansItalic][prosansit][features=fancy] \definefontsynonym[SansBold][prosansbf][features=fancy] \definefontsynonym[SansBoldItalic][prosansbi][features=fancy] \definefontsynonym[SansCaps][Sans][features=latin-smallcaps] \stoptypescript \starttypescript[myMyriad] \definefontsynonym[prosans][name:MyriadPro-Regular] \definefontsynonym[prosansit][name:MyriadPro-It] \definefontsynonym[prosansbf][name:MyriadPro-Bold] \definefontsynonym[prosansbi][name:MyriadPro-BoldIt] \definefontsynonym[Sans][prosans][features=fancy] \definefontsynonym[SansItalic][prosansit][features=fancy] \definefontsynonym[SansBold][prosansbf][features=fancy] \definefontsynonym[SansBoldItalic][prosansbi][features=fancy] % No smallcaps % \definefontsynonym[SansCaps][Sans][features=latin-smallcaps] \stoptypescript \starttypescript[myMonaco] \definefontsynonym[promono][name:Monaco_Linux] \definefontsynonym[Mono][promono][features=default] \stoptypescript
把 ConTeXt Minimals 自带的 px-math 也定义一个
% The internal px-math \starttypescript[myPxMath] \loadfontgoodies[px-math] \definefontsynonym[MathRoman][pxmath@px-math] \stoptypescript
最后写几个常用组合
\starttypescript[PalatinoOptima] \usetypescript[myPalatino] \usetypescript[myOptima] \usetypescript[myMonaco] \usetypescript[myPxMath] \definetypeface[PalatinoOptima][rm][serif][myPalatino][default] \definetypeface[PalatinoOptima][ss][sans][myOptima][default] \definetypeface[PalatinoOptima][tt][mono][myMonaco][default][rscale=0.8] \definetypeface[PalatinoOptima][mm][math][myPxMath][default] \stoptypescript \starttypescript[PalatinoMyriad] \usetypescript[myPalatino] \usetypescript[myMyriad] \usetypescript[myMonaco] \usetypescript[myPxMath] \definetypeface[PalatinoMyriad][rm][serif][myPalatino][default] \definetypeface[PalatinoMyriad][ss][sans][myMyriad][default] \definetypeface[PalatinoMyriad][tt][mono][myMonaco][default][rscale=0.8] \definetypeface[PalatinoMyriad][mm][math][myPxMath][default] \stoptypescript \starttypescript[CaslonMyriad] \usetypescript[myCaslon] \usetypescript[myMyriad] \usetypescript[myMonaco] \usetypescript[myPxMath] \definetypeface[CaslonMyriad][rm][serif][myCaslon][default] \definetypeface[CaslonMyriad][ss][sans][myMyriad][default] \definetypeface[CaslonMyriad][tt][mono][myMonaco][default][rscale=0.8] \stoptypescript
把这些写成一个文件扔到 textmf-local/tex/context/base 里,然后
luatools --generate; context --make。测试:
\input type-mine
\usetypescript[PalatinoOptima]
\setupbodyfont[PalatinoOptima, roman, 12pt]
\setuppapersize[B5][B5]
\setupinterlinespace[line=1.4em]
\starttext
Serif test 1234567890. {\ss Sans test}. {\tt Typewriter test.}
{\it Serif test 1234567890. {\ss Sans test}.}
{\bf Serif test 1234567890. {\ss Sans test}.}
$M_{ath} \times t^{est} = 1234567890.$ \placeformula
\startformula
\widetilde{G}(\vec k, \omega) = \int_{-\infty}^{+\infty} e^{i(\vec
k\cdot \vec x - \omega t)} G(\vec x, t)\, {\rm d}^3 \vec x\, {\rm d}t
\stopformula
\stoptext效果如图
| Palatino | Caslon |
今天需要排一个带 Scheme 代码的文档,里面还有点数学公式,所以决定用 ConTeXt。正好前几天 Steamedfish 同学跟我说过 ConTeXt 可以读取 Vim 的语法加亮,决定看一看。
Google 了一下之后发现 ConTeXt 是使用一个叫做 t-vim 的 module 来干这件事的,我使用的 ConTeXt 发行是 ConTeXt Minimal,于是进入 ConTeXt 的安装目录,更新
./first-setup.sh --extras=t-vim
然后随便排了一个代码。ConTeXt 报错
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Mar 8 2010 22:56:09) Garbage after option argument: "-u NONE -e -C -n -c "set tabstop=8" -c "syntax on" -c "set syntax=scheme" -c "let contextstartline=1" -c "let contextstopline=0" -c "source 2context.vim" -c "wqa" "009-vimsyntax.tmp" "
哭了… 这不是要整死我这个 Vim 白痴么… 经过无穷多小时的 google,我终于认识到“Garbage after option argument”错误表示 Vim 的参数有错… 看来要改 t-vim 的代码了。于是打开 t-vim.tex,一看又哭了… 一个 macro 都不认识,这不是要整死我这个 TeX 白痴么… 经过 3000+ ms 的搜索,我终于认识到问题出在 t-vim.tex 的第 344 行:
330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 | {\executesystemcommand {mtxrun --verbose --noquote bin:vim "-u NONE % No need to read unnessary configurations -e % run in ex mode -C % Set compatibile -n % No swap % -V10log % For debugging only, will go away later. -c \shellescapedquote set tabstop=\@@vstab \shellescapedquote\space -c \shellescapedquote syntax on\shellescapedquote\space -c \shellescapedquote set syntax=\@@vssyntax\shellescapedquote\space -c \shellescapedquote let contextstartline=\@@vsstart\shellescapedquote\space -c \shellescapedquote let contextstopline=\@@vsstop\shellescapedquote \space -c \shellescapedquote source kpse:2context.vim\shellescapedquote\space -c \shellescapedquote wqa\shellescapedquote\space \shellescapedquote#1\shellescapedquote\space "}} |
Macro \shellescapedquote 后面的 \space 会在文件名(#1)的后面加上一个空格。而 mtxrun 会把这个空格当作参数的一部分??!!!于是 vim 就会收到一个很诡异的参数而报错。所以我首先想到的解决方法就是把最后那个 \space 去掉。然后发现编译时最后的那个引号(\shellescapedquote)居然就没了,还是出错… 于是我怒了,毅然决定把 mtxrun 换成无敌的 Bash。
\def\runvimsyntax#1 {\executesystemcommand {bash -c "vim -u NONE -e -C -n -c \shellescapedquote set tabstop=\@@vstab \shellescapedquote\space -c \shellescapedquote syntax on\shellescapedquote\space -c \shellescapedquote set syntax=\@@vssyntax\shellescapedquote\space -c \shellescapedquote let contextstartline=\@@vsstart\shellescapedquote\space -c \shellescapedquote let contextstopline=\@@vsstop\shellescapedquote \space -c \shellescapedquote source /home/corsair/software/context/tex/texmf-context/tex/context/third/vim/2context.vim\shellescapedquote\space -c \shellescapedquote wqa\shellescapedquote\space \shellescapedquote#1\shellescapedquote\space "}}
宇宙终于又开始正常运行了。
把房间整理了一下,准备过节。【全文】
这几天我给一个同学看我的照片,他听说我用了 PS 以后大喊:“You ruined your photos man! Don’t do it!”
本来我想以中学作文的形式来写这个东西的。写了一半发现没必要,因为有些东西太显然了。所以我决定这么写:
另外
最后
老子就是要 PS,老子就是要狂 PS,老子的 PS 水平巨高,老子能把照片 PS 得巨贱,怎么着吧你~~?
我一直认为我不听流行不是因为我高雅,而是因为流行实在过于低俗。我几乎不听非主流摇滚就是我不高雅的最好佐证。[... full text]
Just bought a Nikon D40 DSLR. Since today I had an exam, I just did one test to it: night shooting in my very dim room.
Shot with the lens in package, under 18mm, aperture-priority, f/3.5, 1/6s, ISO1600. And white-balanced in Photoshop, because I only have two light bubbles that emit yellow white lights. A portion of the 100% image is here. I’m more than satisfied with this photo because
正在 Dev-team 忙着整 3.1 jailbreak 的时候,惊闻某大牛已经搞出了 3.1 和 3.1.2 都能用的 jailbreak,Blackra1n。遂装,成功。然后第一件事就是装了个 MobileTerminal 和 OpenSSH,呵呵。不过 jailbreak 了以后还是不能运行自己写的代码,有两个问题:
第一个问题很好解决,编辑文件 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/SDKSettings.plist,把 CODE_SIGNING_REQUIRED 下面的 YES 改成 NO,然后在 Xcode 里设置项目的 certificate identity 为不需要签名。第二个问题比较麻烦。Cydia 的网站里提到可以在 iPhone 里运行一条命令
sysctl -w security.mac.proc_enforce=0 \ security.mac.vnode_enforce=0
就搞定了。我这里执行以后的确可以运行没有签名的程序了,但是副作用是一旦重启 SpringBoard 就连不上 wifi。不过这个倒是不麻烦,把这两个值都恢复成原来的就行了。其实最好的解决办法是 self-signing。但是我用 codesign 老是出错… 嗯。不废话了,上 pp~~
今天上完电动力学课,我去某指定地点答疑。进去时已经有三个小孩在了。其中两个在激烈讨论(这两个好像都比我大…),还有一个闷头做题。然后我自我介绍说我是 lab TA。过了一会儿,那个闷头做题的过来问一道很弱智的电磁学问题。我想我虽然不是电磁学的 TA,但是应付一下也是没问题的,于是就看题目。题目是这样的
两个电荷都是 -q 相距 10cm。求空间中总电场为零的点。
于是我就很认真的告诉那个小孩,设两电荷之间的一点,距其中一个电荷为 r。这点的总电场为两个电荷的电场之和
也就是
,鉴于这是两个平方之和,所以
,所以这道题出错了。
下午上数理的时候才反应过来,下课后想去找该小孩,未遂。
郑重告诫各位,刚上完电动量子广相或场论之后不宜思考。思考必死。