1
10
2012
7

清理字体

以前觉得字体多了好,这样访问不同网页就能看到不同的效果了。

后来发现不少字体Linux下的效果就是一坨儿…… 比如宋体吧,Windows下看着好好的,在Linux下用看着虚得很。虽然经过复杂地配置能搞定,但一个一个字体都这么弄,还是太费事了。

于是我想,把字体清理一下,只留下那些看着效果好的字体和必须的字体。

  1. Liberation字体删除了,因为英语“R”右下角一捺显示太虚。
  2. Nimbus无衬线和等宽字体禁用了,无衬线字体原因同上,等宽字体太烂了。
  3. Windows字体大多被删除,除了雅黑看着不错,其他无论中英文效果都很糟糕。
  4. 多余的韩文、日文CJK字体删除了。
  5. 基本用不着的小语种字体删除了。

目前留下的字体:

CJK:

  1. 文鼎的宋体、楷体,显示文档也许有用
  2. 文泉驿正黑、微米黑
  3. hannom,衬线字体,支持的汉字比较多
  4. 花园明朝,无衬线字体,支持的汉字比较多
  5. 雅黑宋体(修改版M$雅黑)
  6. 几个装点门面的艺术字体。

英语:

  1. Bitstream Vera
  2. Dejavu
  3. 谷歌的Droid字体
  4. Ubuntu字体,装点门面

其他:

  1. mph-2b-damase 支持些额外的字符。

目前感觉好极了…… 至少不用为了乱七八杂的字体纠结了。

 

Category: 计算机 | Tags: 字体 美化 linux
1
8
2012
0

一些Arch PKGBUILD的知识

总结一些以前疑惑的关于PKGBUILD的问题。

1. 就算需要,base-devel组中的软件包也不会写入编译时依赖列表(makedepends):

base-devel软件包组包含编译软件所需的基本工具(软件包列表:i686x86_64),包括gcc编译器、make之类的。一般编译软件包都需要这些包,所以干脆就规定makedepends中不需要指定它们。

如果你发现怎么makepkg都编译不了,先看看是不是忘记装base-devel了(pacman -S base-devel)。

2. 从git、svn、cvs、hg等版本控制系统获取代码的软件包,版本号会自动更新:

从版本控制系统获取代码的话,只要PKGBUILD是标准格式,版本号会自动更新,以反映最新的代码变化。

比如,从AUR上下载的ibus-git的PKGBUILD,本来的版本号是20110501,可makepkg之后得到的版本号就变成当天日期YYYYMMDD了。

svn、hg版本号会更新为最新修订号,git、cvs用当天的日期了。

3. install文件之作用:

某些软件包除了PKGBUILD,还会附带一个XXX.install文件。这个文件定义了安装、升级、删除软件包前后要执行的操作。

这些操作放到PKGBUILD是不行的,因为最终要安装的是软件包,而非PKGBUILD。

比如,字体软件包安装或卸载后需要刷新字体缓存,这些操作就必须放在install文件中。

4. arch=('x86_64' 'i686')arch=('any') 的区别:

arch=('x86_64' 'i686')表示:该PKGBUILD可以为x86_64和i686平台生成软件包,但生成的软件包并不能跨平台。

arch=('any')表示:该PKGBUILD生成的软件包在x86_64和i686平台都可以安装。

5. package()build() 函数的区别:

package()是在fakeroot环境执行的,所以能使用某些特殊命令。

其实,通常情况下,把编译过程放在package()、或是把所有操作都放在build()都是可以的。makepkg只保证package()build()(以及不常见的check())之后执行。

6. “xxx || return 1”中“return 1”的作用:

xxx || return 1”的意思是:如果 xxx 命令出错退出了,就退出当前函数并返回错误代码1。这是为了保证重要过程出错时makepkg及时停止。

估计是历史遗留,现在用处不大,因为makepkg本来就会自动出错停止。

7. makepkg不会自动删除旧的src目录,可能导致第二次编译错误:

在执行过一次makepkg的目录再次执行makepkg,src目录不会自动被删除。如果有patch之类的操作,可能因为上次patch过而导致错误。需要手动删除src目录。

Category: 计算机 | Tags: arch cvs Git linux shell svn 软件
1
2
2012
9

供同学们膜拜的 Linux

随便截图若干。

 

常规操作

1. 用强大的Vim写代码

屏幕截图 - 2012年01月02日 - 08时30分00秒.png

2. IBus输入法,以及记事本:

屏幕截图 - 2012年01月02日 - 08时32分47秒.png

3. 支持HTML5的Firefox:

屏幕截图 - 2012年01月02日 - 11时21分00秒.png

 

中国特色

4. 用python-webqq登陆扣扣:

屏幕截图 - 2012年01月02日 - 11时41分26秒.png

5. WebQQ弱爆了?来个TM2009,还带迅雷:

屏幕截图 - 2012年01月02日 - 08时38分46秒.png

6. 哪里的网络最自由?:

屏幕截图 - 2012年01月02日 - 12时05分57秒.png

 

娱乐

7. 听歌+歌词插件:

屏幕截图 - 2012年01月02日 - 11时18分34秒.png

 

8. 黑白的命令行放彩色电影:

9. Linux下打星际:

10. Linux下打使命召唤6

  

 

 

面子工程

11. Stellarium观天象:

屏幕截图 - 2012年01月02日 - 11时56分29秒.png

12. 十年前的Geforce2都能带动的特效:

13 & 14. 最新G3科技

 

12
26
2011
0

在github搭建Arch软件仓库

想搞一个Arch软件仓库。没钱买服务器,就想着扔到个代码托管网站。本来想用google code,结果SVN总是连不上,最后在github弄了个:pakkuman

Arch的软件仓库构造简单,所以放git上也没啥难的。速度还不错,起码能达到100KB/s(以前github慢死了,现在好多了)。

目前没啥特色,主要是验证一下想法。

pacman.conf:

[pakkuman]
Server = https://raw.github.com/cuihaoleo/pakkuman/master/$arch

目前的软件包(随便找了几个以前编译的):

cuihao@cuihao-arch ~ $ pacman -Sl pakkuman
pakkuman amule-dlp-hg 20111016-1 [已安装]
pakkuman freetype2-git-infinality 2.4.99.git20111130-1 [已安装]
pakkuman gtkqq-git 20111226-1 [已安装]
pakkuman ibus-cloud-pinyin-svn 148-1 [已安装]
pakkuman python-webqq-svn 15-1 [已安装]

Category: 计算机 | Tags: arch linux git 软件
12
26
2011
7

异常:try vs finally,程序控制权的争夺

经典代码(同样适用于Java、JavaScript):

def lol():
    try:
        return True
    finally:
        return False

调用lol()后,究竟是返回False还是True呢?相信你和我一样,最开始认为是True,因为try中的语句先执行,对吧?

但事实上:

>>> lol()
False

try had a try. Finally, finally won.

所以,不要在异常语句中用return……

Category: 计算机 | Tags: python 编程 异常
12
3
2011
1

Google+ 年龄限制……

这是个图片

坑什么爹啊…… Google+莫非有成人内容?

Category: 计算机 | Tags: Google Google+ 年龄
12
2
2011
0

Arch下systemd无法开机执行rc.local之解决方法

早就发现了,Arch的systemd提供的那个 rc-local.service 貌似有问题,rc.local不会执行。因为没用rc.local,一直没管。

 

解决方法源自这里,需要稍加改动: http://superuser.com/questions/278396/systemd-does-not-run-etc-rc-local

 

建立文件 /etc/systemd/system/rclocal.service (我怕和系统自带的service冲突,改了个名字),内容为:

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

干掉旧的service:

systemctl disable rc-local.service

上新的service:

systemctl enable rclocal.service

重启动检验。

Category: 计算机 | Tags: arch systemd linux
10
10
2011
11

神奇的UNIX文件,用cat把ISO写到U盘

cuihao同学在学校机房发回报道

有一句话叫做"In UNIX Everything is a File"。在UNIX(包括Linux)中,文件可以用来代表各种东西,包括硬件设备、磁盘分区、网络链接、内核、终端…… 通过这种设计,你可以统一地使用简单的cat、echo命令控制硬件、与内核交互、进行网络通讯等等,我们不必为了完成这些操作专门编程调用系统API。简单的命令拥有了新的生命力,SHELL也因此变得强大。

 

来点简单的例子:

/dev/ttyX 是代表tty(ctrl+alt+Fn看到的那个命令行界面)的文件。尝试如下命令:

su -c "echo 'hi, tty9' > /dev/tty9"

就是用echo把一串字符输出到 /dev/tty9 文件中(使用su命令是因为普通用户没有使用tty设备文件得权限)。然后用Ctrl+Alt+F9切换到 tty9,会发现那串字符果然显示在tty上了。

再试试cat命令:

su -c "cat /dev/tty9"

键入后,cat处于等待输入的状态。进入tty9,输入一些内容,再切回原来的终端,键入的内容都被cat捕获了。键入Ctrl+D(文件结束符),cat就会终止。

 

然后是主题,用cat写ISO:

把ISO文件test.iso写入U盘设备(比如 /dev/sdc,会破坏数据,小心):

cat test.iso > /dev/sdc

自己加su用root执行。命令执行完毕后,你的U盘的分区表应该已经被破坏了 ^^ ISO已经写入到U盘中。可以使用这个技巧制作系统安装盘。很神奇的“设备文件”吧。

另外,使用后重新格式化U盘时,可能需要重建一下分区表。

Category: 计算机 | Tags: Linux ISO 文件系统 UNIX
9
26
2011
0

用mencoder把外挂字幕内嵌到视频中

我的手机档次低,只支持MP4格式,不支持外挂字幕。下的好多外国片都是外挂字幕(或是mkv内置字幕)的,所以想把字幕直接加到图像上。

 

根据网上的搜索,得到下面一条命令:

mencoder 输入文件 -o 输出文件.mp4 \
-oac lavc -ovc lavc -of lavf \
-lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:vbitrate=180 \
-lavcopts acodec=libfaac \
-af lavcresample=8000 \
-vf harddup,scale=320:-10,unsharp=l3×3:0.7,expand=320:240 \
-ofps 16 -lavfopts format=psp -srate 22050 \
-sub 字幕文件 -font 中文字体路径(如/usr/share/fonts/TTF/ukai.ttc) \
-subfont-text-scale 字号(5就可以了) -subcp 编码(utf8可省略)

最后两行是加字幕的,前面的都是格式转换(转换到PSP的MP4格式)。

vbitrate、lavcresample、ofps 应该是和画/音质有关的参数。我都调得很低,这样转换比较快。反正手机屏幕那么小,也看不到什么细节。

 

但这样我发现中文全都显示为下划线(不是乱码),怎么换字体/转字幕格式都没用。搜索之后,找到了解决方法。编辑 ~/.mplayer/mencoder.conf 文件,加入一行“fontconfig=0”,禁用fontconfig设置就可以了。不设置这个的话,-font参数设置字体不起作用。

 

这样,中文就解决了。但还有严重问题,就是转换出来的图像,不知何故旧字幕不会消失,重叠在一起乱七八糟的。试了一下,发现只要加scale/expand参数缩放图像,出来的字幕就有问题。

我的解决方案如下,转换两次:第一次不加字幕,只转换格式、缩放图像;第二次只加字幕,这样就没有问题了。

 

不懂mencoder,只是凭感觉照葫芦画瓢写命令。不知有没有更简便的方法。

 

9
25
2011
7

开源与非开源,支持与不支持

有些开源软件支持者:仇视M$、鄙视甲骨文、讨厌Mono和Java,恶心Flash,只用开源软件。我对“绝对自由”实在是不怎么感冒。实用的就是最好的,无所谓开源不开源,自由不自由。C#好就是好,不是因为M$。Flash纵然再烂,但依旧广泛使用。

 

我觉得Debian挺难用的,因为她太“自由”了。官方仓库找不到Flash,找不到N卡闭源驱动…… Ubuntu就很好,她并不排斥闭源软件,闭源的解码器、“受限驱动”都收纳进了软件仓库。Arch也很不错。

 

开源是为了什么?虚幻的自由理想吗?那可就太无聊了。我觉得开源的好处,一方面是吸引了更多的开发者,一方面是为用户提供了更大的定制空间。所谓“理想”,当不了饭吃,换不来支持,更吸引不来用户。纯粹为了自由理想而开源,就和我朝N年前为了平等瓜分了所有富人的财富似的——最后只剩一堆穷光蛋。

 

此外我觉得,应该推广一种“半开源”,就是开发者可以有选择地开放部分核心代码,或是旧的代码。毕竟,软件开发者也要混口饭。和别人竞争,总不能一点秘密都不保留吧。这样,社区可以维护自己的版本,开发者也能保留自己的“绝招”,可谓双赢。

 

开源软件的好处被他人拿去,而自己却为了“清高”画地为牢,排斥闭源,那最后孰胜孰败就很显然了。

Category: 计算机 | Tags: 开源

| Theme: Aeros 2.0 by TheBuckmaker.com