有时候要clone GitHub的项目,如果直接连接,git clone的速度一般只有15K/s,但是如果经过国外代理,亲测速度可以达到300~500k/s,设置代理可以节省大量时间。

安装

要在linux终端中设置代理,首先要安装Proxychains:

sudo apt-get install proxychains

然后配置代理:

vim /etc/proxchains.conf

在最后一行,把


socks4  127.0.0.1 9050
    

改成

[socks5/socks4/http]  [代理服务器的地址]  [端口]  [用户名] [密码]

保存就配置完成了。

使用

使用的时候,在命令之前加上proxychains即可,如:

proxychains firfox

收集一些Python的笔记

print 输出不换行:

print("hello world",end="")

删除字符串最后一个字符:

>>> str = "hello world"
>>> str = str[:-1]
>>> print(str)
hello worl

字符串拼接:

"%s,%s" % ("hello","world")

调用系统命令:

    import os
    os.system("ping 127.0.0.1")  #返回命令的退出状态码 
    os.popen("ping 127.0.0.1")   #返回命令的输出

模拟键盘输入:调用win32api实现,第一个参数为键位码
(键位码表:104键键盘按键码对照

    import win32api,win32con
    win32api.keybd_event(121, 0, 0, 0)    #模拟按F10
    win32api.keybd_event(121, 0, win32con.KEYEVENTF_KEYUP, 0)

列出模块可用变量名:

    import sys
    print(dir(sys))

使Python脚本可直接执行:

#!/usr/bin/env python3

终端中Python代码补全:

sudo pip3 install ipython
$ipython    发现新世界!

工厂函数:
一种可以记住自身状态的创建函数方式

def f(m):
    def g(x)
        return x**m
    return g
>>> square = f(2)
>>> square(2)
4
>>> cube = f(3)
>>> cube(2)
8

在windows中,要访问其他进程,要使用OpenProcess 函数用来打开一个已存在的进程对象,并返回进程的句柄。 然后利用返回的进程句柄进行ReadProcessMemory或者WriteProcessMemory 扫雷的状态信息是固定的,我们可以直接使用CE找出相应的状态地址,然后进行读写即可。

- 阅读剩余部分 -

DHT11是一款温湿度传感器,通讯采用单总线通讯协议,
它的精度看起来挺渣的= =,但是它的通讯协议简单,可以用来学习按照时序来写代码:

{% asset_img DHT11.jpg %}

#include "reg52.h"
sbit dht = P1^0;
int point[8];
int wetint[8];
int temint[8];
void delay30ms(void);
void delay30us(void);
void delay36us(void);
void delay2s(void);

void send_char(unsigned char txd)
// 传送一个字符
{
    SBUF = txd;
    while(!TI);// 等特数据传送
    TI = 0;// 清除数据传送标志

}

void start()
{
    dht = 0;
    delay30ms();//拉低总线,初始化dht
    dht = 1;
    delay30us();//释放总线,等待dht响应
    dht = 1;
    while(!dht);//80us dht响应
    while(dht);//准备开始传输

}

void readp()
{
    char t;
    for(t=0;t<8;t++)
    {
        while(!dht);
        delay36us();
        if(dht == 1)
        {
            point[7-t]=1;
            while(dht);
        }
        else
        {
            point[7-t]=0;

        }
    }
       t=0;
}


void readw()
{
    char t;
    for(t=0;t<8;t++)
    {
        while(!dht);
        delay36us();
        if(dht == 1)
        {
            wetint[7-t]=1;
            while(dht);
        }
        else
        {
            wetint[7-t]=0;

        }

    }
       t=0;

}

void readt()
{
    char t;
    for(t=0;t<8;t++)
    {
        while(!dht);
        delay36us();
        if(dht == 1)
        {
            temint[7-t]=1;
            while(dht);
        }
        else
        {
            temint[7-t]=0;
        }

    }
       t=0;

}



void main()
{
    unsigned char cnt,str[3],p;
    int tresult=0;
    int wresult=0;
    TMOD = 0x20;// 定时器1工作于8位自动重载模式, 用于产生波特率
    TH1 = 0xFD;// 波特率9600
    TL1 = 0xFD;
    SCON = 0x50;// 设定串行口工作方式
    PCON &= 0xef;// 波特率不倍增
    TR1 = 1;// 启动定时器1
    IE = 0x0;// 禁止任何中断

    while(1)
    {
        if(RI)// 是否有数据到来
        {
            RI = 0;

            delay2s();
            start(); //初始化
            readw();
            readp();
            readt();
            readp();
             for(cnt=0;cnt<8;cnt++) tresult="">>cnt)&1)*(1<
                                                        >cnt)&1)*(1<<cnt);
             
        }
         send_char('\n');
        str[0]=tresult/100+48; //取百位
        str[1]=(tresult/10)%10+48; //取十位
        str[2]=tresult%10+48; //取个位
        for(p=0;p<3;p++)
        {
            send_char(str[p]);
             
        }
        send_char(' ');

        str[0]=wresult/100+48; //取百位
        str[1]=(wresult/10)%10+48; //取十位
        str[2]=wresult%10+48; //取个位
        for(p=0;p<3;p++) tresult="0;" wresult="0;" void="" unsigned="" char="" c="35;c">0;c--)
                for(b=122;b>0;b--)
                    for(a=2;a>0;a--);

    }
    void delay30us(void)   //误差 0us
    {
            unsigned char a;
            for(a=11;a>0;a--);

    }
void delay36us(void)   //误差 0us
{
        unsigned char a,b;
        for(b=1;b>0;b--)
            for(a=14;a>0;a--);

}
void delay2s(void)   //误差 0us
{
        unsigned char a,b,c;
        for(c=127;c>0;c--)
            for(b=235;b>0;b--)
                for(a=32;a>0;a--);

}
}