The post thirsty@SG first appeared on I am LAZY bones?.
]]>试着解决:
我当然想过在google maps或者苹果的地图里搜索,但很遗憾,这个数据可能只在新加坡有意义,需求也相对比较小众,因此这些巨头企业是覆盖不到这个需求的。在新加坡的各种政府网站,我也没有搜到想要的答案。
而且,我看到有人做了类似事情,比如这个: https://linktr.ee/brayontng 作者是一个大一到学生,用Google forms收集数据,最终在google maps的自定义地图上做展示。但现在似乎也有大半年没更新了,而且我身边熟知的几个点好些都没有收录。还有就是大部分点都没有图片,真要用起来可能也不是太方便。
我的方案:
所以,我想到做一个手机app,嵌入地图SDK,打开app就能显示附近的喝水点,除了告诉你经纬度以外,还会告诉你所在楼层、水是常温的还是冰水或者热水;并且能显示一张图片,让你大致知道周边的情况,还能方便地调用第三方地图软件导航过去。
当然,我自己并没有完整的数据。所以,还会有一个“上传喝水点”的功能,希望发挥广大网友的力量,逐步完善这个数据。最终希望能覆盖整个新加坡绝大部分的喝水点。
于是,就有了 thirsty@SG。不过由于我也是刚学的SwiftUI,对界面设计也不太在行,因此目前app可能会有这样那样的小问题,界面也比较简陋,但我还是会尽我所能把这个事情做好。
APP:
所以,大家可以通过这里下载这个叫做“thirsty@SG”的app。目前只有iOS的,因为我不会安卓的app开发,可能暂时不会有安卓的版本。而且目前仅限在新加坡范围内使用,暂时没有打算支持更多地区。
关于上传喝水点:
方法也很简单,点击app左下角,会弹出上传的界面,此时需要拍一张喝水点的照片,app会自动获取此时的经纬度信息,填上一些必要的信息以后,就可以点界面上的“upload”上传了。
显示上传成功以后,暂时还不会直接在app上显示,为了防止有人滥用而误导其他用户,我设计了数据需要审核才能生效,审核我主要会看上传的照片,因此照片是不接受图库里选择的,只能现场拍,望大家理解。我也会尽快审核,慢也不太会超过一天。
上传的时候,可以选择填上你的邮箱。即使填了,也不会在任何地方公开这个信息,万一以后有会员体系什么的,这些做过贡献的用户,肯定默认就是高级用户。(对,我在画饼了,哈哈)
如果在使用app的过程中有任何问题,可以通过X(前Twitter)联系我: https://twitter.com/senob_ 其他未尽事宜,也欢迎联系咨询。
The post thirsty@SG first appeared on I am LAZY bones?.
]]>The post 区块链漫游指南 first appeared on I am LAZY bones?.
]]>也没有啥起因,一切都很随意。我最近在学习一些区块链相关的技术,看到这篇文章感觉不错,正好也在提升英语,于是就打算给他翻译出来。那既然都已经翻译了,不如就发表出来吧。
英文原文在这里,如果英文不错的话,还是建议直接看原文,他有很多“银河系漫游指南”相关的梗,很难翻译出来(主要是我也不太懂这些梗),哈哈!
=========开始的分割线=========
本文要讨论的是:区块链、加密货币、智能合约、Web3 以及 NFT(非同质化交易),对这些概念,很多人都有自己的认知,但很少人理解它们的本质以及相互的关系。你正在读的这篇文章的目标,是对这些概念以及背后的技术和实现做一个结构化的介绍。本文以三部曲的形式,分成了5个部分(这是一个梗)。
现如今,IT、数字化、经济、民主和社会相关的很多问题,都被认为可以用基于区块链的方案来解决。但和很多其他领域一样,这里也充斥着各类思想家、淘金者、白嫖党、江湖骗子和末日先知,导致鱼龙混杂。
这一系列文章,目的是以一种易于阅读的方式,为菜鸟和老手提供可靠的洞见。重点是–在这个复杂的、纠缠不清的主题中尽可能–透明地、实质性地、有条理地展示其中的利害关系。本文会以尽量幽默的方式来给大家加深印象。
此鸿篇巨著会分为以下五个层次:
这五层中的每一层,都将先分四节呈现事实和客观分析,另外两节将是一些个人见解和家庭作业。由于比较复杂,这个也不是绝对的:
准备好了吗?玩了各种我也不知道啥意思的梗之后,让我们开始吧!
第一站:基础层,区块链本身。
尽管如此,整个领域应该有更多的洞察。区块链生态系统提出了几个重要问题,这些问题的答案与我们社会的未来以及我们与技术的互动都息息相关。十几年来,“区块链”一词在Buzzword Charts中得分很高。仅凭这点就足以成为深入分析和理解这一现象的理由了。
这不是“管理者摘要”,而是“非经理人”(或非决策者)的摘要,因为我认为,当面临一项被认为是革命性的技术时,决策者尤其需要了解更多细节,以便他们可以区分这是昙花一现还是有真的好处。
区块链是为解决一个非常具体但特别复杂的问题而创建的:建立一种相当于纸币的数字货币,可以防止伪造,并保持匿名性。对于这个问题,直接使用区块链可能是一个很好的解决方案。但对于大多数其他场景来说,就会是大规模的过度工程,因为即使是对前提条件做微小改变也会带来更有效的解决方案。但要知晓和理解这些因素,就需要更深入地了解,这正是本文的目标所在。
在创作过程中,本文变得比原计划的还要庞大。幸好它在可读性和可理解性方面也有所提高了。换句话说,它本是以高管和决策者为目标受众而写的,但加入了许多令人难忘的类比和与现实世界的理解,也更适合作为茶余饭后的谈资了。
我认为本文做到了:您可以随时回来浏览某个段落,并在遗忘了某些内容时回头查看。章节中经常会有大字体、高亮的概述语,来帮助此类读者定位内容。
区块链,以及比特币,出现于2008年金融危机的高峰期,作为对银行在这场危机中的作用的制衡。银行先是利用不透明的金融产品从不良抵押贷款风险中获利,然后由于其系统相关性(“大而不能倒”),消耗了大量的救助资金。因此,对中央组织(银行、州政府等)的透明度和独立性的渴望是贯穿区块链生态系统各个层面的主旋律。
这个概念带有加密无政府主义和无政府资本主义的特征,即希望避免信任任何组织和机构,尤其不信任国家机构。只有程序(“代码即法律”)或自由的(即不受监管的)市场才值得信任。这种特征贯穿各个层面,尤其在加密货币和智能合约中最为明显。
目录(略,其实是我不知道怎么做)
由于区块链和比特币是同一时代的产物,所以区块链一词有时也被口语化,指代基于它的应用(如加密货币、智能合同等)和整个生态。我先澄清一下这几个概念。
区块链具有(或应该具有)以下四到六个要素(还未有统一的定论):
Wikipedia | Christian Cachin/IBM | MoreThanDigital | |
链 | 分布式账本 | 数据完整性 | |
去中心化存储 | 密码学 | 可靠性 | |
共识 | 分布式共识 | 快速存储 | |
数据处理 security | 业务流程 | 可分析、透明 | |
透明、保密 | — | — | |
不可篡改 | — | — |
让我们以克里斯蒂安·卡钦 (Christian Cachin)的四要素为例来进行阐述:
这非常的抽象,尤其是这里并没有说明区块链要实现的确切目标。由于本文旨在解构这个复杂的问题,我们需要先回答一个问题:人们到底想使用这些功能来做什么?因此,让我们看看典型的“区块链的10大典型应用”,然后以此来说明其中的好处:
这些主题涵盖了广泛的领域,从区块链本身到加密货币和智能合约。如果这能解决现代社会中这么多悬而未决的问题,那就太好了。然而这些在过去的14年里并没有真正发生,所以一切还没那么简单。
在接下来的(很详细的)技术章节中,让我们先看看用于解决上述挑战的技术和特性,然后再在现实中加以应用。由于我们在这里专注于区块链本身,我们将在本文末尾讨论数据一致性/反篡改、防丢失、透明/记录和(部分)归因/可追溯性/伪造等主题。在奠定必要的基石后,我们将在后续文章中更详细地展开其余的要点。
即使是最简单的部分,即区块链,就已经相当复杂了。在我们深入研究之前,先看这个基于比特币的概述。
比特币的区块链由一连串的区块(上图中的“Chain”)组成,会随着时间而增长(在某些特定场景下也可以分叉,后面会提到)。
目前,比特币区块链已经约有73万个区块(译者注:2022年4月是73万个块,翻译时的2022年12月,已经有76万个区块了),并且,约10分钟就会新增一个新的区块。每个区块都包含了一组交易。整个事情由构建系统的计算机(节点)共同管理,实际上每个人都可以参与其中(无需特别授权)。
为了了解其中的相互作用,让我们分几个小步骤来分析它,这些步骤一起构成了本技术章节的小目录:
接下来是小结,以便你可以看到森林的所有树木(译者注:总揽全局)。
在我们分析区块链之前,让我们以“用纸张的办公室”来类比。我们将看到无政府的会计师(或公证人)存了很多防篡改的活页。
让我们以现实世界的类比来开始对区块链技术的介绍:无政府的会计和公证办公室(作为初级公证人,他们最初只被允许处理小额金融资产。在后面的章节中,他们也将被允许对合同和有形资产的转让进行公证。这就是为什么我们现在就称他们为“公证人”,尽管目前他们只是记账而已)。
出于效率原因,几位公证人分担了这项工作。现在,大部头的账本已被废弃,取而代之的是使用活页(无论如何,在公证人中这更受欢迎)。所以,在第一天,负责任的公证人填写完了交易表,并盖章确认了。
第二天,值班公证人重复了同样的程序。但是,为了以后没有人可以将前一天的表格换掉,他今天的表格中包括前一天黄色表格的缩减副本。他像往常一样在晚上下班前盖了公章,以确认其准确性。
第三天,第三名公证人重复该过程。还是在晚上下班前,在他的交易表上盖章,也附上了前一天表格的缩减副本,在该副本上,也可以看到前天的缩减副本,以此类推。
继续这个过程,公证员们以协助的方式生成了一个共同的文件链。在这个链条中,是无法在不修改后续表格的情况下,修改掉以前的表格内容的。因为这肯定会背发现。
但协调公证员的权利和义务,是需要以信任和权威为基础和前提的。下面我们会讨论如何在没有事先共识的情况下解决纸质区块链的信任问题(从而信任任何人),因为这也是数字区块链的密码学基础。
简单起见,截止目前我们的初级公证员都是有固定的排班表的,他们都有各自的休息时间,因此对谁负责哪一天的记账工作是没有冲突的。但随着我们越来越接近了解真正的区块链,这种情况将会发生改变。
让我们切换到数字版区块链,比如比特币使用的区块链就是这样。它的工作原理与上面的活页表格非常相似:每个区块都包含了一个交易列表,有人负责验证交易的真实性,这个人就是“区块的创造者”;在加密货币中,他们也被称为“矿工”。
每个区块都会计算校验和(即所谓的“哈希值”),然后将前一个区块的校验和存储在当前区块中,类似于上面公证表中前一天的缩减副本。这就意味着,新的区块不可撤销地与其前一个区块绑定了,也就间接(或传递)地与所有的祖先区块绑定了。
为了加深印象,让我们稍微调整一下我们的乐高积木:不同于常规的乐高(块与块之间都可以匹配),新的积木每个块顶部的点都构成一个独特的图案(对应于其独特的哈希),上面的块必须有匹配的图案才能叠上去(就像事锁和钥匙一样)。
哈希函数的特点是,即使世界上所有的计算机在数十亿年内不做任何其他事情,他们也无法找到具有相同哈希值的第二个区块。最终的结果是,我们有一个存储在当前区块中的前一个区块的缩减副本。一般一个区块所占据的空间是1-2MB,而哈希只用了32个字节,大约少了5万倍。
(作为对比,在纸质版的比喻中,仍有可能直接从缩减副本中读出所有细节,但仅从哈希值中不可能读出前一区块的任何内容。但纸质副本和哈希的实际目的–对先前区块的唯一识别–在这两种情况下都完全得到了满足)。
此前我们的公证员都有一个明确的值班表。每一天,都正好有一个人负责保管账本。账本是由双方同意或由他们的老板指派而产生的。但比特币是加密无政府主义和对中央权力机构在金融危机中的行为感到愤怒的产物;因此,这里必须没有任何形式的“监督者角色”!这就是比特币。无论老板在提高协调效率和创建规则方面有多大作用,但在某些时候,老板也可能会滥用他们的权力,而系统内将没有任何机制来阻止它。
在现实世界中,确实存在罢免“滥用职权或腐败的上级”的机制,但这种罢免往往是耗时耗力的。现实世界中用以预防此事的机制包括诚实、同情和信任。这些进化的优势可以导致避免出现这种情况或迅速补救。然而,这些都需要定期互动,因此不能扩展到80亿人。而且,无论如何,它们都不符合加密无政府主义的世界观,根据这种世界观,人们不希望让自己依赖任何人。
这就只剩下公证员之间的相互协商这一条路,即上述的共识。然而,我们不仅没有了制定值班表的老板,我们也没有来雇用公证员的老板,或者在某个公证员喜欢在预定的工作日去钓鱼的时候叫他们回来。
这意味着,我们需要一个必须应对不断变化的公证员人数的系统,他们都不想参加入职测试,也不想事先宣布他们的存在或缺席。最纯粹的混乱,或者,稍微好一点,一个自我组织的系统。
人类群体远不如鱼群那么同质化;因此,几乎没有十几个人以上的自组织群体。因此,对于更大的群体来说,迟早会出现分工结构。在标准化工作流程中,这些结构减少了协调工作,从而提高了效率。但这些权力地位等体系正是加密货币想尽量避免的。正如我们接下来会看到的那样,这是以牺牲效率为代价的。
为了让我们的纸质版公证员组成公证处,我们需要两者兼而有:
首先是组织:所有想成为公证员的人都会可以成为平等合作伙伴网络的一部分,也称为同行,以交换信息。在这样一个点对点的网络中,(1)要包含在区块链中的交易会被传递给每个人,(2)新创建的块(或类比中,盖章的表单)会由每个人存储。
这个P2P系统是由一组计算机(”节点”,在上图中是带字母的圆圈)和它们之间的一些用于交换信息的链接(通道或 “边”)组成的。现在,如果蓝色节点A有一个新的信息,它会把它发送给其所有的相邻节点,如蓝色箭头所示(节点B和C)。类似的B将信息发送给了C和D(红色箭头),A被排除在外,因为那是B的信息来源,显然A一定已经有了这个信息。
在B和C之间的那条边上,信息在两个方向上都会被传播一次,因为在发送时,B和C都无法知道对方是否已经知道了这个信息。
这种所谓的 “泛滥(flooding) “创造了一个(微小的)潮汐,席卷了整个信道系统,到达了从A到G的所有节点。许多参与者将多次收到信息,在最坏的情况下,你的每个邻居都会给你发一遍。效率不高,但当你不能或不愿相信任何人时,就只能这样了。
最后,对我们的公证员来说,这意味着他们可以打消希望再有任何空闲时间的念头了。虽然这不是特别有利于激励,但它对容忍个别参与者的失败(甚至是恶意)是很有效的。由于缺乏中央权威,没有仲裁机制,所以每个人都必须首先照顾自己,尽可能少地依赖其他人。从加密无政府主义的角度来看,这种浪费比信任更好;这种模式在整个生态系统中一次又一次地伴随着我们。
然而,上述通过公证网络泛滥的信息只是日常工作的一小部分:我们的公证员不仅要不停地转发所有的这些信息,而且每个人还要不断地更新交易清单,因为你不相信你的同事能做好。另一方面,这也意味着从现在开始,你将没有任何空闲时间,因为你要昼夜不停地忙于工作和检查你的同事的工作。即使这么做非常低效。
但首先要回到现实世界的日常工作。让一个团队保持“正轨”的方法之一是建立一套有明确标准和奖励的激励系统。对于人类团队来说,验证是否达到标准其实是非常困难的,即使已经在诸如计件工作上尝试过;这有点像劣币驱逐良币。很难持续下去,因为数量是以牺牲质量为代价的,或者团队成员会为了让自己的表现看起来更好,而贬低同事们的表现。阴谋、隐瞒、谎言和操纵,甚至可能达到破坏。这些都是电影和小说中保证悬念的关键因素,但在现实中,它们对生产力和实现共同目标是非常不利的。
在我们的公证处,流程是简单的、重复的、标准化的,这就是为什么大多数区块链假定工作情况是客观可衡量的。因此,为比特币创建了一个货币激励系统,根据具体的、可验证的规则,如果这个区块被普遍认可,就会给予奖励(以比特币计)。这就是为什么这个程序被称为 “工作证明”(PoW)。
到目前为止都很简单。但是如果某人的工作做得不够好,你怎么能惩罚他呢?咱们让工作变得如此艰难和乏味,以至于没有人自愿去做,除非他们能期望得到慷慨的回报!
所以,激励措施是基于人类最强烈的动机之一:贪婪,对金钱和权力的贪婪。而这种激励机制也是完美的,至少在表面上是这样。正是因为有了贪婪的魔力,让人们投入了空前的创造力,去寻找和发现漏洞。在本篇和下一篇文章的“现实”章节的事实之后,会有更多关于这个问题的内容。
任何在比特币区块链上添加了一个新区块的人,目前都会得到6.25个比特币(₿)的奖励,用于创建(“挖矿”)新区块,目前这相当于接近25万瑞士法郎。对于10分钟的工作来说,这很吸引人,也难怪贪婪会成为驱动力。(在下一篇文章中会有更多关于金融和它在生态系统中的作用的内容)
如果你想得到那25万,你要怎么做呢?
加密的谜题需要反复、艰苦的尝试才能得到解决,一旦解决就完成了“足够的工作”。例如,比特币网络上的矿机需要不知疲倦地投120*1021亿面的骰子,直到它出现了数字1。这次成功的骰子平均需要尝试120*1021亿次后才能成功。有了这个结果,即完成了“工作证明”,矿工就可以创建区块并领取奖励了。
计算机不会玩骰子也不掷公章,因为这俩都太简单了。因此,在尝试“挖”新块时,这个新的区块里有个特定的字段会被填充随机数,直到整个块的校验和(“hash”)值足够小;因为它每120*1021次只有一次。因此,经过无数次试验,这个足够小的hash就是我们工作的证明。(顺便说一句,如果不实际计算是无法预测块的hash值的,所以挖矿没有快捷方式)。
矿工的算力越大,这个谜题解决得就会越快。然而,比特币协议的设计决定指出,平均每10分钟才会新增一个新区块。为了确保随着整体算力的增加或减少,仍然维持在10分钟出块,就必须定期调整“足够的工作”的定义,以反映网络上可用的计算能力。在比特币网络中,这种难度调整大约每两周会进行一次。
在骰子的类比中,这意味着如果网络中有更多或更快的参与者,骰子的面数也会相应地滚动增加,所以就要更快地扔骰子,直到出现想要的点数。(就我们太空公证人而言,盖章的格子将缩小)。
结果就是:
剑桥比特币能源消耗指数(CBECI)估算比特币开采的年用电量约为125 TWh, Digiconomist则认为是200 TWh。CBECI假设每千瓦时电价为5美分(对于西欧来说:不切实际的),仅电力就花费62.5或100亿美元,也即每天2000万或3200万美元(!),而且这一趋势还在上升。
这种高能耗也被作为“禁止工作证明加密货币”的一个论点而被提出来。尽管非常努力,但它应该(像所有的政治决定,但不仅仅是这些)总是被视为成本/效益分析的结果。对于这一点,我随后的加密货币文章会继续展开。
那要怎么样,才能真的像这样直接替换区块呢?
比特币网络把巨量的算力和工作量证明相结合,而且消耗的电力是世界上最强大的超级计算机的500倍。尽管有这样惊人的计算能力,整个比特币网络也要计算20亿亿年才能用另一个新区块替换一个现有区块,并使其校验和(哈希值)与原始区块相同,即它可以被接受为链上的有效成员。(至于是否真的会被接受则是另一回事)。
20亿亿年后面有N个零(到底几个0我也不知道了,译者注)。大家都喜欢与宇宙的年龄进行比较:即使自130多亿年前的大爆炸以来,这些计算机都在连续做计算,也只能完成上述工作的极其微小的一部分(十二亿分之一;又是一堆零!)。(即使是找到“关于生命、宇宙和所有其他问题”的答案,可能也比这个更快一些)。
来自IT安全界的人,谨慎地称其为“不切实际”;然而,普通人更喜欢“不可能”。
=========未完待续的分割线=========
原文实在太长了,而且有很多俏皮的俚语,我实在翻译不下去了。。。
先发出来给大家看看吧,如果大家觉得有必要,我就继续翻译。。
PS:为了写这文章,后台临时装php-dom插件、Wordpress也临时装了几个插件、还临时改了几行CSS。。。也是醉了!
The post 区块链漫游指南 first appeared on I am LAZY bones?.
]]>The post 山洞奇遇 first appeared on I am LAZY bones?.
]]>这时,我想起前几天我第一次来到这里时的情景,当时的遭遇着实吓了我一跳:
当时我看到这个大厅靠里面的位置有一些椰子树,上面的椰子已经成熟了,密密麻麻地挂着,甚是诱人。而我那时有点儿口渴,就只想打个椰子吃,也没有觉得这么多椰树长在浙江有什么不妥——更何况还是长在一个山洞的里面。但即便我不去理会椰树的来源,接下来发生的事情也足够使我震惊的了。
我首先想到的采椰子的方法是拿石头砸,反正山洞里并不缺小石头。于是我捡起一块大小趁手的石头,瞄准一个我觉得比较好吃的椰子,用力砸了过去。石头在空中划出了一道漂亮的抛物线,眼看就要砸中我事先选好的椰子了,正在我对自己的投石技巧洋洋得意的时候,奇怪的事情发生了——石头似乎穿过了那个椰子,继续沿着抛物线在前进着,也不知道后来落到了哪里。我揉了揉自己的眼睛,虽然我不愿意相信,但那颗椰子还是完好无损地挂在椰树上。接着我又捡了几块石头尝试,但相同的事情每次都发生了。
虽然我此时已经是满脑子疑惑,但还是没有放弃想吃一个椰子解渴的想法,于是我在山洞的大厅里,好不容易找到了一根足够长的杆子,拿着杆子走到了一棵椰树的底下,努力举起杆子,使它伸向了我心心念念的椰子。但这次还是没有如我的意,杆子在触碰到椰子的时候,我没有感觉到任何的阻力,杆子直接穿过了椰子。。。
这时候,我不免开始有点害怕了,丢下杆子,开始往回跑。好在撤退的过程比较顺利,往回转过那个U形大弯,没几步就到了山洞的出口。俯身出了洞口后,又回到了现实的世界,外面还是这么闷热,知了还是卖力地叫着,一切都是那么地熟悉,这感觉真好。
丛里面出来以后,我从来没有和任何人提起过这个奇怪的山洞,其实即使说了估计也没人会相信我,只会让人觉得我发疯了吧。而我也给了自己一个很勉强的解释:那些椰树类似海市蜃楼,通过某种奇特的光学作用投射到了山洞里面,所以才看得见摸不着。至于为什么海市蜃楼会出现在一个封闭的空间里之类的细节问题,我就没多想了,我怕自己也给不出合理的解释,反而徒增烦恼。
也许是我内心的好奇心驱使着我,也许这就是鬼使神差。反正,现在的我又一次怀着忐忑不安的心情,站在了这个大厅面前。
而这里已经看不到之前的那片椰树林了,取而代之的是一片沙滩。
对,你没看错,是一片金黄色、软绵绵的沙滩。
其实山洞还在,我也还在山洞的大厅里,但稍远处就是那片沙滩。给人的感觉就好像山洞的大厅里嵌入里一个巨大的、占满整个大厅的显示器,而那片沙滩就是显示器里播放着的动态图像。但我的大脑马上就否定了这个“显示器假说”,因为即使这是个视网膜屏的显示器,即使可以做到无限大的分辨率,也不可能做到如此逼真的裸眼3D效果——我能看到沙滩稍远处微微的海浪一层层地冲刷着沙滩,能感受到海风拂面的那种舒服的感觉,甚至能闻到咸湿的海水的气息。
最重要的是,沙滩上还放着两张躺椅,上面分别躺着一男一女两个“人”。男的身材魁梧,肌肉健硕,可以说是棱角分明,国字脸上分布着端正的五官,很是帅气。女子很年轻,有点微胖,但整体身材也是极好的,该凸的地方凸、该翘的地方翘,皮肤白皙而光滑,留着一头飘逸的长发。他们都一丝不挂地躺在躺椅上晒着日光浴——没错,这个藏在山洞里的沙滩确实还有一个明媚的太阳。
也许他们是感觉到我走近了,原本头朝着我这个方向平躺着的两个人,都侧身转过头来看了看我。虽然他们脸上都带着笑容,这妹子的笑容还很甜美。但我还是有点被他们吓到了,因为他们侧身以后,我就看到了他们有个明显不同于人类的地方:他们的背后都有一对翅膀——并不是鸟类那种带有羽毛的翅膀,否则我会以为自己见到了天使——而是类似芭蕉树叶子的一对绿色的、薄得有点半透明的翅膀,这翅膀的面积也不算太大,收起来之后不会比他们的身体更宽了,我很难想象这么一对薄薄的小翅膀能让这个体型的他们飞起来。
似乎是为了打消我的疑虑,这个妹子就真的轻轻扇动翅膀,飞了起来。她拍打翅膀的频率很慢,感觉很轻松,完全不费劲地就悬停在了不到一人高的低空中。
我正在纳闷,这不符合物理学规律啊,这么小的翅膀慢慢地扇着,怎么能提供足够的力来支撑妹子的重量呢?不科学!
“你好!”,男的说话了,打断了我自顾自的思考。
这时我才意识到自己多少有点不够礼貌。忙回道:
“你好。。你好,我有打扰到你们吗?”
“不碍事,我们有的是时间,而且我们在这此处休息的目的之一本来也是在等你。”妹子回答道,她的声音很软也很好听。
“等。。。等我?”
看着我丈二和尚摸不着头脑的样子,妹子忍不住笑出声来,说:“是啊,请帮忙在我们的旅行册上签个名吧!”
看到我露出了更加疑惑的表情,男的也忍不住笑了。开始解释起来:“我们是来自大麦哲伦星系,WOH G64恒星的星际旅行者,在过去几年时间里,已经去过5个星系的几百颗恒星旅行了。每到一颗恒星,如果那颗恒星系里存在高等智慧生命,有自己的文字,我们就会收集一个当地文明的“签名”以做纪念,至今也已经收集了十几个签名了吧,最近在银河系边缘的猎户旋臂区域闲逛时,发现这个叫做太阳系的地方疑似有智慧生命存在,于是就来碰碰运气,结果果然没让我们失望。”
“是啊!”妹子接过话茬,继续说道:“这个叫地球的行星实在是太美了!这里有高山、有大海,有森林、有草原,还有无数种类的动物和植物,显得生机勃勃,一切都是这么的和谐美好,我们都不想回去了,哈哈!”
看我露出了会心的笑容,妹子似乎突然想起了正事,说:“你等我一下,我去拿下旅行册!”
说完轻轻扇动翅膀,自顾自地飞到了不远处的一个奇怪的篷子边上。
这时我才注意到原来那里还存在着这么一个奇怪的篷子,粗看上去,就像一个不起眼的大帐篷,篷布甚至显得有点破旧,内部似乎用六根柱子支撑着,外观呈现出六边形。但仔细看,就会发现着篷子很有“科技感”,帐篷的门并不是一个简单的布帘子,而是有一个“摄像头”,似乎能识别门口站着的是不是主人。帐篷的各处还分布着各种指示灯,时不时地闪烁着。
妹子似乎很轻盈,不一会儿就降落在了帐篷的门口,她收起翅膀的同时,门自动打开了。她转身就进去,才一会儿,就拿到了她说的旅行册,又轻盈地飞了回来。
我心里暗暗地想,她会拿出什么高科技的旅行册过来给我见识见识呢?但没想到的是,拿过来的真的只是一个旅行册而已,我几乎能肯定那是一本普通的纸做的册子,即使放在夜市的地摊里,也不会显得太突兀。上面贴的也都是地球上的美丽风景照,当然还有两位外星人的各种姿势的自拍照,我终于知道自拍已经不是地球人的专利了。
妹子走到我跟前,打开一页,递给我看。我很自然地伸手去接,结果奇怪的事情再次发生了。我的手穿过了那本册子,根本没有感觉到有任何交互。妹子和她的旅行册虽然近在眼前,但似乎又和我处于完全没有交集的两个世界。
这时,她不知道从哪里拿出了一支笔,朝我递了过来。看上去着就是很普通的一支钢笔,这倒是和那旅行册很相配。但仔细看,马上能看出不简单的地方,这支笔的全身覆盖着一层不一样的金光——并不像是笔本身发出的光,而像是有人刻意想把笔丛周遭的环境中突显出来而做的标记,就像是某些游戏里的可交互的宝物会有的标记一样。
看着妹子甜美的笑容里完全没有恶意,我也就放心了忐忑的内心,伸手去接这支笔。这次一切正常——倒使我感到不习惯了——我能感受到笔正常的重量和温度,并且拿在了我的手上,虽然笔还是闪着那奇怪的金光。
在妹子的示意下,我拿起了这支笔,在她拿着的旅行册上签下了自己的名字——刘顺。拿着这支普通又特殊的笔,签字的过程倒是很顺利,笔尖碰到旅行册的纸张时,有正常的力反馈,留下的笔迹也清晰可见。
签完后,妹子说道:“谢谢你,地球人的文字真好看,尤其是这片地区流行的文字,就像艺术品一样!”
看着妹子露出满意的笑容,我也开心地。。。醒了。。。这真是一个不错的梦!
——以上源自一个我做的梦,情节略有增改。
The post 山洞奇遇 first appeared on I am LAZY bones?.
]]>The post 记一下这个bash的http server first appeared on I am LAZY bones?.
]]>..
访问到上级目录,也可能通过``
执行任意指令,所以最好别长期开着。这只是个例子,处理逻辑自己改。
#!/usr/bin/env bash
while true
do
f="/tmp/out$RANDOM"
mkfifo "$f"
trap "rm -f $f" EXIT
cat "$f" | nc -4l 8000 > >(
export REQUEST=
while read -r line
do
line=$(echo "$line" | tr -d '\r\n')
echo $line
if echo "$line" | grep -qE '^GET /' ; then
REQUEST=$(echo "$line" | cut -d ' ' -f2)
elif [ -z "$line" ] ; then
( #这里面写自己的处理逻辑,这是一个很丑的例子。
if [ "$REQUEST" == "/" ] ; then
Message_Body="
`find . -type f -exec ls -l {} \; | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,"" $9 "
"}'`"
else
Message_Body="`cat "./$REQUEST"`"
fi
echo -en "HTTP/1.0 200 OK\nContent-Length: ${#Message_Body}\n\n$Message_Body"
) > "$f"
fi
done
)
rm -f "$f"
echo done, next request.
done
另外,也可以看看几年前的这篇。
The post 记一下这个bash的http server first appeared on I am LAZY bones?.
]]>The post 找回丢失的磁盘空间 first appeared on I am LAZY bones?.
]]>df
一看,发现磁盘确实快满了,然后你就想找到具体是哪个目录满了,于是 du -s *
一看,却发现所有子目录的大小总和却和df显示的总已使用磁盘空间对不上,有时候甚至还相差很多,于是就纳闷了:我的磁盘空间去哪了呢?
这里就列一下我所知的3种情况:
linux系统把文件名以.
(点号)开头的文件视为隐藏文件,而类似bash里*这样的操作符是不会匹配隐藏文件的,所以如果根目录下有个较大的隐藏文件的话,是不会被du -sh * 统计到的,解决办法就是: du -sh .[^.]*
。
一般挂载其他分区的时候都是建议mount到一个空目录的,那么如果mount到一个非空的目录,情况会怎么样呢?比如/mnt目录本来里面是有文件的,然后执行了sudo mount /dev/sda6 /mnt
。其实这个mount命令完全能正常执行,被mount的分区也能正常访问,只是原先在/mnt里的文件,现在已经访问不到了,包括du也看不到大小了,但是磁盘空间却还是被占着,因为如果你 umount /mnt
以后,原来的文件都还会回来的。
一个文件的大小和所占磁盘空间也不一定完全一致,比如某个程序一直打开着一个叫log的文件在写,而中间有人用 > log
命令清除了log的内容,就会产生这样的文件。这里有这种文件的介绍。
上面3种是我所知的,应该还有其他情况,欢迎留言补充。
The post 找回丢失的磁盘空间 first appeared on I am LAZY bones?.
]]>