红黄满

To me the past is black and white but the future is always color

关于浏览器CSS HACK

/* Firefox 1 - 2 */
body:empty #firefox12
{display: block;}

/* Firefox */
@-moz-document url-prefix()
{#firefox { display: block; }}

/* Chrome、Safari */
@media screen and (-webkit-min-device-pixel-ratio:0)
{#chrome { display: block; }}

/* Opera */
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0)
{head~body #opera { display: block; }}

python 杀进程(树)的方法若干

很多时候在调用subprocess.Popen 调用一个外部命令的时候,被调用的进程会创建子进程,而通过 p.kill() 或者os.kill(p.pid) 的方法只能杀掉被调用的进程,而创建的子进程不会被杀掉,容易产生僵尸进程 可以通过一下面的一些个方法在杀被调用的主进程之前先杀掉创建的子进程,是为最佳实践.

方法一

import signal, psutil

def kill_child_processes(parent_pid, sig=signal.SIGTERM):
    try:
      p = psutil.Process(parent_pid)
    except psutil.error.NoSuchProcess:
      return
    child_pid = p.get_children(recursive=True)
    for pid in child_pid:
      os.kill(pid.pid, sig)

方法二

import subprocess, os, signal

def kill_child_processes(parent_pid, sig=signal.SIGTERM):
    ps_command = subprocess.Popen("ps -o pid --ppid %d --noheaders" % parent_pid, shell=True, stdout=subprocess.PIPE)
    ps_output = ps_command.stdout.read()
    retcode = ps_command.wait()
    assert retcode == 0, "ps command returned %d" % retcode
    for pid_str in ps_output.split("\n")[:-1]:
            os.kill(int(pid_str), sig)
  • 方法一 使用了一个第三方模块psutil 来实现的,
  • 方法二 是通过调用命令 ps 查找子进程kill实现的

抓取的discuz站点数据

昨天在hi群里某同学爆出了一个 discuz 的接口,能展示使用discuz站点的数据,还挺多的。就写了个简单的抓取程序保存这些使用 discuz 的站点数据.不过还没抓3分钟,这个接口就被dz 给删除了,现在已经不可用了。就索性把程序和抓取到的使用discuz 站点数据分享下,有34566条数据(自行去重)。
下载地址:here

 #!/usr/bin/env python
 #coding:utf-8
 # Purpose: 
 # Created: 2013/7/8

 import re
 import time
 import requests

 def get_site(url):
    ret=[]
    r = requests.get(url)
    regexp = r"<td>(http://.*?)</td>"
    dz_sites = re.findall(regexp,r.content)
    ret.extend(dz_sites)
    return ret

 if __name__=='__main__':
    url = 'http://customer.discuz.net/check.php'
    while True:
        sites = get_site(url)

        with open("dz.txt",'a') as f:
            for i in sites:
                f.write(i+'\n')

        time.sleep(1)

Frontend Development

via : Github frontend-dev-bookmarks