Seven Yu @ 08/19/2008 (5:30 pm)

基于 jQuery 的 Plurk 表情猴子脚本(Greasemonkey)

verion 1.0
Plurk Smile

verion 2.0
Plurk Smile

verion 3.0
Plurk Smile V3.0

最近研究 jQuery 小有收获,感觉这玩意儿真是方便,于是到处找实习机会。

昨天,土豆王Plurk 上发布了一个 用 AutoHotkey 写的自动插入表情的小程序,感觉想法非常不错,只是需要记住表情的代码,有点麻烦。我想最好能弹出窗口让用户点击选择表情,这样既直观又方便,而且不用记忆表情代码。

于是研究了一下ahk的gui部分,未果。今天偶然想到之前 Eddie 推荐的 Greasemonkey,据说这玩意儿很强大,而且脚本是用javascript,用这东西把表情整合到 Plurk 页面再合适不过了,于是诞生了下面的脚本(代码是 version 1.0 的, 新版本的源码可以看这里):

PLAIN TEXT >> JAVASCRIPT:
  1. // ==UserScript==
  2. // @name           Plurk Smile
  3. // @namespace      http://phpz.org/
  4. // @description    Easy to insert Smile
  5. // @include        http://www.plurk.com/user/*
  6. // ==/UserScript==
  7.  
  8. // jQuery 1.2.6 pack
  9. // 这里是 jQuery 脚本
  10.  
  11. // My Script
  12. var phpzOrgPlurkFaceCount = new Array();
  13.  
  14. phpzOrgPlurkFaceCount.push(new Array('http://ipx6.cn/plotion/onion/',
  15. new Array('ah.gif','ah2.gif','ah3.gif','angry.gif','angry2.gif','angry3.gif',
  16. 'angry4.gif','angry5.gif','baby.gif','bath.gif','buddha.gif','bye.gif',
  17. 'circle.gif','cold.gif','cold2.gif','cold3.gif','cold4.gif','comfortable.gif',
  18. 'cool.gif','cry.gif','cry2.gif','cry3.gif','cry4.gif','dizzy.gif','faint.gif',
  19. 'ghost.gif','glasses.gif','hand.gif','happiness.gif','hope.gif','idea.gif',
  20. 'ill.gif','knife.gif','lol.gif','look.gif','love.gif','lovely.gif','music.gif',
  21. 'nose.gif','oh2.gif','orz2.gif','pia.gif','question.gif','redcard.gif','runcry.gif',
  22. 'shrug.gif','shy.gif','shy2.gif','shy3.gif','sleep.gif','smile.gif','smoke.gif',
  23. 'soccer.gif','soccer2.gif','soccer3.gif','speed.gif','star.gif','sweat.gif',
  24. 'sweatlove.gif','think.gif','vomit.gif','w.gif','wall.gif','wind.gif',
  25. 'wind2.gif','wow.gif','xd.gif','yawn.gif','yellowcard.gif')));
  26.  
  27. var phpzOrgPlurkImageArea = $('<div></div>');
  28. var phpzOrgPlurkShowSmile = $('<a href="javascript:void 0;">Show Smile&gt;</a>');
  29.  
  30. $(phpzOrgPlurkFaceCount).each(function(item)
  31. {
  32. phpzOrgPlurkAppendImage(this);
  33. });
  34.  
  35. $(function()
  36. {
  37. var curInput = $('#input_big');
  38. var in_big = $('#input_big');
  39. $('#input_big').add('#input_small').bind('focus', function()
  40. {
  41. curInput = $(this);
  42. });
  43. phpzOrgPlurkShowSmile.insertAfter(in_big)
  44. .css('font-size', '12px')
  45. .toggle(function()
  46. {
  47. $(this).html('Hide Smile &lt;');
  48. phpzOrgPlurkImageArea.slideDown('slow');
  49. },
  50. function()
  51. {
  52. $(this).html('Show Smile&gt;');
  53. phpzOrgPlurkImageArea.slideUp('slow');
  54. });
  55. phpzOrgPlurkImageArea.insertAfter(in_big)
  56. .hide()
  57. .css('background-color', '#fff')
  58. .find('img')
  59. .css({'width':'27px', 'margin':'2px'})
  60. .bind('click', function()
  61. {
  62. curInput.val(curInput.val() + ' ' + this.src + ' ').focus();
  63. });
  64. });
  65.  
  66. function phpzOrgPlurkAppendImage(arr)
  67. {
  68. var baseUrl = arr[0];
  69. $(arr[1]).each(function()
  70. {
  71. var _url = baseUrl + this;
  72. phpzOrgPlurkImageArea.append('<a href="javascript:void 0;"><img src="'+_url+'" alt="'+this+'" /></a>');
  73. });
  74. }

脚本页面:version 1.0 version 1.0,点击 “install this script”,提示安装成功后刷新 Plurk 页面就能看到效果了。

Seven Yu @ 08/12/2008 (12:48 pm)

[BS IE7]关于 IE7 中的 file 表单

Tags: , , ::

困扰了2天的问题终于找到原因了,起初测试表单总是无法提交(firefox 和 opera 没问题),上网搜了一下发现有人问 IE7 下提交表单没反应的问题,以为是 form.onsubmit = function(){return false;} 的问题(伪代码),后来写了个测试代码,发现不是这的问题。

由于是第一次用 jQuery,于是又怀疑自己的表单表达验证脚本,修改脚本、尝试使用 jquery-validation 插件,问题依旧... ( btw:jquery-validation 插件不错哦 :D )

于是我开始抓狂了,就在这时 RP 爆发,偶然想会不会是 file 表单的问题。之前发现 firefox 和 opera 都对 file 表单进行了处理:firefox 中是不允许输入,无论点击文本框和还是点击"浏览..."按钮都会打开文件对话框;opera 中的 file 表单虽然允许输入,但最终提交表单时如果输入的文件路径不存在也会有提示(尽管提示很难看)。所以我想会不会 IE7 中也做了处理呢,于是点击浏览按钮选择了一个本地文件(之前为了测试,file 表单中都是随便输入的字符),再次提交,成功~~ 8-)

我就无语了,既然做了处理,不允许填入不存在的文件路径,为什么不能给个提示呢,哪怕是个很难看的提示。

总结:IE7中file表单中必须选择存在的文件,否则不能提交。

Seven Yu @ 07/18/2008 (9:56 am)

[转]改进后的Flash索引

Tags: , , , ::

转载自谷歌中文网站管理员博客

Improved Flash indexing
发表于:2008年6月30日星期一,晚上9: 31

我们收到过许多期望我们改进对Adobe Flash文件索引问题的建议。今天,索引团队的软件工程师 Ron Adler Janis Stipins,将就我们最近在Flash文件索引编制上取得的改进与大家进行更深入的探讨和交流。

问: 目前哪些Flash文件能更好地被谷歌索引到呢?
我们改善了对所有类型
SWF文件中的文字内容的索引能力,其中包括像按钮或菜单这样的Flash“小工具”,独立自成一体的 Flash 网站,以及所有介于两者之间的Flash形式。

问:这些Flash文件中的哪些内容能被谷歌更好地索引呢?
用户在与您的
Flash文件互动过程中所看到的一切文本内容都将得到更好地索引。如果您的网站包含Flash,其中的文字内容会被Google用来生成您网站的摘要。同时,出现在Flash文件中的文字可以用来匹配用户在Google搜索框中输入的搜索查询。

除了索引Flash文件中的文本内容,我们现在也能够识别在Flash文件中的出现的URL,并且把这些链接纳入搜索引擎机器人爬行的目标队列中,就像对待那些非Flash网页中出现的URL一样。例如,如果您的Flash 应用程序中包含指向您网站内部页面的链接,Google现在能够更好地发现并抓取您的网站。

问:那么Flash文件中包含的非文本内容呢,比如图片?
目前,我们只能识别和索引
Flash文件中的文本内容。如果您的Flash文件里只有图片,我们将不能识别和索引出现在这些图片中的任何文字。类似地,如果一个Flash按钮没有任何附属的文字的话,我们将无法对这类指向特定链接的Flash按钮生成任何錨文本。

还应注意到的是,我们无法索引 FLV 文件,比如在 YouTube 上播放的视频,因为这些文件没有包含任何文字元素。

问: Google是怎样识别Flash文件里的内容呢?
我们开发出了一种算法,这种算法可以使Google机器人能够模仿人类通过点击按钮、输入内容等方式来了解
Flash文件。我们的算法能够记住沿途它遇到的所有文字内容,其后这些内容都能被索引到。我们无法告诉您更多的保密细节,但是我们可以告诉您,通过使用Adobe的新型可检索性SWF数据库,这种算法的有效性得到了进一步提高。

问:我怎样做才能使Google索引到我的Flash文件中出现的文本呢?
基本上,您不需要做任何事情。我们已经取得的技术改进,使这项功能的实现,无需网页设计者或网站管理员做任何特别的操作。如果您的网站上有
Flash内容,我们会在现有技术能力的基础上,尽最大能力对它们自动进行索引(详见接下来的问题)。

也就是说,您应该了解 Google现在已经可以识别那些展现在您网站访问者面前的文字信息。如果你希望 Google忽略一些次要内容,如"版权""加载"等信息,您可以考虑把那些文本替换为图片,这样它们就不会被我们抓取到了。

问:在索引Flash文件上,Google遇到的主要技术难题是什么?
目前的问题主要体现在三个方面,这也正是我们在努力解决的:

1Googlebot不能执行某些类型的JavaScript程序。因此,如果您的网页通过JavaScript加载Flash文件的话,Google可能无法识别该Flash文件,在这种情况下,它将不会被索引到。
2、目前,我们还无法把那些通过您的Flash文件加载的外来内容和您的Flash文件整合起来。也就是说,如果您的Flash文件加载了一个HTML文件,或一个XML文件,或另一个SWF文件等等,Google将分别索引这些资源,但是它们将不会被认为是您Flash文件内容的一部分。
3、虽然我们能够索引在网络上出现的几乎所有语种的Flash,但在识别用双向语言书写的Flash内容还有一定困难。在这个问题解决之前,我们将无法识别和索引Flash文件中的希伯来文或阿拉伯文的内容。

但是,在这些问题上我们也已经取得了相当的进展,所以,敬请期待我们进一步的改进!

附:

改进之前搜索结果中的Flash网站

改进之后搜索结果中的Flash网站, 搜索查询 [nasa deep impact animation]

Seven Yu @ 07/16/2008 (10:39 am)

关于 flashVars 中的 & 符

我们知道,利用 html 插入 flash 的代码中的 flashVars 属性可以按照 url 传递变量的格式给 flash 传递变量,其格式是:

PLAIN TEXT >> CODE:
  1. var1=value1&var2=value2

中间的 & 符是多个变量之间的分割符,但如果变量值中包含 & 符应该如何处理呢?可能会想到用 &amp;,但实际上这样的转换是错误的,flash 仍会将 &amp; 解释为变量分隔符 & 而不是作为值的一部分,因为 & 到 &amp; 的转换是 html 编码,而我们需要的是 url 编码,也就是说正确的解决方案是将值中的 & 转换为 %26。
参考下面的 php 程序:

PLAIN TEXT >> PHP:
  1. <?php
  2. $str = "&";
  3. echo urlencode($str); // %26
  4. echo htmlentities($str); // &amp;
  5. ?>

Seven Yu @ 07/15/2008 (9:47 pm)

Gumbo - Flex SDK 4

Tags: , , ::

The next version of Flex, code name Gumbo, is now in active development. It is has 3 primary themes:

  • Design in Mind: provide a framework meant for continuous collaboration between designer and developer.
  • Developer Productivity: improve compiler performance and add productivity enhancements to language features like data binding
  • Framework Evolution: take advantage of new Flash Player capabilities and add features required by common use-cases

Next steps

  1. Watch a presentation on the Gumbo plan (~14 mins)
  2. See Ely Greenfield discuss designer/developer improvements
  3. Read a longer description of the Gumbo themes
  4. View and comment on the specifications

Download builds of Gumbo from here

Seven Yu @ 07/03/2008 (7:52 am)

记录两点, 关于 Loader 和 removeChild

  • Loader
    如果需要终止 Loader.load() 的加载,可以用 Loader.close()。
    可能的情况是包含 Loader 的 mc 被 removeChild,这时候 Loader 仍然在加载,close 方法可以关闭该连接。另外,Loader 还有个 unload() 方法。
  • removeChild
    removeChild(xxx) 只是将 xxx 从 displayList 中移除,其实还实际存在于内存中,要完全销毁 xxx 可以 xxx = null。是否存在于 displayList 中可以用 xxx.root == null 来判断,返回 true 表示不存在于 displayList 中。

Seven Yu @ 06/27/2008 (11:25 am)

Adobe AIR: Create - Modify - Reuse

Tags: , , ::

书名: Adobe AIR: Create - Modify - Reuse
作者: Marc Leuchner, Todd Anderson, Matt Wright
出版: Wiley Publishing, Inc.
ISBN: 978-0-470-18207-9
格式: pdf
页数: 457
大小: 5.30M

下载: Adobe AIR: Create - Modify - Reuse

Next Page »