树莓派使用VPN科学上网

树莓派使用VPN科学上网

我们已经可以把树莓派当做无线路由器来上网,现在我们进行下一阶段的工作。如何科学上网,让连接wifi的所有设备都可以科学上网。

网段

tplink wan 192.168.1.2 网关 192.168.1.1 连接光猫,自动获取IP
tplink lan 192.168.0.1
tplink lan dhcp 192.168.0.100~192.168.0.199/255.255.255.0
raspberrypi eth0 192.168.0.101
raspberrypi wlan0 172.24.1.1
raspberrypi wlan0 dhcp ...

继续阅读

把树莓派当做无线路由器

把树莓派当做无线路由器

最新的Raspberry Pi 3开发板上提供了wifi模块,我在想是不是有可能把树莓派当做一个无线路由器使用?最后发现其实很简单,因为板载的BCM43438 芯片是有开源驱动的(brcmfmac),如果安装最新的raspbian,默认驱动已经安装好了,最麻烦的驱动问题迎刃而解。

OS环境

安装最新的raspbian,相当于debian 8 jessie arm版本,安装的过程不再赘述。

RASPBIAN JESSIE
Full desktop image based on Debian Jessie
Version:May 2016
Release date:2016-05-27
Kernel version:4.4

网络环境

network

用网线把树莓派和tp-link的lan口连接起来,然后在tp-link的设置当中,IP与MAC绑定设置,把树莓派的IP地址固定为一个地址,我设置的是192.168.0.101。

软件包

sudo apt-get install hostapd dnsmasq

简单说明一下这两个包的功能:
hostapd ...

继续阅读

货币基金薅羊毛记

货币基金薅羊毛记

在6月底的时候货币基金出现大幅度折价,买入赎回可以薅羊毛。下面记录一下毛羊毛的过程。

鹏华添利

交割单记录如下

成交日期 证券名称 操作 成交数量 成交均价 成交金额 发生金额
20160629 鹏华添利 证券买入 1500 99.958 149937 -149937
20160629 鹏华添利 交收资金冻结 -1500 0 0 0
20160629 鹏华添利 交收证券冻结 1500 99.957 0 0
20160630 鹏华添利 ETF现金替代退款 0 99.988 150008.81 150008.81
20160630 鹏华添利 交收证券冻结 -1500 0 0 0
20160630 鹏华添利 ...

继续阅读

树莓派3第一次开机过程

树莓派3第一次开机过程

最近买了一个raspberry Pi 3,打算用来做一个科学上网的路由器,第一篇记录一下第一次点亮的过程。
官方视频记录了整个过程,照着视频一点一点的做就可以,基本没有难度,动作快的话一个小时就可以搞定。

下载NOOBS

NOOBS 表示 noob(小白,等于newbie) system,新手选择这个最方便,下载包含Raspbian 镜像包的,1G左右。
https://www.raspberrypi.org/downloads/noobs/

格式化SD Card

有很多格式化SD Card的工具,不过官网上推荐的SD Formatter 4.0下载不了,在Mac系统下可以使用磁盘工具来格式化,
记住选择FAT(不要选择exFAT,启动不了),还有可启动的主分区,

解压NOOBS_v1_9_2.zip

把NOOBS_v1_9_2目录下的文件直接拖到SD Card 的根分区,不包含NOOBS_v1_9_2目录

开机

第一次开机需要显示器,键盘和鼠标,我看网上还有其他方法,貌似很高深,都看不懂。
开机装完系统之后就不需要显示器,键鼠了 ...

继续阅读

boto遍历S3

遍历S3

首先你需要一个有S3 list权限的key,如果bucket里面的文件很多的话,推荐使用分页来遍历

session = boto3.Session(aws_access_key_id=<s3_aws_key_id>,
                            aws_secret_access_key=<s3_aws_secret_key>,
                            region_name='us-east-1')
    s3 = session.resource('s3')
    client = session.client('s3')
    paginator = client.get_paginator('list_objects')
    for result in paginator.paginate(Bucket=<s3_bucket>, Prefix=<s3_path_prefix>:
        for content in result.get('Contents'):
            if content.get('Size') > 0:
                print content.get('Key')

分页默认大小是1000,可以修改PageSize,改小可以减少响应时间

paginator ...

继续阅读

djang data migration

djang data migration

在使用django框架开发的过程中,我们不可避免的遇到models层的变更,就涉及到数据库表的变动,django给我提供了一个migration的工具来做这些数据库表的变更。

djang migration

如果不加appname,那么就是指所有包含migrations 目录的app

# 基于当前的model 检测修改,创建迁移策略文件
python manage.py makemigrations <appname>
# 执行迁移动作
python manage.py migrate

migrations失败

有时候如果models改动比较大,migrations会失败,这个时候有两种选择,手工去修改migrations文件,第二种是清除所有migrations,重新migrate

手工修改migrations文件

通过报错信息加上SQL语句找到找到问题,然后具体问题具体分析,是修改数据库里面的数据,还是修改migrations生成的脚本。

python manage.py migrate

python manage.py sqlmigrate <appname> 0001

当处理模型修改的时候:

  • 如果模型包含一个未曾在数据库里建立的字段,Django会报出错信息。 当你第一次用Django的数据库API请求表中不存在的字段时会导致错误。

  • Django不关心数据库表中是否存在未在模型中定义的列。

  • Django不关心数据库中是否存在未被模型表示的table。

在使用SQLite3数据库时, 因为SQLite3 ...

继续阅读

井底之蛙出井记

井底之蛙出井记

深井

坐在井底,以为天空只有头上的一小圈,事情总是很简单,就像写程序一样,很容易搞定。IF ELSE,逻辑清晰,可是事情实际上是很复杂,就像一堆纠缠在一起的毛线,很多头绪。有种解决的办法就是快刀斩乱麻,釜底抽薪,可以这样的时候并不常见。或者直接无视问题,逃避。

外面的世界

经过了很大的努力,终于跳出深井,呼吸到外面自由的空气,可是也缺少了庇护,风吹日晒雨淋,都需要自己扛。现在想起来以前的种种其实都很幼稚,男生需要经历残酷的生活才能成熟,粉碎幻想之后,需要我们用我们的双手筑起生活之舟,杨帆朝目标前行。

未来的路

自由空气真好,条条大路都通罗马,可是要走哪一条呢,也许需要我们经过摸爬滚打,一身疲惫之时,才会看到未来的启示录。不管怎样,每一天都要有成长,有一天回头看过来,就会发现我们已经走了很远。

reStructuredText to Markdown

reStructuredText to Markdown

pandoc

pandoc 是一个haskell语言开发的文档格式转换工具,支持非常丰富的格式,覆盖了常见的所有格式。使用起来非常方便。

安装

# mac osx
brew install pandoc
# ubuntu
sudo apt-get install pandoc

格式转换

reStructuredText to markdown

pandoc -f rst --toc small_tip.rst -t markdown_github -o small_tip.md

更多例子
pandoc demo

导入pyspark 到 shell 和 pycharm当中

导入pyspark 到 shell 和 pycharm当中

shell

在.bashrc(bash shell) 或者 .zshrc(zshell) 中增加环境变量,具体路径注意自己修改:

export SPARK_HOME="$HOME/spark/spark-1.6.0-bin-hadoop2.6"
export PYTHONPATH="$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH"

然后在python console 可以 import pyspark

pycharm

在PyCharm的menu中找到Run -- Edit Configurations

在Defaults当中找到python, 点击Environment, 增加两行环境变量:

SPARK_HOME="$HOME/spark/spark-1.6.0-bin-hadoop2.6"
PYTHONPATH="$SPARK_HOME ...

继续阅读

年度归档