[克林贡语辞典] 第三章 名词 (3.3.6)

3.3.6. 后缀的顺序

在对-vam this “这” 和-vetlh that “那”(section 3.3.4)的介绍中稍微提了一下这点:当一个名词后接有不止一个后缀时,这些后缀根据各自的类型合理排列。 一个名词接有五个后缀的情况很少有,但确实会出现。下面是几个例子:(数字表示后缀类型)

QaghHommeyHeylIjmo’ due to your apparent minor errors “由于你的一些明显的小错误,”(好拗口。。。)

Qagh (noun) error “错误”
-Hom (1) diminutive “小词缀”
-mey (2) plural “复数”
-Hey (3) apparent “语气限定,显而易见的”
-lIj (4) your “所属限定,你的”
-mo’ (5) due to “语法标记,由于”

 

pa’wIjDaq in my quarters “在我房间”

pa’ (noun) room “房间”
-wIj (4) my “所属限定,我的”
-Daq (5) locative “语法标记,方位”

 

Duypu’qoqchaj their so-called emissaries “他们所谓的使者”

Duy (noun) emissary “使者”
-pu’ (2) plural “复数”
-qoq (3) so-called “语气限定,所谓的”
-chaj (4) their “所属限定,他们的”

 

qamDu’wIjDaq at my feet “在我脚上”

qam (noun) foot “脚”
-Du’ (2) plural “复数”
-wIj (4) my “所属限定,我的”
-Daq (5) locative “语法标记,方位”

 

rojHom’e’ the truce (as topic) “休战

roj (noun) peace “和平”
-Hom (1) diminutive “小词缀”
-‘e’ (5) topic “语法标记,主题”

 

上面所有的例子使用的都是简单的基本名词,复杂名词后缀的添加和它们没有区别。

DIvI’may’DujmeyDaq at/to the Federation battle cruisers “在联邦战列巡洋舰队上”
(DIvI‘:联邦,may’:战斗,Duj:船)

DIvI’may’Duj (noun) Federation battlecruiser “联邦战列巡洋舰”
-mey (2) plural “复数”
-Daq (5) locative “语法标记,方位”

 

baHwI’pu’vam these gunners “这些炮手”
(baH:发射,wI’:动词转名词后缀)

baHwI’ (noun) gunner “炮手”
-pu’ (2) plural “复数”
-vam (4) this “指示限定,这个”

Minecraft Linux版中文输入解决办法


只能算个workaround,不是正经的mod或者patch。。。
只是在窗口下方加了个高20px的TextField,没有对MC的内部做修改
问题原因:

  1. ibus 如果系统装有ibus的话,ibus无论是在输入法开启还是关闭状态都会拦截所有输入,所以ibus运行时mc完全接收不到按键信号,于是网上很多解决linux下mc按键问题都是先kill掉ibus-daemon,运行mc,mc退出后再重启ibus
  2. lwjgl 解决掉ibus之后,紧接着另一个问题出现了,mc的所有输入信号全都是通过lwjgl库来处理,而lwjgl貌似还不支持中文

解决方法:换掉ibus,使用java自己的文本输入框
步骤:

  1. 卸载ibus,安装fcitx,fedora系统的话可以直接使用yum安装,个人认为fcitx比ibus好用多了
  2. 按mc版本下载对应补丁
    版本 下载地址
    1.2.5 [wpdm_file id=4]
    1.3.2 [wpdm_file id=5]
  3. 安装。和正常的mod安装方法相同,把压缩包中文件拖进minecraft.jar中的对应位置即可

副作用。。。。:MinecraftSP启动器无法使用,需要直接命令行启动minecraft.jar

cd ~/.minecraft/bin;java -Xms1024m -Xmx2048m -cp jinput.jar:lwjgl.jar:lwjgl_util.jar:minecraft.jar -Djava.library.path="./natives" net.minecraft.client.Minecraft YOUR_ID

记得把YOUR_ID改成自己的名字

另附添加了jvm调优参数的脚本

[yinseny@localhost bin]$ cat /usr/bin/minecraft 
#!/bin/bash
cd /home/yinseny/.minecraft/bin
java -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:+UseFastAccessorMethods -XX:+AggressiveOpts  -XX:+DisableExplicitGC -XX:+UseAdaptiveGCBoundary -XX:MaxGCPauseMillis=500 -XX:SurvivorRatio=16 -XX:UseSSE=3 -XX:ParallelGCThreads=2 -Xms1024m -Xmx2048m -cp jinput.jar:lwjgl.jar:lwjgl_util.jar:minecraft.jar -Djava.library.path="./natives" net.minecraft.client.Minecraft yinseny >> /dev/null

效果截图:

源码(1.3.2):
修改后的main函数

	public static void main(String[] par0ArrayOfStr) {
		......
		final Frame var12 = new Frame();//需要把frame设置成final
		var12.setTitle("Minecraft");
		var12.setBackground(Color.BLACK);
		JPanel var11 = new JPanel();
		var12.setLayout(new BorderLayout());
		var11.setPreferredSize(new Dimension(854, 480));
		var12.add(var11, "Center");
		var12.pack();
		var12.setLocationRelativeTo((Component) null);
		var12.setVisible(true);
		var12.addWindowListener(new GameWindowListener());
		MinecraftFakeLauncher var9 = new MinecraftFakeLauncher(var1);
		MinecraftApplet var13 = new MinecraftApplet();
		var13.setStub(var9);
		var9.setLayout(new BorderLayout());
		var9.add(var13, "Center");
		var9.validate();
		var12.removeAll();
		var12.setLayout(new BorderLayout());
		var12.add(var9, "Center");
		var12.validate();
		var13.init();
		var13.start();
		Runtime.getRuntime().addShutdownHook(new ThreadShutdown());

		//以下为添加的代码
		final java.awt.TextField chatline = new java.awt.TextField();
		var12.add(chatline, BorderLayout.PAGE_END);
		chatline.setPreferredSize(new Dimension(854, 20));
		chatline.addKeyListener(new java.awt.event.KeyListener() {
			@Override
			public void keyPressed(java.awt.event.KeyEvent arg0) {
				if (arg0.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
					String tmp = chatline.getText();
					if (tmp != null && !tmp.isEmpty()) {
						theMinecraft.getSendQueue().addToSendQueue(
								new Packet3Chat(tmp));
						chatline.setText("");
					}
				} else if (arg0.getKeyCode() == java.awt.event.KeyEvent.VK_ESCAPE) {
					chatline.setText("");
				}
			}
			@Override
			public void keyTyped(java.awt.event.KeyEvent e) {}
			@Override
			public void keyReleased(java.awt.event.KeyEvent e) {}
		});
		var12.pack();
		var12.validate();
		// 结束
	}

Wine QQ 2012 点击密码框崩溃的解决办法

出错原因:user32编译时使用O2等级优化
解决方法:修改user32的Makefile优化等级并重新编译
步骤:

  1. 直接安装二进制包的需要先下载wine-1.4源代码(下载地址)并解压
  2. 打开wine-1.4/dlls/user32/Makefile,将
    CFLAGS          = -g -O2

    修改为

    CFLAGS          = -g -O0
  3. 保存后重新编译当前文件夹:
    cd wine-1.4/dlls/user32/
    make
    

    从源码安装wine的可以直接

    sudo make install
    

    安装二进制包的需要手动将新的user32.dll.so覆盖掉原来的,存放位置一般在/usr/local/lib/wine或/usr/lib/wine下

顺便附上编译好的user32:[wpdm_file id=3]

[克林贡语辞典] 第三章 名词 (3.3.5)

3.3.5. 第五类: 语法标记

这些后缀与句子中与名词的功能有关。在英语中,主体和客体依靠名词在句子中的位置来分辨。下面两个英文句子使用同样的词汇,但是由于单词顺序的不同,两个句子表示不同的含义:

Dogs chase cats. “狗追猫”
Cats chase dogs. “猫追狗” [[p.27]]

克林贡语中主体和客体也依靠单词顺序来分辨,这会在6.1中详细介绍。
在其他情况下,英语依靠添加介词来来表示句子中名词的功能。在下面的英文句子中,canaries “金丝雀” 前面的around “围绕” 表示金丝雀既没追也没被追:

Dogs chase cats around canaries. “狗在金丝雀周围追猫”

同样,在克林贡语中,表示主体和客体之外的名词必须有一些特殊标记来表示它们的功能。与英语不同的是,这由后缀来完成。

-Daq locative “方位”

这个后缀表示某事件在该后缀所连接的名词附近正在发生/发生过/将会发生。它一般翻译成英文介词的to, in, at, on。具体含义由整个句子决定。举例说明:pa’Daq “在房间” 由 pa’ room “房间” 加后缀 -Daq。他可以出现在如下句子中:

pa’Daq jIHtaH I’m in the room. “我在房间里。”
pa’Daq yIjaH Go to the room! “进房间!”

第一个句子中, jIH I “我” 被使用在 I am “我…” (详见6.3),所以 in “在…里” 是 -Daq 最合理的翻译。在第二个句子中,动词是 jaH go “去”,所以 to-Daq 最合理的解释。英语介词不包含在翻译中。克林贡语 Dung 表示 area above “上方”, DungDaq 表示 overhead “在…上方”,直译”at the area above” “在上方的区域内”。介词的的详细介绍请看3.4。
英语中副词 here, there, everywhere 在克林贡语中由名词 naDev hereabouts “这附近” , pa’ thereabouts “那附近” , Dat everywhere “到处” 表示。这些单词的字面翻译为 “area around here,” “area over there,” “all places,”。不同于其他名词,这三个单词永远不添加表示方位的后缀。(需要注意一点, pa’ thereabouts “那附近” 和 pa’ room “房间” 的发音相同。但是 pa’Daq 只表示 in/to the room “在/去房间”。)
有少数动词含义中包含方位,比如 ghoS approach, proceed “接近,进行”。方位后缀不可以用在这类动词的客体上。

Duj ghoStaH It is approaching the ship. “正在接近飞船。”
(Duj ship, vessel “船,飞船”,
ghoStaH it is approaching it “正在接近”)

yuQ wIghoStaH We are proceeding toward the planet. “我们正在接近这颗行星。”
(yuQ planet “行星”,
vIghoStaH we are proceeding toward it “我们正在接近”)

如果在这类动词后加方位后缀,会导致句子冗余,但不是完全的错误。

DujDaq ghoStaH It is approaching toward the ship. “正在向飞船接近。”

-vo’ from “从……”

这个后缀与 -Daq 类似,但只在活动有远离带有-vo’后缀的名词的趋势时使用。

pa’vo’ yIjaH Leave the room! “离开房间!”

这个句子可以直译为 “Go from the room!” “从房间走!”

-mo’ due to, because of “由于,因为”

这个后缀可出现在如下类型句子中:

SuSmo’ joqtaH It is fluttering in the breeze. “它在微风中飘动”

名词 SuSmo’ 表示 due to the breeze “由于微风”, 所以整句可直译为 “due to the breeze, it [a flag] is fluttering.” “由于微风,它(旗)在飘动。”

-vaD for, intended for “为了,用来”

这个后缀表示它所连接的名词在活动发生时在某种意义上是活动的受益人/物。

Qu’vaD lI’ De’vam This information is useful for the mission.
“这个信息对任务有利。” [[p.29]]

名词 Qu’vaD 表示 for the mission “对任务”,在这个句子中 -vaD 表示信息是为了任务而被使用的。

-‘e’ topic “主题”

这个后缀强调它所连接的名词是句子的主题。在英语中,这常常通过重读指定名词或特殊的句法结构实现。

lujpu’ jIH’e’ I, and only I, have failed.
“我输了,而且只有我一个人输了。”
It is I who has failed.
“是输了。”

De”e’ vItlhapnISpu’ I needed to get the INFORMATION.
“我需要搞到那个信息。”

“我需要的是那个信息,不是别的什么东西。”

不加 ‘e’,同样的句子将不含单独强调的名词:

lujpu’ jIH I have failed. “我输了。”
De’ vItlhapnISpu’ I needed to get the information. “我需要搞到那个信息。”

-‘e’的其他用法详见6.3。

[克林贡语辞典] 第三章 名词 (3.3.3 – 3.3.4)

几个月前买了本Klingon Dictionary,有天偶然间发现有人在翻译这本书,可是貌似很久不更了,于是决定往下续一些,顺便练习练习,渣翻神马的。。。

 

3.3.3. 第三类: 语气限定

这种类型的后缀表明说话者对名词的态度,或说话者对是否正确使用该名词的肯定程度。

-qoq 所谓的

这个后缀表示名词有虚假或讽刺的含义. 说 rojqoq so-called peace “所谓的和平”,而不是简单的 roj peace “和平” , 表示说话者并不真的相信和平是合理的或可以容忍的。

-Hey 显然的,表面上的

这个后缀表示说话者相当确定名词所指的对象可以由该名词准确描述,但有些疑惑。 比如,如果一个克林贡飞船的扫描器发现一个物体,军官报告该物体的存在具有飞船的特征,但还不能确定是否真的是飞船,他会更倾向于使用 DujHey an apparent vessel “看起来像飞船” ,而不单单只是 Duj vessel “飞船” 。 [[p.25]]

-na’ 肯定的

这个后缀类似于 -Hey 。它表示说话者对自己所使用的词语的准确性没有疑问。一旦上例中的克林贡军官确定扫描器发现的物体是一艘飞船,他会用 Dujna’ a definite vessel, undoubtedly a vessel “确定是飞船” 来报告飞船的存在。

3.3.4. 第四类: 所属限定/指示限定

第四类是名词后缀中最大的一类。它由所有所属后缀以及可翻译为 this “这” 和 that “那” 的指示后缀构成。

所属后缀:

-wIj my “我的”
-maj our “我们的”
-lIj your “你的”
-raj your (plural) “你们的”
-Daj his, her, its “他/她/它的”
-chaj their “他们的”

所以, juH home “家” 可构成 juHwIj my home “我的家” , juHlIj your home “你的家” , juHchaj their home “他们的家” 等词。
当被所属的名词表示的是可以使用语言的生命时,第一人称及第二人称需使用一组特殊的后缀:

-wI’ my “我的”
-ma’ our “我们的”
-lI’ your “你的”
-ra’ your (plural) “你们的”

举例说明,这些后缀可以构成, joHwI’ my lord “我的主” 和 puqlI’ your child “你的孩子” 。在表示可使用语言的生命的名词后接普通的所属后缀时(举例:puqlIj your child “你的孩子”),虽然语法上是正确的,但这种结构会被认为包含贬义; joHwIj my lord “我的主” 属于禁忌。学习克林贡语的同学们一定要牢记在心。
表示一个名词是另一个名词的所有者时,不使用后缀。作为替代,两个名词以 所有者-所属物 的顺序表述即可: jagh nuH enemy’s weapon “敌人的武器” (逐字翻译, enemy weapon “敌人 武器” )。这个结构还可表示英语中由 of the 构成的的短语,比如: weapon of the enemy “敌人的武器” 。 (参见3.4节) [[p.26]]

共有两个后缀表示说话者与名词所指物体之间的远近程度。

-vam this “这个”

正如它的英文翻译,这个后缀表示名词所指物体就在附近或该物体是对话的主题。

nuHvam this weapon (near me as I speak) “这个武器(我说话时就在我附近)”
yuQvam this planet (that we’ve been talking about) “这颗星球(我们正在讨论的)”

当用在复数词后面时(接有复数后缀或本身就是复数名词), -vam 翻译为 these “这些”:

nuHmeyvam these weapons “这些武器”

-vetlh that “那个”

这个后缀表示名词所指物体不再附近或在对话中又一次被提起。

nuHvetlh that weapon (over there) “那个武器(远处的)”
yuQvetlh that planet (as opposed to the one we were just
talking about)
“那颗星球(相对于我们刚刚讨论的)”

当用在复数词后面时, -vetlh 翻译为 those “那些” :

nuHmeyvetlh those weapons “那些武器”

克林贡语中没有英语中的 a, an, the 。当从克林贡语向英语翻译时,我们需要自己根据上下文自行添加 aanthe 。本书中的 aanthe 只是为了使英文听起来更自然。

花密 Gnome Shell 扩展【2012/11/01更新】

自从CSDN被拖库之后就正式改用花密,所有网络应用的密码全部更换,但是因为一直系统都是fedora,没有桌面版,有时一些桌面客户端登录需要密码时还得打开浏览器才行,网上搜了一下发现linux平台只有一个cli版生成器,不是很方便,再加上最近终于下决心升到gnome3,于是攒出了个gnome shell的扩展

功能完全正常,自动生成密码,窗口隐藏后数据立刻清空,另外多语言支持中文和英文,唯一的遗憾就是记忆密码栏没办法实现星号

gnome-shell 版本>=3.2

需要gpaste实现复制功能

yum install gpaste

效果图:

 

———————————————————
Update:
-20121101
更新兼容至Gnome3.5
更改init/enable/disable方法

下载地址:[wpdm_file id=6]

 

基于pygtk的Linux原生豆瓣电台客户端

由于对客户端有强迫症,想听豆瓣电台又不想用网页版,网上搜了一下linux的又只有播放器插件(banshee , exaile),都不很满意

一气之下自己捣鼓一个吧,正好练练手

学习了一下pygtk,用着太爽了,尤其是配合glade做GUI

效果图:

 

由于只是娱乐用,所以不会对源码有什么维护…

需要gstreamer-plugins-ugly gstreamer-python pygtk2-libglade(必须是2)

yum install gstreamer-plugins-ugly gstreamer-python pygtk2-libglade

与豆瓣电台交互部分使用的libdoubanfm.py

 

源码下载: {filelink=1}

图片分块python脚本【2011/12/22更新】

前段时间看到有QQ群把图片拆成3×3的9份图片,上传到群相册之后显示成一个大图,蛮好玩,也弄了一个,上传到动漫社的群里了

效果图:

 

不过手动分还是好麻烦啊,于是随手用python写了个小脚本,就当练手了,顺便熟悉了一下pil,确实挺好用

————————————————————————————————-

2011/12/22更新:把图片之间的间隙也算了进来,显示效果更好了
新效果图:

 

import sys
import Image

if len(sys.argv) < 4:  
    print u'Usage: %s filename horizonpiece verticalpiecen' % sys.argv[0]
    exit()

fname=((9,8,7),(6,5,4),(3,2,1))

im = Image.open(sys.argv[1])
size = im.size
piece = (int(sys.argv[2]), int(sys.argv[3]))
print 'piece', piece
padding = (size[0]*5/136,size[1]*8/184)
print 'padding', padding
piecesize = ((size[0]-2*padding[0])/piece[0], (size[1]-2*padding[1])/piece[1])
print 'size of every piece', piecesize

for x in range(1, piece[0]+1):
    for y in range(1, piece[1]+1):
        #(left, upper, right, lower)
        box = (piecesize[0]*(x-1)+(x-1)*padding[0], piecesize[1]*(y-1)+(y-1)*padding[1], piecesize[0]*x+(x-1)*padding[0], piecesize[1]*y+(y-1)*padding[1])
        print 'crop image', box
        p = im.crop(box)
        p.save(str(fname[y-1][x-1])+'.jpg')
print 'finished!'

PHP通过curl登录人人并发布状态…


$username=$_POST["username"];

$password=$_POST["password"];

$message=$_POST["message"];

if($message!=""){

	updateRenren($message,$username,$password,0);

	echo $message;

}

function updateRenren($status,$renren_username,$renren_password,$tried_times){
	if($tried_times>=3){
		return false;
	}

	$cookie_jar=tempnam('./tmp','renren');
	$ch=&getCurl($cookie_jar,"POST","http://passport.renren.com/PLogin.do");
	curl_setopt($ch,CURLOPT_POSTFIELDS,'email='.urlencode($renren_username).'&password='.urlencode($renren_password).'&autoLogin=true&origURL=http%3A%2F%2Fwww.renren.com%2FHome.do&domain=renren.com');
	$str=&sendAndResult($ch);
	$pattern="/get_check:'([^']+)'/";
	preg_match($pattern,$str,$matches);
	$get_check=$matches[1];
	$ch=&getCurl($cookie_jar,"POST","http://status.renren.com/doing/update.do");	curl_setopt($ch,CURLOPT_POSTFIELDS,'c='.urlencode($status).'&raw='.urlencode($status).'&isAtHome=1&publisher_form_ticket='.$get_check.'&requestToken='.$get_check);
	curl_setopt($ch,CURLOPT_REFERER,'http://status.renren.com/ajaxproxy.htm');
	$ret=&sendAndResult($ch);
	if(strpos($ret,"{"allMsg":")===0){
		echo "[Renren] succeedn";
	}else{
		echo "[Renren] failedn";
		updateRenren($status,$renren_username,$renren_password,$tried_times+1);
	}
}


function &getCurl($jar,$method,$url){
	$ch=curl_init();
	curl_setopt($ch,CURLOPT_COOKIEJAR,$jar);
	curl_setopt($ch,CURLOPT_COOKIEFILE,$jar);
	curl_setopt($ch,CURLOPT_URL,$url);
	curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
	curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8");
	//curl_setopt($ch,CURLOPT_VERBOSE,true);
	if($method=="POST"){
	curl_setopt($ch,CURLOPT_POST,TRUE);
	}else{
	curl_setopt($ch,CURLOPT_POST,FALSE);
	}
	return $ch;
}


function &sendAndResult(&$ch){
	$str=curl_exec($ch);
	curl_close($ch);
	unset($ch);
	return $str;
}

Linux下自动更新chromium

为了提高下载速度,下载压缩包时没有用wget,用的是axel,可以分段下载的下载利器,速度是wget的N倍。
可以直接apt-get install axel
或者去http://axel.alioth.debian.org/下载
或者把脚本里的axel去掉,换回wget…

#!/bin/bash
CHROME_DIR="/home/yins"
CHROME_TEMP="/home/yins/.chromium_update"

clean(){
	echo "update error!"
	rm LATEST
	rm chrome-linux.zip*
	exit
}

trap clean TERM
trap clean INT

cd "${CHROME_TEMP}"
if [ -a LATEST ];then
	old=`cat LATEST`
	rm LATEST
	echo "remove the latest file LATEST..."
else
	old=0
fi
if [ -a chrome-linux.zip ];then
	rm chrome-linux.zip
	echo "remove the latest file chrome-linux.zip..."
fi
if [ -a SUCCESS ];then
	rm SUCCESS
fi
echo "getting the LATEST..."
wget http://build.chromium.org/buildbot/snapshots/chromium-rel-linux-64/LATEST -O LATEST
last=`cat LATEST`
if [ ${last} -gt ${old} ] || [ ${last} -eq ${old} ] && [ ! -a SUCCESS ];then
	url="http://build.chromium.org/buildbot/snapshots/chromium-rel-linux-64/${last}/chrome-linux.zip"
	zenity --question --timeout 30 --title='new update' --text="latest : ${last}!! current: ${old} ,30 seconds to choose..."
	if [ $? -eq 0 ];then
		axel -a -n 10 "${url}"
		zenity --question --timeout 30 --title='file downloaded' --text="unzip now ? 30 seconds to choose..."
		if [ $? -eq 0 ];then
			unzip -o chrome-linux.zip -d "${CHROME_DIR}"
			touch SUCCESS
		fi
	else
		rm LATEST
	fi
else
	echo "no update,current: ${old} ..."
fi
echo "========OK========="

再配上计划任务:
先是

$crontab –e

第一次运行crontab的话需要先选择默认编辑器

内容:

#m h dom mon dow command
*/15 * * * * xxx
#每15分钟执行一次xxx命令