Blog

  • ip2long与long2ip

    在php中可以知道 ip2long 函数将ip转为整型,long2ip将整型转为ip,从而方便计算。

    ip分为四段,将第一段*256^3,第二段*256^2,第三段*256^1,第四段*256^0,最后相加,这样就计算出了一个唯一的值。如果都是最大值,算出来的值是

    >>> 255*256*256*256 + 255*256*256 + 255*256 + 255
    4294967295

    我们可以发现mysql中int型的取值范围是4个字节,十进制为

    0  到  4294967295

    所以所有的ipv4地址用mysql的int恰好可以完整记录

    python中互相转换的方法如下

    import socket 
    import struct
    
    def ip2long(ipstr): 
        return struct.unpack("!I", socket.inet_aton(ipstr))[0]
    
    def long2ip(ip): 
        return socket.inet_ntoa(struct.pack("!I", ip))
    

    http://hily.me/blog/2009/03/python-ip2long-long2ip/

  • 写代码的条件总是不成熟

    有太多原因写不成代码,太可笑了

    我的电脑配置不够高
    我是用vim写还是用sublime,还是ide
    我是在线上写还是在本地写
    我的目录结构一定要在漂亮的path结构下面
    sublime在ubuntu下面没法输入中文
    我没有mac
    我的电脑没有装好环境
    我的软件版本不够高
    我要喝点水,水不好喝我想喝饮料
    我的桌子不够整洁
    我的椅子座着不舒服
    我的键盘,鼠标不好用
    我没有双屏

    。。。

    最后这就注定是一个不会写代码的浪费青春的IT从业人员

  • 现在的我失去了很多想法

    以前遇到问题总是能想到解决办法

    为什么现在会认为很多事情是很难办到的呢?
    总是皱眉头,还表现的很苦逼

    对于困难也会像 人们面对灾难或者死亡的情况

    denial anger bargaining depression acceptance

    不能放弃,想办法知道自己想做什么.

  • ssh端口转发

    很多时候服务器集群是有跳板机,远程进行任何操作的时候都是先登陆跳板机,再登陆内网的机器。

    我们把本机叫做local,跳板机叫做tiaoban,真正要连接的集群内的服务器叫做node1。如何快速从local登陆到node1? 操作如下:

    方法一:

    1. 在 tiaoban 上输入如下命令

     ssh -CfNg -L 3333:node1:22 root@node1

    -L表示local,即在跳板机上开设一个3333的端口,保证有ssh连接到3333时,转发到node1的22端口。

    然后在local去连跳板机的3333端口

    ssh -p 3333 root@tiaoban

    注意,上面我都用的是root。实际是node1的用户是什么就写什么,这样就可以直接登陆到机器node1了。

    这种方法会在跳板机上打开3333端口,暴露了端口。

    方法二:通过proxycommand 和 netcat

    这种方法不需要对tiaoban和node1进行任何操作,只需在local机器的ssh_config(或是~/.ssh/config)添加如下配置

    Host node1
    HostName node1
    Port 22
    ProxyCommand ssh -p 3333 root@tiaoban ; nc %h %p

    然后在local输入

    ssh root@node1

    这样可直接转发,nc的作用是做一个tunnel,在跳板机上不会暴露端口。

    应用:在本地启一个 socks5 代理

    ssh -D 1081 jpuyy@yyhome -p 22

    在外面连接家里的路由器界面

    ssh -L 8989:192.168.1.1:80 [email protected]
    # 浏览器打开 127.0.0.1:8989 即可管理路由器
    
  • vim编辑多个文件(3种方法)

    方法一:直接打开多个文件

    vim file1 file2 file3

    现在默认打开的是file1,切换到下一个

    :n 或 :bn

    切换到上一个

    :prev 或 :bp

    查看完整的编辑列表及当前编辑的文件名

    :args 或 :buffers 或 :ls

    方法二:使用标签来打开不同的文件http://jpuyy.com/2013/11/vim-tabs.html

    方法三:使用窗口打开不同的文件

    Ctrl-W s 和 Ctrl-W v 可将当前编辑的文件水平或垂直显示。使用 :split and :vertical 同理 (:sp and :vs)

    Ctrl-W w 在不同的window依次切换, 或 Ctrl-W h (or j or k or l) 来根据方向切换

    Ctrl-W T 将当前 window 放到新 tab 里

    Ctrl-W _ 将当前窗口调整为最大高度

    Ctrl-W | 将当前窗口调整为最大宽度

    Ctrl-W = 将当前窗口与其他窗口均分高度宽度

    Ctrl-W R 将左右,上下 window 互换

    Ctrl-W c 会关闭当前的窗口, Ctrl-W o 会关闭其他所有窗口.

    使用vim -o(横割) 或 -O(竖割)会在不同窗口打开这些文件

  • sublime使用中文输入法ibus

    在ubuntu下使用sublime,直接使用不能输入中文

    这需要插件才能实现,实际使用上实现了功能,如果英文好平时还是少打点汉字吧

    安装方法

    cd ~/.config/sublime-text-2/Packages
    git clone https://github.com/xgenvn/InputHelper.git

    接下来打开sublime,在输入界面按下 Ctrl + Shift + Z , 会弹出一个小框,切换到ibus中文输入之后回车,已经输入的字会出现在sublime光标的后面。