原子有多小?

在《费曼物理学讲义》中,物理学家费曼曾打过一个比方:

如果你把一个苹果中的原子都放大到跟整个苹果那么大,那么苹果本身就会跟地球差不多大小。

也即是说在体积方面,有:

原子 : 苹果 ≈ 苹果 : 地球

所以,当你吃掉一个苹果时,你吃进去的原子数,相当于能把地球填满的苹果的数目。

太阳系有多空旷?

太阳系有多空旷?可能比你能想象的最空旷的情形还要空旷许多!

下面的这个网站用真实比例绘制了太阳系的图像:

http://joshworth.com/dev/pixelspace/pixelspace_solarsystem.html

在右上角的按钮中你可以选择“中文版”;其中的月球只有一个像素大小,在漫长的(乃至无聊的)横向滚动中,你一定能深刻体会到它的空旷!

为避免你太无聊,在漫长的滚动过程中,作者还不时插入一些文字跟你聊天!如果嫌手动滚动太慢,可以点击右下角的一个按钮,这时屏幕会自动以“光速”向右滚动,真的!

遥远未来的时间线(Timeline of the far future)

在遥远的未来有什么有趣的事情会发生?此时此刻的一切在遥远的未来是否还会重现?这个遥远未来时间线的视频会给到你一些信息:

http://www.bilibili.com/video/av1925731/

注:这些信息来自于 wiki 百科上的这个词条(中文版的已经过时了~):

https://en.wikipedia.org/wiki/Timeline_of_the_far_future

CSS 一笔画动画原理介绍

之前弄了一个域名及签名的一笔画动画,但只是做了一个结果展示,背后的原理没有去介绍,这次则弄了一个详细的原理介绍,参见:

http://exp.xiaogd.net/demo/css/stroke-animate/sa-demo.html

这次就没有去做什么幻灯片了,感觉那种形式也有其不灵活之处,这次还是回归了传统的方式,但跟传统的博客又有所区别。

主要是增加了一些互动方面的元素,用户可以与页面进行一定的交互,比如播放动画演示,通过一些输入元素实时调整参数的值以观察效果方面的改变。我感觉这种知识介绍与交互的糅合在增进用户理解方面还是有一定优势的。

当然现在的交互还是比较简单的,如果你有更好的想法,欢迎留言!

重复性管理——抽象的重要性(下)

接着上一篇的谈论,继续谈论抽象在重复性管理中的重要作用。

好的抽象与糟糕的抽象?

通过前面的一些例子,你可能形成了一个印象:所谓抽象很多时候就是把一些代码封装到一个方法中。

继续阅读“重复性管理——抽象的重要性(下)”

宇宙的尺度——从普朗克长度到可观测宇宙

这个精彩的 Flash 展示了从最小的普朗克长度(Planck length)(10^-35 m)到可观测宇宙(Observable Universe)(10^27 m)中的各种物体。

具体链接可见http://htwins.net/scale2/index.html,本文后面也嵌入了一个。有各种语言的版本,浏览器要能支持 Flash,缺省尺度为人的大小,鼠标滚轮前滚或后滚查看更大或更小的尺度的物体,也可以拖动下方的滚动条来缩放,能更精确地控制缩放;点击具体的物体还可以查看更详细的介绍。

This device does not support Adobe Flash, which the Scale of the Universe 2 requires.Watch the YouTube video!

域名和签名的 CSS 一笔画动画

之前看过别人用 CSS 的属性 stroke-dasharray 和 stroke-dashoffset 制作的一笔画动画,觉得挺好玩的,也就自己做了个:

http://exp.xiaogd.net/demo/css/stroke-animate/stroke-animation.html

总共两个动画,一个是自己的域名 xiaogd.net,另一个是自己的签名,其中 svg 中的 path 提前在 inkscape 中做好,然后复制到网页中即可。

动画的实现感兴趣的同学可以查看网页的源代码了解。

impressjs 与 introjs 的整合(部分改进)

之前曾尝试对 impressjs 和 introjs 进行整合,不过很不幸,整合后存在很多问题。

一个主要的问题是两者都重度使用了 transform 属性,造成很多冲突。最近浏览了一下 introjs 的 github 主页,在它的 issue 页面上,我尝试搜索了一下 transform 相关的 issue,果然有不少相关的帖子在说这个问题。 继续阅读“impressjs 与 introjs 的整合(部分改进)”

重复性管理——抽象的重要性(上)

什么是抽象及它在重复性管理中的作用

Haskell 语言的设计者之一 Paul Hudak 曾说过一句略带夸张的话(overstatement):编程中最重要的三件事是:抽象,抽象,抽象

abstraction, abstraction, abstraction”are the three most important things in programming。

如果你去问一些资深开发者,程序员最重要的的能力之一有哪些?那么“抽象的能力”是绝对能排得上号的。

继续阅读“重复性管理——抽象的重要性(上)”