Feb 06
mousepotatoTechnology Javascript
我承认好久没有去关注Java社区了,Sun的被收购也是全年了解的,也没有持续关注一下.

So long, old friend
Java之父James Gosling的一遍On the Java Road让我这个渐行渐远的技术nerd也回想起残存却深藏的对Java的记忆.
vole 写道”也许,Sun的悲情陨落,仅仅是再一次证实了技术至上的宿命,但是理想主义者们的悲情谢幕总是令人感慨。人固有一死,或重于泰山,或轻于鸿毛,一个公司也是一样,能像SUN一样对计算机科学以及IT行业产生如此重大的影响,足以名垂青史.好在,这家叫Standford University Network的公司,有了同样来自Stanford,同样技术至上,同样理想主义的Google作为继任者.而Google的第一笔投资正是来自SUN的创始人之一Andy Bechtolsheim。历史总是充满着巧合,正如伽利略逝世那天,牛顿出生. Google是否就是为了传承SUN的衣钵而来到这个世界?”
我的Java之路
企业之间的生存利益和血腥已不是我所能关注和了解的.我常常自诩是一名Java程序员,然后才是程序员.程序员的对语言的强脾气就如同一名战场上的士兵对武器的狂热.我不去想Java的未来,我不去关注Java社区,尤其是那些每个月拿着写Java代码换来蜗居生活的程序员们对Beyond Java的态度.我是一个卑微的不想多问多看只想关注自己想法的技术理想主义者.Java深深的影响了我.从我被带到Java这条道上.
2006年我几乎折腾于任何和电脑相关的技术:Flash,Photoshop,VBScript,Asp,HTML,C,Linux(第一次在我的本上装上了自己刻了2张盘的Red Flag,当时我就激动了),后来在一个材料系的学长指导下学习ASP,很感激当时他送我的两本复印的ASP教程,惭愧的是我都没怎么摸过.
07年3月接触Java,上来就是一堆的JRE,JDK,环境变量,也是从那时候培养起了一个爱好,打开命令行就敲:java -version,那段时间其实是受到一个辅导员的打击,告诉我ASP没前途,他当时自己拿着个Spring在看,当时很不理解,说看春还不如去发.后来证明春确实好发不好看.改投Java的阵营自己看了很多的视频,当然成效都是甚微的.自己动手去写代码才是王道.07年12月我才算是顿悟了很多,顿悟不代表我会写什么代码,而是我明白了Java界和JavaEE界的知识结构以及各个知识的关系.可能你听过J2EE,听过Struts,听过Hibernate,听过Spring,听过Ajax,听过JSP,听过Flex,听过Ant,听过,Struts2,JDBC,JMS,EJB,Apache,SVN,MVC,jQuery,DWR,iBatis,但是你会疯掉,你不知道他们之间的关系,你更不明白,他们为何存在,以及他们存在的目的是为了什么.请你听我的,明白这些真不容易,多少人从中而退了,可当你一旦知道了它们,你会爱上Java或者爱上开源世界里这么多可以为你服务的代码.
第一次的我对面向对象的理解献给了Java,第一次的我对软件分层架构的理解献给了Java,第一次的我数据库的对象封装形式操作献给了Java,第一次…
第一次的我对敏捷开发的实践献给了Java,第一次的我的实习经历献给了Java,第一次的我对项目带队开发的经验献给了Java,第一次…
第一次的我对如何重构代码献给了Java,第一次的我对高级js的理解献给了Java,第一次的我对部署管理献给了Java,第一次…
Java影响了我的生活,我试图用MVC的思想去理解现实世界的一些流程,我用Java的思想去学习一些新的语言,甚至以这门语言不如Java这么简单而去暗自神伤,因为我知道是它把我抛在门外而java确容我入怀中.
前段时间在纽约的同学给我打电话问关于Java EE与找工作等问题.个人感觉北美人宠ROR的居多,国内Java EE的程序员俯拾皆是.但鲜有Rod之类的大师.方向确实挺重要但有时也要看你朝这个方向走了多远. 走深了有时也能发现很多风景.
形似一篇无聊的软文,悼念是主题,附关于JavaEE RAD的一个PPT:
Nov 05
mousepotatoSoftware, Technology Cloud, Javascript, Sogou
前两天下载搜狗输入法的时候就看到官网上有提示说,搜狗将在北京时间11月2日下午14:00推出一个新的概念产品,完了一直在写作业竟然给忘记了.今天早上在google wave中群聊的时候kurt给我提醒了.隧 login到了http://pinyin.sogou.com/cloud 进行观望.
- 安装
按照官网上的说明将搜狗云输入法链接保存到自己的书签中.或者直接用鼠标将搜狗云输入法图标拖到书签中.
2.使用
点击刚才保存的云输入法书签.将会启动一个悬浮的输入法框.

- 搜狗云输入法的页面兼容性还不是很好的.
在很多的页面上当点击启用搜狗云输入法时会出现也没反应缓慢,同事提示出现Unresponsive script Warning. 然后输入法就会崩溃.

2.输入法的反应速度还是很慢的.这个原因会在后面云输入法实现原理初探中具体说明.所以当网速慢的时候使用起来会很不爽.尤其是不能体验狂敲键盘的感觉.另外一个方面,输入法的取词查询都是在服务器端进行的.所以如果云输入法有像搜狗客户端输入法那样近2亿多用户的时,状况也是不敢想象的.
3.在可以使用搜狗云输入法页面的情况下.可支持的输入页面部分也是很有限的.地址栏中好像不支持输入.
这是官方网站上给出的一张图片

云输入法是基于B/S架构的.无需安装.运算均在服务器端进行. 为了搞清楚云输入法到底是怎么搞的.这里借用了firefox下一个很有名的插件.Firebug.
首先解释一个问题,当我们点击启动搜狗云输入法时我实际做了什么事情.
当将鼠标放到书签上时.注意观察firefox下面的地址栏.

稍微懂点web和脚本语言的都知道.这可能是一段javascript代码.
Bingo!
这就是启动云输入法的完整代码. 点击这里下载JS

这段JS代码首先判断当前浏览器是否是IE内核.以及判断当前页面是不是UTF_8编码.如果ie=1并且是UTF_8编码的页面则调用http://web.pinyin.sogou.com/web_ime/init2_utf8.php 否则调用http://web.pinyin.sogou.com/web_ime/init2.php 页面.
同时在当前页面body上动态生成一个Script标签.script标签的src属性是上面要调用的页面地址.初始化完成后会生成一个script元素.

如果此时页面没有报JS warning的话恭喜你走过了第一关.不出意外你会看到这个图标

注意这个和平时见到的图标不一样噢. (不都差不多嘛? ==No 这个是在页面上的! ==汗~)
这个图标其实使用js的div生成的一个浮动区域.
这个是浮动区域的javascript代码. 点击这里下载JS

这个时候基本框架都有了.OK,当我们输入汉字的时候是什么情况呢?
我们来做个测试.当在页面输入拼音 shiying 的时候,我们看到页面会生成n多script标签.
http://web.pinyin.sogou.com/web_ime/get_ajax/shi.key
http://web.pinyin.sogou.com/web_ime/get_ajax/s.key
…etc
到这里大家可能都比较疑惑.这些东西是什么.(注意这些URL是可以访问的.)进去看看呗.(这部分工作交给观众自己进行.)

进去之后可能傻了.一堆乱码? No, definitely no.猜想可能是页面经过了编码. 是什么编码呢?凭经验我猜应该是URL Encode.OK那就decode一下呗.
点击这里进行URL decode (进入页面后点击”反编码/解码”,嘿嘿.) 看看参考译文三或者四.你会大叫, 我靠,这不就是输入法的候选词么.
Bingo (again~)!
测试中发现这些<script>标签是动态增减的.当你很快输入 “s h i y o n g”时.会相应生成”s.key”,”sh.key”,”shi.key”…完了一段时间.大概4-5秒钟.这些前面的候选词的script标签会自动消失.
OK,现在总结下搜狗的这款概念产品云输入法的大概运行流程:
- 点击”启动书签云输入法书签”==进行js初始化,确定web页面的调用.生成页面script标签
- 进行.php页面调用同时在生成一个浮动的div标签.完成输入法界面初始化. 这个过程会出现JS不兼容等情况.
- 用户输入拼音,web_ime/init2.php监视用户输入,通过AJAX与服务器端通信.查询相关字库.同时返回URL编码过后的结果进行汉字候选.
- 候选字动态增减.对应的是页面中<script>标签中候选字的增减.
云输入法的瓶颈:
- AJAX在进行数据传输时的延迟.云输入法面对的是用户快速的键盘输入.对数据传输相应要求很高.Data latency要极小.
- 词库查询的响应时间,多用户查询是缓存,智能词频.(估计这块搜狗能够搞定.只不过在服务器端装了词库而已.只需要相应的IO优化).
- JS构造页面的时间.在页面body里频繁的插入和删除element.谁也受不了呀.可能造出内存消耗严重和页面崩溃,etc.
部分问题探讨:
- 在线汉字输入老早就有,为什么就只有搜狗的叫做云输入法阿? (谁告诉我下?)
- blog中的一个问题.在使用感受中,第三条我写了在地址栏中无法使用云输入法,为撒?? (这个答对有奖.可以DM我,私下回答哈^_^!)
Apr 06
mousepotatoTechnology Javascript
我是一个前端比较没天赋的人。无奈做项目又少不了前端,尤其是Web2.0以及Ajax,RIA的横空出世对UI的要求更高了。最近总结了几个不错的JS,页面CSS的调试工具:(此文不是教程,只是个人使用感受,欲了解详情请G之。)
1、FireBug (❤❤❤❤❤)
Firebug是Firefox下的一款开发类插件,现属于Firefox的五星级强力推荐插件之一。它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和Ajax的得力助手。它可能是开发的人员了解和使用最多的了。
我常使用的两个快捷键:Ctrl+Shift+J和F12.(一个是打开Error Console,一个是打开Firebug),通过Error Console可以快速定位一些JS和CSS错误。而Firebug可以看到一些页面DOM树以及POST,GET和JS源码等信息。

通过它你可以清楚的看到你的DWR提交情况,以及Struts2中dojo js的引用。这对本身理解一些框架的原理也很有帮助。此外Firebug支持Javascript的单步调式,对开发人员也很方便。关于Firefox的更详细介绍可以参考这里。
感觉和Firebug差不多。界面都有几分相像。

a).支持JS的调式,DOM树的view,感觉有一点是Dragonfly的提示信息比Firebug稍微要详细一点。比如对DWRUtil.setValue()的方法出错都可以提示出来。Firefox好像没有提示。
b).DOM的操作选项较多可以方便的和页面元素进行交互,方便定位。
唯一缺点可能是在开发人员中Opera的认可度没有 Firefox那么高,主要是我们写的页面优先测试IE和Firefox,这可能是很少开发者使用它进行调式的原因。我的建议是可以用Opera进行辅助的测试。
3、微软的Expression Web SuperPreview(❤❤❤)
IE8正式版在3月份发布的时候,相像很对开发者尤其是前端的开发者肯定会非常的头痛,因为自己的web页面无形中又要支持新的浏览器了。毕竟在最初的Beta版是可以暂时拖延一下。好在微软也意识到多浏览器兼容性的问题,在 Mix09 上推出了一款全新的工具 Expression Web SuperPreview,SuperPreview 是微软将推出的 Expression Web 3 的一部分,同时,微软也提供了 SuperPreview 的独立安装包。
More
Recent Comments