Seven Yu @ 06/26/2009 (5:59 pm)

写了个合并对象方法, 可能会有用, 先存下来

PLAIN TEXT >> ACTIONSCRIPT:
  1. private var obj1:Object = { a: 1, b: { b1: 3 }};
  2.  
  3. private var obj2:Object = { b: { b2: 9, b3: { n: 95 }}};
  4.  
  5. private function test():void
  6. {
  7.     mergeObjects(obj1, obj2);
  8.     trace(obj1.a, obj1.b.b1, obj1.b.b2, obj1.b.b3.n);
  9.     // 1 3 9 95
  10. }
  11.  
  12. private function mergeObjects(obj1:Object, obj2:Object):void
  13. {
  14.     for (var k:String in obj2)
  15.     {
  16.         if (obj1.hasOwnProperty(k))
  17.         {
  18.             if (typeof obj2[k] == 'object')
  19.             {
  20.                 mergeObjects(obj1[k], obj2[k]);
  21.             }
  22.         }
  23.         else
  24.         {
  25.             obj1[k] = obj2[k];
  26.         }
  27.     }
  28. }

Seven Yu @ 06/17/2009 (9:42 am)

Adobe 开放 RTMP 协议

Tags: , ::

7yue 那里看到消息, Adobe 今天(2009/06/16)开放了 RTMP 协议规范.

之前的介绍:

同 SWF 文件格式规范一样,Adobe 目前正在考虑开放RTMP协议格式规范,在 Open 的道路上,Adobe 又将迈进一大步。我会关注详细进程,并后续更新。

额外解释:RTMP 协议格式规范开放表明第三方开发者可以通过此规范更好的了解 RTMP 协议的构成和实现,并可以开发出使用 RTMP 协议的第三方产品和服务。注意,开放格式规范不等于免费,RTMP 协议的商用将来仍是要获得 Adobe 的授权。

---- 来自 7yue

具体看这里, 看这里, 看这里.

Seven Yu @ 06/15/2009 (12:23 pm)

BluePrint — Flex/Flash Builder 范例查询插件

Tags: , , ::

今天在 Kenshin's Blog 上发现一个好东西 --- BluePrint, BluePrintAdobe 官方为 Flex/Flash Builder 开发的一个范例查询插件.

用法和帮助差不多, 选中一个要查询的关键词, 按快捷键 Alt+B (或 工具栏按钮), 会弹出搜索框自动进行搜索, 搜索完成显示结果.

这不论对菜鸟还是高手来说都是个不错的功能, 菜鸟可以通过他来学习一些基础知识或组件的用法, 高手则可以了解一些更深入的知识.

总之是超赞的一个插件, 强烈建议安装.

安装方法就不赘述了, BluePrint 有给出安装步骤. :D

当然, 熟悉 Eclipse 插件安装方法的可以直接安装 ;)

Name: BluePrint

URL: http://download.macromedia.com/pub/labs/blueprint/

Seven Yu @ 05/21/2009 (2:26 pm)

import this

Tags: ::

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Seven Yu @ 05/08/2009 (5:21 pm)

如何在 GM(greasemonkey) 脚本中使用外部资源

这里所说的外部资源分为三种: 脚本, 图片 和 文本.

先说如何载入外部脚本:

相信很多写 GM 脚本的朋友包括我以前在引入外部脚本时都会使用下面的(或类似的)代码:

PLAIN TEXT >> JAVASCRIPT:
  1. var jQlab = document.createElement('script');
  2. jQlab.type = 'text/javascript';
  3. jQlab.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js';
  4. document.getElementsByTagName('head')[0].appendChild(jQlab);

这段脚本是可以工作的, 但有个问题, 就是每次执行脚本时都会重新去加载这个脚本, 很浪费时间和带宽.
正确的做法是利用 @require 元标签, 代码如下:

PLAIN TEXT >> JAVASCRIPT:
  1. // ==UserScript==
  2. // 此处省略其他一些 GM 元标签 ...
  3. // @require    http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js
  4. // ==/UserScript==

这样做的好处有二: 一是节省代码; 二是不会每次执行脚本都加载, 因为 GM 在安装脚本时会去加载这个文件, 把他下载到本地(脚本所在文件夹中), 之后每次运行脚本时都会到本地文件夹去加载文件, 这样就大大节省了带宽, 同时提高了脚本响应速度.

当然这样做也有一个缺点就是如果被载入文件更新了, 就只能从新安装该脚本, 本地文件不会跟着更新, 因为只在安装时才加载这个文件.

下面再来说说如何加载图片和文本:

这涉及到另外一个 GM 元标签 @resource, 代码如下:

PLAIN TEXT >> JAVASCRIPT:
  1. // ==UserScript==
  2. // 此处省略其他一些 GM 元标签 ...
  3. // @resource    resourceName http://www.example.com/resource.png
  4. // ==/UserScript==

使用时需要用到两个 GM 函数: GM_getResourceURL(resourceName)GM_getResourceText(resourceName), 前者将返回脚本中可用的 url 格式 (base64 编码), 后者返回文件内容.

这个元标签和 @require 一样, 也会在安装脚本的同时将资源下载到本地, 所以如果需要更新资源的话, 请重新安装脚本.

Seven Yu @ 05/04/2009 (5:05 pm)

新站 gm.phpz.org

一个新站, 偶的 GM 脚本集合.
地址: http://gm.phpz.org/

目前包括针对 Twitter, Plurk 和 Picasaweb 等站的 5 个脚本.

会陆续丰富更新, 敬请关注.

Seven Yu @ 04/09/2009 (5:58 pm)

用 jQuery 获取 iframe 父页面元素

是群里的问题(我发现没事在群里鬼混一下还真能开放思路学到东西啊)

不说废话, 代码如下:

PLAIN TEXT >> JAVASCRIPT:
  1. $('#objId', parent.document);
  2. // 搞定...
  3. /*
  4. 以前一直不理解这第二个参数应该在什么情况下用,
  5. 今天终于知道了, 撒花, 庆祝...
  6. */

Next Page »