一台机子没有插键盘(PS/2),启动的时候会停在“Keyboard not found”的错误。如果要把这台机子当作服务器,显得没键盘装得才像。
可以通过BIOS设置来去除这个错误。不知道不同版本的BIOS是否设置一致,在我这里是这样的:
在BIOS的某个选项里,有 Halt on All errors,修改为 Halt on no error,然后会出现新的Keyboard选项,将其设置为disable,意思是忽略Keyboard的错误,重启即可。
2011年10月29日星期六
2011年10月27日星期四
Bash 命令提示符
Bash 命令提示符是由环境变量PS1控制的,PS2控制命令多行输入时的提示符。Bash提供了
一些转义字符,供定制PS1(当然如果要定制PS2也可以使用,但一般很少定制PS2吧)时使用。
以下列举一些常用的:
的开始。后面紧跟表示颜色的数字,不同的数字代表不同的颜色,有些表示前景色,有些表
示背景色,有些表示光标闪烁颜色,数字间用“;"分隔,且没有顺序关系,最后"m"表
示颜色序列的结束。后续的字符将按照颜色序列的定义显示,直到"\e[0m"重置为默认值。
比如一个可能的PS1为:“export PS1="\e[32;40m\w> \e[0m”
还要特别提一下\[ 和 \]的作用,它通知Bash两者间的字符为非打印字符,
当Bash计算提示符长度时,会忽略这一串字符。这是很有必要的,比如对于定义颜色的特殊
序列,就应该包含在其中,因为颜色序列并非打印字符。如果没有将非打印字符(比如颜色
序列)包含在\[和\]之间,当输入较短命令时不会有问题,但是当输入长命令,超过使用的
终端窗口的宽度时,因为Bash将非打印字符都算入提示符长度,造成命令换行的错误,终端
窗口的显示将会错乱。
默认情况下,
分析这一段代码,发现\[ 和 \]的“\e]0;\u@\h: \w\a”还是解释不了。其实"\e]0;" 与
"\a"之间的序列用于控制终端窗口titlebar的显示。还可以把0换成1或者2,分别控制任务
栏终端窗口titlebar显示和主窗口的titlebar显示,即:
[1]Bash Shell PS1: 10 Examples to Make Your Linux Prompt like
Angelina Jolie
[2]Tip: Prompt magic
[3]http://tldp.org/HOWTO/Bash-Prompt-HOWTO/xterm-title-bar-manipulations.html
[4]tput 入门
一些转义字符,供定制PS1(当然如果要定制PS2也可以使用,但一般很少定制PS2吧)时使用。
以下列举一些常用的:
- \h 主机名字
- \u 当前用户名字
- \w 当前工作目录
- \$ UID为0时(也就是root)效果为#,否则为$
- \t 当前二十四小时制时间
- \T 当前十二小时制时间
- \[ 开始一串非打印字符
- \] 非打印字符串结束
提示符颜色
还可以给提示符添加颜色,也是通过在PS1中使用特定的序列来实现的。"\e["表示颜色序列的开始。后面紧跟表示颜色的数字,不同的数字代表不同的颜色,有些表示前景色,有些表
示背景色,有些表示光标闪烁颜色,数字间用“;"分隔,且没有顺序关系,最后"m"表
示颜色序列的结束。后续的字符将按照颜色序列的定义显示,直到"\e[0m"重置为默认值。
比如一个可能的PS1为:“export PS1="\e[32;40m\w> \e[0m”
编码 | 颜色动作 |
---|---|
0 | 重新设置属性到缺省设置 |
1 | 设置粗体 |
2 | 设置一半亮度 |
4 | 设置下划线 |
5 | 设置闪烁 |
7 | 设置反向图象 |
22 | 设置一般密度 |
24 | 关闭下划线 |
25 | 关闭闪烁 |
27 | 关闭反向图象 |
30 | 设置黑色前景 |
31 | 设置红色前景 |
32 | 设置绿色前景 |
33 | 设置棕色前景 |
34 | 设置蓝色前景 |
35 | 设置紫色前景 |
36 | 设置青色前景 |
37 | 设置白色前景 |
38 | 在缺省的前景颜色上设置下划线 |
39 | 在缺省的前景颜色上关闭下划线 |
40 | 设置黑色背景 |
41 | 设置红色背景 |
42 | 设置绿色背景 |
43 | 设置棕色背景 |
44 | 设置蓝色背景 |
45 | 设置紫色背景 |
46 | 设置青色背景 |
47 | 设置白色背景 |
49 | 设置缺省黑色背景 |
\[ 和 \]的作用
还要特别提一下\[ 和 \]的作用,它通知Bash两者间的字符为非打印字符,
当Bash计算提示符长度时,会忽略这一串字符。这是很有必要的,比如对于定义颜色的特殊
序列,就应该包含在其中,因为颜色序列并非打印字符。如果没有将非打印字符(比如颜色
序列)包含在\[和\]之间,当输入较短命令时不会有问题,但是当输入长命令,超过使用的
终端窗口的宽度时,因为Bash将非打印字符都算入提示符长度,造成命令换行的错误,终端
窗口的显示将会错乱。
titlebar
默认情况下,
PS1=\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
分析这一段代码,发现\[ 和 \]的“\e]0;\u@\h: \w\a”还是解释不了。其实"\e]0;" 与
"\a"之间的序列用于控制终端窗口titlebar的显示。还可以把0换成1或者2,分别控制任务
栏终端窗口titlebar显示和主窗口的titlebar显示,即:
\e]1;icon-title\a\e]2;main-title\a
参考资料
[1]Bash Shell PS1: 10 Examples to Make Your Linux Prompt like
Angelina Jolie
[2]Tip: Prompt magic
[3]http://tldp.org/HOWTO/Bash-Prompt-HOWTO/xterm-title-bar-manipulations.html
[4]tput 入门
2011年10月22日星期六
Ubuntu登录后死机
给一旧电脑安装Ubuntu ( 9.10 ),安装好后进入桌面没几秒就死机,屡试不爽。TTY登录则一切正常。猜测是机器过于陈旧,所以无法运行桌面。难道就因此放弃桌面么?但是由于以前有一台大抵相同配置的机器是可以运行GNOME,所以对上述轻率的结论还是有疑惑的。
良思无策,放狗一搜,发现这篇文章描述的状况与我遇到的并无二致,原因他也说了,是硬件不支持compiz造成的,但换个窗口管理器还是可以使用桌面环境的。按图索骥,登陆到tty,修改~/.gconf/desktop/gnome/applications/window_manager/%gconf.xml文件,把两个/usr/bin/compiz换成/usr/bin/metacity。重启系统,总算可以正常运行了。不得不感慨下这位同学发现问题和解决问题的能力还是极强的,而我连窗口管理器,X Windows,窗口环境等概念都分不清,差距阿。
compiz 和 metacity 都是窗口管理器,而且metacity是gnome默认的窗口管理器(吐槽:看到的资料是这么说,可是为什么安装好启动就是compiz,那算什么默认阿)。ubuntu wiki这里有提到一点,“系统--首选项--外观--视觉效果”如果不是选“无”,则compiz会作为窗口管理器(吐槽:metacity,你到底算个啥默认窗口管理器哦)。
良思无策,放狗一搜,发现这篇文章描述的状况与我遇到的并无二致,原因他也说了,是硬件不支持compiz造成的,但换个窗口管理器还是可以使用桌面环境的。按图索骥,登陆到tty,修改~/.gconf/desktop/gnome/applications/window_manager/%gconf.xml文件,把两个/usr/bin/compiz换成/usr/bin/metacity。重启系统,总算可以正常运行了。不得不感慨下这位同学发现问题和解决问题的能力还是极强的,而我连窗口管理器,X Windows,窗口环境等概念都分不清,差距阿。
compiz 和 metacity 都是窗口管理器,而且metacity是gnome默认的窗口管理器(吐槽:看到的资料是这么说,可是为什么安装好启动就是compiz,那算什么默认阿)。ubuntu wiki这里有提到一点,“系统--首选项--外观--视觉效果”如果不是选“无”,则compiz会作为窗口管理器(吐槽:metacity,你到底算个啥默认窗口管理器哦)。
2011年10月19日星期三
FAIL:20111019
DropBox的主页默认上不去(吐槽:难道我会以为是DropBox挂掉了么?!),但是可以通过某种途径登上,下载了dropbox的deb安装包。
dpkg安装好dropbox deb包(备注:安装的只是一个python程序,在/usr/bin/dropbox),在应用程序--互联网--DropBox 启动 dropbox,提示连接错误,并建议配置http_proxy环境变量。正常反应,我想,毕竟是有认证过的。那怎么配置http_proxy环境变量?写入/etc/profile?不妥,不知道会不会影响其他程序。放狗一搜,利用这篇文章中提到的方法:
开始下载安装dropbox主程序(第一次运行才会安装,安装在主目录下.dropbox-dist中)。接着会自动运行dropbox,但仍然连接不上服务器,不过有了新的提示:不能建立安全的连接,原因是你的时间和日期设置得不正确。当然系统的时间和日期设置是正确的,放狗搜索,看了N多贴,挣扎了几个小时,毫无头绪,只能用一个字来形容当时的心情:FAIL!
最后让我发现原因是网络没有国际出口权限!我猜dropbox会连接某国际时间服务器来验证本地系统时间是否正确,但不幸的是因为网络没有国际出口权限,它居然提示系统时间和日期设置不正确。还有一个小疑问,虽然DropBox的主页依然“正常”登陆不上去,但是客户端在没有用任何其他途径的情况下,能很好地工作,而且速度还不错(200KB/s),着实让我有点意外。
dpkg安装好dropbox deb包(备注:安装的只是一个python程序,在/usr/bin/dropbox),在应用程序--互联网--DropBox 启动 dropbox,提示连接错误,并建议配置http_proxy环境变量。正常反应,我想,毕竟是有认证过的。那怎么配置http_proxy环境变量?写入/etc/profile?不妥,不知道会不会影响其他程序。放狗一搜,利用这篇文章中提到的方法:
http_proxy=http://127.0.0.1:8580 /usr/bin/dropbox start -i
开始下载安装dropbox主程序(第一次运行才会安装,安装在主目录下.dropbox-dist中)。接着会自动运行dropbox,但仍然连接不上服务器,不过有了新的提示:不能建立安全的连接,原因是你的时间和日期设置得不正确。当然系统的时间和日期设置是正确的,放狗搜索,看了N多贴,挣扎了几个小时,毫无头绪,只能用一个字来形容当时的心情:FAIL!
最后让我发现原因是网络没有国际出口权限!我猜dropbox会连接某国际时间服务器来验证本地系统时间是否正确,但不幸的是因为网络没有国际出口权限,它居然提示系统时间和日期设置不正确。还有一个小疑问,虽然DropBox的主页依然“正常”登陆不上去,但是客户端在没有用任何其他途径的情况下,能很好地工作,而且速度还不错(200KB/s),着实让我有点意外。
2011年10月16日星期日
ubuntu下goagent开机自启动
GoAgent的安装和部署可以参考一篇旧文。下面讨论的是如何开机运行GoAgent。
Windows下是没有这种烦恼的(吐槽:linux下其实也没烦恼,“庸人”自扰而已),只需将proxy.exe加入开机启动项即可。在Ubuntu上,每次需要执行python proxy.py才可以运行goagent,而且需要一直开着终端,着实有点不太方便。要实现开机启动GoAgent,可以在 ~/.profile (如果没有该文件,自己创建)中添加以下语句:
/usr/local/phus-goagent-b1f5004是我解压goagent的目录。
有几个问题需要交代一下:
[2]shell的初始化文件
[2]Ubuntu开机自动启动GAppProxy
Windows下是没有这种烦恼的(吐槽:linux下其实也没烦恼,“庸人”自扰而已),只需将proxy.exe加入开机启动项即可。在Ubuntu上,每次需要执行python proxy.py才可以运行goagent,而且需要一直开着终端,着实有点不太方便。要实现开机启动GoAgent,可以在 ~/.profile (如果没有该文件,自己创建)中添加以下语句:
# goagent
cd /usr/local/phus-goagent-b1f5004/local
python proxy.py > /dev/null 2>&1 &
cd ~
/usr/local/phus-goagent-b1f5004是我解压goagent的目录。
有几个问题需要交代一下:
- nohup
当我刚开始尝试开机启动GoAgent时,使用的方法是在~/.bash_login(Ubuntu默认没有该文件,自己创建的)中添加 python /usr/local/phus-goagent-b1f5004/local/proxy.py, 显然失败了。这其实有两个问题,一个问题下面会介绍,另一个问题就是没有使用nohup,使得当终端关闭时,程序也就结束了。
nohup的作用就在于忽略所有挂断(SIGHUP)信号,在shell注销后保持程序继续运行。它会把输出重定向到nohup.out的一个文件中,保存在当前目录下,如果无法在当前目录下创建文件,则会保存在HOME/nohup.out。但是`nohup' does not automatically put the command it runs in the background; you must do that explicitly, by ending the command line with an `&'.",所以通常都需要在nohup后使用&。
在上面的例子中,我把输出和err输出都重定向到/dev/null,这样就免得生成nohup.out文件。
Update:
很不幸地发现,不使用nohup也是完全可以正常使用的(吐槽:之前多么无知无畏阿),但上面关于nohup的介绍是没有任何问题的。提醒一点,即便没有使用nohup, 命令后添加&使得程序运行在后台,还是不能省略的。
- /etc/profile .bash_profile .bash_login .profile
我开始尝试失败的另一个原因就是把命令写在了一个错误的地方~/.bash_login。其实当以图形界面登陆时,并没有读取.bash_login文件,使得命令根本没有运行。shell的初始化文件不同情景下读取顺序情况如下:
1. 图形模式登录时,顺序读取:/etc/profile和~/.profile
2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc
3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile
4. 从其它用户su到该用户,则分两种情况:
(1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~ /.bash_profile。
(2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc
5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout
6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。
7. 上述原则凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~ /.profile。
更详细的讨论可以前往这里参考一下。
参考资料
[1]nohup MAN Page[2]shell的初始化文件
[2]Ubuntu开机自动启动GAppProxy
2011年10月13日星期四
shell之引用
在shell中有两类字符,一类是普通字符,另一类是所谓的"元字符",在shell中有特殊的含
义或用法。
当我们需要去掉元字符的特殊含义而恢复其字面意义时就必须使用"引用".通常有三种引用
方式,分别是转义(Escape,使用反斜杠字符\),强引用(使用单引号)和弱引用(使用双引号):
好像上面已经把规则说得够清楚了,那么试着解读一下下面这个语句:
输出:
乍一看,对于这个结果还是蛮惊讶而且比较迷糊。其实这里利用了shell的引用的一个原则:
引用与后面接着的非引用字符,或者其他引用,会整合一个命令参数
所以对于上面那个例子的解释是,其实包括了三个引用:
参考资料:这里
义或用法。
当我们需要去掉元字符的特殊含义而恢复其字面意义时就必须使用"引用".通常有三种引用
方式,分别是转义(Escape,使用反斜杠字符\),强引用(使用单引号)和弱引用(使用双引号):
- 转义是用反斜杠放在需要转义的字符前,使得"元字符"变成普通字符。
- 强引用是用单引号把字符串包含起来,其中任何字符都看作普通字符(包括双引号),除
了单引号自身。所以无法在两个单引号之间包含一个单引号,用\转义也不行(\已被当作普
通字符,失去了转义的作用)。 - 弱引用是用双引号把字符串包含起来,除了“(双引号,double quote),\(反斜杠,
backslash),$(美元符号),`(注意不是单引号,而是反引号,ESC下的那个键,作用是命令替
换)之外,其他的大部分字符被当作普通字符。
好像上面已经把规则说得够清楚了,那么试着解读一下下面这个语句:
awk 'BEGIN {print "Here is a single quote <'"'"'>"}'
输出:
Here is a single quote <'>
乍一看,对于这个结果还是蛮惊讶而且比较迷糊。其实这里利用了shell的引用的一个原则:
引用与后面接着的非引用字符,或者其他引用,会整合一个命令参数
所以对于上面那个例子的解释是,其实包括了三个引用:
- 'BEGIN { print "Here is a single quote<'
- "'"
- '>" }'
awk ’BEGIN { print "Here is a single quote <’\’’>" }’
awk "BEGIN { print \"Here is a single quote <’>\" }"
参考资料:这里
2011年10月11日星期二
FAIL:20111011
这两天遇到四个个问题:
一个字:FAIL!
- 双系统 windows 和 ubuntu 时间差8小时.这是由于
Linux 操作系统是以 CMOS 时间做为格林威治标准时间,再根据系统设置的时区来确定目前系统时间。但是Windows 会将CMOS 时间看作本地时间。
解决方法之一是让Ubuntu 也使用本地时间,修改/etc/default/rcS,把里面的 UTC=yes 改为 UTC=no。 - smplayer(源安装)播放 rmvb 时有噪音,略微话音不同步,而用mplayer播放时没有这问题。不得其解。忍,我用mplayer。
- mplayer不能正常播放mms,话说之前有一阵子是可以播放的,windows下用mediaplayer 播放毫无压力。不得其解。忍?这怎么忍?!尝试用其他播放器(vlc),同样不能播放。
- virtualbox 下播放视频,或者用mediaplayer播放mms,花屏。去除virtualbox 2D加速,3D加速后,可以正常播放。这是不是应验前几天看到的“VirtualBox 烂死了”的论调?不得其解。可能与我显卡有关(GT540M,nVidia驱动,非源安装)。
一个字:FAIL!
2011年10月9日星期日
Emacs 中的简单排版
Tabs的使用
emacs中的Tab默认长度是8个字符,而且Tabs的行为有点智能,它并不是简单地插入一个制表符,而是会依照上行的非空白字符的位置,来选择光标的移动位置。比如:
输入:TAB TAB Hello World,得到:“\t \t Hello World”,接着按下ENTER另通常情况下,这正是我们所需要的行为,但当我们正需要一个Tab时,这种“智能“的判
起一行,再按下Tab,此时光标会直接跳到与Hello中‘H’对齐的那一列,而不是简
单地插入一个制表符。
断会给我们造成困扰。这时,可以使用C-q TAB。
我们还可以对TAB的一些特性进行定制。比如把tab的长度设置为常用的4字符:
(setq-default tab-width 4)
因为TAB会根据非空白字符的位置来移动光标,当需要移动的距离不是TAB字符长度的倍数,
会插入制表符和空格符来满足要求。应用这样规则的文本在用别的编辑器打开时,因为
TAB长度的差异,可能会使排版变得难看,所以更好的方法是当使用TAB键时不要插入制表符
\t,而是插入同等长度的空格符。可以用以下语句实现要求:
(setq-default indent-tabs-mode nil)
Autofill mode与M-q
Autofill 和 M-q 都与一个变量有关系,那就是default-fill-column,它的作用是设定排版
时每行的最大长度,这样排版出来的文章才会显得整理。设置default-fill-column为80,因
为它刚好是我屏幕的一半,这样分屏时也挺不会折行 :)
(setq default-fill-column 80)
Autofill 是一个mini mode,它会使输入超过default-fill-column时自动换行,免去用M-q
命令排版的麻烦。可以在.emacs文件中加入以下语句:
;;所有模式都默认开启auto-fill
(setq-default auto-fill-function 'do-auto-fill)
M-q 的函数是 fill-paragraph,会对所在段落进行排版,主要操作是去除多余的空白字符,
并在超过default-fill-column处加入换行。需要注意的一点是,默认情况下,段落间的标志
是相隔一空行,所以如果只是用ENTER另起一行,在用 M-q 排版时会被当作是同一段落。
fill前缀
Autofill 在换行时,可以添加一些前缀(prefix)。前缀的自动识别由变量
adaptive-fill-regexp 决定,emacs在断行时自动识别出符合的前缀,新起的一行会添加该
前缀。默认情况下空格与制表符都包括在能被识别的前缀里,所以如果新起的一行会保持与
上一行相同的缩进,甚是方便,充分体现了emacs 的强大。
也可以在你需要使用的前缀后敲入"C-x .",则光标之前的字符串会被当作前缀,换行时就会
添加该前缀。利用这个功能,我们可以方便地写出类似下面这样的排版:
EMACS太强大了:我同意另起一行,再输入一次"C-x .",就会取消这个手动设置的前缀。
EMACS太强大了:我举双手赞成
EMACS太强大了:我坚决支持
EMACS太强大了:呵呵
更详细的介绍可以参考这里
居中
居中是在排版中常见的任务,Emacs提供了函数来实现这个任务:
center-line 绑定键 M-o M-s 使当前行居中
center-paragraph 绑定键 M-o M-S 使当前段居中
center-region 使选中区域居中
缩进
按照上述的设置和使用,在编写时应该能写出符合要求的排版。如果在输入完后,才决定需要对某段文字进行缩进,这时可以使用C-M-\ (indent-region),它对选中的区域缩进一
层。注意,如果需要缩进多层,不该使用该命令,不然会使排版变得很糟糕。有更适合的命
令来实现多层的缩进,那就是C-x TAB (indent-rigidly),默认情况下,该命令会缩进一个
字符,可以配合C-u 使用。
2011年10月8日星期六
ubuntu 下配置Java环境
下载,安装
在Ubuntu源中可以直接安装jdk,但是只能安装Openjdk,而且版本不一定是最新的。还是选择使用官方版,在Oracle Java SE Downloads(吐槽: SUN 阿 SUN)下载Linux平台的自解压包,后缀为bin,说明是可执行文件。把自解压包放在准备安装的目录(比如/usr/local),需要通过chmod添加可执行属性,然后执行该bin文件解压即可。配置环境
要使用Java,还需要配置环境参数JAVA_HOME,CLASSPATH,为了在终端中使用JAVA,还需把$JAVA_HOME/bin加入到PATH中。可以在$HOME/.bashrc 中使用(假设java安装在/usr/local/jdk1.6.0_27):
# JAVA Environment
JAVA_HOME=/usr/local/jdk1.6.0_27
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH
但这样有一个问题,环境变量并不是全局的(只在所谓的nologin shell中有效),也就是说安装eclipse后,如果在桌面中启动eclipse会提示找不到JRE(eclipse需要JRE环境)。
所以更合适的方法是在/etc/profile中添加上述语句,因为login shell 会读取该文件,使得环境变量是全局的。
2011年10月7日星期五
latex 生成带QR码的名片
抄袭地址:这里
生成的效果如下:
要开发QR CODE译码应用程序除了使用现成的译码库(比如zxing)外,其实还要知道各服务的标准协议才能开发出真正的应用程序。比方说要如何判别什么时候是联系人、什么时候是打电话、什么时候是发短信、什么时候是开启网页、什么时候是纯文本备注。
这些都有标准协议,以下就简单说明各QR CODE应用协议:
使用pst-barcode宏包生成QR码,QR码中包含的信息为电子名片信息,格式为MECARD。虽然Vcard是通用的电子名片标准,但由于二维码的信息量有限,Vcard的条目过于详细,所以在用QR码存储名片信息时,更常用MeCard格式。
模板如下:
生成的效果如下:
要开发QR CODE译码应用程序除了使用现成的译码库(比如zxing)外,其实还要知道各服务的标准协议才能开发出真正的应用程序。比方说要如何判别什么时候是联系人、什么时候是打电话、什么时候是发短信、什么时候是开启网页、什么时候是纯文本备注。
这些都有标准协议,以下就简单说明各QR CODE应用协议:
- 发送短信
- SMSTO:13800138000:BABY I LOVE YOU
- 发送彩信
- MMSTO:13800138000:send mms
- 发送网址
- http://www.hoojar.com/
- 拨打电话
- TEL:13800138000
- 发送邮件
- MATMSG:TO:hoojar@hoojar.com;SUB:TEST;BODY:THIS IS TEST MAIL FOR QR CODE;;
- 电话本
- MECARD:N:李,林;ADR:湖南省株洲市;TEL:+8313800138000;EMAIL:hoojar@hoojar.com;URL:http://m.hoojar.com/;;
- 书签
- MEBKM:TITLE:慧佳生活网;URL:http://www.hoojar.com/;;
使用pst-barcode宏包生成QR码,QR码中包含的信息为电子名片信息,格式为MECARD。虽然Vcard是通用的电子名片标准,但由于二维码的信息量有限,Vcard的条目过于详细,所以在用QR码存储名片信息时,更常用MeCard格式。
模板如下:
\documentclass[11pt,a4paper]{memoir}
\setstocksize{55mm}{85mm} % UK Stock size
\setpagecc{55mm}{85mm}{*}
\settypeblocksize{45mm}{75mm}{*}
\setulmargins{5mm}{*}{*}
\setlrmargins{5mm}{*}{*}
\setheadfoot{0.1pt}{0.1pt}
\setheaderspaces{1pt}{*}{*}
\checkandfixthelayout[fixed]
\pagestyle{empty}
\usepackage{pstricks}
\usepackage{pst-barcode}
\begin{document}
%\pagecolor[cmyk]{.22,.36,.51,.08}%
\begin{Spacing}{0.75}%
\noindent
\textbf{Andrew~Brampton~Ph.D.}\\
\rule{75mm}{1mm}\\
\begin{minipage}[t]{30mm}
\vspace{-1mm}%
\begin{pspicture}(30mm,30mm)
% The MECARD format is used to exchange contact information. More information at:
% http://www.nttdocomo.co.jp/english/service/imode/make/content/barcode/function/application/addressbook/index.html
\psbarcode{MECARD:N:Brampton,Andrew;EMAIL:a.bramptonATlancs.ac.uk;URL:http://bramp.net;;}{eclevel=L width=1.181 height=1.181}{qrcode}
\end{pspicture}
\end{minipage}
\hspace{1mm}
\begin{minipage}[t]{42mm}
\vspace{-1mm}%
\begin{flushright}
{\scriptsize
\begin{Spacing}{1.5}%
% \textbf{Research Associate}\\
\textbf{Network Researcher}\\
Computing Department\\
Lancaster University\vspace{9mm}\\
\end{Spacing}
}
{\tiny
\textbf{email:} a.brampton AT lancs.ac.uk\\
\textbf{web:} http://bramp.net/\\
\vspace*{2mm}
}
\end{flushright}
\end{minipage}
\rule{75mm}{1mm}
\end{Spacing}
\end{document}
订阅:
博文 (Atom)