Author: jpuyy

  • 子网知识

    在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就是属于私网IP,不在公网中使用的,它们的范围是:

    Network address range Default mask
    10.0.0.0 – 10.255.255.255 255.0.0.0
    172.16.0.0 – 172.31.255.255 255.240.0.0
    192.168.0.0 – 192.168.255.255 255.255.0.0

    划分子网(subneting)

    计算机网络第4版p193

    划分子网的方法是从网络的主机号借用若干个比特作为子网号subnet-id,而主机号host-id也就相应减少了若干个比特

    CIDR(Classless Inter-Domain Routing),无类别域间路由。是在ip地址快分配完时产生出来的ip地址分配方法。已经成为互联网的正式标准。

    无类别域间路由是基于可变长子网掩码(VLSM)来进行任意长度的前缀来分配的。

    更具体的对应表格在这里:http://zh.wikipedia.org/wiki/CIDR

     

  • 2013读书清单

    去年没有读完的书今年要继续读,不过有所改变。既然是干技术的,就将书分为技术类和非技术类,而且同一时间不能想着读多本书,不专一的后果是没有效果。

    开始时间 技术书 非技术书 教学视频
    2012-12-26 python for unix and linux system administration 顾准文集
    2012-12-29 国富论(上)
    2013-02-13 檀香刑
    2013-02-22 写给大家看的设计书(第3版)
    2013-03-01 生死疲劳
    2013-03-23 西方哲学史(上)
    2013-04-08 红高粱
    2013-04-18 浪潮之巅
    2013-05-15 黄金时代
    2013-06-02 精通puppet(Pro Puppet) 白银时代
    2013-06-28 精通puppet(Pro Puppet) 有些事现在不做,一辈子也不会做了
    2013-07-28 丢掉50样东西,找回100分人生
    2013-07-30 NoSQL数据库入门 青铜时代红拂夜奔
    2013-09-01 CodeIgniter.1.7.Professional.Development 80/20法则 E-75
    2013-10-20 乔布斯传
    2013-10-30 时间管理 – 给系统管理员
    2013-11-03 娱乐至死
    2013-11-13 大数据时代 围城
    2013-11-28 lvs手册 长尾理论
    2013-12-08 深入浅出MySQL数据库开发、优化与管理维护 长尾理论
  • python面向对象实例

    最最简单基础的结构了

    #!/usr/bin/env python
    
    class Server():
        def __init__(self, ip, hostname):
            self.ip = ip
            self.hostname = hostname
        def set_ip(self, ip):
            self.ip = ip
        def set_hostname(self, hostname):
            self.hostname = hostname
        def ping(self, ip_addr):
            print "Pinging %s from %s (%s)" % (ip_addr, self.ip, self.hostname)
    if __name__ == '__main__':
        server = Server('192.168.1.244', 'ibm')
        server.ping('192.168.1.105')

    解释

    定义一个Server类

    在类中有初始化函数,set_ip,set_hostname,ping函数

    引用实例server,执行server.ping函数

  • python的入门的几个例子(上)

    在Python for Unix and Linux System Administration列出了几个选择python的理由:

    易入门

    上手后可进行系统管理
    能解决复杂问题
    代码简洁,易读
    关键字使陌生代码易读
    面向对象
    社区优秀
    很好的标准库

    python的基础例子在这里,很有意思,下一个例子的行数是递增的

    http://wiki.python.org/moin/SimplePrograms

    例1.输出显示–Output

    print 'Hello world'

    例2.变量以提示输入的方式赋值,并打印出来–Input, assignment

    name = raw_input('What is your name?\n')
    print 'Hi, %s.' % name

    例3.for循环,内置的列举函数,format格式–For loop, built-in enumerate function, new style formatting

    friends = ['jhon', 'pat', 'gary', 'micheal']
    for i, name in enumerate(friends):
        print "iteration {iteration} is {name}".format(iteration=i, name=name)

    例4.斐波纳契,元组的赋值–Fibonacci, tuple assignment

    parents, babies = (1, 1)
    while babies < 100:
        print 'This generation has {0} babies'.format(babies)
        parents, babies = (babies, parents + babies)

    例5.函数–Functions

    def greet(name):
        print 'hello', name
    greet('Jack')
    greet('Jill')
    greet('Bob')

    例6.import,正则表达式–Import, regular expressions。这里是匹配3位数字-4位数字的字符串。

    import re
    for test_string in [ '555-1212', 'ILL-EGAL' ]:
        if re.match(r'^\d{3}-\d{4}', test_string):
            print test_string, 'is a valid US local phone number'
        else:
            print test_string, 'rejected'

    例7.字典,生成表达式–Dictionaries, generator expressions

    prices = { 'apple': 0.40, 'banana': 0.50 }
    my_purchase = {
        'apple': 1,
        'banana':6}
    grocery_bill = sum(prices[fruit] * my_purchase[fruit]
                       for fruit in my_purchase)
    print 'I owe the grocer $%.2f' % grocery_bill

    例8.调用命令参数,异常处理–Command line arguments, exception handling

    #!/usr/bin/env python
    # This program adds up integers in the command line
    import sys
    try:
        total = sum(int(arg) for arg in sys.argv[1:])
        print 'sum =', total
    except ValueError:
        print 'Please supply integer arguments'

    上面是将跟的参数相加,如果不是整数,则提示需输入整数

    $ python se8.py 1 2 3 4 5 6
    sum = 21
    $ python se8.py 1 2 3 4 5 a
    Please supply integer arguments

    例9.打开文件–Opening files

    # indent your Python code to put into an email
    import glob
    # glob supports Unix style pathname extensions
    python_files = glob.glob('*.py')
    for file_name in sorted(python_files):
    print ' ------' + file_name
    
    with open(file_name) as f:
    for line in f:
    print ' ' + line.rstrip()
    
    print

    例10.时间,条件,from..import,for ..else循环 — Time, conditionals, from..import, for..else

    from time import localtime
    
    activities = {8: 'Sleeping',
                  9: 'Commuting',
                  17: 'Working',
                  18: 'Commuting',
                  20: 'Eating',
                  22: 'Resting' }
    
    time_now = localtime()
    hour = time_now.tm_hour
    
    for activity_time in sorted(activities.keys()):
        if hour < activity_time:
            print activities[activity_time]
            break
    else:
        print 'Unknown, AFK or sleeping!'

    整理一些小知识

    段落注释的方法

    """ """

     

  • 我的evernote使用心得

    以下自己对于evernote这种与云相关的笔记的理解,在使用之前也搜过不同人的用法,最后形成自己的用法。

    工具是为人服务的,每个人用工具的习惯都不一样,不能成为工具的奴隶。我不喜欢把什么东西都往里面放,再花大把的时间去整理,有整理癖的性格该改改了。好东西太多了,只能关注对自己有用的东西。

    我的evernote中,只存有纯文字,以致于每个月分配的60MB流量,我最多也用不到1MB。图片,附件什么的都不放进去,要不dropbox该不高兴了。但主要原因是有那些东西会显得乱,而且我始终认为文字的力量是最伟大的。

    使用evernote,最多只保留10个笔记本(包含子笔记本),笔记本再多,说明有的内容类型可以归到一类了。

    第一个笔记本名叫“swap”,暂存的笔记

    这里面的笔记是随手记下来的,比如说快递单号,电话号码,网址,小知识点,欠谁的钱。不必要的用完就删,是把笔记删掉,而不是把内容删掉,这样以后还能到回收站里收到它。这个要定时清理。

    第二个笔记本是“备用”

    把当前的地址,常用邮箱,支付宝号,可以送的礼物,mac地址,dns,各种卡号,序列号,验证问题等等。当然要信得过evernote才行,这些够私密了。这些东西有人需要,直接发出去,复制肯定比手动输入来得准确。

    第三个笔记本是”每天读一遍”

    把一些需要提醒自己的事,比如锻炼的好处,好习惯,少走弯路的方法等。

    第四个笔记本是”长期记录”

    比如好电影,读书清单,大目标,体重记录等。

    第五个笔记本是“最先完成”

    这里面只有两个笔记,一个是“直到完成为止的”,另外一个是“一次性完成的”。比如申请google adsense,总是被拒,把它放到直到完成为止里面。一次性完成的,比如写一个小脚本,打算买的日常用品。完成后,把里面的内容删掉,这个笔记本当作todo list来用。

    第六个笔记本是“问题解决思路”

    这个相当于知识库了,把问题和解决方法记下来,积累经验,不会经常去动他。公开的知识还是整理到博客中,这样思维清晰,回顾时不受查看地点和环境的影响。

    其他笔记本就是一些工作笔记一类的。

    除了在笔记本上做了一些事情,还有技巧类的,快捷键类的

    如加密文本,待办事项等,可以按F1获取帮助。

    现在已经离不开evernote了,各种终端都有客户端,它的安全性也是我日益警惕的问题。更重要的东西还是用脑子记吧。

  • mount,umount用法

    命令格式:

    mount -a ,会把/etc/fstab列出的文件系统挂载

    mount -t 类型 -o 挂接方式 源路径 目标路径

    -t 详细选项:

    光盘或光盘镜像:iso9660
    DOS fat16文件系统:msdos
    Windows 9x fat32文件系统:vfat
    Windows NT ntfs文件系统:ntfs
    Mount Windows文件网络共享:smbfs(需内核支持)推荐cifs
    UNIX(LINUX) 文件网络共享:nfs

    -o 详细选项:

    loop :用来把一个文件当成硬盘分区挂接上系统
    ro :采用只读方式挂接设备
    rw :采用读写方式挂接设备
    iocharset :指定访问文件系统所用字符集,例如iocharset=utf8
    remount :重新挂载(相当于umount再mount),后面可接具体路径
    noatime: 以不更新access time的方式挂载,在文件数目过多注重性能而不注重access time时使用,效果好。

    使用实例:

    挂载windows文件共享

    mount -t smbfs -o username=admin,password=123456 //192.168.1.2/c$ /mnt/samba
     mount -t cifs -o username=xxx,password=xxx //IP/sharename /mnt/dirname

    挂载Linux文件nfs共享

    mount -t nfs -o rw 192.168.1.2:/usr/www /usr/www

    挂载ntfs格式USB移动硬盘

    mount -t ntfs /dev/sdc1 /root/usb

    挂载CDROM

    mount /dev/cdrom /home/cd

    单用户模式重新挂载根分区

    mount -o remount,rw /

    umount命令用于解挂一个文件系统,之前挂载的哪就解挂哪,一般要退出对应目录且不再使用,否则会提示  umount: /mnt/iso: device is busy.

    umount [-f] directory ,如果文件系统正在使用时会无法解挂,可使用-f,强制解挂

    取消挂载

    umount /dev/cdrom /home/cd

    iso相关

    挂载iso镜像

    mkdir -p /mnt/iso
    mount -o loop -t iso9660 XenServer-6.1-install-cd.iso /mnt/iso

    制作光盘镜像

    当cdrom有光盘时

    cp /dev/cdrom ~/mydisk.iso

    制作指定目录/root/dir的镜像

    mkisofs -r -J -V iso-real-name -o /usr/mydisk.iso /root/dir

    高级例子

    mount -o bind或mount –bind

    一盘mount都是挂载设备文件,使用mount -o bind可以把目录,文件挂载到另一个目录,文件

    如把/tmp/hosts文件挂载到/etc/hosts

    touch /tmp/hosts

    这时/tmp/hosts是空的,当将/tmp/hosts挂载到/etc/hosts后,注意顺序

    mount -o bind /tmp/hosts /etc/hosts

    使用mount命令可以查看到/tmp/hosts on /etc/hosts type none (rw,bind)

    发现/tmp/hosts与/etc/hosts都是空的了,当umount /tmp/hosts之后,又恢复成原来的/etc/hosts。这样可以随便别人用/etc/hosts,当别人用完之后,umount就能切换过来。

    mount -o bind参考:http://nvd11.blog.163.com/blog/static/2000183122012720113256766/