Random Posts
Tags
Categories
Recent Comments
- 小肥 on GDB 从裸奔到穿戴整齐
- flandre on 异步事件模型的 Self-pipe trick
- inv on 异步事件模型的 Self-pipe trick
- skywind on 异步事件模型的 Self-pipe trick
- skywind on 异步事件模型的 Self-pipe trick
Links
Meta
Category Archives: 随笔
如何优雅的使用 Vim
根据 Bram 前后几个关于高效使用 Vim的视频,大家每天需要花很多时间来编辑:代码、文档、邮件、日志 等等,除去这些外,还要分时间参加会议和人沟通,每个人的时间却都是不够的,优雅使用 Vim 无外乎: 检测不高效的地方:你的整个工作流里,什么地方比较浪费时间? 寻找一个更快的方式:官方文档,学习他人经验,自己编写 VimScript 使它习惯化:开始使用,并且不断完善 以上三点反复循环,能让你的 Vim 越来越顺手。所以重点是根据自己的工作流不断迭代。而不是象大部分教程那样教你安装一大堆插件。插件都是别人写的为了解决通用需求而提炼的东西,和每个人的具体需求都有差别。上面这三点我屡试不爽,随着时间增长,有种越来越顺手的感觉,举几个我具体碰到的例子: 问题1:边开发边参考网上解决方案的问题 比如碰到问题搜到一段代码,需要试一下,一会又看会 Chrome ,一会又切回 GVim 里去写代码,反复 ALT_TAB,有时候中间使用了一下资源管理器或者其他程序,ALT_TAB 的顺序就会被打乱,你一切换就切跑了,十分低效。 于是我用 VimScript + 内嵌 Python 写了一个功能,按快捷键可以让 GVim 在透明/不透明两种状态间自由切换: 就是 VimScript 简单封装一个函数,里面用内嵌 Python 找到 GVim 的顶层 HWND,并设置透明度。平时默认不透明,需要参考其他资料时切换成透明,参考完了又快捷键切换回来,感觉比缘来切来切去顺畅很多。 问题2:浏览文档时的窗口滚动问题 比如你在抄写或者改写一段代码,窗口分为左右两个,左边是你引用参考的源代码,右边是你正在编辑的源代码。你抄着抄着,抄到左边最后一行了,或者你想前后看看正在引用的文本,你就需要将焦点从右边切换到左边,滚动,再切换交点回来,十分麻烦,于是撸一小段 … Continue reading
Emacs/Vim 深度比较
生命在于折腾,折腾完了 Atom Editor,开始跟着陈斌大婶和 purcell的配置折腾 Emacs,比较下。很多人都在比较键位,比较插件,这是十分肤浅的,我们比较点深入的东西: 代码结构 Emacs 源代码:eLisp 79%, C 21% Vim 源代码:C 52%, VimScript 48% 从代码结构上来讲,Emacs的代码最多的是 elisp,C代码只是一个微内核,Vim 里C代码还是大头。当然不排除 24.X, 25.X以后 Emacs源代码里带了好几个重量级的包,而 Vim向来比较精简一些,官方没带啥大点的插件有关。去除自带插件后,Emacs的 elisp代码比例应该会下降很多,不过总体来说,Emacs有更多组件使用 elisp开发而成,也就是说可以被用户修改或者替换的地方比 Vim要多,当然速度也会相应慢一点(比如 Emacs新打开上万行的文件连续按住PageDown时cpu 100%占满),不过比较大 JB,Atom Editor来说,还是快不少。 系统接口 大框架基本类似: Vim 可以操作: buffer, window, tabpage, 光标,marker, region 跳转表等等。 … Continue reading
Aix 折腾手记
早年开发工作主要在 FreeBSD 进行,2006 年后来切换到 Linux下,期间穿插使用了一下 Solaris,所以我的网络库一直都是只支持这三个系统。为了让网络库支持更多平台,网上购置了一台 IBM AIX 小型机,因为其他大部分非 Linux 系统,今天基本都可以在虚拟机里面安装了,而 AIX 系统,你真的没法虚拟。 弄了几天以后,发现真他妈的麻烦,强大是强大,但是真的太琐碎了,相比之下,Linux/FreeBSD 之流基本是傻瓜了。不看说明直接操作 AIX 的话,可能连开机都麻烦,或者关机没关对,下次直接启动不了。 文字终端就没什么好拍的了,先上一张图形桌面的靓照吧: 是的你没看错,这就是 AIX 7,2012 年的操作系统,就是那么的霸道,四处透着古典 Unix 的味道。这样的机器今天还跑在各大银行的机房里,AIX 系统管理员也拿着比 Linux 系统管理员多几倍的工资,虽然工作岗位比较稀少。 下面来感受一下你想正常开关机,安装软件的话要怎么弄:
Linux 网桥设置
在公司机房的物理机上架设 KVM虚拟化的时候,经常需要配置网桥,先要安装网桥工具: apt-get install bridge-utils apt-get install uml-utilities 编辑 /etc/network/interfaces,参考下面配置加入网桥配置信息: auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.10.6 netmask 255.255.255.0 network 192.168.10.0 broadcast 192.168.10.255 dns-search dell1 bridge_ports eth0 … Continue reading
Linux 硬件时区折腾备忘
前段时间折腾家中 Nas的虚拟化服务,有时候虚拟机系统时间总是快8个小时。Guest这边设好了,到了 物理机就会慢8个小时。网上说只要修改/etc/default/rcS中的 UTC=no就行了,但还是没反映,没办法,一步步找问题。发现在/etc/rcS.d/S05hwclock.sh有这样一段话: # 2012-02-16 Roger Leigh rleigh@debian.org # – Use the UTC/LOCAL setting in /etc/adjtime rather than # the UTC setting in /etc/default/rcS. Additionally # source /etc/default/hwclock to permit configuration. 也就是说时间是按照/etc/adjtime设置的,而不是/etc/default/rcS,晕倒。查了下adjtime文件,原来这个才是现在调整时间的设置文件,那个rcS已经被忽略了,也就是网上的那些方法只适合以前的系统,看来走了不少弯路啊。 将 /etc/adjtime 第三行由 UTC 改为 LOCAL 即可。
Linux 线上系统调优备忘
大公司呆久了,都会对 SA的依赖十分强烈,很多事情 SA都帮我们搞定了。如今控制成本,没有招聘 SA,又没有购买 VPS,从买物理机开始到 IDC部署,服务器调优,虚拟机管理,全部都是自己来,才发现,安装一台 Linux机器自己玩很简单,但是要达到线上服务器的标准,还有若干调优工作需要做,有 SA的日志是多幸福的事情啊。 物理机设备驱动 Dell服务器默认安装系统后会报找不到驱动: W: Possible missing firmware /lib/firmware/tigon/tg3_tso5.bin 因为 Debian/Ubuntu 的包都是开源的,默认开源驱动性能不行,于是需要添加 non-free源: deb http://ftp.de.debian.org/debian main contrib non-free deb-src http://ftp.de.debian.org/debian main contrib non-free 然后: apt-get update apt-get install firmware-linux-free firmware-linux-nonfree 解决 Dell驱动报错问题。 配置限制 查看 /etc/security/limits.conf 没有就新建,加入 … Continue reading
Linux 下配置 Iptables 端口转发
经常需要对服务端的端口进行转发映射,让链接A服务器(202.181.55.93:8080)端口的所有tcp数据,forward到B服务器(106.185.43.22:80)端口,比如国内联通出国访问比较快,而电信比较坑爹,如果你家是电信网络,你却想畅快的访问境外的 vps,那么可以在你联通网络的境内服务器上进行这样一个端口映射,你链接境内服务器(201.181.55.93:8080)端口相当于链接境外服务器的(106.185.43.22:80)端口。 Linux内核的 Iptables很强大,它维护一组内核变量,使用 /sbin/iptables命令进行直接规则设置,且通过配置新规则,可以直接支持端口转发,简单在 A服务器上使用下面这个 shell脚本即可: #! /bin/sh # create forward rule by source interface # http://serverfault.com/questions/532569/how-to-do-port-forwarding-redirecting-on-debian PortForward1() { local IN_IF=$1 local IN_PORT=$2 local OUT_IP=$3 local OUT_PORT=$4 local IPTBL=”/sbin/iptables” echo “1” > /proc/sys/net/ipv4/ip_forward $IPTBL -A PREROUTING -t nat -i … Continue reading
Vim 里如何映射 CTRL-h 为 left ?
很多人习惯在配置文件中映射 CTRL+HJKL 为光标移动,却碰到了一些问题: inoremap <c-h> <left> inoremap <c-j> <down> inoremap <c-k> <up> inoremap <c-l> <right> 映射后无效或者映射以后按 <BS>键不能删除,这是什么原因呢? 很简单,因为你的终端软件(Xshell, SecureCRT)有些老,默认配置是按下<BS>键以后 发送的是:^H (ASCII 码 0x08),而 ^H在你的 Vim 里被你 inoremap 成 了,所以你按了<BS>会被认为按下了左键。 早在 VT100终端时代,^H(ASCII码 0x08)表示<BS> 而 ^? (ASCII码 0x7f)表示<DEL>。过去 0x7f是留给 DELETE键使用的。而到了 VT220时代,DELETE已经变为 ^[[3~ … Continue reading