動畫 輕舞飛揚 效果很不錯,回歸原始了。
以上所有特效都與 Flash 無關,原理都是 HTML + JavaScript,即 CSS Sprite 和 JavaScript 的 setInterval()
。
離我們最近的例子是 Google.cn,可惜即將關閉了。g.cn(G 點處[男女]) 的導航特效最早出現在 Google.kr 和 Google.jp。
動畫 輕舞飛揚 效果很不錯,回歸原始了。
以上所有特效都與 Flash 無關,原理都是 HTML + JavaScript,即 CSS Sprite 和 JavaScript 的 setInterval()
。
離我們最近的例子是 Google.cn,可惜即將關閉了。g.cn(G 點處[男女]) 的導航特效最早出現在 Google.kr 和 Google.jp。
囧 據說注冊費用大約在 10 到 50 萬刀。
以後有了錢我去注冊一堆動詞 TLD,頭一個就得是 ICANN.sucks(Internet Corporation for Assigned Names and Numbers)。
// Simple JavaScript Templating
// John Resig - http://ejohn.org/ - MIT Licensed
(function(){
var cache = {};
this.tmpl = function tmpl(str, data){
// Figure out if we're getting a template, or if we need to
// load the template - and be sure to cache the result.
var fn = !/\W/.test(str) ?
cache[str] = cache[str] ||
tmpl(document.getElementById(str).innerHTML) :
// Generate a reusable function that will serve as a template
// generator (and which will be cached).
new Function("obj",
"var p=[],print=function(){p.push.apply(p,arguments);};" +
// Introduce the data as local variables using with(){}
"with(obj){p.push('" +
// Convert the template into pure JavaScript
str
.replace(/[\r\t\n]/g, " ")
.split("<%").join("\t")
.replace(/((^|%>)[^\t]*)'/g, "$1\r")
.replace(/\t=(.*?)%>/g, "',$1,'")
.split("\t").join("');")
.split("%>").join("p.push('")
.split("\r").join("\\'")
+ "');}return p.join('');");
// Provide some basic currying to the user
return data ? fn( data ) : fn;
};
})();
模板代码(HTML)则巧妙地藏在 HTML 文件里头去,搜索引擎不可见,普通用户也瞧不着。
<script type="text/html" id="item_tmpl">
<div id="<%=id%>" class="<%=(i % 2 == 1 ? " even" : "")%>">
<div class="grid_1 alpha right">
<img class="righted" src="<%=profile_image_url%>"/>
</div>
<div class="grid_6 omega contents">
<p><b><a href="/2012/<%=from_user%>"><%=from_user%></a>:</b> <%=text%></p>
</div>
</div>
</script>
原理是,直接解析模板,替换占位符为 JavaScript 取值代码,動態生成個函數,执行掉。詳情還得等他的書 JavaScript Ninja 吧……
真的很趁手。
Sergey Brin 和 Larry Page 创立了 Google,剩下的你也都知道了。喜欢打破砂锅的,不妨看看在他创立 Google 之前的简历。
有趣的地方有很多,比如他也参与过 Wolfram Research。比如他的隐藏关:
Objective: A large office, good pay, and very little work. Frequent expense-account trips to exotic lands would be a plus.
他的爸爸,Michael Brin,的主页也很有意思。隐藏了这么一首诗。
Sergey is a grad student at Stanford (computer science). He does data
mining
and (with his friend Larry) developed a search engine GOOGLE which
he claims is the
best. He turned 25 this August (1998). On that occasion I wrote the
following poem.
You are growing stronger
In body, spirit and mind.
I am getting older
Leaving decades behind.
You are tough, you mine data,
You surf first and think later,
And your crawler fast as light
Wanders madly in the night.
You work hard to squeeze a thesis
From the world wide web of feces.
You live abroad on the sunny coast
To you, my son I propose a toast.
In the stately oval office
Clinton grimly counts his losses,
Plumpy interns taking turns,
Many wonderful returns!
前些天在 est 的博客上看到 《仅用 []()+! 就足以实现几乎任意Javascript代码》 一文,很是震惊。
([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+...
让人想到 Brainfuck。
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
然而 Brainfuck 是个 Turing Tarpit (极简化的 Turing-complete 机器),而上面这个 JavaScript From Hell,则是一门脚本语言的 hack (类型强制转换、字符串 == 字符数组、first class function 和几个 JavaScript 漏洞的把握)。
我们从最简单的 []
开始。
[]; // [],空数组
+[]; // 0,空数组视为 null,类型转换为 0
!+[]; // true
+!+[]; // 1
整形可以搞出来了,字符串也是如此。false + []
,返回的是 "false"
。比如要取到 “s”,就可以,(“false”)[3]:
(![]+[])[+!+[]+!+[]+!+[]]; // 3
完整的码表可以参考 est 的博客。还有一个,window 对象的取得。Array 对象的方法 [].sort.call()
返回的是 window 对象。也就是说,我们可以试着拼出 []["sort"]["call"]()[
"eval"]("alert('hi there')")
理解了原理之后是体力活,大牛们 已经做好了一个自动转换的工具)。
所以说这玩意看着很像 Brainfuck,其实是不一样的。最后隆重推荐 JavaScript From Hell,十足劲爆。
Jesse Schell 童鞋对未来游戏开发方向的想象令我当时就震惊了。
他是卡耐基·梅隆大学的讲师,曾经当过迪斯尼的 Imagineer,有个公司叫做 Schell Games 60 来个人专门做各种各样各色平台的游戏。对于 2009 年在北美风光无限的游戏们,Wii、Wii Fit、 Guitar Hero 等,他的总结是,游戏已经从原先的极想象之能事,脱离现实越远越好,改变为贴近现实。我们周遭充斥着伪装与掩饰,便越来越追求 authentic 的东西(所以人们喜欢原木)。
而对于游戏开发中琳琅满目的技术,Jesse 说,在过去技术的发展都是在分化,我们已经开始需要集大成的东西。但是不可以是大而全,他以 iPhone 与 iPad 举例。iPhone 啥事都能做,游戏、视频、音乐、手机、上网,是个瑞士军刀,大家都喜欢;iPad 是放大的 iTouch,除了不能电话跟 iPhone 没啥区别,为啥人们不喜欢?因为 iPad 太大,毕竟我们不需要一把几十斤重的瑞士军刀,即便他能宰牛都不行。
所以他憧憬的未来游戏是,它们无处不在。我们的电视机、手机、汽车已经是电脑了,以后我们的餐具、杯具、鞋子、交通工具都将配备 CPU、存储设备、无线网卡、摄像头、话筒,它们随时随刻可以感知到你的行为。我们的一天就是一次游戏。早晨刷牙的时候,刷满 3 分钟,牙刷就会给你加分。晚上看电视的时候,看广告不转台,电视机同样给你加分。分数的作用是,可以作为减税的有利条件,可以作为商家发放优惠券的依据,等等。
在萝卜面前人和驴没什么区别。
为了引出上面这句话,Jesse 还提到他的一个朋友,在某大学教游戏开发。他的看法就是,游戏俯拾皆是,我们的学校就是个游戏。所以在他的班上,考分并不是重点,而是各种各样依据出勤率、作业等评定出来的经验值。经验值攒够,基本就可以升级出去打怪了。
这让我想到《How I Met Your Mother》不久前的一集。Robin 主持一个凌晨的早间新闻节目,没想到观众如云。这班家伙都是些泡吧的年轻人,耗到后半夜,刚好看到 Robin 的节目,注意到她老是“But um…”,便以此为游戏。她一说,就饮胜。
Jesse 的看法,把科技与游戏人生结合了起来。我们参与的不再是四到十个人的三国杀,不再是四人围坐哗啦啦的麻将,而是一个巨大的网络,它注视着你的一举一动,再依据它对你的设定作赏罚。很熟悉把?Matrix 和巴普洛夫。
Sheldon 可以调教 Penny,我们这群玩着各色游戏长大的人恐怕也不能逃避那样的诱惑。只是,这样的人生,也不大有意思把?
8 天长假,以后过年要求休假的话,还是请在正月里比较好。
去了次温州乐园,喝了一些酒,吃了许多东西,给爷爷等祖宗们点岁灯,玩了几通三国杀。
离开网络八天,木啥特别耸动的新鲜事。有 nc 宣称要废除农历;火箭终于换走了麦迪;我们终于不恐韩了……
祝大家新年愉快,莫要被亚克西。