Blog

  • 树莓pi连接无线网络

    这里使用的前提是已经连接好usb无线网卡, ifconfig命令能够看到wlan0 编辑 /etc/wpa.config, 写入以下内容

    network={
        ssid="i_am_ssid"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP TKIP
        group=CCMP TKIP
        psk="i_am_password"
    }

    接下来编辑/etc/network/interfaces,注意,如果默认使用无线网的话,写配置文件时,将wlan0写在eth0之前。我之前是将wlan0写在eth0之后,这种情况下,只有在插有线的时候无线才能用,拨掉有线就不能用了;将wlan0写在eth0之前,就可以单独使用无线,上述情况仅供参考。 如果想要动态获取地址,请按如下配置:

    auto wlan0
    iface wlan0 inet dhcp
    wpa-conf /etc/wpa.config

    如果要静态获取ip地址,则按如下配置:

    auto wlan0
    iface wlan0 inet static
    address 192.168.1.21
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8
    wpa-conf /etc/wpa.config

    配置完成后重启网络或pi后生效

  • vim加减数字

    将光标移动到数字上 ctrl+a 为增大数字
    ctrl+x 为减小数字

  • 在ec2的AMI上安装oracle的jdk

    亚马逊上()默认的jdk为openjdk,现在换为oracle的。

    操作步骤如下(如需64位的,将下面的i586改为x64;6u34-b04可以猜是版本号)

    PS:oracle已经不支持直接下载,使用这个技巧来下载

    wget --no-check-certificate --no-cookies --header "Cookie: gpw_e24=xxx;" http://download.oracle.com/otn-pub/java/jdk/6u34-b04/jdk-6u34-linux-i586-rpm.bin
    sudo bash
    chmod +x jdk-6u34-linux-i586-rpm.bin
    ./jdk-6u34-linux-i586-rpm.bin
    alternatives --install /usr/bin/java java /usr/java/default/bin/java 20000
    update-alternatives --config java
    ln -s /usr/java/default/jre /usr/lib/jvm/jre
    ln -s /usr/share/java /usr/lib/jvm-exports/jre

    使用java -version,出现下面类似信息,则已经将默认jvm变为oracle版。

    $ java -version
    java version "1.6.0_34"
    Java(TM) SE Runtime Environment (build 1.6.0_34-b04)
    Java HotSpot(TM) Client VM (build 20.9-b04, mixed mode, sharing)

    这里多说一句update-alternatives,它可以设置某一类软件的默认程序,如果想将vim取代nano变为默认编辑器,则使用如下命令:

    update-alternatives --config editor

    还可以配置FTP,telnet,rsh等预设程序,更多的查看/etc/alternatives目录。

  • ruby连接mysql数据库

    以下操作在ubuntu下进行

    前提要安装好ruby-mysql

    gem install ruby-mysql
    require 'rubygems'
    require 'mysql'
    begin
      db = Mysql.new('localhost', 'username', 'password', 'password')
      puts "connected"
    rescue Mysql::Error
      puts "Oh noes! We could not connect to your database. -_-;;"
      exit 1
    end
    
    begin
      results = db.query "select * from blog.wp_users;"
      puts "blog has #{results.num_rows} users."
      puts results.class
      results.each do |row|
        puts row.join(" |  ")
      end
      results.free
    ensure
      db.close
    end

    结果将打印出wp_users这张表中的内容。

  • Ubuntu下安装Django

    Django为流行的python web开发框架

    安装python的包管理器,easy_install

    # apt-get install python-setuptools

    可以使用下面的命令检查是否安装成功

    # easy_install --version

    显示版本信息则安装成功

    接下来使用easy_install安装Django

    # easy_install django

    使用如下命令查看django是否安装成功

    # python
    Python 2.7.3 (default, Aug 1 2012, 05:14:39)
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import django
    >>> django.VERSION
     (1, 4, 3, 'final', 0)

    出现版本信息,则表示安装成功。

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

    http://jpuyy.com/2012/12/python-simple-programs-a.html

    http://jpuyy.com/2013/01/python-simple-programs-b.html

    例.20 素数筛选,生成器–Prime numbers sieve w/fancy generators

    生成从2到1000以内的素数

    import itertools
    
    def iter_primes():
         # an iterator of all numbers between 2 and +infinity
         numbers = itertools.count(2)
    
         # generate primes forever
         while True:
             # get the first number from the iterator (always a prime)
             prime = numbers.next()
             yield prime
    
             # this code iteratively builds up a chain of
             # filters...slightly tricky, but ponder it a bit
             numbers = itertools.ifilter(prime.__rmod__, numbers)
    
    for p in iter_primes():
        if p > 1000:
            break
        print p

    例21.xml/html解析–XML/HTML parsing

    dinner_recipe = '''<html><body><table>
    <tr><th>amt</th><th>unit</th><th>item</th></tr>
    <tr><td>24</td><td>slices</td><td>baguette</td></tr>
    <tr><td>2+</td><td>tbsp</td><td>olive oil</td></tr>
    <tr><td>1</td><td>cup</td><td>tomatoes</td></tr>
    <tr><td>1</td><td>jar</td><td>pesto</td></tr>
    </table></body></html>'''
    
    # In Python 2.5 or from http://effbot.org/zone/element-index.htm
    import xml.etree.ElementTree as etree
    tree = etree.fromstring(dinner_recipe)
    
    # For invalid HTML use http://effbot.org/zone/element-soup.htm
    # import ElementSoup, StringIO
    # tree = ElementSoup.parse(StringIO.StringIO(dinner_recipe))
    
    pantry = set(['olive oil', 'pesto'])
    for ingredient in tree.getiterator('tr'):
        amt, unit, item = ingredient
        if item.tag == "td" and item.text not in pantry:
            print "%s: %s %s" % (item.text, amt.text, unit.text)

    例28. 8皇后问题(自定义例外)8-Queens Problem (define your own exceptions)

    BOARD_SIZE = 8
    
    class BailOut(Exception):
        pass
    
    def validate(queens):
        left = right = col = queens[-1]
        for r in reversed(queens[:-1]):
            left, right = left-1, right+1
            if r in (left, col, right):
                raise BailOut
    
    def add_queen(queens):
        for i in range(BOARD_SIZE):
            test_queens = queens + [i]
            try:
                validate(test_queens)
                if len(test_queens) == BOARD_SIZE:
                    return test_queens
                else:
                    return add_queen(test_queens)
            except BailOut:
                pass
        raise BailOut
    
    queens = add_queen([])
    print queens
    print "\n".join(". "*q + "Q " + ". "*(BOARD_SIZE-q-1) for q in queens)
     例33,猜数字游戏
    import random
    
    guesses_made = 0
    
    name = raw_input('Hello! What is your name?\n')
    
    number = random.randint(1, 20)
    print 'Well, {0}, I am thinking of a number between 1 and 20.'.format(name)
    
    while guesses_made < 6:
    
        guess = int(raw_input('Take a guess: '))
    
        guesses_made += 1
    
        if guess < number:
            print 'Your guess is too low.'
    
        if guess > number:
            print 'Your guess is too high.'
    
        if guess == number:
            break
    
    if guess == number:
        print 'Good job, {0}! You guessed my number in {1} guesses!'.format(name, guesses_made)
    else:
        print 'Nope. The number I was thinking of was {0}'.format(number)
     把代码打了一遍,还得仔细再练几遍。