Skip to main content

Posts

Showing posts from December 30, 2018

清华毕业计算机教授遭持枪劫车!靠 “贪心算法” 追回秒杀美国警察

【新智元导读】 不久前,圣母大学计算机系终身副教授一家人遭两名劫匪抢去汽车,在不到 24 小时之内,这名教授和博士生二人通过手机发动应用程序和计算机算法中的 “贪心算法”,成功将车找回。 千万别惹计算机教授。 最近,圣母大学计算机系终身副教授,博士生导师,并兼任电子系终身副教授史弋宇经历了一件惊心动魄的事: 12 月中下旬的周末,史教授原本计划开车带一家人由芝加哥 O’Hare 经纽约前往百慕大的度假旅行,在途中一座加油站停车检查车胎时,遇到了两名持枪劫匪。劫匪抢走了史教授的钱包和 Mazda CX-9 汽车,让这次旅行泡汤。 转折的地方在于,史教授利用马自达的手机发动应用程序(Mazda Mobile Start,MMS),成功定位到车辆的相对位置,并用计算机算法中最直接的 greedy approach(贪心算法),将车辆位置搜寻了出来。最终,在 被抢不到 24 小时,史教授成功把车追回 。 连现场的警察都感叹: “They shouldn’t have messed up with computer science professors!” 被抢:两个劫匪持枪,抢走所有行李! 按原计划,史教授一家人开车从印第安纳的 South Bend 出发,大约中部时间 12:00 到达芝加哥中国城,当时发现 Mazda CX-9 提示胎压异常,因此史教授决定午饭后开车前往中国城附近的一家 Shell 加油站给轮胎充气。 当时加油站里的车并不少,而且也有些人在店里买东西,没有任何危险的征兆。 由于加油站的气泵非常简陋,需要投币 4 个 quarter 才能使用,而且并没有提供胎压读数,于是史教授决定换个加油站试试,但上车后他想起来似乎右前轮的气门帽并没有拧紧,打算下车拧紧。 刚下车,有两个身材不高大约 20 来岁的黑人从后面的一辆车上下来并靠近史教授,其中一个直接用一把枪指着他低声说 “See the gun? Give me your wallet. Give me your key.” 并且反复重复说,神情紧张。另一个劫匪则钻进了驾驶室让所有人下车。 史教授考虑到车里还有孕妇和小孩,为了安全起见,就很配合的把钱包递给了劫匪,劫匪打开后从里面拿出了所有的现金。 劫匪随后把钱包还给史教授,又让他赶紧把车钥匙交给劫匪。与此同时,车里

McFly:利用神经网络为 Bash 提供历史命令搜索功能 | Linux 中国

假如你在命令行模式下渡过了很长时间,那么你必定使用过或者听说过 BASH 的  反向搜索  功能,在 Bash 中执行反向搜索功能的快捷键是  Ctrl+r 。通过使用这个特性,我们可以找到我们执行过的命令而无需再次输入它们。当然,你可以使用上下键来搜索你的 bash 命令记录,但使用  Ctrl+r  快捷键可以让这个搜索过程更简单快速。今天我找寻到了 Bash 历史命令搜索特性  Ctrl+r  的一个替代品,它就是 McFly。McFly 是一个使用 Rust 编程语言写就的简洁工具,自带一个智能的搜索引擎,用来替换默认的  Ctrl+r  这个 Bash 历史命令搜索功能。 McFly 提供的命令建议都是通过一个小巧的  神经网络  来实时排序给出的。 McFly 重新绑定了  Ctrl+r  快捷键,可以从你的 Bash 历史命令中找到所有最近执行过的命令。它通过追溯下面的信息来增强你的 shell 历史命令搜索特性: ◈ 命令结束状态 ◈ 当你运行命令时的时间戳 ◈ 以及你运行命令的执行目录 它将所有追溯的信息保存在一个 SQLite 数据库中。由于它追溯了命令的历史结束状态,所以你可以很轻易地忽略掉失败的命令。听起来很酷,对吧? 在给出一个命令建议时,它将考虑如下因素: ◈ 你在哪个目录执行的这个命令,将来你很有可能在相同的目录重复这个命令 ◈ 在你执行这个命令之前,执行过什么命令 ◈ 你执行这个命令有多频繁 ◈ 你最后执行该命令的时间 ◈ 你是否在 McFly 中选择过这个命令 ◈ 以及这个命令的历史结束状态。因为你很有可能不会去执行失败过的命令,对吧? McFly 维护着你的默认 Bash 历史文件,所以你可以随时停止使用它。McFly 也并不只服务于 BASH, 它也可以扩展到其他 shell 程序。 安装 McFly 在 Linux 中,McFly 可以使用 Linuxbrew 来安装。如若你还没有安装过 Linuxbrew,那么你可以参考下面的这个链接。(LCTT 译注:从其  GitHub 主页 [1] 了解到也可以下载其二进制来使用。) ◈  Linuxbrew:一个用于 Linux 和 Mac OS X 的通用包管理 [2] 一旦安装好了 Linuxbrew,运行下面的命令来安装 McFly: $ b

用 PGP 保护代码完整性(五):将子密钥移到一个硬件设备中 | Linux 中国

在这个系列教程中,将为你提供使用 PGP 和保护你的私钥的最佳体验。 在本系列教程中,我们将提供一个使用 PGP 的实用指南。如果你没有看过前面的文章,你可以通过下面的链接去查看。在这篇文章中,我们将继续讨论如何保护你的密钥,谈一谈将你的子密钥移到一个专门的硬件设备中的一些技巧。 ◈  第一部分:基本概念和工具 [1] ◈  第二部分:生成你的主密钥 [2] ◈  第三部分:生成 PGP 子密钥 [3] ◈  第四部分:将主密钥移到离线存储中 [4] 清单 ◈ 取得一个 GnuPG 兼容的硬件设备(必要) ◈ 配置 GnuPG 在设备上工作(必要) ◈ 设置用户和管理员的 PIN(必要) ◈ 移动子密钥到设备中(必要) 考虑事项 虽然现在主密钥已经不用担心泄露或失窃了,但子密钥仍然在你的家目录中。任何得到它的人都能够解密你的通讯或假冒你的签名(如果他们知道密钥的密码)。并且,每次执行一个 GnuPG 操作都要将密钥加载到操作系统内存中,这将使一些更高级的恶意软件有机会得到你的密钥(想想 Meltdown 和 Spectre)。 完全保护密钥的最好方式就是,将它移到一个专门的硬件设备中,这种硬件设备是一个可操作的智能卡。 智能卡的好处 一个智能卡包含一个加密芯片,它能够存储私钥,并且直接在智能卡内部执行秘密操作。因为密钥内容从来没有离开过智能卡,计算机操作系统并不能检索你插入的智能卡上的私钥。这与前面用于备份目的的加密 USB 存储是不同的 —— 虽然 USB 设备也是插入并解密的,但操作系统是能够去访问私钥内容的。使用外置的加密 USB 介质并不能代替智能卡设备的功能。 智能卡的一些其它好处: ◈ 它们很便宜且易于获得 ◈ 它们小巧且易于携带 ◈ 它们可以用于多种设备上 ◈ 它们中的很多都具有防篡改功能(取决于制造商) 可用的智能卡设备 智能卡最初是嵌入到真实钱包大小的卡中,故而得名智能卡。你肯定可以买到并使用 GnuPG 功能的智能卡,并且它们是你能得到的最便宜的可用设备之一。但是,事实上智能卡有一个很重要的缺点:它们需要一个智能卡读卡器,只有极小数的笔记本电脑上有这种读卡器。 由于这个原因,制造商开始推出小型 USB 设备,它的大小和 U 盘类似,内置有微型智能卡,并且在芯片上简单地实现了智能卡协议特性。