FreeBSD 小记

Essential settings is controlled by one unit – rc.conf.

X-server

Installing is simple, just install ports xorg.

cd /usr/ports/x11/xorg && make install clean

Then install DM you like(Gnome3, KDE). Compared developing Gnome3, developed KDE4 is more convenient, it’s also be my choice.

cd /usr/ports/x11/kde4/ && make install clean

Because FreeBSD takes source-based package ways, it’s would be a so long long journey especially when installing KDE4, so it’s joyful that watching anime(Fate/Zero).

When it ends, but if reboot instantly, it would be panic.

Hal and dbus service should be enabled manually when coperating using x-windows. So append following lines to rc.conf.

moused_type="auto"
hald_enable="YES"
dbus_enable="YES"

Also, you could choose GDM/KDM as WM depends DM, such xfce, awesome, etc.

Network

Note: for network adapters naming, freebsd don’t use linux ways(eth0), it’s ale0 and ath0.

Use ‘/etc/rc.conf’ to set network related configurations.

Ethernet

Ethernet is simple, dhcpcd is normal choice.

ifconfig_ale0="DHCP"

WLAN

But for WLAN, it’s a little bitter. First, you should hold wireless card information. For example, laptop Acer4732z wireless card is Atheros, so should load related kernel module when booting. So append following lines in file ‘/boot/loader.conf’.

if_ath_load="YES"

Then it depends specific wireless condition, wep/wap/tkip module should be loaded.

wlan_wep_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"

Final step is choosing wireless access point. In my dormitory, name of access point is ‘tsubameso’(つばめそ).

wlans_ath0="wlan0"
ifconfig_wlan0="ssid tsubameso DHCP"

现在颇为困扰自己的为,当对无线接入点设置密码时,freebsd 下总是无法接入, 遂也只能退而求其次用 mac 地址限定进行接入限制。现在也还未确定是自己路由 器 TL-WR841ND 的缘由还是 freebsd 自身所引发的。

现在想来有趣的是,也因为 mac 地址限定都有那么几次发生了自己被困在了房间 外面,而钥匙就在房间内,各种囧境。上一次还是用着 kindle3 那聊胜于无的黑 白屏幕才进入夺取到钥匙的。

Sound

In FreeBSD, ALSA is private for Linux, so OSS architecture is only choice.

You should append sound driver module in /boot/loader.conf.

Because sound card in Acer4732z is ‘snd_hda_intel’(alsa), so append following lines to file ‘/boot/loader.conf’.

snd_hda_load="YES"

You could use ‘cat /dev/sndstat’ to query sound drive detailed info.

If you find that your headphone don’t work, you should use ‘sysctl’ to tuneup it. Also, you could use file ‘/etc/sysctl.conf’ to set it.

hw.snd.default_unit=2

make.conf

Wget

Using powerful wget as fetch command when coperating with ports.

FETCH_CMD=wget -c -t 1
DISABLE_SIZE=yes

Sources

Control how ports to fetch packages sources.

MASTER_SITE_BACKUP?=\
                ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
                ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
                http://mirrors.163.com/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
                ftp://ftp4.tw.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
                ftp://ftp.FreeBSDchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
                ftp://ftp.cn.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/\
                ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}

Csh

Csh is default shell in FreeBSD world, so just follow FreeBSD ways.

There are some slight differences between:

  • user csh(tcsh) settings is in file ‘.login’ and ‘.cshrc’, bash(sh) is in .profile and .bashrc(.shrc). When you should set environment variables, it’s should be patiented.

  • in csh, it’s syntax ‘setenv ENVIRMONT /usr/local/GNUstep/’ instead of syntax ‘export ENVIRMONT=/usr/local/GNUstep’ in bash.

Tips

  • Becuase FreeBSD use bsdlabel, it’s not like windows and linux. So extra compatible module should be loaded when booting.

    geom_mbr_load=“YES”
    

  • Hosts

    hostname=“Tiny.my.com”
    

  • NTFS Fuse-ntfs is a good choice.

    fuse_load=“YES”
    

    Then mount wanted partition in file ‘/etc/fstab’

    /dev/ad4s5 /media/music ntfs rw,mountprog=/usr/local/bin/ntfs-3g,late 0 0
    

  • cpu temperature

    When it turns to hot summer, compiling sources via ports it so dangerous, at least for my little Aspire4732z. So I have to try to downgrade it’s temperature via cpu frequency scaling adaptive and power saving.

    powered_enable=“YES”
    powered_flags=“-a adaptive -b adaptive -n adaptive”
    

    这样调节了之后,虽然在平时安静不繁重编译 ports 时确实慢了许多, 可以看到只有 150M,但是一旦进入关键编译 ports 时,cpu 还是会全速 工作,因此 cpu 还是会快速发热。

    再度搭建 freebsd/kde 桌面时,在编译 thunderbird/QT4 这些大部件时又让 Aspire4732z 数度因为 cpu 温度太过而自动当掉。而在 cpu 风扇自动 调节还是无济之后,因此采用了强制降低 cpu 的频率,足足把运行速度 降低了一半。这样,在查看编译 ports 时 cpu 的温度确实要低了好多, 虽然相比全速运行要慢了些许。

    sysctl dev.cpu.0
    sysctl dev.cpu.0.freq=1050
    sysctl -a | grep ‘temperature’
    

后记

最初写于去年暑假的初稿,竟然万分悲催的被自己莫名删掉了,只剩下了这纸还是 英文写下的初始文稿,之后也就一直被自己搁置着。也只待到真正要对硬盘做大手 术时才开始对这文章再细做一番整理,对 freebsd 总是有着莫名的好感。

Mpd について

Introduction

windows 平台的 foobar2000,linux 平台 amarok 与源自于 mac osx 的 itunes 演绎的都是同一出“大肚能容”,无论是播放,管理,刻录音乐,各色功能都是无所 不包,尤其要点名指出 itunes 的臃肿,太让自己各种不堪不忍。

mpd 相比于这些音乐播放器,太精准贯彻了 unix 'Do one thing and do it best' 哲学思想。mpd 全名为 'Music Player Damon',从其隐藏大名中也可管 中窥豹知其仅仅只是一个简单到极致的音乐播放守护进程,他只完成播放音乐这一 项纯粹的任务。

而相比于 moc/mpg123/mpg321 这一票同为 cli 音乐播放器而言,mpd 最大的特色 即为带来 c/s 架构的 Daemon,通过作为默默的守护进程运行在后台,这也提供了 非常多的想象空间,例如可以在千里之外的 iPad 上收听,在 Firefox 中无缝切 换控制,或是在 emacs 中与 emms 相互协作。

每次与 FreeBSD 相遇时,初识与结束之时总是在美妙的音乐中度过,太过完美。

Configuration

官方配置指导一读

Windows

这里要特别介绍下 mpd 在 window 下的配置。由于 mpd 默认的配置文件位于 '~/.mpdconf', 而由于 cygwin, msys/mingw, cmd 彼此之间对于路径的处理存在 着差异性,因此不建议使用相对路径。自己在使用中,必须显式地指定 mpd 启动 读取的配置文件,'mpd /.mpdconf &' 才可以顺利启动之。

而对于 .mpdconf 文件,建议在设置诸如音乐文件,播放列表时使用其路径全名, 诸如 '~/music/' 总是无法被 mpd 解析,猜测或许是其是由于使用 mingw 编译所 致。

Basic

MPD 基础配置很简单,只需要设置如下变量即可:

  • 音乐文件夹变量 music_directory,如将音乐统一存放于 '~/music/'。 在 Unix 平台上可以使用软链接,windows 上可以使用 [junction][],这样音 乐管理也可以更加弹性灵活。

  • 保存 MPD 播放状态的一系列文件,建议将这些文件统一存放于 '~/.mpd' 目录。

    • 播放列表目录 playlist_directory,相应于 '~/.mpd/playlists/'
    • 日志文件 log_file,相应于 '~/.mpd/mpd.log'
    • pid 文件 pid_file,相应于 '~/.mpd/pid'
    • 音乐数据库文件 db_file, 相应于 '~/.mpd/tag_cache'

Audio Outputs

mpd 负责音乐的播放,因此就需要驱动相应的音频设备工作,这在 mpd 中称为 audio outputs,而这是操作系统相关的,因此对于不同平台是相异的。或者也可 以选择不配置 audioo outputs,而让 mpd 去猜测可使用的音频输出,可以使用 'mpc outpus' 查看其结果。

Alsa

对于 Linux 平台当然推荐 Alsa,由于 mpd 起源于 linux,因此在不配置 audio outpus 时,mpd 在大多数情况下也可以正确找到 alsa 驱动之。

简单的 alsa audio outpus 配置如下:

audio_output {
        type            "alsa"
        name            "Debian ALSA Device"
}

Oss

由于工作平台迁移到了 freebsd,而 freebsd 没有 linux 专属的 alsa,因此需 要业已“廉颇老矣”的 oss,而这也是 freebsd 上最好的选择。小小吐槽下,由于 刚刚开始使用 freebsd,也为 mpd 无法播放音乐文件折腾了好久。对于广大 linuxer 而言,alsa/oss 任君挑选。

audio_output {
        type            "oss"
        name            "FreeBSD OSS Device"
}

Windows

audio_output {
        type            "winmm"
        name            "My Windows Device"
}

Httpd Stream

Mpd c/s 架构发挥想象力的地方正在于其可以输出音频流为 https stream,而这 可以为服务端的通用播放器所播放,诸如 windows 上无所不能的 foobar2000, linux 上的 mplayer/vlc。

Mpd 对于如何输出 httpd stream 有两种可选方案,inline/icecast。

audio_output {
        type            "httpd"
        name            "HTTP Stream"
        encoder         "lame"
        port            "8080"
        bitrate         "192"
        format          "44100:16:1"
}

Misc

当然 mpd 的功能及其可配置性不仅仅只是如此单薄,你也可以设置客户端连接的 端口/密码/数量,播放音乐时自动调节增益。

更详细的可定制选项,可以翻阅下 '~/.mpdconf' 文件或是 man 文档,或许其中也 会找到所需要的定制功能。

Clients

官方一众各平台客户端一览

Linux

Linux 平台上的 mpd 客户端很是丰富,mpd 就是孕育于此平台。gtk/QT/cli 一应 俱全,就看看官如何偏爱选择之。

对于 Gnomer 而言,应也最偏爱 sonata,简洁,完整。Gmpc 也是不错的选择,但 也许是先入为主,总还是一如既往偏爱之,sonata 抢占自己的桌面。

对于 Kder 而言,qmpdclient 算是中规中矩的客户端,自己没有感觉到太多的亮 点,也是使用频率很低。

cli 而言,强烈推荐 ncmpcpp(ncmpc),强大的可配置性,丰富的特性,任意定制 的快捷键,很适合键盘流。

Windows

由于 mpd 不是为 windows 而生,因此 windows 上的客户端相当的匮乏。或许基 于 gtk 的 gmpc 是个不错的选择,功能还算很是完备,应该可以敷衍之。

而对于 cli tools 而言,mpc/ncmpc/mpdscribble 都需要“自力更生”编译。于 cygwin 平台上顺利编译了,msys 未尝试过。编译软件还是颇费周折的,或许如 上的 gmpc 是 windows 上最好的选择了。

  • libmpdclient(ncmpc, mpdscribble 依赖于此)
  tar zxvf libmpdclient-2.4.tar.gz && cd libmpdclient-2.4
  ./configure --prefix=/usr
  make && make install
  
  • ncmpc
  tar jxvf ncmpc-0.18.tar.bz2 && cd ncmpc-0.18
  ./configure --prefix=/usr
  make && make install
  
  • mpdscribble
  tar jxvf mpdscribble-0.21.tar.bz2 && cd mpdscribble-0.21
  ./configure --prefix=/usr
  make && make install
  

iOs

iphone/ipad 下很建议使用 mPod/mPad,太方便与强大,也是很好的贯彻了 c/s 精髓,可以实现随心所欲的远程播放/控制,现在自己已经更加习惯于用 mPod 做 为自己主力了,而且也可以在 last.fm 上浏览歌曲信息,实在是个太好的玩具。

Last.fm

部分客户端自身提供了 scribble 到 last.fm 的功能,诸如 sonata/gmpc。 而对于通用 scribble 而言,推荐朴素的 mpdscribble。

偏好の windows 软件推荐

系统应用

  • Windows7 网银,office(word),各种 windows 专用的软件,还是趁着 windows7 发布不久,于大四的下学期购置了一套 windows7 home basic。windows7 相比 xp 确实是要有优秀的多,界面的美观实 用性,字体也丰富了很多,¥399 还是物有所值的。对 windows7 home basic 版本唯一的遗憾是不能组建家庭网络,为此折腾 windows7 蓝屏了好几次,但这也是 windows7 家庭高级班的卖 点,还是不能太“贪心”。

继续阅读

轻量标记语言的比较

轻量标记语言

txt2tags

最开始接触的轻量标记语言,是在啄木鸟社区浏览 python 时意外收获的。于自己 使用 markdown 记录心得和写文章之前一直使用 txt2tags。txt2tags 给自己的影 响很好,使自己在庞大而强大的TeX 也有了另外的选择。

  • txt2tags 的语法很简洁,但还是基本可以满足要求,

  • 它的一个特点是输出格式非常丰富,有些格式自己还真是很少有机会接触到,这 也是很体现了此软件的哲学思想:“ont to all”。

  • txt2tags 也支持 css 对输出的html 进行美化,所以 html 输出还是有很大的自定义性的。

自己而言,不是很喜欢其语法,后来有预见了很偏爱的 markdown,遂弃之。 github 现在还是不支持 txt2tags,当然此为后话。

asciidoc

LinuxToy 也有对 asciidoc 做过介绍,自己也有看到过,但当时对 此软件也未有任何的在意。后来也是慢慢的了解轻量标记语言才开始真正的有接触 和使用。

  • asciidoc 理论上可以支持所有常见的文档格式,因为 asciidoc 的后端 (backend) 为 html 和 docbook。通过 docbook 作为中间格式,自然可以实现 groff,pdf 等格式的支持。

  • asciidoc 的功能很完备,可以当作是完整的排版系统,一些功能也很贴心,例 如 'verse' ,很多项目也是选用此作为文档工具,例如韦诺之战GitVimperator

  • asciidoc 的中文支持不好,或者言之为对 utf-8 支持不佳,但是有相应热心网 友相应的改进版本。另外关于 asciidoc 的中文介绍和使用也很少,使用还是要 参考文档,但还是很简单的。

reStructeredText

reStructeredText 简称为 rst,是 python 的 docutils 的组成部分,可以称 之为 python 的官方文档工具。

在轻量标记语言里,rst 应该可以算是功能最完备的,但是自己不是很习惯,但是 使用起来总是感觉不是很顺手,写 rst 文章都要查阅语法,推荐 pythoner 使用。

github 的 中文 rst 文件渲染还是会乱码,因此现在使用的很少了。

markdown

  • markdown 的语法可读性很好,很偏爱 markdown 的语法,非常的简洁而且也很 符合自己的偏好。但是比较麻烦的是对于表格没有语法支持,这也是由于 markdown 自身的哲学所致,其初衷并不是替代并 html,只是为了提高文件的可 读性。最近写作文章和记录笔记,经常要插入表格,只能使用内嵌的 html,对 于不熟悉 html 的自己来说也实在是很折腾。

  • markdown 另一个很吸引自己的是其语言实现非常丰富, perl(原始实现), c, java, lua, python, javascript 都有相应的实现,对于 想 hacking 的自己也是很好的素材。当然,你可以整合这些插件,例如可以把 lua 的插件整合进 scite 编辑器,scite 也可以成为 blog 文章编辑器。

  • github 也可以很好的支持 markdown 格式,这对于自己太方便了。

orgmuse

org 以及 muse(原来的 emacs-wiki) 都是只存在于 emacs 世界的轻量标记语言。 muse 使用很方便而且语法高亮也很强大(依赖于 htmlize 插件),原来也有使用写 作文章的经历。muse 现在基本慢慢被 org 替代了,虽然它们的初衷不一致。 org 最近发展很快,从 emacs23 开始已经成为了其标准组件,语法与 muse 基本兼容。

  • org 的功能很完善,把它列为轻量标记语言或许也不是太完善。org 的功能主要 分为文档发布(wiki)或者其本来的 GTD 管理。自己使用 org 也基本只是用其日 程规划的功能,文档发布功能很少用。在 emacser 中文站 大伙基 本都是用 org 来撰写文章的,只有自己是用 markdown 的“异类”了,自己太过 偏爱 markdown 了。

  • “背靠大树好乘凉”,有了 emacs(elisp) 的支持,org 可拓展性非常好。但是由 于应用只限于 emacs,你在使用 org 之前还要先进入 emacs 的世界,要付出很 多的学习代价,但是学习代价应该还是值得的,毕竟 emacs 是 “神的编辑器”。

summary

可以参考下 wiki 的比较介绍,看一下众多轻量标记语言的语法差异和输出格 式支持,选择自己喜欢的。

当然,由于轻量标记语言很丰富,因此它们之间的语法相差还是很大。如果经常要 在不同的标记语言之间切换,那大脑的思维转换太累了,那要好好查阅手册了。

自己一直很偏爱 markdown,现在文章写作基本都是用其描述的。而且也可以很方便与 html 整合。

转换 pdf 为 png 图片

写作论文时,时时需要画流程图。原来有用 pgf 画流程图,很方便而且生 成的 pdf 插入 tex 也很方便。但是论文必须要用邪恶的 word 排版,智能用 imagemagick 中的 convert 将 pdf 转换成 png 格式,但是转换后的图片很 模糊,插入 word 之中根本无法入眼,很影响文档的美观,遂只能作罢。后来换用 了 edraw,倒还凑合,但总是感觉不是太满意。

最近,阅读了 LiYanrui 的文档,才发觉是 convert 的参数设置问 题导致输出的图片模糊。

convert 命令有许多选项参数,本文用到的选项如下:

  • -trim:裁剪图像四周空白区域;
  • -transparent color:去除图像中指定的颜色;
  • -density geometry:设定图像的 DPI 值,通常为 96;
  • -antialias:让图像具有抗锯齿的效果;
  • -quality:图像压缩等级。

然后用如下的 convert 命令对 pdf 文件转换:

convert -quality 100 -antialias -density 96 -transparent white -trim test.pdf test.png

转换输出后的 png 图片非常好,插入 word 也很好了。