Python WebDev
2017-01-30
这个组织下的每个项目单拿出来都是响当当的存在:
- Click — Beautiful, composable command line interface creation kit.
- Flask — a flexible and popular web development framework
- ItsDangerous — Safely pass trusted data to untrusted environments and back.
- Jinja — a full featured template engine for Python
- MarkupSafe — Safely add untrusted strings to HTML/XML markup.
- Quart — an async reimplementation of flask
- Werkzeug — The comprehensive WSGI web application library.
- Click 命令行工具
- Flask 轻量级 Web 框架
- ItsDangerous
- Jinja 知名模板库
- MackupSafe
- Quart
- Werkzeug Web 工具箱(WSGI),Flask 的底层
开发工具 容器 Docker
2017-01-13
因为公司组织培训 Docker,为了更好参与课程,我提前一周开始预习 Docker 技术。
安装 Docker 之后,首次执行 docker info
时接到错误信息:“Cannot connect to the Docker daemon. Is the docker daemon running on this host?”。
当时,我再三确认了 Docker 服务运行状态,确实没有任何问题,傻眼了。
之后,加上 sudo 试试才运行正确。
科学
2017-01-12
国际单位制
基本单位
类型 |
名称 |
符号 |
定义 |
时间 t |
秒 |
s |
铯-133 原子 在基态下的两个超精细能级之间跃迁 所对应辐射的 9192631770 个周期的时间 |
长度 L |
米 |
m |
真空中,光一秒行程的 $\frac{1}{299792458}$ |
质量 m |
克 |
g |
|
电流 I |
毫安 |
A |
|
热力学温度 T |
开尔文 |
K |
|
物质的量 n(v) |
摩尔 |
mol |
|
发光强度 l(lv) |
坎德拉 |
cd |
|
国际单位制词头
词头 |
符号 |
中文 |
系数 |
yotta |
Y |
尧(它) |
$10^{24}$ |
zetta |
Z |
泽(它) |
$10^{21}$ |
exa |
E |
艾(可萨) |
$10^{18}$ |
peta |
P |
拍(它) |
$10^{15}$ |
tera |
T |
太(拉) |
$10^{12}$ |
giga |
G |
吉(咖) |
$10^{9}$ |
mega |
M |
兆 |
$10^{6}$ |
kilo |
k |
千 |
$10^{3}$ |
hecto |
h |
百 |
$10^{2}$ |
daca |
da |
十 |
$10^{1}$ |
deci |
d |
分 |
$10^{-1}$ |
centi |
c |
厘 |
$10^{-2}$ |
milli |
m |
毫 |
$10^{-3}$ |
micro |
μ, u |
微 |
$10^{-6}$ |
nano |
n |
纳(诺) |
$10^{-9}$ |
pico |
p |
皮(可) |
$10^{-12}$ |
femto |
f |
飞(母托) |
$10^{-15}$ |
atto |
a |
阿(托) |
$10^{-18}$ |
zepto |
z |
仄(普托) ze4 |
$10^{-21}$ |
yocto |
y |
幺(科托) |
$10^{-24}$ |
时间单位
- 天 d day
- 小时 h hour
- 分 m minute
- 秒 s second
- 毫秒 ms millisecond
- 微妙 us microsecond
- 纳秒 ns nanosecond
长度单位
长度的基本单位是米,标准是光在真空中 $1 / 299792458$ 秒内运动的距离。
市制
毫厘分寸尺丈
依据民国 18 年(1929 年)《度量衡法》。
1959 年《统一公制计量单位中文名称方案》基本沿用《度量衡法》,只是单位前面加一个 市
字,另外没有列出引、毫。
1 米 = 3 尺
10 米 = 3 丈
1 公里 = 2 里
1 里 = 15 引 = 150 丈 = 500 米
1 引 = 10 丈 = 33.333 米
1 丈 = 10 尺 = 3.333 米
1 尺 = 10 寸 = 0.333 米
1 寸 = 10 分 = 0.333 分米
1 分 = 10 厘 = 0.333 厘米
1 厘 = 10 毫 = 0.333 毫米
1 毫 = 0.033 微米 = 33.333 微米
天文单位
我知道的四个不属于国际单位制的天文学常用单位:
- 光秒, Light Second, ls,
299792458
m, 约等于 30 万公里
PS: 换算成公制单位,1 ls ≈ 0.3 Gm
(吉米)
- 光年, Light Year, ly, 大约等于 $9.46 × 10^{18}$ km (9.46 千亿公里)
$$
365.25 × 86400 = 31557600 \
× 299792458 = 9460730472580800
$$
-
天文单位, Astronomical Unit, au, 日地平均距离(地球和太阳之间距离的平均值)
2012 年国际天文学大会 IAU 将其固定为 149,597,870,700
m, 也就是 1 AU ≈ 1.5 亿公里 ($10^{9}$)。
PS: 换算成公制单位,1 au ≈ 149.6 Gm
(吉米)
PS: 1 au ≈ 499 ls
,也就说光从太阳到地球大概需要 499 秒左右(8 分多钟)。
PS: 作为参考: 月地距离 $3.844 × 10^{5}$ km 约等于 2.57 ‰
au; 太阳半径 $6.955 × 10^{5}$ km 约等于 4.65 ‰
au (太阳半径 = 1.81 月地距离)
-
秒差距, Parsec, pc, 通过时差来表示天文距离
如果地球和太阳的连线,地球和另一个天体的连线,成 89 度角,那么太阳和这个天体之间的距离为 1 pc
PS: 视察越大距离越近,视察越小距离越远
示例图(非等比例绘制):

根据三角函数的计算,
$$
1 pc = \frac {1 au} {tan 1}
= \frac {1 au} {\frac {1} {360} × \frac {π} {180}}
= \frac {648000} {π} au
$$
约等于 206265
au, 或者 3.26
ly,或者 $3 × 10^{13}$ km (三万亿公里)。
英制
暂无更多信息。
面积单位
平方十米 $dam^{2}$, 平方百米 $hm^{2}$, 平方千米 $km^{2}$ ...
平方米 $m^{2}$,平方分米 $dm^{2}$,平方厘米 $cm^{2}$ ...
市制
毫厘分亩顷
1 顷 = 100 亩 = 600000 平方尺 = 66666.666 平方米
1 亩 = 10 分 = 6000 平方尺 = 666.666 平方米
1 分 = 10 厘 = 600 平方尺 = 66.666 平方米
1 厘 = 10 毫 = 60 平方尺 = 6.666 平方米
1 毫 = 6 平方尺 = 0.666 平方米
公顷
1 平方米 = 9 平方尺
1 公顷 = 15 亩
= 90000 平方尺
= 10000 平方米
1 平方尺 = 100 平方寸
= 1/9 平方米
英制
暂无更多信息。
体积单位
立方厘米,立方米...
不属于国际单位制的体积单位是:
- 升, liter, L, $\frac {1} {1000} m^3$
市制
重量单位
物理学上,叫做质量。
- 吨 = 1000 kg
- 千克,公斤,kilogram
- 克,gram
市制
1 担 = 100 斤 = 50 公斤
1 斤 = 10 两 = 0.5 公斤
1 两 = 10 钱
1 钱 = 10 分
1 分 = 10 厘
PS: 29 年的《度量衡法》中 1 斤 = 16 两,而 59 年的《统一公制计量单位中文名称方案》则是 1 斤 = 10 两。
英制
暂无更多信息。
信息计量单位
这里需要特别说明的是国际单位制是十进制的,而 IT 界一般遵循二进制的计量方式(IEC 60027-2)。
单位 |
符号 |
说明 |
近似 IEC 单位 |
符号 |
说明 |
byte |
B |
$10^{0}$bytes |
byte |
B |
$2^{0}$bytes |
kilobyte |
KB |
$10^{3}$bytes |
kibibyte |
KiB |
$2^{10}$bytes |
megabyte |
MB |
$10^{6}$bytes |
mebibyte |
MiB |
$2^{20}$bytes |
gigabyte |
GB |
$10^{9}$bytes |
gibibyte |
GiB |
$2^{30}$bytes |
terabyte |
TB |
$10^{12}$bytes |
tebibyte |
TiB |
$2^{40}$bytes |
petabyte |
PB |
$10^{15}$bytes |
pebibyte |
PiB |
$2^{50}$bytes |
Linux ShellScripting
2017-01-10
command >output.txt # 把标准输出重定向到一个文件中
command >> output.txt # 把标准输出重定向到一个文件中(追加)
command 1>output.txt # 把标准输出重定向到一个文件中
command 1>>output.txt # 把标准输出重定向到一个文件中(追加)
command 2>output.txt # 把标准错误重定向到一个文件中
command 2>>output.txt # 把标准错误重定向到一个文件中(追加)
command >output.txt 2>&1 # 把标准输出和标准错误一起重定向到一个文件中
command >>output.txt 2>&1 # 把标准输出和标准错误一起重定向到一个文件中(追加)
command <input.txt # command命令以output.txt文件作为标准输入
command <input.txt >output.txt # command命令以output.txt文件作为标准输入, 以 output.txt 文件作为标准输出
# 从标准输出中读入,直至遇到delimiter分界符(不能与已存在的文件重名)
command << delimiter
command <&m 把文件描述符m作为标准输出
command >&m 把标准输出重定向到文件描述符m中
command <&- 关闭标准输入
Linux
2017-01-02
示例
# %c 表示当前 locale 的日期和时间
$ date +%c
2017年01月02日 星期一 12时00分00秒
# 获取当前时间戳
$ date +%s
1483329600
# -d 表示使用指定时间,而非默认的当前时间
# 获取指定时间的时间戳 (时间字符串 -> 时间戳)
$ date +%s -d "2017/01/01 00:00:00"
1483200000
# @ 表示时间戳
# 时间戳 -> 时间字符串
$ date -d @1483200000 # 等于: date --date="@1483200000"
2017年 01月 01日 星期日 00:00:00 CST
$ date -d @1483200000 +%c
2017年01月01日 星期日 00时00分00秒
# -u 表示使用 UTC 时间
$ date -u
2017年01月02日 星期一 14时00分00秒 UTC
$ date -d @1483200000 -u
2016年 12月 31日 星期六 16:00:00 UTC
$ date +%Y%m%d%H%M%S
20170102120000
# -R, --rfc-email, RFC 5322 格式
$ date -R
Mon, 02 Jan 2017 12:00:00 +0800
$ date --rfc-3339=date # 可以缩写成 d
2017-01-02
$ date --rfc-3339=seconds # 可以缩写成 s
2017-01-02 12:00:00+08:00
$ date --rfc-3339=ns # 可以缩写成 n
2017-01-02 12:00:00.000000000+08:00
常见日期格式占位符
- Y 年,4 位数字
- m 月,2 位数字
- d 日,2 位数字
- H 时,2 位数字
- M 分,2 位数字
- S 秒,2 位数字
- F 完整日期, 等于
%Y-%m-%d
- T 完整时间, 等于
%H:%M:%S
- R 等于
%H:%M
星辰大海
2016-12-29

Clang C++ .NET 开发工具
2016-11-07

Microsoft Visual C(简称Visual C、MSVC、VC或VC)是微软公司的C开发工具,具有集成开发环境,可提供编辑C语言,C以及C/CLI等编程语言。
MS 的 C/C++ 开发工具,继承了他们家的 Win32API,MFC,.NET 等编程框架。
最早是 MSC (Microsoft C);
后来添加 C 支持,改名叫 MS C/C;
再后来,GUI 编程兴起,改名 Visual C,简称 MSVC;
再后来,.NET 框架出来了,改名 Visual C.NET (Visual C .NET 2002);
再后来,05 年,又给改回去了 (Visual C 2005);
现在最新版本已经到了 Visual C++ 2015。
版本历史
Version |
Time |
Notes |
MSC 1.0 |
1983 |
|
MSC 7.0 |
1989 |
|
MS C/C++ 7.0 |
1992 |
c++, mfc |
VC++ 1.0 |
1993 |
16bit 版本 |
VC++ 1.52C |
1993 |
16bit 最后版本 |
VC++ 1.0 |
1993 |
32bit 版本, 重置了版本号 |
VC++ 2.0 |
|
Win95 发布 |
VC++ 4.0 |
1995 |
|
VC++ 5.0 |
1997 |
|
VC++ 6.0 |
1998 |
|
Visual C++ .NET 2002 |
2002 |
7.0 |
Visual C++ .NET 2003 |
2003 |
7.1 |
Visual C++ 2005 |
2005 |
8.0, 开始支持 64bit |
Visual C++ 2008 |
2007 |
9.0 |
Visual C++ 2010 |
2010 |
10.0 |
Visual C++ 2012 |
2012 |
11.0 |
Visual C++ 2013 |
2013 |
12.0 |
Visual C++ 2015 |
2015 |
14.0 |
Visual C++ 2017 |
2017 |
14.10 |
Visual C++ 2019 |
2019 |
14.20 |
PS: 大学学 C++ 的时候就是用的 VC6。
VC2015
- C99
2013 才开始支持,到 2015,基本上实现了 C99。
PS: C11 就不要想了。
- C14
微软在 C 领域还是很有发言权的。
.NET
Managed C++
Managed Extensions for C, C托管扩展
微软对 C 做了一个语法拓展(属性和关键字),便于将 C 编译成 .NET 平台中间代码。
非托管代码(没有改写)可以与托管代码进行很好的互操作。
但是由于引入了大量新的代码,代码整体可读性降低了。
C++/CLI
经过多年工程实践,微软为 Managed C 进行了大量改进。然后可能是标准化(ECMA-372)的缘故,新版本改名叫 C/CLI。
VC2005 开始使用 C/CLI 代替 Managed C。
根据文档(如何将 C++/CLI 项目移植到 .NET Core)来看,C++/CLI 项目就算移植到 .NET Core 也只能运行于 Windows。原因不明。
参考资料与拓展阅读
PHP
2016-10-17
复现方法
创建一个存文本文件,命名为:test.php
,内容如下:
<?php
$menu = [
1 => ['id' => 1, 'name' => 'a', 'child' => []],
2 => ['id' => 2, 'name' => 'b', 'child' => []],
];
foreach ($menu as &$submenu) {
$submenu['class'] = empty($submenu['child']) ? '' : 'hasChild';
}
print_r($menu);
print str_repeat('-', 80) . "\n";
foreach ($menu as $submenu) {
print_r($submenu);
}
?>
命令行中运行:
php -f test.php
得到以下输出:
Array
(
[1] => Array
(
[id] => 1
[name] => a
[child] => Array
(
)
[class] =>
)
[2] => Array
(
[id] => 2
[name] => b
[child] => Array
(
)
[class] =>
)
)
--------------------------------------------------------------------------------
Array
(
[id] => 1
[name] => a
[child] => Array
(
)
[class] =>
)
Array
(
[id] => 1
[name] => a
[child] => Array
(
)
[class] =>
)
可以发现,第二个 foreach
中的输出是错误的。
来自官网的说明
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
// without an unset($value), $value is still a reference to the last item: $arr[3]
foreach ($arr as $key => $value) {
// $arr[3] will be updated with each value from $arr...
echo "{$key} => {$value} ";
print_r($arr);
}
// ...until ultimately the second-to-last value is copied onto the last value
// output:
// 0 => 2 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 2 )
// 1 => 4 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 4 )
// 2 => 6 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 6 )
// 3 => 6 Array ( [0] => 2, [1] => 4, [2] => 6, [3] => 6 )
?>
参考
字体
2016-10-17
HTML 字体
font: 300 1em/1.8 sans;
参考
阮一峰 Georgia, serif
开源中国 微软雅黑, Verdana, sans-serif, 宋体
typo.sofi.sh PingFang SC, Lantinghei SC, Microsoft Yahei, Hiragino Sans GB, Microsoft Sans Serif, WenQuanYi Micro Hei, sans
作业部落 PingFang SC, Hiragino Sans GB, Helvetica Neue, Microsoft Yahei, WenQuanYi Micro Hei, sans-serif
MDN 'Open Sans',Arial,sans-serif
小众软件 Lucida, Verdana, 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif
码弄周刊 'Helvetica Neue', Helvetica, Arial, 'WenQuanYi Micro Hei', 'Microsoft Yahei', SimSun, sans-serif
Django Book 'Microsoft YaHei', 'Lucida Grande', Verdana;
设计
各平台常用字体
OS X : PingFang SC, Hiragino Sans GB, Helvetica Neue, Helvetica, Heiti SC, Monaco
Linux : Ubuntu Mono, WenQuanYi Micro Hei, Source Code Pro
Windows : Microsoft Yahei, SimSun, Courier New, Georgia, Tahoma, Arial
设计思路
- 不用很多,如果没有所选的字体,就是用浏览器默认设置
- 优先级:Mac OS > Ubuntu > Windows
Windows
2016-10-01
@echo off
echo Current Directory: %cd%
echo %date% , %time%
echo.
echo ================================================================================
echo.
echo %systemroot%
echo %windir%
echo.
echo ================================================================================
echo.
echo cmd.exe Path: %cmdcmdline%
: C:\windows\System32\cmd.exe
echo cmd.exe Extension Version: %cmdextversion%
echo %comspec%
: same with cmdcmdline
echo.
echo ================================================================================
echo.
echo %path%
echo %pathext%
: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
echo.
echo ================================================================================
echo.
echo %os%
: Windows_NT
echo %number_of_processors%
echo %processor_architecture%
: AMD64
echo %processor_identifier%
echo %processor_level%
echo %processor_revision%
echo %random%
echo %prompt%
echo.
echo ================================================================================
echo.
echo %logonserver%
echo %userdomain% (hostname)
echo %computername%
echo.
echo ================================================================================
echo.
echo %username%
echo %userprofile%
echo %homedrive%
echo %homepath%
echo %temp%
echo %tmp%
echo %appdata%