xin053

在安全圈里徘徊,停滞不前


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

  • 搜索
close

Python风格指南

发表于 2016-10-03   |   分类于 Python   |  

导入

仅对包和模块使用导入

虽然也可以导入某个函数,但这样做明显使得结构不清晰,所以应该仅仅对包和模块使用导入

包

使用模块的全路径名来导入每个模块

避免模块名冲突. 查找包更容易.

异常

允许使用异常, 但必须小心

模块或包应该定义自己的特定域的异常基类, 这个基类应该从内建的Exception类继承. 模块的异常基类应该叫做Error.

1
2
class Error(Exception):
pass

永远不要使用 except: 语句来捕获所有异常, 也不要捕获Exception 或者 StandardError,因为这样容易隐藏真正的bug

当捕获异常时, 使用 as 而不要用逗号. 例如:

1
2
3
4
try:
raise Error
except Error as error:
pass
阅读全文 »

Docker学习笔记(二)

发表于 2016-09-20   |   分类于 Docker   |  

解决问题

日常升级完VirtualBox后,发现打开docker虚拟机出差,报错:

1
Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter'

解决方法:

  • 打开网络和共享中心
  • 更多适配器设置
  • 选择 对应的网络适配器 adapter (如: VirtualBox Host-Only Ethernet Adapter)
  • 右键“属性”
  • 然后勾选 VirtualBox NDIS6 Bridged Networking Driver 选项,确定
阅读全文 »

Go学习笔记(三)

发表于 2016-09-20   |   分类于 Go   |  

函数

函数声明

1
2
3
func name(parameter-list) (result-list) {
body
}

如果函数声明没有返回值列表,则函数返回空。

函数值

函数像其他值一样,拥有类型,可以被赋值给其他变量:

1
2
3
4
5
6
7
8
9
10
11
12
func square(n int) int { return n * n }
func negative(n int) int { return -n }
func product(m, n int) int { return m * n }
f := square
fmt.Println(f(3)) // "9"
f = negative
fmt.Println(f(3)) // "-3"
fmt.Printf("%T\n", f) // "func(int) int"
f = product // compile error: can't assign func(int, int) int to func(int) int
阅读全文 »

Go学习笔记(二)

发表于 2016-09-08   |   分类于 Go   |  

复合数据类型

主要有四种复合数据类型:数组、slice、map和结构体。数组和结构体是具有固定大小的数据结构,slice和map是动态的数据结构,它们将根据需要动态增长。

数组

数组默认会生成0~数组长度-1的索引,于是便可以通过下标索引到数组对应元素值,也可以指定一个索引和对应值列表的方式初始化:

1
2
3
4
5
6
7
8
9
10
11
12
type Currency int
const (
USD Currency = iota // 美元
EUR // 欧元
GBP // 英镑
RMB // 人民币
)
symbol := [...]string{USD: "$", EUR: "€", GBP: "£", RMB: "¥"}
fmt.Println(RMB, symbol[RMB]) // "3 ¥"

在这种形式的数组字面值形式中, 初始化索引的顺序是无关紧要的, 而且没用到的索引可以省略, 和前面提到的规则一样, 未指定初始值的元素将用零值初始化。

数组在实际编程中其实用的很少.

阅读全文 »

UTF-8编码

发表于 2016-09-07   |   分类于 WeNeedToKnow   |  

Unicode

需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

比如,汉字”严”的unicode是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。

这里就有两个严重的问题,第一个问题是,如何才能区别Unicode和ASCII?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果Unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。

互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种Unicode的实现方式。其他实现方式还包括UTF-16(字符用两个字节或四个字节表示)和UTF-32(字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

阅读全文 »

Go学习笔记(一)

发表于 2016-09-07   |   分类于 Go   |  

Hello World

Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令。 Go语言提供的工具都通过一个单独的命令 go 调用, go 命令有一系列子命令。

新建 helloworld.go 文件:

1
2
3
4
5
6
7
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}

命令行执行程序:

1
2
$ go run helloworld.go
Hello, 世界

生成二进制文件:

1
$ go build helloworld.go
阅读全文 »

httpie人性化curl工具使用详解

发表于 2016-08-15   |   分类于 Python模块学习   |  

httpie简介

httpie是一个python写的类curl的命令行工具,跨平台,支持python2和3,友好的高亮显示以及其他的特性,基于Requests和Pygments库编写

阅读全文 »

click命令行工具使用详解

发表于 2016-07-31   |   分类于 Python模块学习   |  

click简介

click是类似docopt的命令行工具,让我们可以快速的创建一个命令行工具,并且click能让我用尽量少的代码,并自动生成命令行帮助文档

正如官网所说,click有三大特性:

  • arbitrary nesting of commands
  • automatic help page generation
  • supports lazy loading of subcommands at runtime
阅读全文 »

asciimatics库简介

发表于 2016-07-19   |   分类于 Python模块学习   |  

asciimatics简介

asciimatics生成ascii动画,看官方文档,上面特意强调了80后,看来那些玩过dos系统的人才能感受到终端动画的乐趣,说实话,我也只是学汇编那会儿使用cmd比较多,现在接触的比较少,这个库可以用在写命令行工具上,比较好玩,所以写下了该文章简介,不多说,看看官网介绍中利用asciimatics写的终端hello world:

是不是被亮瞎了呢?

阅读全文 »

configparser配置文件解析器使用详解

发表于 2016-07-18   |   分类于 Python模块学习   |  

configparser简介

python2下该模块名为ConfigParser,到3才改为configparser,可以看官方ConfigParser模块的说明

https://docs.python.org/2/library/configparser.html

本文介绍python3中configparser模块的使用,configparser模块是用来解析ini配置文件的解析器,关于ini配置文件的结构可以看python官方文档中的介绍:

ini文件结构

ini文件结构需要注意一下几点:

  • 键值对可用=或者:进行分隔
  • section的名字是区分大小写的,而key的名字是不区分大小写的
  • 键值对中头部和尾部的空白符会被去掉
  • 值可以为多行
  • 配置文件可以包含注释,注释以#或者;为前缀

注意:configparser有default_section的概念,默认为[DEFAULT]节,也就是之后的所有的section都有该默认section中的键值对,详情参见configparser源码的__init__()方法

阅读全文 »
1…3456
xin053

xin053

正在用Windbg调试正在调试正在反汇编Windbg的IDA的OD...

55 日志
13 分类
50 标签
RSS
GitHub 微博 知乎 csdn
友情链接
  • 看雪
  • 怪咖家园
  • CS_DH
  • Dendionk
  • cyang
© 2016 - 2017 xin053
由 Hexo 强力驱动
主题 - NexT.Mist