tmux 使用配置.

2012年5月13日 没有评论

ssh 连接的时候我们经常使用 screen. 个人觉得 tmux 就是一个 screen 的 wrapper. 我们可以使用 tmux 来代替 screen.
tmux 的按键与 screen 类似.只不过 global key 为 C-b 而不是 C-a. 不过 tmux 的高定制性为我们解决了很多问题.
下面说下配置.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ vi ~/.tmux.conf
set -g prefix ^a
unbind ^b
bind a send-prefix
 
bind - splitw -v
bind | splitw -h
 
bind k selectp -U
bind j selectp -D
bind h selectp -L
bind l selectp -R
 
bind-key K resize-pane -U 10
bind-key J resize-pane -D 10
bind-key H resize-pane -L 10
bind-key L resize-pane -R 10
分类: Linux 标签:

python 输出 unicode 式 string

2012年5月3日 评论已被关闭
?View Code PYTHON
1
2
s = "\\u3afe"
print eval(u"u'%s'" % s)
分类: Python 标签:

面试…

2012年4月25日 评论已被关闭

1.闭包概念.闭包应用环境.闭包这个词的来源.
闭包(Closure)是词法闭包(Lexical Closure)的简称。可以在词法上下文中引用自由变量。即使在自由变量离开了作用范围。
2.lambda好处.函数式编程.意义?作用?
精简代码,省去复杂的定义过程。对于一些抽象的,不存在复用的函数定义起来不需要考虑命名。有些情况下还可以使代码更容易被理解。
函数式编程:没有变量和副作用。经常使用递归。
3.php return 和 exit 区别.exit退出时系统做了什么·
4.sae如何搭建
5.负载均衡.\

最最输在的地方是紧张和自我介绍.

分类: 乱七八糟 标签:

SAE环境.

2012年4月20日 评论已被关闭

SAE应用开发与标准的LAMP的差异基本在以下几个地方:

1
2
3
4
5
6
传统LAMP环境             SAE平台环境
 
本地I/O             =>   TmpFS/Wrapper
htaccess            =>   Appconfig
网络I/O             =>   FetchURL
Mail                =>   SaeMail

1.Appconfig 替代 htaccess.
安全.实现更高效.语法更人性化.
2.MySQL分布式数据库服务.通过RDC提供.
RDC是Relational DB Cluster(关系型数据库集群)的简称,是一种分布式的关系型数据库集群,主要用在支撑公有云计算平台的数据库集群,目前RDC支持的存储后端为MySQL(http://www.mysql.com/)。用户可以简单的理解RDC为MySQL的中间层或者代理层,类似MySQL Proxy。所有的SQL请求都由RDC传递到后端的实际存储上。RDC可以支持千万级的数据库后端,其自身也支持分布式水平扩展. RDC由Sina App Engine(http://sae.sina.com.cn)技术团队开发,目前用来支持Sina App Engine的分布式数据库。RDC虽然为分布式数据库集群,但是对终端用户完全透明,用户在使用RDC时,不会感觉到和使用传统的MySQL数据库有任何差异,甚至用户都不用知道RDC的存在。用户可以使用所有MySQL标准客户端(MySQL5以上)操作RDC,如mysql_query、mysql_connect等,错误处理和标准MySQL客户端处理模式一样。 RDC拥有强大的监控功能,能够实时监控用户的DB的健康状况和同步延迟情况,一旦发现异常,将会在15秒内完成切换工作,用户的请求会被转发到其他正常的机器上。RDC自身采用的是多进程非阻塞方式的通讯框架,自身性能消耗较少,根据内部测试,其代理层性能损耗在5%以内。RDC因为100%兼容MySQL5协议,所以对于普通开发者几乎没有任何学习成本,开发者根本无需关心RDC,甚至无需知道RDC的存在,只需和使用普通MySQL一样就可以了。
3.Memcache分布式缓存服务
4.Storage分布式文件存储服务
5.KVDB分布式key-value持久化存储
6.Cron分布式定时服务
7.Image分布式图像处理服务
8.FetchURL分布式网页抓取服务
9.Mail分布式邮件服务
10.TaskQueue异步轻量级任务队列
11.DeferredQueue异步大任务延迟队列
12.Counter分布式计数器服务
13.Rank实时排行榜服务
14.Appconfig应用配置模块.
15.TmpFS本地临时文件读写模块
16.Wrappers文件读写兼容接口
17.XHProf.PHP调试工具.

分类: 乱七八糟 标签:

Android Thread 退出错误问题.

2012年4月18日 评论已被关闭

Android Thread 退出的时候遇到了问题.无法 destory. 最后搜索到一个比较靠谱的文章. 说可以通过设置一个布尔变量来把 Thread 函数 return 掉就可以了.

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
class RingThread extends Thread {
    MediaPlayer mPlayer;
    Context mContext;
    boolean flag;
 
    public RingThread(Context context){
      mPlayer = new MediaPlayer();
      mContext = context;
      flag = false;
    }
 
    @Override
    public void run(){
      Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
      try {
 
        mPlayer.setDataSource(mContext, alert);
        final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
            mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);          
            if(mPlayer.isPlaying()){
              mPlayer.stop();
              mPlayer.reset();
            }
            mPlayer.setLooping(true);
            mPlayer.prepare();
            mPlayer.start();
        }
      } catch (IllegalStateException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
      if(flag){
        return;
      }
    }
 
    public void stop_ringing(){
      mPlayer.stop();
      flag = true;
    }
  }
分类: Android开发 标签:

ubuntu 安装 easy_install

2012年4月10日 评论已被关闭

很简单。但是每次都记不住还得上网查。

1
aptitude install python-setuptools
分类: Python 标签:

[DataTypes]BinSearchTree

2012年4月1日 评论已被关闭

BinSearchTree.pm

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package BinSearchTree;
use warnings;
use strict;
 
package TreeNode;
sub new {
    my $class = shift;
    my $self  = {
        KEY     =>  0,
        LEFT    =>  undef,
        RIGHT   =>  undef,
    };
    bless $self, $class;
}
 
package Tree;
sub new {
    my $class = shift;
    my $self  = {
        NODENUMS    =>  0,
        ROOT        =>  undef,
    };
    bless $self, $class;
}
sub _add {
    my $self = shift;
    my $node = shift;
    if ($self->{NODENUMS} == 0) {
        $self->{ROOT} = $node;
    } else {
        my $root = $self->{ROOT};
        my $key  = $node->{KEY};
        my $walk; $walk = sub {
            my $node = shift;
            if ($key >= $node->{KEY}) {
                return $node unless defined($node->{RIGHT});
                $walk->($node->{RIGHT});
            } else {
                return $node unless defined($node->{LEFT});
                $walk->($node->{LEFT});
            }
        };
 
        my $target = $walk->($root);
        if ($key >= $target->{KEY}) {
            $target->{RIGHT}  = $node;
        } else {
            $target->{LEFT} = $node;
        }
    }
    $self->{NODENUMS} += 1;
}
 
sub add {
    my $self = shift;
    foreach my $node (@_) {
        $self->_add($node);
    }
}
 
sub _LVR {
    my $node = shift;
    my $func = shift;
    _LVR($node->{LEFT},  $func) if defined $node->{LEFT};
    $func->($node);
    _LVR($node->{RIGHT}, $func) if defined $node->{RIGHT};
}
 
sub do_LVR {
    my $self = shift;
    return if $self->{NODENUMS} == 0;
    my $func = shift;
    _LVR($self->{ROOT}, $func);
}
 
1;
 
__END__
package main;
my $tree = Tree->new;
my $nodeA = TreeNode->new;
$nodeA->{KEY} = 2;
my $nodeB = TreeNode->new;
$nodeB->{KEY} = 1;
my $nodeC = TreeNode->new;
$nodeC->{KEY} = 3;
$tree->add($nodeA,$nodeB,$nodeC);
 
use Smart::Comments;
### $tree
my $f = sub { my $node = shift; print $node->{KEY}, "\n"; };
$tree->do_LVR($f);
分类: Perl 标签: