蚊章汇 - Ben Everard
type: channel
link: https://linuxcn.bwsl.wang/author/109/
description: Ben Everard
items: LINUX 101
items: 为 Kodi 自制遥控器
items: 五款 Linux 文本编辑器测评
items: 给那些怀旧的游戏骨灰粉丝们：自制一台树莓派街机

LINUX 101
type: item
date: 2015-07-29T16:00:00+08:00
description: 在我们的关于 shell 基础的指导下, 得到一个更灵活,功能更强大且多彩的命令行界面为何要这样做?使得在 shell 提示符下过得更轻松,高效在失去连接后恢复先前的会话Stop pushing around that fiddly rodent!这是我的命令行提示符的设置。对于这个小的终端窗口来说，这或许有些长。但你可以根据你的喜好来调整它。作为一个 Linux 用户, 你可能熟悉 shell (又名为命令行)。 或许你需要时不时的打开终端来完成那些不能在 GUI 下处理的必要任务，抑或是因为你处在一个将窗口铺满桌面的环境中，而 shell 是你与你的 linux 机器交互的主要方式。在上面那些情况下，你可能正在使用你所使用的发行版本自带的 Bash 配置。 尽管对于大多数的任务而言，它足够好了，但它可以更加强大。 在本教程中，我们将向你展示如何使得你的 shell 提供更多有用信息、更加实用且更适合工作。 我们将对提示符进行自定义，让它比默认情况下提供更好的反馈，并向你展示如何使用炫酷的 tmux 工具来管理会话并同时运行多个程序。 并且，为了让眼睛舒服一点，我们还将关注配色方案。那么，进击吧，少女！让提示符更美妙大多数的发行版本配置有一个非常简单的提示符，它们大多向你展示了一些基本信息， 但提示符可以为你提供更多的内容。例如，在 Debian 7 下，默认的提示符是这样的:mike@somebox:~$ 上面的提示符展示出了用户、主机名、当前目录和账户类型符号（假如你切换到 root 账户， $ 会变为 #)。 那这些信息是在哪里存储的呢? 答案是：在 PS1 环境变量中。 假如你键入 echo $PS1， 你将会在这个命令的输出字符串的最后有如下的字符：\u@\h:\w$ 这看起来有一些丑陋，并在瞥见它的第一眼时，你可能会开始尖叫，认为它是令人恐惧的正则表达式，但我们不打算用这些复杂的字符来煎熬我们的大脑。这不是正则表达式，这里的斜杠是转义序列，它告诉提示符进行一些特别的处理。 例如，上面的 u 部分，告诉提示符展示用户名， 而 w 则展示工作路径.下面是一些你可以在提示符中用到的字符的列表:d 当前的日期h 主机名n 代表换行的字符A 当前的时间 (HH:MM)u 当前的用户w (小写) 整个工作路径的全称W (大写) 工作路径的简短名称$ 一个提示符号，对于 root 用户为 # 号! 当前命令在 shell 历史记录中的序号下面解释 w 和 W 选项的区别: 对于前者，你将看到你所在的工作路径的完整地址，（例如 /usr/local/bin），而对于后者， 它则只显示 bin 这一部分。现在，我们该怎样改变提示符呢? 你需要更改 PS1 环境变量的内容，试试下面这个：export PS1="I am \u and it is \A $" 现在，你的提示符将会像下面这样：I am mike and it is 11:26 $ 从这个例子出发，你就可以按照你的想法来试验一下上面列出的其他转义序列。 但等等 – 当你登出后，你的这些努力都将消失，因为在你每次打开终端时，PS1 环境变量的值都会被重置。解决这个问题的最简单方式是打开 .bashrc 配置文件（在你的家目录下） 并在这个文件的最下方添加上完整的 export 命令。在每次你启动一个新的 shell 会话时，这个 .bashrc 会被 Bash 读取, 所以你的加强的提示符就可以一直出现。你还可以使用额外的颜色来装扮提示符。刚开始，这将有点棘手，因为你必须使用一些相当奇怪的转义序列，但结果是非常漂亮的。 将下面的字符添加到你的 PS1字符串中的某个位置，最终这将把文本变为红色：\[\e[31m\] 你可以将这里的 31 更改为其他的数字来获得不同的颜色:30 黑色32 绿色33 黄色34 蓝色35 洋红色36 青色37 白色所以，让我们使用先前看到的转义序列和颜色来创造一个提示符，以此来结束这一小节的内容。深吸一口气,弯曲你的手指，然后键入下面这只“野兽”：export PS1="(\!) \[\e[31m\] \[\A\] \[\e[32m\]\u@\h \[\e[34m\]\w \[\e[30m\]$" 上面的命令提供了一个 Bash 命令历史序号、当前的时间、彩色的用户或主机名组合、以及工作路径。假如你“野心勃勃”，利用一些惊人的组合，你还可以更改提示符的背景色和前景色。非常有用的 Arch wiki 有一个关于颜色代码的完整列表：http://tinyurl.com/3gvz4ec。Shell 精要假如你是一个彻底的 Linux 新手并第一次阅读这份杂志，或许你会发觉阅读这些教程有些吃力。 所以这里有一些基础知识来让你熟悉一些 shell。 通常在你…

为 Kodi 自制遥控器
type: item
date: 2015-07-24T17:11:00+08:00
description: 通过运行在 Android 手机上的自制遥控器来控制你的家庭媒体播放器。Kodi 是一款很优秀的软件，能够将几乎所有电脑变身成媒体中心。它可以播放音乐和视频，显示图片，甚至还能显示天气预报。为了在配置成家庭影院后方便使用，你可以通过手机 app 访问运行在连接到 Wi-Fi 的 XBMC 机器上的服务来控制它。可以找到很多这种工具，几乎覆盖所有智能手机系统。XBMCKodi 原名叫做 XBMC，在你阅读这篇文章的时候，XBMC 已经成为历史。因为法律原因（因为名字 XBMC 或 X-Box Media Center 里引用了不再支持的过时硬件）项目组决定使用新的名字 Kodi。不过，除了名字，其他的都会保持原样。或者说除开通常新版本中所期待的大量新改进。这一般不会影响到遥控软件，它应该能在已有的 XBMC 系统和新的 Kodi 系统上都能工作。我们目前已经配置好了一个用于播放音乐的 Kodi 系统，不过我们找到的所有 Kodi 遥控没一个好用的，特别是和媒体中心连接的电视没打开的时候。它们都有点太复杂了，集成了太多功能在手机的小屏幕上。我们希望能有这样的系统，从最开始就是设计成只用于访问音乐库和电台插件，所以我们决定自己实现一个。它不需要用到 Kodi 的所有功能，因为除了音乐以外的任务，我们可以简单地切换使用通用的 Kodi 遥控。我们的测试系统是一个刷了 RaspBMC 发行版的树莓派，但是我们要做的工具并不受限于树莓派或Kodi那个发行版，它应该可以匹配任何安装了相关插件的基于 Linux 的 Kodi 系统。首先，遥控程序需要一个用户界面。大多数 Kodi 遥控程序都是独立的 app。不过对于我们要做的这个音乐控制程序，我们希望用户可以不用安装任何东西就可以使用。显然我们需要使用网页界面。Kodi 本身自带网页服务器，但是为了获得更多权限，我们还是使用了独立的网页框架。在同一台电脑上跑两个以上网页服务器没有问题，只不过它们不能使用相同的端口。有几个网页框架可以使用。而我们选用 Bottle 是因为它是一个简单高效的框架，而且我们也确实用不到任何高级功能。Bottle 是一个 Python 模块，所以这也将是我们编写服务器模块的语言。你应该能在软件包管理器里找到 Bottle。在基于 Debian 的系统（包括 RaspBMC）里，你可以通过下面的命令安装：sudo apt-get install python-bottle 遥控程序实际上只是连接用户和系统的中间层。Bottle 提供了和用户交互的方式，而我们将通过 JSON API 来和 Kodi 交互。这样可以让我们通过发送 JSON 格式消息的方式去控制媒体播放器。我们将用到一个叫做 xbmcjson 的简单 XBMC JASON API 封装。足够用来发送控制请求，而不需要关心实际的 JSON 格式以及和服务器通讯的无聊事。它没有包含在 PIP 包管理中，所以你得直接从 GitHub 安装：git clone https://github.com/jcsaaddupuy/python-xbmc.git cd python-xbmc sudo python setup.py install 万事俱备，只欠代码。先从 Bottle 开始我们程序的基本结构：from xbmcjson import XBMC from bottle import route, run, template, redirect, static_file, request import os xbmc = XBMC("http://192.168.0.5/jsonrpc", "xbmc", "xbmc") @route('/hello/<name>') def index(name): return template(' Hello {{name}}! ', name=name) run(host="0.0.0.0", port=8000) 这样程序将连接到 Kodi（不过实际上用不到）；然后 Bottle 会开始提供网站服务。在我们的代码里，它将监听主机 0.0.0.0（意味着允许所有主机连接）的端口 8000。它只设定了一个站点，就是 /hello/XXXX，这里的 XXXX 可以是任何内容。不管 XXXX 是什么都将作为参数名传递给 index()。然后再替换进去 HTML 网页模版。你可以先试着把上面内容写到一个文件（我们取的名字是 remote.py），然后用下面的命令启动：python remote.py 然后你可以在浏览器里访问 localhost:8000/hello/world 看看模版生效的效果。@route() 用来设定网页服务器的路径，而函数 index() 会返回该…

五款 Linux 文本编辑器测评
type: item
date: 2015-05-25T22:34:00+08:00
description: Mayank Sharma 测试了5款不仅仅是能处理文字的超强文本编辑器。如果你使用Linux已经有很长一段时间，你知道，不管是编辑一款app的配置文件，还是修改shell脚本，或者编写/查看代码，类似LibreOffice的工具并不适合。尽管字面上看起来都是一样，但是你并不需要一个文字处理器来完成这些任务；你需要的是一个文本编辑器。在这个测评中，我们将着眼于5款更能胜任繁重文本工作的轻量级的文本编辑器。他们支持语法高亮，像拼写检查一样轻松处理代码缩进。你可以像你复制/粘贴文本那样容易地使用它们记录宏以及管理代码片段。得益于它们的插件，使得它们足以抗衡其它的以文本为中心的应用程序，一些简单的文本编辑器甚至超出了它们的设计目标。它们能胜任一个源代码编辑器的任务，甚至就是一个集成开发环境。Emacs和Vim是两款最流行和强大的纯文本编辑器。但是，由于一些原因，我们在这个测评中并没有包括它们。首先，如果你使用它们中的任何一个，那么恭喜你：你不需要更换了。其次，它们都有陡峭的学习曲线，尤其是那些熟悉了桌面环境的用户：他们很更愿意投入其他有图形界面的文本编辑器。目录:GeditURL:http://projects.gnome.org/gedit/版本: 3.10许可证: GPLGnome的默认文本编辑器准备好挑战了吗?KateURL: www.kate-editor.org版本: 3.11许可证: LGPL/GPLKate会挑战命运吗?Sublime TextURL: www.sublimetext.com版本: 2.0.2许可证: Proprietary在自由的土地上的带有黄金般的心脏的专利软件。UltraEditURL: www.ultraedit.com版本: 4.1.0.4许可证: Proprietary足够证明它的价值了吗?jEditURL: www.jedit.org版本: 5.1.0许可证: GPL基于Java的编辑器是否会毁掉其他编辑器的世界?关键标准除了Gedit和jEdit以外的所有工具，都是通过其推荐的安装方法安装在Fedora和Ubuntu上。前者已经兼容默认的Gnome桌面，后者仍然固执地反对安装在Fedora上。由于这些是相对简单的应用程序，他们没有复杂的依赖，唯一例外的是jEdit，它要求要有Oracle Java。得益于Gnome和KDE持续的努力，所有编辑器无论在哪个桌面上的外观看起来很好，功能也很正常。这不仅是作为评价的标准，也意味着你不再受制于你的桌面环境兼容的工具。除了它们独特的功能，我们也对所有候选者测试了常规的文本编辑功能。然而，它们并没有被设计为模仿现代字处理器的所有功能，我们也不以此评判。编程语言支持UltraEdit 能进行语法高亮、代码折叠以及拥有项目管理的能力。也有一个罗列源文件中所有函数的功能列表，但并不适用于我们测试的任何代码文件。UltraEdit也支持HTML5，有一个能添加常用HTML标记的HTML工具栏。即使Gnome的默认文本编辑器Gedit，也有几个面向编码的功能特性，例如括号匹配、自动缩进以及为包括C, C++, Java, HTML, XML, Python, Perl, 以及许多其它编程语言进行语法高亮。如果你需要更多的编程辅助功能，看一下Sublime和Kate。Sublime支持多种编程语言并且能为(那些流行的)C#, D, Dylan, Erlang, Groovy, Haskell, Lisp, Lua, MATLAB, OCaml, R, 甚至 SQL 进行语法高亮。如果这还不够，你可以下载插件以支持更多的语言。另外，它的语法高亮功能提供了多个可定制选项。这个应用程序也会进行括号匹配，确保代码段都正确，Sublime的自动补全功能也支持用户创建的变量。就像Komodo IDE，Sublime也可以显示一个全部源代码的滚动预览图，这对于长代码文件导航和在文件中的不同部分跳转很方便。Sublime最好的功能之一就是能在编辑器内部运行特定语言，例如C++, Python, Ruby等的代码，当然假设在你的电脑上安装有编译器以及其它系统工具。省时间而且不用再开终端.你也可以用插件在Kate中开启构建系统功能。另外，你可以为GDB调试器添加一个简单的前端。Kate能和Git，Subversion以及Mercurial版本控制系统一起工作，也提供了一些项目管理的功能。除了能为超过180种语言进行语法高亮，它支持所有的这些辅助功能，例如括号匹配，自动补全和自动缩进。它也支持代码折叠，甚至在一个程序中折叠函数。唯一的遗憾的是jEdit，它声称自己是一个程序员的文本编辑器，但它缺少其他的基本功能，例如代码折叠，它甚至不能提示或者补全函数.评分：Gedit：3/5Kat…

给那些怀旧的游戏骨灰粉丝们：自制一台树莓派街机
type: item
date: 2014-11-13T23:35:00+08:00
description: 利用当代神奇设备来重温80年代的黄金记忆。你需要以下硬件一台树莓派以及一张4GBSD卡一台支持HDMI的LCD显示屏游戏手柄或者...一个JAMMA街机游戏机外壳机箱J-Pac或者I-Pac80年代有太多难忘的记忆；冷战结束，Quatro碳酸饮料，Korg Polysix合成器，以及Commodore 64家用电脑。但对于某些年轻人来说，这些都没有街机游戏机那样有说服力，或那种甜蜜的叛逆。笼罩着烟味和此起彼伏的8比特音效，它们就是在挤出来的时间里去探索的洞穴：50分钱和一个游戏币能让你消耗整个午餐时间，在这些游戏上磨练着你的技能：小蜜蜂，城市大金刚，蜈蚣，行星射击，吃豆小姐，火凤凰，R-Rype，大金刚，雷霆计划，铁手套，街头霸王，超越赛车，防卫者争战...噢，这个列表太长了。这些游戏，以及玩这些游戏的街机机器，仍然像30年前那样有吸引力。不像年轻时候那样，现在可以不用装一兜零钱就能玩了，最终让你超越那些有钱的孩子以及他们无休止的‘继续游戏’。所以是时候打造一个你自己的基于Linux的街机游戏机了，然后挑战一下过去的最高分。我们将会包括所有的步骤，来将一个便宜的街机游戏机器外壳变成一台Linux驱动的多平台复古游戏系统。但是这并不意味着你就一定要搭建一个同样的系统。比如说，你可以放弃那个又大又重还有潜在致癌性外壳的箱子本身，而是将内部控制核心装进一个旧游戏主机或同等大小的盒子里。或者说，你也可以简单地放弃小巧的树莓派，而将系统的大脑换成一台更强劲的Linux主机。举个例子，它可以作为运行SteamOS的一个理想平台，用来玩那些更优秀的现代街机游戏。在之后的几个页面里，我们将搭建一台基于树莓派的街机游戏机，你应该也能从其中发现很多点子应用到你自己的项目上，即使它们和我们这个项目不太一样。然后因为我们是用无比强大的MAME来做这件事情，你几乎可以让它在任意平台上运行。我们是在B+型号出来以前完成的这个项目。它应该也可以同样工作在更新的主板上，你应该不用一个带电源的USB Hub也可以声明强调一下，我们捣腾的电子器件可能会让你受到电击。请确保你做的任何改动都是有资质的电子工程师帮你检查过的。我们也不会深入讨论如何获取游戏，但是有很多合法的资源，例如基于MAME模拟器的老游戏，以及较新的商业游戏。第一步：街机机柜街机机柜本身就是最大的挑战。我们在eBay上淘了个二手的90年代初的双人泡泡龙游戏机。然后花了£220装在一台旅行车后面送过来。类似这种机柜的价格并不确定。我们看到过很多在£100以内的。而另一方面，还有很多人愿意花数千块钱去买原版侧面贴纸完整的机器。决定买一个街机机柜，主要有两个考虑。第一个是它的体积：这东西又大又重。又占地方，而且需要至少两个人才能搬动。如果你不缺钱的话，还可以买DIY机柜或者全新的小一点的，例如适合摆在桌子上的那种。然后，酒柜也能很合适。这种机柜可能很便宜，但是他们都很重。不要一个人去搬。一些更古老的机器可能还会需要一点小关怀，例如重新喷个漆以及一些修理工作除了获得更加真实的游戏体验以外，购买原版的街机机柜的一个绝佳理由是可以使用原版的控制器。从eBay上买到的大多数机器都支持两个人同时玩，有两个摇杆以及每个玩家各自的一些按钮，再加上玩家一和玩家二的选择按钮。为了兼容更多游戏，我们建议您找一台每个玩家都有6个按键的型号，这个是通用配置。也许你还想看看支持超过两位玩家的控制台，或者有空间放其他游戏控制器的，比如说街机轨迹球（类似疯狂弹珠这种游戏需要的），或者一个旋钮（打砖块）。这些待会都可以轻松装上去，因为有现成的现代USB设备。控制器是第二考虑的，而且我们认为是最重要的，因为要通过它把你的摇动和拍打转变成游戏里的动作。当你准备买一个机柜时需要考虑一种叫JAMMA的东西，它是日本娱乐机械制造商协会（Japan Amusement Machinery Manufacturers Association）的缩写。JAMMA是街机游戏机里的行业标准，定义了包含游戏芯片的电路板和游戏控制器的连接方式，以及投币机制。它是一个连接两个玩家的摇杆和按钮的所有线缆的接口电路，把它们统一到一个标准的连接头。JAMMA就是这个连接头的大小以及引脚定义，这就意味着不管你安装的主板是什么，按钮和控制器都将会连接到相同功能接口，所以街机的主人只需要再更换下机柜上的外观图片，就可以招揽新玩家了。但是首先，提醒一下：JAMMA连接头上带有12V电压供电，通常由大多数街机里都有的电源模块供给。为了避免意外短路或是不小心掉个螺丝刀什么的造成损坏，我们完全切断了这个供电。在本教程后面的任何阶段，我们也不会用到这个连接头上的任何电源脚。第二步：J-PAC有一点非常方便，你可以买到这样一种设备，连接街机机柜里的JAMMA接头和电脑的USB端口，将…