螃蟹在剥我的壳

经人指引,
读到了一首三行诗。

螃蟹在剥我的壳,笔记本在写我。
漫天的我落在枫叶上雪花上。
而你在想我。

读第一遍的时候并没有什么感觉,
而再读一遍的时候,却给我带来巨大的冲击与共鸣。
当一切都是反着的时候,你才会想我。
简直就是我的真实人生写照。

//补充1

据说这三行诗是抄袭的,我也看到了被抄袭的原文。怎么说呢,我还是喜欢这一版。

最新在搜歌的时候,
无意间搜出了关栋天先生的《道》。
对的,歌词就是老子的道可道,非常道,
再配上略微诡异的音调,倒是非常符合我的口味。
被凡尘所扰的同学可以尝试下。

鲸鲨的思路探讨

鲸鲨是一个不同以往的项目。
因为我有一个很大的构思。

对于初学者,熟练者与精通者而言,需要不同的训练方式。
初学者更加侧重于基础知识的重复记忆。
熟练者需要掌握更多的技巧与经验,即俗称的语感。
而精通者需要的,则是可以模拟母语者的思考方式与跟上语言的最新发展。

鲸鲨的范围是在高等熟练者与精通者之间。

入门的方式有无数种,精通的方式呢?
鲸鲨的所有内容组织只根据一个核心:情境。

没有情境的语言是毫无意义的。
教科书里会有文章,有对话,去刻意的编撰不同的情境。
但写在书上的场景,人物,说话方式,从被写下来的那一刻起就已经落后了。
语言是根据人的需求,动态发展与变化的。
可以被精确记录的语言,是已经没有人使用的语言。
得益于信息时代的互联网,
我们可以方便的收集到最新鲜的语言。

鲸鲨应该去找到每一个情境,与每一个情境下最适合的语言组织方式。
并且时刻保持最新状态。
然后用来考验学习者,
告诉学习者。

从点滴做起,实现这幅蓝图。

近况

关于如何阅读代码,原来早有好多工具已经诞生。
其思想与我之前构想的也差不太多。
在一个不崇尚技术与效率的圈子里呆久了,
早已看不见世界的真实样子罢。

最近在push三个project。
一个是一直在进行的神秘项目,目前的关键字为“snoopy”。不宜多讲。
一个是之前提到过的JWMA,野心很大,但很难实现,且必须实现,为了她。
一个是一个简单的ios应用,非常简单,但我非常想做,用swift做。

阅读代码的工具想试试understand,试玩写评测

关于阅读代码

与其说阅读代码如同读书,不如说如读棋谱

从小阅读计算机编程书籍,
大师们就教育我,
写代码如同写书,
代码是写给人看的,
不是写给机器看的,
所以一定要保证有优良的可读性。

具体的来说就是要做到:
遵守命名规范;
清晰的注释;
最大限度的代码复用。

最好呢,
还有要有完善的文档。

但是,书与程序还有有些不同。
不同的地方在于程序是非空间线性结构。
对于书来讲,
我无论从哪开始翻起,内容都是连续的。
尽管对于一些情节紧凑的小说来讲,
可能从中间开始看,仍然不明所以,
但不影响叙事的线性顺序。
从物理空间的角度看,作者一定是希望读者从上到下,从左到右,从前一页到后一页的顺序来阅读。

而代码不是这样子。
假如我们将一个系统的代码全部打印出来。
连怎么排序都是个问题。
最简单粗放的方式就是按照文件名排列(排序A)。

如果我们按照读书的方式来阅读排序A的结果,
除了超人之外很难能读懂这个系统到底要做什么。
(可以设想下排在前几本的程序会是什么,按这个顺序读代码会是一场灾难)

对于书来讲,最开始一定会是目录和前言。
那我们作一个代码文件的或者函数的目录,并且索引出来。
然后写一个介绍系统功能的前言(排序A改)。

这样可以通过类似于翻新华字典的方式,
来阅读我们的代码。
但我们还是不知道该从何读起。(先找到MAIN()是个明智的做法,但有些时候并没有Main)

一个故事,一定有一个开头,
一个代码,一定有一个入口。

代码的内容的组织方式与故事不同。
代码在物理空间上不是线性的,
而是在时间上线性。

从代码的入口开始,可能下一行的内容要跳到别的代码里,
然后再跳进另一本代码里,
然后出现了一个分支,
再次进入另一本代码
。。。。。。。。
终于在翻了大半本书之后,
跳回了第一页。
然后下一行,
再次跳遍了大半本书。
内容之间只有前后,
没有绝对的下一页一定和这一页相关,
甚至下一行与这一行的相关。

其实,如果看过棋谱的话,就会知道,
代码的这种特性,
与棋谱很像。

棋谱,
有两种记法。
一种是按照着棋的顺序,以纯文字描述。
如象棋棋谱中的 马五平七,车三进四。
一种是绘成图,然后每一着上写着步数。
读者自行按照图中的数字脑补在不同时点棋盘上的样子。

当然,代码是无法如同第二种技法那样具象化的。
所以,阅读代码的最好的方式并不是按照文件和上下文的物理顺序来读,
而是按照时间顺序来组织。

以后可以做个工具以静态分析的方式将程序的调用顺序列出来,
以达到debug单步执行的效果。

科普系列-发起

最近脑袋中一直在不断的盘旋着很多的想法。
其中一个就是科普。
科普什么呢?

计算机世界总是显得对行外人很不友好。
虽然有一些计算机科学的概念已经深入到普罗大众,
比如副本重启之类,
但很多基本原理还是不被行外人所知。

相比于经济学与心理学等热门学科的普及率,
计算机科学还是相当自说自话,空中之楼阁。

所以我打算以好莱坞常用的手段—–拟人的方式,
将计算科学的一些基础概念与原理描写出来。

会是个很大工程。
也许写的也不会很吸引人,
但我还是会尽力一试的。

想法诞生于一部美国动画片,
讲的是一个药丸与免疫细胞战胜致命病毒,拯救男主角的故事。
但是名字想不起来了,等想起来之后再更新。

旅行@3

最让人羡慕的,永远是追逐梦想的人。

在日本,无论是在人来人往的大街上,
还是在周末的公园中,
还是在电车里,
无时无刻都能看见背着吉他的年轻人。

其中有一些还做学生打扮,
有一些已经有了艺人气质,
匆匆地赶着路,
或与朋友大笑,
或默默不语。

日本街头艺人
日本街头艺人

年轻人在街头卖唱,
俨然已经是东京的文化现象。

每天,新宿车站附近都在熙熙攘攘。
其中印象最深刻的就是在小田急百货的门口和去往光面的路上,
那些为了欣赏自己音乐的人而歌唱的人,
与为了欣赏自己喜欢的音乐而驻足的人。

光面----卖点是正宗中华面(喂。。哪里正宗?)
光面—-卖点是正宗中华面(喂。。哪里正宗?)

唱的时候全身心投入,
唱完之后鞠躬感谢驻足倾听的人,
然后发传单介绍街头演唱行程。

听众在听完一曲之后,鼓掌致谢。
如果真的被他们的音乐所感动,
可以买张CD来支持他们。
当然,一张要几千日元。//大概100到300人民币不等。正版。。。

街头艺人的CD
街头艺人的CD

日本演艺圈的竞争激烈又严酷,
每年都有大量年轻人进进出出,
能够大红大紫成功的起来的人屈指可数。
为了出名赚大钱,真的值得去挤那支独木桥么?

乐队主唱
乐队主唱

直到那天,
南大泽

那天有点冷,
在outlet的中心舞台,
有一只乐队在为游客们演唱。
主唱妹子只穿了一件连衣裙,
演唱开始前不断的重复着“今天好冷”。

但开始了之后便忘情的投入到了演唱之中。
我在想,一定是收了不少钱才这么玩命吧。

就这么一直到了表演时间结束,
乐队其他成员立即给主唱妹子披了一件上衣,
然后大家开始有说有笑的收拾乐器,
主唱妹子走下台来,
做到观众旁边,
询问他们感觉表演的怎么样。

这种笑容我那么似曾相识。

如果没有发自内心的热爱,
是不会在恶劣的天气,
寥寥的观众面前,
如此卖力,
如此欢笑。

乐队
乐队

我再次回到了新宿街头,
仔细观察了街头艺人的脸,
仔细观察了电车里背着吉他的年轻人的脸,
仔细观察了公园里,围坐在一起高歌的人的脸。

没有厌倦,
没有绝望,
没有痛苦。

是希望,
是不顾一切奔向梦想的坚毅。

勇者,
从来不是最强的人,
而是可以战胜自己的人,
是可以向着梦想前进的人。

中文网页的字体

在 Web 上应用字体是一项基本技术,同时也是一门艺术。对于英文字体来说可选择的范围实在是太广泛了,合理的使用它们将会为你的网站增色不少。关于英文字体的使用和搭配技巧,在这里不做赘述,只推荐一套非常好的视频:Fundamentals of Design by CodeSchool

{{more}}

而真正的挑战在于中文字体,由于中文字体组成的特殊性导致其体积过于庞大,除了操作系统内置的字体之外,我们很难在网站上应用其他的字体。在可选性很差的前提之下,如何正确的使用中文字体呢?

首先,以下的字体声明都是很糟糕的,切忌使用:

font-family: “宋体”;

font-family: “宋体”, Arial;

font-family: Arial, “宋体”, “微软雅黑”;

font-family: Helvetica, Arial, “华文细黑”, “微软雅黑”;

中文字体也有英文名称

很多开发者忽略了这一点:尽管我们在操作系统中常常看到宋体、微软雅黑、华文细黑这样的字体名称,但实际上这只是字体的显示名称,而不是字体文件的名称。虽然说在大多数情况下直接使用显示名称也有效,但有些用户却工作在一些很极端的情况下,这会导致你的字体声明无效。

比如说,用户安装了中文版的操作系统(这意味着系统有中文字体),但是却切换到了以英文为主要语言——这种情况在那些希望加强英语锻炼的中文用户当中是很常见的。这时候,操作系统很有可能无法按照显示名称找到正确的字体,所以我们要记住的第一件事情就是: 同时声明中文字体的字体名称(英文)和显示名称(中文),就像这样:

font-family: SimSun, “宋体”;

font-family: “Microsoft YaHei”, “微软雅黑”;

font-family: STXihei, “华文细黑”, “Microsoft YaHei”, “微软雅黑”;

永远不要忘记声明英文字体,并且英文字体应该在中文字体之前

记住这个事实:绝大部分中文字体里包含英文字母(但是基本上都很丑),而英文字体里不包含中文字符。

在网页里中/英文混排是很常见的,你绝对不会喜欢用中文字体显示英文的效果,所以一定不要忘了先声明英文字体:

font-family: Georgia, SimSun, “宋体”;

font-family: Arial, “Microsoft YaHei”, “微软雅黑”;

另外还有一个好习惯,就是在最后补充英文字体族的名称。字体族大体上分为两类:非衬线和衬线,它们之间的区别和使用规则请见本文开始介绍的视频。一般来说,你应该这么做:

font-family: Georgia, SimSun, “宋体”, serif;

font-family: Arial, “Microsoft YaHei”, “微软雅黑”, sans-serif;

请注意:以上两句声明中的宋体和微软雅黑不应该调换(尽管调换了也不会发生错误),这是因为从字体的式样来看,微软雅黑是非衬线的,而宋体才是衬线的。然而中文并不像英文那样严格区分字体族,所以这一点在实际应用当中并不那么重要。

别忘了照顾不同的操作系统

作为一个 Web 开发者,你理应对 Windows, Mac OS, Linux 家族等常用操作系统里的系统字体有足够的了解,特别是中文。在这里,我们假设目标网站要同时给予 windows 用户和 mac 用户最好的字体体验,于是我们可以这样声明:

font-family: Helvetica, Tahoma, Arial, STXihei, “华文细黑”, “Microsoft YaHei”, “微软雅黑”, sans-serif;

这句声明都做到哪些事情呢?让我们一一说明(括号内代表其对应的目标操作系统):

对于英文字符,首先查找Helvetica(Mac),然后查找Tahoma(Win),都找不到就用Arial(Mac&Win);若是以上三者都缺失,则使用当前默认的sans-serif字体(操作系统或浏览器指定);
对于中文字体,我们已经了解其规则了。华文细黑(Mac),微软雅黑(Win)是这两个平台的默认中文字体。

注意向下兼容

到此为止,我们的字体声明已经很不错了——如果你不必考虑还在使用旧版本操作系统的用户的话。遗憾地是,中文市场还有大量的用户在使用 Windows XP,宋体才是他们的主要中文字体。为了照顾到这些用户,你可以为微软雅黑增加一个 fallback:

font-family: Helvetica, Tahoma, Arial, STXihei, “华文细黑”, Heiti, “黑体”, “Microsoft YaHei”, “微软雅黑”, SimSun, “宋体”, sans-serif;

同样地,你看到我们也为 Mac 系统使用了黑体作为 fallback。

其他

不加双引号可以吗?

可以。有些英文字体的名称多于两个单词,因为单词中间有空格所以需要用 “” 包裹起来。中文字体很特别,按照英文的角度来看,像微软雅黑究竟算是一个词还是四个词呢?没关系,好在中文字体的名称里没有空格,所以 “” 不加也没什么大碍。

不过,谁都不能保证在任何操作系统/浏览器环境下都是如此,若是发生了奇怪的事情,不妨加上双引号试试看。

可以默认显示某种字体吗?比如微软雅黑

你可能注意到了,在我们最后的字体声明里,华文细黑是默认字体(如果你的系统上安装了声明里所有的中文字体的话),为什么我要先声明 Mac 系统的字体呢?

按理来说,大多数网站的主要目标市场还是 Windows 用户的,所以理论上这个才是合理的声明:

font-family: Helvetica, Tahoma, Arial, “Microsoft YaHei”, “微软雅黑”, SimSun, “宋体”, STXihei, “华文细黑”, Heiti, “黑体”, sans-serif;

但实际上却并非如此。在中文字体的用户群体里,很大一部分拥有 Mac 的人都同时安装了 Win 下常用的中文字体(这得归功于 Office for Mac);但极少有 Win 用户去安装 Mac 下的中文字体。

因此,把 Mac 用字体声明在前面几乎不会对 Win 用户产生什么影响(因为他们压根没有!),倒是用来做 fallback 的黑体可能会取代微软雅黑的位置,所以更保险的做法或许是这样:

font-family: Helvetica, Tahoma, Arial, STXihei, “华文细黑”, “Microsoft YaHei”, “微软雅黑”, SimSun, “宋体”, Heiti, “黑体”, sans-serif;

但无论如何请不要把微软雅黑放在中文字体的最前面,作为史上最丑陋的中文字体之一,微软雅黑实在不是什么好的选择,请照顾一下被 Mac 宠坏的用户吧,谢谢!(仅代表个人观点)

BTW,如果你也像我一样不喜欢呆头呆脑的微软雅黑,那就干脆把它删了吧~

到此为止,虽然在我们的示例代码里没有包含 Linux 家族的例子,不过相信你也明白该怎么做了吧。

一点补充

鉴于一些人对微软雅黑的排位产生异议,我不妨把上文的解决方案再延伸一步。事实是这样子的:

把微软雅黑放前面,会导致安装了微软雅黑字体的 Mac 用户不得不面对微软雅黑,而在 Mac 下比微软雅黑优雅得多的中文字体比比皆是;
把 Mac 下的字体放前面,也会对 Windows 用户造成差不多的困惑,毕竟微软雅黑是 Windows 平台下显示效果最好的字体(目前为止);

1 和 2,哪一种出现的概率更大一些?我想这是一个不需要计算就能知道的答案吧?

但是——的确还有另外两个因素在纠结着:

不少 Windows 用户因为各种原因关闭了 ClearType,在此情形下微软雅黑将会惨不忍睹!但是 Mac 的字体也不是好的选择,真正的胜出者?猜对了,宋体。
绝大部分 Mac 下的黑体在 Windows 下模糊不清,而微软雅黑虽然丑但在 Mac 下至少能看。(间接体现了两个平台的字体渲染技术的差距)

所以在实践中,真正接近“万无一失”的方案需要考虑以下几点:

利用 UA 判断为不同的平台加载不一样的字体声明;
除非有特别的原因,否则尽量保持正文用宋体,标题和其他可以放大些的地方用微软雅黑(针对 Windows);
Mac 下的冬青体效果极佳,但是该字体在 Mac OS X 10.6 以前是没有的,所以谨慎考虑你的用户群体,或者使用华文黑体系列做 fallback;

最后,我不想再和任何人争论字体的优劣,本文的目的是介绍使用方法而不是字体选择。“美”或“丑”向来都是很主观的事情,只因为我是作者,所以我免不了会有倾向性,然而我也相信你自己会有正确的判断,和我较真没有任何实际意义。

本文来自于nightire,原文地址。

原文链接:http://designlei.com/coding/%e4%b8%ad%e6%96%87%e7%bd%91%e9%a1%b5%e7%9a%84%e5%ad%97%e4%bd%93/