阅读是汲取知识的途径之一,但烦杂的网页提了额外我们诸多不需要的信息,这有时候非常干扰我们阅读。回归阅读 内容的本身,其实通过 Readability 这个脚本 就能抽取页面的主体内容。
不过,Readability 提供的仅仅是个 Bookmarklet,如果我们需要将其导出、打印等操作时就显 得捉衿见肘。需求驱动行动, 于是就有了这个 PHP 库 。PS,同时您还可以找到 .net 版本的 Readability ,以及 node.js 版本的 Readability 。
这个库能做的事情非常的简单,就是找到页面的主体内容并返回。调用这个库非常的容易,实例代码如下:
require 'lib/Readability.inc.php';
$Readability = new Readability($html, $html_input_charset); // default charset is utf-8
$ReadabilityData = $Readability->getContent();
echo "<h1>".$ReadabilityData['title']."</h1>";
echo $ReadabilityData['content'];
如果您不在意技术本身, 那么这里有个现成的线上工具 。只需要粘贴入需要阅读的网页链接,这个工具就能够重新生成适合阅读的页面(例如: 原页面 、 Readability 以后的页面 )。

然后利用 Mac 的 pdf 打印输出功能,就能非常方便在 kindle 等阅读器上使用。
Q&A
输出的页面似乎有乱码?
PHP Readability 库能够指定输入的字符编码并统一返回 utf-8 编码的字符串。如果您在处理过程中碰到了乱码问题,请调整下字符编码。如果还是有问题,欢迎您的反馈。
有些页面提取内容失败或者提取不正确?
Readability 提取的算法其实非常有限。如果页面本身的 HTML 标签不是非常合乎规范,那么提取可能会造成一定的困扰。通常这在国内的页面上会更常见些,同样欢迎您的反馈,这有利于我继续改进 PHP Readability 的算法。
最后,希望这个库和工具能让你找回阅读的乐趣。
-- EOF --
更改历史
- 2011-02-14 更改 netatalk 部分配置参数
- 2011-02-10 初始化版本
前言
Apple 的 Time Machine 提供了非常完备的数据备份方案,但每次使用外接磁盘备份很 麻烦也很容易忘记备份。同时,个人对于 Time Capsule 「高昂的」售价(虽然它的确值那些钱)颇有微词。
其实,大部分管理员已经有数台 Linux 服务器,所以考虑能否安装类似 Time Capsule 的服务让 Linux 为 Mac 提供网络备份。
如果您和我一样有类似的需求,那么这篇文章可能就是你想要的 :^D
安装软件包
本人使用的 Linux 发行版为 Debian ,其他发行版的也应该类似。
首先,安装需要的软件包:
% sudo apt-get install netatalk
% sudo apt-get install avahi # 通常这个包已经安装了的
% sudo apt-get install nss-mdns
注意:如果需要自己编译安装 netatalk 包,则需要加入 ssl 支持,具体看编译脚本参数。
配置
上面的软件包正常安装完毕以后,接下来就是配置了。
服务器端
1、编辑 /etc/default/netatalk 文件,找到对应的内容,更改为
ATALKD_RUN=yes
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no
2、编辑文件 /etc/netatalk/afpd.conf 在最底部加入行:
- -tcp -noddp -uamlist uams_dhx.so,uams_dhx2.so -nosavepassword
3、编辑文件 /etc/nsswitch.conf 在最底部加入行:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
4、新增文件 /etc/avahi/services/afpd.service,内容为:
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=Xserve</txt-record>
</service>
</service-group>
这个时候 netatalk 协议已经配置完毕,我们要共享出个目录让 Mac 映射为磁盘。编辑文 件 /etc/netatalk/AppleVolumes.default 加入下面的行:
~/TimeMachine "TimeMachine" allow:mingcheng cnidscheme:cdb options:usedots,upriv,tm
简单得说明下:
- 其中的
mingcheng 为用户名,它指定了哪些用户应用该规则。如果有多个用户,则使用「,」逗号分割。
~/TimeMachine 为用户主目录下的 TimeMachine 目录,也就是我们要保存备份数据的目录。
- "TimeMachine" 为映射磁盘的名称,便于辨别起见,通常不用更改。
- 较关键的地方是 「options:tm」,这个选项其实就是让 netatalk 充当 Time Machine 服务器的意思( via )。
- 更多的配置参见配置文件中的说明,很详细。
Tips:由于备份数据比较大,可以考虑 mount --bind 映射到 Linux 本地的其他合适的分区或目录( 详细 )。
至此,基本的 Linux 服务器端配置完毕,重启服务(重启需要花点时间)
% service netatalk restart
% service avahi-daemon restart


重启服务以后,在 Mac 端连接 Linux 服务器,输入对应的用户名和密码以后,即可挂载已经配置好的磁盘。
Mac 端
在 Mac 端,我们还需要做些配置。打开终端(Terminal),执行下面的命令使 Time Machine 能够使用网络磁盘作为备份盘:
defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
由于部分兼容性问题,还需要另外手工制作磁盘疏散镜像。打开「偏好设置」中的「共享」,可以看见「电脑名称」, 例如我的是「明城的 Macbook Pro」(注意大小写和空格),这里将其命名为 <computer_name>

然后,打开终端粘贴如下面的命令获得本机的网卡 Mac 地址,这里将其命名为 <mac address>
ifconfig en0 | grep ether | awk '{print $2}' | sed 's/://g'
如图,例如我的是

然后运行下面的命令,注意将上步骤获得的 <computer_name>、<mac address> 代入命令行:
sudo hdiutil create -size 320g -type SPARSEBUNDLE -nospotlight -volname "Backup of <computer_name>" \
-fs "Case-sensitive Journaled HFS+" -verbose ~/Desktop/<computer_name>_<mac address>.sparsebundle
注意:-size 320g 参数是本机的硬盘容量,请根据实际情况更改。
最终在桌面会有个类似我本机的文件名(注意空格等字符):
明城的 Macbook Pro_0026bb6a1f40.sparsebundle
然后将这文件扔到上面配置好的 Linux 网络磁盘根目录。打开 TimeMachine 选择对应的磁 盘,即可以开始开始备份。


Tips:首次网络备份会比较缓慢,建议插入网线。
一般问题
问:这样做符不符合 Apple 的协议?
答:未知,如有明确结果的,请各位告知。

问:为什么我选择网络磁盘以后,TimeMachine 一直在「正在准备磁盘」?
答:这是磁盘疏散镜像没有制作正确,或者你命名的文件名不正确。可以暂停备份,挂载网络磁盘看 TimeMachine 为你自己生成的文件名,然后在将上面步骤生成的文件替换。
问:TimeMachine 的备份数据是加密过的吗?
答:抱歉,保存在服务器上的数据是 没有加密 的(数据传输如有 SSL 是加密的)。
参考资源
-- EOF --
按照惯例,年底的 淘宝 的确是到了「需要改版的时候」。这次新版的淘宝首页上线,乍看并没有多少夺人眼球的地方,但仔细揣摩其中的细节,还是发现了不少的改变。

其中有一点就是感觉页面留白过多,仔细看了下发现是页宽从 原来的 960px 拉伸至 1000px。

不要小看这个增加了的 40px 页宽,这对于设计师们而言可能是做了个「异常艰难的决定」。
混沌时期
还记得用 Win98 拨号上网的时代吗?那时候分辨率也小得可怜,800x600 的标配分辨率甚至都不及当前的某个高端智能手机。
不知道什么时候开始,网页的页宽有了个经典宽度 600px -- 当然,那时候谁都不会在意它。
960 时代
后来,这个故事变得简单而且老套:随着硬件的发展,分辨率也不断的提升。从 1024x768 到 1280x800 再到 1440x900 甚至更高( 这里有个统计 )。

网页的页宽数字也在不断的增加,比较经典的几个数字为从 600px、740px 直到 960px 。然而这时候标准线出现了,那就是 960 页宽。
以淘宝为例,我印象中 960px 页宽从 2006 年沿用至今(2011)已经整整五年。这相比二十一世纪的前五年的页宽改变趋势而言,这实在是让人感到有些变化不大过于拘泥。
当然,设计师们采用 960 这个数字当作页宽的布局方案也有其道理:
- 其能兼容大部分的屏幕分辨率。800x600 已死,剩下分辨率最小的也有 1024x768。那么,为了更可能多的展现内容,页面的宽度自然会在 800-1024 像素之间,960 设置数值差不多是个中间值,不多不少刚刚好。
- 960px 方便栅格化布局 -- 其实从数学的角度上说,这个观点有点站不住脚。不过 960 页宽的栅格是最早出现的, 同时也是最广泛使用的 (附, 淘宝的栅格系统 )。
打破僵局
既然 960 页宽已经足够好,沿用传统的页宽也并不会犯错,那么回过头来我们再看这次淘宝首页为何要改变成规。
根据我的个人观点,可以总结部分:
- 960 页宽已经显得「过时」,1024x768 像素会像当年的 800x600 一样,迟早会被更大数字的分辨率所淹没。
- 需求的驱动,需要在页面中加入更多的内容。想想页宽增加 40px 乘以页长,整个页面将会多出多少设计和内容填充空间。
- 1000px 这个整数更容易计算和安排栅格 -- 不过从数学上这个说法也很难站住脚。不过整数 1000 的整除数比 960 多多了,也更容易安排。
单单 40 像素的改变,对于「粗心大意」的用户而言似乎无关痛痒(当然,也可以理解为淘宝其实不想让用户过多得在意他们的改变)。
个人觉得 1140 页宽 也是可以考虑的数字。那么,还有会不会有更大的页宽数字出现?我想应该会控制在 1200px 以内, 否则将会给用户阅读带来困扰 。
未来
我们来预测下未来的经典页宽将会是什么数字?说实话我也不知道,这一答案完全在设计师脑子里。有点可以预料到的是,移动上网设备的兴起会有促进两个大的趋势:
- 向下兼容针对小屏幕的弹性页宽( 详见 )。
- 页面布局将会针对不同的设备而定制,因此 800px 以下的页宽将会「复活」。
-- Split --
这次广泛采用 HTML5 标签、加大页宽等等的改变,看得出淘宝一直在做着细节方面的尝试和调整。然而从不谐调的留白、布局的不协调看得出来,淘宝对于新的页宽经验稍显不足。
但愿 1000px 这个页宽将又会是个经典的数字。毕竟,不客气的说,「山寨」淘宝首页的站点实在是太多太多了。
PS,淘宝还给我们留了个小彩蛋,新版在首页搜索框中输入「about:staff」会有惊喜(相应代码在 1970 行开始) :^D
-- EOF --