24
Mar

Detecting Ajax Events on the Server

   Posted by: Chris Ys   in JavaScript

在 jQeury.ajax() 源码中可找到这个设定:

if ( !remote ) { xhr.setRequestHeader(“X-Requested-With”, “XMLHttpRequest”); }

通过对 HTTP Header 的判断, 就可以在服务器端做出处理:

$_SERVER[ 'HTTP_X_REQUESTED_WITH' ] === ‘XMLHttpRequest’;

比如 Rabr 对 ajax 的请求单独用了 ajax/*.php 来进行处理, 如果使用 Header 判断就可以放在同一个 php 脚本上, 维护起来比较容易吧, 也毕竟方便使用 URL Routing

via

highlight_lines
Share
19
Mar

jQuery 性能优化基础

   Posted by: Chris Ys   in JavaScript

  • 适当地构建选择器
    选择器从左至右按顺序执行, 按照各自的特性可以加快速度

    1. ID 选择器速度是最快的, $(“#id”) 比 $(“tag”) 或 $(“.class”) 要快, 选择最近的 ID 如 $(“#sideBar input.searchBox”) 是效率最好的. 但是重复使用是无意义的如 $(“#sideBar #searchBox input.searchBox”), 此外无需使用 Tag 修饰 ID 选择器, 如 $(“div#sideBar”) 要慢于 $(“#sideBar”), 原因在于先遍历所有 div , 在其中找出对应的 ID
    2. Tag 选择器次于 ID 选择器
    3. CSS class 选择器是最慢的, 尽量给每个 class 选择器标上所属的 tag, 如 $(“#sideBar input.searchBox”).
      注: class 选择器在 IE (至少在 8 以前) 下会遍历整个 DOM 找出对应的 class 的 tag
    4. 给选择器添加 context 参数
      默认情况下选择器会查找整个 DOM, 而加入 context 参数可以告知从 DOM 哪一部分开始查找

      $(“#profileForm”, $(“.sideBar”));
      context 可接受 DOM 元素或者 jQuery 对象, 一般情况下建议使用已缓存的 jQuery 对象
  • 减少选择器的使用
    1. 尽量只使用一个选择器, 如某个 class 应用于多个元素可以使用如下选择器: $(“#profileForm input.inputBox, #profileForm textarea.inputBox”)
    2. 一次选择多个元素, 如 $(“#profileForm input”)
    3. 使用子查询
      $.find(selector); $.not(selector); $.filter(selector); …etc. 都是必须掌握的, 使用得当可以减少很多 DOM 查找操作和 js 代码量
    4. 缓存 jQuery 对象
      每一个选择器意味着对 DOM 的一次查找, 应该如下编写代码:
      var profileForm = $(“#profileForm input”);
      profileForm.find(“#username”);
      而不是, 如果没有直接 ID 而且大量使用的 class 则更影响性能:
      $(“#username”);
      $(“#password”);
      注: 缓存对象的命名方式似乎推荐 $var_name 的方式, 个人认为这种方法虽然一目了然, 但是如果使用了多个 js 库的话, jq_varName 可能是更适合的选择, 请根据自己的喜好选择吧
    5. 链式操作
      这在 C# 被成为 lambda 表达式, 使用方法如下:
      $(“#profileForm input”).removeClass(“active”).addClass(“disabled”);
      注: 链式操作对性能影响不是很明显, 甚至没有, 只要适当利用对象缓存也可以有接近的效果. 链式操作的最大作用是减少代码量, 使 js 更轻量. 此外要密切注意 jQuery 返回的对象, 有时不一定适用链式操作
  • 减少对 DOM 的直接操作

    1. 以字符串形式创建 HTML 代码再插入 DOM, 插入前有必要创建一个单独的父级元素把内容包裹起来, 如果并不适合再包裹父元素, 可以考虑规则 2.
      jQeury 的 DOM 插入 func 如 .append() 可以接受 jQuery 对象和 HTML 字符串, 因此添加元素最好遵循此规则:
      var html  = “<ul>”;
      html += “<li>…</li>…<li>…</li>”;
      html += “</ul>”;
      $(html).append($(“#target”));
      注: 对 DOM 操作是低速低效率的, 理由可看文章底部的参考资料
    2. 使用 $.clone() 或 DOM DocumentFragments
      注: createDocumentFragment 在较旧的浏览器中性能优势比较明显, 而新版本的浏览器已展开 js 引擎大战, 或许性能差已不太明显 (IE8 除外), 虽然没进行实测, 但在对性能不太苛求的情况下可以无视
  • 冒泡事件
    冒泡事件就不多解释了, 按照参考资料的建议, 推荐在父元素中识别事件目标再执行对应的 func, 例子就不给了, 看 Leverage Event Delegation
    我倒有一个想法, $(selector).live(func) 以我目前所知在 selector 这一层面有可能会消耗性能, 而所依赖的 delegation 是否能有很好的性能还是未知. 以 Rabr 的 $.live() 的使用量来看, 用冒泡处理会比 $.live() 有更好的性能, 关于这方面补足资料和测试之后再回来更新吧
  • $(window).load(fn) & $(document).ready(fn)
    $.ready() 是指定 DOM 元素可以被遍历和操作时触发
    $.load() 是指定元素在所有内容加载完毕后触发
    有什么区别? $.load() 绝不可能比 $.ready() 早触发, 而 $.ready() 在页面内容未全部加载完成前就可能触发, 甚至造成页面一直处于载入中的状态. 一些不必要的处理放入 $(window).load() 有助提高页面加载速度, 比如 Rabr 的图片预览脚本

参考资料:

jQuery Performance Rules

Improve your jQuery – 25 excellent tips

Share
18
Mar

Chris (Chris_Ys) on Twitter

   Posted by: Chris Ys   in Free Talk

我只想和志向相投的人交流, 因此 Twitter 很适合我
这是我的 Twitter: @Chris_Ys
不过 follow 我前先了解以下事项:

  1. 我未必会 follow back, 如果你认为我应该 follow back, 和我多交流再说吧
  2. 在礼貌的基础上我的 tweets 通常不会有过激或侵犯性言语, 不过难保不会出现一些个人化或情绪化的发言, 不喜勿 follow
  3. 基于我一般不参与争论或吵架, 请谨慎 RT, 万一我 unfollow 甚至 block 了别见怪
  4. 就目前参与开发的 Twitter 第三方客户端 Rabr 可提供一定的技术支持和使用上的解答, 但不一定会有回应
Share
http://flv.sina.fastwebcdn.com/201002090139/8716b95ed4f9867cface0e2503658ac1/2163/306/b03f8bd488a59f863e62aa491c80965a.flv

曾和喜欢的人走过
曾和喜欢的人看过
把走过看过的回忆抛在脑后
全力飞奔
会有什么在前方等着我呢?

驻足不前
探寻意义
都是些不成熟的表现

现在看到的事物
现在遇见的人
在纷杂喧嚣之中
仍会眼望前方

致10年后的我:
现在的你,收获幸福了吗?
还是说正沉浸在悲伤之中
默默地流着眼泪?

想必在你身边
依然有那不变的存在
未能察觉的你
依然在被守护着吧?

思绪 停留在记忆的场所之中
时间 却毫不留情地向前推进
是否会有那么一天
我能够回首
揭开当年托付在我背上的那一场梦

致10年后的我:
现在的你,喜欢上了谁?
还是仍旧守着不变的思绪
依然喜欢着那个人?

不过,在你真心地
爱上某个人之前
现在的你,是否能够说出
“喜欢我自己”了呢?

你所珍爱的人们
依然在重复着平凡的日子吗?
还是已经离你而去
踏上了各自的旅途?

然后,在无数的相遇
无数的别离之后
你是否比“此时的我”
变得更有魅力了呢

致十年后的我:
如果现在的你 收获了幸福
请你想起
过往日子里的我
好吗?

回忆中的我
一定在伤心地哭泣
请静静地让那泪水
溶入记忆之海

10 年后, 感觉上好遥远, 可是眨眼间就过了两个 10 年

而下一个 10 年后的我会是怎样呢?

niconico (日文字幕) nicosound (MP3 下载) acfun (中文字幕)

Share
7
Feb

【活在中国】谁是恶意软件?

   Posted by: Chris Ys   in Internet

via 阮一峰

新增一个“活在中国”栏目。

专门刊登生活在这个国家的真实经历,欢迎大家赐文。

今天刊登的是,“羊城网”小劳站长的来信。从他的经历可以看到,中国的小站长们,不仅要遭受政策压力,还会受到其他的欺压。

=======================

一峰,

我们又遇到麻烦了。

2月3日,我们接连收到网友报告,称网站被瑞星防火墙屏蔽了。

 rising-10-02-07-01

我们联系瑞星公司,客服建议我们通过该公司的在线工具进行安全检测。结果显示,有两条URL被挂马。

 rising-10-02-07-02

经查看,该两个网页并无任何异常,也无任何连接指向该工具所称的木马网址。其他公司的安全产品(包括诺顿、安全360等)亦无告警。但为了保险起见,我们还是删除了上述两个网页。但删除后,瑞星的防火墙仍然称我们的网站为恶意网站。而通过该工具检测其他一些主流门户网站时,发现新浪、搜狐、网易被 “挂马”的URL数量远远高于我们,但瑞星防火墙却并无任何有关恶意网站的提示。

瑞星公司的客服人员建议我们加入“瑞星云安全网站联盟”、挂载该公司提供的监测代码,暗示与其合作,问题就会解决。

rising-10-02-07-03

至此,我们终于看出了其中的猫腻,瑞星公司的行为实际上是对一些中小网站进行施压,在每个网页挂载它的代码,相当于免费帮它卖广告。至于下一步它会怎样利用这些代码(收集用户信息?),就无从得知了。

rising-10-02-07-04
另一方面,瑞星公司自己的网站,去年七月份就曾被黑客攻击并挂载木马,并且瑞星杀毒软件上月亦曝出存在高危漏洞,显然不能指望它来保护我们。如果我们挂了该公司的代码,反而有可能造成安全隐患。

此外,最近《北京晚报》的报道《北京网监处长受贿1400余万办假案受审 承认帮瑞星公司抓人》,曝光了瑞星公司行贿原北京市公安局网监处处长,通过假报案、假损失、假鉴定的手法陷害竞争对手。这种公司的商业诚信,是令人质疑的。

因此,我们最后决定,不与其合作,不参与“瑞星云安全网站联盟”,并建议所有瑞星防火墙的用户卸载该产品。但是,单单靠我们一家小网站,确实难以与瑞星这种庞然大物对抗,希望通过您的网志让更多的网友了解此事。

羊城网 小劳

2009年2月4日

(完)

Share
30
Jan

[旧文] I’m always close to you

   Posted by: Chris Ys   in Free Talk

这首歌简直就是岡崎律子小姐的心情写照

明日などないかもしれないのに
どうして 今日を过ごしてしまう 即使不一定有明天

今がすべてと 今天又该如何度过
ちゃんとしていたはずなのに 现在 一切都已经有了准备

あせる気持ちがあった 心情焦躁
どれも选べず 全部をやりたかった 什麽也没选 全部的事都想完成
素敌なことは 美妙的事
めまぐるしくやってくるのよ 总是目不暇给的来临

行きつけない时は ゴールが欲しくて 无法达到的时候 是多麽想要跑到终点
ただ もどかしく もがいて走った 只是  不耐烦 挣扎地奔跑
ゴールが见えると 今度は惜しくて 当快到终点时 这时又觉得可惜
もっともっといたい 想要想要再继续
まだ続けていたいって思うのね 就这样持续下去吧 心中这样想着

I’m all right
I love you
I love my life
I’m always close to you

ごめんね お别れが突然で 对不起 突然的告别
今は ちょっとね 寂しいけど 现在  只是有点寂寞
かなしみじゃないの 但并不悲伤
いつか ちゃんと想い出になる 总有一天  这会成为彼此的回忆

约束 お愿いはひとつだけ 答应我  一个请求
生きて 生きて 活下去  活下去
どんな时にも なげてはだめよ 任何时候  都不能轻言放弃
それは なによりチャ一ミングなこと 这是令人最有魅力的事

每当听到高亮那部分,总是觉得是律子小姐为喜爱她的人而唱……唉,伤感…

02/26/2006:

前几天把TVアニメFruits Basket看完了,有人说结局有点黑暗,我倒不觉得,反而有点温馨。
Fruits Basket真的是现在难得一见的优秀之作,虽然很旧了,感叹一下商业动漫的横行。
而为其作曲&演唱的岡崎律子真是一个才女。虽然很早前就有接触岡崎的歌,只不过一直在无视,因为听不懂日文和找不到中文歌词,只觉得那个melody是不错,而现在,接触了日语,也有找歌词的经验,重温Fruits Basket、听着OP&ED的时候,看着歌词缓缓而过,开始懂得岡崎的歌,真的真的很棒!
柔和优美的Melody加上岡崎独特的Voice
可惜的是,岡崎在04年就走了,享年仅仅四十四岁……现在只能在 Photo、Video、Music等物才能见到她和听到她的声音……
引用南方网《永不褪色的旋律,献给岡崎律子》一文的话【岡崎律子小姐虽然已经离开了我们,然而她却也继续活在了我们的身边。】
确实,喜欢她的人是不会忘记她的,忘不了她的Music……只是,永远也不能听到她的新作品……
若然不是看Fruits,我是不会知道岡崎已走……因此,籍着这篇迟来文章,纪念岡崎律子小姐……
目前收了Joyful Calender、life is lovely、Love&Life、Rain or Shine、Ritzberry.Fields、Sincerely yours,、おはよう、プリンセスチュチュ、フルーツバスケット -四季-、フルーツバスケット–風色–、ラブひな OKAZAKI COLLECTION专辑,希望有机会能补完剩下的。
Share
19
Jan

Long time

   Posted by: Chris Ys   in Free Talk

我是个不太爱写东西的人, 可能因为老妈经常说我写出来的都是流水帐的原因吧, 导致我尽量避免写东西, 所以 blog 一直都空荡荡

最近没什么特别值得说的事:

  1. 参与了 rabr 的开发与维护, 由于 twitter 逐渐成为我获取消息和交流的主要工具之一, 在上面的活跃程度远大于 QQ 和国内的论坛, 所以有一个顺手的客户端是很必要
  2. Google 扬言 G.cn 撤出中国, 只有一句, Google 请别让我们失望
  3. 关注的技术越来越广, sigh, Google Go lang 要不要学是我最近在考虑的问题
  4. JS 很好很强大
Share
21
Dec

No time

   Posted by: Chris Ys   in Free Talk

他向来说自己忙,哪有空陪她?
其实他有的是时间,只是不肯花在她身上罢了。
大学时代,他总是忙著念书和社团,好不容易等到寒暑假,他又忙著打工赚钱。
那时他家中经济拮据,念书和打工是为了奖学金和赚学费。
这些都是事实,也是正当理由,
她觉得自己应该做个体贴的女友,所以也不强求他花时间在她身上,甚至尽力为他分忧解劳。
毕业后,他和几个朋友合夥开了一间小公司,她则在出版社找了一份画插图的工作。
创业维艰,白手起家非常辛苦,
所以她不但替他处理家务,还每天送便当和宵夜到公司给他,
每次都只是聊两句就走了,深怕耽误他的时间。
他的同事们都夸她体贴又得体,将来必定是个贤妻良母;
她也有点沾沾自喜,认为自己的付出受到了肯定。
公司的营运终於步上常轨,照理说,他应该有空陪她了,
可是他却说:「我希望在三十岁以前,有自己的车子和房子,还有足够的存款,这样才能安心、没负担地结婚。」
於是他变得更忙、更拼了,就连她送便当到公司去,也常常见不到他。
相较之下,她觉得自己像是游手好闲。
交往五、六年了,她渐渐发觉自己总是在孤单寂寞中渡过,
每年的生日、情人节、圣诞节,都是自己一个人和电视机一起渡过。
同事们总笑说她的男友只是个「传说」,甚至还有朋友怀疑她是否真的有男朋友。
这些日子以来,她的体贴和识大体,除了换来男性朋友们的称赞,和姊妹淘们的同情之外,什麼也没有。
於是,她开始对他做出小小的「反应」,但总被他的好言相劝给抑制下来。
「今天的辛苦,是为了明天的幸福啊!」
「两个人整天黏在一起,反而更快、更容易分手呢!」
情人节,在她万般请求之下,他才终於答应晚上陪她到阳明山看夜景。
她殷殷期盼了一个多星期,却因为一通朋友要他去应酬的电话,粉碎了这个梦。
再也按捺不住这几年来的孤单寂寞,她边哭边抱怨著、诉说著自己的委屈。
「你以为我喜欢忙吗?我这麼辛苦,还不都是为了我们的未来!」此话一出,她变得哑口无言。
他不肯放手,而她也还没准备好离开,可是现状却毫无改善。
但是不甘愿的种子已经在她心里种下,生根发芽,等待开花结果的一天。
他有工作、有朋友、有应酬,所以他没有空。
这些她也有,只是她长期选择待在家里、守著电话、等待他的来电、
让自己随传随到,而推开了工作和朋友。
现在,她不想再独守空闺、痴痴地等他临幸,不再划地自限,决心找出自己的一片天。
她不再为他送便当和宵夜,宁可窝在办公室里边啃面包边画插图,或是想想新点子;
她也不再每天按时打电话问候他了,宁可和姊妹淘们喝咖啡、聊是非,或是花时间打扮自己,更添自信。
他渐渐发觉自己忙碌的生活里,似乎少了些什麼,但总想不出到底是少了什麼。
半个月过去,他才惊觉是少了她。
心血来潮拨了通电话,却被泼了桶冷水。
>> >「我现在没空,明天要交稿,我现在要赶稿。」说完,她立刻挂上电话。
他想,她总算有些事情可以忙,就不会常常埋怨他没时间陪她了。
各自忙碌的生活又过了两、三个月。
这天,他谈成一笔大生意,心情正好,想找她庆祝时,却再度吃了闭门羹。
「我现在没空,等一下要开会。最近应该也都没空。」
开会?他从来都不知道她那份悠闲的画图工作需要开什麼会。
原来她的插图受到读者欢迎,出版社打算为她出版一系列的图画笔记书。
又过了一个多月,他终於买了梦想中的新车。
想起和她久未见面,决定开车带她出去兜兜风。
「我现在没空,要赶著去新书发表会。」
「我载你去!」
「不用了,总编辑会送我去,我现在没空。」
他再也无法忍受了。
他们已经两个多月没有见面了,每次打电话给她,她总说没有空,就匆匆挂上电话。
以前的她不是这样的,这到底是怎麼回事?
「你到底还当不当我是你的男朋友?你到底爱不爱我?」
「我现在没空,等我有空再爱你吧!」
按下结束通话键,她将手机丢到皮包里,交给身旁的出版社总编辑,准备走进新书发表会的会场。
「男朋友吗?」
「不再是了。」
「那麼….签名会结束后,你有空吗?」
「只要你有空,我随时都有空。」她笑著说。

So, even I’m very busy, I still giving reply.

restore他向来说自己忙,哪有空陪她?
其实他有的是时间,只是不肯花在她身上罢了。
大学时代,他总是忙著念书和社团,好不容易等到寒暑假,他又忙著打工赚钱。
那时他家中经济拮据,念书和打工是为了奖学金和赚学费。
这些都是事实,也是正当理由,
她觉得自己应该做个体贴的女友,所以也不强求他花时间在她身上,甚至尽力为他分忧解劳。
毕业后,他和几个朋友合夥开了一间小公司,她则在出版社找了一份画插图的工作。
创业维艰,白手起家非常辛苦,
所以她不但替他处理家务,还每天送便当和宵夜到公司给他,
每次都只是聊两句就走了,深怕耽误他的时间。
他的同事们都夸她体贴又得体,将来必定是个贤妻良母;
她也有点沾沾自喜,认为自己的付出受到了肯定。
公司的营运终於步上常轨,照理说,他应该有空陪她了,
可是他却说:「我希望在三十岁以前,有自己的车子和房子,还有足够的存款,这样才能安心、没负担地结婚。」
於是他变得更忙、更拼了,就连她送便当到公司去,也常常见不到他。
相较之下,她觉得自己像是游手好闲。
交往五、六年了,她渐渐发觉自己总是在孤单寂寞中渡过,
每年的生日、情人节、圣诞节,都是自己一个人和电视机一起渡过。
同事们总笑说她的男友只是个「传说」,甚至还有朋友怀疑她是否真的有男朋友。
这些日子以来,她的体贴和识大体,除了换来男性朋友们的称赞,和姊妹淘们的同情之外,什麼也没有。
於是,她开始对他做出小小的「反应」,但总被他的好言相劝给抑制下来。
「今天的辛苦,是为了明天的幸福啊!」
「两个人整天黏在一起,反而更快、更容易分手呢!」
情人节,在她万般请求之下,他才终於答应晚上陪她到阳明山看夜景。
她殷殷期盼了一个多星期,却因为一通朋友要他去应酬的电话,粉碎了这个梦。
再也按捺不住这几年来的孤单寂寞,她边哭边抱怨著、诉说著自己的委屈。
「你以为我喜欢忙吗?我这麼辛苦,还不都是为了我们的未来!」此话一出,她变得哑口无言。
他不肯放手,而她也还没准备好离开,可是现状却毫无改善。
但是不甘愿的种子已经在她心里种下,生根发芽,等待开花结果的一天。
他有工作、有朋友、有应酬,所以他没有空。
这些她也有,只是她长期选择待在家里、守著电话、等待他的来电、
让自己随传随到,而推开了工作和朋友。
现在,她不想再独守空闺、痴痴地等他临幸,不再划地自限,决心找出自己的一片天。
她不再为他送便当和宵夜,宁可窝在办公室里边啃面包边画插图,或是想想新点子;
她也不再每天按时打电话问候他了,宁可和姊妹淘们喝咖啡、聊是非,或是花时间打扮自己,更添自信。
他渐渐发觉自己忙碌的生活里,似乎少了些什麼,但总想不出到底是少了什麼。
半个月过去,他才惊觉是少了她。
心血来潮拨了通电话,却被泼了桶冷水。
>> >「我现在没空,明天要交稿,我现在要赶稿。」说完,她立刻挂上电话。
他想,她总算有些事情可以忙,就不会常常埋怨他没时间陪她了。
各自忙碌的生活又过了两、三个月。
这天,他谈成一笔大生意,心情正好,想找她庆祝时,却再度吃了闭门羹。
「我现在没空,等一下要开会。最近应该也都没空。」
开会?他从来都不知道她那份悠闲的画图工作需要开什麼会。
原来她的插图受到读者欢迎,出版社打算为她出版一系列的图画笔记书。
又过了一个多月,他终於买了梦想中的新车。
想起和她久未见面,决定开车带她出去兜兜风。
「我现在没空,要赶著去新书发表会。」
「我载你去!」
「不用了,总编辑会送我去,我现在没空。」
他再也无法忍受了。
他们已经两个多月没有见面了,每次打电话给她,她总说没有空,就匆匆挂上电话。
以前的她不是这样的,这到底是怎麼回事?
「你到底还当不当我是你的男朋友?你到底爱不爱我?」
「我现在没空,等我有空再爱你吧!」
按下结束通话键,她将手机丢到皮包里,交给身旁的出版社总编辑,准备走进新书发表会的会场。
「男朋友吗?」
「不再是了。」
「那麼….签名会结束后,你有空吗?」
「只要你有空,我随时都有空。」她笑著说。
Share
10
Dec

Not my business

   Posted by: Chris Ys   in Free Talk

很久没更新了, 其实自己一直不太喜欢写东西, 呵呵

有些事不再与我有关, 该认真放下去向前望了, 我当初决定那样做并不是让自己去后悔

努力去活好点吧, 为自己也好, 为他人也好

Share
27
Nov

人走茶凉

   Posted by: Chris Ys   in Free Talk

明天起有几位同事不会再来上班了

同期进来的 9 人走了 7 个

突然觉得办公室是如此安静和空旷

突然想到,人走茶凉

Share
本WordPress博客由爱写字提供技术支持