0%

数据引用错误

  1. 是否有引用的变量未赋值或未初始化?
  2. 下标的值是否在范围之内?
  3. 是否存在非整数下标?
  4. 是否存在虚调用?
  5. 当使用别名时属性是否正确?
  6. 记录和结构的属性是否匹配?
  7. 是否计算位串的地址?是否传递位串参数?
  8. 基础的存储属性是否正确?
  9. 跨过程的结构定义是否匹配?
  10. 索引或下标操作是否有“仅差一个”的错误?
  11. 继承需求是否得到满足?

运算错误

  1. 是否存在非算术变量间的运算?
  2. 是否存在混合模式的运算?
  3. 是否存在不同字长变量间的运算?
  4. 目标变量的大小是否小于赋值大小?
  5. 中间结果是否上溢或下溢?
  6. 是否存在被0除?
  7. 是否存在二进制的不精确度?
  8. 变量的值是否超过了有意义的范围?
  9. 操作符的优先顺序是否被正确理解?
  10. 整数除法是否正确?
Read more »

  1. 测试用例中一个必需部分是对预期输出或结果进行定义
  2. 程序员应当避免测试自己编写的程序
  3. 编写软件的组织不应当测试自己编写的软件
  4. 应当彻底检查每个测试的执行结果
  5. 测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况
  6. 检查程序是否『未做其应该做的』仅是测试的一半,测试的另一半是检查程序是否『做了其不应该做的』
  7. 应避免测试用例用后即弃,除非软件本身就是一个一次性的软件
  8. 计划测试工作时不应默许假定不会发现错误
  9. 程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比
  10. 软件测试是一项极富创造性、极具智力挑战性的工作

生成RSA公钥、私钥

1
2
3
key = RSA.generate(2048)
private_key = key.exportKey().decode()
public_key = key.publickey().exportKey().decode()

签名与验签

1
2
3
4
5
6
7
8
9
# 签名
h = SHA.new(message)
signer = Signature.new(RSA.importKey(private_key))
sign = base64.b64encode(signer.sign(h)).decode()
# 验签
sign = base64.b64decode(sign)
h = SHA.new(message)
verifier = Signature.new(RSA.importKey(public_key))
verify = verifier.verify(h, sign)

加密与解密

1
2
3
4
5
6
7
8
# 加密
cipher = Cipher.new(RSA.importKey(public_key))
ciphertext = base64.b64encode(cipher.encrypt(message)).decode()
# 解密
ciphertext = base64.b64decode(ciphertext)
sentinel = Random.new().read(SHA.digest_size)
cipher = Cipher.new(RSA.importKey(private_key))
message = cipher.decrypt(ciphertext, sentinel).decode()
Read more »

打开setting.xml,在其中添加以下配置:

1
2
3
4
5
6
<mirror>
<id>maven.aliyun.com</id>
<mirrorOf>central</mirrorOf>
<name>maven.aliyun.com</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central</url>
</mirror>

1
2
3
# 将your_db_name.table_name数据导出到文件db.backup.sql中
# pg_dump -U <your_db_username> -t <table_name> --inserts -f <db.backup.sql> -d <your_db_name>
pg_dump -U postgres -t user --inserts -f user.sql -d demo
Read more »

配置环境变量文件

假设需要配置一个新的环境NAME

首先配置一个新环境的配置文件,配置文件是:./src/environments/environment.NAME.ts

设置.angular-cli.json文件

.angular-cli.json中的apps[0].environments下配置新的环境:

1
2
3
{
"NAME": "environment.NAME.ts"
}

开发调试

开发调试可以使用命令:

1
ng serve --target=development --environment=NAME

部署

开发完可以使用下面命令部署:

1
ng build --target=production --environment=NAME

其他

为了简化开发调试的命令,可以在package.json文件中的scripts下添加以下内容:

1
2
3
{
"NAME": "ng serve --target=development --environment=NAME"
}

在开发调试时可以使用命令:npm run NAME

它是一个string元素组成的list变量,定义了当你使用from <module> import * 导入某个模块的时候能导出的符号(这里代表变量,函数,类等)。

举个例子,下面的代码在 foo.py 中,明确的导出了符号 bar, baz:

1
2
3
4
5
6
__all__ = ['bar', 'baz']

waz = 5
bar = 10
def baz():
return 'baz'

导入实现如下:

1
2
3
4
5
6
7
8
from foo import *

print bar
print baz

# The following will trigger an exception, as "waz" is not exported by the module
# 下面的代码就会抛出异常,因为 "waz"并没有从模块中导出,因为 __all__ 没有定义
print waz

如果把foo.py__all__给注释掉,那么上面的代码执行起来就不会有问题, import *默认的行为是从给定的命名空间导出所有的符号(当然下划线开头的私有变量除外)。

参考:https://docs.python.org/3.5/tutorial/modules.html#importing-from-a-package

注意:需要注意的是__all__只影响到了from <module> import *这种导入方式, 对于from <module> import <member>导入方式并没有影响,仍然可以从外部导入。

转载自:https://stackoverflow.com/questions/44834/can-someone-explain-all-in-python

安装

1
sudo apt-get install python-virtualenv

创建虚拟环境

1
virtualenv my-env

默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中, 如果不想依赖这些package,那么可以加上参数--no-site-packages建立虚拟环境。

1
virtualenv --no-site-packages my-env

使用虚拟环境

1
source my-env/bin/activate

退出虚拟环境

1
deactivate

安装pyenv

执行:

1
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

然后在~/.bashrc~/.bash_profile~/.profile文件中添加以下文本:

1
2
3
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

安装python

执行下面命令:

1
$ pyenv install 版本号
Read more »

创建Python项目

创建一个简单Python项目,在项目中添加文件setup.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import os
from setuptools import setup, find_packages
from setuptools.command.install import install

# 1.2.0.dev1 # Development release
# 1.2.0a1 # Alpha Release
# 1.2.0b1 # Beta Release
# 1.2.0rc1 # Release Candidate
# 1.2.0 # Final Release
# 1.2.0.post1 # Post Release
# 15.10 # Date based release
# 23 # Serial release
VERSION = '0.0.1a1'
PATH = os.path.dirname(os.path.abspath(__file__))

# When the project is installed by pip, this is the specification that is used to install its dependencies.
install_requires = []


def read(fname):
return open(os.path.join(PATH, fname)).read()


class PostInstallCommand(install):
def run(self):
pass


setup(
# This is the name of your project, determining how your project is listed on PyPI.
name='sample',
version=VERSION,
# Give a short and long description for your project. These values will be displayed on PyPI if you publish your project.
description='',
long_description=read('README.md'),
# Give a homepage URL for your project.
url='',
# Provide details about the author.
author='',
author_email='',
license='MIT',
# List keywords that describe your project.
keywords='',
# List additional relevant URLs about your project.
project_urls=[],
packages=find_packages(exclude=['docs', 'tests*', 'example']),
install_requires=install_requires,
# If your project only runs on certain Python versions, setting the `python_requires` argument.
python_requires='>=3',
classifiers=[
# How mature is this project? Common values are
# 3 - Alpha
# 4 - Beta
# 5 - Production/Stable
'Development Status :: 3 - Alpha',

# Indicate who your project is intended for
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',

# Pick your license as you wish (should match "license" above)
'License :: OSI Approved :: MIT License',

# Specify the Python versions you support here. In particular, ensure
# that you indicate whether you support Python 2, Python 3 or both.
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
],
entry_points={
# You can then let the toolchain handle the work of turning these interfaces into actual scripts.
'console_scripts': [
'sample=sample:main',
],
},
cmd_class={
'install': PostInstallCommand,
}
)

其中setup()的具体参数详见:setup-argssetuptools

Read more »