2006年08月29日

传统桌面软件往WEB上做是个很好的思路。(其实俺还是倾向于两者

结合)
WEB软件的优势除了无须安装客户端外,还有更方便的信息共享,集体写作,汇总分析。
上次俺提的WEB版的思维导图软件实现上是难了点,感觉还是很有前途的。
代宝地侃侃俺的想法。
简单的功能,可以学freemind。
复杂的可以照抄mindmanager,它的功能都可以做,如针对结点写comment/note;observe某结点或diagram;brainstorm模式的支持;
style/theme/wizard/label/version control&compare;…
这么看来,mindmanager与WEB版工具的关系,如同word与wiki一样了。word对于多人共同编辑和共享,就不如wiki来得好。
同样,mindmanager对于多人编辑支持的也不够好,文件是通过邮件(?)传给下个编辑者,类似word的修订功能来标记谁改了什么。
WEB软件这方面有先天优势。
另外,思维导图与wiki的关系,也可以是互补的:
1. 思维导图作为另种展现形式嵌入wiki中。(如confluence的可视化editor)
2. wiki作为结点的一种编辑形式嵌入思维导图中。 (如comment或直接是note采用wiki风格)

如果互联网多一种图形方式随手记的便捷小功能,我会喜欢的 :-)

2006年08月26日

2006年08月23日

谢谢醒来老大,这些资料真讲究:

A DOM Ready Extension for Prototype
http://ajaxcn.org/space/start/2006-07-14/1

改善 window.onload
http://ajaxcn.org/space/start/2006-04-14/5

windows.onload事件,是等所有外部元素(如图片)加载完才触发的,这样就有可能需要:
对于包含大量图片但只需html dom加载完就要执行javascript初始化。
http://ajaxcn.org/space/start/2006-07-14/1
文中提到的dom ready库依赖prototype,有人做了不依赖其它库的封装:
http://www.cherny.com/webdev/24/domloaded-script 
demo: http://www.cherny.com/demos/onload/
下载地址:http://www.cherny.com/demos/onload/domloaded.js
用法:在head里:
script type="text/javascript" src="domloaded.js"></script>
<script>
  function init(){
    alert("初始化函数执行了");
 }
  DomLoaded.load(init);
</script>
其中,load方法可被多处调用。



文章时间: 2006-8-20 周日, 上午5:24    标题: 桌面应用与WEB应用相结合(InstantWeb) 探讨 引用回复

来到这行当,眼瞅着WEB应用风头走盛、桌面应用走向衰败。AJAX出现,给WEB应用增色不少,Rich Client也受到更多人的关注,这使我们反思,这本属于桌面应用的荣耀,又开始回归了么?
WEB应用和桌面应用的优缺点各是什么?数年前也许已经分析的极为透彻了,但随着硬件设备、网络状况、功能需求、商业模式、用户体验、现有技术、流行时尚(!)等的发展,各因素权重发生变化,需要我们重新审视。

WEB应用优点是安装布署升级简单、客户端配置要求的低、没有因额外安装造成的安全/信任问题;桌面应用优点是响应速度快、界面展现丰富、开发速度快、可提供即时交互功能、可操作客户端本地资源(既有好处,也有坏处)。

随着PC机处理能力不断增强,用户对使用体验和运行速度的要求不断上升,部份运算工作开始向客户端倾斜。我在考虑的是,如何结合桌面与WEB的优点?(竟说了这么多废话!)

google给了我们一些启示:以WEB应用为主体,辅以桌面应用/浏览器插件,其中非桌面应用独有特征的功能,以嵌入WEB页面的方式(WEB应用佐以AJAX…)展现:桌面应用的壳,WEB应用的实。

难道纯WEB应用不行吗?
假如你不想每天开始工作时都要打开浏览器、输入记住的网址;
期待更快的速度,更友好的界面;
即时通知功能,本地程序一样的提示效果(如gtalk来信显示);
服务器端推信息过来;
本地信息存储,离线浏览;
。。。

一个小想法:
即时论坛(Instant Forum):桌面程序,像gtalk一样,显示各版块和版内文章列表。可observe某个贴,或设定(按时间、条数、等级、作者、版块、tag…)最新文章提醒;可设定提醒方式(QQ的那种,直接弹出式/显示新条目数/不提醒直接存储在本地);可按gtalk聊天的方式回贴;可邀请人回贴(类似群聊);聊天记录可设定归档部份;可直接打分/收藏;可下载数据到本地;本地/网络搜索;桌面程序自动升级;自动登录;启机自动运行;发贴时标记关键字/tag;发贴时系统显示类似贴;贴子合并、集体编辑功能;成员在线交流…

由上可延伸出一些即时自助软件,如即时自助翻译软件(Instant Translator):功能同Instant Forum,专门针对翻译领域,论坛以行业、书目分版,每个人可设定自己关注的行业/书目,贴子分原文和译文,可标记关键词、引用、音标等…

keywords:RSS、AJAX、XMPP…

困老,欢迎大家拍砖,提出你的想法。
上面的想法对桌面程序(主要是它的即时性)有太高期望,大概不会对下一期rails活动有什么帮助,也不会给javaeye新版什么启示,权当练习下小学作文
Surprised

2006年08月17日

有人能连续写出抨击RoR的文章,本来是件好事,可惜此人对要抨击的技术一点都不懂就乱吐口水的做法,太让人气愤了,懒得理他,可惜这种做法误导多少人?什么心态?

我真的很生气,还有这种人,传说也做企业级应用很多年了,怎么混到这种RP?在自己没人访问的blog上发发牢骚,不去满世界得罪人了,嗯嗯!!!

2006年08月14日

http://blog.csdn.net/danny_xcz/archive/2006/08/13/1056932.aspx

最近blog没啥好写的,看到纯月部落上又发文挑RoR –有反对声音总是好事,只要挑对地方。
一时兴起又去留言。

—————-

大家冷静,就事论事~
我有个疑问:LZ "1 从技术的角度来看"…."无论从Ruby语言,还是DSL,还是Web容器性能和代码生成,不存在任何创新。"

不知道LZ说的"代码生成"是指?

LZ上篇的ror安全问题正在关注…

———
受不了,大家说话口气真是服了!

纯月几篇blog提出以技术角度分析/对比RoR(现状及前景),却流于评论者资历、RoR现有成功案例、商业模式、业务领域等非技术话题,难免 让我们这些看官失望,期待能写些更具体的东西,安全性就是其中之一,纯月做了,虽然也有争论,但这个争论对俺来说更有看头。毕竟都是做技术的,实打实的掰 扯更有意思,比方(这里只是比方,俺都不懂PHP,估且拿Java当靶子)有人说代码生成不存在任何创新,俺就说它好(不知道此"代码生成"与彼"代码生 成"是不是同一个东东),俺贴段代码:
class Person < ActiveRecord::Base
end
对应Java(hibernate)就要:
class Person{
private Integer id;
private String name;
private int age;
…. getter & setter (& constructor [optional])
}
同时写Person.hbm.xml用来做声明映射
<hibernate-mapping>
<class name="Person" table="people">
<id name="id" column="id">
<generator …>
</id>
<property name="name" column="name" />
…其它property映射
</class>
</hibernate-mapping>

并且,ror(更具体是ror的ActiveRecord)使得Person类不光做了自动映射及自动有了setter/getter, 而且还自动有了find,find_by_id,update等类方法和update_attributes等实例方法,对于Java,借助spring 的HibernateTemplate(连同它的配置文件)可以做到一些,但不如ror的灵活。

这么一来,我用RoR PK Java的目的就达到了,当然,看官们肯定有理由反击,至少耙子立在这儿了。

———

俺一直坚持认为:东西好不好,和它有没有前途 *没有* 必然因果关系。
因此,同样不能用分析其前途的手段,来断言该东东好不好。
没人说RoR就是银弹,空来空去的没什么意思,俺是个爱细抠的同学,不如把它肢解了一点点掰扯,说商业就单说商业,说技术就单说技术,说现状就陈列现状,说预测就标明预测,把话题拉到一个具体的层面上大家好说事,比如技术上可以拿ORMapping、安全性、第三方库、IDE、AJAX…,商业上可以是大厂商支持、布署模式、客户认知度、市场响应速度…,像现在这样搅和着来对于初学者会是误导。
纯月自然是很历害的了,光看blog上的文章就很佩服,不过去回复那些质疑者就显得….嘿嘿嘿~
不过牛人只会牛在一个或几个领域,所以俺也没有盲目崇拜,期待后面精彩的评论。

2006年08月02日

SNA(Share Nothing Architecture),号称是php/ror承载高并发的终极方案,产品现在就知道有memcached(BSD开源协议),比起java的session复制优点多多。

对于java,如何不修改代码即可实现SNA?
包装一个新的HttpSession,delegate原始session,对它的setAttribute和getAttribute进行改写,调用memcached API。搞个Filter在最外层注入。

当session中某个复杂对象的状态发生了变化,又没有调setAttribute更新怎么办?
方法1: 要求开发者调用setAttribute通知更新。
方法2: 设计初期规定某个类,所有要在session中存储的内容必须以成员变量的方式定义。禁止直接使用session.set/get attribute,只能通过某些方法操作该类的实例。 在这个类里,通过AOP或其它的途径检测自身的更新,自动更新memcached。

据robbin称java的Serialize效率较低,关注一下。
能确信在设计前期不考虑集群的问题,后期可以方便迁移就可以了。

http://www.danga.com/memcached/
http://www.whalin.com/memcached/javadocs/
http://forum.javaeye.com/viewtopic.php?t=20298