咨询一下访问本博客的朋友们,速度快吗?
如果有兴趣 ,请在留言的时候,贴一下PING的速度,谢谢。
因为,机器已经迁到国外了。HOHO,我估计是会有一点慢,但应该没有那么明显吧?
毕竟sablog还是以速度著称的。而且lnmp下面这一点小负载也不算啥。
原来同IP上的另一个站点为什么慢,是因为,它连接的国内的服务器,现在这个不会了。数据库也迁移过来了。
膘叔的简单人生
咨询一下访问本博客的朋友们,速度快吗?
如果有兴趣 ,请在留言的时候,贴一下PING的速度,谢谢。
因为,机器已经迁到国外了。HOHO,我估计是会有一点慢,但应该没有那么明显吧?
毕竟sablog还是以速度著称的。而且lnmp下面这一点小负载也不算啥。
原来同IP上的另一个站点为什么慢,是因为,它连接的国内的服务器,现在这个不会了。数据库也迁移过来了。
有时候真的不想再说什么 。
技术如果不到家,就不要出来混嘛。长宽在上海这么多年,除了头两年大家对他的口碑表示比较不错外,现在是越来越让人感到不舒服。
总之一句话,等这次到期后,坚决不再使用长宽,没有必要为了省这1~200块钱而天天受气。
看着别人免费升光纤,自己还得忍受龟速以及广告的纷扰,自然是觉得心里不平衡。
其实在用它的第一天我就后悔了,因为。。。我看到他的进小区的路由器居然毫无遮挡的扔在了楼道间,只是用网线包扎了一下。
退款,几乎是不可能的。google一下网上就知道了。
或许你说,我家的长宽还不错啊。希望你能一直笑下去,总之我是笑不下去了。原本以为我在家里也无所谓这些网络的,毕竟我不下载游戏、不玩网游,只是打开网页而已,当然便宜点就便宜点了。结果现在就这样了。
好吧,长宽你是大爷。我怕你了
参考网址:
1、http://it.sohu.com/20110418/n280313149.shtml
2、http://zhidao.baidu.com/question/215220228.html
3、http://people.rednet.cn/PeopleShow.asp?ID=662987
4、http://www.jdjsq.com/changkuan/changkuan_428.html?m=428
5、http://bbs.city.tianya.cn/tianyacity/Content/47/2/826546.shtml
不多贴了,直接google,“长宽怎么退钱”,你会看到一堆这样的链接。
当Firefox下载的文件过多时,firefox打开的速度也会越来越慢
我不知道你们是否尝试过。ctrl+j(下载列表),当这个列表的数据超过100条时,你会发现firefox也经常一卡一卡的,毕竟在很多时候,我们都会不由自主的直接用firefox下载文件。因此当一点击下载时,就会调用sqlite来读取里面的下载列表。也就导致firefox运行起来也超级卡
及时清空列表,你会发现firefox速度也快上了不少,而且,内存占用也会少上很多。
不是虚言,是真的。
当然,历史记录这玩意儿,也可以适当清除清除的。毕竟你也不需要保存几年前的记录吧?这个就仁者见仁了。
看到一段歇斯底里的话:
保持该死的主线干净!
在该死的独立分支上进行该死的新功能的开发!
一旦你公布了代码,并且某些人使用了它,那就 TMD 不要修改 API!
如果想要或者必须修改 API,修改 TMD 主版本号 并且 在独立于原代码库的新的代码库上进行该死的开发!
如果有必要,非常有必要使用某些特别的标签,做分支或提交作为依赖,你得 TMD 用自己 fork 出来的代码库进行 TMD 所需要的提交!
哦,还有保持简单,狗娘养的!
好吧。我看了很恐怖。
当然,顺便说一下taoAPI的SDK,里面有一段居然是:
public function execute($request, $session = null)
{
if($this->checkRequest) {
try {
$request->check();
} catch (Exception $e) {
$result->code = $e->getCode();
$result->msg = $e->getMessage();
return $result;
}
}
}
哥,你能不能先定义一下$result = new StdClass;
搞得我IDE里全是血红一片。。。
好不容易理个头吧。人说,正月里不能理发,是因为正月里理发会死舅舅。于是乎我google了一下。
1.正月里剃头---"思旧"
2.正月里剃头---"思舅"
第一种解释
旧时民俗禁忌甚多,“正月里不许剃头”即为一例。夏历第一个月里,任凭男孩毛发疯长,却丝毫不能侵犯,否则对舅舅不利。“正月里剃头,死舅舅。”多吓人的一份责任,舅舅的安危全系于外甥的头顶之物。直至夏历二月初二,男孩才有了剃头的自由。
外甥的头发因何与舅舅的性命有了瓜葛?实在费思索。社会学家考证人类是从母权社会一步一个跟头斗才到父权社会的。在女人说了算的母系氏族社会,娘家人的重要代表——舅舅,自然不可小觑。
民国二十四年版的《掖县志》卷二《风俗》揭出了习俗的谜底:“闻诸乡老谈前清下剃发之诏于顺治四年正月实行,明朝体制一变,民间以剃发之故思及旧君,故曰‘思旧’。相沿既久,遂误作‘死舅’。”正月不剃头,原是“思旧”。正月为一年之始,有如一日之晨。正月一个月不剃头,以缅怀传统。乡老将“剃发令”的时间记错了,不是顺治四年正月,是顺治二年六月。那时候摄政王多尔衮就下令在北京的前门、地安门、东西四牌楼等主要的路口设立席棚,免费给来往的行人剃头。“剃发令”规定官军民一律剃发,迟疑者按逆贼论,斩!朝廷以死要挟汉人归依满人的发式,使汉人惊恐万状。但这惊恐瞬间化作满腔怒火,他们宁死也不剃发,甚至高呼:“宁为束发鬼,不作剃头人。”但是,脖子毕竟硬不过钢刀,汉人为了项上头颅被迫剃发。然而反抗并没有停止,正月不剃头即是一种反抗形式。1644年至1650年(顺治元年~七年)间,意大利人卫匡国写下《鞑靼战纪》,记录了中国南方军民为保卫头发而战的情况:士兵和老百姓都拿起了武器,为保卫他们的头发拼死斗争,比为皇帝和国家战斗得更英勇,不但把鞑靼人赶出了他们的城市,还把他们打到钱塘江,杀死了很多鞑靼人。实际上,如果他们追赶过去,也许会收复省城和其他城镇,但他们没有继续发展胜利,只满足于保住了自己的头发。为剃头不惜掉头,这是意大利人很难理解的。
汉族男儿自古就蓄发,“身体发肤,受之父母”,不敢损伤、妄动。剃头简直就是剔命。“去发”的髡刑不在五刑之内,但也是一种刑罚。三国曹操割发代首就是明证。此习自隋、唐以后已废止:未成丁的孩童,头发覆颈披肩;成年后,总发为髻。那时候,清朝为了统一全国的服饰,强迫汉人学满人的样子,剃头留辫子。满族人原是狩猎部族,为了实用方便,从额角两端引一直线,直线外的头发全部剃去,仅留颅顶发编成辫子。习俗有极强的传承性,也会因时因地而变。满族入主中原后,大量接纳汉族士大夫参加政权,内阁大学士、六部尚书等高官显位,都是满汉各半。在这“满与汉,共天下”的局面下,满汉民族矛盾逐渐减弱,日久天长,汉人也奉“满清”为正统了,剃发渐成习惯。这样,正月不剃头以“思旧”就失去了赖以存在的文化心理基础,由谐音讹传为“死舅”。为了反抗满族的统治,汉人就编造出正月剃头死舅的说法。正月一个月不剃头,意味着一年没有剃头,以此来缅怀祖宗,缅怀传统。而舅舅在中国人的传统中,是公正的象征,一般家庭分家都是由舅舅主持公道。
江苏淮阴等地民俗说这个传说始于秦始皇赢政,为避讳,民间就把每年的第一个月改称为正月,也形成了不“剃头”的习俗,否则就有血光之灾。而四川建始县人说,正月不剃头,否则叫“正无发(法)”。
居住在东北的满族人正月也不剃头,大都等二月二这天剃头,其名曰“剃龙头”。年年剃龙头,长大成人定会龙腾虎跃、金榜题名有出息,他们“妈妈例儿”(也写作“妈妈论儿”,即日常生活中的迷信禁忌和迷信言论)也认为“正月里剃头妨害舅舅”。可见这是人类古俗的孑遗,不过在民族矛盾加剧时却赋予了新的内容,以旧俗假托故国之思罢了。
第二种解释
“正月里剃头死舅舅的说法想必知道吧?”老板娘问。
在河北石家庄地区,正月不能理发的风俗影响很大,人们普遍是在腊月理一次发,然后等到二月二“龙抬头”才会再进理发店。我回答道:“一种迷信说法罢了。”
“可就是这种说法不仅影响了我们理发行业的经营,也给人们对美的追求添置了障碍”,老板娘接着说,“我做过一个调查,大部分年轻人并不在乎迷信说法,只是怕长辈指责不孝和大不敬罢了。”“你有什么好的办法吗?”我问。
“只要了解这说法的来龙去脉,一切都会迎刃而解”,老板娘接着说,“当初学徒时,就这个问题请教师傅,师傅讲了这样一个故事——相传很久以前,有一个贫穷的理发匠很爱自己的舅舅。然而到了正月,理发匠却为没有钱给舅舅买一件像样的礼品而发愁。串亲的日子到了,理发匠灵机一动,挑着剃头挑子来到舅舅家,精心为舅舅剃头刮脸。等到舅舅出现在酒席前时,亲朋们无不夸赞理发匠手艺高超,说舅舅看上去年轻精神了许多。舅舅很高兴,说这是送给他最好的过年礼物,还约定每年正月给他来理发,看看手艺是否有新的长进。多年后,舅舅去世了。每到正月,理发匠对着剃头挑子泪如雨下,他为不能再向舅舅尽孝而伤心……”
听到这儿,我突然明白了老板娘的意思:“你是说,故事原本讲的是正月剃头思舅舅。”
“没错”,老板娘说,“不知何时以讹传讹,‘思’变成了‘死’,一字之差,害苦了多少人呀!”
----------
事实上,从健康意义上来看,也有“生而勿杀”的说法。《黄帝内经》中的“四气调神大论”中的“春三月”中就有一段话说:“被发缓形,以使志生,生而勿杀,予而勿夺,赏而勿罚,此春气之应,养生之道也;逆之则伤肝,夏为实寒变,奉长者少。” 具体到理发上就是,春天的这三个月,应该让头发自由生长,而不该剪断;应该让头发松散地披在肩上,而不该扎得太紧。违反这个规则,就会伤到肺。但倘若整个春三月都不理发的话,人们实在受不了长发的困扰,于是就有聪明人开始只在正月里不理发……
既然正月里不理发,那就只好在春节前理一次发了。而从实践来看,乡亲们在春节前理一次发还是很有好处的。一来,在新年来临之际,给自己一个新的形象,很有纪念意义;二来呢,过节见的亲戚朋友多,把自己的头发好好折腾一下,也是对大众眼球负责的表现。哈哈!久而久之,成为习俗,实在是先人的一种聪明体现啊!
--------
真TMD纠结,这年头,连理个发都这么迷信,以后还能干嘛 。
所以,我不管三七二十一,还是理发了。。。
一下子帅了不少,年轻了不少。那是相当的靓仔了
备份一个JS,不是为了代码很优秀,而是。。。想直接用里面的事件,就当成参考了:
var media_events=new Array();
// was extracted from the spec in November 2011
media_events["loadstart"]=0;
media_events["progress"]=0;
media_events["suspend"]=0;
media_events["abort"]=0;
media_events["error"]=0;
media_events["emptied"]=0;
media_events["stalled"]=0;
media_events["loadedmetadata"]=0;
media_events["loadeddata"]=0;
media_events["canplay"]=0;
media_events["canplaythrough"]=0;
media_events["playing"]=0;
media_events["waiting"]=0;
media_events["seeking"]=0;
media_events["seeked"]=0;
media_events["ended"]=0;
media_events["durationchange"]=0;
media_events["timeupdate"]=0;
media_events["play"]=0;
media_events["pause"]=0;
media_events["ratechange"]=0;
media_events["volumechange"]=0;
var media_controller_events=new Array();
// was extracted from the spec in November 2011
media_controller_events["emptied"]=0;
media_controller_events["loadedmetadata"]=0;
media_controller_events["loadeddata"]=0;
media_controller_events["canplay"]=0;
media_controller_events["canplaythrough"]=0;
media_controller_events["playing"]=0;
media_controller_events["ended"]=0;
media_controller_events["waiting"]=0;
media_controller_events["durationchange"]=0;
media_controller_events["timeupdate"]=0;
media_controller_events["play"]=0;
media_controller_events["pause"]=0;
media_controller_events["ratechange"]=0;
media_controller_events["volumechange"]=0;
// was extracted from the spec in November 2011
var media_properties=[ "error","src","currentSrc","crossOrigin","networkState","preload","buffered","readyState","seeking","currentTime","initialTime","duration","startOffsetTime","paused","defaultPlaybackRate","playbackRate","played","seekable","ended","autoplay","loop","mediaGroup","controller","controls","volume","muted","defaultMuted","audioTracks","videoTracks","textTracks","width","height","videoWidth","videoHeight","poster" ];
var media_properties_elts=null;
var webm=null;
function init(){
document._video=document.getElementById("video");
webm=document.getElementById("webm");
init_events();
init_properties();
init_mediatypes();
// properties are updated even if no event was triggered
setInterval(update_properties,500);
}
document.addEventListener("DOMContentLoaded",init,false);
function init_events(){
for(key in media_events){
document._video.addEventListener(key,capture,false);
}
var tbody=document.getElementById("events");
var i=1;
var tr=null;
for(key in media_events){
if(tr==null) tr=document.createElement("tr");
var th=document.createElement("th");
th.textContent=key;
var td=document.createElement("td");
td.setAttribute("id","e_"+key);
td.innerHTML="0";
td.className="false";
tr.appendChild(th);
tr.appendChild(td);
if((i++%5)==0){
tbody.appendChild(tr);
tr=null;
}
}
if(tr!=null) tbody.appendChild(tr);
}
function init_properties(){
var tbody=document.getElementById("properties");
var i=0;
var tr=null;
media_properties_elts=new Array(media_properties.length);
do{
if(tr==null) tr=document.createElement("tr");
var th=document.createElement("th");
th.textContent=media_properties[i];
var td=document.createElement("td");
td.setAttribute("id","p_"+media_properties[i]);
var r=eval("document._video."+media_properties[i]);
td.innerHTML=r;
if(typeof(r)!="undefined"){
td.className="true";
}else{
td.className="false";
}
tr.appendChild(th);
tr.appendChild(td);
media_properties_elts[i]=td;
if((++i%3)==0){
tbody.appendChild(tr);
tr=null;
}
}while(i<media_properties.length);
if(tr!=null) tbody.appendChild(tr);
}
function init_mediatypes(){
var tbody=document.getElementById("m_video");
var i=0;
var tr=document.createElement("tr");
var videoTypes=[ "video/ogg","video/mp4","video/webm" ];
i=0;
tr=document.createElement("tr");
do{
var td=document.createElement("th");
td.innerHTML=videoTypes[i];
tr.appendChild(td);
}while(++i<videoTypes.length);
tbody.appendChild(tr);
i=0;
tr=document.createElement("tr");
if(!!document._video.canPlayType){
do{
var td=document.createElement("td");
var support=document._video.canPlayType(videoTypes[i]);
td.innerHTML='"'+support+'"';
if(support==="maybe"){
td.className="true";
}else if(support===""){
td.className="false";
}
tr.appendChild(td);
}while(++i<videoTypes.length);
tbody.appendChild(tr);
}
}
function capture(event){
media_events[event.type]=media_events[event.type]+1;
for(key in media_events){
var e=document.getElementById("e_"+key);
if(e){
e.innerHTML=media_events[key];
if(media_events[key]>0) e.className="true";
}
}
update_properties();
}
function update_properties(){
var i=0;
for(key in media_properties){
var val=eval("document._video."+media_properties[key]);
/*
if (typeof val === "TimesRanges") {
val = val.length + " TimeRanges";
}
*/
media_properties_elts[i++].innerHTML=val;
}
if(!!document._video.audioTracks){
var td=document.getElementById("m_audiotracks");
td.innerHTML=document._video.audioTracks.length;
td.className="true";
}
if(!!document._video.videoTracks){
var td=document.getElementById("m_videotracks");
td.innerHTML=document._video.videoTracks.length;
td.className="true";
}
if(!!document._video.textTracks){
var td=document.getElementById("m_texttracks");
td.innerHTML=document._video.textTracks.length;
td.className="true";
}
}
var videos=new Array();
videos[0]=[
"http://media.w3.org/2010/05/sintel/poster.png","http://media.w3.org/2010/05/sintel/trailer.mp4","http://media.w3.org/2010/05/sintel/trailer.ogv","http://media.w3.org/2010/05/sintel/trailer.webm"
];
videos[1]=[
"http://media.w3.org/2010/05/bunny/poster.png","http://media.w3.org/2010/05/bunny/trailer.mp4","http://media.w3.org/2010/05/bunny/trailer.ogv"
];
videos[2]=[
"http://media.w3.org/2010/05/bunny/poster.png","http://media.w3.org/2010/05/bunny/movie.mp4","http://media.w3.org/2010/05/bunny/movie.ogv"
];
videos[3]=[
"http://media.w3.org/2010/05/video/poster.png","http://media.w3.org/2010/05/video/movie_300.mp4","http://media.w3.org/2010/05/video/movie_300.ogv","http://media.w3.org/2010/05/video/movie_300.webm"
];
function switchVideo(n){
if(n>=videos.length) n=0;
var mp4=document.getElementById("mp4");
var ogv=document.getElementById("ogv");
var parent=ogv.parentNode;
document._video.setAttribute("poster",videos[n][0]);
mp4.setAttribute("src",videos[n][1]);
ogv.setAttribute("src",videos[n][2]);
if(videos[n][3]){
if(webm.parentNode==null){
parent.insertBefore(webm,ogv);
}
webm.setAttribute("src",videos[n][3]);
}else{
if(webm.parentNode!=null){
parent.removeChild(webm);
}
}
document._video.load();
}
这一段JS是从http://www.w3.org/2010/05/video/mediaevents.html拷贝而来,具体的演示就在这个页面了。我是想知道video标签中的一些事件。controller_event几乎用不到。
中文说明这里有:http://directguo.com/blog/index.php/2010/07/html5-audio-video-tag/
//错误状态
Media.error; //null:正常
Media.error.code; //1.用户终止 2.网络错误 3.解码错误 4.URL无效
//网络状态
Media.currentSrc; //返回当前资源的URL
Media.src = value; //返回或设置当前资源的URL
Media.canPlayType(type); //是否能播放某种格式的资源
Media.networkState; //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源
Media.load(); //重新加载src指定的资源
Media.buffered; //返回已缓冲区域,TimeRanges
Media.preload; //none:不预载 metadata:预载资源信息 auto:
//准备状态
Media.readyState; //1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA
Media.seeking; //是否正在seeking
//回放状态
Media.currentTime = value; //当前播放的位置,赋值可改变位置
Media.startTime; //一般为0,如果为流媒体或者不从0开始的资源,则不为0
Media.duration; //当前资源长度 流返回无限
Media.paused; //是否暂停
Media.defaultPlaybackRate = value;//默认的回放速度,可以设置
Media.playbackRate = value;//当前播放速度,设置后马上改变
Media.played; //返回已经播放的区域,TimeRanges,关于此对象见下文
Media.seekable; //返回可以seek的区域 TimeRanges
Media.ended; //是否结束
Media.autoPlay; //是否自动播放
Media.loop; //是否循环播放
Media.play(); //播放
Media.pause(); //暂停
//控制
Media.controls;//是否有默认控制条
Media.volume = value; //音量
Media.muted = value; //静音
//TimeRanges(区域)对象
TimeRanges.length; //区域段数
TimeRanges.start(index) //第index段区域的开始位置
TimeRanges.end(index) //第index段区域的结束位置
借鉴一下。
不好意思,关闭本站所有显示微博的插件。
其实,这也无可奈何,当然,大家也都明白,等到实名制之后,象我们这些不实名的,几乎也不能够发表微博了,这个时候如果你让关注我,或者看我的微博,您觉得还有意义吗?
与其浪费大家的资源,不如我早日关闭,当然如果您认为自己是一个潜水员,自然可以继续。
我的微博地址是:
http://weibo.com/neatstudio
http://t.qq.com/goukixiao
----------------------------------
3-16开始倒记时,当打假打完后就该打人了。您懂的
众所周知的日子,也是传说中杜蕾斯姐姐和杰士帮哥哥伤亡率最高的日子。
微博上各种各样的段子也是非常的有意思,我在这里就不再一一贴了,反正再过几天这些活跃人士也会变成无语人士的。何必呢。HOHO
情人节的由来我也不贴了,这玩意大家都知道,我就不装了。装了也没意思。反正今天就是那样了。
今天的花,死了不少。
从明天起,小姑娘又少了不少。
MD,我这是不是在嫉妒?青春不在啊。。。。。
今天下午,恭喜各个旅馆生意兴隆,各大超市销量超好
Yii Framework有的时候会很容易就被墙。所以,自己给他做了一个反向代理 .
每个月5G流量。访问地址为: http://yii.neatcn.com(跳转)
这样的功能,当然不是我做的。我没有那么多的精力来做这个,我是用了一个现成的网站(Speedy Mirror)处理的。
很方便,这里有一篇中文教程:http://www.ml934.com/archives/204.html
我们知道Speedy Mirror是 一家免费CDN加速服务网站,服务器节点分布在英美,感觉用它给国内的网站做加速意义不大。所以这里只谈用SpeedMirror为GAE做“反向代 理”,准确的说就是做了一个“镜像网站”。我们知道由于GAE被墙,appspot.com是不能在国内访问的,这就导致以GAE做为平台的各种应用无法 正常使用和访问,比如在GAE上搭建的博客,相册,网盘等等。这里我们就正好可以利用其CDN的特性,为你的GAE 站点做个镜像,当我们访问xxxx.appspot.com的时候,就会从Speedy Mirror的服务器上获取缓存内容。Speedy Mirror支持https访问,使用简单,注册后只需填写你要推送的网址,完成设置立刻生效。
先添加一个你喜欢的名称,再填写你要推送的网址,点击Detect and save确定就可以了。然后就会给你一个xxxx.speedymirror.com二级域名(下图,可点击放大查看)
Speedy Mirror默认的缓存更新是7天,你要是更新频繁,你就点击xxxx.speedymirror.com把缓存更新改为1即可。点击Add new mirror,再新添加一个镜像就可以了哦,怎么样?够简单吧,那就时间起来吧,呵呵。
PS:GAE虽然可以通过APPs企业套件绑定域名的方法实现墙内访问,但对于新手来说,步骤繁琐,且反向代理也不好找,远不如 Speedy Mirror简单。唯一的缺憾就是speedymirror.com这个域名太不好记了,简直有点坑爹。老外的东西,没办法了,就凑活着用 吧!
----------
原文中没有说明,其实现在可以cname指向到你申请的那个二级域名的页面的。所以我才变成了yii.neatcn.com
其实想转这篇文章好久了,但一直在犹豫。众所周知,如今的pad上的文章、HTML网页,都在尝试着改变。如果让人还在不停的向上拖动页面,好象就会被人所诟病。
于是乎翻页就显得至关重要。
从最早ipad上可见的ibooks中的书籍可了解,翻页其实是一件很痛苦的事情。它需要将你的文章内容由程序自己算好,然后将它分页,于是这里面的代价消耗就非常大。一篇文章如果有上千页,当你选择改变字体大小的时候,ibooks就象死机一样,无法拖动。毕竟这个时候程序在计算页码,重绘页面。超级痛苦,而pad又不象台式机那样CPU强劲。带来的郁闷可想而知。
于是更多的人尝试PDF阅读,毕竟当一篇文章转为PDF后,带来的好处也是显而易见,格式固定,编排方便,可以随意跳转,而且PDF的格式公开,任何人都可以尝试制作它,更关键的是,ipad内建支持pdf(如ibook)。但同时也会有一点小问题,比如,不能调整字体大小,不能插入广告(我想这个对于想赢利的企业来说恐怕是最痛苦的),容易被人打包下走所有数据(企业会更恨这个原因)
当kindle出第二版的时候,很多人都在惊呼,阅读的时代要改变了。国内有个做kindle系统打包的叫做“多看”,它对PDF也做了处理,能够对PDF进行分页,很多国内的电子书用户都选择了多看系统,因为看书更方便了。(它实现的也是类似ibook的效果)
好了,先看原文吧,我废话太多了。。。。原文来自:http://apple4.us/2012/02/card-pagination-scroll-lawrence-column-for-blogweekly.html,我部分摘抄
正如原文中所说:
关于分页与否的讨论自 1980 年代就已开始。苹果 Macintosh 的创始人杰夫·拉斯金用「卡片」和「卷轴」来比喻分页与不分页这两种对信息的呈现方式。到目前为止,万维网(web)基本是卷轴的天下。但电子书的勃兴令情况开始有了变化。
互联网时代大家都清楚,鼠标滚动。。。
和大部分软件一样,电子书软件的设计也能找到真实世界中的对应。正如早年的图形介面系统设计者根据桌面、文件、文件夹、垃圾桶这些办公环境中的标配物件想象出了一套譬喻,电子书软件从一开始就沿袭了纸书的习惯,以「页」为基本单位。另一方面,因为一些不必在此深究的原因,大部分主流电子书软件所用的技术恰恰就是万维网的技术──HTML, CSS, JavaScript,亚马逊的 Kindle 与苹果的 iBooks 都不例外。电子书事实上就是「分了页的网页」。
电子书的读者对于分页与否各有偏好,不过技术潮流由赢家设定。从过去几个月的发展看来,分页是大趋势。亚马逊不久前宣布将推出 Kindle Format 8 格式,将更多平面排版的元素引入 Kindle 书中。苹果的 iBooks 2 与电子书制作软件 iBooks Author 也做了类似的事情,且完成度更高。(其实苹果一直是卡片式设计的支持者。万维网出现之前最成功的超媒体系统 HyperCard 就出自苹果之手,他们甚至把「卡片」一词写进了软件名称。)Flipboard 和 Zite 等热门阅读软件用分页的方式对网页进行了重排,老牌浏览器 Opera 亦于去年启动了实验性的 Opera Reader 计划,目标类似。
这里的终极问题是:设计师应该拥有多少控制权?在发轫于互联网时代的「赋权于民」的大潮流下,设计的权力是否也应该下放给普通用户?如上所述,从信息设计的角度而言,卡片式 / 分页设计的好处显而易见。它为设计师提供了一种具象而直接的限制(没有限制就没有设计)。对于读者来说,上下左右四条固定的边界也对注意力形成了一定程度的约束。这是用户权力的收缩,也是对设计师和内容生产者的控制权的重新认可。若卡片式设计能取代卷轴成为明日的主流,对于内容方实为幸事。
卡片还是卷轴,其实真的很让人难以选择。原文中Kindle Format 8 和Opera Reader 都有链接,有兴趣的可以看看。
说来说去,这又回到了开始:
在纸张出版的世界里,无页不成书。分页的重要性不太会被提起,因为它早已像空气一样无处不在。页界定了包裹内容的边界,是对信息的一种切割──我让你看到的不是全部,而是我挑选过的局部。以页为单位,给了设计师与编辑(编辑也是设计)做选择的可能──没有限制就无需做选择,而做选择就是设计。(包括选择今晚去哪家餐厅吃饭。)
电子书也需要越来越向纸书那样有页码吗?不过,如果真的没有页码,跳转的时候会比较痛苦吧。从程序设计的角度来说,如果没有页码,也就是说几乎要将所有的内容放到一个容器中,而有了页面,为了翻页速度可以直接读取该页码附近左右的各5页内容,会更方便,也更减少资源的消耗。
然而,真的很痛苦,HTML分页太痛苦了。其他的呢?国内的几个ipad上的阅读软件现在都在好象慢慢放弃HTML分页了,而flipboard越仍然在坚持。
那,我们又是否应该再坚持呢?HTML分页有优点,它的优点在于可以很方便的为HTML网页做一些特别的效果。但带来的问题是大量的精力和开发资源都耗在这上面。(国内的专业做javascript开发的,真的很少啊。专业做这一行的,对于切入HTML排版好象也很排斥,不知道为什么。)
如果你是BOSS,你会怎么选择?