关于XIM的那些输入模式

我一直弄不清楚,over-the-spot, on-the-spot, off-the-spot, root-window这帮东西到底有啥区别 今天查了某oracle资料:http://download.oracle.com/docs/cd/E19504-01/802-7789/6ibcsnfb8/index.html 首先这些都是预编辑内容的模式,就是那些你打了但是还没确认的那些字的显示方法…… 貌似over-the-spot是在光标处会出现当先的预编辑内容,但是不会把原有内容自动后移,因此新内容显示起来会覆盖在老的上面。确认之后,新的会把老的挤到后面去。 on-the-spot也是在光标处出现预编辑内容,但是会在预编辑,也就是还没确认的时候就把老内容挤到后面去。 off-the-spot貌似是在窗口左下角之类的位置出一个窗口自己显示预编辑内容,反正应用程序不用关心…… root-window据说会在屏幕底下划出一块来显示预编辑内容,莫非是类似从前dos的输入法…… X上没见过。 反正前两个都要程序管,第三个要输入法自己画。 搞这个是因为,今天实现了GeManX对于输入法预编辑的支持,顺路看了看这方面资料…… 因为新ibus好像不关心你程序自己说自己支不支持预编辑,他总是认为你支持,这就导致本来不支持的GeManX没地方显示预编辑内容了…… 另,有人知道gtk_im_context_get_preedit_string()返回的东西啥编码么?一定是UTF-8?根据locale?

Android市场无法开始下载的问题以及解决

在学校的时候,Android市场上的东西下的好好的。回家之后,虽然能显示开始下载,但是从来也不会真的开始……一开始以为某地被屏蔽,于是开始抓包。但是确定开始下载的时候,连SYN都没有……去往上查,说要允许5228端口。但是根据抓包的情况,一直只有到mtalk.google.com:5228的连接,怎么看都是GTalk的事情。其实这里是被误导了,导致我继续研究了好几天也没有结果。今天猜测是不是这两者有关联。于是研究了5228的情况。在学校可以连mtalk.google.com:5228,在家连不上,看来是这个糟糕的有线通的问题。于是搞了个变通的办法:改hosts,把这个地址指向我的笔记本,然后在笔记本上用ssh把这个端口通过ssh隧道forward到目的地去,隧道出口在学校,因此就可以连上了。搞完之后一试,果然能上GTalk了。出乎意料的是,数秒之内,那些下载都开始了……这是什么意思……………… 你个android市场是要验证用户身份,但是为啥和GTalk捆绑在一起………………反正最后是可以下了……

原来 divert 还要指定ipv4…

最近发现本子的IPv6不能用了…… 一开始还以为是学校路由器有问题后来发现win下可以用…… 另外,刚开机可以用……而且ping6的同时tcpdump会导致系统死锁…… 所以怀疑是软件问题之后想起来,最近为了让新买的Desire能上网,让本挂在无线网上面,设置成了网关…… 还带NAT的……启动那个脚本之后,果然IPv6就挂了……删掉divert 8668 ip from any to any via msk0之后,果然就好了…… 但是我指定的明明是ip,应该是IPv4吧……去往上搜,搜到了FreeBSD 6的Errata,里面说,因为divert套接字不支持IPv6,所以指定ip的话,IPv6的包会被丢掉…… 要指定ip4这样……原来ip指的是所有IP包么!改成divert 8668 ip4 from any to any via msk0果然就一切正常了…… 不能想当然啊…… 另外,这个问题FreeBSD 6就有了,到现在divert套接字还是老样子么…… 真是没人干活啊…… 至少对于divert和v6特殊处理一下么……

给lftp报了一个bug

学校用的proftpd,为了照顾windows用户,设置了UseEncoding GBK GBK这样,proftpd返回的FEAT里面,有LANG,没有UTF8。但是lftp只要知道服务器支持LANG,就会发个LANG过去。只要收到LANG的回复,就认为服务器用的UTF-8……虽然LANG和UTF8都是RFC 2640定义的,但是支持LANG不一定就是UTF8啊……所以发了个patch给作者,不知道他会不会管……— src/ftpclass.cc.orig        2010-04-29 17:20:28.000000000 +0800+++ src/ftpclass.cc     2010-04-29 17:20:42.000000000 +0800@@ -4100,8 +4100,11 @@    case Expect::LANG:       if(is2XX(act))       {–        conn->utf8_activated=true;–        conn->SetControlConnectionTranslation(“UTF-8”);+                 if (conn->utf8_supported)+                 {+                         conn->utf8_activated=true;+                         conn->SetControlConnectionTranslation(“UTF-8”);+                 }       }       else if(act==530)         conn->tune_after_login=true;

关于ssh中的Vim鼠标不好用的问题

只要在.vimrc里面,加上set ttymouse=xterm2就可以了……基本上就是让那边的vim知道,这边发的对应于鼠标动作的转义序列是什么格式的,就可以了……另外,貌似直接在rxvt-unicode里面连ssh再vim是没有问题的,但是在rxvt-unicode里面开screen再连ssh再开Vim就有问题。看来screen在termcap/terminfo方面还是有些问题…… 有待研究……

回收了henryhu.blogspot.com

从前我申请Blogger帐号的时候,发现henryhu.blogspot.com被人用掉了…… 那时候貌似去看过,但是好像打不开还是怎么的……于是只好用easyhu了,后来开技术blog,用的henryhu9……今天尝试了一下,去henryhu.blogspot.com,发现上面没有post,而且那个描述…… 看上去怎么那么像我写的? 加入日期是2005年,比我现在的帐号早了一年左右……于是去Google帮助里面找,后来在登陆的地方找到有找回密码的地方,输入这个Blog之后,他说给一个163.com的邮箱发了邮件……我去我的163邮箱一看,果然有一封邮件…… 利用里面的链接,将老的blogger帐号和我现在的Google帐号合并了…… 于是终于收回了这个域名~~ 拿来干什么呢……PS. 那个老的blogger帐号名称,叫做henryhu_sh…… 天知道怎么想到的……

折腾

折腾了几天,搞了各种事情* 升级Avant Window Navigator到trunk(0.3.9)有一大堆的事情,比如说:# bzr up之后,有冲突,干脆全部干掉重来。发现configure有问题,引用了莫名其妙的ac_python_version变量,这个东西哪里都没有。只好手动改成2.6。# 引用了libdesktop-agnostic,ports里没有,上网去发现貌似也在launchpad上边,可能也是awn这群人搞的,遂bzr co下来# 结果编译的时候有诸多问题,上网去,发现有bug-report,说是vala版本太新,而且他还branch了一个various-fixes分支出来# 第一次听说vala,貌似是利用gobject这套系统,配合一个类似于C#的语言,给C以面向对象能力。编译的时候先弄成C再编译# 再bzr co了那个fixes branch,终于好了。回头对付awn,还算比较容易# 新版多了个curve模式,貌似速度也好不少,稳定性也是,看来这个rewrite还不错* 升级awn-extras也有不少事情:# 发现里面的各个菜单组件都或者崩溃或者没有程序菜单,追溯到python-gmenu,最后看调试信息,发现没有applications.menu文件# 本来想生成一个完了,但是下了个菜单编辑工具alacarte,发现这个里面已经有程序菜单了…… 而且gnome-panel也有…… 标准不统一啊……# 之后再查资料,发现说XDG这套标准允许有前缀,并且通过locate得知有一个gnome-applications.menu在恰当的地方# 最后通过把XDG_MENU_PREFIX设为gnome-解决# 之后又是发现那个Media Player Applet不能放大的(不是文件大小)视频。怀疑和之前totem的问题一样# 看代码发现用的playbin这个gstreamer组件,直接gst-launch,果然出错,而且信息和totem的一样# 上网搜了一下,有人说totem的pkg-message里说了这个问题,果然有…… 用了就好了# 说明这个问题不只totem有,用gstreamer的都有…… 为啥默认的那些shm的参数那么小……* xps文件查看上两天有人发来xps文件,不能看…… 去网上下了XPS Essentials装,结果wine运行说有gdiplus的函数没实现…… 搜了之后,发现新版wine实现了,遂下载新版,结果换了一个函数…… 只好拷了一个gdiplus.dll过来,运行倒是可以,就是换页要好几秒……于是去网上找开源解决方案,找到ghostxps,后来发现就是ghostscript那个公司做的。直接转pdf,10M的xps变成了5xxK,但是里面图片质量很差。去网上看了一下,对latex转pdf有人说应该先转ps再ps2pdf,应该是同理。但是直接转出来的ps竟然有4xxM…… 再转pdf,有17M,还能忍受,质量很好* skypebsd ports里面那个skype是static的2.0.0.72-oss版,我输入不了中文,遂尝试新版。结果新版2.1.0.xx的dynamic版都会卡死在futex系统调用上,而static版不但不能输入中文,还没有声音……搜索得知,新版用了pulse,遂用rpm安装alsa的pulse插件,linux的pulse库等,结果运行时说shm_open没有实现…… 还是不行又尝试装了alsa的oss插件,并且设为默认,这次终于有声音了,但是…… 不能录音……最后还是回归老的了……* 自动挂载本来我山寨了一个自动挂载脚本,利用devd的CDEV建立事件,在ntfs/*和msdosfs/*出现的时候,自动挂载到/mnt/*结果现在有了iPod,就有问题了:我一般只是想充电而已于是要挂载自动camcontrol eject,问题是CDEV事件不包括设备名,只有label。在找不到反查工具的情况下,只好自己从label查设备大致上就是一个枚举,利用gpart结果得到所有设备,然后用glabel得到上面的label,并且进行匹配,符合的就是对应设备。搞的时候发现,glabel status的第一行输出一直是Name Status Components,而Name下面显示的就是label,而且Name的最后一个字母严格和label最后一个字母对齐,通过这个,可以保证从输出结果得到的label是完整的label,不多不少。现在碰见iPod就会自动卸载了,真不错……* easytag的崩溃问题本来easytag给某些歌写tag的时候,总是崩溃。这两天研究一下,发现都是不正常的ape tag引起的。虽然easytag本身只写id3 tag,但是他写的时候,会先清除ape tag,而要清除就要先解释,于是就挂了…… 我搞了py-apetag下来,结果删tag的时候也说不能解释……你们删除tag就不会简单地先删掉再建一个空的么…… 非要解释……最后手动把文件结尾APETAGEX开始的东西全干掉,世界清静了…… 感想:# gstreamer好强大,我视频库里那些视频都可以放…… 虽然对字幕的支持还是令人怀疑# 发现一个好东西,gst-editor,类似于windows里directx开发包里那个编辑directshow filter图的那个东西,这里是编辑gstreamer …

Continue reading ‘折腾’ »