sudo环境变量

由于很多时候访问网络需要通过代理,虽然export了http_proxy, https_proxy等等,但是sudo下这些环境变量是不会被保持的。

解决办法:修改/etc/sudoers文件(visudo),添加你想保留的环境变量

1
Defaults env_keep += "http_proxy https_proxy ftp_proxy" 

这样sudo就可以保留变量了

yaourt代理设置

一直以来不知道原来yaourt是调用makepkg来实现下载、编译、安装的

1
2
3
4
5
6
7
cat /etc/makepkg.conf

DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3 -O %o %u'
                  'http::/usr/bin/wget -c -t 3 --waitretry=3 -O %o %u'
                  'https::/usr/bin/wget -c -t 3 --waitretry=3 --no-check-certificate -O %o %u'
                  'rsync::/usr/bin/rsync -z %u %o'
                  'scp::/usr/bin/scp -C %u %o')

很多时候可能用到了rsync的协议,所以添加一个RSYNC_PROX的环境变量比较保险。

QT中文乱码问题

参考链接:http://hi.baidu.com/ilinux/blog/item/3603b801e8ce5907738da581.html

因为我emacs的默认编码设置的是utf-8,所以这种方法是最方便的。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));

...
}

在Windows下用Python查看进程信息

得益于PyWin32的强大,在Windows下可以通过Python调用Performon COM接口来查看进程的信息。下面的代码就是查看svhost进程的相关信息的示例代码,如果需要其他信息,请自行添加counter

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#/!/usr/bin/env python
# -*- coding: utf-8 -*-

import win32api, win32pdh, win32pdhutil
import time

def ShowAllProcesses():

    procs = []
    object = win32pdhutil.find_pdh_counter_localized_name("Process")

    items, instances = win32pdh.EnumObjectItems(None,None,object,win32pdh.PERF_DETAIL_WIZARD)
    instance_dict = {}

    for instance in instances:
        try:
            if instance == 'svchost':
                instance_dict[instance] = instance_dict[instance] + 1
        except KeyError:
            instance_dict[instance] = 0

    items = [win32pdhutil.find_pdh_counter_localized_name("ID Process")] + items[0:]

    for instance, max_instances in instance_dict.items():

        for inum in xrange(max_instances+1):

            hq = win32pdh.OpenQuery()

            hcs = []
            for item in items:
                path = win32pdh.MakeCounterPath((None,object, instance,None, inum, item))
                hcs.append(win32pdh.AddCounter(hq, path))

            win32pdh.CollectQueryData(hq)

            time.sleep(0.01)
            win32pdh.CollectQueryData(hq)
            proc = instance[:15]
            hc = hcs[0]

            vals = []
            for i in range(len(hcs)):
                hc = hcs[i]
                type, val = win32pdh.GetFormattedCounterValue(hc, win32pdh.PDH_FMT_LONG)
                vals.append(val)

            win32pdh.RemoveCounter(hc)

            procs.append([proc, [vals] ])
            win32pdh.CloseQuery(hq)

    print procs
    return procs
ShowAllProcesses()

hg certificate warnings

升级到mercurial 1.7.3之后,频繁会遇到像这样的错误:

1
warning: bitbucket.org certificate not verified (check web.cacerts config setting)

解决办法,参考链接:http://mercurial.selenic.com/wiki/CACertificates

下载http://curl.haxx.se/ca/cacert.pem到本地,然后在~/.hgrc里面添加这样一句:

1
2
[web]
cacerts=/path/to/cacert.pem

或者直接禁用:

1
2
[web]
cacerts =