解决SSH远程登录后屏幕尺寸不对的问题

首先解释下标题: 其实我想表达的是: 解决SSH远程登录后本地终端窗口大小改变远程屏幕尺寸没有随之改变导致显示混乱的问题, 但是太长了, 嗯.
我的一部分Linux VPS存在这个问题, 而另一部分是正常的; 一个由镜像默认安装的Ubuntu 10.04 Server一定存在这个问题.

具体解决方法其实很简单, 只是因为搜索的时候有点小纠结, 所以当做译文吧:
编辑 /etc/screenrc
找到

termcapinfo xterm 'is=...'

注: …表示还有很多长得像乱码的字符, 反正前面部分能对上就行
修改为:

termcapinfo xterm* 'is=...'

也就是说, 只添加那个*(星号).
之后重新连接/重新打开screen即可.

之前因为连上ssh并没有启动screen, 而是直接打开mtr, rtorrent 之类的程序, 也存在此问题, 所以没有怀疑到screenrc头上去 = =||||

参考资料:
http://lists.gnu.org/archive/html/screen-users/2010-12/msg00027.html

让libTorrent优先选择教育网IPv6地址

猫在教育网机子上挂PT, 但是机子同时是内网的IPv6网关(HE的/64), 结果rtorrent每次返回给tracker的&ipv6=后面总是我在HE的2001:470:xx:xx::1, 和教育网PT上其他用户之间连接效果差爆了.

在折腾了几种workaround无效后, 最后不得不改libtorrent的代码了! 由于ipv6部分本身就是由一个patch加上去的, 我只需要对这个patch再patch一次即可:
安装过程就不再赘述了, 满网上都是的…

--- A/libtorrent-0.12.6-ipv6-07.patch	2011-08-19 00:02:03.603735921 +0800
+++ B/libtorrent-0.12.6-ipv6-07.patch	2011-08-19 00:36:14.824983083 +0800
@@ -417,7 +417,7 @@
 diff -Nur libtorrent-0.12.6.orig/src/net/local_addr.cc libtorrent-0.12.6/src/net/local_addr.cc
 --- libtorrent-0.12.6.orig/src/net/local_addr.cc	1970-01-01 01:00:00.000000000 +0100
 +++ libtorrent-0.12.6/src/net/local_addr.cc	2010-07-23 14:44:51.000000000 +0200
-@@ -0,0 +1,336 @@
+@@ -0,0 +1,340 @@
 +// libTorrent - BitTorrent library
 +// Copyright (C) 2005-2007, Jari Sundell
 +//
@@ -502,29 +502,33 @@
 +#ifdef RAK_USE_INET6
 +// IPv6 priority, from highest to lowest:
 +//
-+//  1. Global address (2000::/16 not in 6to4 or Teredo)
-+//  2. 6to4 (2002::/16)
-+//  3. Teredo (2001::/32)
-+//  4. Empty/INADDR_ANY (::)
-+//  5. Everything else (link-local, ULA, etc.)
++//  1. cernet & cernet2 address (2001:250::/32 and 2001:da8::/32)
++//  2. Other global address (2000::/16 not in 6to4 or Teredo)
++//  3. 6to4 (2002::/16)
++//  4. Teredo (2001::/32)
++//  5. Empty/INADDR_ANY (::)
++//  6. Everything else (link-local, ULA, etc.)
 +int get_priority_ipv6(const in6_addr& addr) {
 +  const uint32_t *addr32 = reinterpret_cast(addr.s6_addr);
 +  if (addr32[0] == htonl(0) &&
 +      addr32[1] == htonl(0) &&
 +      addr32[2] == htonl(0) &&
 +      addr32[3] == htonl(0)) {
-+    return 4;
++    return 5;
 +  }
 +  if (addr32[0] == htonl(0x20010000)) {
-+    return 3;
++    return 4;
 +  }
 +  if ((addr32[0] & htonl(0xffff0000)) == htonl(0x20020000)) {
-+    return 2;
++    return 3;
 +  }
-+  if ((addr32[0] & htonl(0xe0000000)) == htonl(0x20000000)) {
++  if (addr32[0] == htonl(0x20010250) || addr32[0] == htonl(0x20010da8)) {
 +    return 1;
 +  }
-+  return 5;
++  if ((addr32[0] & htonl(0xe0000000)) == htonl(0x20000000)) {
++    return 2;
++  }
++  return 6;
 +}
 +#endif
 +

给用NexusPHP的PT站写的分流/保种员自动发工资脚本

如题.使用说明:
1, 为实现统计本月流量/保种时间(NexusPHP默认的数据表没有留这些数据), 需要在users表里增加 downloaded_lastmonth, uploaded_lastmonth, seedtime_lastmonth 三个字段.
2, 需要获取分流员/保种员信息, 也需指定pipeliner/guarder字段(enum或boolean, 后者需略微改动此代码)
3, 需要python2.x环境, 以及python-MySQLDb库.
4, 需要服务器上有正常的crontab, 每月1日0点执行即可.
5, 此脚本还提供了记录上月实际上传下载(不含优惠信息), 以及下载时间的统计部分, 相应部分默认已注释掉, 可以手动替换启用. 如需显示在userdetails页面上, 只需做一个简单的减法(当前-上月). 实际上传/下载量的统计还需修改announce.php.
6, 工资(魔力/邀请)参考下面的设置修改. 本初始数据来自CMCT-PT的考核标准和奖励细则.
7, 修改数据库连接字符串的相应部分, 即可用.

Continue reading 给用NexusPHP的PT站写的分流/保种员自动发工资脚本

让 Linux 里的 .xmind 文件能被双击打开

这其实只是一个简单的小trick 🙂

ubuntu和arch默认安装的xmind, 如果直接在WM/DE的文件管理器里双击打开, 只会打开一个新脑图, 而不会打开你指定的文件, 这个问题还是相当annoying的. 下面是解决方法:

编辑 /usr/share/applications/xmind.desktop 文件,
找到 Exec= 开头的那一行, 修改为:

Exec=/usr/share/xmind/xmind-bin %f

(如果安装位置不一样请自行修改, 总之一定要是这个-bin的文件, 而不能是直接xmind %f)
(其实很纳闷为啥xmind的策略这么诡异- -)

之后保存退出, 然后xmind文件就能直接打开啦!
不过这样仍然有一个问题: 打开的xmind里会有两个标签页, 一个是你打开的文件, 一个仍然是个新建的脑图, 而且默认焦点在新建的脑图上, 这个还是非常不爽的…希望各路大神提供解决方法 ^_^

参考资料: http://code.google.com/p/xmind3/issues/detail?id=200

内网Windows XP用户使用ISATAP隧道的方法(附自动配置脚本)

声明: 本文采用方法来自 http://blog.lifetoy.org/2010/01/31/isatap-behide-nat/, 我仅仅是写了一个自动配置脚本(不包括配置路由器).

首先, 这个方法只能让内网一台机器用上ISATAP隧道(仅仅是简单的转发了相关数据包而已). 主要步骤分为两个:

  • 配置路由器转发协议号41的数据包到你的内网机器
  • 修改本机的ISATAP相关配置(拥有外网环境则会自动完成这一步, 内网环境需要手动处理一些问题)

只有一部分路由器本来的FIRMWARE支持转发协议号41的数据包, 如果你用的路由器不支持, 那就只能尝试dd-wrt或者openwrt了. 如果你的路由器很不幸的也不能刷这类自定义固件, 那也就没办法了..(嗯)

Linux类环境可以使用iptables实现转发(假设你的内网IP地址为192.168.0.10, 网关IP为192.168.0.1, 下同):

iptables -t nat -A PREROUTING -d 192.168.0.10 -p 41 -j DNAT --to 192.168.0.1

openwrt则可以修改文件 /etc/config/firewall: (此段为转载)

config redirect
option src                      wan
option dest                     lan
option dest_ip          192.168.0.10
option proto            41

至此, 第一步就做完了.

第二步, 可以用下面的脚本自动完成.
原文给出的bat脚本我在win7和winxp里都试过, 不能发挥应有的作用, 而且每次外网ip变动时都需要修改, 这对于动态ip用户更是无法接受的. 于是我用Python重写了一个脚本, 目前只能在XP系统使用. (其实要在Win7下用应该只需要很小的修改, 不过我暂时没测试环境:P)
注: 脚本中写的是上交的isatap隧道服务器配置, 如需使用其他服务器, 稍加修改即可.

Continue reading 内网Windows XP用户使用ISATAP隧道的方法(附自动配置脚本)

我的scrot截图脚本(自动上传imgur并复制链接)

效果: 调用后用鼠标选中一矩形区域, 截图后上传到imgur, 上传成功后复制图片的外链地址到剪贴板, 并弹出系统提示, 然后删除本地保留的临时图片文件.

脚本(其实就一行 – -)

sleep .1; scrot -bs -e 'curl -F "image=@$f" -F "key=486690f872c678126a2c09a9e196ce1b" http://imgur.com/api/upload.xml | grep -E -o "(.)*" | grep -E -o "http://i.imgur.com/[^<]*" | xclip -selection c; notify-send "Screenshot has successfully uploaded to `xclip -selection c -o`";rm -f $f' 2> ~/screenshoterr.log

注: 可以把这个脚本绑定到WM/DE的快捷键上, 比如我绑定的是类似QQ的 Ctrl+Alt+A
注2: 不加sleep .1的话, 用KDE快捷键绑定调用的时候存在时不时失灵的问题, 暂不知为什么, 其他环境未测试.

拆解一下scrot自动调用的部分:
上传图片:

  • curl -F "image=@$f" -F "key=486690f872c678126a2c09a9e196ce1b" http://imgur.com/api/upload.xml
    

提取图片直接外链地址

  • grep -E -o "(.)*"
  • grep -E -o "http://i.imgur.com/[^<]*"
Continue reading 我的scrot截图脚本(自动上传imgur并复制链接)

C语言课程设计 – 汉化全屏文本编辑器

这个是我大半年前和 @T_buger 童鞋一起做的C语言课程设计程序, 一直忘记发上来. 最近有盆友的盆友找我盆友找我要了…于是, 我就把这货发上来吧!
文档神马的也都在里面哦~ 我多传几个网盘吧, 以免各种链接失效…
注: 彩蛋暴多的…不过内存泄露还是有一些的…
使用C graphics.h 神马的做图形显示, 蛋疼到爆什么的你懂的..

@T_buger 童鞋发在优酷上的视频:
传送门

介绍:

使用截图:



Continue reading C语言课程设计 – 汉化全屏文本编辑器

PyQt作品 – PingTester – 多点Ping测试工具

由于猫每次在一个临时测试点此测试一大片服务器的延迟和丢包, 一个个去跑太蛋疼, 于是用PyQt做了这么个小工具来测试各种线路的延迟丢包等信息.
这是我的第二个PyQt作品= =|||

截图:

(Archlinux / KDE4 环境下)


(Windows XP)

这个工具我已经初步实现了跨平台(在以上截图环境下运行正常), 在编写过程中, 我有如下的收获:

  • 不可以在子线程中直接操作UI, 以免引起资源冲突导致Segmentation Fault
  • 使用Queue类可以初步实现子线程与UI线程更新界面的通信. Signal方面, 我实例了一个QTimer, 每隔一定时间处理一次消息队列.
  • QTableView比QTableWidget效率高得多, 尤其是在Win32平台下. 因此应尽量采用 QTableView + QStandardItemModel 的搭配来做Table
Continue reading PyQt作品 – PingTester – 多点Ping测试工具

Android 里安全上 QQ 的新方法

QQ Windows版偷偷做坏事的事情已经被争论了很久很久了, 作为一个终端用户, 我自然希望风险越小越好…
然而, 自从 aQQ For Android 被封杀以后, 手机上QQ就没什么好方法了…官方QQ特别臃肿, 而 QQ For Pad 更是带了个虚拟桌面出来, 无用功能实在太多.

不过, jimmy 酱 上次给我看的一个限制应用程序权限的方法, 给了我一个启发.. 像我这样的轻度QQ用户(只是偶尔需要和QQ上几个特定的人联系), 在手机上为此装个QQ而且整天挂着, 实在是太重口了…
而 QQ For Pad 带了一个系统桌面挂件, 可以添加六个联系人, 可以和他们之间收发消息, 支持图片发送接受, 支持语音视频聊天(各种美)… 本猫在尝试禁止它的一些权限后, 现在认为这个方法比较靠谱, 也比较安全, 因此共享出来 🙂

下面是配置步骤(真的不会很复杂的= =). 哦对了, 这是使用 CM 的 ROM 时的配置方法, 其他 ROM 我不清楚是否可以这么用, 以及怎么用…

1, 首先从菜市场正常安装 QQ For Pad

Continue reading Android 里安全上 QQ 的新方法
QR Code Business Card