Linux中国
1.73K subscribers
777 photos
6.34K links
Linux 中国官方 Telegram 频道
Download Telegram
使用 AppImageLauncher 轻松运行和集成 AppImage 文件

你有没有下载过 AppImage 文件,而你不知道如何使用它?或许你可能知道如何使用它,但是你每次要运行它时必须要进入到下载了该 .AppImage 的文件夹中来运行它,或者手动为其创建启动程序。Media

via https://linux.cn/article-9655-1.html
如何创建适合移动设备的文档

帮助用户在智能手机或平板上快速轻松地找到他们所需的信息。Media

via https://linux.cn/article-9656-1.html
Linux 局域网路由新手指南:第 1 部分

现在我们继续深入学习 Linux 中的 IPv4 路由的基础知识。Media

via https://linux.cn/article-9657-1.html
使用交互式 shell 来增强你的 Python

本文将介绍 Fedora 软件包集合中提供的一些有用的 Python shell 来简化开发。Media

via https://linux.cn/article-9658-1.html
如何使用 Ansible 打补丁以及安装应用

使用 Ansible IT 自动化引擎节省更新的时间。Media

via https://linux.cn/article-9659-1.html
如何使用 Ansible 打补丁以及安装应用

使用 Ansible IT 自动化引擎节省更新的时间。Media你有没有想过,如何打补丁、重启系统,然后继续工作?如果你的回答是肯定的,那就需要了解一下 Ansible 了。它是一个配置管理工具,对于一些复杂的有时候需要几个小时才能完成的系统管理任务,又或者对安全性有比较高要求的时候,使用 Ansible 能够大大简化工作流程。以我作为系统管理员的经验,打补丁是一项最有难度的工作。每次遇到公共漏洞批露Common Vulnearbilities and Exposure(CVE)通知或者信息保障漏洞预警Information Assurance Vulnerability Alert(IAVA)时都必须要高度关注安全漏洞,否则安全部门将会严肃追究自己的责任。使用 Ansible 可以通过运行封装模块以缩短打补丁的时间,下面以 yum 模块更新系统为例,使用 Ansible 可以执行安装、更新、删除、从其它地方安装(例如持续集成/持续开发中的 rpmbuild)。以下是系统更新的任务:
 - name: update the system yum: name: "*" state: latest
在第一行,我们给这个任务命名,这样可以清楚 Ansible 的工作内容。第二行表示使用 yum 模块在CentOS虚拟机中执行更新操作。第三行 name: "*" 表示更新所有程序。最后一行 state: latest 表示更新到最新的 RPM。系统更新结束之后,需要重新启动并重新连接:
 - name: restart system to reboot to newest kernel shell: "sleep 5 && reboot" async: 1 poll: 0 - name: wait for 10 seconds pause: seconds: 10 - name: wait for the system to reboot wait_for_connection: connect_timeout: 20 sleep: 5 delay: 5 timeout: 60 - name: install epel-release yum: name: epel-release state: latest
shell 模块中的命令让系统在 5 秒休眠之后重新启动,我们使用 sleep 来保持连接不断开,使用 async 设定最大等待时长以避免发生超时,poll 设置为 0 表示直接执行不需要等待执行结果。暂停 10 秒钟以等待虚拟机恢复,使用 wait_for_connection 在虚拟机恢复连接后尽快连接。随后由 install epel-release 任务检查 RPM 的安装情况。你可以对这个剧本执行多次来验证它的幂等性,唯一会显示造成影响的是重启操作,因为我们使用了 shell 模块。如果不想造成实际的影响,可以在使用 shell 模块的时候 changed_when: False。现在我们已经知道如何对系统进行更新、重启虚拟机、重新连接、安装 RPM 包。下面我们通过 Ansible Lightbulb 来安装 NGINX:
 - name: Ensure nginx packages are present yum: name: nginx, python-pip, python-devel, devel state: present notify: restart-nginx-service - name: Ensure uwsgi package is present pip: name: uwsgi state: present notify: restart-nginx-service - name: Ensure latest default.conf is present template: src: templates/nginx.conf.j2 dest: /etc/nginx/nginx.conf backup: yes notify: restart-nginx-service - name: Ensure latest index.html is present template: src: templates/index.html.j2 dest: /usr/share/nginx/html/index.html - name: Ensure nginx service is started and enabled service: name: nginx state: started enabled: yes - name: Ensure proper response from localhost can be received uri: url: "http://localhost:80/" return_content: yes register: response until: 'nginx_test_message in response.content' retries: 10 delay: 1
以及用来重启 nginx 服务的操作文件:
# 安装 nginx 的操作文件 - name: restart-nginx-service service: name: nginx state: restarted
在这个角色里,我们使用 RPM 安装了 nginx、python-pip、python-devel、devel,用 PIP 安装了 uwsgi,接下来使用 template 模块复制 nginx.conf 和 index.html 以显示页面,并确保服务在系统启动时启动。然后就可以使用 uri 模块检查到页面的连接了。这个是一个系统更新、系统重启、安装 RPM 包的剧本示例,后续可以继续安装 nginx,当然这里可以替换成任何你想要的角色和应用程序。
 - hosts: all roles: - centos-update - nginx-simple
 这只是关于如何更新系统、重启以及后续工作的示例。简单起见,我只添加了不带变量的包,当你在操作大量主机的时候,你就需要修改其中的一些设置了:async & pollserialforks这是由于在生产环境中如果你想逐一更新每一台主机的系统,你需要花相当一段时间去等待主机重启才能够继续下去。via: https://opensource.com/article/18/3/ansible-patch-systems作者:Jonathan Lozada De La Matta 译者:HankChow 校对:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media

via https://linux.cn/article-9659-1.html?utm_source=rss&utm_medium=rss
如何改善应用程序在 Linux 中的启动时间

大多数 Linux 发行版在默认配置下已经足够快了。但是,我们仍然可以借助一些额外的应用程序和方法让它们启动更快一点。Media

via https://linux.cn/article-9660-1.html
一个可以更好地调试的 Perl 模块

这个简单优雅的模块可以让你包含调试或仅用于开发环境的代码,而在产品环境中隐藏它们。Media

via https://linux.cn/article-9663-1.html
一个可以更好地调试的 Perl 模块

这个简单优雅的模块可以让你包含调试或仅用于开发环境的代码,而在产品环境中隐藏它们。Media仅用于调试或开发调整时的 Perl 代码块有时会很有用。这很好,但是这样的代码块可能会对性能产生很大的影响, 尤其是在运行时才决定是否执行它。Curtis "Ovid" Poe 最近编写了一个可以帮助解决这个问题的模块:Keyword:MediaEVELOPMENT。该模块利用 Keyword::Simple 和 Perl 5.012 中引入的可插入关键字架构来创建了新的关键字:DEVELOPMENT。它使用 PERL_KEYWORD_DEVELOPMENT 环境变量的值来确定是否要执行一段代码。使用它不能更容易了:
use Keyword:MediaEVELOPMENT;sub doing_my_big_loop { my $self = shift; DEVELOPMENT { # insert expensive debugging code here! }}
在编译时,DEVELOPMENT 块内的代码已经被优化掉了,根本就不存在。你看到好处了么?在沙盒中将 PERL_KEYWORD_DEVELOPMENT 环境变量设置为 true,在生产环境设为 false,并且可以将有价值的调试工具提交到你的代码库中,在你需要的时候随时可用。在缺乏高级配置管理的系统中,你也可以使用此模块来处理生产和开发或测试环境之间的设置差异:
sub connect_to_my_database { my $dsn = "dbi:mysql:productiondb"; my $user = "db_user"; my $pass = "db_pass"; DEVELOPMENT { # Override some of that config information $dsn = "dbi:mysql:developmentdb"; } my $db_handle = DBI->connect($dsn, $user, $pass);}
稍后对此代码片段的增强使你能在其他地方,比如 YAML 或 INI 中读取配置信息,但我希望您能在此看到该工具。我查看了关键字 Keyword:MediaEVELOPMENT 的源码,花了大约半小时研究,“天哪,我为什么没有想到这个?”安装 Keyword::Simple 后,Curtis 给我们的模块就非常简单了。这是我长期以来在自己的编码实践中所需要的一个优雅解决方案。via: https://opensource.com/article/18/4/perl-module-debugging-code作者:Ruth Holloway 选题:lujun9972 译者:geekpi 校对:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media

via https://linux.cn/article-9663-1.html?utm_source=rss&utm_medium=rss
Jupyter Notebooks 入门

通过 Jupyter 使用实时代码、方程式和可视化及文本创建交互式的共享笔记本。Media

via https://linux.cn/article-9664-1.html
如何编译 Linux 内核

Jack 将带你在 Ubuntu 16.04 服务器上走过内核编译之旅。Media

via https://linux.cn/article-9665-1.html
Bootiso :让你安全地创建 USB 启动设备

我发现了另一个可以安全创建 USB 引导设备的工具 Bootiso 。它实际上是一个 BASH 脚本,但真的很智能!Media

via https://linux.cn/article-9667-1.html
为什么建设一个社区值得额外的努力

建立 NethServer 社区是有风险的。但是我们从这些激情的人们所带来的力量当中学习到了很多。Media

via https://linux.cn/article-9668-1.html
HeRM's :一个命令行食谱管理器

今天,我介绍 HeRM's,这是一个基于 Haskell 的命令行食谱管理器,能为你的美食食谱做笔记。Media

via https://linux.cn/article-9669-1.html
程序员的学习之路

2016 年 10 月,当我从微软离职时,我已经在微软工作了近 21 年,在业界也快 35 年了。我花了一些时间反思我这些年来学到的东西,这些文字是那篇帖子稍加修改后得到。请见谅,文章有一点长。Media

via https://linux.cn/article-9670-1.html
开始 Vagrant 之旅

用管理虚拟机和容器的工具 Vagrant 清理你的开发环境和依赖。Media

via https://linux.cn/article-9671-1.html
打造连接虚拟世界和真实世界的网关:首个 ERC875 钱包发布

这意味着利用区块链技术提供真实世界内的生活服务有了强有力的基础技术平台,基于区块链而展开的种种想象成为了可能Media

via https://linux.cn/article-9672-1.html
打造连接虚拟世界和真实世界的网关:首个 ERC875 钱包发布

Media新加坡本地时间 5月 23 日,StormBird 公司正式发布了其筹备已久的产品 —— AlphaWallet 1.0 版。这是目前市面上第一款直接支持不可替代性 Token 的钱包,也是一个可以连接虚拟世界和真实世界的网关,意味着利用区块链技术提供真实世界内的生活服务有了强有力的基础技术平台,基于区块链而展开的种种想象成为了可能。 在目前区块链技术的格局中,大量 Token 广泛使用的 ERC20 协议,可以做到接近无限拆分,比如数字货币,其数额完全不必一定是自然数,像是 0.5 元、0.003 元都是逻辑合理的存在,但是 ERC20 协议无法做到代表现实世界中无法拆分的、独一无二的资产。 事实上真实世界中绝大部分物理存在或虚拟存在的元素在逻辑上是无法拆分的,比如一支手机无法拆解成 2 个(半支手机)或者 10 个(0.1 支手机),一张门票没法分成 5 个(0.2 张门票)。假设一张门票要以 Token 的形式流通,它必然要有一些个性化的额外数据来作辅助说明,比如锚定某场演唱会,某个座位、以及这张票所有人是谁,发行方是谁。其次 ERC20 是不能实现更复杂的功能的,现有的打包、转帐流程比较复杂,如何实现让小白用户像使用支付宝、微信钱包那样轻松,且不必考虑打包时间、如何支付 Gas?这就是 ERC875 所做的,而首个支持 ERC875 的钱包 AlphaWallet 就是完成这些操作的载体。在 AlphaWallet 中可以轻松实现将真实世界的物品和资产,对应为区块链上的不可变通证数字资产,这就给线下服务的链上操作提供了可能性和更多想象。相信随着 ERC875 协议的发展和普及,越来越多的传统生活服务可以通过区块链来提供。比如最近火热的世界杯门票、就可以获得完善的解决方案,并解决过去关于黄牛、假票等顽疾。AlphaWallet 也以此为使命,通过推动Token化的发展,让世界变得更开放和公平。ERC875 协议及 AlphaWallet 的研发团队来自新加坡,主要的技术开发人员张韡武,曾在澳大利亚联邦银行(澳大利亚最大的金融机构)担任区块链构架师,主导了 12 个区块链项目,拥有超过 5 年的区块链开发经验,从 alt 货币设计到交易算法等,并任职 R3 全球构架师工作组,在区块链技术领域有着丰富的经验。MediaAlphaWallet 应用稍后会公开源代码,在经过安全公司 Sigma Prime 代码审计后,源代码将托管在 GitHub 平台,方便所有对项目感兴趣的伙伴们一起监督协作。目前官方网站 https://awallet.io  同时提供 Android 版和 iOS 版的下载链接,在官方社区 https://community.awallet.io  可以获得更多交流和服务支持。Google Play下载地址:https://play.google.com/store/apps/details?id=io.stormbird.walletiOS版下载地址:https://itunes.apple.com/us/app/alphawallet/id1358230430?mt=8Android APK 直接下载:https://awallet.io/apk欢迎加入 t.me/AlphaWalletGroup 电报群交流讨论。Media

via https://linux.cn/article-9672-1.html?utm_source=rss&utm_medium=rss
LikeCoin,一种给开放式许可的内容创作者的加密货币

在共创协议下授权作品和挣钱这二者不再是一种争议。Media

via https://linux.cn/article-9674-1.html
Linux 局域网路由新手指南:第 2 部分

今天我们继续学习更精彩的内容:局域网路由器。Media

via https://linux.cn/article-9675-1.html
基于 UAI-Train 平台的分布式训练

在 UAI-Train 平台中可以非常方便的开展分布式计算,提高效率、压缩训练时间。最后通过 CIFAR-10 案例解析在 UAI-Train 平台上进行训练所需作出的修改,并在 UAI-Train 平台上进行分布式训练。Media

via https://linux.cn/article-9673-1.html