简评ZeroNet分布式P2P网络

除了几年前的比特币,很久没有令我眼前一亮好玩的互联网东西出来了。最近看到月光博客介绍了ZeroNet分布式网络。试玩了一下ZeroNet,觉得这个P2P分布式网络很有意思。
简单地说,ZeroNet就是一个P2P为基础的HTTP分布式互联网世界,网址形式为127.0.0.1后面跟一个比特币钱包地址一样的34位长度字符串,比如:
http://127.0.0.1:43110/1D41D7ybgaDypUV3wJ12NHRdJSL35kLiSJ
虽然没有HTTPS,但我猜测内容本身已经加密,就像比特币的网络系统一样。我一看到ZeroNet网络,感觉这才是真正纯粹的互联网,又或者是早期的互联网模式,代表的是真正的平等、自由、民主、隐私。
与我们平时访问的互联网相比,最大的不同点就在于ZeroNet是去中心化,不需要中心服务器,每个访客都是一个节点,承担存储内容和传输带宽,第三方自然也无法审查删除内容。从这一点上来讲,ZeroNet比CDN式的分布式网络更彻底,CDN不过是把原来的一个中心分散成更多的中心,ZeroNet把内容分布在每一个访客节点上。
听起来和暗网或深网类似,又是一个互联网的法外之地?的确,ZeroNet类似的P2P网络与神秘的暗网一样,它不受政府管制,除非把整个网络摧毁——比特币也是如此。从这个意义上来讲,它能成为技术上保持中立的传播工具。至于人类利用它来干坏事还是好事,那完全是另外的话题——我们只谈技术。
不过,暗网依然需要中心服务器,只不过外界无法知道服务器的具体地址在哪里——也许美国NSA有这个能力,暗网本身并不依赖P2P技术。ZeroNet上的内容发布以后,只要有一定数量的节点存活,发布者节点关闭与否都不再重要,内容已经永久存活在网上,永远可以访问,就像用BT发布内容一样,只要种子成活后,内容就理论上存活在互联网上。
ZeroNet有一个与BitTorrent发布内容不一样的地方,ZeroNet发布的内容可以修改,就像我们现在用的普通网站一样,随时可以修改内容,与之连接的节点也会自动更新。而BT发布后的内容就无法修改了。
易用性方面,ZeroNet和暗网相比不相上下,暗网需要TOR来浏览,要访问ZeroNet网络,直接下载ZeroNet软件,解压后点击即可运行使用,就像VPN一样,运行它后并不影响现行的网络连接,唯独多了一个访问ZeroNet的P2P网络世界功能,并且是全局访问,无论用哪个浏览器都可以访问ZeroNet世界里的网站。
对中国大陆用户来讲,可能还有一点其它的意义,它是一个真正意义上不受监控的网络,配合加密,GFW可能很难对付。ZeroNet虽然依赖于现行的IP地址系统,但它完全与现行的网络平行,也就是说,现行网络上的内容需要有人转移到ZeroNet网络上,ZeroNet上目前的内容很少。ZeroNet也有相应的搜索收录引擎:http://zeroexpose.com/ 目前收录的内容很少。
我在ZeroNet上建立了个站点,不需要主机、域名、流量带宽,连我自己都不需要开机就可提供可访问。如果你已经下载了ZeroNet,应该能访问。否则点击这里使用ZeroNet的网关bit.no.com访问。或者从GitHub下载,目前支持Mac, Linux和Windows, 还不支持移动设备系统。
我不太认为ZeroNet能取代现行的网络架构。现行的万维网架构发明并存在如此长时间,已经被时间证明了它的重要性,但ZeroNet的出现的确令我眼前一亮,至少从技术层面上来讲,我很久没有这样的感觉了。
必须声明,我也是刚接触ZeroNet,以上理解与评价可能有错误,欢迎高手指正补充。
如何在朋友圈中发广告?
有人的地方就有生意。微信这种社交软件中文用户最多,朋友圈中也就自然夹杂着用户张贴的广告,并且有种愈演愈烈的感觉,全民微商?
其实广告都不能称之为广告,广告只是放错了位置的信息。也就是说,发广告其实没有错,但不注意方式和基本的技巧就会是一种错,一种令人讨厌的错。大部分时候,我真替这些发广告的朋友着急。
这里分享一下我个人的建议,仅供参考。
- 发的次数不要太多,宁缺勿滥。
- 广告不要那么硬,软一点——或者叫植入广告,随风潜入夜,润物细无声。
- 一个原则:有用+有趣,要么对别人有用,你提供的产品或者服务是真的对别人有用,而不是只对你的钱包有用,如果对方觉得没有用,也至少要让人觉得有趣,生活这么紧张,不妨让人会心一笑。
在社交网络上,如果不注意方式地狂发广告,不但带不来生意,对方可能直接将你拉到黑名单,连基本的友情都没了。社交经济也叫杀熟经济,如果熟人都被你杀没了,你的友情也实在太廉价了。
Soylent代餐体验最终报告

从德国购买的欧洲版Soylent液体代餐终于被我吃完了。在完整吃完这3.1公斤后再次来报告一下,谈一下我对这种新东西的看法。总体而言,我的最终体验大致与上次公布过的Soylent体验反馈没有什么两样。
首先谈问题,最大的问题有两个:
一,如果按推荐水量(800 ml),刚喝完后胃的负担有些重,毕竟喝下去的液体量比较大,我的解决办法是少用些水,之后再慢慢补充水分。
二,它比牛奶豆奶喝下去撑的时间要长,胃里的饱腹感有一定保障,与之对应的排泄也没问题,但对我而言,12点多吃完Soylent,一到下午三点左右,就会明显产生饥饿感,说明对我来说,推荐用量的热量还是少了些。
我个人觉得Soylent的含盐量可能少了,我偶尔会感到一种想吃盐的难受感觉,可能是身体里缺盐分中的钠离子?目前Soylent的可溶性还有待提高,如果时间不够长,刚泡好的Soylent会有少量不溶粉末。此外,附送的Omega 3胶囊需要单独吃,我经常忘吃(Soylent 2代解决这类问题,瓶装液体,直接饮用)。
再来谈优点。在我看来,Soylent解决了我经常发愁吃什么的问题,最大的好处就是方便,方便得出乎我的意料。在我去比利时出差的旅途中,泡好的Soylent代餐既代替饮料,又解决吃饭的问题。甚至我有一次耳朵发炎肿痛导致嘴巴无法咀嚼,直接饮用Soylent代餐,简直就是病号专用的流食。
去年回国时,我也带了两餐份量的Soylent以备不时之需,不过当时饭局太多,一直没用上。一上海的朋友不久前从我这代购奶粉时,也让我送给他两份量Soylent尝试,不知他的体验如何。
吃Soylent代餐对我而言,谈不上享受美食的地步,在大部分人的大部分时间内,吃饭不只是填饱肚子,因此我觉得Soylent短时期内不可能完全取代常规食物。但我对于新生事物持欢迎态度,Soylent有其存在的价值,它一定程度上可替代我的常规午餐,方便省事,至少比又硬又冷的三明治要好多了。
人工智能正朝人类走来

当年开始使用互联网的时候,我对一句话记忆深刻:在互联网上没人知道你是一条狗。讲的是虚拟的互联网具有匿名的特点。如今的人们显然不能对互联网的匿名性抱以太多希望,它对我们了解知道得太多。这是我当初没有想到的事情。
一直以来,我对计算机的认识,是把它定义为一个可以“高速运算”的“傻瓜”,它能按人们设计的程序来执行快速计算。即使是连上了互联网以后,计算机对人类生产生活发挥了巨大的作用,但计算机依然不会自己思考,也就是说不像人类的大脑一样具有智能。
举个简单的例子,计算机(甚至一个简单的计算器)可以很快计算出3.14的314次方,这对于人脑来讲太难了。但是,在计算机诞生相当长一段历史中,计算机很难识别出一张图片背景里的著名风景名胜,而人类能够一眼识别出来。因为人脑有智能。
在我曾经的科研中,我用计算机模拟水泥颗粒的水化进程,其原理大致就是用设计好的公式,将成千上万的水泥颗粒按大小分类,对它们在单位时间步长内计算每个水泥颗粒的水化过程,后一步基于前一步的结果,一直迭代下去,到最终计算出结果。
只要公式比较准确,时间步长足够细小,再加上适当的边界条件和一定的实验数据较准,最后的结果也就能模拟出真实世界。这样的思路其实利用的就是计算机可以短时间内做成百上千的计算,完成人脑几乎不能完成的工作。必须指出的一点:这种模拟仿真过程中的智能依然归人脑,计算机只是按照程序设计好的流程高速计算而已。
然而,事情变化很快。目前计算机人工智能已经发展到了令我吃惊的地步,例如,Google的神经网络能判断任何照片的拍摄位置,这是人眼都难以达到的水平。
乐观地估计,不久的将来,人工智能可能真的会大行其道,再加上机器人这种实物呈现,人工智能没准真的能代替许多现在必须要人类自己才能完成的工作。
就像工业革命以前,每做一件产品,都需要手艺人重复制造,但是有了机械化流水线以后,成千上万相同产品的制造完全由机器批量化生产,极大地提高了效率,解放了人类的双手,人类大部分时间只需要贡献智能即可。
未来,带人工智能的机器人为我们生产商品,为我们做饭——并且不输给人类,为我们做家务,餐厅里的机器服务员为客人倒酒,无人驾驶的汽车,甚至连空间问题都可以通过虚拟现实解决,这些东西的出现将解放人类目前需要付出智能改变世界的状况……而且,上面所说的有些是已经实现了的事情。
我无法想象,未来的世界在人工智能大行其道下将会变成什么样——很可能带来深刻的社会变革,但我预感这些东西很可能正在加速向我们走来,无论我们喜欢还是不喜欢。
用BitTorrent Sync无线导入手机照片到电脑
如今的手机基本上代替了过去的相机。我喜欢有了一定数量照片后及时导入到电脑上,在大屏幕上观看,在硬盘上保存,都比在手机上要更好一些。
只是导出照片到电脑时,一般需要数据线。我最近一直在用BitTorrent Resilient Sync这款应用来同步照片到电脑上,它支持PC电脑,Android安卓和苹果iOS手机系统,具体操作方法不复杂。
在电脑和手机各安装BitTorrent Sync这款软件应用,然后在电脑上新建文件夹或者选择已有文件夹作为存放照片的地方,再复制手机上BitTorrent Sync应用的同步密钥到电脑端的BitTorrent Sync软件,并选择刚才的目标文件夹作为存放位置。
从此以后,同时打开电脑和手机上的BitTorrent Sync,就可以快速无线地将手机上的照片同步到电脑上。需要注意的是,这个方法只能单向地将iPhone手机上的照片导入到电脑。
显然,这个方法的优点是相当于局域网内无线传输,不需要将数据线连接电脑和手机,同时,BitTorrent Sync基于P2P原理,不像Dropbox, iCloud云服务一样需要中间服务器,从而避免安全性低和传输速度慢的缺点。当然,如果不是手机照片,BitTorrent Sync还能与电脑双向同步文件和文件夹。
要说BitTorrent Sync的缺点,那就是需要WiFi无线网络,好在如今的WiFi网络遍地开花。真若没有WiFi,那就老老实实地用数据线同步照片吧。
福利: http://btsynckeys.com/ 是一个专门分享各种资源码的网站,不过注意分辨内容真假。
非插件和第三方资源社交网站分享按钮代码
许多网站都安装了社交分享按钮,方便浏览者将网页链接分享到相应社交网站,更广度地传播内容。要实现这类功能,对于WordPress博客来说,要么安装插件,要么调用第三方的服务,比如国外的AddThis国内的JiaThis之类的服务。
然而,第三方的服务,一个最大的问题是影响网站速度,国内的服务在国外速度不行,国外的服务在国内速度不行,而且网站在加载的时候,总是需要多加载一些服务,毕竟是第三方的服务。
如果只是局限于Twitter, Facebook, Google+这几个最常用的服务,我这里分享一个不安装插件、不用第三方服务的方法:使用JS书签(Bookmarklet)中的JavaScript代码,把它们做成超链接的形式,放在主题中相应位置,即可实现社交分享功能,由于没有多出来任何页面加载元素,所以完全不影响网页加载速度,并且还能避免被AdBlock之类插件过滤的可能。
原理很简单,把JS代码替换超链接中HTTP链接即可,即href的属性,如下图示:

用来替换的三个社交网站JS代码分别如下(完整代码亦可查看本网页的HTML源代码):
javascript:var d=document,f='https://www.facebook.com/share',l=d.location,e=encodeURIComponent,p='.php?src=bm&v=4&i=1378393915&u='+e(l.href)+'&t='+e(d.title);1;try{if (!/^(.*\.)?facebook\.[^.]*$/.test(l.host))throw(0);share_internal_bookmarklet(p)}catch(z) {a=function() {if (!window.open(f+'r'+p,'sharer','toolbar=0,status=0,resizable=1,width=626,height=436'))l.href=f+p};if (/Firefox/.test(navigator.userAgent))setTimeout(a,0);else{a()}}void(0)
javascript:(function(){window.twttr=window.twttr||{};var D=550,A=450,C=screen.height,B=screen.width,H=Math.round((B/2)-(D/2)),G=0,F=document,E;if(C>A){G=Math.round((C/2)-(A/2))}window.twttr.shareWin=window.open('https://twitter.com/share','','left='+H+',top='+G+',width='+D+',height='+A+',personalbar=0,toolbar=0,scrollbars=1,resizable=1' );E=F.createElement('script');E.src='https://platform.twitter.com/bookmarklets/share.js?v=1' ;F.getElementsByTagName('head')[0].appendChild(E)}());
Google+
javascript:void(window.open('https://plus.google.com/share?ur\l='+encodeURIComponent(location), 'Share to Google+','width=600,height=460,menubar=no,location=no,status=no'));
AddThis聚合
javascript:void((function(svc) {var d=document,w=window,p=0,b=function(){if(!p){p=1;if(_atc.xol)_adr.onReady();if(w.addthis_sendto)addthis_sendto(svc||'bkmore',{product:'bmt-'+_atc.ver})}else{p=0;if(_atw)_atw.clb()}};if(!w._atc){var ol=w.addthis_onload||[],o=d.createElement('script');w.addthis_product = 'bmt-250';o.src='//s7.addthis.com/js/250/addthis_widget.js#domready=1&username=bookmarklet';ol.push(b);w.addthis_onload=ol;d.getElementsByTagName('body')[0].appendChild(o)}else b()})())
效果见本网站文章末尾所示。我这里直接用文字标明社交网络名称,当然也可以用相应社交网站的图标来表明。这个方法简单易行,理论上任何HTML网页中间都可以使用,其它的社交网站分享,如果有相应的JS代码,添加起来也是一样的道理。
全面进入HTTPS加密时代

新年来临,也有些新变化。在网站方面,我把我所有能换成HTTPS SSL的网站都迁移到了HTTPS SSL——包括我帮忙制作的英国湘味情中餐馆网站,全面加速进入到HTTPS加密时代。
本次升级为HTTPS主要借助于CloudFlare的免费HTTPS证书。由于这些网站也不再使用Media Temple的主机服务,于是改用了更为小众的戈戈主机,流量方面不再宽裕,安全性能方面也不得而知,于是也像土木坛子这个网站一样,启用了CloudFlare的CDN全球加速,再配合HTTPS+HSTS加密,HTTP/2功能也能启用。
因此,使用CloudFlare全球CDN后,可以最大限度提高网站的访问速度,并且节省源主机CSS, JS和图片等静态文件的流量,CloudFlare的反代理DNS能够隐藏源主机IP,进一步提高主机安全性。当然CloudFlare也不是没有缺点,CloudFlare免费CDN下面的HTTPS SSL证书不支持一些过时的浏览器。不过我觉得这些浏览器用户所占比例不大,没有必要迁就他们。
升级到HTTPS后,再到Google网站管理中心更新了一下,很快就收录了新的HTTPS链接。Google对HTTPS的支持力度实在是不一般。
2015年博客访问流量统计报告

2015年过去了,土木坛子博客也经历了不安静的一年,我也查看了一下这一年的网站访问流量统计情况,感谢Google Analytics忠实地记录了这一年的访问统计。
2015年本博客的总访问量 834,628,相比2014年150万下降不少,2014年一个突出的流量来自世界杯赛事直播。另外,2015年的博文数量也没有过去那么多(其实2015年写了171篇,2014年写了162篇),主要是因为兴趣转移和出差时间较多,写的内容自然较少,同时也较少涉及技巧技术方面,这些都导致了访问流量减少。
在这83万访问量中,约有33%访客来自中国大陆,前三名的城市毫不例外地来自:北京、上海、广州。约20%的流量来自美国,剩下的一半访客来自另外198个国家和地区,作为一个中文博客来说,覆盖面还算比较广。
所有流量中,约有52%来自搜索引擎(主要是Google),比去年的62%要下降不少,这反映搜索引擎在互联网的地位下降,移动社交时代人们可能搜索得少一些,像微信这种封闭的东西,占驻了网民的大量时间和精力,并且消费的都是一些被动推送推荐内容,更不需要搜索引擎。
访客使用的浏览器前三名分别是Chrome(55%), Safari(19%)和IE(8%), Firefox只有7%,排名第四,Firefox可能难以东山再起,Safari得益于iOS苹果系移动产品的流行,Chrome加上Safari两款浏览器占驻如此大的比例,说明访问土木坛子的访客都是高端网民,使用了前卫的浏览器。
操作系统方面主要是Windows,占53%,iOS苹果和Android安卓各占22%和11%。桌面设备的比例只占67%,从去年的76%继续下滑,其它三分一是手机和平板设备。显示屏幕分辨率前三名分别是1366x768(19%),1920x1080(14%),1440x900(8%),基本上都是宽屏显示器。
10个点击最多的页面除了首页外,都是一些技巧性的文章,我懒得公布出来,给我们的提示是,对网民最有用的东西、最能吸引访问量的可能就是这些技巧博文,但我对写这些东西并没有太大的兴趣,将来依然会较少涉及,博客还是记录自己,多关注一些形而上的东西。
总体来讲,作为博主,我本身对流量访问量没有特别的目标和要求,但看到一年到头,依然还是有如此大的访问量,我觉得也比较满意,中文第一博(如果还算是的话)月光博客2015年总访问量大约为300多万。而从我这个小小的博客访问数据中,也可以看出互联网在这一年中的一些变化趋势,管中窥豹。
国际汇款新方法:支付宝国际汇款又快又好
以前,想把人民币换成外币汇往国外时很麻烦,需要在国内换成外币带到国外或外汇汇往国外银行账户。现在,在支付宝的帮助下,国际汇款更简单了。支付宝的国际汇款功能,支持将人民币直接汇往全球绝大多数外币银行账号:英镑、欧元、美元、澳元等等(实际上业务是通过上海银行实现)。
所需要的只是一个支付宝账号(当然上面要有人民币),还有国外银行账号、姓名和SWIFT码。操作步骤很简单,直接在支付宝手机应用国际汇款里面填写以上需要的信息,顺带填写汇款人和收款人的地址信息和汇款目的,我选择的是“汇往本人国外银行账户”。
上周日上午填写国际汇款,本周一下午钱就到了我的英国银行账户,48小时不到,人民币换成了英镑。汇率方面很公正,几乎和中国银行的汇率一样,手续费现在只收50元人民币。我使用支付宝国际汇款的评价是又快又好,完全免了过去要亲自去中国银行柜台办理,并且手续费贵(还有电报费),时效也慢。
我主要是前一阵帮人代购英国奶粉,积累了一些人民币,刚好最近手头紧,所以就选择支付宝国际汇款将人民币变成英镑(国内每人每年的国际汇款购汇额度是5万美元等值)。
随着明年婴儿潮带来的奶粉代购,估计我将来还要使用支付宝国际汇款。也幸好有了这个简单的方法,否则,人民币国际汇款真不知有多麻烦。
网站加载速度优化技巧

网站速度的重要性不言而喻。如果不是墙的影响,土木坛子目前的加载速度异常快,我在英国加载本网站首页,可以实现500毫秒以内完成加载,半秒钟都不到。
这是如何做到的?采用了什么优化方案?简单来说,我的优化方案和技巧如下,供博客朋友提升网页速度参考使用。
简洁的主题界面
如你所见,土木坛子目前采用WordPress官方主题2012, 禁用了Google字体,除了Google Analytics统计代码,其它全部采用本域名下的资源,包括JS, 图片等静态资源——连Gravatar头像都缓存在本主机上。2012主题是自适应简洁主题,我的首页加载的数量不到10个,这样就能最大限度地减少加载请求等待时间,同时也减少主机服务器开销。
选择SSD硬盘主机
我目前使用的是英国主机QuickHostUK,SSD固态硬盘。固态硬盘存取速度比传统硬盘要快得多,这样可以大大减少访客等待的时间。可以预见,随着SSD硬盘价格不断下降,将来不采用SSD的服务器将被慢慢淘汰。而对网站速度有要求的应优先选择SSD硬盘。
使用缓存机制
本网站由WordPress程序搭建,本来是动态PHP程序按需生成页面。我使用了WP Super Cache插件缓存所有网页。插件在后台生成HTML页面缓存在主机上,避免访客每次访问都要动态生成HTML网页,同时也降低服务器的压力。访客访问网页时,主机就像一台硬盘一样直接给出需要的文件,同时该插件支持GZIP压缩,文件体积压缩后可以减少在网络传输中所需要的时间。
采用先进CDN
我采用了CloudFlare的CDN,它不是普通的CDN。它使用Anycast(任播)技术的DNS全球解析,最大速度减少DNS解析时间。同时CDN技术让访客从全球任何地方都能从最短物理距离的地方加载静态资源:图片,JS, CSS文件(JS文件会优化合并)。而且CloudFlare最近使用了HTTP/2协议,让浏览器不再受限于HTTP并发请求数量,即可以同时加载更多的请求。
总的来说,我使用的优化方案并不复杂,成本预算也不高,但让网站的加载速度得到了极大的优化效果,对主机服务器、访客双方都非常友好。在移动网络时代,性能和网速和PC有线环境有区别,因此网站更应该为访客提供快速的加载访问速度。