"Lys!"男子回了下头,没有答应,仍然往山上走。
"Lys,你别往山上走了。"男子小声嘟囔了一句:"我不是Lys。"
"你就是,你知道多少人找你吗?" "我知道有人找我,但是真不该找我。"
FireBoard的登录跳转
最近在一个Joomla上架论坛,用着FireBoard。这个东西有个毛病,就是登录之后跳转到主页,而不是到论坛,看着很不行。
为了解决这个问题,回去看代码。FireBoard那个登录链接在template/default/plugin/profilebox/profilebox.php里面生成的,原来是这样:
为了解决这个问题,回去看代码。FireBoard那个登录链接在template/default/plugin/profilebox/profilebox.php里面生成的,原来是这样:
$loginlink = sefRelToAbs(‘index.php?option=com_login&Itemid=’ . $Itemid));
我想先把返回地址传过去。于是改成:
$loginlink = sefRelToAbs(‘index.php?option=com_login&Itemid=’ . $Itemid . “&return=” . sefRelToAbs(‘index.php?option=com_fireboard’));
接下来看看/joomla/components/com_login/login.html.php:
$return = $params->get(‘login’);
以及:
<form action=“<?php echo sefRelToAbs( ‘index.php?option=login’ ); ?>” method=“post” name=“login” id=“login”>
看来是转到index.php进行登录工作。再看看index.php:
// frontend login & logout controls
if ($option == ‘login’) {
$a = $return;
$mainframe->login();
$return = $a;
// JS Popup message
……
// checks for the presence of a return url
// and ensures that this url is not the registration or login pages
mosRedirect( $return );
} else {
mosRedirect( $mosConfig_live_site .‘/index.php’ );
}
看来原来就有跳转的代码。这样就好办了。
我原来尝试在那个login链接后面加&return=xxx,但是试了一个晚上,一点用都没有。
后来才发现,貌似是那个$return的变量在起作用。
最后,修改com_login/login.html.php:
把原来的$return=xxx改成:
$return_old = $params->get(‘login’);
终于,问题解决,FireBoard登录之后,又跳转回FireBoard了~
其实看原来那个$return=$param->get啥的,应该是有更好的办法的,但是这样也挺通用的,就行了吧……
终于在BSD下wine出war3了
但是我们班DOTA的气氛已经大不如前了,常常叫不到人了…… 反正也很浪费时间,算了……
协作翻译
本学期体育课选的板球。某节板球课上,快下课的时候,老师开始向大家布置一个作业:翻译。
每人发两到三页复印材料,来自于某本板球初学者启蒙的书籍。几周之内,必须完成这些材料的翻译,上交到网络学堂去。
过了几天,网络学堂上还挂出了一些板球名词的标准翻译,说让大家照着这个翻。
每人发两到三页复印材料,来自于某本板球初学者启蒙的书籍。几周之内,必须完成这些材料的翻译,上交到网络学堂去。
过了几天,网络学堂上还挂出了一些板球名词的标准翻译,说让大家照着这个翻。
翻译工作倒是比较轻松,毕竟也就几页,一会儿就能够完成。
翻完之后我在想,这个不就是协作翻译么。类似于wikipedia的方式,每人贡献一小部分,合起来就是一项成品。
这个办法倒是不错,比如说看见一本外国教材,没有中文版,然后找上这个课的学生,每人发几页,翻译一下交上来,集中起来就成了翻译版了么。
但是也有些问题,比如怎么保证翻译质量。估计这些译稿最后还是要人工审核一遍,否则不但文字不统一,错漏之类的应该也不少。
另一个是版权的事情,别人没有授权,你随便翻译了,就算不谋利也不见得就可以。不过其实这方面学校盗版的事情干得多了。不谈从前那个算法导论中文版,就说我上过一门课,那门课的教材不印了,外面买不到,学校就靠复印解决问题。这个现象应该也很常见吧。
新的键盘 & usbhidaction
从同学那边借了一个键盘用,反正他有好几个键盘,这个放在旁边也不用。型号是 Microsoft Natural Ergonomic Keyboard 4000,很大的一个键盘,还是人体工程学设计的。
装载ukbd和uhid模块,插上键盘,显示出来两个设备: ukbd0 和 uhid0。
貌似ukbd0马上就被Xorg接受了,插上后按键就能够被Xorg接收到。
而那个uhid0,貌似就是用来发送特殊键的了。这个键盘上有不少特殊键,比如一对滚轮一样的Zoom键,Back/Forward, 控制音量和播放器的,启动程序的,以及可以自定义的特殊键。
研究了一下,有两个现成的工具。usbhidctl能够接受并显示 uhid 设备发过来的信息,而 usbhidaction 能够根据预先指定的配置文件,在接收到 uhid 设备的时候,执行对应的程序。
其实 FreeBSD 自带的 usbhidctl 和 usbhidaction 都有问题,他们对于 Report ID 这个HID设备的参数没有处理好。
一个HID设备允许其上的各个组件利用同一个接口发送信息,而这些信息就通过 Report ID 区分。在信息格式描述符中提到 Report ID 的设备,在发出来的数据包的前面会多一个字节,就是这个数据包所属部分的Report ID。
usbhidaction没有处理这个多出来的字节,导致它每次都少收一个字节,然后再收一个一字节的包…… 改了就好了。但是这个修改其实涉及到libusbhid,因此光修改usbhidaction还不行。但是要把这整个需要修改的地方做成patch提交,还要花一些功夫。
于是我改了一下 usbhidaction 和 usbhidctl,还有libusbhid,临时把 Report ID 指定为1,并且根据描述符的处理结果决定接受的字节数。原来的 usbhidaction 默认的 Report ID 是用一个ioctl获取的,这个令我难以理解…… 不是可以有不止一个么…… 关于这个,我发了封信给freebsd-stable,但是没人回…… 看来还是需要完整的patch才比较容易得到接受。
顺便贴一下我现在用的 usbhidaction 的配置文件。我改了devd.conf使得插入键盘的时候自动运行之,效果还是不错的。
1 # Volume Control: Up, Down & Mute
2 Consumer:Unassigned 233 0 /usr/sbin/mixer vol +3
3 Consumer:Unassigned 234 0 /usr/sbin/mixer vol -3
4 Consumer:Unassigned 226 0 /usr/sbin/mixer vol 0
5 # Pause or Play
6 Consumer:Unassigned 205 0 /usr/local/bin/mpc toggle &
7 # alt+F11
8
9 # Calculator
10 Consumer:Unassigned 402 0 su henryhu -c “/usr/bin/env DISPLAY=:0 tiemu &”
11
12 # Back & Forward
13 Consumer:Unassigned 548 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key alt+Left”
14 Consumer:Unassigned 549 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key alt+Right”
15
16 # Zoom Up & Down
17 Consumer:Unassigned 557 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool click 4”
18 Consumer:Unassigned 558 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool click 5”
19
20 # 1 .. 5
21 Consumer:Consumer_Control.Microsoft:0xff05 1 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+Up”
22 Consumer:Consumer_Control.Microsoft:0xff05 2 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+a 1”
23 Consumer:Consumer_Control.Microsoft:0xff05 4 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+a 2”
24 Consumer:Consumer_Control.Microsoft:0xff05 8 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+a 3”
25 Consumer:Consumer_Control.Microsoft:0xff05 16 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+Down”
26
27 # My Favorites
28 Consumer:Unassigned 386 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xscreensaver-command -lock”
29 #/usr/local/bin/sudo -u henryhu /usr/local/bin/xdotool key ctrl+alt+l >& /var/log/xdotool.log
30
31 # Web/Home, Search & Mail
32 Consumer:Unassigned 547 0 su henryhu -c “/usr/bin/env DISPLAY=:0 firefix &”
33 Consumer:Unassigned 545 0 su henryhu -c “/usr/bin/env DISPLAY=:0 firefox http://www.google.com &”
34 Consumer:Unassigned 394 0 su henryhu -c “/usr/bin/env DISPLAY=:0 firefox http://www.gmail.com &”
35
装载ukbd和uhid模块,插上键盘,显示出来两个设备: ukbd0 和 uhid0。
貌似ukbd0马上就被Xorg接受了,插上后按键就能够被Xorg接收到。
而那个uhid0,貌似就是用来发送特殊键的了。这个键盘上有不少特殊键,比如一对滚轮一样的Zoom键,Back/Forward, 控制音量和播放器的,启动程序的,以及可以自定义的特殊键。
研究了一下,有两个现成的工具。usbhidctl能够接受并显示 uhid 设备发过来的信息,而 usbhidaction 能够根据预先指定的配置文件,在接收到 uhid 设备的时候,执行对应的程序。
其实 FreeBSD 自带的 usbhidctl 和 usbhidaction 都有问题,他们对于 Report ID 这个HID设备的参数没有处理好。
一个HID设备允许其上的各个组件利用同一个接口发送信息,而这些信息就通过 Report ID 区分。在信息格式描述符中提到 Report ID 的设备,在发出来的数据包的前面会多一个字节,就是这个数据包所属部分的Report ID。
usbhidaction没有处理这个多出来的字节,导致它每次都少收一个字节,然后再收一个一字节的包…… 改了就好了。但是这个修改其实涉及到libusbhid,因此光修改usbhidaction还不行。但是要把这整个需要修改的地方做成patch提交,还要花一些功夫。
于是我改了一下 usbhidaction 和 usbhidctl,还有libusbhid,临时把 Report ID 指定为1,并且根据描述符的处理结果决定接受的字节数。原来的 usbhidaction 默认的 Report ID 是用一个ioctl获取的,这个令我难以理解…… 不是可以有不止一个么…… 关于这个,我发了封信给freebsd-stable,但是没人回…… 看来还是需要完整的patch才比较容易得到接受。
顺便贴一下我现在用的 usbhidaction 的配置文件。我改了devd.conf使得插入键盘的时候自动运行之,效果还是不错的。
1 # Volume Control: Up, Down & Mute
2 Consumer:Unassigned 233 0 /usr/sbin/mixer vol +3
3 Consumer:Unassigned 234 0 /usr/sbin/mixer vol -3
4 Consumer:Unassigned 226 0 /usr/sbin/mixer vol 0
5 # Pause or Play
6 Consumer:Unassigned 205 0 /usr/local/bin/mpc toggle &
7 # alt+F11
8
9 # Calculator
10 Consumer:Unassigned 402 0 su henryhu -c “/usr/bin/env DISPLAY=:0 tiemu &”
11
12 # Back & Forward
13 Consumer:Unassigned 548 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key alt+Left”
14 Consumer:Unassigned 549 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key alt+Right”
15
16 # Zoom Up & Down
17 Consumer:Unassigned 557 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool click 4”
18 Consumer:Unassigned 558 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool click 5”
19
20 # 1 .. 5
21 Consumer:Consumer_Control.Microsoft:0xff05 1 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+Up”
22 Consumer:Consumer_Control.Microsoft:0xff05 2 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+a 1”
23 Consumer:Consumer_Control.Microsoft:0xff05 4 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+a 2”
24 Consumer:Consumer_Control.Microsoft:0xff05 8 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+a 3”
25 Consumer:Consumer_Control.Microsoft:0xff05 16 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xdotool key ctrl+Down”
26
27 # My Favorites
28 Consumer:Unassigned 386 0 su henryhu -c “/usr/bin/env DISPLAY=:0 /usr/local/bin/xscreensaver-command -lock”
29 #/usr/local/bin/sudo -u henryhu /usr/local/bin/xdotool key ctrl+alt+l >& /var/log/xdotool.log
30
31 # Web/Home, Search & Mail
32 Consumer:Unassigned 547 0 su henryhu -c “/usr/bin/env DISPLAY=:0 firefix &”
33 Consumer:Unassigned 545 0 su henryhu -c “/usr/bin/env DISPLAY=:0 firefox http://www.google.com &”
34 Consumer:Unassigned 394 0 su henryhu -c “/usr/bin/env DISPLAY=:0 firefox http://www.gmail.com &”
35