Blog

  • 2012读书清单

    1 文学

    1.1 顾准文集

    2 传记

    2.1 随遇而安
    2.2 胡雪岩的启示

    3 心理效率

    3.1 社会心理学
    3.2 战胜拖拉
    3.3 把信送给加西亚(应该说是一篇文章)
    3.4 How to Ask Questions The smart way. URL: http://www.catb.org/esr/faqs/smart-questions.html
    3.5 How to Report Bugs Effectively. URL: http://www.chiark.greenend.org.uk/~sgtatham/bugs.html

    4 技术

    4.1 iptables pocket
    4.2 计算机网络(第4版)
    4.3 Blog启示录-wordpress博客建设与经营(2012-09-06)
    4.4 Pro Puppet
    4.5 Vim and Vi Tips: Essential Vim and Vi Editor Skills, 2nd ed.
    4.6 笨方法学python

    5 小说

    5.1 1Q84-1
    5.2 1Q84-2
    5.3 1Q84-3
    5.4 nothing to envy
    5.5 蛙(2012年10月21日读完)
    5.6 生死疲劳
    5.7 丰乳肥臀
    5.8 檀香刑

    6 生存

    6.1 公务员申论
    6.2 公务员行测

    7 经济

    7.1 富爸爸 穷爸爸
    7.2 国富论
    7.3 战胜华尔街
    7.4 世界是平的
    7.5 十亿消费者 

    红色的没有读完,2013年继续

  • python中DNS查询和反向查询

    用到的还是python的socket库,用到函数getaddrinfo()

    定义如下:

    getaddrinfo(host, port, family=0, socktype=0, proto=0, flags=0)
    例:

    #!/usr/bin/env python
    import sys, socket
    result = socket.getaddrinfo("jpuyy.com", 80, 0, 0, socket.SOL_TCP)
    print result

    返回结果是

    [(10, 1, 6, ”, (‘2604:6600:1059::5810:3a0a’, 80, 0, 0)), (2, 1, 6, ”, (‘216.24.201.107’, 80))]

    执行反向查询

    gethostbyaddr(ip_address)

    查询主机名的详细信息

    getfqdn([name])   #Return a fully qualified domain name for name.

    http://docs.python.org/library/socket.html

    在debian下面安装PyDNS( python-dns )进行DNS的高级查询

    apt-get install python-dns

    程序中,import DNS,先进行 DNS.DiscoverNameServers(),然后建立一个请求对象 DNS.Request()。请求后PyDNS会返回包含结果的对象。

  • 在python中使用syslog

    在开始记录前,调用openlog()函数初始化syslog

    openlog([ident[, logopt[, facility]]])

    ident标识字符串

    logopt代表选项

    现在初始化之后

    syslog([priority], message)

    message是想记录的简单字符串。priority表明这条信息的重要性。它被syslog配置文件用来确定对一个给定的信息该如何处理。

    http://docs.python.org/library/syslog.html

  • linux的inetd和xinetd

    unix类和unix的操作系统提供了一具叫做inetd或xinetd的程序管理大多数入网连接。

    将inetd或xinetd打开,绑定、侦听和接受来自服务器每一个端口的请求。

    当有客户端连接的时候,inetd知道它请求的是哪个服务器程序。接着inetd会调用服务器程序并把socket传给它。

  • 显示电脑所安装python所支持的socket选项列表

    setsockopt()和getsockopt()

    用如下程序

    #!/usr/bin/env python
    #for use:
    #author: jpuyy date  jpuyy.com [email protected]
    #modified by xx at date
    #version:
    #history:
    #relate on:
    
    import socket
    solist = [x for x in dir(socket) if x.startswith('SO_')]
    solist.sort()
    for x in solist:
        print x

    执行后显示

    SO_ACCEPTCONN
    SO_BROADCAST
    SO_DEBUG
    SO_DONTROUTE
    SO_ERROR
    SO_KEEPALIVE
    SO_LINGER
    SO_OOBINLINE
    SO_RCVBUF
    SO_RCVLOWAT
    SO_RCVTIMEO
    SO_REUSEADDR
    SO_SNDBUF
    SO_SNDLOWAT
    SO_SNDTIMEO
    SO_TYPE

    setsockopt()用法

    socket.setsockopt(level, optname, value)

    getsockopt()用法

    socket.getsockopt(level, optname[, buflen])

    参见

    http://docs.python.org/library/socket.html

    :)EOT

  • python的socket中的getservbyname()函数

    getservbyname()函数

    可以根据端口名,如tcp,udp 和端口名,如http 。找到这个端口的端口号。

    如下程序

    #!/usr/bin/env python
    
    import socket
    port = socket.getservbyname('http','tcp')
    print "http's port is %d" % port

    运行后会显示

    http’s port is 80

    参见:http://docs.python.org/library/socket.html

    :)EOT