2018年5月31日星期四

每日文章精选 2018 05 31


如何在无响应的 Linux 系统中杀掉内存消耗最大的进程


Linuxeden 开源社区 --

作为一名博客作者,我收藏了很多博客、网站和论坛用来寻找 Linux 和 Unix 相关的内容。有时候,我在浏览器中开启了非常多的标签页,导致操作系统会无响应好几分钟。我不能移动我的鼠标,也不能杀掉一个进程或关闭任何开启的标签页。在这种情况下,我别无选择,只能强制重启系统。当然我也用了 OneTab(LCTT 译注:OneTab 是一个 Chrome 的 Extension,可以将标签页转化成一个列表保存。)和 Greate Suspender(LCTT 译注:Great Suspender 是一个 Chrome 的 Extension, 可以自动冻结标签页)这样浏览器拓展,但它们在这里也起不到太大的作用。 我经常耗尽我的内存。而这就是 Early OOM 起作用的时候了。在情况严重时,它会杀掉一个未响应系统中的内存消耗最大的进程。Early OOM 每秒会检测可用内存和空余交换区 10 次,一旦两者都低于 10%,它就会把最大的进程杀死。

为什么用 Early OOM?为什么不用系统内置的 OOM killer?

在继续讨论下去之前,我想先简短的介绍下 OOM killer,也就是 Out Of Memory killer。OOM killer 是一个由内核在可用内存非常低的时候使用的进程。它的主要任务是不断的杀死进程,直到释放出足够的内存,使内核正在运行的其它进程能顺利运行。OOM killer 会找到系统中最不重要并且能释放出最多内存的进程,然后杀掉他们。在 /proc 目录下的 pid 目录中,我们可以看到每个进程的 oom_score

示例:

  1. $ cat /proc/10299/oom_score
  2. 1

一个进程的 oom_score 的值越高,这个进程越有可能在系统内存耗尽的时候被 OOM killer 杀死。

Early OOM 的开发者表示,相对于内置的 OOM killer,Early OOM 有一个很大的优点。就像我之前说的那样,OOM killer 会杀掉 oom_score 最高的进程,而这也导致 Chrome 浏览器总是会成为第一个被杀死的进程。为了避免这种情况发生,Early OOM 使用 /proc/*/status 而不是 echo f > /proc/sysrq-trigger(LCTT 译注:这条命令会调用 OOM killer 杀死进程)。开发者还表示,手动触发 OOM killer 在最新版本的 Linux 内核中很可能不会起作用。

安装 Early OOM

Early OOM 在 AUR(Arch User Repository)中可以找到,所以你可以在 Arch 和它的衍生版本中使用任何 AUR 工具安装它。

使用 Pacaur

  1. pacaur -S earlyoom

使用 Packer

  1. packer -S earlyoom

使用 Yaourt

  1. yaourt -S earlyoom

启用并启动 Early OOM 守护进程:

  1. sudo systemctl enable earlyoom
  2. sudo systemctl start earlyoom

在其它的 Linux 发行版中,可以按如下方法编译安装它:

  1. git clone https://github.com/rfjakob/earlyoom.git
  2. cd earlyoom
  3. make
  4. sudo make install

Early OOM – 杀掉无响应 Linux 系统中的最大的进程

运行如下命令启动 Early OOM:

  1. earlyoom

如果是通过编译源代码安装的, 运行如下命令启动 Early OOM:

  1. ./earlyoom

示例输出:

  1. earlyoom 0.12
  2. mem total: 3863 MiB, min: 386 MiB (10 %)
  3. swap total: 2047 MiB, min: 204 MiB (10 %)
  4. mem avail: 1770 MiB (45 %), swap free: 2047 MiB (99 %)
  5. mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
  6. mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
  7. mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
  8. mem avail: 1772 MiB (45 %), swap free: 2047 MiB (99 %)
  9. mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
  10. mem avail: 1771 MiB (45 %), swap free: 2047 MiB (99 %)
  11. mem avail: 1773 MiB (45 %), swap free: 2047 MiB (99 %)
  12. mem avail: 1784 MiB (46 %), swap free: 2047 MiB (99 %)
  13. [...]

就像你在上面的输出中可以看到的,Early OOM 将会显示你有多少内存和交换区,以及有多少可用的内存和交换区。记住它会一直保持运行,直到你按下 CTRL+C

如果可用的内存和交换区大小都低于 10%,Early OOM 将会自动杀死最大的进程,直到系统有足够的内存可以流畅的运行。你也可以根据你的需求配置最小百分比值。

设置最小的可用内存百分比,运行:

  1. earlyoom -m <PERCENT_HERE>

设置最小可用交换区百分比, 运行:

  1. earlyoom -s <PERCENT_HERE>

在帮助部分,可以看到更多详细信息:

  1. $ earlyoom -h
  2. earlyoom 0.12
  3. Usage: earlyoom [OPTION]...
  4. -m PERCENT set available memory minimum to PERCENT of total (default 10 %)
  5. -s PERCENT set free swap minimum to PERCENT of total (default 10 %)
  6. -M SIZE set available memory minimum to SIZE KiB
  7. -S SIZE set free swap minimum to SIZE KiB
  8. -k use kernel oom killer instead of own user-space implementation
  9. -i user-space oom killer should ignore positive oom_score_adj values
  10. -d enable debugging messages
  11. -v print version information and exit
  12. -r INTERVAL memory report interval in seconds (default 1), set to 0 to
  13. disable completely
  14. -p set niceness of earlyoom to -20 and oom_score_adj to -1000
  15. -h this help text

现在,你再也不用担心内存消耗最高的进程了。希望这能给你帮助。更多的好内容将会到来,敬请期待。

谢谢!


via: https://www.ostechnix.com/kill-largest-process-unresponsive-linux-system/

作者:Aditya Goturu 译者:cizezsy 校对:wxy

编译自: https://www.ostechnix.com/kill-largest-process-unresponsive-linux-system/ 作者: Aditya Goturu
原创: LCTT https://linux.cn/article-9696-1.html 译者: ShenYu Zheng

https://ift.tt/2H8EQcB

Java 微服务框架 Jeecg-P3 1.0.0 重构版本发布


Linuxeden 开源社区 --

Jeecg-P3 微服务插件开发框架,业务组件以 JAR 方式提供,松耦合可插拔支持独立部署,也可无缝集成 Jeecg 平台。

当前版本:v_1.0.0(重构版)| 2018-05-31

项目介绍:

Jeecg-P3 是一个微服务框架,采用插件式模式开发;业务插件以 JAR 方式提供,松耦合可插拔支持独立部署,也可无缝集成 Jeecg 平台中,目前 jeecg 已经提供了在线聊天,我的邮箱等一系列插件。

技术架构

MVC 层 : SpringMvc_4.0.9.RELEASE
持久层: Minidao_1.6.4
View 层: Velocity_1.6.4
UI 层 : H+、Bootstrap、Jquery

升级日志:

  1.  重构 pom 引入机制,提供 jeecg-p3-starter-parent,管理公共资源版本号;
  2.  简化插件开发流程
  3.  升级代码生成器模板,提供更强大的 UI 功能
  4. Minidao 事务配置
  5. 提供新的在线 wiki,录制新视频详细讲解框架开发入门
  6. 提供 hello world 入门 demo

源码下载:

转自 https://ift.tt/2xttZKz

https://ift.tt/2sjHsQu

layui 2.3.0 发布,重新归来


Linuxeden 开源社区 --layui
layui

layui 有段时间没在 OSC 露脸了,以此版本为始,重新进入更新模式,也好混个脸熟。

更新日志:

  • rate 评分

    • 新增的全新组件,用于进行评分/星操作
    • 支持是否开启半星
    • 支持自定义星星个数
    • 支持自定义星星主题色
    • 支持自定义评级对应的说明,如:文本/图标等
    • 支持初始值的设定
    • 支持是否只读,即:只展示、不可点
  • laypage 通用分页

    • 对 layout 参数新增 refresh 支持,用于显示刷新当前页图标
  • laydate 日期与时间

    • 新增 isInitValue 参数,用于控制是否自动向元素填充初始值(需配合 value 参数使用)
  • form 表单

    • 增加 form.val(filter, fields) 方法,用于给指定表单集合的元素初始赋值。
    • 对 select 组件新增上下键(↑ ↓)回车键(Enter)选择功能
    • 优化 switch 开关组件,让其能根据文本自由伸缩宽
    • 修复 checkbox 复选框组件在高分辨屏下出现的样式不雅问题
  • upload 文件上传

    • 对 choose、before 回调返回的参数 obj 增加 resetFile 方法,可用于重命名文件名
    • 修复开启 size 参数后,文件超出规定大小时,提示信息有误的问题
  • flow 流加载

    • 修复开启 isLazyimg:true 后, 图片懒加载但是图片不存在的报错问题
  • 其它改动

    • 新增 21 个字体图标
    • 字体图标开始支持规范化的 font-class 命名方式
    • 新增 卡片面板 class=”layui-card” 元素结构(需配合“非白”背景凸显效果)
    • util 模块新增 escape 方法,用于转义 xss 字符

转自 https://ift.tt/2smuP73

https://ift.tt/2xuqGmD

黑客获得在未修改的 NES 上运行的超级 NES 游戏


Linuxeden 开源社区 --Genderbent Luigi Cosplay

Tom“Tom7”Murphy 的最新项目是一个未修改的 NES,运行超级 NES 游戏。 Ars Technica 报道说:“墨菲在一系列详细的视频中展示了他的修补过程,从而打破了这种魔力。 “尽管 NES 硬件本身没有任何问题,但是运行这种反向仿真的盒式磁带是一个高度定制的电路板(从中国订购的价格约为 10 美元),并且附带一个紧凑的多核 Raspberry Pi 3 来处理实际的 Super NES 仿真。从报告中:
Pi 本质上取代了墨盒的 PPU 部分,通过一个定制编码的 EEPROM 芯片连接到 NES,告诉系统如何处理和显示通常来自微型计算机的图形数据的压倒性流。只有来自原始墨盒的 CIC“版权”芯片保持未修改才能绕过硬件的锁定芯片。墨菲 – 你可能还记得他从以前的教导人工智能如何玩 NES 游戏 – 他说,树莓派实际上有太多的延迟,以有效地“流”瓦片图形指令到 NES 的墨盒 CPU。当 Pi 设法“放电”一组指令位(在它们产生后仅 180ns)时,NES 本身已经移动到它的读写周期的下一部分。

Genderbent Luigi Cosplay
Murphy 使用了一个周期的延迟来弥补这种延迟,从根本上猜测可预测的 PPU 将写入下一个的位置,并提前将数据发送到该位置。该过程运行良好,但会导致您在视频演示中看到的持续闪烁和图形噪声。

 

https://ift.tt/2LNoQQH

Google 与复旦大学正式合作:主攻人工智能


Linuxeden 开源社区 --

据谷歌黑板报消息,5 月 31 日,Google 在上海与复旦大学签署两年期合作协议,宣布成立复旦大学-谷歌科技创新实验室,建立战略合作关系。复旦大学常务副校长桂永浩教授、校长助理徐雷教授、Google 大中华区总裁石博盟(Scott Beaumont)、Google 大中华区公共政策与政府事务经理张弘、Google 中国教育合作部经理朱爱民等出席了签约仪式。

基于此次签署的协议,Google 将重点支持复旦大学在人工智能、数据科学、移动应用等新兴科技领域的课程和创新科技联合实验室建设,并支持中美青年创客交流中心建设,培养拔尖创新人才。早在 2006 年开始,Google 中国教育合作部就与国内学校积极协作,已经形成全方位的支持格局,涵盖了本科、高职和中学,所支持的项目包括联合科研、课程建设、师资培育、大学生人才培养、中小学信息技术启蒙教育等。

https://ift.tt/2J0jjsu

健身不忘编程序 阿里巴巴工程师研发“代码单车”


Linuxeden 开源社区 --20180529172241_81d424f12eab946ab223e2467bcf4cb6_1.png

健身单车您见过,能测程序代码的健身单车您见过吗?近日,阿里巴巴中间件工程师研发出一辆能测试代码的健身单车。骑一分钟“代码单车”,相当于发起上百次访问网页申请。 目前,该中间件已应用到中石化、中国邮政等中间件系统当中,提供服务。

访问:

20180529172241_81d424f12eab946ab223e2467bcf4cb6_1.png

_GIF_

阿里工程师研发的测试“代码单车”

阿里技术微博发布信息显示,工程师研发的“代码单车”边骑边可显示数据代码,并拼出一个二维码。单车骑得越快,代码和二维码显示的速度越快。公开资料显示,这是中国首个能测试代码的运动器材。

阿里巴巴中间件事业部技术专家唐睿介绍,研发“代码单车”的想法源于他和同事的玩笑。

“我跟同事业余会去健身,有一次骑健身单车,同事说他编的中间件程序还没有测试。我们就说如果有台‘单车’,可以边骑边测试程序就好了。然后就一起画了一个草图。”唐睿说,研发“代码单车”从设计到组装,他总共用了 4 天。

_

阿里中间件事业部技术专家唐睿和他研发的“代码单车”系统

整体设计很简单。就是将普通自行车架在一台发电机上,边骑边发电充当触发机制。然后将中间件程序写入一块‘开源单片机’,这主要为了保证测试环境的一致性。只要单车骑行速度够快,就可触发‘单片机’中间件程序联网处理数据。

唐睿介绍,骑一分钟“代码单车”相当于发起上百次访问网页申请,越优秀的中间件程序处理效率越快,“我的世界”游戏中二维码图拼出时间越短。

“我们小团队内部展开了一场比赛。目前比拼结果,获胜中间件软件仅需 1 分 30 秒左右,便可完成二维码拼图,对应的中间件调用达到了近 200 次。”目前,该中间件已应用到中石化、中国邮政等中间件系统当中,为大家服务。

唐睿表示,他们正考虑将“代码单车”设置为 2018 年阿里中间件性能挑战赛的一环。中间件性能挑战赛是阿里集团发起的工程性赛事,目的是发扬技术人的工匠精神,不断突破性能极限。今年大赛设置 50 万现金大奖,目前国内外已经有 2000 多支队伍参赛,目前登录天池平台仍可报名。

_

唐睿正在调试“代码单车”设备

目前,以阿里中间件为核心的企业级互联网架构,已被浙江省部分政府部门、中国石化、茅台、波司登等众多拥有丰富互联网业务形态的企业所使用,为企业大幅降低业务创新成本,带来了巨大市场价值。

https://ift.tt/2ssNSMf

Firefox 支持 Web 组件技术,简化复杂网站开发


Linuxeden 开源社区 --

周一的时候,Mozilla 在新版 Firefox 中启用了“Web 组件”技术,旨在让网站的构建变得更加轻松。 对于普通用户来说,这一技术层面的变化不会给我们造成任何影响。但是对于复杂网站的构建者,这项技术会让他们欣喜不已,因为它可以带来更少的问题、减少加载时间、以及更迅速的改进。需要指出的是,Google Chrome 团队早在五年前就开始推动“Web 组件”技术了。

一张火狐贴纸(Stephen Shankland/CNET)

在谷歌之后,苹果 Safari 在 2016 / 2017 年作出了跟进。至于 微软 ,暂不清楚该公司给 Edge 浏览器定下了什么计划。

在此之前,浏览器制造商们只是惯例地接受了‘影式文档对象模型’(Shadow DOM)和‘自定义元素’(Custom Elememts)两种。

前者允许隔离代码块,从而不对 网站 程序的其它部分造成干扰;后者则允许程序员自定义创建其网站的基础。

Firefox 支持自定义元素,但周一的时候,影式文档对象模型支持也悄然落户测试通道的‘每夜构建版’(Nightly Build)。

对于简单的网站来说,动用 Web 组件显然属于‘杀鸡用牛刀’。但是那些先进而复杂的网站将最为受益,比如 YouTube 站点早就启用了对 Web Components 的支持。

如果你访问一个不支持 Web 组件特性的网站,那体验可能变慢或受限。

Mozilla 首席产品官 Mark Mayo 表示:“Web 开发 变得超级困难,是时候让它变得更加简单,所以我们应该看到更好、更迅捷的网页”。

借助 Web 组件,开发人员可以创建网站的构建模块,然后广泛而重复地使用它们、且无需担心会导致阻止使用该网站的问题。

举例来说,网站通常配备了表示不同部分的选项卡,而 Web 组件让开发人员可以更轻松地创建这些页面、在另一个项目上重复使用它、甚至可以从其它已经搞清爽的网站上复制过来。

多年来一直致力于 Web 现代化的 Chrome 资深程序员 Alex Russell 表示:“对于拥有众多团队和复杂产品的大公司来说,这会是一项特别巨大的优势”。

Web 组件技术特别有助于大型预编写的‘框架软件库’,这些软件在当今的 Web 编程中被广泛使用,比如来自 Facebook 的 React、以及来自 Google 的 Angular 框架。

它们可以让网站的构建变得更加容易,但是一个框架的某些部分、不能与另一个框架的某些部分一起使用,导致 Web 编程遇到了‘孤岛’问题。

Mozilla 的 Mayo 也认为,Web 组件技术是一项重大的进步:“你无法一下子把这三方面都提升得很好,但它让 Web 有了更加安全、迅捷、高效的基础开发模式”。

编译自:Cnet,译者:cnBeta

https://ift.tt/2H7KSdw

4 个现在就该去装的 Firefox 扩展


Linuxeden 开源社区 --ublock origin ad blocker screenshot

web 浏览器已成为许多用户计算机体验的关键组件。现代浏览器已经发展成为功能强大且可扩展的平台,扩展可以添加或修改其功能。Firefox 的扩展是使用 WebExtensions API(一种跨浏览器开发系统)构建的。

在第一篇文章中,我问读者:“你应该安装哪些扩展?” 重申一下,这一决定主要取决于你如何使用浏览器,你对隐私的看法,你对扩展程序开发人员的信任程度以及其他个人偏好。自文章发表以来,我推荐的一个扩展(Xmarks)已经停止维护。另外,该文章收到了大量的反馈,在这篇更新中,这些反馈已经被考虑到。

我想再次指出,浏览器扩展通常需要能够阅读和(或)更改你访问的网页上的所有内容。你应该仔细考虑这一点。如果扩展程序修改了你访问的所有网页的访问权限,那么它可能成为键盘记录程序、拦截信用卡信息、在线跟踪、插入广告以及执行各种其他恶意活动。这并不意味着每个扩展程序都会暗中执行这些操作,但在安装任何扩展程序之前,你应该仔细考虑安装源,涉及的权限,风险配置文件以及其他因素。请记住,你可以使用配置文件来管理扩展如何影响你的攻击面 —— 例如,使用没有扩展的专用配置文件来执行网上银行等任务。

考虑到这一点,这里有你可能想要考虑的四个开源 Firefox 扩展。

uBlock Origin

ublock origin ad blocker screenshot

ublock origin ad blocker screenshot

我的第一个建议保持不变。uBlock Origin 是一款快速、低内存消耗、广泛的拦截器,它不仅可以拦截广告,而且还可以执行你自己的内容过滤。 uBlock Origin 的默认行为是使用多个预定义的过滤器列表来拦截广告、跟踪器和恶意软件站点。它允许你任意添加列表和规则,甚至可以锁定到默认拒绝模式。尽管它很强大,但它已被证明是高效和高性能的。它将继续定期更新,并且是该功能的最佳选择之一。

Privacy Badger

privacy badger ad blocker

privacy badger ad blocker screenshot

我的第二个建议也保持不变。如果说有什么区别的话,那就是自从我上一篇文章发表以来,隐私问题更被关注了,这使得这个扩展成为一个简单的建议。顾名思义,Privacy Badger 是一个专注于隐私的扩展,可以拦截广告和其他第三方跟踪器。这是电子前哨基金会基金会(EFF)的一个项目,他们说:

Privacy Badger 的诞生是我们希望能够推荐一个单独的扩展,它可以自动分析和拦截任何违反用户同意原则的追踪器或广告;在用户没有任何设置、有关知识或配置的情况下,它可以很好地运行;它是由一个明确为其用户而不是为广告商工作的组织所产生的;它使用了算法的方法来决定什么被跟踪,什么没有被跟踪。”

为什么 Privacy Badger 会出现在这个列表上,它的功能与上一个扩展看起来很类似?因为一些原因:首先,它从根本上工作原理与 uBlock Origin 不同。其次,深度防御的实践是一项合理的策略。说到深度防御,EFF 还维护着 HTTPS Everywhere 扩展,它自动确保 https 用于许多主流网站。当你安装 Privacy Badger 时,你也可以考虑使用 HTTPS Everywhere。

如果你开始认为这篇文章只是对上一篇文章的重新讨论,那么以下是我的建议分歧。

Bitwarden

Bitwarden

Bitwarden

在上一篇文章中推荐 LastPass 时,我提到这可能是一个有争议的选择。这无疑属实。无论你是否应该使用密码管理器 —— 如果你使用,那么是否应该选择带有浏览器插件的密码管理器 —— 这是一个备受争议的话题,答案很大程度上取决于你的个人风险状况。我认为大多数普通的计算机用户应该使用一个,因为它比最常见的选择要好得多:在任何地方都使用相同的弱密码!我仍然相信这一点。

Bitwarden 自从我上次点评以后确实更成熟了。像 LastPass 一样,它对用户友好,支持双因素身份验证,并且相当安全。与 LastPass 不同的是,它是 开源的 。它可以使用或不使用浏览器插件,并支持从其他解决方案(包括 LastPass)导入。它的核心功能完全免费,它还有一个 10 美元/年的高级版本。

Vimium-FF

Vimium

Vimium

Vimium 是另一个开源的扩展,它为 Firefox 键盘快捷键提供了类似 Vim 一样的导航和控制,其称之为“黑客的浏览器”。对于 Ctrl+xMeta+xAlt+x,分别对应 <c-x><m-x><a-x>,默认值可以轻松定制。一旦你安装了 Vimium,你可以随时键入 ? 来查看键盘绑定列表。请注意,如果你更喜欢 Emacs,那么也有一些针对这些键绑定的扩展。无论哪种方式,我认为键盘快捷键是未充分利用的生产力推动力。

额外福利: Grammarly

不是每个人都有幸在 Opensource.com 上撰写专栏 —— 尽管你应该认真考虑为这个网站撰写文章;如果你有问题,有兴趣,或者想要一个导师,伸出手,让我们聊聊吧。但是,即使没有专栏撰写,正确的语法在各种各样的情况下都是有益的。试一下 Grammarly。不幸的是,这个扩展不是开源的,但它确实可以确保你输入的所有东西都是清晰的 、有效的并且没有错误。它通过扫描你文本中的常见的和复杂的语法错误来实现这一点,涵盖了从主谓一致到文章使用,到修饰词的放置这些所有内容。它的基本功能是免费的,它有一个高级版本,每月收取额外的费用。我在这篇文章中使用了它,它发现了许多我的校对没有发现的错误。

再次说明,Grammarly 是这个列表中包含的唯一不是开源的扩展,因此如果你知道类似的高质量开源替代品,请在评论中告诉我们。

这些扩展是我发现有用并推荐给其他人的扩展。请在评论中告诉我你对更新建议的看法。


via: https://opensource.com/article/18/5/firefox-extensions

作者:Jeremy Garcia 选题:lujun9972 译者:MjSeven 校对:wxy

https://ift.tt/2sni7Vy

4 个现在就该去装的 Firefox 扩展


Linuxeden 开源社区 --

正如我在关于 Firefox 扩展的 原创文章 中提到的,web 浏览器已成为许多用户计算机体验的关键组件。现代浏览器已经发展成为功能强大且可扩展的平台,扩展可以添加或修改其功能。Firefox 的扩展是使用 WebExtensions API(一种跨浏览器开发系统)构建的。

在第一篇文章中,我问读者:“你应该安装哪些扩展?” 重申一下,这一决定主要取决于你如何使用浏览器,你对隐私的看法,你对扩展程序开发人员的信任程度以及其他个人偏好。自文章发表以来,我推荐的一个扩展(Xmarks)已经停止维护。另外,该文章收到了大量的反馈,在这篇更新中,这些反馈已经被考虑到。

我想再次指出,浏览器扩展通常需要能够阅读和(或)更改你访问的网页上的所有内容。你应该仔细考虑这一点。如果扩展程序修改了你访问的所有网页的访问权限,那么它可能成为键盘记录程序、拦截信用卡信息、在线跟踪、插入广告以及执行各种其他恶意活动。这并不意味着每个扩展程序都会暗中执行这些操作,但在安装任何扩展程序之前,你应该仔细考虑安装源,涉及的权限,风险配置文件以及其他因素。请记住,你可以使用配置文件来管理扩展如何影响你的攻击面 —— 例如,使用没有扩展的专用配置文件来执行网上银行等任务。

考虑到这一点,这里有你可能想要考虑的四个开源 Firefox 扩展。

uBlock Origin

ublock origin ad blocker screenshot

ublock origin ad blocker screenshot

我的第一个建议保持不变。uBlock Origin 是一款快速、低内存消耗、广泛的拦截器,它不仅可以拦截广告,而且还可以执行你自己的内容过滤。 uBlock Origin 的默认行为是使用多个预定义的过滤器列表来拦截广告、跟踪器和恶意软件站点。它允许你任意添加列表和规则,甚至可以锁定到默认拒绝模式。尽管它很强大,但它已被证明是高效和高性能的。它将继续定期更新,并且是该功能的最佳选择之一。

Privacy Badger

privacy badger ad blocker

privacy badger ad blocker screenshot

我的第二个建议也保持不变。如果说有什么区别的话,那就是自从我上一篇文章发表以来,隐私问题更被关注了,这使得这个扩展成为一个简单的建议。顾名思义,Privacy Badger 是一个专注于隐私的扩展,可以拦截广告和其他第三方跟踪器。这是电子前哨基金会基金会(EFF)的一个项目,他们说:

Privacy Badger 的诞生是我们希望能够推荐一个单独的扩展,它可以自动分析和拦截任何违反用户同意原则的追踪器或广告;在用户没有任何设置、有关知识或配置的情况下,它可以很好地运行;它是由一个明确为其用户而不是为广告商工作的组织所产生的;它使用了算法的方法来决定什么被跟踪,什么没有被跟踪。”

为什么 Privacy Badger 会出现在这个列表上,它的功能与上一个扩展看起来很类似?因为一些原因:首先,它从根本上工作原理与 uBlock Origin 不同。其次,深度防御的实践是一项合理的策略。说到深度防御,EFF 还维护着 HTTPS Everywhere 扩展,它自动确保 https 用于许多主流网站。当你安装 Privacy Badger 时,你也可以考虑使用 HTTPS Everywhere。

如果你开始认为这篇文章只是对上一篇文章的重新讨论,那么以下是我的建议分歧。

Bitwarden

Bitwarden

Bitwarden

在上一篇文章中推荐 LastPass 时,我提到这可能是一个有争议的选择。这无疑属实。无论你是否应该使用密码管理器 —— 如果你使用,那么是否应该选择带有浏览器插件的密码管理器 —— 这是一个备受争议的话题,答案很大程度上取决于你的个人风险状况。我认为大多数普通的计算机用户应该使用一个,因为它比最常见的选择要好得多:在任何地方都使用相同的弱密码!我仍然相信这一点。

Bitwarden 自从我上次点评以后确实更成熟了。像 LastPass 一样,它对用户友好,支持双因素身份验证,并且相当安全。与 LastPass 不同的是,它是 开源的 。它可以使用或不使用浏览器插件,并支持从其他解决方案(包括 LastPass)导入。它的核心功能完全免费,它还有一个 10 美元/年的高级版本。

Vimium-FF

Vimium

Vimium

Vimium 是另一个开源的扩展,它为 Firefox 键盘快捷键提供了类似 Vim 一样的导航和控制,其称之为“黑客的浏览器”。对于 Ctrl+xMeta+xAlt+x,分别对应 <c-x><m-x><a-x>,默认值可以轻松定制。一旦你安装了 Vimium,你可以随时键入 ? 来查看键盘绑定列表。请注意,如果你更喜欢 Emacs,那么也有一些针对这些键绑定的扩展。无论哪种方式,我认为键盘快捷键是未充分利用的生产力推动力。

额外福利: Grammarly

不是每个人都有幸在 Opensource.com 上撰写专栏 —— 尽管你应该认真考虑为这个网站撰写文章;如果你有问题,有兴趣,或者想要一个导师,伸出手,让我们聊聊吧。但是,即使没有专栏撰写,正确的语法在各种各样的情况下都是有益的。试一下 Grammarly。不幸的是,这个扩展不是开源的,但它确实可以确保你输入的所有东西都是清晰的 、有效的并且没有错误。它通过扫描你文本中的常见的和复杂的语法错误来实现这一点,涵盖了从主谓一致到文章使用,到修饰词的放置这些所有内容。它的基本功能是免费的,它有一个高级版本,每月收取额外的费用。我在这篇文章中使用了它,它发现了许多我的校对没有发现的错误。

再次说明,Grammarly 是这个列表中包含的唯一不是开源的扩展,因此如果你知道类似的高质量开源替代品,请在评论中告诉我们。

这些扩展是我发现有用并推荐给其他人的扩展。请在评论中告诉我你对更新建议的看法。


via: https://opensource.com/article/18/5/firefox-extensions

作者:Jeremy Garcia 选题:lujun9972 译者:MjSeven 校对

https://ift.tt/2xtB1z3

2018年5月30日星期三

每日文章精选 2018 05 30


如何在 Linux 中安装 Ncurses 库


Linuxeden 开源社区 --

GNU Ncurses 是一个允许用户编写基于文本的用户界面(TUI)的编程库。许多基于文本的游戏都是使用这个库创建的。一个受欢迎的例子是 PacVim,这是一款学习 VIM 命令的 CLI 游戏。在这篇简要的指南中,我将解释如何在类 Unix 操作系统中安装 Ncurses 库。

在 Linux 中安装 Ncurses 库

Ncurses 在大多数 Linux 发行版的默认仓库中都有。例如,你可以使用以下命令将其安装在基于 Arch 的系统上:

  1. $ sudo pacman -S ncurses

在 RHEL、CentOS 上:

  1. $ sudo yum install ncurses-devel

在 Fedora 22 和更新版本上:

  1. $ sudo dnf install ncurses-devel

在 Debian、Ubuntu、Linux Mint 上:

  1. $ sudo apt-get install libncurses5-dev libncursesw5-dev

默认仓库中的 GNU ncureses 可能有点老了。如果你想要最新的稳定版本,可以从源代码进行编译和安装,如下所示。

这里 下载最新的 ncurses 版本。在写这篇文章时,最新版本是 6.1。

  1. $ wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.1.tar.gz

解压 tar 文件:

  1. $ tar xzf ncurses-6.1.tar.gz

这将在当前目录中创建一个名为 ncurses-6.1 的文件夹。cd 到该目录:

  1. $ cd ncurses-6.1
  2. $ ./configure --prefix=/opt/ncurses

最后,使用以下命令进行编译和安装:

  1. $ make
  2. $ sudo make install

使用命令验证安装:

  1. $ ls -la /opt/ncurses

就是这样。Ncurses 已经安装在 Linux 发行版上。继续使用 Ncurses 创建漂亮的 TUI。

还会有更多的好东西。敬请关注!

干杯!


via: https://www.ostechnix.com/how-to-install-ncurses-library-in-linux/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

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

The post 如何在 Linux 中安装 Ncurses 库 appeared first on Linuxeden开源社区.

https://ift.tt/2H4wFhg

老成 FMS 5.0 发布:多处更新,通用的模板告别拷贝 jsp


Linuxeden 开源社区 --

老成 FMS 5.0 版本除了修改以前版本的各种 bug 外,功能增强是最大特色

  1. 增强 mybatis 的通用 service 功能,增删改查,事务都支持对象一次性搞定
  2. 前端 ui 代码在线生成
  3. 通用的列表与表单模板,后台设置参数,告别拷贝 jsp 。

老成 FMS 是一个相对重量级的集成快速开发框架,前端后台数据库乃至业务都有一定的耦合度,后台使用大家再熟悉不过的 JAVA SSM ,前端有 bootstrap,layui 等。当然快速框架常用的功能都会有的,比如说栏目管理啦,用户管理啦,用户组及权限管理啦,CMS 啦,生成静态页面啦等等。但这些都不是老成 FMS 与众不同的地方,特别之处在于:

  1. 通用 Service 动态生成 sql ,其实就跟 mybatis-plus 类似,增删改查直接使用对象方法。但我觉得比 mybatis-plus 还更方便一些,0 接口,0 配置。具体类是 cn.lcfms.bin.BaseService ,功能保证强大,有兴趣的同学可以去看一看,支持直接传入 sql 语句,支持事务处理,下面有使用文档。
  2. 通用的增删改查页面,什么意思?你难道没有发现,项目每次增加一个业务,你就要复制几张 jsp 页面,大部分地方不变,少数几个地方修修改改,现在这些复制粘贴的地方你都可以不用写了,只需要后台传参数,有一个通用的页面,满足绝大多数功能。具体类都在 cn.lcfms.bin.view 这个包里。
  3. 当然万事无绝对,你的页面太复杂,通用页面满足不了,你只能老老实实写 jsp ,但 FMS 提供了前端代码生成功能,你不用再去下载调试 demo ,配置好参数,html 代码自动生成。

详细查看: 老成 FMS 5.0 正式版主页

转自 https://ift.tt/2IYCZgt

The post 老成 FMS 5.0 发布:多处更新,通用的模板告别拷贝 jsp appeared first on Linuxeden开源社区.

https://ift.tt/2IWxSxh

JeeSite 4.0.3 发布,企业级快速开发平台


Linuxeden 开源社区 --

新增

  • 新增:core 项目增加单元测试支持类 ApplicationTest.java
  • 新增:代码生成 config.xml 支持自定义,放同目录下 config-custom.xml 文件即可覆盖
  • 新增:shiro.allowRequestMethods 参数,可指定允许的请求方法,默认 GET,POST
  • 新增:TabPanel 增加 onTablePageClose 事件
  • 新增:@PatternValue 验证注解,支持从属性文件中读取正则表达式
  • 新增:可修改主键和 loginCode 的验证正则表达式
  • 新增:优化 userService.save 方法,可支持直接保存 password
  • 新增:js.addTabPage 增加返回值,可返回当前 tab 的 id,方便后续事件绑定
  • 新增:form:select 增加 blankOptionLabel=” 全部” 选项
  • 新增:form:input 支持 dataFormat=”datetime2″,年月日时分秒
  • 新增:form:fileupload 支持 returnPath=true 和 bizType 共存,bizType 优先
  • 新增:统一的消息提醒处理,消息推送功能,包括:PC 消息、APP 消息、短信、邮件、微信等等。

优化

  • 优化:采用 Mybatis-PageHelper 的 CountPage 方法,优化 count 性能,感谢 abel533
  • 优化:弹出优化,支持 js.layer.config({shadeClose: false}) 设置
  • 优化:集团模式修改为通俗名称:多租户、租户代码、租户名称。
  • 优化:/a/menuTree 优化,支持 parentCode 参数
  • 优化:用户管理下的授权角色、授权数据、重置密码权限不严谨问题。
  • 优化:SpringMVC 优化 MaxFileSize 参数,同 MaxRequestSize
  • 优化:Thumbnails 自动压缩优化,支持 png,jpg,jpeg,bmp,ico 类型
  • 优化:treeselect 组件,当所有跟节点没有子节点的时候,不显示“展开和折叠”按钮
  • 优化:Beetl 视图 include 支持相对路径,sysLogin、sysIndex 移到 themes 目录下
  • 优化:代码生成模板,当存在 corp_code 字段时,BaseEntity 未 import 修正
  • 优化:代码生成,当添加已经存在的表时,提示并直接进入,优化体验
  • 优化:代码生成模块代码合并到框架包
  • 优化:角色查询 SAAS 下允许共享系统角色
  • 优化:js.formatMoney 支持小数位数为 0
  • 优化:XSS 非法字符过滤优化
  • 优化:IE 下 ajax 缓存优化

修正

  • 修正:字典数据管理,上级字典切换无效问题修正。#IJO4W
  • 修正:在磁盘根目录下 BeetlUtil.getWebRoot() 报错修正
  • 修正:Excel 导入时如果遇到空行可能会出现空指针异常
  • 修正:Excel 导入时对于带有小数部分得数据可能出现精度丢失得情况
  • 修正:上传文件超过最大文件限制时扔可上传问题
  • 修正:fileupload 文件列表 readonly=true 是删除按钮还存在问题
  • 修正:#IJSM4 新增公司后,用户数据权限自动添加的 BUG
  • 修正:代码生成器子表生成界面跳转到主表的链接不正确问题
  • 修正: js.formatDate(new Date()) to “2018-05-dd HH:mm:ss” 问题
  • 修正:国际化 js.text() 带参数的 code,修正默认情况下没有加入参数值问题
  • 修正:字典数据管理,上级字典切换无效问题修正。#IJO4W
  • 修正:MySql 下字典类型停用启用 Connection is read-only 修正
  • 修正:添加一级的部门或公司的时候会自动给所有用户数据权限问题
  • 修正:UserUtils.getUser().getRoleList() 数据不对问题。

升级方法

  • 修改 web 项目 pom.xml 文件中的 jeesite-parent 版本号为 4.0.3-SNAPSHOT
  • 如果你导入了 jeesite-module-common 源码项目,请与 git 上的代码进行同步
  • 如果你导入了 jeesite-module-core 源码项目,请与 git 上的代码进行同步

了解更多:

转自 https://ift.tt/2L4atX4

The post JeeSite 4.0.3 发布,企业级快速开发平台 appeared first on Linuxeden开源社区.

https://ift.tt/2L7t7gQ

Druid 1.1.10 发布,增强连接池和 SQL Parser


Linuxeden 开源社区 --

阿里开源连接池 Druid 1.1.10 已发布,这又是一个维护版本,修复了 4 个连接池相关的 issue ,其他的修改都和 SQL Parser 相关,SQL Parser 有了较大的增强。

Issues

连接池相关

  1. 修复连接池在 Oracle 环境下对 setClob/setNclob 出错的问题 #2588
  2. 连接池监控新增 executeUpdate/executeBatch 统计 #2546
  3. 增强对 spring-boot 的支持 #2409
  4. 新增 mysql jdbc driver 8.0.x 的 XA 支持 #2512

Parser 相关

  1. 增强 SQL Parser 对 Hive 支持 #2510 #2509
  2. 增强 SQL Parser 对 MySql 支持 #2593 #2591 #2576 #2551 #2544 #2452 #2411 #2319 #2102
  3. 增强 SQL Parser 对 Oracle 支持 #2549 #2497
  4. 增强 SQL Parser 对 DB2 支持 #2548 #2489 #2487 #2458
  5. 增强 SQL Parser 对 postgresql 支持 #2484 #2488 #2446 #2444
  6. 修复 SQL Parser 运算符优先级有些场景不对的问题 #2460
  7. 增强对 drds 语法支持 #2433
  8. 增强 SQL Parser 对 clickhouse 的支持 #2433
  9. 增强 SQL Parser 对 h2 的支持 #2483
  10. 修复 SchemaStatVisitor 解析 condition 值不对的问题 #2407 #2422

相关连接

转自 https://ift.tt/2L8biyj

The post Druid 1.1.10 发布,增强连接池和 SQL Parser appeared first on Linuxeden开源社区.

https://ift.tt/2kBWgFO

Git 2.17.1 发布,拒绝推送有问题内容文件的仓库


Linuxeden 开源社区 --Git
Git

Git 2.17.1 发布了,此版本更新内容如下:

  • 修复 CVE-2018-11233 和 11235 等问题。
  • 服务器端拒绝推送试图创建类似有问题的 .gitmodules 文件作为跟踪内容的仓库。

详情见 更新日志

下载地址:

转自 https://ift.tt/2shd8ph

The post Git 2.17.1 发布,拒绝推送有问题内容文件的仓库 appeared first on Linuxeden开源社区.

https://ift.tt/2IWwSJv

xhook 1.1.8 发布,通用的 Android PLT hook 库


Linuxeden 开源社区 --

xhook 1.1.8 发布了,更新内容如下:

  • 支持 x86 和 x86_64。
  • 增加 xhook_ignore 接口,用于忽略部分已注册的 hook 点。
  • 修复偶发的地址边界计算 bug。

xhook 是爱奇艺技术产品中心开源的针对 Android 平台的 PLT hook 通用库。我们一直在兼容性和稳定性方面持续的改进和优化 xhook。

使用 xhook,你可以对 APP 中的 so 库(包括 app 自身的 so 库,和系统 so 库)做下面的事情:

  • 监控内存泄露。
  • 监控 fd 泄露。
  • 监控套接字(socket)网络通讯。
  • 重定向和过滤 logcat 输出。
  • 修复特定机型系统 so 库的 bug。
  • 拦截和监控恶意软件的代码注入。

特性

  • 支持 Android 4.0 (含) 以上版本 (API level >= 14)。
  • 支持 armeabi,armeabi-v7a,arm64-v8a,x86 和 x86_64。
  • 支持 ELF HASH 和 GNU HASH 索引的符号。
  • 支持 SLEB128 编码的重定位信息。
  • 支持通过正则表达式批量设置 hook 信息。
  • 不需要 ROOT 权限。
  • 不依赖于任何的第三方动态库。
  • 纯 C 的代码。比较小的库体积。

转自 https://ift.tt/2IVOo0n

The post xhook 1.1.8 发布,通用的 Android PLT hook 库 appeared first on Linuxeden开源社区.

https://ift.tt/2IXH04q

2018年5月29日星期二

每日文章精选 2018 05 29


对比以太坊、Hyperledger Fabric 和 Corda


Linuxeden 开源社区 --

作者 Philipp Sandner     ,译者 盖磊                           

本文中,我们将简要分析 Hyperledger Fabric,R3 Corda 和以太坊这三种分布式账本技术(DLT,distributed ledger technologies)间存在的最显著差异。本文的目的在于为决策者提供一个新的 DLT 指南,了解 Hyperledger Fabric、Corda 和以太坊的最适合用例。

三种不同的框架

我们从 Hyperledger Fabric、R3 Corda(下文分别简称为 Fabric 和 Corda)和以太坊的白皮书中可以看到,三种框架在可能的应用领域上分别具有完全不同的想法。Fabric[1] 和 Corda[2] 的开发是受具体用例驱动的。其中,Corda 的用例来自于金融服务行业,这也是 Corda 可见的主要应用领域。Fabric 设计提供一种模块化、可扩展的架构,可用于从银行、医疗保健到供应链等各个行业。以太坊表现出完全独立于任何特定的应用领域 [3]。然而与 Fabric 相比,以太坊并未突出模块化,而重在为各种交易和应用提供一个通用平台。表 1 给出了三种框架的情况汇总。

表 1: 以太坊、Hyperledger Fabric 和 Corda 的对比

特性 以太坊 Hyperledger Fabric R3 Corda
平台描述 通用区块链平台 模块化区块链平台 金融行业专用的分布式账本平台
管理方 以太坊开发者 Linux 基金会 R3
运行模式 无授权,可公开,也可私有 [4] 有授权,私有 有授权,私有
共识 基于 Pow 的挖矿; 账本层面 支持多种方法、更宽泛的共识理解;交易层面 对共识的特定理解(即公证节点);交易层面
智能合约 智能合约代码(例如,Solidity) 智能合约代码(例如,Go、Java) 智能合约代码(例如,Kotlin、Java);智能法律合约(即法律行文)
货币 以太;通过智能合约的代币 没有;通过区块链代码 没有

对等端的参与

在传统的集中式数据存储中,只有一个实体(即所有者)可以保留账本这一底层数据库的副本。因此,该实体控制了哪些数据可以提供,以及允许其它实体提供什么数据。DLT 的出现,从根本上改变了分布式数据存储的方式,实现了多个实体拥有底层数据库副本,自然也支持每个拷贝做出贡献。参与分布式数据存储的所有实体,形成一种由所谓“节点”或“对等端”构成的网络。由于数据是分布式存储的,因此难以确保所有节点对一些“共同事实”(例如,账本的正确性)达成一致。因为一个节点所做的更改,必须传播到网络中的所有其它的对等节点上。达成共同事实的结果,称之为节点间的“共识”(consensus),将在下文介绍。

针对是否参与达成共识,存在两种操作模式,即无授权(permissionless)和有授权(permissioned)。如果参与无需授权,那么任何人都可以参与网络。授权模式适用于作为公共区块链的以太坊。另一方面,如果参与需授权,那么参与者是经过预先选择的,并且仅限于这些参与者访问网络。Fabric 和 Corda 都属于后者。 选择无授权或有授权的参与模式,将对达成共识具有深远的影响

共识

以太坊

使用以太坊,无论参与者是否参与了某个特定的交易(Transaction),所有参与者必须就全部已发生交易的顺序达成共识。交易的顺序对账本的一致状态至关重要。如果无法建立明确的交易顺序,那么可能会出现双重支付(double-spends)问题,即两笔并行交易将同一枚货币转账给了不同的收款人,使其凭空受益。由于网络所涉及的各方可能是互不信任的,并且是匿名的,因此必须采用共识机制来保护账本免受双重支付欺诈,或者心怀鬼胎参与者的影响。在目前的以太坊实现中,这种共识机制的建立是使用基于工作证明(PoW,Proof of Work)方案的挖矿。所有参与者必须认同一个共同账本,并且可以访问账本中所有的记录条目。其结果是,PoW 会对交易的处理性能产生不利的影响 [5]。尽管记录是匿名的,但是存储在账本中的数据仍然可供所有参与者访问。因此对于有更高隐私度需求的应用而言,这种机制存在问题。

不同于以太坊,Fabric 和 Corda 给出了更精细的共识设计,不再仅仅局限于基于 PoW 或其它衍生物的挖矿。由于 Fabric 和 Corda 运行在许可模式下,因此可为记录提供更细粒度的访问控制,从而增强了隐私。此外,由于只有参与交易的各方才必须要达成共识,因此在性能上有所提高。

Fabric

Fabric 提供了范围很广的共识理解,涵盖从将交易提交网络到将交易记录到账本的整个交易流程 [6]。此外,节点在达成共识的过程中承担了不同的角色和任务。这完全不同于以太坊,其中参与达成共识的节点具有相同的角色和任务。

Fabric 将节点区分为客户节点(Client)、对等节点(Peer)和订购节点(Orderer)[7]。客户节点代表最终用户,创建并调用交易。他们与对等节点和订购节点沟通。对等节点维护账本,并接收订购节点订购的更新消息,以向账本提交新的交易。背书节点(Endorser)是一类特殊的对等节点,任务是通过检查自身是否满足一些必要的和充分的条件(例如提供所需的签名),对交易提供背书。订购节点在客户节点和对等节点间提供了通信通道,用于广播包含交易的消息。特别是对于共识,这些通道确保了所有已连接的对等节点按照完全相同的逻辑顺序传递完全相同的消息。

但是问题会出现在这一点上。如果其中涉及多个互不信任的订购节点,在传递消息时可能会出现错误。因此,必须引入一致性算法,使得在出现故障(例如,消息顺序不一致)时仍然可以达成一致,从而使分布式账本的复制过程支持容错。Fabric 所采用的算法是“可插入的”,即可以根据特定应用的需求而使用各种算法。例如,为了处理如上所述的随机或恶意复制错误,我们可以使用拜占庭式容错(BFT)的一种变体算法。此外,通道划分了消息流,这意味着客户节点只能看到它们连接通道中的消息及相关联的交易,而不知道其它通道的情况。通过这种方式,对交易的访问将仅限于相关方。其结果是只能在交易层面达成共识,而不能像以太坊那样在账本层面达成共识。

上面介绍了节点,现在介绍交易流的上下文。客户节点向已连接的背书节点发送交易,启动对账本的更新。所有背书节点都必须就提出的交易达成一致,因此需要根据更新所建议的账本达成某种共识。客户节点依次收集所有背书节点的批准,然后将经批准的交易发送给已连接的订购节点,由这些订购节点再次达成共识。随后,交易将被转发给持有分类账的对等节点,以提交交易。

我们在此不再做进一步的详细介绍。很显然,Fabric 支持对共识做细粒度的控制,并提供对交易的受限访问,这提高了性能的可扩展性和隐私性。

Corda

类似于 Fabric,Corda 的共识也是在交易层面达成的,仅涉及交易的各方。交易取决于共识是满足交易合法性(validity),还是交易唯一性(uniqueness)[8]。交易合法性通过运行与交易相关联的智能合约代码(智能合约将在下文给出详细介绍),检查需要的所有签名,并确保所引用的任何交易也是有效的。交易唯一性涉及交易的输入状态。具体而言,必须确保有疑问的交易是所有输入状态的唯一消费者。换句话说,不存在任何消耗同一状态的其它交易。这是为了避免产生双重支付。实现交易唯一性的共识,是在称为“公证人”(Notary)[9] 的参与节点中达成的。其中使用的算法和 Fabric 一样,是“可插拔的”。因此,我们同样可以使用 BFT 算法。

智能合约

在第一次接触“智能合约”(smart contract)一词时,人们难免会产生相当大的误解,将其理解为某种智能地表达了某人利益的合约。尽管合约的本质仍然存在含糊不清之处,但是在直观上它似乎应与法律有关。也就是说,我们所关注的合约在本意上并非智能的,至少目前仍尚未由人工智能驱动,也尚未在其中编入具有法律约束力的义务和权利。Clark 及其同事 [10] 在给出“智能合约”这一有用术语时,强调指出了该术语的两种不同的常用方式。第一种方式是智能合约代码(smart contract code),另一种方式是智能法律合约(smart legal contracts)。本文着重介绍两者间的区别。

智能合约代码就是用某种编程语言编写的软件 。它作为一个软件代理,或是代表其中某一方,目的是履行某些义务、行使某些权利,并以自动的方式控制分布式账本中的资产。因此,智能合约通过代码执行模拟,或模拟现实世界中合约逻辑,承担了分布式账本的任务和责任,尽管其合法性可能尚未明确。

所有的 DLT 都支持以智能合约代码的形式履行智能合约。代码可以使用 Go、Java for Fabric [11]、Solidity[12] for Ethereum,以及 Java/Kotlin for Corda [13] 编写。在 Fabirc 中使用了术语“链码”(chaincode),以此作为智能合约的同义词。举例说明,Corda 为确保交易的有效性,会提醒读者在共识机制中使用智能合同代码。一方面,Fabric 和 Ethereum 之间存在着显著的差异。另一方面,这是与 Corda 使用另一种“智能合约”方式相关。

在 Corda 中,智能合约不仅可以包含代码,还允许包含法律行文(Legal Prose)。因此,上述智能法律合约是法律行文,其制定方式可以通过智能合同代码来表达和实施。其背后的基本原理,是赋予植根于相关法律行为的代码以合法性。这种结构称为“Ricardian 合约”[14]。这清晰地表明,Corda 是设计用于金融服务行业这一受严格监管的环境。而 Fabric 和 Ethereum 都不具备此功能。

内建代币

另一个值得注意的区别,是以太坊提供一种称为“以太”的内置加密货币。以太用于向帮助通过挖矿达成共识的节点支付奖励,并支付交易费用。因此,去中心化应用(DApps)可以基于支持货币交易的以太坊构建。此外,通过部署符合预定义标准的智能合约,可以创建为用例定制的数字代币 [15]。使用这种方式,人们可以定义自己的货币或资产。

Fabric 和 Corda 不支持通过挖矿达成共识,因此不需要内建的加密货币。但是使用 Fabric,也可以开发本地货币,或是带有区块链代码的数字代币 [16]。使用 Corda,不建议创建数字货币或代币 [17]

总结:定制平台对比通用平台

总结一下,本文中分析的 DLT 横贯东西。一方面是 Fabric 和以太坊。它们在不同的方面上具有非常大的灵活性。以太坊是一种强大的智能合约引擎,基本上可作为任何类型应用的通用平台。但是,以太坊的无授权操作模式及全面透明度,是以牺牲性能可扩展性和隐私性为代价的。Fabric 采用有授权的操作模式,即使用 BFT 算法和细粒度访问控制解决了性能可扩展性和隐私问题。此外,Fabric 的模块化体系结构使其可以针对众多应用进行定制。我们可将 Fabric 比做一个多功能的工具箱。

另一方面是 Corda。它专门设计为一种用于金融服务行业的 DLT。应注意的是,Corda 通过增加法律行文的智能合同,考虑了受高度管制的环境。

显然,与 Fabric 相比,专注于金融服务交易使 Corda 得以简化其架构设计。因此,Corda 可以提供更多的开箱即可用体验。不过,Fabric 的模块化支持定制类似于 Corda 的功能集。一些工作力图将 Corda 纳入 Hyperledger 项目。因此,不能将 Corda 视为 Fabric 的竞争对手,而更多的是一种补充。

参考文献

[1] https://docs.google.com/document/d/1Z4M_qwILLRehPbVRUsJ3OF8Iir-gqS-ZYe7W-LE9gnE/pub
[2] https://docs.corda.net/_static/corda-introductory-whitepaper.pdf
[3] https://github.com/ethereum/wiki/wiki/White-Paper
[4] e.g. https://github.com/jpmorganchase/quorum
[5] Vukolić M. (2016). The Quest for Scalable Blockchain Fabric: Proof-of-Work vs. BFT Replication, in: Camenisch J., Kesdoğan D. (eds.) Open Problems in Network Security, iNetSec 2015, Lecture Notes in Computer Science, Vol. 9591, Springer.
[6] https://hyperledger-fabric.readthedocs.io/en/latest/fabric_model.html#consensus
[7] https://github.com/hyperledger/fabric/blob/master/proposals/r1/Next-Consensus-Architecture-Proposal.md
[8] https://docs.corda.net/key-concepts-consensus.html
[9] https://docs.corda.net/key-concepts-notaries.html
[10] http://arxiv.org/abs/1608.00771
[11] http://hyperledger-fabric.readthedocs.io/en/latest/chaincode.html
[12] http://solidity.readthedocs.io/en/latest/
[13] https://docs.corda.net/tutorial-contract.html
[14] http://iang.org/papers/ricardian_contract.html
[15] https://www.ethereum.org/token
[16] https://hyperledger-fabric.readthedocs.io/en/latest/Fabric-FAQ.html#chaincode-smart-contracts-and-digital-assets
[17] https://discourse.corda.net/t/mobile-consumer-payment-experiences-with-corda-on-ledger-cash/966?source_topic_id=962

备注

如果您喜欢本文的内容,欢迎转发给同事,或在社交网络上分享。

本文提供 PDF 文件下载 。更多关于法兰克福学院区块链中心的信息,可访问 官方网站TwitterFacebook

Martin Valenta 是法兰克福学院区块链中心的区块链工程师和顾问,可通过电子邮件 martin.valenta@gmx.net 联系他。Philipp Sandner 教授是法兰克福学院区块链中心的负责人,可通过电子邮件 email@philipp-sandner.de、LinkedIn 账户 https://www.linkedin.com/in/philippsandner/ 联系他,或是在 Twitter 上关注@philip。

查看英文原文: Comparison of Ethereum, Hyperledger Fabric and Corda

转自 https://ift.tt/2H0S8rz

 

The post 对比以太坊、Hyperledger Fabric 和 Corda appeared first on Linuxeden开源社区.

https://ift.tt/2IUGbcC

谷歌 Stackdriver 对 Kubernetes 提供更好的监控支持


Linuxeden 开源社区 --

作者 Hrishikesh Barua     ,译者 无明       

在最近举行的 KubeCon 大会上,谷歌宣布了用于 Kubernetes 的 Stackdriver 的 beta 版。关键特性包括监控的中心可视性,Kubernetes 编配容器的度量指标和日志可以与已有仪表盘中的度量指标一起展示,以及更好的 Prometheus 支持。

Stackdriver 是 Google Cloud Platform 的一款监控产品,可以从服务器和应用程序收集度量指标和日志。一些度量指标已经内置在平台中,而另一些指标则需要在被监控的服务器上安装代理。代理支持自定义,可通过 API 来推送自定义指标。Stackdriver 还可以构建自定义的仪表盘,选择想要查看的指标,并通过标签进行筛选。只要这个指标存在于 Stackdriver 系统中,就可以查看它。Kubernetes 监控使用了同样的机制。

用于 Kubernetes 的 Stackdriver 监控包括 日志收集度量指标收集事件 。来自个体容器的日志,系统组件(如 docker 和 kublelet)的日志,以及系统事件(如 pod 调度),这些东西都被运行在 Kubernetes 节点上的代理推送到 Stackdriver。在 Google Cloud 上运行的 Kubernetes 集群默认启用了日志收集。监控也使用了相同的机制。收集到的监控数据可以与来自系统其他部分的度量指标进行比较查看。Stackdriver 的度量指标按照 资源类型 进行分组,例如 VM 实例和负载均衡器,并且新特性引入了新的资源类型,如 Kubernetes 节点和 pod。监控可以利用现有的 Stackdriver 组件,比如警报和事件。

有一些特性在声明发布之前就已存在,比如容器的 stdout 和 stderr 被发送到 Stackdriver 日志组件,系统度量指标被推送到 Stackdriver 监控组件。然而,也存在一些问题——例如,默认的日志解析模式无法检测到多行事件,如堆栈信息。没有在 Google Cloud 上运行的 Kubernetes 集群可以使用其他的监控选项,比如 HeapsterPrometheus

关于与 Prometheus 的集成问题,Google Cloud 产品经理 J D Velasquez 表示:

我们将会扩展与 Prometheus 的集成,确保在 Kubernetes 监控可用之前,边车输出组件所需的所有钩子都准备就绪。

边车容器 其实是一种辅助容器,与另一个容器运行在同一个 pod 中。在配置 Prometheus 和 GKE 的文档中提到,每个 Kubernetes pod 需要一个单独的服务,不过用来运行边车容器的代码已经可以在 Github 上找到,不过它限制了集群只能运行在 Google Compute Engine(GCE)或 GKE 上。

Velasquez 补充道,“Stackdriver Kubernetes 监控 beta 版现在可以在 Kubernetes Engine alpha 集群中进行测试,一旦 Kubernetes 1.10 发布,就可以在生产集群中使用。”Stackdriver 的数据可以 导出 到 BigQuery、Google Cloud Storage 和 Google PubSub 进行后续分析。

查看英文原文Google’s Stackdriver Monitoring Announces Better Support for Kubernetes Deployments

转自 https://ift.tt/2smDRAi

The post 谷歌 Stackdriver 对 Kubernetes 提供更好的监控支持 appeared first on Linuxeden开源社区.

https://ift.tt/2kwvrmd

Phalcon 3.4.0 发布,PHP 的 C 扩展 Web 框架


Linuxeden 开源社区 --

Phalcon 3.4.0 已发布,Phalcon 是一个开源的 Web 框架,作为 PHP 语言 C 扩展,它提供了更高的性能与更低的资源消耗。

本次更新主要是对 bug 进行了修复,具体如下:

  • Added Phalcon\Mvc\Router::attach to add Route object directly into Router #13326
  • Added the ability to listen request:beforeAuthorizationResolve and request:afterAuthorizationResolve events. This ability enables using custom authorization resolvers #13327
  • Added call event afterFetch in Phalcon\Mvc\Model:refresh #12220
  • Added Phalcon\Http\Response::getReasonPhrase to retrieve the reason phrase from the Statusheader #13314
  • Added Phalcon\Loader::setFileCheckingCallback to set internal file existence resolver #13360
  • Added ability to pass aggregation options for Phalcon\Mvc\Collection::aggregate #12302
  • Added Phalcon\Crypt::setHashAlgo to set the name of hashing algorithm used to the calculating message digest #13379
  • Added Phalcon\Crypt::getHashAlgo to get the name of hashing algorithm used to the calculating message digest #13379
  • Added Phalcon\Crypt::useSigning to set if the calculating message digest must used (NOTE: This feature will be enabled by default in Phalcon 4.0.0) #13379
  • Added Phalcon\Crypt::getAvailableHashAlgos to get a list of registered hashing algorithms suitable for calculating message digest #13379
  • Added Phalcon\Crypt::__construct so now the cipher can be set at object construction and the calculating message digest can be enabled without the need to call setCipher or useSigningexplicitly #13379
  • Added Phalcon\Crypt\Mismatch. Exceptions thrown in Phalcon\Crypt will use this class #13379
  • Added Phalcon\Http\Cookie::setSignKey to set sign key used to generate a message authentication code (eg. message digest)
  • Added Phalcon\Http\Response\Cookies::setSignKey to set sign key used to generate a message authentication code (eg. message digest)
  • Changed Phalcon\Crypt::setCipher so that IV length will be reconfigured during setting the cipher algorithm
  • Changed Phalcon\Crypt::setCipher so that method will throw Phalcon\Crypt\Exception if a cipher is unavailable
  • Fixed regression (#13308) for Phalcon\Debug\Dump::output to correctly work with detailed mode #13315
  • Fixed Phalcon\Mvc\Model\Query\Builder::having and Phalcon\Mvc\Model\Query\Builder::where to correctly merge the bind types #11487
  • Fixed Phalcon\Mvc\Model::setSnapshotData to properly sets the old snapshot
  • Do not throw Exception when superglobal does not exist #13252#13254#12918

下载地址和完整更新内容请查看 GitHub 发布主页

转自 https://ift.tt/2ISsWJN

The post Phalcon 3.4.0 发布,PHP 的 C 扩展 Web 框架 appeared first on Linuxeden开源社区.

https://ift.tt/2L5LJ0v

2018年5月28日星期一

每日文章精选 2018 05 28


KBEngine v1.1.8 发布,分布式游戏服务端引擎


Linuxeden 开源社区 --

分布式游戏服务端引擎 KBEngine v1.1.8  发布了。更新如下:

新增与改善:

  • 更新 API 文档。

BUG 修正:

  • 修正 SDK 生成工具,在 linux 生成的目录不正确 (#595)
  • 修正 SDK 生成工具生成 UnitySDK 时浮点数错误问题。
  • 修正 SDK 生成工具生成 UnitySDK 时 Vector3 错误问题。

详细更新信息点此查看

转自 https://ift.tt/2se5LPD

The post KBEngine v1.1.8 发布,分布式游戏服务端引擎 appeared first on Linuxeden开源社区.

https://ift.tt/2ITciti

Dubbo 2.6.2 发布,分布式 RPC 服务框架


Linuxeden 开源社区 --Dubbo
Dubbo

Dubbo 2.6.2 已发布,这是一个 Snapshot 版本,没有找到详细的更新内容,可先查阅 提交记录 了解详情。

由于 Dubbo 2.6.0 已合并当当网提供的 Dubbox 分支,后续发布的几个版本更多的是在做一些修复工作。

Maven

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.2</version>
</dependency>

源码下载:https://github.com/alibaba/dubbo/releases

转自 https://ift.tt/2LAhq3r

The post Dubbo 2.6.2 发布,分布式 RPC 服务框架 appeared first on Linuxeden开源社区.

https://ift.tt/2J815Vd