Quantcast
Channel: Linux 中国◆开源社区
Viewing all 13806 articles
Browse latest View live

Debian 10 “Buster”正式发布

$
0
0

Debian 项目于 6 日正式宣布发布了 Debian 的最新稳定版本 Debian GNU/Linux 10 “Buster” 操作系统。

经过两年多的开发,Debian Buster(Debian 10)现已宣布达到稳定,可用于生产环境中部署。它是一个主要版本,带来了许多更新的组件和许多新功能和改进。

“经过 25 个月的开发,Debian 项目很自豪地推出了新的稳定版本 10(代号 buster),它将在未来 5 年内得到 Debian 安全团队Debian 长期支持团队的共同支持。”

Debian GNU/Linux 10 “Buster” 新亮点

Debian GNU/Linux 10 “Buster” 版本的主要新功能包括:

  • GNOME 桌面环境的显示服务器将采用更安全的 Wayland 显示服务器,而不是 X.Org 服务器。但是 X.Org 也将默认安装,用户可以自行切换默认显示服务器。
  • 借助 Reproducible Builds 项目,Debian 10 中超过 91% 的源包构建为逐位相同bit-for-bit identical的二进制包。这是一个重要的校验功能,可以保护用户免受恶意篡改构建网络和编译器的攻击。
  • Debian GNU/Linux 10 “Buster” 中会默认安装并启用 AppArmor 开源访问控制框架,为操作系统添加新的安全层。
  • APT 现在正在使用 seccomp-BPF 沙盒方式以获得更好的安全性。
  • 从 Debian 7 就包括的 UEFI 安全启动支持得到了极大改进,这个版本中包括的安全启动功能支持 amd64、i386 和 arm64,将可以在大多数支持安全启动功能的机器上工作,这意味着不再需要禁用固件的安全启动功能。

Debian 10 将默认带有多种桌面环境:

  • Cinnamon 3.8
  • GNOME 3.30
  • KDE Plasma 5.14
  • LXDE 0.99.2
  • LXQt 0.14
  • MATE 1.20
  • Xfce 4.12

Debian GNU / Linux 10 “Buster” 中的主要更新组件包括 Linux 4.19 LTS 内核、systemd 241、GCC 8.3 和 7.4、GnuPG 2.2、OpenJDK 11、Samba 4.9、BIND DNS Server 9.11、Golang 1.11、Vim 8.1、KDE Plasma 5.14、 GNOME 3.30、Xfce 4.12、LXQt 0.14、LXDE 0.99.2、Cinnamon 3.8、MATE 1.20 和 LibreOffice 6.1。

Debian GNU / Linux 10 “Buster” 官方支持 10 种架构,包括 32位(i386)、64位(amd64)、AArch64(arm64)、ARM EABI(armel)、ARMv7、MIPS、PowerPC(ppc64el)等等。 

下载与安装

如果你想体验一下 Debian 10 “Buster” 而暂时不想安装它,你可以使用 live 镜像 在内存中启动一个只读的完整操作系统。这些镜像支持 amd64 和 i386 架构,可以写入到 DVD、U 盘和网络启动盘上。 用户可以从各种桌面环境选择其一。

你也可以下载安装镜像并将其写入到蓝光盘、DVD、CD、U 盘和网络启动盘上,将其安装到机器上。

大多数情况下 Debian 9 可以通过 APT 包管理系统自动升级到 Debian 10。一般情况下升级过程是毫无问题的,但是建议你在升级前阅读发布公告安装指南


在 Fedora 上搭建 Jupyter 和数据科学环境

$
0
0

在过去,神谕和魔法师被认为拥有发现奥秘的力量,国王和统治者们会借助他们预测未来,或者至少是听取一些建议。如今我们生活在一个痴迷于将一切事情量化的社会里,这份工作就交给数据科学家了。

数据科学家通过使用统计模型、数值分析,以及统计学之外的高级算法,结合数据库里已经存在的数据,去发掘、推断和预测尚不存在的数据(有时是关于未来的数据)。这就是为什么我们要做这么多的预测分析和规划分析。

下面是一些可以借助数据科学家回答的问题:

  1. 哪些学生有旷课倾向?每个人旷课的原因分别是什么?
  2. 哪栋房子的售价比合理价格要高或者低?一栋房子的合理价格是多少?
  3. 如何将我们的客户按照潜在的特质进行分组?
  4. 这个孩子的早熟可能会在未来引发什么问题?
  5. 我们的呼叫中心在明天早上 11 点 43 分会接收到多少次呼叫?
  6. 我们的银行是否应该向这位客户发放贷款?

请注意,这些问题的答案是在任何数据库里都查询不到的,因为它们尚不存在,需要被计算出来才行。这就是我们数据科学家从事的工作。

在这篇文章中你会学习如何将 Fedora 系统打造成数据科学家的开发环境和生产系统。其中大多数基本软件都有 RPM 软件包,但是最先进的组件目前只能通过 Python 的 pip 工具安装。

Jupyter IDE

大多数现代数据科学家使用 Python 工作。他们工作中很重要的一部分是 探索性数据分析Exploratory Data Analysis(EDA)。EDA 是一种手动进行的、交互性的过程,包括提取数据、探索数据特征、寻找相关性、通过绘制图形进行数据可视化并理解数据的分布特征,以及实现原型预测模型。

Jupyter 是能够完美胜任该工作的一个 web 应用。Jupyter 使用的 Notebook 文件支持富文本,包括渲染精美的数学公式(得益于 mathjax)、代码块和代码输出(包括图形输出)。

Notebook 文件的后缀是 .ipynb,意思是“交互式 Python Notebook”。

搭建并运行 Jupyter

首先,使用 sudo 安装 Jupyter 核心软件包:

$ sudo dnf install python3-notebook mathjax sscg

你或许需要安装数据科学家常用的一些附加可选模块:

$ sudo dnf install python3-seaborn python3-lxml python3-basemap python3-scikit-image python3-scikit-learn python3-sympy python3-dask+dataframe python3-nltk

设置一个用来登录 Notebook 的 web 界面的密码,从而避免使用冗长的令牌。你可以在终端里任何一个位置运行下面的命令:

$ mkdir -p $HOME/.jupyter
$ jupyter notebook password

然后输入你的密码,这时会自动创建 $HOME/.jupyter/jupyter_notebook_config.json 这个文件,包含了你的密码的加密后版本。

接下来,通过使用 SSLby 为 Jupyter 的 web 服务器生成一个自签名的 HTTPS 证书:

$ cd $HOME/.jupyter; sscg

配置 Jupyter 的最后一步是编辑 $HOME/.jupyter/jupyter_notebook_config.json 这个文件。按照下面的模版编辑该文件:

{
   "NotebookApp": {
     "password": "sha1:abf58...87b",
     "ip": "*",
     "allow_origin": "*",
     "allow_remote_access": true,
     "open_browser": false,
     "websocket_compression_options": {},
     "certfile": "/home/aviram/.jupyter/service.pem",
     "keyfile": "/home/aviram/.jupyter/service-key.pem",
     "notebook_dir": "/home/aviram/Notebooks"
   }
}

/home/aviram/ 应该替换为你的文件夹。sha1:abf58...87b 这个部分在你创建完密码之后就已经自动生成了。service.pemservice-key.pemsscg 生成的和加密相关的文件。

接下来创建一个用来存放 Notebook 文件的文件夹,应该和上面配置里 notebook_dir 一致:

$ mkdir $HOME/Notebooks

你已经完成了配置。现在可以在系统里的任何一个地方通过以下命令启动 Jupyter Notebook:

$ jupyter notebook

或者是将下面这行代码添加到 $HOME/.bashrc 文件,创建一个叫做 jn 的快捷命令:

alias jn='jupyter notebook'

运行 jn 命令之后,你可以通过网络内部的任何一个浏览器访问 <https://your-fedora-host.com:8888> (LCTT 译注:请将域名替换为服务器的域名),就可以看到 Jupyter 的用户界面了,需要使用前面设置的密码登录。你可以尝试键入一些 Python 代码和标记文本,看起来会像下面这样:

Jupyter with a simple notebook

除了 IPython 环境,安装过程还会生成一个由 terminado 提供的基于 web 的 Unix 终端。有人觉得这很实用,也有人觉得这样不是很安全。你可以在配置文件里禁用这个功能。

JupyterLab:下一代 Jupyter

JupyterLab 是下一代的 Jupyter,拥有更好的用户界面和对工作空间更强的操控性。在写这篇文章的时候 JupyterLab 还没有可用的 RPM 软件包,但是你可以使用 pip 轻松完成安装:

$ pip3 install jupyterlab --user
$ jupyter serverextension enable --py jupyterlab

然后运行 jupiter notebook 命令或者 jn 快捷命令。访问 <http://your-linux-host.com:8888/lab> (LCTT 译注:将域名替换为服务器的域名)就可以使用 JupyterLab 了。

数据科学家使用的工具

在下面这一节里,你将会了解到数据科学家使用的一些工具及其安装方法。除非另作说明,这些工具应该已经有 Fedora 软件包版本,并且已经作为前面组件所需要的软件包而被安装了。

Numpy

Numpy 是一个针对 C 语言优化过的高级库,用来处理大型的内存数据集。它支持高级多维矩阵及其运算,并且包含了 log()exp()、三角函数等数学函数。

Pandas

在我看来,正是 Pandas 成就了 Python 作为数据科学首选平台的地位。Pandas 构建在 Numpy 之上,可以让数据准备和数据呈现工作变得简单很多。你可以把它想象成一个没有用户界面的电子表格程序,但是能够处理的数据集要大得多。Pandas 支持从 SQL 数据库或者 CSV 等格式的文件中提取数据、按列或者按行进行操作、数据筛选,以及通过 Matplotlib 实现数据可视化的一部分功能。

Matplotlib

Matplotlib 是一个用来绘制 2D 和 3D 数据图像的库,在图象注解、标签和叠加层方面都提供了相当不错的支持。

matplotlib pair of graphics showing a cost function searching its optimal value through a gradient descent algorithm

Seaborn

Seaborn 构建在 Matplotlib 之上,它的绘图功能经过了优化,更加适合数据的统计学研究,比如说可以自动显示所绘制数据的近似回归线或者正态分布曲线。

Linear regression visualised with SeaBorn

StatsModels

StatsModels 为统计学和经济计量学的数据分析问题(例如线形回归和逻辑回归)提供算法支持,同时提供经典的 时间序列算法 家族 ARIMA。

Normalized number of passengers across time \(blue\) and ARIMA-predicted number of passengers \(red\)

Scikit-learn

作为机器学习生态系统的核心部件,Scikit 为不同类型的问题提供预测算法,包括 回归问题(算法包括 Elasticnet、Gradient Boosting、随机森林等等)、分类问题 和聚类问题(算法包括 K-means 和 DBSCAN 等等),并且拥有设计精良的 API。Scikit 还定义了一些专门的 Python 类,用来支持数据操作的高级技巧,比如将数据集拆分为训练集和测试集、降维算法、数据准备管道流程等等。

XGBoost

XGBoost 是目前可以使用的最先进的回归器和分类器。它并不是 Scikit-learn 的一部分,但是却遵循了 Scikit 的 API。XGBoost 并没有针对 Fedora 的软件包,但可以使用 pip 安装。使用英伟达显卡可以提升 XGBoost 算法的性能,但是这并不能通过 pip 软件包来实现。如果你希望使用这个功能,可以针对 CUDA (LCTT 译注:英伟达开发的并行计算平台)自己进行编译。使用下面这个命令安装 XGBoost:

$ pip3 install xgboost --user

Imbalanced Learn

Imbalanced-learn 是一个解决数据欠采样和过采样问题的工具。比如在反欺诈问题中,欺诈数据相对于正常数据来说数量非常小,这个时候就需要对欺诈数据进行数据增强,从而让预测器能够更好地适应数据集。使用 pip 安装:

$ pip3 install imblearn --user

NLTK

Natural Language toolkit(简称 NLTK)是一个处理人类语言数据的工具,举例来说,它可以被用来开发一个聊天机器人。

SHAP

机器学习算法拥有强大的预测能力,但并不能够很好地解释为什么做出这样或那样的预测。SHAP 可以通过分析训练后的模型来解决这个问题。

Where SHAP fits into the data analysis process

使用 pip 安装:

$ pip3 install shap --user

Keras

Keras 是一个深度学习和神经网络模型的库,使用 pip 安装:

$ sudo dnf install python3-h5py
$ pip3 install keras --user

TensorFlow

TensorFlow 是一个非常流行的神经网络模型搭建工具,使用 pip 安装:

$ pip3 install tensorflow --user

Photo courtesy of FolsomNatural on Flickr (CC BY-SA 2.0).


via: https://fedoramagazine.org/jupyter-and-data-science-in-fedora/

作者:Avi Alkalay 选题:lujun9972 译者:chen-ni 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Undo 发布用于 Linux 调试的 Live Recorder 5.0

$
0
0

随着 Undo 发布 Live Recorder 5.0,这使得在多进程系统上的调试变得更加轻松。

随着 Undo 发布 Live Recorder 5.0,Linux 调试迈出了一大步。该产品于上个月发布,这使得在多进程系统上的调试变得更加轻松。它基于飞行记录仪技术flight recorder technology,它更加深入进程之中,以深入了解每个进程的情况。这包括内存、线程、程序流,服务调用等。为了实现这一目标,Live Recorder 5.0 的记录、重放和调试功能都得到了增强,能够:

  • 记录进程更改共享内存变量的确切顺序。甚至可以针对特定变量并在任何进程中跳转到最后修改该变量的一行。
  • 通过随机化线程执行来暴露潜在缺陷,以帮助揭示竞态、崩溃和其他多线程缺陷。
  • 记录并重放单个 Kubernetes 和 Docker 容器的执行,以帮助在微服务环境中更快地解决缺陷。

Undo Live Recorder 使工程团队能够记录和重放任何软件程序的执行,而无论软件多么复杂。并且可以诊断和修复测试或生产中问题的根本原因。

根据你的许可证,Live Recorder 可以在命令行中使用 live-record 命令,但有点类似于 strace,但它不会打印系统调用和信号,而是创建一个“Undo 录制”。然后你可以调试录制中捕获的失败(远比分析核心转储高效!)。这些录制也可以与其他工作人员共享,并可以使用可逆调试器进行重放,以进一步调查崩溃原因或其他问题。

Undo 引擎支持以下 Linux 发行版:

  • Red Hat Enterprise Linux 6.8、6.9、6.10、7.4、7.5、7.6 和 8.0
  • Fedora 28、29 和 30
  • SuSE Linux Enterprise Server 12.3、12.4 和 15
  • Ubuntu 16.04 LTS、18.04 LTS、18.10 和 19.04

Undo 是一家快速发展的,有风险投资支持的技术初创公司,它的总部位于旧金山和英国剑桥。他们称 Live Recorder 可以 100% 确定导致任何软件故障的因素 —— 即使在最复杂的软件环境中也是如此。

FacebookLinkedIn 上加入 Network World 社区,评论你想说的话题。


via: https://www.networkworld.com/article/3405584/undo-releases-live-recorder-5-0-for-linux-debugging.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Tor 将修复一个用于 DDoS 攻击的 Bug

$
0
0

Tor 将修复一个过去几年被用于向暗网网站发动 DDoS 攻击的 Bug。即将释出的 Tor protocol 0.4.2 将修复该 bug。

拒绝访问攻击的工作原理十分简单:攻击者向目标网站同时发送数千个连接,由于 Tor 的中继特性,每个连接都需要远程服务器与 Tor 网络协商一个复杂回路。这个过程是 CPU 密集,需要消耗 CPU 资源,连接越多,CPU 占用率就可能会达到 100% ,导致服务器无法再接受新的连接。

由于缺乏人手以及缺乏简单的修复方法,该 bug 多年来一直没有解决,而暗网的 DDoS 攻击早已司空见惯。最新的修正没有完全解决问题,但会让 DDoS 攻击的效率降低。

来源:solidot.org

更多资讯

去中心化基础架构安全尝试

2018 年至今所谓的区块链行业经历了如火如荼的高速扩张到加密货币价格暴跌后的各种有趣现象,商业的角度只是投机者们追逐下一个泡沫市场的更替,但从自由软件社区和技术的角度,过去30年的自由软件社区经过了大量的去中心化的实践(看看最近刚发布 Buster 的 Debian GNU/Linux 社区就是去中心化管理的典范),而随着 crypto anarchy 社区的早期尝试以及后来的进化,各种密码工程的产物的意义不亚于互联网本身,而加密货币只是其中之一。

来源: solidot.org
详情: http://www.dbsec.cn/zx/20190708-1.html 

 

深圳车牌竞价系统 bug 可看他人报价?官方回应

7 月 5 日下午,在深圳第 6 期小汽车车牌竞价期间,有网友反映深圳车牌竞价系统存在漏洞,通过手机微信登录竞价系统可以看到他人报价金额,或导致个人隐私泄露。 7 月 6 日下午,深圳市交通运输局、深圳联合产权交易所发布官方声明,表示采取微信方式参与报价的共有 3337 人,在特定情形下看到他人报价 190 次,占报价总次数的 0.33 %。本次竞价结果未受影响,未造成本期竞价参与人身份证件、联系方式等敏感信息泄露。

来源: 星岛环球网
详情: http://www.dbsec.cn/zx/20190708-5.html 

(信息来源于网络,安华金和搜集整理)

深入学习 Linux 内核模块

$
0
0

lsmod 命令能够告诉你当前系统上加载了哪些内核模块,以及关于使用它们的一些有趣的细节。

Rob Oo \(CC BY 2.0\)

什么是 Linux 内核模块?

内核模块是可以根据需要加载到内核中或从内核中卸载的代码块,因此无需重启就可以扩展内核的功能。事实上,除非用户使用类似 lsmod 这样的命令来查询模块信息,否则用户不太可能知道内核发生的任何变化。

需要知道的重要一点是,在你的 Linux 系统上总会有很多可用的模块,并且如果你可以深入其中了解到很多细节。

lsmod 的主要用途之一是在系统不能正常工作时检查模块。然而,大多数情况下,模块会根据需要加载的,而且用户不需要知道它们如何运作。

显示内核模块

显示内核模块最简单的方法是使用 lsmod 命令。虽然这个命令包含了很多细节,但输出却是非常用户友好。

$ lsmod
Module                  Size  Used by
snd_hda_codec_realtek 114688  1
snd_hda_codec_generic  77824  1 snd_hda_codec_realtek
ledtrig_audio          16384  2 snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_codec_hdmi     53248  1
snd_hda_intel          40960  2
snd_hda_codec         131072  4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel
                                ,snd_hda_codec_realtek
snd_hda_core           86016  5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel
                                ,snd_hda_codec,snd_hda_codec_realtek
snd_hwdep              20480  1 snd_hda_codec
snd_pcm               102400  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda
                                _core
snd_seq_midi           20480  0
snd_seq_midi_event     16384  1 snd_seq_midi
dcdbas                 20480  0
snd_rawmidi            36864  1 snd_seq_midi
snd_seq                69632  2 snd_seq_midi,snd_seq_midi_event
coretemp               20480  0
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
snd_timer              36864  2 snd_seq,snd_pcm
kvm_intel             241664  0
kvm                   626688  1 kvm_intel
radeon               1454080  10
irqbypass              16384  1 kvm
joydev                 24576  0
input_leds             16384  0
ttm                   102400  1 radeon
drm_kms_helper        180224  1 radeon
drm                   475136  13 drm_kms_helper,radeon,ttm
snd                    81920  15 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda
                                 _codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd
                                 _hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
i2c_algo_bit           16384  1 radeon
fb_sys_fops            16384  1 drm_kms_helper
syscopyarea            16384  1 drm_kms_helper
serio_raw              20480  0
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
soundcore              16384  1 snd
mac_hid                16384  0
sch_fq_codel           20480  2
parport_pc             40960  0
ppdev                  24576  0
lp                     20480  0
parport                53248  3 parport_pc,lp,ppdev
ip_tables              28672  0
x_tables               40960  1 ip_tables
autofs4                45056  2
raid10                 57344  0
raid456               155648  0
async_raid6_recov      24576  1 raid456
async_memcpy           20480  2 raid456,async_raid6_recov
async_pq               24576  2 raid456,async_raid6_recov
async_xor              20480  3 async_pq,raid456,async_raid6_recov
async_tx               20480  5 async_pq,async_memcpy,async_xor,raid456,async_raid6_re
                                cov
xor                    24576  1 async_xor
raid6_pq              114688  3 async_pq,raid456,async_raid6_recov
libcrc32c              16384  1 raid456
raid1                  45056  0
raid0                  24576  0
multipath              20480  0
linear                 20480  0
hid_generic            16384  0
psmouse               151552  0
i2c_i801               32768  0
pata_acpi              16384  0
lpc_ich                24576  0
usbhid                 53248  0
hid                   126976  2 usbhid,hid_generic
e1000e                245760  0
floppy                 81920  0

在上面的输出中:

  • Module 显示每个模块的名称
  • Size 显示每个模块的大小(并不是它们占的内存大小)
  • Used by 显示每个模块被使用的次数和使用它们的模块

显然,这里有很多模块。加载的模块数量取决于你的系统和版本以及正在运行的内容。我们可以这样计数:

$ lsmod | wc -l
67

要查看系统中可用的模块数(不止运行当中的),试试这个命令:

$ modprobe -c | wc -l
41272

与内核模块相关的其他命令

Linux 提供了几条用于罗列、加载及卸载、测试,以及检查模块状态的命令。

  • depmod —— 生成 modules.dep 和映射文件
  • insmod —— 一个往 Linux 内核插入模块的程序
  • lsmod —— 显示 Linux 内核中模块状态
  • modinfo —— 显示 Linux 内核模块信息
  • modprobe —— 添加或移除 Linux 内核模块
  • rmmod —— 一个从 Linux 内核移除模块的程序

显示内置的内核模块

正如前文所说,lsmod 命令是显示内核模块最方便的命令。然而,也有其他方式可以显示它们。modules.builtin 文件中列出了所有构建在内核中的模块,在 modprobe 命令尝试添加文件中的模块时会使用它。注意,以下命令中的 $(uname -r) 提供了内核版本的名称。

$ more /lib/modules/$(uname -r)/modules.builtin | head -10
kernel/arch/x86/crypto/crc32c-intel.ko
kernel/arch/x86/events/intel/intel-uncore.ko
kernel/arch/x86/platform/intel/iosf_mbi.ko
kernel/mm/zpool.ko
kernel/mm/zbud.ko
kernel/mm/zsmalloc.ko
kernel/fs/binfmt_script.ko
kernel/fs/mbcache.ko
kernel/fs/configfs/configfs.ko
kernel/fs/crypto/fscrypto.ko

你可以使用 modinfo 获得一个模块的更多细节,虽然没有对模块提供的服务的简单说明。下面输出内容中省略了冗长的签名。

$ modinfo floppy | head -16
filename:       /lib/modules/5.0.0-13-generic/kernel/drivers/block/floppy.ko
alias:          block-major-2-*
license:        GPL
author:         Alain L. Knaff
srcversion:     EBEAA26742DF61790588FD9
alias:          acpi*NP0700:*
alias:          pnp:dPNP0700*
depends:
retpoline:      Y
intree:         Y
name:           floppy
vermagic:       5.0.0-13-generic SMP mod_unload
sig_id:         PKCS#7
signer:
sig_key:
sig_hashalgo:   md4

你可以使用 modprobe 命令加载或卸载模块。使用下面这条命令,你可以找到特定模块关联的内核对象:

$ find /lib/modules/$(uname -r) -name floppy*
/lib/modules/5.0.0-13-generic/kernel/drivers/block/floppy.ko

如果你想要加载模块,你可以使用这个命令:

$ sudo modprobe floppy

总结

很明显,内核模块的加载和卸载非常重要。它使得 Linux 系统比使用通用内核运行时更加灵活和高效。这同样意味着你可以进行重大更改而无需重启,例如添加硬件。


via: https://www.networkworld.com/article/3391362/looking-into-linux-modules.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:LazyWolfLin 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

学校可以变得敏捷吗?

$
0
0

我们一定不会希望用商业的方式运作我们的学校 —— 但是更加注重持续改进的教育机构是可以让我们受益的。

我们都有过那种感觉一件事情“似曾相识”的经历。在 1980 年代末期我经常会有这种感觉,那时候我刚刚进入工业领域不久。当时正赶上一波组织变革的热潮,美国制造业在尝试各种各样不同的模型,让企业领导、经理人和像我这样的工程师重新思考我们应该如何处理质量、成本、创新以及股东价值这样的问题。我们似乎每一年(有时候更加频繁)都需要通过学习一本书来找到让我们更精简、更扁平、更灵活以及更加能满足顾客需求的“最佳方案”。

这里面的很多方法都带来了巨大的改进,我至今仍然赞同它们的核心原则。像 John Kotter、Peter Drucker、Edwards Demming 和 Peter Senge 这样的思想领袖提出的某些思想和策略,还有我们采用的像 Six Sigma 以及在“丰田模式”里可以找到的一些流程优化方法,对我们改进工作都起到了十分关键的作用。

但是其他人似乎只是在同样的思想上进行了润色和调整,然后重新包装了一下 —— 所以我才会有那种 似曾相识 的感觉。但是当我成为了一名教师之后,我遇到了一个 没有 给我那种似曾相识的感觉的地方:教育界。事实上我十分惊讶地发现,在我的这个新职业里,“持续不断的改进”并 不像 在我之前的职业里那样重要了(特别是对于像我这种授课老师职级的人来说)。

为什么教育机构很少努力营造一种不断改进的文化氛围呢?我能想到几个原因,在这里我列举两个。

不再做生产线上的元件

这种不断改进的文化氛围遇到的第一个阻碍是,教育界普遍不愿意从其它行业借鉴可以为自己所用的思想 —— 特别是来自商界的思想。第二个阻碍是,主导教育界的仍然是一种自上而下的、等级制度森严的领导模式。人们往往只能在小范围内讨论这种系统性的、持续的改进方案,比如包括校长、助理校长、学校监管人(LCTT 译注:美国地方政府下设的一种官职,每个学校监管人管理一定数量的学校,接受学校校长的汇报)等等在内的学校领导和区域领袖。但是一小群人的参与是远远不足以带来整个组织层面的文化改革的。

在进一步展开观点之前,我想强调一下,上面所做的概括一定是存在例外情况的(我自己就见到过很多),不过我觉得任何一个教育界的利益相关者都应该会同意以下两点基本假设:

  1. 为学生提供高质量的、公平的教育和教学系统的工作所涉及到的任何人都应该将持续不断的改进作为思维方式里的重要部分;
  2. 如果学校领导在做决策的时候可以更多地参考那些离学生最近的工作者的意见,那么学生以及学生所在的社区都将更加受益;

那么教育界人士为什么会倾向于忽视(或者公然地敌视)教育界之外的思想呢?

比如我过去就曾经提议应该向别的行业借鉴一些思想和灵感来帮助我们更好地迎合学生的需求,并且果然遭到了批评。我经常得到的回应是:“你这是在把我们的学生当成生产线上的元件来对待呀!”但是我们的学生现在就是在被当作生产线上的元件对待,并且已经无以复加了。他们按照被年龄划分的群体考入大学,每天根据刺耳的铃声的指示去上一节又一节孤立的课程,并且由一些武断的、强调同一性而不是个性的考试来评判他们的成绩。

很多教育界人士可能不知道,生产线元件这种会让人想到流水线标准化作业的东西已经不是现代制造业里的重要组成部分了。得益于上面提到的不断改进的文化氛围,现代先进制造业已经可以做到在单个顾客产生需求的时候,以合理的价格有针对性地提供她所需要的商品。如果我们的学校也可以采用这种模式,教师们之间就更可能会进行协作,并且可以基于学生即时的需求和兴趣,不断完善每一个学生独特的成长和进步路线,而不受时间、课题或者其它传统规范的限制。

我并不是要呼吁大家像经营商业一样经营我们的学校。我所主张的是,用一种清晰而客观的态度去看待任何行业的任何思想,只要它们有可能帮助我们更好地迎合学生个体的需求。不过,如果想有效率地实现这个目标,我们需要仔细研究这个 100 多年来都停滞不前的领导结构。

把不断改进作为努力的目标

有一种说法认为教育和其它行业之间存在着巨大的差异,我虽然赞同这种说法,但同时也相信“重新思考组织和领导结构”这件事情对于任何一个希望对利益相关者负责(并且可以及时作出响应)的主体来说都是适用的。大多数其它行业都已经在重新审视它们传统的、封闭的、等级森严的结构,并且采用可以鼓励员工基于共有的优秀目标发挥自主性的组织结构 —— 这种组织结构对于不断改进来说十分关键。我们的学校和行政区是时候放开眼界了,而不应该拘泥于只听到来自内部的声音,因为它们的用意虽然是好的,但都没有脱离现有的范式。

对于任何希望开始或者加速这个转变过程的学校,我推荐一本很好的书:Jim Whitehurst 的《开放组织》(这不应该让你感到意外)。这本书不仅可以帮助我们理解教育者如何创造更加开放、覆盖面更广的领导领导结构 —— 在这样的结构下,互相尊重让人们可以基于实时数据作出更加灵活的决策 —— 并且它所使用的语言风格也和教育者们所习惯使用的奇怪的词汇库非常契合(这种词汇库简直是教育者们第二天性)。任何组织都可以借鉴开放组织的思维提供的实用主义方法让组织成员更加开放:分享想法和资源、拥抱以共同协作为核心的文化、通过快速制作原型来开发创新思维、基于价值(而不是提出者的职级)来评估一个想法,以及创造一种融入到组织 DNA 里的很强的社区观念。通过众包的方式,这样的开放组织不仅可以从组织内部,也能够从组织外部收集想法,创造一种可以让本地化的、以学生为中心的创新蓬勃发展的环境。

最重要的事情是:在快速变化的未来,我们在过去所做的事情不一定仍然适用了 —— 认清楚这一点对于创造一个不断改进的文化氛围是十分关键的。对于教育者来说,这意味着我们不能只是简单地依赖在针对工厂模型发展出来的解决方案和实践方式了。我们必须从其它行业(比如说非营利组织、军事、医疗以及商业 —— 没错,甚至是商业)里借鉴数不清的最佳方案,这样至少应该能让我们 知道 如何找到让学生受益最大的办法。从教育界传统的陈词滥调里超脱出来,才有机会拥有更广阔的视角。我们可以更好地顾全大局,用更客观地视角看待我们遇到的问题,同时也知道我们在什么方面已经做得很不错。

通过有意识地借鉴各路思想 —— 从一年级教师到纽约时报上最新的商业、管理、领导力畅销书 —— 我们可以更好地发掘和运用校内人才,以帮助我们克服阻碍了我们的学校和区域进步的制度里的惰性。

坚持不懈地追求不断改进这件事情,不应该只局限于那种努力在一个全球化的、创新的经济环境中争取竞争力的机构,或者是负责运营学校的少数几个人。当机构里的每一个人都能不断思考怎样才能让今天比昨天做得更好的时候,这就是一个拥有优秀的文化氛围的机构。这种非常有注重协作性和创新的文化氛围,正是我们希望在这些负责改变年轻人命运的机构身上看到的。

我非常期待,有朝一日我能在学校里感受到这种精神,然后微笑着对自己说:“这种感觉多么似曾相识啊。”


via: https://opensource.com/open-organization/19/4/education-culture-agile

作者:Ben Owens 选题:lujun9972 译者:chen-ni 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如何在 Linux 服务器上设置 ulimit 和文件描述符数限制

$
0
0

简介:在生产环境中遇到打开文件数这类的挑战如今已是司空见惯的事情了。因为许多应用程序是基于 Java 和 Apache 的,安装和配置它们可能会导致打开过多的文件(文件描述符)。如果打开的文件描述符超过了默认设置的限制,就可能会面临访问控制问题,受阻于打开文件的挑战。许多生产环境因此而陷入停滞状态。

幸运的是,在基于 Linux 的服务器上,都有 ulimit 命令,通过它可以查看、设置、获取文件打开的状态和配置详情。此命令配备了许多选项,通过这些组合可以设置打开文件的数量。下面逐个命令用示例做了详细说明。

查看任何 Linux 系统中当前打开文件数的限制

要在 Linux 服务器上得到打开文件数的限制,请执行以下命令,

[root@ubuntu ~]# cat /proc/sys/fs/file-max
146013

上面的数字表明用户可以在每个用户登录会话中打开 ‘146013’ 个文件。

[root@centos ~]# cat /proc/sys/fs/file-max
149219
[root@debian ~]# cat /proc/sys/fs/file-max
73906

这清楚地表明,各个 Linux 操作系统具有不同的打开文件数限制。这基于各自系统中运行的依赖关系和应用程序。

ulimit 命令

顾名思义,ulimit(用户限制)用于显示和设置登录用户的资源限制。当我们使用 -a 选项运行 ulimit 命令时,它将打印登录用户的所有资源限制。现在让我们在 Ubuntu/Debian 和 CentOS 系统上运行 ulimit -a

Ubuntu / Debian 系统

shashi@Ubuntu ~}$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 5731
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024      
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 5731
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

CentOS 系统

shashi@centos ~}$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 5901
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 5901
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

正如我们可以在这里看到的,不同的操作系统具有不同的限制设置。所有这些限制都可以使用 ulimit 命令进行配置/更改。

要显示单个资源限制,可以在 ulimit 命令中传递特定的参数,下面列出了一些参数:

  • ulimit -n –> 显示打开文件数限制
  • ulimit -c –> 显示核心转储文件大小
  • umilit -u –> 显示登录用户的最大用户进程数限制
  • ulimit -f –> 显示用户可以拥有的最大文件大小
  • umilit -m –> 显示登录用户的最大内存大小
  • ulimit -v –> 显示最大内存大小限制

使用以下命令检查登录用户打开文件数量的硬限制和软限制:

shashi@Ubuntu ~}$ ulimit -Hn
1048576
shashi@Ubuntu ~}$ ulimit -Sn
1024

如何修复达到最大文件数限制的问题?

让我们假设我们的 Linux 服务器已经达到了打开文件的最大数量限制,并希望在系统范围扩展该限制,例如,我们希望将 100000 设置为打开文件数量的限制。

root@ubuntu~]# sysctl -w fs.file-max=100000
fs.file-max = 100000

上述更改将在下次重启之前有效,因此要使这些更改在重启后仍存在,请编辑文件 /etc/sysctl.conf 并添加相同的参数,

root@ubuntu~]# vi /etc/sysctl.conf
fs.file-max = 100000

保存文件并退出。

运行下面命令,使上述更改立即生效,而无需注销和重新启动。

root@ubuntu~]# sysctl -p

现在验证新的更改是否生效。

root@ubuntu~]# cat /proc/sys/fs/file-max
100000

使用以下命令找出当前正在使用的文件描述符数量:

[root@ansible ~]# more /proc/sys/fs/file-nr
1216    0       100000

注意:命令 sysctl -p 用于在不重新启动和注销的情况下提交更改。

通过 limit.conf 文件设置用户级资源限制

/etc/sysctl.conf 文件用于设置系统范围的资源限制,但如果要为 Oracle、MariaDB 和 Apache 等特定用户设置资源限制,则可以通过 /etc/security/limits.conf 文件去实现。

示例 limits.conf 如下所示,

root@ubuntu~]# cat /etc/security/limits.conf

Limits-conf-linux-part1

Limits-conf-linux-part2

假设我们要为 linuxtechi 用户设置打开文件数量的硬限制和软限制,而对于 oracle 用户设置打开进程数量的硬限制和软限制,编辑文件 /etc/security/limits.conf 并添加以下行:

# hard limit for max opened files for linuxtechi user
linuxtechi       hard    nofile          4096
# soft limit for max opened files for linuxtechi user
linuxtechi       soft    nofile          1024

# hard limit for max number of process for oracle user
oracle           hard    nproc          8096
# soft limit for max number of process for oracle user
oracle           soft    nproc          4096

保存文件并退出。

注意: 如果你想对一个组而不是用户进行资源限制,那么也可以通过 limits.conf 文件,输入 @<组名> 代替用户名,其余项都是相同的,示例如下,

# hard limit for max opened files for sysadmin group
@sysadmin        hard         nofile            4096 
# soft limit for max opened files for sysadmin group
@sysadmin        soft         nofile            1024

验证新的更改是否生效:

~]# su - linuxtechi
~]$ ulimit -n -H
4096
~]$ ulimit -n -S
1024

~]# su - oracle
~]$ ulimit -H -u
8096
~]$ ulimit -S -u
4096

注:其他主要使用的命令是 lsof,可用于找出“当前打开了多少个文件”,这命令对管理员非常有帮助。

结尾

正如在介绍部分提到的,ulimit 命令非常强大,可以帮助用户配置并确保应用程序安装更加流畅而没有任何瓶颈。此命令有助于修复基于 Linux 的服务器中的(打开)大量文件的限制。


via: https://www.linuxtechi.com/set-ulimit-file-descriptors-limit-linux-servers/

作者:Shashidhar Soppin 选题:lujun9972 译者:zgj1024 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Ubuntu 母公司的 GitHub 账号被入侵,尚未观察到修改源代码

$
0
0

7 月 6 日,Canonical Ltd. 的 GitHub 账号被黑了。Canonical 是 Ubuntu Linux 发行版背后的公司。根据被攻击的 Canonical GitHub 帐户的镜像,黑客在官方 Canonical 帐户中创建了 11 个新的存储库。这些库都是空的。

“我们可以确认,在 2019-07-06,GitHub 上有一个 Canonical 拥有的帐户,其凭据被泄露并被用于创建存储库和 issue”,Ubuntu 安全团队在一份声明中表示,“Canonical 已从 GitHub 的 Canonical 组织中删除了该帐户,并且仍在调查违规的程度,此时没有迹象表明任何源代码或 PII 受到影响”。

“此外,我们已经断开构建和维护 Ubuntu 发行版的 LauncHPad 基础设施与 GitHub 的连接,同时也没有迹象表明它已受到影响。”

Canonical 表示将在调查、审核和修复完成后发布公开更新。

这并非 Canonical 经历的第一起被黑事件。Ubuntu 官方论坛曾在 2013 年 7 月、2016 年 7 月和 2016 年 12 月三次遭到黑客攻击。前两次分别有 182 万和 200 万用户的信息被窃取,而在后一次,整个论坛被破坏。

去年 5 月,官方 Ubuntu 商店也发现了包含加密货币矿工的恶意 Ubuntu 软件包。

不过,所有这些 Ubuntu 安全事件与 2016 年 2 月 Linux Mint 发生的情况相比起来,都显得苍白无力,当时黑客攻击了网站,并通过后门污染了操作系统的源代码。类似的事件发生在 2018 年 6 月的 Gentoo Linux 发行版上,当时黑客获得了对发行版的 GitHub 存储库的访问权限并且使用包含后门的操作系统版本使一些 GitHub 下载文件中毒。

目前,这个事件似乎是良性的。如果黑客已经将恶意代码添加到 Canonical 项目中,那么他就不会通过在 Canonical GitHub 帐户中创建新的存储库来引起他们的注意。

事件发生前两天,网络安全公司 Bad Packets 检测到 Git 配置文件的全网扫描。此类文件通常包含 Git 帐户的凭据,例如用于管理 GitHub.com 上的代码的凭据。

不过目前尚不能确定事件是否与此相关,还是等待 Canonical 的官方调查报告及更新吧。

来源:开源中国

更多资讯

研究人员发现医疗软件漏洞 将导致诊断结果有误

据外媒报道,近期研究人员最新发现了一个用于基因组分析的通用开源软件的漏洞,这将导致基于DNA的医学诊断很容易受到网络攻击。桑迪亚国家实验室的研究人员发现了这个弱点,并及时通知了软件开发人员,随后他们发布了一个补丁来解决这个问题,同时最新版本的软件也解决了这个问题。

来源: 快科技
详情: http://www.dbsec.cn/zx/20190709-1.html 

点开网页瞬间被窃取隐私 访客手机号码被卖1元1条

仅仅是打开网页看了几眼,自己的手机号就被泄露了,“黑客”们真能办到吗?近日,新京报记者亲测了网络售卖的“最新抓取技术”,用 4 台不同号码的智能手机浏览“做了手脚”的网站,其中 2 台手机的号码被成功抓取。

来源: 新京报
详情: http://www.dbsec.cn/zx/20190709-4.html 

英国航空公司将因数据泄露问题面临创纪录罚款处罚

据外媒报道,英国数据监管机构近日宣布,计划对英国航空公司处以1.83亿英镑的罚款处罚,原因是发生在去年的数据泄露事件。信息专员办公室(ICO)表示,因为这家航空公司糟糕的安全工作导致50万名左右客户的信用卡信息、姓名、地址、旅游预订信息和登录信息被泄露。

来源: cnBeta.COM
详情: http://www.dbsec.cn/zx/20190709-5.html 

(信息来源于网络,安华金和搜集整理)


追溯 Linux 上的库注入

$
0
0

库注入Library injections在 Linux 上不如 Windows 上常见,但它仍然是一个问题。下来看看它们如何工作的,以及如何鉴别它们。

尽管在 Linux 系统上几乎见不到,但库(Linux 上的共享目标文件)注入仍是一个严峻的威胁。在采访了来自 AT&T 公司 Alien 实验室的 Jaime Blasco 后,我更加意识到了其中一些攻击是多么的易实施。

在这篇文章中,我会介绍一种攻击方法和它的几种检测手段。我也会提供一些展示攻击细节的链接和一些检测工具。首先,引入一个小小的背景信息。

共享库漏洞

DLL 和 .so 文件都是允许代码(有时候是数据)被不同的进程共享的共享库文件。公用的代码可以放进一个文件中使得每个需要它的进程可以重新使用而不是多次被重写。这也促进了对公用代码的管理。

Linux 进程经常使用这些共享库。(显示共享对象依赖的)ldd 命令可以对任何程序文件显示其共享库。这里有一些例子:

$ ldd /bin/date
        linux-vdso.so.1 (0x00007ffc5f179000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f02bea15000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f02bec3a000)
$ ldd /bin/netstat
        linux-vdso.so.1 (0x00007ffcb67cd000)
        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f45e5d7b000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f45e5b90000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f45e5b1c000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f45e5b16000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f45e5dec000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f45e5af5000)

linux-vdso.so.1 (在一些系统上也许会有不同的名字)是内核自动映射到每个进程地址空间的文件。它的工作是找到并定位进程所需的其他共享库。

对库加载机制加以利用的一种方法是通过使用 LD_PRELOAD 环境变量。正如 Jaime Blasco 在他的研究中所解释的那样,“LD_PRELOAD 是在进程启动时加载共享库的最简单且最受欢迎的方法。可以将此环境变量配置到共享库的路径,以便在加载其他共享对象之前加载该共享库。”

为了展示有多简单,我创建了一个极其简单的共享库并且赋值给我的(之前不存在) LD_PRELOAD 环境变量。之后我使用 ldd 命令查看它对于常用 Linux 命令的影响。

$ export LD_PRELOAD=/home/shs/shownum.so
$ ldd /bin/date
        linux-vdso.so.1 (0x00007ffe005ce000)
        /home/shs/shownum.so (0x00007f1e6b65f000)     <== 它在这里
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e6b458000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f1e6b682000)

注意,仅仅将新的库赋给 LD_PRELOAD 就影响到了运行的任何程序。

通过设置 LD_PRELOAD 指定的共享库首先被加载(紧随 linux-vdso.so.1),这些库可以极大程度上改变一个进程。例如,它们可以重定向系统调用到它们自己的资源,或对程序运行的行为方式进行意想不到的更改。

osquery 工具可以检测库注入

osquery 工具(可以在 osquery.io下载)提供了一个非常独特的查看 Linux 系统的方式。它基本上将操作系统视作一个高性能的关系数据库。然后,也许你会猜到,这就意味着它可以用来查询并且生成 SQL 表,该表提供了诸如以下的详细信息:

  • 运行中的进程
  • 加载的内核模块
  • 打开的网络链接

一个提供了进程信息的内核表叫做 process_envs。它提供了各种进程使用环境变量的详细信息。Jaime Blasco 提供了一个相当复杂的查询,可以使用 osquery 识别出使用 LD_PRELOAD 的进程。

注意,这个查询是从 process_envs 表中获取数据。攻击 ID(T1055)参考 Mitre 对攻击方法的解释

SELECT process_envs.pid as source_process_id, process_envs.key as environment_variable_key, process_envs.value as environment_variable_value, processes.name as source_process, processes.path as file_path, processes.cmdline as source_process_commandline, processes.cwd as current_working_directory, 'T1055' as event_attack_id, 'Process Injection' as event_attack_technique, 'Defense Evasion, Privilege Escalation' as event_attack_tactic FROM process_envs join processes USING (pid) WHERE key = 'LD_PRELOAD';

注意 LD_PRELOAD 环境变量有时是合法使用的。例如,各种安全监控工具可能会使用到它,因为开发人员需要进行故障排除、调试或性能分析。然而,它的使用仍然很少见,应当加以防范。

同样值得注意的是 osquery 可以交互使用或是作为定期查询的守护进程去运行。了解更多请查阅文章末尾给出的参考。

你也能够通过查看用户的环境设置来定位 LD_PRELOAD 的使用。如果在用户账户中使用了 LD_PRELOAD,你可以使用这样的命令来查看(假定以个人身份登录后):

$ env | grep PRELOAD
LD_PRELOAD=/home/username/userlib.so

如果你之前没有听说过 osquery,也别太在意。它正在成为一个更受欢迎的工具。事实上就在上周,Linux 基金会宣布打造了新的 osquery 基金会以支持 osquery 社区。

总结

尽管库注入是一个严重的威胁,但了解一些优秀的工具来帮助你检测它是否存在是很有帮助的。

扩展阅读

重要的参考和工具的链接:


via: https://www.networkworld.com/article/3404621/tracking-down-library-injections-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:LuuMing 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

区块链 2.0:公有链与私有链(七)

$
0
0

Public vs Private blockchain

区块链 2.0系列的前一篇文章探索了智能合同的现状。这篇文章旨在揭示可以创建的不同类型的区块链。它们每个都用于非常不同的应用程序,并且根据用例的不同,每个应用程序所遵循的协议也不同。现在,让我们将公有链之于私有链对比一下开源软件之于专有技术。

正如我们所知,基于区块链的分布式分类账本的基本三层结构如下:

图 1 – 区块链分布式账本的基本结构

这里提到的类型之间的差异主要归因于底层区块链其所依赖的协议。该协议规定了参与者的规则和参与的方式。

阅读本文时,请记住以下几点事项:

  • 任何平台的产生都是为了解决需求而生。技术应该采取最好的方向。例如,区块链具有巨大的应用价值,其中一些可能需要丢弃在其他情形中看起来很重要的功能。在这方面,分布式存储就是最好的例子。
  • 区块链本质上是一个数据库系统,通过时间戳和区块的形式组织数据来跟踪信息。此类区块链的创建者可以选择谁有权产出这些区块并进行修改。
  • 区块链也可以“中心化”,参与的程度可以限定于由“中央权威”认定为符合条件的人。

大多数区块链要么是公有的,要么是私有的。广义上说,公有链可以被认为是开源软件的等价物,大多数私有链可以被视为源自公有链的专有平台。下图应该会让大多数人明显地看出基本的区别。

图 2 – 公有链/私有链与开源/专有技术的对比

虽然这是最受欢迎的理解。但是这并不是说所有的私有链都是从公有链中衍生出来的。

公有链

公有链可以被视为是一个无需许可的、开放的平台或网络。任何拥有专业知识和计算资源的人都可以参与其中。这将产生以下影响:

  • 任何人都可以加入公有链网络并参与到其中。“参与者” 所需要的只是稳定的网络资源和计算资源。
  • 参与行为包括了读取、写入、验证和提供交易期间的共识。比特币矿工就是很好的例子。作为网络的参与者,矿工会得到比特币作为回报。
  • 平台完全去中心,完全冗余。
  • 由于去中心化,没有一个实体可以完全控制分类账本中记录的数据。所有 (或大多数) 参与者都需要通过验证区块的方式检查数据。
  • 这意味着,一旦信息被验证和记录,就不能轻易改变。即使能改变,也不可能不留下痕迹。
  • 在比特币和莱特币等平台上,参与者的身份仍然是匿名的。设计这些平台的目的是保护和保护用户身份。这主要是由上层协议栈提供的功能。
  • 公有链有比特币、莱特币、以太坊等不同的网络。
  • 广泛的去中心化意味着,在区块链分布式网络实现的交易,获得共识可能需要一段时间,对于旨在每时每刻都在推动大量交易的大型企业来说,吞吐量可能是一个挑战。
  • 开放式参与,使比特币等公有链中的大量参与者,往往会增加对计算设备和能源成本的初始投资。
  • 公有链以设计安全著称。它们的实现依靠以下几点:
    • 匿名参与者
    • 多个节点上的分布式和冗余的加密存储
    • 创建和更改数据需要大量的共识

私有链

相比之下,私有链是一个被许可的区块链*。这意味着:

  • 参与网络的许可受到限制,并由监督网络的所有者或机构主持。这意味着,即使个人能够存储数据并进行交易(例如,发送和接收付款),这些交易的验证和存储也只能由选定的参与者来完成。
  • 参与者一旦获得中心机构的许可,将受到条款的限制。例如,在金融机构运营的私有链网络中,并不是每个客户都可以访问整个区块链的分布式账本,甚至在那些获得许可的客户中吗,也不是每个人都能访问所有的东西。在这种情况下,中心机构将授予访问选择服务的权限。这通常被称为 “通道”。
  • 与公有链相比,这种系统具有更大的吞吐量能力,也展示了更快的交易速度,因为区块只需要由少数几个人验证。

私有链通常在其协议中没有任何特征。这使得该系统仅与目前使用的大多数基于云的数据库系统一样安全。

智者的观点

需要注意的一点是,它们被命名为公有或私有(或开源、闭源)的事实与底层代码库无关。在这两种情况下,平台所基于的代码或文字基础可能是公开的,也可能不是公开的。R3 是一家 DLT(分布式分类账本Distributed Ledger Technology)公司,领导着由 200 多家跨国机构组成的公有财团。他们的目标是在金融和商业领域进一步发展区块链和相关分布式账本技术。corda 是这一共同努力的产物。R3 将 corda 定义为专门为企业构建的区块链平台。其代码库同样是开源的,鼓励世界各地的开发人员为这个项目做出贡献。然而,考虑到 corda 面临的业务性质和旨在满足的需求,corda 被归类为许可的封闭区块链平台。这意味着企业可以在部署后选择网络的参与者,并通过使用原生可用的智能合约工具选择这些参与者可以访问的信息类型。

虽然像比特币和以太坊这样的公有链负责该领域的广泛认知和发展,但仍然可以认为,为企业或商业环境中的特定用例设计的私有链将在短期内引领货币投资。这些都是我们大多数人在不久的将来会看到以实际方式运用起来的平台。

请继续阅读本系列中下一篇有关 Hyperledger 项目的文章。

我们正在研究更多有趣的区块链技术话题。敬请期待!


via: https://www.ostechnix.com/blockchain-2-0-public-vs-private-blockchain-comparison/

作者:ostechnix 选题:lujun9972 译者:zionfuo 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

报告称超 6 成 Web 应用程序攻击来自 SQL 注入

$
0
0

Akamai 近日发布了《2019 年互联网安全状况报告:Web 攻击和游戏撞库》,数据显示,黑客已将游戏行业作为主要攻击目标,SQL 注入(SQLi)攻击目前占所有 Web 应用程序攻击的 65.1%。

报告显示,在 2017 年 11 月至 2019 年 3 月的 17 个月内,黑客们针对游戏网站进行了 120 亿次撞库攻击。游戏社区不仅成为撞库攻击增长最快的目标之一,也是那些希望快速获利的犯罪分子最有利可图的目标之一。

此外,在同一分析时间段内,Akamai还发现所有行业总共遭受了 550 亿次撞库攻击。

其中,SQL 注入(SQLi)攻击目前占所有Web应用程序攻击的近 65.1%,本地文件包含(LFI)攻击占 24.7%。作为一种攻击向量,SQLi 攻击以惊人的速度增长。在 2017 年第一季度,SQLi 攻击占所有应用程序层攻击的 44%。

报告分析,游戏行业对于黑客而言是一个极具吸引力的目标,这是因为犯罪分子可以轻而易举地交易游戏道具来获利。这些攻击的其中一个案例就是犯罪分子以热门游戏为目标,寻找有效账号和特殊皮肤。玩家账号一旦成功遭到黑客入侵,即被交易或出售。

来源:cnBeta.COM

更多资讯

Zoom 安全漏洞被指可以让网站劫持 Mac 摄像头

据外媒报道,当地时间 7 月 9 日,安全研究员 Jonathan Leitschuh 公开披露了在 Mac 电脑上 Zoom 视频会议应用中出现的一个严重零日漏洞。他已经证明,任何网站都可以在安装了 Zoom 应用的 Mac 电脑上打开视频通话。

来源: cnBeta.COM
详情: http://www.dbsec.cn/zx/20190710-1.html 

Android 用户注意了:微软应用分享页面会让你装上“全家桶”

在自己移动平台 Windows 10 Mobile 宣告失败之后,微软已经将更多的精力倾注在 Android 和 iOS 等竞争平台上。为了增强应用的使用频率和促进微软“全家桶”之间的联动,微软悄然在分享页面中“做了些手脚”。现在用户通过 Your Phone Companion 或者其他微软应用时候,会根据收发的文件类型推荐用户安装相应的微软处理工具。

来源: cnBeta.COM
详情: http://www.dbsec.cn/zx/20190710-2.html 

10 月底前完成数据安全检查 违法违规 APP 将无处藏身

近日,工信部印发《电信和互联网行业提升网络数据安全保护能力专项行动方案》(以下简称《方案》),以解决数据过度采集滥用、非法交易及用户数据泄露等数据安全问题,加快推动构建行业网络数据安全综合保障体系。《方案》提出,在今年10月底前完成全部基础电信企业(含专业公司)、50 家重点互联网企业以及 200 款主流 APP 的数据安全检查。

来源: 经济日报
详情: http://www.dbsec.cn/zx/20190710-3.html 

智联招聘三年两曝盗卖个人简历 "黑市价"2元涨至5元

近日,据中国消费者报报道,一起“智联招聘”员工参与倒卖公民个人信息的案件在北京市朝阳法院第二次开庭审理。一份简历的出售价格为 5-6 元左右不等,该案涉及公民个人信息达 16 万余份。

来源: 中国经济网
详情: http://www.dbsec.cn/zx/20190710-4.html 

(信息来源于网络,安华金和搜集整理)

借助 Valve 的新编译器,Linux 游戏在 AMD GPU 中获得了性能提升

$
0
0

Steam 寻求公众反馈以便为 AMD GPU 测试 ACO(一个新的 Mesa 着色器编译器)已经有几天了。

目前,AMD 驱动程序使用 LLVM 作为着色器编译器。而 Mesa 则是一个开源的 LLVM 的替代品。因此,在这种情况下,Valve 希望支持 AMD 显卡以提高 Linux 游戏在各种 Linux 发行版上的性能。

为了提高游戏性能,编译时间至关重要,使用新的 ACO 编译器,它将时间缩短了近 50%。 Valve 在其 Steam 社区的帖子中解释了更多关于它的信息:

AMD OpenGL 和 Vulkan 驱动程序目前使用的着色器编译器是上游 LLVM 项目的一部分。该项目规模庞大,并且有许多不同的目标,游戏着色器的在线编译只是其中之一。这可能会导致不同的开发权衡,其中改进游戏特定功能比其他情况更难,特定于游戏的功能也经常被 LLVM 的开发人员因其他事情破坏。特别是,着色器编译速度就是这样一个例子:它在大多数其他场景中并不是一个关键因素,只能锦上添花。但是对于游戏来说,编译时间是至关重要的,而缓慢的着色器编译可能导致几乎无法播放的顿挫。

Linux 游戏真的有性能提升吗?

是的,没错。

这里的主要亮点是编译时间。如果着色器编译时间急剧减少,理论上应该会改善游戏的性能。

而且,根据最初的基准报告,我们确实看到了一些重大改进。

当然,游戏中的 FPS 改进并不是很大。但是,它在早期阶段仍然是一个很好的进步。

如果你对编译时间的改进感到好奇,下面是结果:

是的,即使大幅的编译时间减少也不会大幅影响游戏中的 FPS。但是,它仍然是一件大事,因为目前,这是一项正在进行中的工作。所以,我们可以有更多期待。

但是,还能做些什么呢?

好吧,ACO 还没完成。下面是为什么(在 Valve 中提到):

现在,ACO 只处理像素和计算着色器阶段。当其余的阶段实现时,我们预计编译时间将进一步减少。

总结

尽管我没有配备 AMD GPU,但我很有兴趣看到对 Linux 游戏场景的改进。

此外,随着事情进展,我们将期待更多的基准和报告。

你怎么看待?请在下面的评论中告诉我们你的想法。如果你有基本报告要分享,请告诉我们。


via: https://itsfoss.com/linux-games-performance-boost-amd-gpu/

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

图解 Debian 10(Buster)安装步骤

$
0
0

Debian 项目发布了它的最新稳定版 Debian 10,其代号是 “Buster”,这个发布版将获得 5 年的支持。Debian 10 可用于 32 位和 64 位系统。这个发布版带来很多新的特色,列出下面一些特色:

  • 引入新的 Debian 10 的主题 “FuturePrototype”
  • 新版本的电脑桌面环境 GNOME 3.30、Cinnamon 3.8、KDE Plasma 5.14、MATE 1.20、Xfce 4.12
  • 长期支持版内核 4.19.0-4
  • 新的 Python 3 (3.7.2)、Perl 5.28、PHP 7.3
  • iptables 替换为 nftables
  • 更新 LibreOffice 6.1、GIMP 2.10.8
  • 更新 OpenJDK 11、MariaDB 10.3 和 Apache 2.4.38
  • 更新 Chromium 73.0、Firefox 60.7
  • 改进 UEFI 支持

在这篇文章中,我们将演示如何在你的笔记本电脑和台式电脑上安装 Debian 10 “Buster” 工作站。

Debian 10 建议系统要求:

  • 2 GB 内存
  • 2 GHz 双核处理器
  • 10 GB 可用硬盘空间
  • 可启动安装介质(USB / DVD)
  • 网络连接(可选)

让我们跳转到 Debian 10 的安装步骤。

步骤:1)下载 Debian 10 ISO 文件

从它的官方入口网站,下载 Debian 10 ISO 文件,

ISO 文件下载完成后刻录它到 USB 或 DVD,使其可用来启动。

步骤:2)使用安装可启动介质(USB / DVD)启动你的电脑系统

重启你将安装 Debian 10 的电脑,转到 BIOS 设置,并设置启动介质为 USB 或 DVD。 用可启动介质启动电脑后,那么我们将看到下面的屏幕。

选择第一个选项 “Graphical Install”。

步骤:3)选择你的首选语言、位置和键盘布局

在这个步骤中,你将被要求选择你的首选语言。

点击 “Continue”。

选择你的首选位置,电脑系统将依照位置自动设置时区。

现在选择适合于你安装设备的键盘布局。

点击 “Continue” 以继续。

步骤:4)为 Debian 10 系统设置主机名称和域名

设置适合于你的环境的主机名,然后在 “Continue” 上单击,就我而言, 我指定主机名为 “debian10-buster”。

指定适合于环境的域名,并安装,然后在 “Continue” 上单击。

步骤:5)指定 root 用户的密码

在下面的屏幕中指定 root 密码,然后在 “Continue” 上单击。

步骤:6)创建本地用户和它的密码

在这个步骤中,你将被提示指定本地用户具体信息,如完整的姓名、用户名和密码,

在 “Continue” 上单击。

在 “Continue” 上单击,并在接下来的窗口中指定密码。

步骤:7)为 Debian 10 选择硬盘分区方案

在这个步骤中,为 Debian 10 选择硬盘分区方案,就我而言,我有 40 GB 硬盘可用于操作系统安装。分区方案有两种类型:

  • 向导分区(安装器将自动创建需要的分区)
  • 手动分区(正如名字所示,使用这种方式,我们可以手动创建分区方案)

在这篇教程中,我们将在我 42 GB 硬盘上使用带有 LVM 的向导分区。

在 “Continue” 上单击来继续,

正如我们所视,我大约有 42 GB 硬盘空间,选择 “Continue”。

在接下来的屏幕中,你将被要求选择分区,如果是 Linux 新用户,那么选择第一个选项。假使你想要一个独立的 home 分区,那么选择第二种方案,否则选择第三种方案,它们将为 /home/var/tmp 创建独立的分区。

就我而言,我将通过选择第三种选项来为 /home/var/tmp 创建独立的分区。

在接下来的屏幕中,选择 “yes” 来将更改写到磁盘中,配置 LVM ,然后在 “Continue” 上单击。

在接下来的屏幕中,将显示分区表,验证分区大小、文件系统类型和挂载点。

在 “Continue” 上单击来继续,

在接下来的屏幕中,选择 “yes” 来写更改到磁盘中,

在 “Continue” 上单击来继续安装,

步骤:7)Debian 10 安装开始

在这一步骤中,Debian 10 的安装已经开始,并正在进行中,

在安装期间,安装器将提示你扫描 CD/DVD 以配置软件包管理器,选择 “No” ,然后在 “Continue” 上单击。

在接下来的屏幕中,如果你想配置基于网络的软件包管理器选择 “yes” ,但是为了使这个方式工作,要确保你的系统连接到了网络,否则选择 “No”。

在 “Continue” 上单击来配置基于你本地的软件包管理器,在接下来的几个屏幕中,你将被提示选择本地和 Debian 软件包存储库 URL ,然后你将获得下面的屏幕。

选择 “No” 来跳过软件包审查步骤,然后在 “Continue” 上单击。

在接下来的窗口中,你将被提示选择电脑桌面环境和其它软件包,就我而言,我选择 “Gnome Desktop” ,“SSH Server” 和 “Standard System utilities”。

在 “Continue” 上单击来继续安装,

选择选项 “yes” 来安装 Grub 引导加载程序。

在 “Continue” 上单击来继续,然后在接下来的窗口中选择将安装引导加载程序的磁盘(/dev/sda)。

在 “Continue” 上单击来继续安装,一旦安装完成,安装器将提示我们来重启系统,

在 “Continue” 上单击来重启你的系统,不要忘记在 BIOS 设置中更改启动介质,以便系统从我们已经安装 Debian 10 操作系统的硬盘启动。

步骤:8)启动你新安装的 Debian 10 系统

在成功安装后,一旦我们重启系统,我们将获取下面的引导加载程序屏幕。

选择第一个选项 “Debian GNU/Linux” 并敲击回车键。

一旦系统启动,使用我在安装期间创建的本地用户和它的密码。

在成功登录后,将看到如下电脑桌面屏幕,

这证实 Debian 10 已经成功安装,这就是本文的全部,探索这个令人激动的 Linux 发行版吧,玩得开心 😊


via: https://www.linuxtechi.com/debian-10-buster-installation-guide/

作者:Pradeep Kumar 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

论一个自毁倾向社区的形成

$
0
0

有关自学的公开秘密

俗话说:“开始回忆过去才标志进入老年”

对应断言则是:“人类的进步根源在 — 一向没从历史中学到什么教训”

结合起来理解, 应该就是:

经验其实并没什么用?

但历史故事却总是很有市场,那么俺就专注说说故事吧,私人的……

每个好故事都必须狗血开篇

从 Pascal 到 Python

90 年代,大家如果看穿越小说就知道,那是中国开始腾飞的年代,计算机专业最火的年代。

俺也无法逃避历史规律,

又因为是第一批宅文化受洗者,从海南摄影美术出版社开始,深度沉迷在日本漫画/动画中,并且,在广州无意间看到深夜转播香港电视台的:“アキラ”,惊为天人;

也进一步明确,3D 动画是趋势,所以,专业选择计算机及应用;以便日后转向 3D 动画制作,毕竟, 3D 动画是只能由电脑生成了嘛; 可以说, 当年的内心戏非常中二了;然而按部就班四年读下来:

  • Pascal
  • 汇编
  • C
  • C++

同时利用图书馆资源, 自学 JAVA 以及 Photoshop/3DMAX/Flash/… , 结果发现:

  • 毕业了, 依然不知道如何独立完成一个软件的构造和发布
  • 同时, 美术能力,并不是会几个绘图软件就能自动生成的

不甘心, 毕业找到一个小广告公司, 全职折腾排版/图片处理/图形绘制/… 期间用业余时间尝试独立完成美术作品:

  • 用两个月, 才边学边用 Illustrator 9.0 所有可用功能, 将 CLAMP 的作品 – “圣战”中一幅彩页复刻出来
  • 用两个星期, 才能在 Flash 2.0 上完成一个 10 秒左右动画场景

进一步在市电视台, 了解到进行视频编辑的 SGI 工作站都是 20 万美元起… 计算一下自己当时工资, 得上百年才买得起。

而工作一年的我, 连拼装兼容机都买不起; 生活所迫, 听从同学劝告去上海, 回到软件行业。

虽然, 当时已有一年多没怎么编程了, 只是习惯性的关注技术动向, 看过几眼 ASP;

好在整个儿行业也都在初期, 就凭那种勇于看文档照着瞎搞下来的经验, 也通过了面试, 回到代码世界。

那时, 还没有全栈工程师概念,但实质已经在承担相同职责了, 岗位是软件工程师, 而在公司看来一切和电脑相关的都归软件管, 所以:

  • 用 ASP 开发产品后台
  • 用 Dreamwave 设计网站,用 Firework 完成网页特效, 用 Flash 制作动画barnner
  • 用 IIS 发布网站
  • 用 Access 数据库提供支持
  • 网络配置
  • 电脑修理

算是暂时在魔都立足生存下来了;

恢复自学习惯, 周末去公司用企业网络搜索国外技术资源下载/整理/实验…

从大学时代就知道 Linux 的传奇, 于是当然的在旧机器上开始尝试安装 RedHat 2.4, 首个可以邮购光盘的版本, 之前都是几十张软盘的发行版。

然后, 实验 LAMP :

  • Linux
  • Apache
  • MySQL
  • PHP

这是当前至高技术组合;

为了在 Linux 上复现 ASP 那种流畅的开发/运行/调试体验, 折腾了整整3个月, 因为那时中文资料很少, 又还没习惯官方英文文档 , 加上网络还只是 512K …

总算 PHP 入门了, BBS 也知道怎么架设了,但是, 为了一个功能网页要从系统到Web 服务到数据库都要折腾一遍的体验, 实在太麻烦了…

这时, 注意到 Zope, 全新互联网应用开发机制, all-in-one 的开发者/调试/运行集成环境…

虽然中文资料几乎没有, 但竟然已经有中文技术社区了——CZUG.org(China Zope User Group):

  • 是润普公司, 用 Plone 1.0 发布的一个综合 CMS 网站
  • 开放注册, 能在其中 BBS 版块可以自由讨论
  • 甚至于开放了一定接口,允许用户定制网站界面;
  • 正好综合自己的技能, 贡献了几个

以此为契机, 接触到了 Python / 自由软件 / 开源技术社区 /… 业余时间多数不是在邮件列表中被人骂笨, 就是在 BBS 中被人骂笨; 但是, 技术是切实在跌跌撞撞过程中学到了;

也有能力反馈社区, 再通过部署发布 moinmoin 维基服务给啄木鸟社区, 进而参与在线协同开发项目, 完成了几个基于 Python 的小模块, 才知道, 发布任务的大牛, 是 SINA 技术部领导, 从而获得了 SINA 的面试机会, 北漂帝都, 技术成长开始加速.

回想这个阶段, 最大的变化是不再独自折腾, 而是:

  • 第一时间注册社区列表/BBS
  • 任何实践/问题都及时反馈给社区
  • 积极回答自己知道的折腾过的问题
  • 也积极发表看法, 和其它学习者相互印证
  • 并开始有意识的收集好文章/资料/网页

建立自我检验机制

如何一周学会一门新语言?

光阴似箭, 几年过去, 也从 SINA 进入金山, 南下到珠海, 之前通过成立 CPUG(China Python User Group, 中国Python 用户组), 在北京主持了 47 场线下分享活动, 也在线上用 code.google 项目托管服务完成了几本图书的翻译, 更是参加以及组织了一系列社区, 自己也无意间变成 大妈

因为组建团队, 不得不开始面试, 才发现, 社区中聚集起来那么多靠谱工程师, 并不是能直接转化为自己同事的。

而人才市场上基本都是有证书无对应能力的工程师原胚;

刚好当时在探索 知识管理, 根据有限的几本书, 结合自己以往技术社区体验, 一冲动就认领了金山大学的任务, 负责对内部培训,将实习生中对 Python 有兴趣的毕业生, 快速转化为软件工程师;

为了最小化指导时间, 将课程设计为项目驱动式:

  • 不教 Python 本身, 只快速展示合理的 编写-运行-调试 工具链
  • 从一开始就直接分组, 各组自行设立目标作品
  • 立即进入敏捷开发循环:
    • 配置好项目托管(Trac)+邮件列表
    • 每天下午进行站立会议, 公开逐一阐述:
      • 完成了什么
      • 没完成什么
      • 需要什么帮助
      • 明天计划完成什么
    • 现场实时点评
    • 其它时间, 通过网络随时回答
  • 每周 5 下午, 进行一次版本迭代发布会
  • 连续 8 周, 8 个作品, 5 个可用
  • 全部学员养成团队协作节奏
  • 大半学员通过用人部门考核

简单说, 就是在企业内部, 构造出一个主题技术社区, 以原创产品为目标, 驱动学生直接针对具体问题来自学,

同时, 用定期会议控制节奏,配合随时提供软件工程涉及所有方面的指导,

好在使用项目托管系统, 对内所有信息共享, 那么相同问题, 只要回答一次, 再次发生时, 给个链接就好。

经过那次实践, 算是形成了明确的自学框架。

后来有机会为公司构建开源社区, 为了推广公司安全服务接口, 尝试用相同方法, 快速自学新技术栈完成小工具来演示和推广接口:

  • 自学一周 golang ,完成 CLI 检验原型工具
  • 自学一周 node.js, 用 CoffeeScript 发布单一功能 API
  • 自学一周 chrome , 完成 crx 扩展插件工具
  • 自学一周 lua , 完成 OpenResty 检验插件
  • 自学一周 微信后台, 基于 SAE 完成检验功能

也都转化为在线教程: http://chaos2.zoomquiet.top

那之后, 就有信心传播 Feynman 技法是对的:

如何证明自己学会了?

能教会其它人时...

进一步发现必需支持

环境和目标

金山大学中 Python 训练营代号: PythoniCamp, 简称 蟒营

后来通过金山高校联盟, 在本地几个大学试点过几期:

  • 时间缩短到 6-4 周
  • 项目托管也迁移为外部的 code.google(是的,那时 GitHub 还没有发布)
  • 其它基本不变

但是, 发现学生和实习生, 心态完全不同, 没经历过人才市场碾压, 进入大学就开始放飞的学生, 明显对这种连续迭代的节奏不适应, 或是说, 不想适应…

后来, 有几位学生毕业后, 进入金山, 前后对比, 才发现蟒营当时的所有要求, 都是软件工程师的最低职业要求… 这才重新理解, 并认同蟒营的 教学反转 过程。

通过持续交流, 以及后来 GDG 社区各种校园活动的展开, 也慢慢认识到, 技术社区式自学 想成立, 不仅仅需要线上项目空间,

更加重要的是:

  • 关注所有成员成长的社区氛围
  • 怼事不怼人全员平等的社区关系
  • 作品目标明确的版本迭代共识
  • 标准规范的提问机制和行文礼节

加速自毁的努力

自豪的自毁是种觉悟

又近 10 年过去, 随着大数据/AI 的兴起, Python 重新回到大众视野, 各种培训班/线上课程扎堆暴发。

但是, 软件行业和其它行业不同:

  • 其它行业的技术发展目标都是令本行业永续发展
  • 而软件行业相反:
    • 甚至于, 软件这个概念本身的提出目标, 也是为了辅助机械替代人来劳动
    • 即,软件行业的努力目标就是通过提升软件能力
      • 直到软件可以自动生成新软件
      • 从而不再由人来写软件
    • 也就是说, 软件行业的目标就是消灭软件行业

这当然也是 IT 技术圈一惯的自食风骨, 比如说:

GNU

~ GNU is Not Unix

综上, 在这么多年开发/社区/培训的实践/尝试/积累后, 发现正确的编程培训姿势:

  • 不对编程语言或是具体框架/软件进行讲解(官方文档足够权威和充分了)
  • 应该专注激发原有自学能力
    • 直接通过编程体验的积累
    • 获得可以自学任何 IT 技术的习惯
  • 从而, 再也不用参加任何入门培训班

所以, 和软件行业一样:

蟒营

就是为了消灭蟒营本身

而设计出来的课程

要知道, 我们在婴儿阶段, 任何自然语言都不会时, 仅仅通过有限的对话尝试,就能在两年以内, 用没发育好的大脑, 对世界上最复杂的语言 — 汉语, 完成完美自学,

这足以证明, 所有中国人都有完美的自学能力(无论哪种严格意义上)。

只是, 在通过近 20 年系统教育后, 被体制化消灭/压制了这种天然自学能力; 转而迷信权威/教材/考试/要点/学习方法/….

毕竟, 我们的高等教育源自苏联产业工人的大规模培训体制。

而当前高速发展的智能移动互联网时代, 手机已经变成人体器官, 编程能力也演变为基本社会能力。

PythoniCamp 一步步演化来的 蟒营101.camp, 应该说, 综合上古时代, 互联网技术爱好者们共同自学经历, 结合知识管理思想, 基于实践型社区Community of Practise, 形成以 Python 为入口, 重获综合自学能力的课程:

伴你重新享受自学的乐趣

Reactivate Joy by Self-teach with You

第二期入门班正在报名, 希望有效获得编程经验请访问:

https://py.101.camp/


本文作者:

Zoom.Quiet (大妈)

Python 中文社区创始成员 / 管理员;
热心于 Python 社区公益事业,
作为大家熟知的社区“大妈”,
因主持 OSTC 2015 “程序媛专场”,坐实这一称号,得到广大程序猿认可;
OBP 及蟒营工程设计者 /主持人;
主持编撰“可爱的 Python”/“真实世界的 Python 仪器监控”等技术图书;
参与并主持各种线上 / 线下活动,
坚持用 Pythonic 感化国人进入 FLOSS 世界进行学习 / 分享 / 创造…

http://zoomquiet.io/

PS:

题图是出自书法世家的 吴雅婷 小姐姐,

她还曾为 PyCon2015China T裇题字,纪念衫深得 Guido 老爹赞赏。

走向世界!第1届全球学生开源年会 sosconf 2019 招募志愿者开始报名!

$
0
0

“2018 年 6 月的重庆大学,在众多热爱开源的志愿者小伙伴们的帮助下,第 0 届学生开源年会圆满落下帷幕,今年我们更上层楼,第 1 届全球学生开源年会将在美国南加州大学举办,再度向热爱开源的小伙伴们发出邀请,与我们一起,书写 sosconf 2019 的新篇章,欢迎热爱开源的你加入我们的志愿者队伍!”

学生开源年会 Students Open Source Conference(简称 sosconf),是首个由学生组织、面向学生的非盈利社区全球性开源技术峰会。峰会基于开放源代码的理念,鼓励学生享受开源、了解开源、参与开源、贡献开源,并能从开源中得到实践和乐趣。峰会每年在不同国家不同城市举办,从演讲者、组织者、志愿者到听众,绝大多数为在校学生,包括中学生、大学生硕士研究生和博士研究生,其中演讲者和志愿者仅限学生身份报名,听众不做任何限制。大会由开源工场息壤开源生活方式平台创办,致力于纯粹的技术交流和多元的思想碰撞,为学生群体建立活跃、多元、纯粹、关注学习和未来的技术社区。

全球舞台

sosconf 2019 将在9月1日于美国南加州大学University of Southern California(南加大)举办。本次大会围绕着“开源”主题,囊括开源项目、网络安全、云计算、大数据、编程语言、人工智能、机器学习、区块链、社区治理等领域,并特设《全球学生开源项目博览会》和《全球学生开源项目大赏》板块奖励优秀学生开源项目。大会每年在不同国家不同城市举办,不仅吸引了国内外高等院校的支持和参与,更引起了计算机领域的精英分子和知名企业的关注和重视。此外,开源项目的核心开发者和国际知名演讲者都会在当天抵达现场,参与开源。

招募要求

  • 学生身份:不限大学生、研究生、中学生、小学生等;不限专业。
  • 对生活热情、热爱开源、有探索精神、喜欢挑战。

招募组别

作为一名热爱开源又充满热情的伙伴,有非常多的领域可以供你发挥和施展。各组的详细工作请参考 https://2019.sosconf.org/#/volunteer。(中文用户请切换到中文报名界面)

可远程工作组别

  • 翻译组(将市场组制作的 sosconf 材料翻译为多国语言)
  • 技术组(前端开发[网页、Android、iOS]、后端开发、云服务维护等等)
  • 设计组(美术设计、交互设计、技术和市场营销所需的设计)
  • 摄影制作组(视频拍摄或视频制作)
  • 市场营销组(宣传、对外联络、新闻撰写、社区联络、社交媒体维护等等)
  • 议程组(征集 Paper、遴选 Paper、排定议程、联系讲师)
  • 赞助组(建立赞助商关系、联系赞助、维护赞助商关系)
  • 志愿者组(协助招募志愿者、协调管理志愿者事物)
  • 机动组(机动安排,暂时不知道贡献哪个领域,但是希望参与贡献)

美国现场工作组别

  • 会务组
  • 摄影摄像制作组
  • 志愿者组
  • 机动组

你将收获

  • 来自全球 sosconf 伙伴社区的活动参与机会
  • 来自一帮背景各异但有趣上进小伙伴的友谊
  • 全程执行一场过质量、国际化品牌的活动经验
  • 拓展自我边界,解锁全新技能,职业价值进阶的可能性
  • 如有需要,可以提供志愿者服务证书;优秀者还可获得 sosconf 组委会的推荐信

志愿者福利

  • 官方志愿者证书
  • 参与欢迎晚宴的机会
  • sosconf 2019 志愿者纪念品礼包
  • 获得 sosconf 2019 志愿者限定版入场券
  • 与会志愿者将由组委会负责午餐或餐补
  • 通过此次参与国际开源会议的机会,更有可能获得国外知名企业的认可
  • 与国内外技术大神交流的宝贵经历、与国外社区活跃者成为知己好友的机会
  • 优秀的志愿者将有机会由组委会承担部分费用前往美国洛杉矶南加州大学参会

报名方式

  • 访问 https://2019.sosconf.org 获取信息,关注学生开源年会的社交账号
  • 点击 报名表格 提交资料报名;加入中文交流QQ群:932119765
  • 组委会与你联络沟通、进行第一轮基础面试
  • 通过第一轮基础面试,将进入第二轮各组组长面试
  • 获取录用,正式加入志愿者行列
  • 如有疑问,欢迎联系 volunteers@sosconf.org

联系方式

请访问学生开源年会官方网站 https://2019.sosconf.org 获得更多资讯,以下通信方式为学生开源年会的官方联络方式,敬请关注:

注:最终解释权归学生开源年会组委会所有 。

畅想未来这件事情,我们学生更擅长,期待你的加入!


MacOS 系统中如何设置 Python 虚拟环境

$
0
0

使用 pyenv 和 virtualwrapper 来管理你的虚拟环境,可以避免很多困惑。

作为 Python 开发者和 MacOS 用户,拿到新机器首先要做的就是设置 Python 开发环境。下面是最佳实践(虽然我们已经写过 在 MacOS 上管理 Python 的其它方法)。

预备

首先,打开终端,在其冰冷毫无提示的窗口输入 xcode-select --install 命令。点击确认后,基本的开发环境就会被配置上。MacOS 上需要此步骤来设置本地开发实用工具库,根据 OS X Daily 的说法,其包括 ”许多常用的工具、实用程序和编译器,如 make、GCC、clang、perl、svn、git、size、strip、strings、libtool、cpp、what 及许多在 Linux 中系统默认安装的有用命令“。

接下来,安装 Homebrew, 执行如下的 Ruby 脚本。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果你像我一样,对随意就运行的来源于互联网的脚本心存疑虑的话,可以点击上面的脚本去仔细看看其具体功能。

一旦安装完成后,就恭喜了,你拥有了一个优秀的包管理工具。自然的,你可能接下来会执行 brew install python 或其他的命令。不要这样,哈哈!Homebrew 是为我们提供了一个 Python 的管理版本,但让此工具来管理我们的 Python 环境话,很快会失控的。我们需要 pyenv,一款简单的 Python 版本管理工具,它可以安装运行在 许多操作系统 上。运行如下命令:

$ brew install pyenv

想要每次打开命令提示框时 pyenv 都会运行的话,需要把下面的内容加入你的配置文件中(MacOS 中默认为 .bash_profile,位于家目录下):

$ cd ~/
$ echo 'eval "$(pyenv init -)"' >> .bash_profile

添加此行内容后,每个终端都会启动 pyenv 来管理其 PATH 环境变量,并插入你想要运行的 Python 版本(而不是在环境变量里面设置的初始版本。更详细的信息,请阅读 “如何给 Linux 系统设置 PATH 变量”)。打开新的终端以使修改的 .bash_profile 文件生效。

在安装你中意的 Python 版本前,需要先安装一些有用的工具,如下示:

$ brew install zlib sqlite

pyenv 依赖于 zlib 压缩算法和 SQLite 数据库,如果未正确配置,往往会导致构建问题。将这些导出配置命令加入当前的终端窗口执行,确保它们安装完成。

$ export LDFLAGS="-L/usr/local/opt/zlib/lib -L/usr/local/opt/sqlite/lib"
$ export CPPFLAGS="-I/usr/local/opt/zlib/include -I/usr/local/opt/sqlite/include"

现在准备工作已经完成,是时候安装一个适合于现代人的 Python 版本了:

$ pyenv install 3.7.3

去喝杯咖啡吧,挑些豆类,亲自烧烤,然后品尝。说这些的意思是上面的安装过程需要一段时间。

添加虚拟环境

一旦完成,就可以愉快地使用虚拟环境了。如没有接下来的步骤的话,你只能在你所有的工作项目中共享同一个 Python 开发环境。使用虚拟环境来隔离每个项目的依赖关系的管理方式,比起 Python 自身提供的开箱即用功能来说,更加清晰明确和更具有重用性。基于这些原因,把 virtualenvwrapper 安装到 Python 环境中吧:

$ pyenv global 3.7.3
# Be sure to keep the $() syntax in this command so it can evaluate
$ $(pyenv which python3) -m pip install virtualenvwrapper

再次打开 .bash_profile 文件,把下面内容添加进去,使得每次打开新终端时它都有效:

# We want to regularly go to our virtual environment directory
$ echo 'export WORKON_HOME=~/.virtualenvs' >> .bash_profile
# If in a given virtual environment, make a virtual environment directory
# If one does not already exist
$ echo 'mkdir -p $WORKON_HOME' >> .bash_profile
# Activate the new virtual environment by calling this script
# Note that $USER will substitute for your current user
$ echo '. ~/.pyenv/versions/3.7.3/bin/virtualenvwrapper.sh' >> .bash_profile

关掉终端再重新打开(或者运行 exec /bin/bash -l 来刷新当前的终端会话),你会看到 virtualenvwrapper 正在初始化环境配置:

$ exec /bin/bash -l
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/postmkproject
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/initialize
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/premkvirtualenv
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/prermvirtualenv
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/predeactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/postdeactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/postactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/get_env_details

从此刻开始,你的所有工作都是在虚拟环境中的,其允许你使用临时环境来安全地开发。使用此工具链,你可以根据工作所需,设置多个项目并在它们之间切换:

$ mkvirtualenv test1
Using base prefix '/Users/moshe/.pyenv/versions/3.7.3'
New python executable in /Users/moshe/.virtualenvs/test1/bin/python3
Also creating executable in /Users/moshe/.virtualenvs/test1/bin/python
Installing setuptools, pip, wheel...
done.
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test1/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test1/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test1/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test1/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test1/bin/get_env_details
(test1)$ mkvirtualenv test2
Using base prefix '/Users/moshe/.pyenv/versions/3.7.3'
New python executable in /Users/moshe/.virtualenvs/test2/bin/python3
Also creating executable in /Users/moshe/.virtualenvs/test2/bin/python
Installing setuptools, pip, wheel...
done.
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test2/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test2/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test2/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test2/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/moshe/.virtualenvs/test2/bin/get_env_details
(test2)$ ls $WORKON_HOME
get_env_details postmkvirtualenv premkvirtualenv
initialize postrmvirtualenv prermvirtualenv
postactivate preactivate test1
postdeactivate predeactivate test2
postmkproject premkproject
(test2)$ workon test1
(test1)$

此处,使用 deactivate 命令可以退出当前环境。

推荐实践

你可能已经在比如 ~/src 这样的目录中添加了长期的项目。当要开始了一个新项目时,进入此目录,为此项目增加子文件夹,然后使用强大的 Bash 解释程序自动根据你的目录名来命令虚拟环境。例如,名称为 “pyfun” 的项目:

$ mkdir -p ~/src/pyfun && cd ~/src/pyfun
$ mkvirtualenv $(basename $(pwd))
# we will see the environment initialize
(pyfun)$ workon
pyfun
test1
test2
(pyfun)$ deactivate
$

当需要处理此项目时,只要进入该目录,输入如下命令重新连接虚拟环境:

$ cd ~/src/pyfun
(pyfun)$ workon .

初始化虚拟环境意味着对 Python 版本和所加载的模块的时间点的拷贝。由于依赖关系会发生很大的改变,所以偶尔需要刷新项目的虚拟环境。这种情况,你可以通过删除虚拟环境来安全的执行此操作,源代码是不受影响的,如下所示:

$ cd ~/src/pyfun
$ rmvirtualenv $(basename $(pwd))
$ mkvirtualenv $(basename $(pwd))

这种使用 pyenvvirtualwrapper 管理虚拟环境的方法可以避免开发环境和运行环境中 Python 版本的不一致出现的苦恼。这是避免混淆的最简单方法 - 尤其是你工作的团队很大的时候。

如果你是初学者,正准备配置 Python 环境,可以阅读下 MacOS 中使用 Python 3 文章。 你们有关于 Python 相关的问题吗,不管是初学者的还是中级使用者的?给我们留下评论信息,我们在下篇文章中会考虑讲解。


via: https://opensource.com/article/19/6/virtual-environments-python-macos

作者:Matthew Broberg 选题:lujun9972 译者:runningwater 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

美国医院麻醉机、呼吸机现安全漏洞:极易遭到远程篡改

$
0
0

据外媒报道,安全研究人员发现,美国医院的麻醉机和呼吸机所使用的网络协议存在一个漏洞,如果利用该协议,这些医疗设备可能会遭到恶意篡改。来自医疗安全公司 CyberMDX 的研究人员表示,通用电气 Aestiva 和 Aespire 设备中使用的协议可以在连接到医院网络终端服务器时发送命令。

研究人员指出,这些指令可以关闭警报、改变记录,另外还可以被滥用来改变呼吸器和麻醉机中吸入气体的成分。

美国国土安全局在周二发布的一份报告称这些漏洞只需要低水平的技术就能遭到利用。

“这些设备使用的是一种专有协议,”CyberMDX 研究主管 Elad Luz 说道,“计算这些命令非常简单。”

Luz 指出,其中一个命令会迫使设备使用仍存在于设备中的较老版协议,更糟的是,这些命令都不需要任何身份验证。

不过如果设备没有连接到网络那么就会安全得多。

据悉,CyberMDX 则是在 2018 年 10 月底向 GM 披露了这些漏洞。后者表示,Aestiva 和 Aespire 的 7100 和 7900 版在受影响范围内。据这家公司发言人表示,这一潜在的问题没有带来临床风险或直接的患者风险,麻醉设备本身也不存在脆弱性。不过这家公司拒绝透露受影响设备的具体数量,而 2009 年以后销售的系统则不再具备修改气体成分的能力。

来源:cnBeta.COM

更多资讯

美国海岸警卫队针对破坏船舶计算机系统的恶意软件发出警告

据外媒 ZDNet 报道,美国海岸警卫队在过去三个月中发出了两次安全警报,突出了商业海船上的网络安全实践问题。第一个警报是在 5 月下旬发出的,海岸警卫队官员警告说,持续不断的电子邮件鱼叉式网络钓鱼浪潮将恶意软件传播到商业船只。

来源: cnBeta.COM
详情: http://www.dbsec.cn/zx/20190711-2.html 

Mozilla 拒绝将 DarkMatter 根证书纳入 Firefox 白名单

浏览器开发商 Mozilla 今日宣布,它将不会在 Firefox 根存储中包含一家名为 DarkMatter 公司的根证书。作为浏览器内部自带的一份实体白名单,其旨在严格认证用于保护签名加密 HTTPS 流量的 TLS 证书。问题在于,DarkMatter 近期陷入了一些争议,被指控向不被认可的中东组织机构出售发行了用于监视和黑客服务的证书。 

来源: solidot.org
详情: http://www.dbsec.cn/zx/20190711-4.html

“数据泄露”空地竞赛?英航&万豪“携手”领 24 亿罚单

最近,英国信息专员办公室(ICO)的信息专员伊丽莎白·德纳姆“表示自己忙翻了”,因为ICO在7月9日和10日接连开出两张巨额罚单,累计罚金超3.5亿美金!处罚对象分别是国际航空集团旗下英国航空公司以及国际知名连锁酒店万豪国际集团。

来源: 安华金和
详情:https://mp.weixin.qq.com/s/1jhHhXhMqRGXEPJY6gFwgA

(信息来源于网络,安华金和搜集整理)

如何在 Mac 上配置 Kubernetes

$
0
0

Mac 用户可使用 MicroK8s 运行 Kubernetes 环境,进而开发、测试应用。通过下面的步骤可轻松搭建此环境。

MicroK8s 是一个 Ubuntu 推出的一个本地的 Kubernetes 版本。它是一个轻量级的 snap 应用,可安装到 PC 上作为一个单节点集群使用。尽管 MicroK8s 仅针对 Linux 构建,但是也可以在 Mac 上启动 Ubuntu VM 来实现。

MicroK8s 可在 Ubuntu 和任意支持 snap 的 OS 上运行全部原生的 K8s 服务。这对于开发应用,创建简单的 K8s 集群和本地微服务开发非常有帮助,所有的开发工作最终都还是需要部署的。

MicroK8s 提供另一个级别的可靠性因为它提供了与当前 Kubernetes(以下简称 Kubernetes 为 K8s)版本一致的开发环境。 在最新的上游 K8s 发布后的一周内,在 Ubuntu 上即可使用。

在 Mac 上配置 Kubernetes

K8s 和 MicroK8s 都需要一个 Linux 内核来工作,因此二者都需要 Ubuntu 环境。Mac 用户可使用 Multipass,此工具被设计为方便用户在 Mac、Windows、Linux 上开启 Ubuntu VM(虚拟)环境。 

下面的教程将介绍在 Mac 上配置 Multipass 和运行 K8s。

步骤1:使用 Multipass 为 Mac 安装一个 VM

最新的 Multipass 的程序包可在 GitHub 上找到,双击 .pkg 即可安装。用 MicroK8s 来启动一个 VM:

multipass launch --name microk8s-vm --mem 4G --disk 40G
multipass exec microk8s-vm -- sudo snap install microk8s --classic
multipass exec microk8s-vm -- sudo iptables -P FORWARD ACCEPT

确保为主机保留足够的资源。上述命令表示我们创建了一个名字为 microk8s-vm 的 VM,分配了 4GB 内存和 40GB 硬盘。

使用以下命令来查看 VM 分配的 IP 地址:(记一下下面的 IP,我们将从此开始)

multipass list
Name         State IPv4            Release
microk8s-vm  RUNNING 192.168.64.1   Ubuntu 18.04 LTS

步骤2:在 VM 上与 MicroK8s 互动

可使用以下 3 种方式:

命令行,用 Multipass 的 shell 提示符:

multipass shell microk8s-vm                                                                                     

multipass exec 来执行一个命令(输入后无提示):

multipass exec microk8s-vm -- /snap/bin/microk8s.status                             

调用运行在 VM 的 K8s API 服务器,这里使用 MicroK8s 的 kubeconfig 文件和一个本地的安装的 kubectl 来访问 VM 内的 K8s,运行以下命令:

multipass exec microk8s-vm -- /snap/bin/microk8s.config > kubeconfig     

下一步,在本地主机安装 kubectl,然后使用 kubeconfig:

kubectl --kubeconfig=kubeconfig get all --all-namespaces            
NAMESPACE  NAME  TYPE  CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE        
Default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 3m12s

步骤 3:用 Mutlpass 服务访问 VM 并开启 MicroK8s 组件

配置基础的 MicroK8s 组件是开启 Grafana 仪表,下面我们将展示一步开启 Grafana,监视和分析一个 MicroK8s 实例。可执行以下命令:

multipass exec microk8s-vm -- /snap/bin/microk8s.enable dns dashboard
Enabling DNS
Applying manifest
service/kube-dns created
serviceaccount/kube-dns created
configmap/kube-dns created
deployment.extensions/kube-dns created
Restarting kubelet
DNS is enabled
Enabling dashboard
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
service/monitoring-grafana created
service/monitoring-influxdb created
service/heapster created
deployment.extensions/monitoring-influxdb-grafana-v4 created
serviceaccount/heapster created
configmap/heapster-config created
configmap/eventer-config created
deployment.extesions/heapster-v1.5.2 created
dashboard enabled

接下来,用下面命令检查部署进程:

multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl get all --all-namespaces                                                                                                                        

返回信息如下:

一旦所有的必要服务已开启,接下来使用以下的链接访问仪表。命令如下:

multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl cluster-info  
Kubernetes master is running at https://127.0.0.1:16443
Heapster is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Grafana is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
InfluxDB is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-influxdb:http/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

如果我们在 VM 内,可以用此链接来访问 Grafana 仪表。不过,我们可以通过代理在主机上访问。

multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl proxy --address='0.0.0.0' --accept-hosts='.*' 
Starting to serve on [::][::]:8001

保持终端运行状态,记一下端口号(8001),我们在下一步需要用到。要访问 Grafana 仪表,我们需要修改 VM 内仪表的链接: 

  • 使用 VM 的 IP 替换 127.0.0.1(multipass info microk8s-vm
  • 将端口(16443)替换为代理端口 8001。
  • 在浏览器内输入这个链接地址:https://127.0.0.1:8001/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy,你将看到 Grafana 仪表,如下图:

总结

使用 MicroK8s 在本地开发和测试应用,将使得团队在部署上更快,这对于开发者和 DevOp 团队来说是非常有价值和意义的。

 

使用 xclip 在 Linux 命令行中复制粘贴

$
0
0

了解如何在 Linux 中使用 xclip。

在使用 Linux 桌面工作时,你通常如何复制全部或部分文本?你可能会在文本编辑器中打开文件,选择全部或仅选择要复制的文本,然后将其粘贴到其他位置。

这样没问题。但是你可以使用 xclip 在命令行中更有效地完成工作。xclip 提供了在终端窗口中运行的命令与 Linux 图形桌面环境中的剪贴板之间的管道。

安装 xclip

xclip 并不是许多 Linux 发行版的标准套件。要查看它是否已安装在你的计算机上,请打开终端窗口并输入 which xclip。如果该命令返回像 /usr/bin/xclip 这样的输出,那么你可以开始使用了。否则,你需要安装 xclip

为此,请使用你的发行版的包管理器。如果你喜欢冒险,你可以从 GitHub 获取源代码并自己编译。

基础使用

假设你要将文件的内容复制到剪贴板。在 xclip 中可以使用两种方法。输入:

xclip file_name

或者

xclip -sel clip file_name

两个命令之间有什么区别(除了第二个命令更长)?第一个命令在你使用鼠标中键粘贴的情况下有效。但是,不是每个人都这样做。许多人习惯使用右键单击菜单或按 Ctrl+V 粘贴文本。如果你时其中之一(我就是!),使用 -sel clip 选项可确保你可以粘贴要粘贴的内容。

将 xclip 与其他应用一起使用

将文件内容直接复制到剪贴板是个巧妙的技巧。很可能你不会经常这样做。还有其他方法可以使用 xclip,其中包括将其与另一个命令行程序结合。

结合是用管道(|)完成的。管道将一个命令行程序的输出重定向到另一个命令行程序。这样我们就会有更多的可能性,我们来看看其中的三个。

假设你是系统管理员,你需要将日志文件的最后 30 行复制到 bug 报告中。在文本编辑器中打开文件,向下滚动到最后,复制和粘贴有一点工作量。为什么不使用 xcliptail 来快速轻松地完成?运行此命令以复制最后 30 行:

tail -n 30 logfile.log | xclip -sel clip

我的写作有相当一部分用于内容管理系统 (CMS) 或者在其他网络中发布。但是,我从不使用 CMS 的 WYSIWYG 编辑器来编写 - 我采用 Markdown 格式离线编写纯文本。也就是说,许多编辑器都有 HTML 模式。通过使用此命令,我可以使用 Pandoc 将 Markdown 格式的文件转换为 HTML 并将其一次性复制到剪贴板:

pandoc -t html file.md | xclip -sel clip

在其他地方,粘贴完成。

我的两个网站使用 GitLab Pages 托管。我使用名为 Certbot 的工具为这些站点生成 HTTPS 证书,每当我更新它时,我需要将每个站点的证书复制到 GitLab。结合 cat 命令和 xclip 比使用编辑器更快,更有效。例如:

cat /etc/letsencrypt/live/website/fullchain.pem | xclip -sel clip

这就是全部可以用 xclip 做的事么?当然不是。我相信你可以找到更多用途来满足你的需求。

最后总结

不是每个人都会使用 xclip。没关系。然而,它是一个在你需要它时非常方便的一个小工具。而且,正如我几次发现的那样,你不知道什么时候需要它。等到时候,你会很高兴能用上 xclip


via: https://opensource.com/article/19/7/xclip

作者:Scott Nesbitt 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

注意:全世界 97% 的银行都无法保障你存款的安全

$
0
0

安全测试机构 ImmuniWeb 日前发布了一项全球大型金融机构安全评测报告。报告指出,就应用程序安全性、隐私保护和合规性而言,这些大型金融机构的安全状况令人担忧。全球 97% 的大型金融机构容易受到网络和移动攻击,在 SSL 加密和网站安全方面仅有三家机构获得 A+ 的评价。

这三家机构分别为瑞士信贷(Credit Suisse)、丹麦丹斯克银行(Danske Bank)和瑞典 Handelsbanken 银行。ImmuniWeb 在这三家金融机构的主要网站上没有发现任何漏洞或配置错误。此外,还有五家金融机构因“发现存在可被利用的公开安全漏洞”而未能通过检测。

据悉,在 ImmuniWeb 进行的评测中,共有 40 家机构的评价结果为 A,20 家机构为 B,还有 31 家机构被评为 C。A 表示被发现的安全问题“微不足道”或“略显不足”;B 意味着发现一些小问题或者未发现足够的安全强化问题;而 C 则表示网站上有安全漏洞或数个严重的错误配置。

在电子银行方面,获得 A+ 评价的机构略多一些,达到 15 家;A 为 27 家;B 为 13 家;C 为 40 家。另外还有 7 家机构获得 F 评价,代表被发现存在可利用的公开安全漏洞。

就主网站的 SSL/TLS 加密安全等级而言,获得 A+ 评价的金融机构有所提高,但也有未能通过检测的机构。其中,共有 25 家金融机构获得 A+ 评价,A 为 54 家;B 为 7 家;仅有一家金融机构获得 C 评价,但也有 13 家金融机构没有采用加密,或者被发现存在可利用的安全漏洞而未能通过检测。电子银行网络应用程序的 SSL/TLS 加密总体表现要好一些,共有 29 家金融机构获得最高的 A+ 评价,仅有两家金融机构未能通过检测。

另外,只有 39 家金融机构通过《通用数据保护条例》(GDPR)主站合规性测试,共有 2081 个子域名未通过测试。电子银行网站通过 GDPR 合规性测试的仅有 17 家机构。

Immuniweb 透露,每个网站平均包含两个不同的 web 软件组件,JS 库、框架或其他第三方代码。多达 29 个网站包含至少一个公开披露的中等或高风险的未修补安全漏洞。在研究过程中检测到的最原始的未打补丁的漏洞是 jQuery 1.6.1 版本中的 CVE-2011-4969,这个漏洞最早在 2011 年被发现。ImmuniWeb 表示,最常见的网站漏洞是 XSS(跨站点脚本,OWASP A7)、敏感数据暴露(OWASP A3)和安全错误配置(OWASP A6)。

此外,过期组件在二级域名更加糟糕:81% 的二级域名含有过期组件,2% 的二级域名存在已被公开披露并且可被利用的中、高风险漏洞。

ImmuniWeb 表示,该机构所调查的银行都存在安全漏洞或与被弃用的二级域名相关的问题。

该机构还对网络钓鱼攻击进行检测,研究发现在 29 起活跃的网络钓鱼活动中,大多数恶意网站都在美国托管,其中美国银行的客户受到的攻击次数最高,达到 8 次,富国银行和摩根大通次之,分别为 7 次和 3 次。在检测中,摩根大通总共有受到 227 次网络钓鱼攻击。

调查还拓展到移动银行应用程序,ImmuniWeb 表示,有 55 家银行允许访问敏感的银行数据。这些移动应用程序总共与 298 个后端 API 进行通信,以便从各自的银行发送或接收数据。

Immuniweb 直言这些发现“令人相当担忧”。报告指出所有的移动银行应用程序至少包含一个低风险安全漏洞,92% 移动银行应用程序至少包含一个中等风险安全漏洞,还有 20% 包含至少一个高风险漏洞。

Immuniweb 首席执行官兼创始人伊利亚·科洛琴科(Ilia Kolochenko)最后表示,考虑到研究方法不具有侵入性,以及银行机构可利用重要财政资源,研究结果表明金融机构有必要迅速修订并加强其现有的应用程序安全方法。

来源:凤凰网科技

更多资讯

2500 万 Android 设备被“Agent Smith”恶意软件感染

根据报道,一种名为 Agent Smith 的新型 Android 恶意软件已经感染了 2500 万部手机,其目的是推送广告或劫持有效的广告事件。受害者被引诱从第三方应用商店下载伪装成照片应用程序、色情相关应用程序或游戏等病毒程序,一旦下载完毕,这些程序就会下载 Agent Smith。该恶意软件通常伪装成 Google Updater、Google Update for U 或 com.google.vending 等实用工具 ,并对用户隐藏其图标。

来源: 开源中国
详情: http://www.dbsec.cn/zx/20190712-2.html 

30 款 App 违规收集个人信息被通报 含探探、韵达快递等

App 专项治理工作组公告显示,探探、人人、趣店、春雨医生、天天酷跑、韵达快递等 30 款 App 因违反《网络安全法》关于收集使用个人信息的规定,被通报整改。根据公告显示,中国银行手机银行、春雨医生、魔漫相机、韵达快递等 10 款 App 违反《网络安全法》第四十一条“公开使用收集个人信息规则”的要求,无隐私政策。

来源: cnBeta.COM
详情: http://www.dbsec.cn/zx/20190712-3.html 

刷好评删差评将被列入严重失信名单

国家市场监管总局公布了《严重违法失信名单管理办法(修订草案征求意见稿)》,意见递交截止日期为 2019 年 8 月 10 日。《征求意见稿》包含了两条与电商相关的条款...

来源: solidot.org
详情: http://www.dbsec.cn/zx/20190712-4.html 

报告称 2018 年发生百万起网络袭击 损失逾 450 亿美元

中新网7月11日电 综合报道,一项报告指出,2018 年,全球估计发生了超过 200 万起网络袭击事件,造成逾 450 亿美元的损失,不少地方政府受到恶意攻击而疲于奔命,但其实有超过 95% 的网络攻击皆可避免。

来源: 中国新闻网
详情: http://www.dbsec.cn/zx/20190712-5.html 

(信息来源于网络,安华金和搜集整理)

Viewing all 13806 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>