做了一个tineye搜索的JS插件

使用方法很简单,IE用户在下面的链接上右键选择添加到收藏夹,firefox用户直接将链接拖动到书签栏就行了

tineye搜索

然后打开任意网页,比如g.cn,比如现在要搜索与google的logo相似的图片,在收藏夹里点击这个tineye的收藏就行了,此时JS文件已经加载到该网页并且处理过所有页面中的图片了。把鼠标移动google的logo上会有个黑框,然后title也变成了“Search in tineye”,左键单击图片,就会打开新窗口来搜索图片。

测试过了,firefox,opera,ie,webkit都能用。以后看到美女图要找套图就方便了,哈,直接用这个JS处理一下然后点击就行了。

Tags: tineye,插件

zz炮轰《JavaScript征途》,兼批技术社区的吹捧之风

写在转载前面的话

要学好一门技术,网上有很多免费的资源,搜刮一点确实能入门。但是个人感觉要学好,还是得看书。毕竟书是作者在自己学习的基础上加上一些个人心得或技巧编著而成,有一些东西也许网上查不到或者不详细,但是书上是有写的。所以真想把一门技术学好,买大于等于一本的经典教程是很有必要的。

但是国内图书市场的情况我想大家都清楚,太过于功利与浮躁。我借阅过很多书,虽然中文作者写出来的确实有很多不错的书籍,但是还有大量的估计是为了占市场赶工出来的粗糙货,比如是截图与源码对不上一类的错误一堆。再比如两人合著,前一页还是中文版visual studio,一翻页成英文版的了。也许有人觉得这些事情没什么大不了,但是我想下面这篇转载的作者说的有道理,对老鸟也许啥都不是,但对新手这就是一个坑。

啥都不说了,但愿写书的人都能赚大钱,出版图书的质量也越来越高。

###############  强大的分隔符 ###############

原文链接:http://hax.javaeye.com/blog/474725

直到今天中午之前,我并没有打算要站出来炮轰这本《JavaScript征途》。因为在目前的技术出版形势下,原创作者面临了很多困难,出书并不易,而且看得出该书作者(朱印宏,网名css8)技术还是ok的,长久以来在技术社区里也做了不少传播技术的工作。这年头,积攒人品不容易啊!所以一切原本只是停留在51js论坛上随性而起的     而已。 

然而这本书的作者对于善意批评所作出的连番回应,却令我大吃一惊,他对自己犯的多处低级错误不仅不以为耻、百般狡辩,还发出“没有其他意思……不是广告”,还不止一处,连参与讨论的一向儒雅和气的爱民,都唯有疯笑以对。尤其是今天上午因为china-pub上一位“5级评论员”提及了51js上的讨论,这有可能影响到该书的销售前景,于是css8就坐不住了,明着或暗着说我“危言耸听”、“不厚道”、“偏激”、“动机不纯”、“扣硕大的黑帽子”、“无知傲慢”……还大喊冤枉。这种无耻行径使我感到不能不把这个争论公诸于众,以正视听。 

阅读全部内容…

Tags:

carngorm框架中,主程序关于service locator与controller的笔记

flex写着写着,就越写越大了,多个view state,大量的处理函数,http service等也好几个,总之是越来越大呀,于是就想用框架了。关于flex框架的介绍,可以看看天地会的wiki上的一篇文章:选择一个Flex框架

我选的是carngorm,主要是因为手头借了一本flex的书,最后一章就是介绍carngorm的使用,并有一个详细的开发实例,学起来比较方便。

怎么开发的我就不讲了吧,大家自己去找资料学习。本文主要是记录一个问题,在application中需要定义一个service locator,还要定义一个controller,但是我发现这两个变量在整个程序中并没有引用呀。一开始一直不明白写这里是干嘛的。

开始以为是书上搞错了,后来去下了一个别人写的carngorm的demo,看了一下application,也有这么两行。看来这不是写错了呀,还真是都这么干。想来想去,我认为我想通了,于是记录在这里,以备以后查阅。有会carngorm的大牛,麻烦帮忙看一下,发表下评论,因为我也不知道自己写得对不对。

首先是service locator的定义。因为我们在ServicesDelegate里,是裸用的ServiceLocator.getInstance().getService("***"),这个***是自己定义的remote service引用的控件。按理来说carngorm是没办法自己来分析源码来找到他在哪里的,只有在运行时把他生成一份了,这时你再用getService("***")才能返回正确的引用,所以呢,自己定义的service你需要实例化一个才行。因为他包裹在carngorm:ServiceLocator标签里,实例化过程,我们可以认为他是一个注册过程。这样运行时,给定service的id,就可以实现对应的远程调用了。

其次是controller的定义。同样我们可以发现在event中,每个event都需要由controller帮忙调用对应的command,而command与event的对应关系,是在controller的构造函数中调用的addCommand完成的。所以这个controller那肯定也是要有一个实体对象才行。只不过addCommand以后,这个event与command的对应关系就交给carngorm来维护了,所以不需要自己显示的调用controller,那也就是为什么我发现只有实例化却没有引用的原因。

以上是个人意见,请大家拍砖。

Tags: carngorm,flex

flex中自定义效果(effect),repeatCount的实现

这个标题其实也不准确,大致意思是说:repeatCount是Effect基类的成员,怎么在自己定义的effect中实现repeat的效果的问题。

关于如何自定义effect,网上有文章,这里就不啰嗦了,引用一篇就写得不错的博文,有代码有演示,可以跟着学习一下:flex 自定义TweenEffect方法

如果想了解得更详细一点,可以看看Flex Builder 3\sdks\3.2.0\frameworks\projects\framework\src\mx\effects目录下的几个文件:Effect.as EffectInstance.as effectClasses\TweenEffectInstance.as。这几个文件是基类,里面的注释非常详细,包括自己继承的话需要Override哪些函数都有说明,然后就可以找Move.as和MoveInstance.as学习一下,参考他的自己实现一下就行了。

这里主要说的是如何实现repeat的效果。在effects目录下全文搜索一下,发现repeatCount在所有的效果类里都没有出现过,一开始感觉都找不到参考,不知道怎么办才好。那就从头看起吧。

首先在Effect.as的initInstance函数里,可以看到这么一句“instance.repeatCount = repeatCount;”,也就是说这个repeatCount已经自动赋值到工厂create的instance上了,那么怎么用就看instance自己了。

结果到EffectInstance.as里找了一把,仍然没有太多头绪。但是我们知道Move这个效果是可以多次循环的。来看看他在TweenEnd这里是怎么处理的。从MoveInstance->onTweenEnd跟踪进“super.onTweenEnd(value);”,来到TweenEffectInstance->onTweenEnd,在最后可以发现这么一句“finishRepeat();”。看名字就知道应该跟repeat相关。跟踪到EffectInstance里就能看到这么一段了

xhtml代码
  1. public function finishRepeat():void  
  2.     {  
  3.         if (!stopRepeat && playCount != 0 &&  
  4.             (playCount < repeatCount || repeatCount == 0))  
  5.         {  
  6.             if (repeatDelay > 0)  
  7.             {  
  8.                 delayTimer = new Timer(repeatDelay, 1);  
  9.                 delayStartTime = getTimer();  
  10.                 delayTimer.addEventListener(TimerEvent.TIMER,  
  11.                                             delayTimerHandler);  
  12.                 delayTimer.start();  
  13.             }  
  14.             else  
  15.             {  
  16.                 play();  
  17.             }  
  18.         }  
  19.         else  
  20.         {  
  21.             finishEffect();  
  22.         }  
  23.     } 

意思很明显,在repeatCount还没有结束之前,反复调用play()函数。

我一开始一直试不出效果,现在总结一下,有两个问题:

1. 自己override的onTweenEnd函数最后,没有调用“super.onTweenEnd(value);”;

2. 一些成员变量的初始化没有放到play函数中。因为一些变量(比如不断变大的圆圈的半径),如果只在类构造的时候初始化一次,那么第二次调用play的时候,这个值已经不再是初始值了,自然看不到预期的效果。也就是在play的时候需要将这个effect设置到一个初始状态,这才能看到不断repeat的效果。

发一个效果,嘻嘻,我要做的就是这个发信号。代码里实现的效果是这个圈的半径变大并且淡出,类似魔兽地图上发的信号。代码实现一次变幻,alpha变为0就停止了。这个demo中配置的是repeatCount=3,该effect自动play 3次。

因为使用了pathinfo的关系,FLEX中的view source合成的路径不正确了。可以点击这里查看和下载源码。

Tags: flex,repeatCount

理解Flex中的函数调用和语句写法

这个标题其实与我要表达的意思不太贴切,只是我不知道应该怎么样来取题目比较好。

问题是这样的,我有一大段的ArrayCollection初始化代码,不想查数据库也不想每次load xml,东西不多而且不变,所以直接编译进swf。但也有个几十项吧,因此起把他单独搞到一个as文件里去,让application的mxml更干净点。

先定义这个ArrayCollection的变量,然后就开始裸写source.push了,结果报错,“1120: 访问的属性 变量名 未定义”。查了一下,原来在FLEX中,可以裸调用的语句只有include import和变量定义等。其他语句必须封装到函数里去。

那好,封装一个initData():void的函数,然后在主文件中include这个as文件,对于这个array变量的引用没有报错了。第一步解决了。

然后出于习惯,我直接在include后面就开始调用这个函数,又报“1180: 调用的方法 initData 可能未定义”。一开始不太理解,心想明明定义了呀,为什么会报这个错误。

想起语句的写法,那说明这个函数调用语句也必须封装到一个函数里去。那这个封装的函数到底是什么呢?再一细想,那肯定就是各个控件的事件了。把initData放到applicationComplete事件里去调用就OK了。

Tags: flex

害人的海猫

海猫(Navicat)是一个好软件呀,管理mysql非常方便。

于是乎我就基本没用过phpmyadmin了,一直都用海猫。结果问题就来了。

桔子给我一个系统,给我的时候是直接copy的mysql data目录,我用着好好的。于是我用海猫导出sql后把这玩意装服务器上去。问题就出来了,一些SQL不能执行了。比如insert的时候,由于一些列的策略发生了变化,以前使用缺省值不写的列,现在insert语句报错不执行了。

后来月票叔给了解答:

引用
  1. 膘叔(***)  10:12:21  
  2. 千万。。  
  3. 膘叔(***)  10:12:27  
  4. 千万不要用海猫导出  
  5. 膘叔(***)  10:12:49  
  6. 海猫导出的话。。。  
  7. 数据结构与原来的不一样。 

 

Tags:

校内狗狗刷骨头的代码

PHP写的,重在分析,不在可以全文COPY的代码。

校内赚骨头的方法很多,最快的是邀请一下自己的MSN好友,一次送400根。用自己的MSN用户名密码登录后,选任何一个好友(比如自己的MSN小号),直接确定,400根骨头到货了。

但是要不断的得到新的骨头,还要速度快,得靠刷。刷骨头有几个方法,一个是自动玩飞盘,接中一次3根骨头,总体趋势还是赚的。一种是喂其他人的小狗,要喂饥饿,体力为0的,有一根以上的骨头反馈,我遇到过奖20根骨头。

我用的就是第二个方法,因为我发现不是好友的小狗也是可以喂的,也就是喂狗的页面把那个pid从1到***不断的狂加,每个页面试一把,找到饥饿的小狗就喂。

阅读全部内容…

Tags: key code,校内,狗狗

TP工具箱升级了,支持TP1.6的项目

昨晚花时间在tdweb修改版的基础上又修复了一些其他问题。使用TP1.6的项目,也可以用工具箱来管理了。

以前工具箱日志的相关链接:http://yhustc.com/Blog/162.html

新版工具箱可以到TP论坛去下载。http://bbs.thinkphp.cn/viewthread.php?tid=4973&extra=page%3D1

Tags: thinkphp,工具箱