空间有形 梦想无限

hi,it's onebird‘s blog。My homepage is onebird.net.

东莞网上报警

onebird | 03 十月, 2007 22:59

看看 
东莞警务网的网上报警
和东莞市政府的意见反馈 是否起作用
------------------------------------- 
我是北京酷讯科技有限公司的张一鸣。
我今天乘坐深圳到东莞的火车,在常平东莞站下车。乘坐一出租车去往横沥,司机
说他们都不打表,所以要了我40元。下车时我给司机100元,司机找还我60 元,到
达住所后发现,司机找还的钱中夹在中间的40元(1张20两张10元)为崭新的假
币。假币是崭新的,这说明这个司机绝对是有渠道获得假币,而不是误收到的。

稍后我打110报警,报警系统读音:电话转接中,而后是不存在此号码无法接通。
我使用的是北京联通的电话,请确认外地手机在东莞的报警是否正常。另我电话到
治安大队,也说不受理这个,同时告诉我他也不知道哪个电话报案

总体印象,东莞秩序和治安不太好。

谢谢
  

给自己和朋友的工作建议2

onebird | 01 十月, 2007 01:12

 不要不回他人邮件,尤其是询问邮件
-------------------这是非常消极的。

不要经常说 “哦,忘了”

------------------似乎忘了,并不是不会做,或者没能力做,实际比“没做好” 更糟糕。

 

自己和另一人差不多水平的时候,往往以为自己是水平高的那个,这是普遍现象

------------------这是牛根生说的,借用一下

一定不要把一点工作说的特别大。

------------------ 其实最好听的是:其实没做什么,就是按目标顺利完成了。

 最后,一点是个人喜好

我很讨厌那种msn nick上酸溜溜 或者 故弄玄虚发牢骚的做法。我觉得有屁还是一下放出来比较好,即便是臭屁也没关系。不要在众人面前小段小段的放真恶心。

 

最后2个是:

一定要勤奋,努力,严谨。考试可以耍小聪明考好的 工作肯定不是。 

一定要保持学习,努力学习。山外青山楼外楼,不要因为对工作熟悉了就以为自己水平见长了。

 

 

给自己和朋友的工作建议1

onebird | 29 九月, 2007 01:07

引他人之鉴,告诫自己和友人。 

不要在工作时间内经常看blog,写blog和回blog,以及twister,饭否之流。

-------我不相信大部分人有这个能力,不专心也能高效率。这种习惯类似版聊,常常是某种需要精神寄托,提醒一下有这样倾向的人检查自己是否偶自恋或自卑内因。

不要在工作期间老上网聊天看新闻上bbs

-------其它都还好,最可惜的是,时间是你自己的。

不要把自己的事情一拖再拖

--------总有人会没耐心的

不要老夸口

--------信任总是慢慢流失 

不要老含糊

--------你跟人含糊,人家未必跟你含糊

 

to be continued 

 

张家界归来

onebird | 29 九月, 2007 01:03

张家界还是值得去的,尤其以黄龙洞为胜。

 

什么是弱人

onebird | 23 九月, 2007 20:59

就是那种没有play hard精神,不能实在一定要把事情做好的人。

这种人往往不大气,自卑和不自信是内心深处的根源,不会从善如流,不擅善于学习,不能肯于努力是原因,想七想八,自作多情,婆婆妈妈是表现。

 

 

休假 休假 有假无休

onebird | 23 九月, 2007 20:56

 

不是好事情 

北京 上海

onebird | 16 九月, 2007 14:38

同学朋友一部分去了上海,一部分去了北京,小部分去了深圳,个别留在天津 。

去上海的比去北京的略多。

从之后的联系来看,去上海的比来北京的满意度更高,包括IT类的也是如此

主要提现在 1提薪更快 2自然环境更好 3更有秩序

其实IT还是北京发展的好, 但是也许是对上海了解不多。(只去过一次)。

 Btw:

我了解的从天阔出来的几个人朋友中,4个来了北京,4个去了上海。

去上海的3都去了cisco。满意度好像还是上海的高些。

不过有一点是一样的,他们的收入都至少double了一下。

可见无论如何 都不应该留在天津。

关于本站的不稳定性2

onebird | 15 九月, 2007 08:33

还是信号量占满了(平均2天一次),我没时间查代码。

跟据在线服务稳定第一的原则, 我还是写了一个脚本,2小时清理一次。

A/B Test 旁路测试 程序

onebird | 07 九月, 2007 00:49

一个在线服务要上线,常会出现,测试机正常放到线上就出错的情况。

我们团队在上周就经历过这种情况。

解决的办法一般有log重放和旁路测试。相对来说,旁路测试更有效。

所谓旁路测试是制将 对线上服务器LS访问的流量,拷贝一份给测试服务程序TS。而响应返回则是有LS完成,TS的返回被丢弃或者记录

我写了一个通用的程序(基于tiwstd,理解思路不基于也很容易,基于twisted 能够很快完成一个可用的系统,当然也可以自己封装网络通信框架实现灵活和快捷,这是题外话),能够支持旁路测试的无缝切换,且能够支持一组旁路测试服务器。(也即旁路测试服务器可以有TS1 TS2...) 。

程序如下(我现在就在旁路测试情况下发文的,nklog系统目前就在旁路测试中:)),今天太晚了就不解释了。

from twisted.internet.protocol import Protocol, ClientFactory, ServerFactory
from twisted.internet import reactor 
import time  
import sys
#ABTestServer A is Online Server ;B is Testing Server
#The IPtable rules to support follows:
#/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -s ! 60.28.222.137 -d 60.28.222.137   --dport 8301  -j DNAT --to 60.28.222.137:8
0
#echo 1 >/proc/sys/net/ipv4/ip_forward
class ServerHost:
    host=""
    port=0
class ServerConnector:
        pass
class ForwardServer(Protocol):
    def __init__(self, hostA, portA,hostsB):
        self.hostA = hostA
        self.portA = portA
        self.hostsB = hostsB
        self.data = ""
        self._connected = False

    def dataReceived(self, data): #From Client To FWServer
        self.data += data
        if (len(self.data) > 0):
            self.connectorA.connector.transport.write(self.data)
        for aBConnector in self.connectorsB:
            aBConnector.connector.transport.write(self.data)
            self.data = ""

    def connectionMade(self):
        self.beginTime=time.time()
        print "INFO:: client connection made"
        aClientFC = ForwardClientFactory(self,1)
        aServConnector=ServerConnector()
        aServConnector.connector = reactor.connectTCP(self.hostA, self.portA, aClientFC)
        self.connectorA=aServConnector
        self.connectorsB=[]
        for aBHost in self.hostsB:
                bClientFC = ForwardClientFactory(self,0)
                bServConnector=ServerConnector()
                bServConnector.connector = reactor.connectTCP(aBHost.host, aBHost.port, bClientFC)
                self.connectorsB.append( bServConnector )

    def setConnected(self, flag):
        if flag:
            self.onConnected()
        else:
            self.transport.loseConnection()
                                                                self._connected = flag  

    def onConnected(self):
        if len(self.data) > 0:
            self.connectorA.connector.transport.write(self.data)
            for aBConnector in self.connectorsB:
                aBConnector.connector.transport.write(self.data)
            self.data = ""

    def connectionLost(self, reason):
        self.connectorA.connector.transport.loseConnection()
        for aBConnector in self.connectorsB:
            aBConnector.connector.transport.loseConnection()
        self._connected = False
        print "Lost Connection "+ str( (time.time()-self.beginTime) )+" secs"

class ForwardClient(Protocol):
    def __init__(self, forward,ctype):
        self.forward = forward
        self.type=ctype                         

        self.bConnected=False
    def dataReceived(self, data):  #From FWServer to Client
#       print self.type
        if self.type !=0 : #Send To A only
                 self.forward.transport.write(data)

    def connectionMade(self):
        self.bConnected=True

    def connectionLost(self, reason):
        self.bConnected=False
        if self.type!=0:
            self.forward.transport.loseConnection()
            self.forward.connectionLost("client lost")
        else:
            pass
            #self.transport.loseConnection()

class ForwardServerFactory(ServerFactory):
    def __init__(self, host, port,hostsB):
        self.host = host
        self.port = port
        self.hostsB=hostsB

    def buildProtocol(self, addr):
        return ForwardServer(self.host, self.port,hostsB)

class ForwardClientFactory(ClientFactory):
    def __init__(self, forward,ctype):
        self.forward = forward
        self.type=ctype

    def buildProtocol(self, addr):
        return ForwardClient(self.forward,self.type)

    def clientConnectionFailed(self, connector, reason):
        self.forward.transport.loseConnection()
        self.forward.connectionLost("client connect failed")

if __name__ == "__main__":
    if len(sys.argv) != 5:
        print "USAGE: %s <hostA> <portA> <listen port> <hostsB.txt>" % sys.argv[0]
        sys.exit(1)
    host, port, listen_port = sys.argv[1], int(sys.argv[2]), int(sys.argv[3])
                                                                                         strFHostsB=sys.argv[4]
    fHostsB=open(strFHostsB)
    lines = fHostsB.readlines()
    hostsB=[]
    for aLine in lines:
        aLine=aLine.replace("\n","")
        aLine=aLine.replace("\r","")
        segs = aLine.split("\t")
        if len(segs) != 2:
                continue
        servHost = ServerHost()
        servHost.host=segs[0]
        servHost.port=int(segs[1])
        hostsB.append(servHost)
    print "INFO:: Load B Host "+str(len(hostsB))
    server_factory = ForwardServerFactory(host, port,hostsB)
    reactor.listenTCP(listen_port, server_factory)
    reactor.run()                                     

举例说明如下 

 

http服务旁路测试数据转发

80--iptables->8300(python abtest.py ...)

8300--abtester-->80(apache )

8300--abtester-->8310(tcpeserver 0.0.0.0 8310./a.out)

 

 

 

博客南开 apache 信号量占满信号量空间 导致无法启动

onebird | 07 九月, 2007 00:43

错误 如下

on device: mod_rewrite: could not create rewrite_log_lock
[Thu Sep 06 23:37:09 2007] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
[Thu Sep 06 23:42:13 2007] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_loc

apache无法启动。

解决 ipcs -s| grep apache | cut -f2 -d" "| xargs ipcrm sem

 

哪个程序用了这么多sem 还没检查 

 

 

Accessible and Valid XHTML 1.0 Strict and CSS
Powered by LifeType - Design by BalearWeb