在 Instagram 上看“杂志”,百龄坛将九宫格图片玩出新高

用户众多的 Instagram 总是品牌商家们费尽心思创新的宣传阵地,尽管新媒体的崛起影响了人们的阅读方式,但是百龄坛威士忌却突破了 Instagram 的单篇内容读图,打造出一本全新的“杂志”。

这本名为“W”的杂志利用 Instagram 的九宫格,来提供页面完整的阅读体验。用这招的品牌已经不少了,但百龄坛所做的远比普通的视觉展示来得更加深入。

点进“延伸阅读”的图片,里面文字将引导读者进入另一个子账号,以同样排版精美的九宫格,展示内容文章的深度阅读。从“女士们应该如何挑选威士忌”、“《模拟人生》游戏里的调酒术”再到探讨“苦味饮料的崛起”,百龄坛杂志的创刊号虽然只提供了三篇文章,但其排版方式却大量创新,有竖向排版,也有横向排版,还插入了 Instagram 的小视频,让这本新“杂志”的阅读体验丝毫不逊于当下流行的 HTML5。

▲@w_issueone 杂志开篇和第一篇文章部分截图,四篇内容的完整呈现方式可以点击这里(1/2/3/4)。

百龄坛此次委托伦敦创意机构 Work Club 打造了整个项目,其目的在于改变威士忌陈旧、古板的形象,提振其在“千禧一代”眼中的知名度。这种融入杂志编辑、排版的全新阅读方式,也令 Instagram 九宫格玩出了新高。创意设计师 Simon Cheadle 称这只是第一次尝试而已,在不久的将来还有更多的新“杂志”诞生。

Sierpiński 的初等数论问题

波兰数学家 Wacław Sierpiński 对数论有很多研究。在他一生出版的 50 多本书里, 250 Problems of Elementary Number Theory 一书显得格外有趣。这里面不但有各种出人意料的数学事实,还有很多精妙的证明和大胆的构造,让人大呼过瘾。我从中选择了一些问题,在这里和大家一块儿分享。下面的文字没有完全照搬书中的内容,而是做了大量的改动和扩展;若有出错的地方,还请大家指正。个别题目会涉及一些初等数论中的著名定理,它们都可以在这篇文章里找到。

 

找出所有的正整数 n ,使得 n2 + 1 能被 n + 1 整除。

满足要求的解只有一个: n = 1 。原因很简单:如果 n2 + 1 = n(n + 1) – (n – 1) 是 n + 1 的整倍数,那么 n – 1 也必须是 n + 1 的整倍数,这只有一种可能性,即 n […]

[宇宙的奇迹]星星之死

本文作者:小龙哈勃

布赖恩·考克斯教授归来,借这本《宇宙的奇迹》,他将带领我们穿越时间与空间,开始一段充满真知灼见而又令人兴奋的旅程:你会见证那个137亿年之久,930亿光年之广,1000亿个星系星罗棋布,而每个星系又包含着千亿、万亿颗恒星的无法想象的庞然大物。

考克斯教授一生致力于认识我们的宇宙。关于我们自己,关于我们所生活的世界,我们有许多深刻的问题需要回答。在这本书中,他决心用一种特殊而易于理解的方式为这些问题寻找答案。

本书由科学松鼠会的两位成员李剑龙(Sheldon)和叶泉志(小龙哈勃)合作翻译,以下内容选载自本书第二章。

制作电视纪录片的时候,我们总是寻求各种视觉手段来呈现复杂的故事。拍摄《宇宙的奇迹》时,我们满世界地寻找可以用来打比方或作为影片背景的地方,但在我看来,最成功的场景莫过于巴西里约热内卢中心区的一所废弃监狱。

这个建筑的外墙已经差不多毁坏了,只留下一副砖骨架;所有的窗户,如果曾经有窗户的话,也全部消失了。每一个牢房有20~30个混凝土浇筑的双层床,相互紧紧挨着;以及一个小小的浴室,几块破烂的布条仍然搭在浴室入口处,以作为遮挡之用。牢房的墙壁是某种色彩斑斓的奇怪拼图,妖娆的少女和古怪的足球队海报夹杂其间。

这地方有两个让我觉得很不舒服的特点:首先,你很难不让自己想象被关在这里的感觉,因为对于一个像里约热内卢这样炎热潮湿的城市,在一个钢筋混凝土牢笼里被关个好几年肯定不是一种享受。第二点则更直接,那就是这座监狱现在正填满了爆炸物。从牢房里往外看,明亮的外部世界发着强光,如恒星表面一样压迫着你,让你几乎很难同时看到黑暗的室内。但那些光并不照进来,它停留在外面的城市里。当我小心翼翼地顺着满是坑洞的、看起来摇摇欲坠的楼梯往下走时,我觉得好像我正在下降到一颗垂死恒星的致密内核上一般。生命所必需的元素,就在这暴烈可怕的、远离光亮的地方合成。正是在这里,恒星从物质消耗者变成了物质生产者。

恒星都活在某种让人窒息的平衡中。它们的引力在努力压缩各自的大小,于是它们的温度升高,直至氢原子克服了彼此之间的电磁斥力,通过核聚变反应生成氦。这一过程释放出能量,使恒星得以发光发热,并因此抵消引力的作用。当氢被耗尽时,向外的光压消失了,引力又占了上风,恒星的结构被迫发生剧烈的变化。恒星迅速向内坍缩,留下了一层氢和氦组成的外壳。随着恒星的坍缩,恒星内核的温度迅速上升至1亿摄氏度,并开启了新的聚变反应。在如此高的温度下,氦原子也克服了彼此之间的电磁力,开始结合为新的元素——这些恒星开始以氦为燃料了。这一从氢聚变到氦聚变的转变有两个重要的效果:首先,恒星释放的能量足以抵消掉自身的坍缩,于是再度稳定下来并开始迅速膨胀。这是它的红巨星阶段的开始。其次,它开始合成对生命至关重要的元素。一开始,一对包含两个质子和两个中子的氦原子核,只能合成拥有4个质子和4个中子的同位素铍-8。这个铍的同位素并不稳定,会很快衰变。但垂死的恒星会产生极高的温度,比如在其内核,温度会超过1亿摄氏度。这些原子核的存在时间已经足够让它与第3个氦原子结合成一种重要的元素——碳-12。这就是宇宙中所有碳元素的由来:地球上所有生命中的碳原子都来自于垂死恒星的心脏。

氦燃烧阶段并不以合成碳为终结,因为在这一极其炽热的阶段,恒星内部的环境使得氦核可以和新生成的碳核结合,从而生成另一种生命不可或缺的元素——氧。氧在我们呼吸的空气中占21%。它也是水——生命之源——的必备成分,同时也是排在氢和氦之后的宇宙中最常见的元素。我们每个人每分钟大概要吸入2.5克的氧,所以这里或许应该着重提一下,这种生命不可或缺的气体最初是在一个极其不适合生命生存的环境中被制造出来的。

恒星相比较于其漫长的寿命来说,能制造碳和氧的时间可谓是白驹过隙。在大约100万年后,恒星的氦也消耗殆尽,对于许多恒星来说,发光的日子就到此为止了。对于一般尺寸的恒星,比如太阳,充满活力的岁月至此一去不复返。当太阳在大概100亿年后到达这一阶段时,它的引力已经不足以进一步压缩内核,以重启聚变反应了。这时,它会变得越来越不稳定,内部产生许多强烈的压力点,直到最终将整个恒星外壳炸开,将珍贵的氧、碳、氢以及许多别的元素释放到深空之中。在这一短暂的、大概不到数万年的时间内,垂死的恒星会绘制出宇宙中最美丽的画面之一:行星状星云。

在宇宙之光的短暂演出结束后,这样的恒星会收缩成一个比地球还小的小东西:白矮星。这就是数万亿颗此类恒星的最终命运。但对于像参宿四一样的大质量恒星来说,故事远未结束。质量是太阳1.5倍的恒星会继续开动元素生产线。当氦聚变结束之时,引力会进一步压缩恒星的内核。这时,内核的温度再次上升,启动了宇宙第三轮元素生产线。当内核温度上升到几亿摄氏度时,碳和氦结合生成氖(译注:不同资料的说法不一。有资料指出,恒星的质量为太阳质量的9~10倍时才能引发碳的核聚变反应),氖和氦结合生成镁,两个碳原子又结合生成钠。越来越多的元素成为火炉里的原料,随着温度的升高,一个接一个地产生重元素。内核进一步收缩,温度继续升高,触发了新一轮的聚变,将刚刚生成的元素组成的壳层留在外面。

合成了元素周期表上前25个元素之后,这个失控的生产线开始以硅为燃料,启动一系列复杂的反应,以合成第26个元素——铁。此时恒星的温度已经高达25亿摄氏度,但不会继续升高了。这时,原子核的稳定性已经到达了巅峰,无论怎么往铁原子里塞质子或中子,它也不会再释放能量了。恒星最后的能合成铁的阶段只有几天。在使劲榨干自己最后一点结合能来阻挡引力坍缩的过程中,恒星形成了一个几乎完全由铁构成的内核。聚合反应到此就停下来了。当恒星形成铁核之后,留给它的时间短得只能以秒来计。引力获得了完全的胜利,恒星在其自身重量下不可阻挡地坍缩,化作行星状星云。

当我在镜头中离开这栋监狱时,某处的电钮被按下,整栋建筑轰然坍塌,化为瓦砾。这毁灭只花了数秒的时间——和参宿四那样的红巨星轰然毁灭所需要的时间差不多。

 

【如同一颗正在死亡的恒星一样,一栋建筑的结构和它赖以屹立的基础会随着时间的推移而变得越来越不稳定。人们向这栋监狱施以援手,让它快一些毁灭,但一颗恒星在生命终结之时也会自己炸开,形成壮观的行星状星云。毁掉这栋监狱只需要短短几秒,这和红巨星坍缩花去的时间差不多。】

以下图片均为行星状星云。

【爱斯基摩星云之所以叫这个名字,是因为它看起来像是个戴着皮毛兜帽的人脸。它是由威廉·赫歇尔在1787年发现的。】

【这一合成影像拍摄的是螺旋星云。在地球上看来,这一行星状星云像是个油炸圈饼。但最新的研究表明,它实际上是由两个气体盘组成的。 】

【IC 4406是垂死的恒星吹出的行星状星云。和其他许多行星状星云一样,它看起来高度对称。IC 4406又被称为视网膜星云,因为中央恒星抛射出的尘埃纹理,看起来很像视网膜。】

【葫芦星云距离地球大约5000光年或4700万亿千米。这张由哈勃太空望远镜拍摄到的影像呈现了恒星喷射物质时的景象。】

【MyCn18是一个年轻的行星状星云,早在20世纪初就为人所知。然而,这张由哈勃太空望远镜在1996年1月拍摄的影像才第一次揭示了这个星云沙漏一样的形状以及错综复杂的纹理。】

【“猫眼星云”这个名字或许对这个星云恰如其分(其正式编号是NGC 6543),它是人类发现的第一批行星状星云之一,1786年由威廉·赫歇尔发现。它是我们在宇宙中已知的、结构最复杂的星云之一。】

【这张拍摄于1997年7月20日的影像呈现的是Mz3星云。Mz3一直被称为“蚂蚁星云”,因为在地球上来看,它酷似一只蚂蚁的脑袋和躯干。仔细观察发现,蚂蚁的躯干似乎是由两个炽热的瓣组成的。】

【这一行星状星云被称为科胡特克 4-55或K4-55,以它的发现者、捷克天文学家卢博斯·科胡特克之名命名。它的不寻常之处在于其多层气壳结构。】

最稀罕的物质

【位于加利福尼亚州的16-1金矿一度是美国淘金热的中心,如今这里是少数几个仍在开采的金矿之一。在这里和矿工们一块淘金是个有意思的体验。当我仔细观察这些看起来稀松平常的石头时,我可以隐约看到那熟悉的金黄色,显示着这石头里实际上藏着一块黄金。】

元素周期表上前26个元素在恒星的核心区合成,并随着恒星们不可阻挡的死亡散布到宇宙各处。但另外72个元素——其中有一些生命不可或缺的、或者我们认为非常珍贵的元素——是从哪儿来的呢?如果它们不是在恒星中诞生的,又会来自哪里呢?

在美国加利福尼亚州西北部的一处偏僻的森林里,大山隐藏着一个秘密。这个秘密在仅仅一个世纪之前曾让淘金者将这片安静的松林作为最终目的地。尽管今天这里已经颇为空旷,但在19世纪下半叶,这里曾是加利福尼亚淘金热的中心区域。成百上千的人来到这里,有的带着最简单的铁铲,有的带着最先进的掘矿技术,为了变得富有而在所不惜。淘出的黄金价值数亿美元,这催生了世界大城市之一——旧金山。对黄金的疯狂渴求如今已经消退,但隐藏在环绕着塔霍湖的森林中的16-1金矿仍然是加利福尼亚州内仍在开采的少数几个金矿之一。

近100年来,矿工一直在16-1金矿中工作。它是世界上最多产的金矿之一,这得益于其独特的地质结构。加利福尼亚的独特之处之一在于,它正好位于北美板块和环太平洋板块的交界处。

整个区域位于一个巨大的断裂带上,而山脉中有数千个稍小的断层。当你走入金矿时,实际上不过是在坡度平缓的隧道中沿着水平方向朝大山内部走去。这时你会看到到处都是断层。它们看来就是岩石和石英之间的肉眼可见的界限——那就是许多迷你断层组成的迷宫。在1.4亿年前的侏罗纪,恐龙还在金矿上方漫步,热水带着宝藏从这里涌出,并流过这些岩石。这些热水将从地底深处的黄金带上来,并卡在石英的缝 隙处。在过去的100年中,矿工就顺着石英的缝隙寻找 微微发光的黄金。

金矿的石英里镶嵌的黄金的纯度非同寻常, 有时可高达85%。这些厚厚的金屑在石缝中蜿蜒,在阳光下发出微弱的、让人熟悉的金黄色辉光。其余的成分中,有14.5%是银,以及微量的重金属。这一带区域的黄金几乎是俯拾即是:在河床上随便走走,就有可能捡到纯金块。考虑到截至2010年,金价仍高达每 克30英镑,不难理解为什么像这样的金矿仍然没有关闭。

[…]

polipo pac

最近又跟墙斗争了,吗的,升级安卓5之后手机特别耗电,最近终于找到原因了。google认为wifi没有连接,所以一直保持3g的连接,然后导致一些服务也在不停连接,然后就很耗电。这TM不能忍。

考虑到手机还要经常上一些国内的网站,一直保持VPN也不是办法。突然发现,android现在支持在连接wifi的时候设置pac,那就爽了。考虑到教育网翻墙快,我就设想设置一个跳板服务器,通过跳板服务器翻墙。又考虑到好多设备要翻墙,可以搞个缓存,于是就用到了polipo。

Polipo配置:

因为教育网的服务器不能翻墙,要设置polipo的转发,主要就是转发。之前设置过shadowsocks,直接转发到shadowsocks端口即可。没有shadowsocks,直接使用ssh转发也可以,只要是socks的都行。主要是shadowsocks比较专业。其他设置查看man。

socksParentProxy = “localhost:3451” socksProxyType = socks5

PAC:

既然wifi就支持PAC,就不需要其他翻墙软件了。我尝试过好几种方案。如根据解析的IP是否是国外,根据dns是否能解析等。最后还是觉得根据域名来比较好,网上有个gfwlist。然后将这里面的域名搞出来,但还是不全,比如gvt1.com就不在里面,没有他就不能在google play上下载东西(gvt1.com好像是google的CDN网络)。我还得考虑google scholar的问题,得用tor翻墙,否则会被认为是机器人。最后的PAC见github。

现在手机就好了,以前7个小时的电池能用1天了,爽!而且国内网站不卡,完美。

Neural Network

神经网络是很早之前就听到过的,而且相信不少人也知道他是干什么的,但应该很少人亲自从底写一个测测神经网络是不是真的那么牛B。

最早的神经网络应用是手写文字的识别和车辆自动导航,也是CMU的走在前面。在20世纪前还是有很多人研究的,但是20世纪初就渐渐不行了,遇到瓶颈了。最近计算能力强了,有了deep learning,神经网络又火了。我先搞搞20世纪前的神经网络再说。

基本原理:

 

输入向量,如图像是每一个像素点,或者平面上的坐标点(x,y)。如果没有隐藏层,网络只能进行线性划分,而有一个隐含层则能近似所有函数(据说)。可能因为这一点导致到现在才出现deep learning. 因为只有一层隐含层对于复杂问题比较难训练。而对我一层足够了。输入信号根据权重相互组合,可以是线性也可以是非线性,输入到下一层,触发响应函数如sigmoid函数。一层层下去,就能得到输出信号。

道理我都懂,可是为什么正确的。关键在于怎么训练。每一个数据输入,都能得到计算出的结果,然后与预期结果比较,根据这个差值调节信号组合的权重。比如根据输出层的差值调节隐含层到输出层权重。这个求导即可。详见Networks and Learning Machines第130页。但是从隐含层调节输入到隐含层的权重就比较麻烦,因为不知道隐含层的期望值。这可以用导数的性质解决,同样见Networks and Learning Machines。

初步实验:

最好的实验就是XOR,因为非线性而且简单。但也不是一下子成功,因为训练的时候涉及一点参数,刚开始根本不知道设置多少。只有4个数据怎么训练,需要循环的训练,否则基本没有效果。代码见github。从测试结果看,还是很有适应性的。

 

双螺旋分类:

two spiral常常用来测试分类器的性能。加一个二次项会让结果比较好。代码见github。我也用matlab内置的神经网络训练器nnstart来了一发,对比结果见下。效果好像差不多。

 

 

总之,神经网络确实帅,“我根本不知道他是怎么工作的”,就是这么神奇。但是写代码还是有点蛋疼,我这个c++版本很简陋,也没有进行封装,只是为了看看神经网络是不是真的屌。

 

Ellipsoid Method

椭球法是古老的优化方法,现在看来效率不高,现在主要用的是内点法,单纯形法。但我觉得ellipsoid method的思想比较独特,有必要好好了解一下。

主要思想:

考虑一个函数,只有一个最小值而且是凸的。先找到一个凸的集合包含这个点,然后按照一定规则收缩这个集合,到最后这个集合很小且包含那个点,那就达到目的了。

主要有两个问题,1.是怎样的集合 2.如何收缩集合。集合可以是一个多面体,这时就是cutting-plane method。收缩是根据subgradient g来的,因为f(x) >= f(x0) + g'(x-x0)。 可以舍去那一部分平面。达到收缩的目的。但是这里cutting-plane method慢啊,主要是找下一个x0很慢,要保证迭代少,必须要使x0尽可能平方集合。

所以就有了ellipsoid method。每次x0就是椭球的中心,然后使的椭球能包含上一次迭代的椭球和剩下的平面的交即可。这个简单也是最重要的部分,有人早就解决了。详见half ball lemma.

迭代过程:

为了把椭圆从矩阵的形式转换为能画的形式,费了一点劲。但是完美的结果,让我彻底相信了这个方法。迭代只有三步。但证明还是有点麻烦,见上面的half ball lemma。

gt = g/sqrt(g’*P*g); x = x – 1/(n+1)*P*gt; P = n^2/(n^2-1)*(P-2/(n+1)*P*gt*gt’*P);

上图是第一步迭代到第三步,可以看出椭圆越来越小,但是包含那个最优点。大概40步就有比较理想的结果。具体代码见github。

参考: localization methods  EE364b […]

shadowsocks和systemd

起因:

据说国家局域网在4月就开始实施了,我顿时就吓尿了。上个外网要2次NAT不是坑爹吗。加上最近据说IOS的VPN也被封了。我就觉得手机翻墙应该换个方式了。找了找发现shadowsocks最合适,手机也不用root。在学校这个是没有任何问题的,在家速度好像慢一点,估计是出口的时候非教育网审查比较严格。所以我宁可经过学校的电脑翻墙。那么就需要转发。(电脑可以在学校的电脑开个shadowsocks客户端转成sock5,然后接收所有非本地的请求,浏览器可以直接使用)

解决:

转发有很多种方法,比如github上有人给出的iptables和haproxy,我还是用最简单的ssh吧。可是ssh相当于加密两次(shadowsocks加密,ssh转发加密),有点浪费。

ssh -fNqn -L \*:28765:shadow_server:shadow_port server

 。连接服务器时,把相应端口和ip改成学校的即可。

维护:

很久之前就想搞搞systemd,但是KDE的开机启动太方便,以至于我根本不想理systemd。回家不登录图形界面就不能利用KDE了。必须得学学。关于systemd的争议已经很久了。我觉得还是systemd更先进,尽管刚开始接触有点复杂,其实还是很容易使用的。最好的学习方式还是看看别人怎么写的。

根据wiki,可到

/etc/systemd/

 和

/usr/lib/systemd/

 找相应的service看看写法。然后根据man和service,大概就能写出开机脚本了。

这次我是用他来启动一个ssh转发的开机脚本。如下: 一般有ssh都是需要以用户模式启动的,因为要用到认证文件。

systemctl –user enable sshforwarding.service [Unit] Description=Port forwarding via ssh After=network-online.target [Service] Type=forking ExecStart=/home/york/Program/bin/ssh-forwarding.sh Restart=on-abort [Install] WantedBy=default.target

日志:

journalctl 是和systemd配套的。为了查看服务的运行情况,就要查看日志。用

sudo journalctl -F _SYSTEMD_UNIT

 找到要查看的服务的名称,然后

sudo journalctl -e _SYSTEMD_UNIT=shadowsocks@shadowsocks.service

 就能查看过滤后的日志,查看连接信息。

测试:

现在手机翻墙感觉快了一点,日。不知道是不是心理作用,youtube能流畅看了。希望国家局域网是谣言,日tm。

2014总结

一个月没更新坑爹啊。主要是没有时间和内容可以写。但是为了保持连贯,今天必须更新一次。所以就总结一下。

感觉编程方面牛b了许多。 想做的事情很多都开始做了。比如打GAL game。最近也见了很多老同学。很高兴 稍微学习了一点黑客技术,但是感觉不花大精力难以变的牛b,所以我就此打住,毕竟我的努力方向不是这里。 通过这个博客认识了一个远方的朋友,说明我的博客还是有人看的。这就是意义所在 DOTA水平也提高了,可以跟同学一起飞了。说好高中玩的,到了大学才开始玩。我一个不擅长游戏的人,也能一点点进步 跟原来的导师还没有彻底断了联系。这是我蛋疼的地方。 现在的导师我很敬佩。其他不说,就说导师有时候要给学生写评价,原导师都叫我们写好然后他签字,现在的导师都是认真自己书写。 现在的实验室氛围很好,能安静学习,能相互帮助,而不是坑爹的在那边sb的玩耍。 决心好好吃早饭,因此买了电饭锅。感觉自己要走上黑暗料理之路了。 说说几个工具,pushbullet, btsync, sshfs为我提供了很多便利。 最后希望明年更吊。

要Do去了,跨年。

CUDA N-Body模拟

这学期的多核课简直爽,之前一直想玩的cuda也玩上了。真的是相见恨晚,我见识到什么叫吊。

CUDA:

CUDA就是Nvidia GPU自带的计算平台,它是为了克服GPGPU的弱点而诞生的。我不知道ATI有什么类似的,但CUDA肯定是Nvidia的杀手锏。因为他计算能力确实强,而且编程非常灵活简单。唯一的不足是需要对硬件有所了解。当然了解并行算法也是非常重要的。

简单说下CUDA的基本原理。CUDA是牺牲单个核的主频,以核的数量来取胜。比如我笔记本的GT540M就有96个CUDA core。也就是说最多96个线程同时运行。基于这点CUDA的自然运用就是大量线程,而在CUDA里,线程的切换基本不消耗资源。问题在于如何组织这些线程。可以看basics of cuda。CUDA每个任务称为一个kernel,一个kernel包含一个Grid,一个Grid可以有很多Block,Block中可以有很多线程。而且Grid和Block可以是3维的。考虑一维情况,一个kernel的总线程是GridDim*BlockDim。而CUDA的调度单元是一个warp,一个warp有32个线程。这的意思并不是32个线程同时执行一条指令。比如我有16个CUDA core,我是先执行前16个线程,然后后16个线程。而且最近CUDA还支持指令并行,比较复杂,详见simt-architecture,stack overflow.

N-Body:

N-body说白了,就是万有引力。所以计算复杂度是O(N^2),(虽然有O(Nlog(N))的算法),1000个粒子,对CPU来说已经负担很大了。所以要使用GPU。所以算法很简单,关键是怎么优化。如果是最原始的方法,每一个线程中对都计算N个粒子对其作用力,那要读取N*N次内存。所以要采用分块的方式计算,P个线程协作,每次读取P个到共享内存,然后计算P个之间的作用力,那么只需N*N/P次内存读取(共享内存很快)。然后为了计算简单,这里没有碰撞,假定粒子能穿过粒子,其作用力为

sum(ri/(ri^2+eps^2)^(1.5))

 ,eps为一个小量,防止作用力无穷大。

实现:

为了简单,画图用python的matplotlib,计算用CUDA。这里涉及接口问题,可以自己了解一下。最后的效果是模拟二维的。如下图的双星也是很漂亮(初始到一段时间后)。一共4096个粒子,30帧每秒,相当于(30*4096*4096*20 / 1024 / 1024 / 1024)  = 9GFLOPS,CPU顶不住。

1.2.3.

 

科学的在主机间传输文件

长久以来,一直被如何高效的传输文件困扰。比如说打印PDF啊,在主机间传输文件啊。去打印店的话用USB可以解决,但这样还好中毒,一不小心还会把U盘忘掉,还要插拔4次,真是麻烦。况且很多情况下用不了U盘。看了我下面的方法后,U盘就剩下在没网的情况下使用的价值了。

原始:

要复制另一台主机的一个小文件,而且现在正是ssh的状态,那么可以直接cat,然后选中内容,再粘贴到本机文件。但如果这个小文件是个zip,或者其他什么二进制文件就不能直接复制了,因为不可打印字符的存在。那就用base64。简单粗暴。

cat test.zip | base64 > copy cat copy | base64 -d > recover.zip

 Netcat:

顾名思义,就是联网的cat。netcat(nc)被称为Swiss Army Knife of networking.我还没有深入研究过,就使用的几个命令来看,确实很吊。他也能用来传输文件。下面是简单的例子,具体选项看man。这个方法很迅速,很干净。缺点是对方是windows怎么办?

nc -c -l -p 1234 > recive.zip # first listen on 1234 to recive file nc -c -w 3 127.0.0.1 1234 < test.zip # then input file on remote

临时Web服务器:

这tm总没问题了吧,只要有浏览器就能传输文件了。python,对,python就是这么方便。我就想说,U盘存在的意义在哪?据测试,python的SimpleHTTPServer能轻松胜任10M/s的传输速率传输3G文件。更高速率还没测过。

[…]

Category

Archives