在树莓派上学习 Docker —— Part 3

已经掌握了如何 Run Docker 镜像,接下来就是如何 Build 、Ship。

首先需要知道镜像(Image)是只读的,容器(Container)是可写的,为了方便 Image 的分发,还需要一个集中保存管理 Image 的地方,称为 Docker Registry。

[阅读全文]

一次 DNS 查询会产生多少流量

参考资料:

以客户端的角度,根据相关协议的 RFC 文档内容来计算 IPv4 网络中一次 DNS 查询会产生多少网络流量。

根据 RFC 1122 TCP/IP 模型可以知道,要计算一次 DNS 查询所产生的流量,首先需要知道 DNS 协议在应用层产生的数据大小,然后根据传输层 TCP 或 UDP 协议计算出数据封包后的大小,最后根据网络层 IP 协议计算出实际产生的流量。

[阅读全文]
DNS 

RAID 资料整理与收集

参考资料:

磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。 磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID 卡)或软件(例如 ZFS)形式组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。 磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

警告:尽管 RAID 可以预防数据丢失,但并不完全保证数据不会丢失,请在使用RAID的同时注意备份重要数据。

RAID 的核心在于使用多个硬盘 (Array) 来提升容量 (Capacity) 和性能 (Performance), 使用额外的 (Redundant) 的硬盘来保证完整性 (Integrity)。

根据不同的性能和可靠性需求,有着不同的 RAID 级别,Storage Networking Industry Association (SNIA) 对 RAID 进行了标准化工作

虽然 RAID 可以针对硬盘缺陷或故障提供保护或恢复方案,但无法应对灾难性故障造成的数据丢失,比如自然灾害、用户误操作、软件故障、恶意软件等。对于重要数据,RAID 不能代替备份

[阅读全文]
RAID 

使用 Jenkins Blue Ocean 构建 Android 项目

Blue Ocean 是 Jenkins 推出的一套新的 UI,对比经典 UI 更具有现代化气息。2017 年 4 月 James Dumay 在博客上正式推出了 Blue Ocean 1.0

兼容 Blue Ocean 的 Jenkins 版本只需要安装插件即可使用,对于已经在使用 Pipeline 构建的 Jenkins Job 基本可以无缝切换到新 UI。

以构建 Android 项目为例,学习如何使用 Jenkins Blue Ocean 与 Pipeline,示例项目可以在 GitHub 上查看:

https://github.com/TomCzHen/jenkins-android-sample

[阅读全文]

在 openSUSE Tumbleweed 上使用 pyenv 管理多版本 Python 共存

pyenv does…

  • Let you change the global Python version on a per-user basis.
  • Provide support for per-project Python versions.
  • Allow you to override the Python version with an environment variable.
  • Search commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox.

pyenv 能干啥?在它的 GitHub 项目页面 就很直接的告诉你了。

[阅读全文]

Python 跨平台连接 SQL Server

前言

使用 python 访问 SQL Server 数据库,还需要支持跨平台。关于 SQL Server 的吐槽就免了,既然存在,总会有遇到这个问题的时候。

首先在 SQLAlchemy 文档中介绍的连接 SQL Server 的库就是这些了:

  • PyODBC
  • mxODBC
  • pymssql
  • zxJDBC for Jython
  • adodbapi
[阅读全文]