Howie's Notes

Machine Learning and Cyber Security

开发同一项目的不同的人,可能会使用不同的编辑器,又会有不同的设置,这就会造成不同的代码格式,为了统一同一项目的代码格式,由此诞生了 EditorConfig ,它包含了一个用于定义代码格式的文件一批编辑器插件,这些插件可以让编辑器读取配置文件并依此格式化代码。

一个典型的 EditorConfig 配置文件如下所示:

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
# 这是一行注释,以#开头

# 表示此文件为最顶级
root = true

# 设定每个文件每行以换行(LF)结束,文件末尾添加一个新行
[*]
end_of_line = lf
insert_final_newline = true

# 匹配所有以 js 和 py 为后缀名的文件
# 设定其编码为 UTF-8
[*.{js,py}]
charset = utf-8

# 匹配所有以 py 为后缀名的文件,设定其缩进为 4 个空格
[*.py]
indent_style = space
indent_size = 4

# 设定 Makefile 文件的缩进为 Tab
[Makefile]
indent_style = tab

# 匹配lib目录下所有以 js 为后缀名的文件,设定其缩进为 2 个空格
[lib/**.js]
indent_style = space
indent_size = 2

# 设定 package.json 和 .travis.yml 的缩进为 2 个空格
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2

此配置文件应该保存为 .editorconfig 并放置在项目目录中,编辑器的 EditorConfig 插件会从文件打开目录开始依次向其父级目录查找并读取配置文件,直到遇见 root = true 为止。

有很多项目在初始化时都会生成相应的 .editorconfig 文件,比如 Angular。

另外,Visual Studio 和 JetBrains 家的大部分 IDE 都已经原生支持了 EditorConfig,因此不用再安装插件;对于 Sublime Text 和 Vim 等未原生支持的编辑器,EditorConfig 官网提供了相应的插件下载地址。要了解详细的支持列表,请访问 EditorConfig 官网。

等宽字体与比例字体

等宽字体(Monospaced)是指字符宽度相同的电脑字体,与此相对,字符宽度不尽相同的电脑字体称为比例字体(Proportional)。一图胜千言,如下:

等宽字体与比例字体

在早期的电脑中,由于技术的局限,无法进行字母宽度的比例调整,因此只能将每个字符都制作成一样的宽度,从而形成了等宽字体。在等宽字体中,字母 ij 显得两侧余白较多,而字母 wm 等的笔画显得相当拥挤。但是随着图形用户界面主流的更新和计算机技术的提高,处理比例字体的局限性得到了突破,因此现在排版上显得比较自然的比例字体的使用已经相当普及。这里所讨论的都是英文字体,对于中文字体而言,一般认为它们都是等宽的。
Windows 中常用的等宽字体为 Consolas;macOS 中常用的等宽字体为 Menlo;Linux 中常用的等宽字体为 Mono

Read more »

按照编程语言的执行原理,一般将其分为编译型语言(如 C)和解释型语言(如 Python),对于编译型语言来说,它的开发环境就代表该语言的编译器和其基本类库,对于解释型语言来说,它的开发环境就代表该语言的解释器和其基本类库。请注意,这里我并没有提到编辑器,因为编辑器并不属于每种语言所特有的范畴。

对于解释型语言来说,它的开发环境就等于运行环境,而对于编译型语言,可以说它不需要运行环境。请注意,Java 可以理解为是一种先编译后解释的语言,所以运行 Java 程序之前需要安装 JRE(Java 运行环境)。

如今许多语言的 IDE(集成开发环境),已经集编辑器、该语言的编译器/解释器、基本类库等于一体。

SEO,即搜索引擎优化(Search Engine Optimization),下面列出几点 SEO 方面的建议:

  • 页面的URL应该足够反映页面的内容

第一步

拿到一个被隐写的文件,第一步当然是判断该文件是哪种类型的文件,一般可以通过文件后缀名判断之,若不能通过文件后缀名判断,则可以使用 Linux 中的 file 命令,直接输入 file a 即可检查 a 文件的类型。

知道文件类型后,就可以对症下药,依据相应的类型使用相应的办法,此时,不妨再查看一下文件对应的二进制数据,所有电子信息的本质无非是二进制,可以在二进制数据中搜索 CTFFLAG 等关键字,发现是否存在隐藏信息。Windows 下可以使用 Sublime Text 3 的插件 HexViewer 查看二进制信息。Linux 下可以使用 xxd 命令查看文件二进制数据。

图片隐写

图片内容

首先应该检查图片内容本身是否存在某些隐藏信息,遇到不熟悉的图片可以尝试谷歌搜图,或许可以发现更多信息。

Exif

Exif,即可交换图像文件格式(Exchangeable image file format),可以记录 JPEG 格式图片的属性信息和拍摄数据。有的 JPEG 格式图片会具有 Exif 信息,在 Windows 中查看属性选项卡中的详细信息项即可查看。别的格式的图片不具备 Exif 信息。如下图片:

exif

Read more »

Windows

微软最初的操作系统的DOS,DOS只是一个命令行形式,后来

.NET

Windows Phone

几个术语

  • PV:Page View,即页面浏览量或点击量,用户每次刷新即被计算一次。
  • UV:Unique Visitor,指独立访客数,以cookie为依据,访问网站的一台电脑客户端为一个访客。一天内相同的客户端只会被计算一次。
  • IP:指独立IP数。一天内相同IP地址只被计算一次。

相关工具

有许多第三方的工具可以帮助站长统计和分析网站流量,比如百度统计腾讯分析Google Analytics(GA)等。个人经常使用Google Analytics。
这类工具的原理大致为:它们会生成一段特定的JS代码,站长需要将这段代码插入到自己网站的页面中,当访客访问网站时,这段代码会收集访客的行为信息,并上传到它们的服务器上。

软件版本号的确定没有一个统一的规范,但大都遵循一个固定的格式,即X.Y.Z格式,其中:

  • X代表主版本号,一般当软件整体重写,或出现不向后兼容的改变等重大更新时,增加X,同时重置Y、Z为0,X为0时表示软件还在开发阶段;
  • Y代表次版本号,增删功能时增加Y,同时重置Z为0;
  • Z代表修订号,修复Bug时增加Z。

除此之外,还会有一些修饰词,比如:

  • alpha表示内部测试版;
  • beta表示公开测试版;
  • rc即Release Candidate,表示候选版本,即将作为正式版发布;
  • release表示正式发行版;
  • lts即Long Term Support,表示长期支持版。

有的项目有自己的一套规则,比如Ubuntu、Visual Studio等,它们采用发布年份作为版本号;Node.js规定X为偶数的是稳定版,X为奇数的是开发版;TeX的版本号不断趋近于π。
随着版本号定义的越来越混乱,GitHub起草了一个语义化版本(Semantic Versioning)规范,为开源项目做出了一定指导意义。

top

top 是 Linux 下一个常用命令,用来监视系统的运行状况,类似于 Windows 的任务管理器,下图是 top 命令的运行界面:

top

top 的运行结果可以大致分为 7 个部分:

  • 第 1 行显示了系统概况
  • 第 2 行显示了进程概况
  • 第 3 行显示了 CPU 概况
  • 第 4 行显示了内存概况
  • 第 5 行显示了 Swap 分区概况
  • 第 6 行为空行,用以显示运行命令时输入的参数
  • 剩下部分则为每个进程的详细信息
Read more »

0%