Sep 30
这是以前写的 texpng 程序的图形界面版,我把以前的 texpng.py 改写了一下(这是好听的说法,其实是剪切粘贴了一下),把转换过程抽象了一下,方便在图形界面里调用。和 texpng.py 一样,这个东西需要一个正常的 LaTeX 系统、dvipng 和 Imagemagick,除此之外,图形库使用了 wxpython。用法就不废话了,GUI 啊同志们… 最后,那三个图标是 oslo 图标集中的,版权属于原作者。
对了,过几天大家可能会看到一个更牛逼的转换 TeX 的程序,不过不是在我这里~~ :-p
最后的最后,说点感想~~
- 在 Linux 下写程序太方便了,感觉 Linux 就是写程序用的~~。这两天狂用了 Mac OS X 之后,隆重宣布:宇宙里最好用的 PC 操作系统是配置好的 Linux~~
- 现在写个图形界面太方便了!这个小破程序是我三个小时攒的…
- 还没想好…
PS:这个程序在运行的的时候会覆盖当前目录下的 temp.png 文件(如果有的话),退出的时候把这个文件删除。
Share This
Sep 27
安上了 MacTeX,这是运行在 Mac OS X 下的基于 TeXLive 的发行版,比 CTeX 还大… 不过像 CTeX 一样,装起来很方便,不用配置,而且一上来就可以排中文~~,不过据我的试验,编码只能为 utf-8,而且可以用的简体字体只有一个 gbsn,这个字体比 M$ 的那个 simsun 好看多了~~。
\\documentclass[12pt]{article}
\\usepackage{CJK}
\\begin{document}
\\begin{CJK}{UTF8}{gbsn}
This is a test. 中文测试。
\\textbf{粗体},\\textit{斜体},\\texttt{等宽字体}\\ldots
\\end{CJK}
\\end{document}

Share This
Sep 26
可能是由于安在 x86 上的缘故,Safari 不太稳定,一打开某些中文网页就崩溃… 真不知道为啥在中国大家都不遵守 HTML 4 和 XHTML 1.0 呢~~~ 于是还是用 Firefox… 但是 Firefox 似乎对 OS X 的 Type1 字体有强烈的不满,不是显示一堆火星文就是显示成脚标/上标状… 搞得我看中文像看公式一样… 后来听说还有个 Camino,也是 Mozilla 的,会好一点,赶快安上,发现确实好一点,基本没有火星文,公式也比较少… 看截图:
 |
 |
Firefox |
Camino |
我想出现这种鸟事是因为 Mozilla 们为了跨平台,搞了自己的字体引擎,不肯使用各操作系统自带的 API,但是对 Type1 支持又不好,不能正确读取字体中的某些信息,于是就出现了火星文和公式…
Share This
Sep 21
Google 了无数次,也找到了一些安装显卡驱动的方法,但在我的机器上就是不管用… 所以到现在还没有硬件加速,这个本来没什么,少一些特效而已,但是发现 OS X 里播放视频是需要硬件加速的…
大概研究了一下 OS X 下的程序,标准的 OS X 程序都是一个名字以 .app 结尾的文件夹,里边一般只有一个文件夹叫 Contents,这个程序的一切都在这个文件夹里,包括图标,配置(有些比较底层的会在 /Library 和 /System 里面放配制)语言文件等等。比较爽的是,OS X 和它里面的程序都是极端脚本化的,不仅配置一律是 xml,而且控件的摆放(!),图片的位置,dock 图标,甚至部分逻辑都是 xml,对于我们这些喜欢没事瞎改的人来说,这样的系统基本上就是天堂了~~。举个简单的例子,无论在什么操作系统里,只要有一个图形界面的文件管理器,你在里面新建一个目录的时候都有一个默认的目录名,比如在 Windows 里叫“新建文件夹”,这是被硬编码的,没有源代码的人改不了;在 OS X 里叫 untitled name,这个可以在 /System/Library/CoreServices/Contents/Resources/English.lproj 中修改,这个 .lproj 是一个语言文件,会被其他的 xml 调用。貌似现在达到这种境界的基本上就只有 wxWindow 了(用 xml 来摆控件)。
OS X 里面是有 python 的,不过是 2.3 版,严重不爽,于是装了一个 2.5(装好以后还要手动做符号连接…),开始考虑有什么程序可以写~~。想了半天,决定写一个批量删除语言文件的东西,把机器里的那些非人类语言都删掉,可以节省数百 MB 的硬盘~~,代码(用法看开头的注释):
#!/usr/bin/env python
#
# Usage:
# kill-lang.py app_list
#
# eg: kill-lang.py mail.app aquamacs.app
# ls -1 | awk '{print "\""$0"\""}' | xargs kill-lang.py
import os
import sys
import re
import shutil
ReservedLang = ["English", "zh_CN"]
if len(sys.argv) == 1:
usage()
sys.exit(1)
def usage():
print(' '.join(["Usage:", sys.argv[0],
"application_names (with \".app\")"]))
return
def handleRmError(function, path, excinfo):
sys.stderr.write(''.join(["Error deleting ", path, ", err:\n", str(excinfo), "\n"]))
def killLang(app):
# Get the path where language files are located.
AppResource = '/'.join([app, "Contents", "Resources"])
if not os.path.isdir(AppResource):
sys.stderr.write("This program dose not have a standard app structure.\n")
sys.exit(2)
AppSubs = os.listdir(AppResource)
Langs = []
for Sub in AppSubs:
if re.match(".*\.lproj$", Sub) != None:
Langs.append(Sub)
FullLangs = ['/'.join([AppResource, Lang]) for Lang in Langs]
for i in range(len(FullLangs)):
if not Langs[i][:-6] in ReservedLang:
print("".join(["Deleting ", Langs[i], "..."]))
shutil.rmtree(FullLangs[i], False, handleRmError)
return 0
def main():
for App in sys.argv[1:]:
App = os.path.abspath(App)
print App + ':'
if not os.path.isdir(App) or len(App) - App.rfind(".app") != 4:
print "Not an app, skipped"
continue
killLang(App)
return 0
sys.exit(main())
Share This
Sep 19
终于按耐不住,把 Windows 删了,装了一个苹果的操作系统,安装的道路上布满荆棘…
我的硬盘上分区众多,主分区和扩展分区相间而生,而且前后历经 Windows 的 parted,Powerquest Magic,和 cfdisk 的多重折磨,估计 MBR 已经变的像我的宿舍一样乱糟糟的,OS X 的安装程序能读出来已经很让我满意了,试了数次之后发现用那个 Disk Utility 只能读,连格式化都不行… 那时 Windows 已经光荣牺牲,所以决定把整个硬盘重新分区。在备份了 30 多 G 的重要数据以后,一闭眼,打了 cfdisk -z /dev/hda,面对空荡荡的 MBR,心中感慨万千~~
在 cfdisk 里划了一个 15G 的主分区,然后兴奋的跑到 OS X 安装程序里,发现还是不行,这个比较奇怪,到现在也不知道为什么… 最后经过数次尝试发现只有在 Windows(的安装程序)里分区,Disk Utility 才能正确的格式化。安装过程倒是挺快的,和 Ubuntu 差不多,就是要打个 SSE2 的补丁。
如果平时只是上上网,处理一下 routine stuff 的话,OS X 在安完之后就已经是一个非常全面的系统。浏览器、终端、文件管理器、邮件客户端、日程管理、播放器等等一应俱全(想想 Windows 吧…)。不过自带的那个 iChat 只能使用自己的协议,要是需要类似 Pidgin 的那种多协议 IM 的话,可以下载 Adium,这是宇宙里最漂亮,最好用的 IM,而且是开源的。BT 客户端可以用 BitRocket,也是开源的。OS X 的软件资源非常丰富,而且基本上都比 Windows 的同类软件好用。
操作系统本身基本上是完美的,配置也非常简单,都集中在 System Preferences 里,不像 Windows 要到处找。还有那个 Dock,以前用 Windows 的时候用过一个模仿 dock 的软件叫 RocketDock,手感很好,但是安上 OS X 之后才发现 dock 有一些不可能在 Windows 里模仿出的功能,它可以与其它程序交换信息,比如那个 Adium,你在里面设置自己的状态为 away 以后,Adium 就会告诉 dock,于是 dock 里的那个小鸭子图标就会举个牌子,上面写着 Away~~ 其它的就不说了,只有在用过之后才能体会到它的方便…
下面是截图:
 About this MAC~~ |
 Adium 聊天 |
 安装 Aquamacs,一拖动就行了 |
 安装 Firefox,我们要开源~~ |
 用 Safari 上网 |
 桌面,注意底下的 dock,鼠标在的位置是 BitRocket,可以实时地显示下载速度 |
Share This
Sep 13
今天在网上乱逛,不小心看到一个自动代理配置脚本(就是传说中的 pac 文件),发现语法怎么就和 Java 那么像呢~~?Google 一番之后发现其实 pac 就是一个 Javascript 函数,名叫 FindProxyForURL。它接收两个参数,url 和 host,都是字符串。url 是浏览器将要进入的地址,host 就是地址中 :// 和第一个 / 之间的部分。返回值为一个字符串,有三种情况:
- 直接连接,不经过代理,返回
"DIRECT"
- 经过代理,返回
"PROXY host:port“
- 经过 socks 服务器,返回
"SOCKS host:port“
有了这些规则,我们就可以随意加入逻辑,一劳永逸地解决是否使用代理,何时使用代理,使用什么代理等一系列重大问题。比如,我要对 blogspot 使用72.14.219.190,其他某些倒霉的地址使用 Tor,剩下的碌碌无为的地址不使用代理,就可以用下面这个 pac。
function FindProxyForURL(url, host)
{
url = url.toLowerCase();
host = host.toLowerCase();
if(dnsDomainIs(host, ".blogspot.com"))
return "PROXY 72.14.219.190:80";
if(dnsDomainIs(host, ".wikipedia.org") ||
dnsDomainIs(host, ".technorati.com")
)
return "SOCKS 127.0.0.1:9050";
return "DIRECT";
}
Reference: http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html#dnsDomainIs。Netscape 真是有长者风范啊~~
Share This
Recent Comments