Install fonts under Linux

Most of computer fonts people using are TrueTpye fonts. TrueType fonts end with .ttf , which stand for TrueType Font. This tutorial shows how to install TrueType fonts in Linux (Debian, Ubuntu, Linux Mint, etc).

General way to install TrueType fonts

All of the TrueType fonts are under /usr/share/fonts/truetype, simplest way is to copy ttf file to this directory and give it the right permission. For example, if you want to install Ubuntu font family manually. You can download the font file from official site.

In the terminal, download the package:

 wget http://font.ubuntu.com/download/ubuntu-font-family-0.80.zip

unzip the file into directory ubuntu-font-family-0.80

 unzip ubuntu-font-family-0.80.zip

and then use copy command to copy all the files to /usr/share/fonts/truetype,/usr/share/fonts directory and sub directory need root to write, so you should add sudo before command. The -r paramater represent recursive, it means all the files under ubuntu-font-family-0.80 will be copied to the right place.

 sudo cp -r ubuntu-font-family-0.80/ /usr/share/fonts/truetype/

finally, you shoulde give this directory and all the ttf under this directory right permission. All the new fonts now can only be used by root. We need to change the permission to let all the users to use these fonts:

 sudo chmod 755 /usr/share/fonts/truetype/ubuntu-font-family-0.80/ -R

then, refresh the font cache to let system detect these fonts:

 fc-cache -f -v

Install new fonts only for current user

As I mentioned in the first part, if you copy the ttf file to /usr/share/fonts directory, all the users can use these new fonts. But if you only want to provide these fonts to specific user, like current login user , you can just copy the file to ~/.fonts directory. If there is no such directory, just create it. The ~ stand for current user’s home directory, full path is /home/<username>. So repeat the operation to install Ubuntu font family:

mkdir ~/.fonts
cp -r ubuntu-font-family-0.80/ ~/.fonts/
fc-cache -fv

Install microsoft core fonts

Microsoft Core Fonts include these fonts:

  • Andale Mono
  • Arial Black
  • Arial (Bold, Italic, Bold Italic)
  • Comic Sans MS (Bold)
  • Courier New (Bold, Italic, Bold Italic)
  • Georgia (Bold, Italic, Bold Italic)
  • Impact
  • Times New Roman (Bold, Italic, Bold Italic)
  • Trebuchet (Bold, Italic, Bold Italic)
  • Verdana (Bold, Italic, Bold Italic)
  • Webdings

Debian/Ubuntn/Linux Mint user just open terminal and run these command:

sudo apt-get install ttf-mscorefonts-installer

or Linux Mint user can find this package in the Software Manager, just search it and click install.

Install Chinese fonts

.ttf files are the English fonts, while .TTF files are Chinese fonts. If we check the C:\Windows\Fonts under Microsoft Windows, there are 3 kind of fonts. One is the .fon fonts, which is the DOS system font, and other two fonts are .ttf and .TTF. We can just make a copy of all .ttf and .TTF file and copy all the files to /usr/share/fonts/ directory under Linux. Although it is illegal under Microsoft’s TOC, but we can still do it. :)

If you dual boot your computer, mount the Windows and copy the files

sudo mkdir /usr/share/fonts/truetype/WindowsFonts
sudo cp -r /media/Windows/Fonts/*.ttf /usr/share/fonts/truetype/WindowsFonts/
sudo cp -r /media/Windows/Fonts/*.TTF /usr/share/fonts/truetype/WindowsFonts/

Install open source Chinese fonts, like文泉驿-微米黑 文泉驿-正黑

sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei

several Chinese font we can choose:

To check more about Chinese font visit Arch wiki

Tip

Install Software Manager under Linux Mint

Linux Mint user can find a font manager under Software Manager. It is really a cool tool to manager your fonts.

List all available fonts

fc-list is a quick and handy command to lists fonts and styles available on the system for applications using fontconfig. You can use fc-list to find out whether particular language font is installed or not.

To list all font faces:

$ fc-list

To lists font faces that cover Chinese language:

$ fc-list :lang=zh

Output will be all available Chinese fonts.

Fix WPS for Linux font missing error

After I installed WPS for Linux under Linux Mint 17.2, I met this problem, “系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、wedding”. According to the copyright, WPS for Linux doesn’t contains these five fonts. You can only find these five fonts and install them in the right place like I said before. One way to find these fonts is to find them in Microsoft Windows system. And another way is to download these files from Internet and install.

Install Korean fonts

Use following command to search Korean font

apt-cache search korean font

and use this command to install Korean font to linux:

sudo apt-get install fonts-unfonts-core fonts-unfonts-extra

Common sense

Fonts type:

  • Sans-serif=无衬线体=黑体:并不是具体一款字体,而是一类字体,选择它其实等于选择这类字体中优先级最高的那款字体。
  • Serif=衬线体=白体:同上
  • Monospace=等宽字体,意思是字符宽度相同:同上
  • 点阵字体=位图字体

无衬线体更适合电脑屏幕阅读,衬线体适合打印。因为衬线可以使得人视线平齐于一行。也就是说不会读破行。

中文显示时有不同的方式,一方面因为中文本身拥有的横和同高度就可以导致这种平齐。行距对中文更重要。

For more information check Debian page Arch wiki and Ubuntu wiki


2015-10-21 linux , linux mint , fonts

git presentation

之前实验室有个培训

What is Git

Git is a free and open source distributed version control system(VCS) designed to handle everything from small to very large projects with speed and efficiency.

Git是一个分散式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。Linus Torvalds 自嘲的取名“git”,该词源自英国俚语,意思大约是“混账1”。

版本控制系统

Version Control Example

Microsoft Word 如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:

想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:

Wikis https://zh.wikipedia.org/w/index.php?title=Git&action=history

Undo Windows: Ctrl+z Mac: Command+z

History

Version control has a very long histroy.

  • Source Code Control System (SCCS)
  • 1972, closed source, free with Unix
  • Revision Control System (RCS)
  • 1982, open source
  • Concurrent Versions System (CVS)
  • 1986-1990, open source
  • Apache Subversion (SVN)
  • 2000, open source

BitKeeper SCM

  • 2000, closed source, proprietary
  • distributed version control
  • “community version” was free
  • used for source code of the Linux kernel from 2002-2005
  • Controversial to use proprietary SCM for an open source project
  • April 2005: the “community version” not free anymore

Git is born

  • April 2005
  • created by Linus Torvalds
  • replacement for BitKeeper to manager Linux kernel source code
  • distributed version control
  • open source and free software
  • compatible with Unix-like systems (Linux, Mac OS X, and Solaris) and Windows
  • faster than other SCMs (100x in some cases)

Git become popular, GitHub launched in 2008 to host Git repositories:

  • 2009: over 50,000 repositories, over 100,000 users
  • 2011: over 2 million repositories, over 1 million users

分布式

Git 是一种分布式版本控制,不需要服务器端软件也可运行

  • 不同用户维护自己的版本库,而不是和核心版本库交换数据
  • 追踪 “change sets” 或者 ”patches”
  • 无需网络,随时随地进行版本控制
  • 分支的新建、合并非常方便、快速,没有任何成本,基本不耗时

Who use Git?

anyone wanting to track edits

  • review a histroy log of changes made
  • view differences between versions
  • retrieve old versions

anyone needing to share changes with collaborators

anyone not afraid of command-line tools

需要注意以下几点:

  1. 只能跟踪文本文件的改动,二进制文件不行,也就是说 如果使用 Git 追踪 Word ,版本控制系统并不知道改动了那些行,只能知道二进制变化了。

    programmer

    • HTML, CSS, JavaScript
    • PHP, Ruby, Ruby on Rails, Perl, Python, ASP
    • Java, C, C++, C#, Objective-C
    • ActionScript, CoffeeScript, Haskell, Scala, Shell scripts

    not as useful for tracking non-text files

    • images, movies, music, fonts
    • word processing files, spreadsheets, PDFs
  2. 编码问题,如果在多平台使用请千万使用 UTF-8 编码

    使用Windows的童鞋要特别注意: 千万不要使用Windows自带的记事本编辑任何⽂文本⽂文件。原因是Microsoft开发记事本的团 队使⽤用了⼀一 个非常弱智的⾏行为来保存UTF-8编码的⽂文件,他们⾃自作聪明地在每个⽂文件开头添 加了0xefbbbf(⼗十六进制)的字符,你会遇到很多不可思议的问题,比 如,网页第一⾏行可 能会显⽰示⼀一个“?”,明明正确的程序⼀一编译就报语法错误,等等,都是由记事本的弱智⾏行 为带来的。建议你下载Notepad++代替记事本,不但功能强⼤大,而且免费!记得把 Notepad++的默认编码设置为UTF-8 without BOM即可

install

  • Linux

sudo apt-get install git or sudo yum install git

  • mac

brew install git

  • windows

https://git-scm.com/

Git basic

在开始使用 Git 之前有些配置

git config --global user.name "John Doe"  # 配置提交用户名
git config --global user.email johndoe@example.com  # 配置提交邮箱


git init  
git status  
git add filename  
暂存区  
git commit -m “"  
git log  

commit message best practices

  • short single-line summary ( less then 50 characters 或者 小于25个汉字)
  • optionally followed by a blank line and a more complete description
  • keep each line to less than 72 characters
  • write commit messages in present tense, not past tense
    • “fix bug” or “fixes bug”, not “fixed bug”

branch

git branch <branchname>  
git checkout <branchname>  
git checkout -b <branchname>  

git push origin <branchname>

git push origin --delete <branchname>

http://nvie.com/posts/a-successful-git-branching-model/

remote

git remote add origin git@blcu.tk:einverne/gitdemo.git  
git push -u origin master  
git remote show origin  

tag

git tag     # list all tags  
git tag v0.9  
git tag -a v1.0 -m “my version 1.0"  
git show tag name #show tag details  
git push origin tag name  
git push origin --tags  

git GUI

other

gitignore

https://github.com/github/gitignore

alias

git config –global alias.st status
git config –global alias.co checkout
git config –global alias.ci commit
git config –global alias.br branch
git config –global alias.unstage ‘reset HEAD –’
git config –global alias.last ‘log -1 HEAD’

GitLab server

http://server.address

  1. http://git.or.cz/gitwiki/GitFaq#head-90fa13ebe170116f1586156e73b549cc2135b784 


2015-10-12 git

残忍的战争

接触韩国电影并不是很长时间,而之前在我看过的电影中推荐过《10部不得不看的韩国电影》,这之后通过周围的推荐和影评,渐渐的看到了更多的韩国电影。《追击者》《太极旗飘扬》《汉江怪物》,这些都是非常不错的片子,可惜当时并不知道。而这部《太极旗飘扬》终于在昨天看完了。

如何去定义这部电影呢?战争片,历史片,影片主要讲述朝鲜战争,也就是韩国说的6.25战争,兄弟俩被强制征兵到前线抵抗北朝鲜的进攻,而哥哥为了保护弟弟屡次铤而走险,完成战功,获得勋章,而过程中哥哥却变的残暴。故事中的哥哥多次的反转,或许这里真的要称赞一下电影的编剧,从来没想到故事的发展会如此的曲折,而最后终也能将电影所要衬托出的主题凸显出—-这是一部彻彻底底的反战电影—-就像之前看的一篇影评中所说,历史上的朝鲜战争,在世界各国的书本中都描述成中国,前苏联和美国的势力角逐。而这部电影让我们看到韩国人对这次战争的思考,当世界两大力量在小小的朝鲜半岛展开时,血腥,暴力是无法想象的,而导演也同样没有回避,用大量的镜头描写战争场面的残酷。

太极旗飘扬

作为一个中国人来看,或许很多人的印象中都是“雄赳赳气昂昂,踏过鸭绿江”,我们的教科书,我们的老师,我们的教育从来没有教育我们战争对于人类来说是什么。多少次观影的过程中,我希望中国从来没有参战,没有之后的更加疯狂的杀戮,也同样不会有那些年战死的中国志愿军。而历史就是历史,一直知道中国会参战,而当韩国军队获得胜利朝鸭绿江挺近的时候,我依然会和主人公一样的开心。这是一部很长的电影,长得让人难受的电影,导演用镜头诉说着那段历史,一个个的反转让人思考。

其中最大的反转就是哥哥这个角色,最开始哥哥弟弟并不愿意参战,而后来哥哥为了弟弟变得疯狂,看到北朝鲜屠杀村民,哥哥变得嗜血,屠戮战俘,哥哥甚至为了功勋而忘记了初心,勋章荣誉让哥哥沉迷其中,成为战争英雄。而之后哥哥看到自己的未婚妻因为战时投奔共产党讨得一点饭吃而被韩国同胞处死,而自己的弟弟被关在仓库烧死(哥哥并不知道弟弟侥幸逃走),从而变得更加疯狂,被北朝鲜俘虏之后成为了北朝鲜的主力“大旗部队”,哥哥的一生,为自己的弟弟,为自己的国家战斗过,也为北朝鲜战斗过,他甚至并不知道为什么要打来打去,莫名其妙的被拉上战场,而之后的一切都被动的产生了。导演很聪明,没有直接明了的说道理,去站在上帝的视角去评价这场战争,同样也很聪明的屏蔽了外界的一切的干扰,中国志愿军只出现了一幕,而美国军队的登陆也只是在收音机中出现,所有的镜头都是正面的战场,保留了观众对这场战争的评价,是非曲直,看完的观众心中自有一个定论。

而弟弟的表现则告诉我们,一个人保留有一丝的人性是多么的重要,即使战争再残酷,人作为人最基本的人性应该保存着,这也就是他即使再忙也会跑到家里去看望自己的母亲和嫂嫂,这也就是他即使所有人都认为那个投降朝鲜的天真擦皮鞋的老乡该杀的时候他会跑出来保护他,这也就是他即使知道前线的危险也会再跑到战场去寻找他的哥哥的原因。人作为人,是应该像哥哥那样,还是像弟弟那样?就像电影中弟弟告诉他哥哥的那样,“如果把那些战俘都杀死,那我们和那些北朝鲜的人又有什么两样?”。

很多人提到这部片子会想到另外一部战争大片《拯救大兵瑞恩》,有的时候我真的会问自己,“为了一个人,又牺牲了那么多的人,真的值得吗?”,我的回答肯定是“值!”,因为这里面就包含着人对生命的尊敬,对战争的敬畏,我相信看完这些电影的人一定是反战的,战争是反人类的。说到底战争只是政府政治斗争的一枚棋子,而受到伤害的永远都是社会底层的平民。

PS.

写完本来是要分享到豆瓣的,只是又不过审了。


2015-09-27 影评 , 韩国

Bash 学习笔记之基本使用

echo $BASH_VERSION

命令行编辑 Emacs mode vs Vi Mode

可以使用 set -o | egrep -w "(vi|emacs)" 命令查看,当前命令行编辑模式。

$ set -o vi
$ set -o|egrep -w "(vi|emacs)"
emacs           off
vi              on

All the above assume that bash is running in the default Emacs setting, if you prefer this can be switched to Vi shortcuts instead.

Set Vi Mode in bash:

$ set -o vi 

Set Emacs Mode in bash:

$ set -o emacs 

using set -o to check all the bash options.

Emacs 编辑模式

完整 Emacs编辑模式快捷键,文档link

Bash Keyboard Shortcuts 在绝大多数情况下一下快捷键可以直接使用

Moving the cursor:

在终端移动快捷键

Command Explain
Ctrl + a Go to the beginning of the line (Home)
Ctrl + e Go to the End of the line (End)
Ctrl + p Previous command (Up arrow)
Ctrl + n Next command (Down arrow)
Alt + b Back (left) one word
Alt + f Forward (right) one word
Ctrl + f Forward one character
Ctrl + b Backward one character
Ctrl + xx Toggle between the start of line and current cursor position

Editing:

编辑相关的快捷键

Command Explain
Ctrl + L Clear the Screen, similar to the clear command
Alt + Del Delete the Word before the cursor.
Alt + d Delete the Word after the cursor.
Ctrl + d Delete character under the cursor
Ctrl + h Delete character before the cursor (Backspace)
Ctrl + w Cut the Word before the cursor to the clipboard. 一般用来快速删除前一个单词,也可以用 Alt + Backspace
Ctrl + k Cut the Line after the cursor to the clipboard.
Ctrl + u Cut/delete the Line before the cursor to the clipboard. 一般用来快速清除当前输入命令
Alt + t Swap current word with previous
Ctrl + t Swap the last two characters before the cursor (typo).
Esc + t Swap the last two words before the cursor.
ctrl + y Paste the last thing to be cut (yank)
Alt + u UPPER capitalize every character from the cursor to the end of the current word.
Alt + l Lower the case of every character from the cursor to the end of the current word.
Alt + c Capitalize the character under the cursor and move to the end of the word.
Alt + r Cancel the changes and put back the line as it was in the history (revert).
ctrl + _ Undo
TAB Tab completion for file/directory names

For example, to move to a directory ‘sample1’; Type cd sam ; then press TAB and ENTER. type just enough characters to uniquely identify the directory you wish to open.

History:

Command Explain
Ctrl + r Recall the last command including the specified character(s)
searches the command history as you type.
Equivalent to : vim ~/.bash_history.
Ctrl + p Previous command in history (i.e. walk back through the command history)
Ctrl + n Next command in history (i.e. walk forward through the command history)
Ctrl + s Go back to the next most recent command.
(beware to not execute it from a terminal because this will also launch its XOFF).
Ctrl + o Execute the command found via Ctrl+r or Ctrl+s
Ctrl + g Escape from history searching mode
!! Repeat last command
!abc Run last command starting with abc
!abc:p Print last command starting with abc
!$ Last argument of previous command
ALT + . Last argument of previous command
!* All arguments of previous command
^abc­^­def Run previous command, replacing abc with def

Process control:

Command Explain
Ctrl + C Interrupt/Kill whatever you are running (SIGINT)
Ctrl + L Clear the screen
Ctrl + s Stop output to the screen (for long running verbose commands)
  Then use PgUp/PgDn for navigation
Ctrl + q Allow output to the screen (if previously stopped using command above)
Ctrl + D Send an EOF marker, unless disabled by an option, this will close the current shell (EXIT)
Ctrl + Z Send the signal SIGTSTP to the current task, which suspends it.
To return to it later enter fg ‘process name’ (foreground).

最常使用的应该还是 Ctrl-a, Ctrl-e, Ctrl-f, Ctrl-b, Ctrl-l, Ctrl-h, Ctrl-w, Ctrl-k, Ctrl-u, Ctrl-y, Ctrl-r.

命令 说明
Ctrl-B 后移一个字符
Ctrl-F 向前移动一个字符
DEL 向后删除一个字符
Ctrl-D 向前删除一个字符
Ctrl-A 移到行首
Ctrl-E 移到行尾
Ctrl-K 向前删除到行尾
Ctrl-P 移到前一行
Ctrl-N 移到后一行
Ctrl-R 向后搜索
Ctrl-J 等同于 RETURN
Ctrl-L 清除屏幕,将当前行放到屏幕最上面
Ctrl-M 等同于 RETURN
Ctrl-O 等同于 RETURN 随后在显示历史命令中下一行
Ctrl-T 颠倒光标左右两个字符,将光标向前移一个
Ctrl-U 从光标位置开始删除行 ,向后删除到行首
Ctrl-V 引用插入

Vi 编辑模式

通过设置 set -o vi 进入Vi编辑模式,正常环境为输入模式,对命令进行修改则按 Esc。完整命令参考.

命令包括 h, l, w, b 等等Vi中使用的命令,可参考另外一篇Vim学习笔记

  • 通过按键 Esc , Ctrl+l(L lower case) ,clear screen。
  • Ctrl-w
  • Ctrl-u
  • Ctrl-k
  • Ctrl-y
  • Ctrl-r

环境配置

特殊文件

最重要的 Bash文件是 .bash_profile ,它在每次用户登陆系统时被读取 /etc/profile 。Bash 允许有 .bash_profile 两个同义文件, C Shell 的 .bash_login 以及 Bourne Shell 和 Korn Shell 的 .profile 。登录时三者中只有一个被读取,如果用户根目录下 .bash_profile 不存在,则 bash 依次查找 .bash_login , .profile.

.bash_profile 只被登录 shell 读取并执行,如果通过命令键入 Bash 启动一个新 Shell, 它就会读取 bashrc 中的命令。

.bash_logout 在每次 shell 退出时被读取并执行。

可以使用 source ~/.bashrc 来使配置文件立即生效。

修改 .bashrc 文件可以精确到对当前用户有效。修改 /etc/profile 对全局用户生效。

别名

给命令添加熟悉的别名

alias name=command

指定 name 是 command 的别名。在“=”两边没有空格,严格语法。

别名是可递归的,可以使用别名定义另外的别名。

选项

别名可以为命令创建方便的名字,它们实际上并不改变shell的行为。选项则不然。基本命令:

set -o optionname	-号 开启
set +o optionname	+号 关闭

检查bash所有可选项,使用 set -o 打印所有列表。

shopt 选项

选项 含义
-p 显示可选设置及其当前取值
-s 设置
-u 失效
-o 允许选项名取值通过 set 命令 -o 选项定义

列表选项如下:

allexport           off
braceexpand         on
emacs               off
errexit             off
errtrace            off
functrace           off
hashall             on
histexpand          on
history             on
ignoreeof           off
interactive-comments     on
keyword             off
monitor             on
noclobber           on
noexec              off
noglob              off
nolog               off
notify              off
nounset             off
onecmd              off
physical            off
pipefail            off
posix               off
privileged          off
verbose             off
vi                  on
xtrace              off
选项 解释
emacs emacs编辑模式
vi vi 编辑模式
ignoreeof 不允许单独使用 Ctrl-D 退出
noclobber 不允许输出重定向(>)覆盖已存在的文件
noglob 不允许扩展文件名通配符如*和?
nounset 试图使用未定义变量时给出错误

变量

Shell变量也是一个拥有取值的名字,bash有一些内置的变量,shell编程也可以自定义变量。按照惯例,内置变量名均为大写,当然也有两个例外。

varname=value

等号两边必须没有空格

引用变量,使用符号 $ , 单引号内部的变量会直接使用而不需要转义,而双引号内部变量需要转义

echo $varname

bash 有很多内置变量分布在各个配置文件中。

内置变量

PATH变量,帮助shell找到输入的命令。输入 echo $PATH 得到类似:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
变量 含义
HOME 主目录
SECONDS 调用 shell 的秒数
BASH 正在运行的 shell 实例路径名
BASH_VERSION shell 版本号
BASH_VERSINFO shell 版本信息数组
PWD 当前目录
OLDPWD 最后一个 cd 命令前的目录

2015-09-26 Linux , bash , vim

Linux学习笔记 User and Group

##User

/etc/passwd

类似如下:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh

7个部分:

  • 账户名称
  • 密码,已被移到 /etc/shadow 目录中
  • UID
    • 0 代表“系统管理员”
    • 1~499 保留系统使用,1~99保留系统默认帐号,另外100~499 则保留给服务使用
    • 500~65535 一般用户使用,Linux 2.6.x 已经可以支持 2 的32次方减1 UID
  • GID
  • 用户信息说明
  • home dir
  • shell

/etc/shadow

加密的密码

9个部分:

  • 帐号名称
  • 密码,加密过,如果为* 或 ! 则表示这个帐号并不会用来登陆
  • 最近更改密码日期,1970年1月1号作为1
  • 密码不可更改天数
  • 密码需要重新更改天数
  • 密码更改期限前的警告期限
  • 密码过期的宽限时间
  • 帐号失效日期
  • 保留

useradd

root@linux ~#  useradd username

/etc/default/useradd

新增用户模板

GROUP=100 #默认用户组
HOME=/home #默认Home目录
INACTIVE=-1 # /etc/shadow 内第7栏
EXPIRE= # /etc/shadow 内第8栏
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #home目录内容数据参考

/etc/skel/*

新增用户home目录参考

passwd

设置密码,直接 passwd 则是修改自己密码

root@Linux ~# passwd username

usermod

调整用户帐户信息

userdel

删除用户

root@linux /# userdel [-r] username

-r 连同home目录一起删除

##Group

/etc/group

类似

root:x:0:root
daemon:x:1:root,bin,daemon
bin:x:2:root,bin,daemon
sys:x:3:root,bin,adm

4部分:

  • 用户组名称
  • 用户组密码 /etc/gshadow
  • GID
  • 支持的帐号名称

####有效用户组 查看已einverne用户身份登录,支持的用户组命令:

pi@linux / $ groups
pi adm dialout cdrom sudo audio video plugdev games users netdev gpio i2c spi input

使用命令 newgrp groupname 切换有效用户

/etc/gshadow

类似:

root:::root

4个字段:

  • 用户组名称
  • 密码栏,以 ! 开头表示无法登陆
  • 用户组管理员帐号
  • 用户组所属帐号

groupadd

命令:

root@linux ~# groupadd groupname

groupmod

调整 group 相关参数

root@linux ~# groupmod -g 103 -n groupname groupothername

groupdel

删除用户组

root@linux ~# groupdel groupname

su & sudo

/etc/sudoers 文件,建议使用 visudo 编辑该文件

格式:用户帐号 登录主机 = (可变换的身份) 可执行的命令

用户
einverne ALL = (ALL) ALL
用户组内
%groupname ALL = (ALL) ALL
不需要密码
%groupname ALL = (ALL) NOPASSWD: ALL

chgrp

change file group

chgrp users dirname/filename [-R]

chown [-R]

chown change file owner

chown root:root filename

chmod

change file property, SUID

  • number

      r:4
      w:2
      x:1
    

    chmod [-R] xyz filename/dir

  • 符号

+加入 -除去 =设置
u user g group o others a all


2015-09-24 linux , user , group

GitLab 学习笔记

Here is some config file paths and some commands I used to deal with GitLab. This is a learning note, not an instruction of installing GitLab on your server. For the detail of installation, please check the official site and playlist I create on Youtube.

gitlab icon

##config gitlab主要配置目录 /etc/gitlab/gitlab.rb

##command

  • gitlab-ctl reconfigure always run this command after modifying the config file /etc/gitlab/gitlab.rb. All the config files are generated by this command and located under opt/gitlab/embedded/service/gitlab-rails/config.

  • gitlab-ctl start|stop|restart start stop and restart gitlab service

  • gitlab-ctl status 输出类似下面的格式:

      run: logrotate: (pid 744) 197s; run: log: (pid 737) 197s
      run: nginx: (pid 743) 197s; run: log: (pid 731) 197s
      run: postgresql: (pid 748) 197s; run: log: (pid 738) 197s
      run: redis: (pid 746) 197s; run: log: (pid 734) 197s
      run: sidekiq: (pid 747) 197s; run: log: (pid 736) 197s
      run: unicorn: (pid 745) 197s; run: log: (pid 735) 197s
    
  • gitlab-ctl tail trace the log, and check error

  • gitlab-ctl tail postgresql 单独查看 postgresql 日志

##file path

  • /opt/gitlab gitlab和依赖应用的代码

  • /var/opt/gitlab/bin gitlab-ctl reconfigure命令写入的地方,存放应用数据和配置文件 /etc/gitlab omnibus 版本 gitlab的配置文件,平常只需要修改这个配置文件就够了

  • /var/opt/gitlab/git-data/repositories all the repo are stored here.

  • /var/log/gitlab 包含 omnibus 版本 gitlab 所有组件的日志数据

  • /var/opt/gitlab/nginx/conf/ nginx.conf and gitlab-http.conf

GitLab SMTP setting

official document is here

Following is my setting to use 163 NetEase’s SMTP service. But after I test for a while, most of GitLab emails were blocked by the service. So I change my setting to use mailgun.

# If your SMTP server does not like the default 'From: gitlab@localhost' you 
# can change the 'From' with this setting.
# 网易服务器smtp机器要求身份验证帐号和发信帐号必须一致
# 如果用户在发送邮件时,身份验证帐号和发件人帐号是不同的,因此拒绝发送。
gitlab_rails['gitlab_email_from'] = 'username@163.com'
gitlab_rails['gitlab_email_reply_to'] = 'username@163.com'

#send gitlab notification via SMTP by 163.com
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "username@163.com"
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true

This is my setting for mailgun

# Sending email via SMTP using mailgun, following is the config
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.mailgun.org"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "gitlab@domain.com created in the console of mailgun"
gitlab_rails['smtp_password'] = "password created in the console of mailgun"
gitlab_rails['smtp_domain'] = "your domian.com same as the @domain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true

##Ref

http://doc.gitlab.com/omnibus/


2015-09-20 GitLab , Git

1980也不会存在的爱情

莫名奇妙的陪同学看了这场电影,看之前完全没有了解,只是听说这部电影是在他们那里拍摄的,其他的一无所知。而看之前也同样在豆瓣了解过,5.2的评分让我完全不抱希望,只是同学一再推荐就去了。

1980年代的爱情

只是一部文艺电影,坐在电影院里我一再告诫自己,于是电影就开始了。开场部分大段大段的自白,缓慢的镜头,那个叫做公母寨的地方确实很美,其实整个故事很简单,一个下乡的青年遇到了曾经的初恋,发生了一段美好的故事,虽然结局很悲惨,但过程很美好。这是一个很美好的青春故事,夹杂着那个时代,那个地点特有的符号,特有的宁静,特有的风景,原本应该是一个既能看风景又能看颜值的美好爱情片,却分分钟让我出戏,太过文艺的对白,让我觉得整个过程就像是两个人在背书,虽然作为一个90后并不知道80年代人们的对话,但是总觉得如电影中那样的对话是不大会出现的,你能随口一句话就能引发人生无限思考还能保证押韵?其二就是无法忍受的慢镜头,虽然爱情片总该有那两个镜头能够让人感受到浪漫,但,但对我来说更多的是无聊的等待,当然也有一些记忆深刻的镜头,就比如那个两人坐在竹桥上彻夜谈天,男主吹口琴的瞬间让人感觉到了些许浪漫。其他的镜头和叙述真的很让人出戏。

不过还有些需要被提起的,乡长和老田真是片中最喜欢的两个角色了,在这样的怀旧爱情片中能够出现这样的小插曲还是挺好,一个就是男主和乡长同上厕所,一个就是男主女友来找老田在楼下扫地说,饭菜能准备,床没法准备,再一个就是乡长拿错男主写的情书的时候。也就这样的时候让人会心的一笑。

如果按照观影风向标的打分标准来说,我可以给的分数分别是剧情5分,表演4分,可以给乡长和老田5分,而娱乐性是2分,有一个好的故事却没有一个会讲故事的好导演,哎。

当然此类电影的出现本来就是值得赞扬的,电影院长期被小时代,匆匆那年等等青春爱情片占领的时候出现这样一部稍微文艺一点的爱情片的时候,也不能苛求过多,只是这部电影能让我记住的也就只有那山间的风景了,远眺满山的茶树,中间些许采茶人,也有一条或隐或现的小道,主人公走在这条小路上去找女主的爸爸。

而对比我们的邻居韩国,他们一向以爱情片为人所知,但当然他们什么类型片都能产出了的,但他们拍摄爱情片总让人不能忘却,我的野蛮女友已经过了十多年,我依然会为男女主角的美好爱情所感动,我脑海中的橡皮擦,这只是一部偶然间看过的电影却让我无法忘怀,假如某一天我失忆了,我的另一半会有这样的坚持,陪我重走一遍曾经走过的地方吗?而假如爱有天意,讲过去的爱情故事,其实和这部1980有着相同的背景,却拍出来完全不一样的感觉,这些韩国电影却总有一两个镜头让人无法忘却,总有一两首让人记忆犹新,而回想这部片子,我真的已经想不到什么了,那两首出现过的歌,真是让看得我无比的尴尬,那真的是那个时代人唱的歌嘛?

而更加让我无法接受的便是片尾追加的几十年过后,一次同学聚会,一次滚床单,一次拒绝,而后又是几十年的离别,最后男主想要回到那个宁静的山村的时候,女主却得绝症去世了。世上有这样巧的事情,真巧想到她的时候,她就不再了?虽然知道电影是由小说改编,可是这样的离奇巧合让我无法接受更让我无法接受的是女主嫁人,而丈夫车祸去世了,女主还得了绝症,这是再拍韩剧么?如果导演或者小说作者想要在最后营造悲伤氛围的话,这并不是最佳的方法,我们的眼泪并不会这么留下来,而在此过程中我看到的是男主作为一个男人无法承担起的责任,虽然女主怕步她母亲的后尘怕连累男主,而选择留在山村,如果说女主留在山村最后的目的只是照顾年老的父亲的话,那么父亲去世之后,她便没有了继续留着的理由,她也有理由追寻自己的梦想,追寻自己的理想,甚至是追寻自己的情人,虽然片中并没有对女主有太多的感情描写,但我坚信女主并不是不喜欢男主,不然何必几年前给的笔记本还留着,几年前给的口琴还留着,当然这也可能只是故事太过悲剧,我并不想接受而已啦,我只是尽可能的讲了我的感受,我并没有看过小说或者了解过作者和导演本身。

而最后片中浅尝辄止的历史背景,大家都知道77年恢复高考,78年改革开放,而之前是整整十年的浩劫,乡政府的老田,我倒是很愿意听一听老人家的故事,女主的建筑师父亲,我也愿意听一听您的故事,那是真真的爱情,虽然片中老田也说过了,他说他并不记恨他的妻子,但是他们有感情,虽然那可能并不是我们通常说的爱,而桥梁建筑师的爱情则更加让人惋惜,老人会后悔一辈子吗?电影中也没有交代,只是给了一个老人看着墙上妻子的照片久久不能走动的背影。或许是因为审查的关系亦或许导演或者作者想要说明什么,这世上的爱情并不是什么天长地久,而是就是远隔天涯也能默默的祝福彼此。

http://movie.douban.com/review/7601848/


2015-09-17 影评 , 霍建起 , 野夫

Jekyll markdown syntax

GitHub 官方默认使用的 markdown 解析器是 kramdown,他的语法和 markdown 定义的内容相差无几,只有一些些扩充,下面是一些常用的 markdown 语法以及在本博客中可能会使用到的语法内容,如果想要了解 kramdown 的语法可以参考官方的 ref

h1 Heading

h2 Heading

h3 Heading

h4 Heading

h5 Heading
h6 Heading

Horizontal Rules




Emphasis

This is bold text

This is bold text

This is italic text

This is italic text

Strikethrough

Blockquotes

Blockquotes with plain text

Blockquotes Text

Blockquotes with Lists

  • List one
    • List one.one
    • List one.two
  • List two
  • List three

To end the Blockquotes just put an empty line under >

Lists

Unordered

  • Create a list by starting a line with +, -, or *
  • Sub-lists are made by indenting 2 spaces:
    • Marker character change forces new list start:
      • Ac tristique libero volutpat at
      • Facilisis in pretium nisl aliquet
      • Nulla volutpat aliquam velit
  • Very easy!

Ordered

  1. Lorem ipsum dolor sit amet

    This is ordered List one content

  2. Consectetur adipiscing elit
  3. Integer molestie lorem at massa

This is another ordered list

  1. You can use sequential numbers…
  2. …or keep all the numbers as 1.

Start numbering with offset:

  1. foo
  2. bar

Code

Inline code

Indented code

// Some comments
line 1 of code
line 2 of code
line 3 of code

Block code “fences”

Sample text here...This is code block...paste some code here to try

Tables

Option Description
data path to data files to supply the data that will be passed into templates.
engine engine to be used for processing templates. Handlebars is the default.
ext extension to be used for dest files.

Right aligned columns

Option Description
data path to data files to supply the data that will be passed into templates.
engine engine to be used for processing templates. Handlebars is the default.
ext extension to be used for dest files.

markdown syntax

[link text](http://einverne.github.com)

output:

link text

Add “title text” (which shows up under the cursor)

[link with title](http://einverne.github.io/ "title text!")

output:

link with title

Most URLs will automatically be turned into links. To be explicit, just write it like this:

Autoconverted link <https://github.com/einverne>

output:

Autoconverted link https://github.com/einverne

You can also put the [link URL][1] below the current paragraph
like [this][2].

   [1]: http://url
   [2]: http://another.url "A funky title"

Output:

You can also put the link URL below the current paragraph like this.

Here the text “link URL” gets linked to “http://url”, and the lines showing “1: http://url” won’t show anything.

Or you can use a shortcut reference, which links the text “shortcut” to the link named “shortcut” on the next paragraph.

Or you can use a [shortcut][] reference, which links the text
"shortcut" to the link named "[shortcut]" on the next paragraph.

[shortcut]: http://goes/with/the/link/name/text

Output:

Or you can use a shortcut reference, which links the text “shortcut” to the link named “shortcut” on the next paragraph.

Images

To include an image, just put a “!” in front of a text link:

![Minion](https://octodex.github.com/images/minion.png)

output: Minion

The alternate text will show up if the brower can’t load the image. You can also use a title if you want, like this:

![Stormtroopocat](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat")

output:

Stormtroopocat

Like links, Images also have a footnote style syntax

![Alt text][id]
[id]: https://octodex.github.com/images/dojocat.jpg  "The Dojocat"

output:

Alt text

With a reference later in the document defining the URL location:

emoji

+1 :+1:
smile :smile:
laughing :laughing:
wink :wink:
grin :grin:
cry :cry:
confused :confused:
yum :yum:

You can find the Emoji from this link

Footnotes

Footnote 1 link1.

Footnote 2 link2.

Inline footnote^[Text of inline footnote] definition.

Duplicated footnote reference2.

Abbreviations

This is HTML abbreviation example.

It converts “HTML”, but keep intact partial entries like “xxxHTMLyyy” and so on.

因为本 Jekyll 在 _config.yml 中配置使用 kramdown markdown解释器,所以更多的语法可以参考官方语法页面

公式

使用 MathJax

使用行内模式 $x^2$ 显示为 $x^2$

使用块模式,用 $$ ... 公式内容 ... $$ 来格式:

这里提供在线 LeTex 公式编辑

  1. Footnote can have markup and multiple paragraphs.

    paragraph 2 this is some text。 

  2. Footnote text.  2


2015-09-10 intro , beginner , jekyll , tutorial

解剖朴字读音

##百科解释

维基百科上面的解释,百毒百科大概的解释也类似

在现代标准汉语读音里,有两种分歧:一种读嫖(piáo)《汉语大词典》;另一种读朴(pú,注音:ㄆㄨˊ)。中国大陆一般取前者,而台湾则取后者。

按《广韵》记载,该字“普角切”,按中古音到北京音的演变规律推导,应该读如po。韩语中“普”读作보(po);“角”读作각(gak),“朴”读作박(pak),符合中古音向汉字韩音的演变规律。而一些保留入声的汉语族语言如粤语、闽南语等也读如“朴”。

在古代,所有情况下“朴”的发音都是“普角切”。唯一的例外是作为姓氏。“朴”姓非汉族姓氏,三国时代有夷王“朴胡”。《文选》陈琳《檄吴将校部曲文》有“巴夷王朴胡、賨邑侯杜濩各帅种落,共举巴郡,以奉王职”。《三国志·魏志·武帝纪》有 “建安二十年(公元215年)“九月,巴七姓夷王朴胡举巴夷来附”。《集韵》注云:“披尤切。夷姓也。”可见在当时作为姓氏,“朴”的发音与一般情况下不同。但是第一,即使披尤切,中古拟音phiu,按演变规律今天普通话也应该读作pou;第二当时的朴姓与后来新罗的朴姓未必同源。因此piao音在音韵学上无可信依据。有一说法则认为是朝鲜语固有词“박”的意译“瓢”(piáo)。

我没有找到任何证据显示说“朴”字的发音应该念成piao,维基中也提到一句,“piao音在音韵学上无可信依据 ”。于是我继续寻找证据,说文解字中的解释

朴字

從木。卜聲。

匹角切。三部。按凡鞭扑字從手作扑。卽攴字也。凡樹皮字從木作朴。凡棫樸、樸屬字作樸。卽㯷之省也。凡朴素字作樸。皆見說文。

同样没有任何证据显示“朴”字念piao的音。而我无意中找到这样一篇文章,文中作者同样也对piao的音提出了疑问,而其中作者引用了一段维基中的原文,而和我读到的维基原文竟然有了一段话的偏差

根据朝鲜半岛新罗的开国君主、朴姓的始祖赫居世的传说,相传赫居世是从天上飞来的白马生下的紫卵中出生的,卵形同瓢,所而取姓为朴。朴是朝鲜语“박”的音译。박意味瓢。 (按:”호박”이라는 “박”)

在中文读音里,有两种分歧:一种读嫖(piáo)《汉语大词典》;另一种读扑(pū)《资治通鉴》。中国大陆一般取前者,而台湾、香港则取后者,依据名从主人的原则,朴读作扑比较合理。

按《广韵》记载,该字“普角切”,按中古音到北京音的演变规律推导,应该读如po。“普”韩语读作보pu;“角”韩语读作각gak,“朴”韩语读作박pak符合中古音向汉字韩音的演变规律。

估计当年中国审音委员会为“朴”做普通话审音的时候犯了技术错误,“普”普通话读作pu,“角”普通话读作jiao,于是“朴”就审定为piao,而忽视了“角”的颚化介音i是由于受古声母g颚化为j的影响。“朴”不应该引入这个介音i。河北枣强县朴庄,当地口头都说成“炮庄”,不带介音i。

这段文字中提到的中国审音委员会一段在如今的维基百科中被删去了,虽然也可能是维基百科中对来源的准确要求,但是却大大影响了对朴字发音的理解。所有的一切都有了解释,piao的发音都是当年中国审音委员会的一次“错误”。更加重要的是该文中提到的另一段证据确凿的文字。引用如下

##专业解释

“朴”字的音

###主题:“朴”字的音(1) 版权所有:了了斋 原作

提交时间:08:52:37 08月07日

[按] 【我本来也是跟兄一样,想等方言的材料说明这几个音的关系。看来不容易。也许大家和你我一样,都是平时只用“朴素”的音,其它的音是从字典上查出来的。我是既没见过朴树,也没吃过厚朴。姓朴的也只知道是朝鲜族的大姓,可是说实话,我还没遇到过姓朴的呢。想兄暂时还一筹莫展,我就先走一步,试着回答一下。请兄海涵。

我现查材料现写,请大家随时补充修正,也寄希望有方言材料随时补充上来。请版主原谅冒昧.】

“朴(繁体)”在《广韵》里出现在 4个地方,分别是:

(1)模韵,薄胡切:“朴澴(不是水旁,是立刀旁),县名,在武威。澴音还。”折合今音是pu2。
(2)屋韵,蒲木切:“《尔雅》云:漱(不是水旁,是木旁)朴,心。又音卜。” 折合今音是bu2。
(3)屋韵,博木切:“域(不是土旁,是木旁)朴,丛木。又音仆。朴域,小木也。”折合今音是bu3。
(4)觉韵,匹角切:“木素”。后面要论证,这是今“朴素”的来源

所以我们暂时定音为pu3。

另外,《广韵》也收了“朴”(简体),在觉韵繁体“朴”的后面:“朴,上同。又厚朴,药名。”

这里面,(1)-(3)都是复音词中的音,不知道是从什么路数上来的。看得出,有根底而且与今音有关的是(4)。

(注:《尔雅》一句,通行的断句如此。似不通。望通人教我。)

###主题:“朴”字的音(2) 版权所有:了了斋 原作

提交时间:06:34:00 08月08日

《现代汉语词典》的“朴”字有4个音,出现在下面的说法里:
(1) po1,朴刀。
(2) po4,朴树。朴硝。
(3) piao2,姓。
(4) pu3,朴厚,朴陋,朴茂,朴实,朴素,朴学,朴直。
另外,《字典》给“厚朴”的注音是po4。
可以看出,pu3是活棋,其他都是死子儿。

###主题:“朴”字的音(3) 版权所有:了了斋 原作

提交时间:07:18:17 08月09日

《辞海》也是4个音,同《现代汉语词典》,不必罗列。
不过,《辞海》是百科辞典,它要照顾古今。所以《辞海》在pu3下列有从古至今的不同义项。我们看一看这些义项:

(1) 树皮。《文选·王褒〈洞箫赋〉》:“秋蜩不食抱朴而长吟兮。”李善注引《仓颉篇》:“朴,木皮也。”
(2) 未经加工的木材。《论衡·量知》:“无刀斧之断者谓之朴。”
(3) 原价,本钱。《商君书·垦令》:“贵酒肉之价,重其租,令十倍其朴。”
(4) 敦厚;质朴。《孔子家语·王言解》:“民敦俗朴。”陆机《羽扇赋》:“创始者恒朴,而饰终者必妍。”
(5) 老子用语。指原始自然质朴的存在,即“道”。……

第一项是皮相之见。秋蜩抱朴,它不抱在树皮上,难道还能抱在树心里?这句话不过是说,在肃杀的秋风里,寒蝉抱在木华脱尽的败枝上(所以叫“朴”)长鸣不已。“刀斧之断”就是加工,加工之前就是“朴”。所以“朴”才能成为变化之本,才能后来“十倍其朴”。开始的时候只有“朴”,后来“十倍其朴”就“妍”了。老子当然是希望去雕饰,归真朴。所以,归结起来,“朴”的意义就是“未经修饰之前的原本”,其它是这意义上的延伸。

###主题:“朴”字的音(4) 版权所有:了了斋 原作

提交时间:19:55:57 08月10日

《广韵》“木素”的说法来自于《说文》:“朴,木素也。”“素”指没有修饰,原始的;“朴”是“未经修饰的原本”,“朴素”是近义词的合成。前引《广韵》四个字里,只有这个字是它可能的来源。可是问题出在“木素”的“朴”来源于觉韵,就折合来说,不应当是“pu3”,而应当是“po”(声调不可折合,我们后面再说。)

“朴”字以“噗(没有口)”得声。从前面引的《广韵》里就可以看出,四个字里有两个都是“屋”韵,而不是“觉”韵。翻开《广韵》更可以知道,这个声符的字在“屋”韵里的跟在“觉”韵里的完全不成比例,加上“沃”韵和“烛”韵的就更多了(今天可以同韵)。下面把字引在下面,不需要认识,可以有一个概略的印象(以下用 + 号代替这个声符):

屋韵:
蒲木切:+毛,人+,臣+,矢+,+,禾+,木+
普木切:酉+,土+,禾+,手+,+鸟
博木切:水+,阜+,车+,女+,木+,犬+,足+,丝+,衣+,髡+,革+
沃韵:
蒲沃切:人+,臣+,金+,虫+,车+,+鸟
烛韵:
房玉切:幞,衣+
封曲切:革+
************
觉韵:
蒲角切:手人+
匹角切:璞,木+,牛+,土+

这就难怪了,觉韵的5个字,怎么能抵挡得了屋韵的32个字。而且,无论是繁体“朴”的谐声,还是简体“朴”的谐声,都是在“屋”韵(卜是博木切)。可不,今天的事实也是大家能认得的“璞”和“朴”都念屋韵了。

(周末我休息,提前发表。星期一再见。)

###主题:“朴”字的音(5) 版权所有:了了斋 原作

提交时间:11:59:11 08月13日

有人说,语音的特点就是“习非成是”。这话不假。前一阶段大家都因“呆dai”“呆ai”二字语音合并而议论纷纷。这二字原来的意义是有差别的。ai是死板,死心眼的意思;dai是发愣,精神不正常的意思。一个人死板,不一定发愣;一个人是呆子,看问题可不一定死板(多数时候,他不看问题),有时候呆子还会突发奇想。可是“呆子”是书面上常见字,ai是口语字,现在的读书人又不常说这个词,最后dai 的音就战胜了ai 的音。(读书人也不见得不说ai,我有一回在课堂上听见周祖谟先生说,“看问题也不能太ai了。”而且周先生的发音前面还带有声母ng。不知道是北京话的底层还是周先生特有的地方口音。可惜一代鸿儒,转眼之间就不在了,求教无门。)dai、ai合一是最近刚刚发生的事,众情汹涌。有些是历史上的事,人们也就安之若素了。举个例子来说,“三分之一”现在大家都读“fen1”,其实这个字本念“fen4”,浊声母。吴语区的人大概还能分出来。意思是三份儿里的一份儿。现在大家按“分”理解,好像也讲得通,然而终究不能那么妥贴。不过硬要讲妥贴,也未免太ai了;可是全然不去动脑筋,不就成了“呆子”了?(我没有责怪的意思——难得糊涂,也许是一种大智。)

“习非成是”也不是说故意乱念就可以,这与契机有关。其中最重要的是力量对比。寡不敌众,优胜劣汰。从前,李白念李bo2,它怎么能顶得住白菜萝卜,白布红旗。李“伯”也就只好让位于李白了。“朴”字的音,按语音折合该念“po”,现在大家都念“pu”,这是无可奈何的事。况且这件事是由来已久的。觉韵的这几个字到了宋代的《集韵》里就多数有了屋韵的异读,甚至连“朴”(简体)也有了屋韵的读法。所以现在还想复辟旧音,也就太ai了。

补充:《尔雅》郭注有一个地方说明“雕”等五个词时说:“五者皆治朴之名。”可证“朴”确实是“未治”之前的东西。

(写到这里,我想看官也看累了,我也写倦了,pu3的音正好也讲完了。再写似乎腻味。暂时告一个段落吧。)

###主题:“朴”字的音(6) 版权所有:了了斋 原作

提交时间:10:42:51 09月04日

(有始有终吧,我还是把这《“朴”字的音》写完。不过,以下所写,多少有一点学术性了,不能不表一些态,有说错的,有伤着的,请多包涵,也欢迎据理力争。)

其实,不但“朴素”的“朴”来源于“匹角切”,就是其他3个音也来自于这个反切。《广韵》的四个音,只有“匹角切”可以念“o”韵,其它的音只能是“u”韵。从那几个死子儿的读音被一分为三这件事可以看出,编字典的人大概和我们一样,根本就不知道那3个字念什么,只是依样画葫芦,查字典画出了那3个音,可惜画成瓢了。

“朴刀”我没有见过。从《现代汉语词典》的描写来看,大概就是一种没有修饰的,抡起来方便的实用刀。取名之由就是取其质朴的意思。

“朴硝”通称“皮硝”,是用来“硝皮”的。按《辞海》关于“朴硝”的说明,粗制的“朴硝”叫“皮硝”,精制的“朴硝”叫“芒硝”,可知“朴硝”的说法是相对“芒硝”而言的,也是取其“未治”的意思。

“厚朴”倒很简单。《广韵》收了这个词,就在“匹角切”的繁体的“朴”的后面。可是就连《广韵》已经注明“上同”的“朴素”的“朴”字都已经跑到了“u”韵,它又为什么要读“o”韵呢?

“朴”姓既然是姓,又不是一个常见姓,除了姓那个姓的人,别人也就不知道那是什么音了。我们后面要说明,其实那个音也是来自于“匹角切”。

既然它们都来自于“匹角切”,又为什么要被四分五裂呢?这根源于“朴”是个入声字。定音人吃了个烫山芋,心里烫的没抓挠,脸上还得装镇定。

###主题:“朴”字的音(7) 版权所有:了了斋 原作

提交时间:07:38:41 09月05日

“朴”来自于入声,入声在官话区的中心地带是一个已经死亡了的调。

可是入声是国粹,也是士大夫摇头晃脑的资本。俞敏先生曾回忆说:旧时念《大学》是“大学xue4之道dao3,在明明德de4”(《李汝珍〈音鉴〉里的入声字》,《北京师范大学学报》1983年第4期)。“学”和“德”是入声字,可以看出,为了保存国粹,我国的士大夫是多么地甘冒佶曲聱牙于不顾。可是士大夫可以在念唐诗的时候念李白bo2,可是到了饭桌上,他也不敢把白菜说成“菠菜”。所以,这只能是一场闹剧。

天不作美,古入声的清音入声字在北京话里散入四声,没有规律可循。现代科学的研究法传入我国后,人们试图找到规律。最早有白涤洲先生的《北音入声演变考》(《学术季刊》第2卷第2期,1931),后有陆志韦先生的《国语入声演变小考》(《燕京学报》第34期,1948),走的都是统计的路子。白氏的结果是不送气清入归阳平,送气清入归去声;陆氏的结果是不送气清入阴平阳平差不多,送气清入归入阴平的更多。这真叫人哭笑不得,本以为数字总是客观的,没想到连这所谓客观的数字也靠不住。

另一条路子是领悟的路。这当然最好的成果是平山久雄先生的《中古汉语的清入声在北京话里的对应规律》(《北京大学学报》1990年第5期)。平山先生发现,凡动词念阴平,名词念上声。不用说,这是了不起的发现。(真正的发现就是那种谁都看得见,可是谁也不知道;等到发现后,大家又觉得没有什么了不起,放在谁也发现得了的那种东西。——我曾经把这项成果告诉马希文先生,马先生感慨地说,他从各个角度对入声字做了统计,就是没有从这个角度统计。马先生是五十年代北京的神童,七十年代我国863计划的主持人,八十年代我国计算语言学的开创者。马先生是一位不懈的追求者,也是计算机专家。可见智者千虑,也有偶失的时候。而不讳言误失,才不失科学家的本色。去年马先生往生它界,谨此纪念我国这位真正的科学家。)的确,我们只要把字列在下面,大家谁都会看得出来:

吃喝说挖刮揭拍戳擦掐贴塞劈刷滴泼扎杀歇织哭出……

脚角骨铁血曲谷雪宿(xiu3)柏塔法色(shai3)室(shi3)…… 事实胜于闭着眼睛的方法。这个结果无疑是对的。(我一点也没有否定方法的意思,我否定的是闭着眼睛的方法。我在一篇文章中说过,方法是客观规律的对应物。如果你拿来一种方法,居然可以解决问题,那只是说,那个事物的规律还没有用这种方法解决过,不是说那个方法是万能的。)——不过,就我的看法,平山先生对形成原因的解释还不能令人首肯,至少未达一间,有一个结还没有解开。目前这个发现是2+1=1,还不是1+1=1,希望有志于此的能最后解开这个语言学领域里的哥德巴赫猜想之谜。

这就决定了,“朴”的声调不可能折合。那么,“朴”的那些奇奇怪怪的声调又是怎么来的呢?

(注:“方法是客观规律的对应物”这句话不是我的发明,是我从课堂上听来的。可是老师也忘记出处了。向各位请教,有谁知道这句话的原出处,感谢不尽。——niina如何?)

###主题:“朴”字的音(8) 版权所有:了了斋 原作

提交时间:07:16:38 09月06日

“朴刀”的“朴”是第一声,就先从它说起。

给“朴刀”定第一声,是知其不可为而为之。编字典,你总要给一个字定一个音,不能因为不知道而空着。这是没办法的事。

为了给清音入声字定音,普通话审音委员会有个规定:“古代清音入声字在北京话的声调,凡没有异读的,就采用北京已经通行的读法。凡是有异读的,假若其中有一个是阴平调,原则上采用阴平,例如:“息”,“击”。否则逐字考虑,采用比较通用的读法。”

所以,我估计,这个阴平调就是在这样的原则下决定的。

###主题:“朴”字的音(9) 版权所有:了了斋 原作

提交时间:07:17:46 09月06日

“朴树”“厚朴”念去声,可是个开玩笑的音。

北京话没了入声,可就难坏了北京的读书人。——放到现在这网上,当然没问题,有人不是特别看不惯咬文嚼字吗?(不过你别看他在网上装潇洒,错别字满篇,真要给他填提职的表或者申请奖金的表,他恨不得情人给他当校对呢!)——可是那年头的读书人要做诗,还要押古韵,不知道入声这辈子别想得功名,于是就有了一个上不了台面的理论:入声通通念去声。这就是第(7)节一开头演出的那一场俞敏先生说的闹剧。这和前面说的“原则上采用阴平”可以说是异曲同工,或者用现在的时髦说法,刚好是一、二、三、四的“镜像原则”,两个极端交相辉映。这也就是为什么“厚朴”“朴树”念去声。

###主题:“朴”字的音(10) 版权所有:了了斋 原作

提交时间:07:19:16 09月06日

“piao2”是“朴”姓的专用音。朝鲜人根本不念piao2,而是念pak。如果让汉人听起来,就是“pa”,根本听不成“piao2”。

其实这是北京话的老土话。“朴”字来源于“觉”韵。“觉”韵和“药”韵“铎”韵在中原地区念“o”韵(及其变体“e”韵),北京就念成“ao”韵。比如中原的“落luo”北京就念成“lao”;中原的“药yue”北京就念成“yao”;中原的“学xue”北京就念成“xiao”;中原的“觉jue”北京就念成“jiao”;中原的“郝he”北京就念成“hao”;中原的“弱ruo”北京就念成“rao”;中原的“着zhuo”北京就念成“zhao”;中原的“薄bo”北京就念成“bao”。当然了,中原的“朴po”北京就要念成“piao”了(以上举例里,“学、觉、朴”是同韵字)。北京人和东北人是一路的。北京人和东北人见过朝鲜人,这是他们的骄傲和自豪,他们说朝鲜人姓“piao”,别人还敢说什么,这不,《现代汉语词典》也就把“piao”收进来了。

###主题:“朴”字的音(尾声) 版权所有:了了斋 原作

提交时间:07:08:48 09月07日

我要说的也说完了。要问我“朴”字该念啥,在我看,就是一个音——“pu3”。只有这是历史演变的自然结晶,其他都是人工的。为什么这个音会是活棋,其他的都是死子儿?很简单,因为它秉承了天地正气。你瞧,它的声调也刚好是合理的:“朴”是“未治”之器,名词,它该念上声。而其他的都是定音人的私生子,连声调也是没来由的。有人说,声调是汉语音节的灵魂——瞧那个“朴树po4shu4”,这不是诅咒那个树呢嘛,小心烂舌头!至于那位歌手,我想他一定愿意听人叫他“pu3shu4”而不愿意让人骂他“po4shu4”。我猜的不会错吧?

不过,我可得声明,如果大家要参加高考,还得写4个音,而且不能张冠李戴了。为啥?考官是他不是我。好在我写了这么多,大家也把这几个糊涂音的糊涂法儿记熟了,就算是我对传播这4个音当了功臣——如此想来,那4个音的制定者不会怪罪~~~我~吧~~~!

(补1:古反切折合今音,常常把人绕到五里雾中。不过“匹角切”倒是刚好切出来是“piao”。)

(补2:我估计“朴刀”就是大刀。“大刀”做专有名词不大好,所以叫“朴刀”。另外,古汉语直至近代汉语,“朴”应该是一个活跃的词。古代有“朴马”“朴牛”“朴猪”一类的说法,有人释为“大”或者“未经调驯的”,错!这是指未骟的,即今天的种马、种牛、种猪,也是“未治”的意思。(不过古代的用处大于今天,不能用“种”这个字眼,今天人类自大无比,可怜的动物也就只有这个作用了。)今天“朴”字已经退居“词素”的位置,所以上面所说的“活棋”也已经是半活的棋了。)

——全文完——

整段文字引用自《北京大学中国语言学研究中心》,很可惜,这个网站在我访问的时候已经无法访问,我不清楚为什么,最后只是简单的利用Google Cache找到了一些源头。

而我尝试访问中华人民共和国教育部网站,想探寻一下当年审音委员会的文件(关于《普通话异读词审音表》的通知)的时候,它告诉我栏目正在维护中,不了了之。而在其他网站

現在從字典到《辭海》,冷僻字都有大量錯音,主要原因是盲目用現代讀音套古字典反切,罔顧音系演變的其他規律。擧個例子:

“朴”審為piao2。按《廣韻》記載,該字“普角切”。估計當年中國審音委員會為“朴”做普通話審音的時候犯了技術錯誤,“普”普通話讀作pu,“角”普通話讀作jiao,於是“朴”就審定為piao,而忽視了“角”的顎化介音i是由於受古聲母g顎化爲j的影響。“朴”不應該引入這個介音i。

韓國姓“朴”讀作pak,是符合“普角切”在韓語中的演變規律的。那麽普通話也應該考慮“普角切”這個中古音節在普通話中是怎麽轉變的。還有個可能性是根據《集韻》“披尤切,音䬌。夷姓。” 用現代音,披pi2尤you2切出piou2,piou3不符合北京音系,就用近似的piao2。還是錯!

来自新一届普通话审音委员 北大中文论坛

##总结

因为最近看韩语发音,明明“박“的发音和pu相近,就是不明白为什么要生生的翻译成piao?韩语与汉语的渊源大家熟知,而我却一时迷失了,搜罗这么一大段文字,也许没有人能完整看完,而我也并不是自证pu发音的正确性,只是简简单单的感慨一下,历史时代的变迁或多或少的影响着后世的发展,文字的发音会因为一次阴差阳错的制定而变得如此可笑,而这更让我想起了《1984》中描写的对语言的改造,这一切也并不是不可能,既然发音可以变,那为什么含义就一定是那个含义呢?难道不会是后人赋予的某个含义么?如果没有人去考究,亦或是将原始资料全部焚毁,后人还知道吗?而这一切不也正是GFW正在干的事情,将一切不合“规定”的言论立即删去,把所有的言论圈在局域网内,让人无法考证,或许以前我们还能有纸质的文档可以保留下来,而如今大部分的资料都是电子形式,很久很久以后,我们还知道我们说的那个东西确确实实是那个东西吗?

记得很久以前看霍炬的一篇文章,其中说到一句,“Google给我们的最大价值,除了信息流动加速,就是信息永存,当写完一篇博客,点击发布之后,无数的蜘蛛就会把这篇文章复制若干,存在世界的各个角落。这些言论无法被某个组织控制或删除,也无法阻止其流动。”看到这里的时候,我就被深深地触动了,这是霍炬热爱Google的原因,同样也是我热爱Google的一大原因。回到朴字发音的问题,我当时问的时候,大部分人回答的是“朴树”念做“pu3shu4”,而事实上“朴树”念做“po4shu4”汉典,这是现代汉语字典定义的,“朴信惠”念做“piao2xin4hui4”,而事实上,我认为应该念做“pu3xin4hui4”。至于谁对谁错,又有什么意义呢?

##参考


2015-09-03

Time to say Goodbye to moments

是时候告别朋友圈了,一遍一遍的告诉自己,曾经关闭过很长一段时间的朋友圈,后来又开启了,用过这段时间之后还是选择关闭。关闭之前说过推荐10部不得不看的韩国电影,今天推荐完最后一期,也就是最后关闭朋友圈的时候了。

wechat no talk

##内容匮乏,互动缺失

微信固有的封闭模式导致了微信产生的内容的局限性,原创的内容匮乏,朋友圈中充斥着转载文章,剩下的就是晒吃晒喝晒自己,而对于我,微信的审查机制导致部分文章在我看到之前就已经被删除,白白浪费我加载的时间,其他内容很少找到我感兴趣的,对于各种晒的,其实我也并不是太关心今天吃了什么,喝了什么。而互动性来说,微信是所有SNS中最封闭的,有时候会在网上随意浏览看新闻的时候看到微信朋友圈中的截图,并以此作为一个新闻,这时我会想,到底是哪个朋友出卖了在朋友圈中发表内容的人,就像前段时间网上流传的毕福剑的视频,原本只是朋友酒席上一番玩笑,却被拿到大众面前,我深深的为毕福剑有这样的朋友而感到悲哀。对那些想要堂堂正正发表新闻的人来说,获取别人通过公开渠道发表的内容才是对别人的尊重,如果当时发朋友圈的那个人只是想在朋友间发表内容,那作为他朋友圈中的一名,至少应该得到当事人的许可才能将朋友圈的内容公开,这是最基本的尊重。

而朋友圈最大的问题在于互动的缺失,正像之前看到的文章—-“新技术真能带来变革吗?”一文中提到的,微信对于公共议题的讨论连微博都比不上。朋友圈中的大部分都是内容的消费者,而大部分的内容生产者都是抱着强烈商业目的的,都是想着向你卖东西。而少数剩下能够讲实话说真话的内容早已经在别人分享到朋友圈之前就消失在了微信的平台上。

##即将泛滥的广告

随着微信用户量的增大,微信变现的方式也会越来越激烈,就前段时间还开放了广告自助平台,朋友圈的广告泛滥的结果可想而知,虽然目前朋友圈的广告并不是很多,大部分的广告也并不是很讨人厌,只是我天生的广告洁癖让我无法忍受。

##朋友圈中的信息孤岛

或许有些人会反问我说,他们只是在碎片的时间中刷刷朋友圈,而我会回答他们,关闭朋友圈之后我会利用碎片的时间阅读RSS,有着开放的互联网可以值得我去拥抱,为什么我还要看朋友圈那一点点和整个互联网脱离的孤岛。我宁愿在闲暇的时间看他人博客上经过长时间思考写出的文章,宁愿看Google+上对于某个问题激烈的讨论。我关闭朋友圈的另外一个原因就是经常看到不经过大脑思考就转发的内容,就如之前的“贩卖孩童一律死刑”的转发,虽然我的朋友圈中父母亲并不是很多,但也依然看到了不少的转发。虽然我也并不能有任何指责,拐卖孩童本身就是一件很严重的违法事件,至于判刑,如果真像大家所说的那样呢?那件事情之后我看了很多的文章,有讲到美国儿童失踪之后的警方处理流程,有讲到法律判刑的基准,有讲到民意等等的,只是那些文章我都不是在朋友圈中看到的,朋友圈中终究没有人认真的讨论这件事情,而是无休止的引发着仇恨。

##最后

终于有勇气关闭朋友圈,也再没对朋友圈有何留恋了。

##参考


2015-09-02 微信 , 思考

Google+

最近文章

  • Maven 介绍 Maven 是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理。自动化构建过程,从清理、编译、测试和生成报告、再到打包和部署。
  • IntelliJ IDEA 中使用 Resin 调试 平时开发环境使用的是 jetty,而 Java Web 有一个更好更快的服务器 Resin,这篇文章就来说一下什么是 Resin,以及在 Debug 中如何使用。
  • 使用Shell命令来对 Unix 时间戳和日期进行转换 date 命令 在程序中经常要使用到 Unix timestamp 和日期的转换,通常情况下都是Google一个时间戳转换的网页在进行转换,其实 Linux 命令中就有能够快速实现转换的命令。主要都是集中在 date 这个命令。date 命令主要用于显示或设定系统时间和日期。
  • Mastering the Vim 我已经用了很长一段时间 Vim 了,但是 Vim 最可贵之处便在于你永远达不到 Vim 的天花板,在使用的过程中我永远会发现操作 Vim 的其他便捷方法。最近看了一个关于 Vim 的讲座 ,革新我对 Vim 命令的认识。可以说掌握这样的一个世界观可以对 Vim 的操作上到另外一个层次。下面就总结一下这个视频中的精髓内容。
  • Spring MVC 应用处理 CORS 什么是跨域或者说什么是CORS(Cross-origin resource sharing),中文叫”跨域资源共享”。在了解 CORS 之前首先要知道“同源策略”,出于安全考虑,浏览器会限制Ajax中发起的跨站请求。比如,使用 XMLHttpRequest 对象发起 HTTP 请求就必须遵守同源策略(same-origin policy),”同源策略“是浏览器安全的基石。具体而言,Web 应用程序能且只能使用 XMLHttpRequest 对象向其加载的源域名发起 HTTP 请求,而不能向任何其它域名发起请求。阮一峰写的一篇关于 CORS 的文章 介绍得非常详细,这里主要记录一下重点以及 Spring MVC 中如何处理 CORS。