最近博主有用到optparser这个module,其对命令行的参数解析功能还是很强大的

举个栗子

1
2
3
4
5
6
7
8
9
10
from optparse import OptionParser

parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose", default=True,
help="don't print status messages to stdout")

(options, args) = parser.parse_args()

Read More

写法区别

经典类写法:

1
2
class classA():
pass

新式类写法:

1
2
class classB(object):
pass

继承区别

经典类就好比是在好几个单元楼里面找一户人家,所以你的查找方法是从第一栋单元楼开始从最高一层一直往最低一层找,没找到的话再去下一栋找.这里每一栋就表示一个父类,所以经典类是深度优先
新式类就好比好几个单元合在一起,每一个垂直方向的所有的房间构成一个父类,所以这时候当你要找一户人家的时候,你就会一层一层的找,没一层都有一个父类的一个房间,你只有先确定同一级的每个父类的每个房间都没有找到你,你才能去下一层找

Read More

这是一篇自己胡乱翻译的,翻译的可能会有错误,但是以自己目前对kernel的了解只能做到这样了,希望以后自己会有所成长,然后再次看到这篇翻译的时候莞尔一笑.

Android Init Language

Android Init语言包含四种类型的关键字:Action,Commands,ServicesOptions
以#开头的行是注释
ActionServices声名一个新的section,所有的commandsoptions都属于靠的最近的section.在第一个section之前的commandsservices都被忽略
每一个ActionsServices都有独立的名字,如果有相同名字的actionsservices被声名,那这个section将被当成一个错误忽略掉.

Read More

最近一段时间因为工作的原因,开始接触android和linux内核的一些东西.
有时间的话会陆续写一些关于这方面的博客,今天这片blog讲的是frame buffer

操作FrameBuffer的一般步骤

1
2
3
4
5
打开fb0设备文件(这个路径不一定,linux系统是放在/dev下面,嵌入式的系统可能放在/dev/graphics/下面);
用ioctl函数获取显示屏的位深、分辨率等信息,两个重要的结构体类型是fb_fix_screeninfo和fb_var_screeninfo;
mmap函数将FrameBuffer映射到用户空间;
读写FrameBuffer,进行绘图和图片显示等;
解除映射(munmap),关闭/dev/fb设备文件.

看程序说话

Read More

Git 生成patch的方法(patch就是补丁)
注:因为博主用的是linux系统,所以运行的环境均在linux下.

建立一个文件夹作为git的本地仓库:

1
2
3
mkdir /home/jasper/test_for_git
cd test_for_git
git init(创建一个repository)

给本地仓库创建一个资源,并写入”hello world”

1
2
touch hello.txt
echo "hello world">>hello.txt

提交本地仓库:

1
2
git add .
git commit -a -m "first commit"

创建一个本地branch,并且签出到新建的branch

1
2
git branch jasper
git checkout jasper

Read More

连接ftp服务器

1
ftp [ip_addr | hostname]

举个栗子:

1
ftp 172.168.0.1

链接后会让你输入用户名和密码进行身份认证.

下载文件

1
2
get [ftp服务器文件路径] [本地路径]
mget [文件匹配规则]

get的命令是下载单个文件到指定本地路径.
mget则可以批量下载.

再举个栗子:

1
ftp> mget *.txt //将服务器当前文件夹下的txt文档下载到本地当前路径

Read More