写程序,做产品,过日子

成功其实很简单,就是强迫自己坚持下去

BlogJava 首页 新随笔 联系 聚合 管理
  69 Posts :: 1 Stories :: 92 Comments :: 0 Trackbacks

2007年6月20日 #

Zoundry是最老牌的离线博客客户端。现在的正式名字叫Raven Zoundry,网址是http://www.zoundryraven.com/。它的最大特点是:

  • 可下载和阅读所有已发布的博客文章。
  • 可同时发布到多个博客。
  • 支持多种图片上传方式,如直接上传,FTP上传,ImageShack/Pisca等开放API的相册上传。

在Zoundry中配置博客账户的一般步骤是:

  1. 打开新的博客站点向导窗口,输入博客网址。
     image
  2. Zoundry会自动检测BSP的类型和API,但大多数情况下,需要人工输入。
    image
    这一步是关键,不同的BSP有不同的设置,详情请见后表。
  3. 确认博客名称和媒体库。
     image
    • 如果同一账号下有多个博客,需要在这里选择和第一步中输入的网址想对应的博客。
    • 如果发布博客的API支持上传图片,文件上传方式默认设为“Blog Fileupload”。
    • 如果不能直接使用上传图片,Zoundry会自动创建一个ImageShack的图片库。
    • 也可以不用ImageShack,通过“创建新的媒体库”。

    Note: 不管是使用ImageShack,还是别的 什么相册网张作为图片库。图片都会被上传到指定的相册网站。在你的博客文章中,只是一个指向这个网站的图片连接。

完成配置,Zoundry会自动下载所有已发布的博客文章。

目前,国内门户网站提供的博客服务,大部分根本不支持离线客户端,如新浪,搜狐等。另外一些专业的BSP,或IT领域的一些BSP,也只针对Windows Live Writer提供支持。真正良好支持Zoundry的没几家。具体情况请参见下表。

BSP

API类型

API链接

图片上传

备注

博客园

Customer MetaWeb

http://yourname.blogjava.net/services/metaweblog.aspx

API直接上传

笔者是博客园BlogJava子站的API链接,其他子站类似和

Windows Live Spaces

Windows Live Spaces

http://storage.msn.com/storageservice/MetaWeblog.rpc

需要第三方媒体库,如ImageShack

不要用Windows Live账号的用户名和密码。用户名是WLS空间上的个人域名;密码是机密字

Blogger

Blogger

http://www.blogger.com/feeds/default/blogs

需要第三方媒体库,建议使用Picasa,都是Google一家的嘛。

国内上传API似乎被封了,需要使用国外代理。

使用Gmail用户名,但不要带上gmail.com的后缀。

CSDN博客

Customer MetaWeb

http://blog.csdn.net/yourname/services/metablogapi.aspx

需要第三方媒体库,如ImageShack

没有开放下载博客文章功能。

 

 

 

 

 

Table 1. 国内BSP支持Zoundry的情况

 

Note: Zoundry支持通过代理连接Internet,但在笔者需要用户名和密码验证的代理环境下,所有的BSP都不能接收Zoundry的发布。

Technorati 标签: ,
posted @ 2008-12-16 15:47 Welkin Hu 阅读(1201) | 评论 (4)编辑 收藏


微软实在是太有钱了,一个在线存储就能搞出三套产品,让我等百姓都挑花了眼。到底哪一个才合用呢?存储的容量和速度已经有很多人谈到了。我这里就功能上说一说。

SkyDrive : skydrive.live.com

SkyDrive就是网络磁盘服务,在SkyDrive服务器上为每个用户提供据说是5G的免费空间,用于存储和共享各种文件。用户通过WEB页面进行上传和下载。
SkyDrive是纯Web服务,没有客户端程序,不提供文件夹同步等功能。
SkyDrive面临的竞争对手很多,如Box.net, RayFile, 纳米盘等。

Folder Share : www.foldershare.com

FolderShare不是网络磁盘,而是文件同步工具。他采用P2P技术,为多台机器之间提供文件同步服务。参与同步的机器都必须安装Folder Share 客户端。FolderShare服务器上紧保存同步信息:有哪些文件夹需要同步,在哪几台机器上同步等。但不在服务器上保存需要同步的文件。只有联入互联网的机器才能参与同步。
FolderShare恰如其名,也可以提供文件分享服务。前提是存有源文件的机器要联入互联网。FoldeShare甚至还提供远程桌面服务。
   在Microsoft Office 2007中,还有一个和Folder Share 相似的东东,叫Groove,据说出了P2P同步外,还能P2S同步到服务器。但我没试出来。
 

Mesh www.mesh.com

Live Mesh估计才是微软云存储战略的重点。它兼有Folder ShareSkyDrive的功能。
首先,它通过客户端,提供文件同步功能。本地电脑之间同步时,据说也是采取的P2P技术。
其次,它自带Live Desktop, 为用户提供了据说是2G的网络空间。用户可以在自己的电脑和Live Desktop之间进行文件同步。这样,就不要求用户自己参与同步的电脑都必须同时在线。
最后,它也提供文件共享功能和远程桌面服务。可以和MSN上的朋友共享文件。
由于Mesh的服务器在国外,所以网速比较慢一些。昨晚在ADSL联入下实测上传12M文件到Live Desktop, 时间从22:51 22.57,共6分钟。下载则4分钟不到。
 
 

综述

显然Live Mesh才代表未来。不过目前仍处在beta版,易用性比较差。也不支持需要用户名和密码的代理访问互联网。
FolderShare倒是提供了独立的代理设置,可我怎么试都连不上。
Live Mesh的论坛中列出了十多条重要的功能建议,其中有两条很值得注意:
一是支持授权代理,有了这个我才能用它。
    二是与Folder Share, SkyDrive集成。

, , ,

posted @ 2008-12-08 11:51 Welkin Hu 阅读(861) | 评论 (0)编辑 收藏

加密代理ScribeFire测试

posted @ 2008-12-08 11:50 Welkin Hu 阅读(293) | 评论 (1)编辑 收藏

Google的个性化主页iGoogle是一个非常了不起的服务。我一直都用它作为我的浏览器主页,浏览博客和电子邮件全从这里进入。Google ReaderGmail, Yahoo邮箱,甚至还有我自制的带农历日历,它们全在一个页面,一目了然,方便之至。
进来发现iGoogle的访问有些慢,特别是订阅的博客,都超过3分钟才能出来。再加上不想让Google一家独大,就想试试别家的服务。网上一搜,初选了两家和iGoogle比较:国内的中搜IG([url]http://www.zhongsou.com[/url])和国外的Netvibes([url]www.netvibes.com[/url])
所谓个性化主页,有的叫个人门户,就是把页面分成很多的小区块,这些区块,iGoogleGadget, 中搜IG叫微件,NetvibesContentWidget, 还有的角porlet. 其中WidgetPorlet的叫法比较通用,这里就统一称为widget。普通用户,可以自由的在个性化主页上添加,甚至设计widget。典型的个性化主页布局分为三栏,放置6个左右的widget
本想详细比较的,结果只博客订阅这一项,后两家就被排除了,还是iGoogle好。
iGoogle不但有订阅单个博客的Widget,还有一个Google Reader Widget,可以列出Google Reader中所有订阅的博客和文章。
Netvibes则只有订阅单个博客的Widget,订阅了几个博客,就的放置几个widget。它提供了导入OPML的功能,可以一次性的导入Google Reader的订阅。
中搜IG也只有订阅单个博客的Widget,而且不能导入OPML。中搜IG将博客和RSS分成两个类别。在添加博客时,只能搜索到一些名人博客,我订阅的博客,一个都不能搜索到。PS:它列出来的名人博客,我基本上都没有访问过。我只能在RSS订阅中,一个一个的输入我订阅的博客Feed
个性化主页的重点是集成,通过开放的Web API集成来自不同网站的内容。博客订阅的功能自然比不上专业的服务商,比如Google Reader, 抓虾和Bloglines。提供适用于这些博客订阅服务的Widget才是王道。
posted @ 2008-12-08 11:12 Welkin Hu 阅读(187) | 评论 (0)编辑 收藏

     摘要: 从两三个人的小项目,到几百人的大工程,都需要一套项目管理工具来支撑,用于管理任务,进度,人员,资源和成果等。对于IT项目来说,也是一样。     简单的纸面计划方式显然不能满足时代的需求了。而主流的Microsoft Project系列产品,做计划确实很好很强大。但协同和跟踪功能实在太差劲,文档管理和议题管理更是别完全界定在范围之外。其昂贵的价格更是让人退避三舍。...  阅读全文
posted @ 2008-12-05 20:37 Welkin Hu 阅读(662) | 评论 (2)编辑 收藏

     摘要: 1.      产品简介 网址:http://www.liquidplanner.com 官方博客:http://www.liquidplanner.com/blog/ 公司简介:LiquidPlanner公司,2006年成立,总部位于美国华盛顿州的Bellevue。 官方产品介绍关键词: l  LiquidPlanner是一款All-i...  阅读全文
posted @ 2008-12-05 20:31 Welkin Hu 阅读(1924) | 评论 (1)编辑 收藏

Technorati 标签:

宝贝儿子四岁了,在看他一岁前的录像。

爸爸问:“是录像里面的宝宝可爱呢,还是你可爱?”

宝宝:“还是录像里面的宝宝可爱。”

爸爸:“为什么呢?”

宝宝:“因为他像我呀!”

posted @ 2008-12-04 22:42 Welkin Hu 阅读(178) | 评论 (0)编辑 收藏

     “成功其实很简单,就是强迫自己继续练下去。有的时候很累,很累,但是再辛苦也要坚持,因为梦还在远方!”

       这句话语自今年2月3日,在济南冬训的中国跳水队的一场主题为“我的追求”的演讲比赛,演讲者是郭晶晶。 我是从新华网上找到这则消息的:http://news.xinhuanet.com/sports/2008-02/03/content_7561711.htm

        前天晚上,郭晶晶毫无悬念的以415.35的历史最高分,卫冕北京奥运会女子3米跳板跳水桂冠,并且以4金2银的奥运会成绩成为女子跳水第一人! 这番话也随之脍炙人口。可能有媒体觉得这番话不够精炼,就加工成“成功其实很简单,就是强迫自己坚持下去!”

       我也是在她卫冕之后,才看到这番话的。在看到一刹那,我就被感染了。朴实而深刻。成功,既不困难,也不复杂。它很简单。但是它需要我们坚持,很多时候还的强迫自己坚持下去。

       我决定将这句话作为我新的座佑铭。我要在IT这个领域一直坚持下去,开创自己的事业。

      我的学生时代曾有一个座佑铭,是但丁的名句:“做自己的路,让别人说去吧。”
      那时我是个特立独行的学生,上课极少听讲,作业也不认真。绝大部分课程是靠自学的。在那个师资力量乏弱的环境里,很多老师的信条是“上课不听讲,怎么学的好!”我被视为异类,甚至被老师戏称为鬼才。

      高中文理分科时,我放弃了有较大优势的文科,只是因为不愿再试卷上填满恶心的官话和假话,不愿意将来从事一个以官话和假话为主要生存武器的职业。
      到了填报志愿时,为了我的航天梦想,我没有选择近在咫尺的武大和华工,而是去了冷门的西北工业大学。让我的老师着实失望了一把。
      可是过了大学四年,我发现航天系统很难容下人我这个特立独行的家伙。而且我的兴趣也迁移到计算机上。干脆改换行头,脱机入电,干起了软件开发。
      工作后,渐渐发现自己并不是很特立独行了,做的事情都是别人曾经做过事情,研究的东西也都是别人搞出来的东西。于是慢慢的不提“走自己的路,让别人去说吧。”,慢慢的也就变得浑浑噩噩了。
       如今已是三十而立,上有老,下有小,再不能一事无成了。我要以这句话自勉,闯出自己的一片天地!
posted @ 2008-08-19 14:17 Welkin Hu 阅读(473) | 评论 (3)编辑 收藏

Maven 2的安装和使用虽然不是一点即用,但也不是很复杂。然而,这两天我新装Maven,刚刚过了mvn -version,尝试create maven project就出问题了。问题详情如下。

D:\mavenSample>mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] org.apache.maven.plugins: checking for updates from central
[INFO] org.codehaus.mojo: checking for updates from central
[INFO] artifact org.apache.maven.plugins:maven-archetype-plugin: checking for updates from central
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] The plugin 'org.apache.maven.plugins:maven-archetype-plugin' does not exist or no valid version could be found
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Wed Mar 19 14:26:49 CST 2008
[INFO] Final Memory: 1M/2M
[INFO] ------------------------------------------------------------------------

开始以为是internet 代理设置有问题。网上也有帖子这么说。可是换到ADSL后,不用代理了,问题仍然存在。

几经周折后发现,原因在于我画蛇添足多加了几个镜像,其中有的镜像没有同步更新maven库。经过测试,如下maven 镜像工作正常:

<mirror>
<id>ibiblio.org</id>
<name>ibiblio Mirror of http://repo1.maven.org/maven2/</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- United States, North Carolina -->
</mirror>
<mirror>
<id>redv.com</id>
<url>http://mirrors.redv.com/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- Shanghai, China , Very fast-->
</mirror>
<mirror>
<id>dotsrc.org</id>
<url>http://mirrors.dotsrc.org/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- Denmark -->
</mirror>
<mirror>
<id>sunsite.dk</id>
<url>http://mirrors.sunsite.dk/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- Denmark -->
</mirror>
<mirror>
<id>skynet.be</id>
<url>http://maven2.mirrors.skynet.be/pub/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- Belgium -->
</mirror>
<mirror>
<id>cica.es</id>
<url>http://ftp.cica.es/mirrors/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- Spain, Sevilla -->
</mirror>
<!-- these just point to ibiblio.org -->
<mirror>
<id>ibiblio.net</id>
<name>ibiblio.net Mirror of http://repo1.maven.org/maven2/</name>
<url>http://www.ibiblio.net/pub/packages/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- United States, North Carolina Fast-->
</mirror>

而下面的Maven镜像都有问题。

<mirror>
<id>planetmirror</id>
<name>Australian Mirror of http://repo1.maven.org/maven2/</name>
<url>http://public.planetmirror.com/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>lsu.edu</id>
<url>http://ibiblio.lsu.edu/main/pub/packages/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- United States, Louisiana -->
</mirror>
<mirror>
<id>sateh.com</id>
<url>http://maven.sateh.com/repository</url>
<mirrorOf>central</mirrorOf>
<!-- The Netherlands, Amsterdam -->
</mirror>
<mirror>
<id>ggi-project.org</id>
<url>http://ftp.ggi-project.org/pub/packages/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- The Netherlands, Amsterdam -->
</mirror>

posted @ 2008-08-13 12:40 Welkin Hu 阅读(1986) | 评论 (0)编辑 收藏

博客搜索已经出来个年头了,我一直都没用过。博客和普通的网页并没什么大的区别。只要能搜出想要的东西,我并不介意结果是在博客,论坛或其他的什么网页上。

所以我一直不明白为什么要把博客搜索和普通网页搜索分离。今天看了一下有关的资料。原来博客搜索强调的是时效性——你刚写好博客,就能被人从搜索服务中搜到!据说搜索引擎更新普通网页的频率长达一周左右。

仔细想想还真是这个理,从Google、百度等搜到的东西,真的有很多是陈年古董。而搜索新闻时十有八九不如意。

除了时效性外,让博客文章有机会在海量的搜索结果中浮出水面也是一大原因。也许是搜索竞价排名惹得祸,通过普通搜索得到的结果,博客文章往往被淹没了。

以此类推,除了博客外,论坛,新闻等都需要单独的搜索服务。

posted @ 2008-08-13 12:36 Welkin Hu 阅读(192) | 评论 (0)编辑 收藏

一直想找一个理想的网页书签收藏工具,可是始终未能如愿。我对理想的书签收藏的要求是:

  1. 有在线服务,不会因为换了电脑就找不到书签了。
  2. 不用打开在线书签的网页,就可以在IE和Firefox中找到,服务器与本机自动同步。
  3. 同时适用于IE和Firefox。
  4. 最好能集成到IE/Firefox自带的书签/收藏夹中去。

目前业界提供在线书签服务的其实很多,但没有一个能完全达到这些要求。

IE专用插件:IE Pro

http://www.ie7pro.com/

特点
  • 提供在线收藏服务。
  • 与IE收藏夹完全集成。每次关闭IE时同步收藏夹。
  • 提供多种实用服务。
  • 仅在工具栏中占一个图标位置。
缺点
  • IE7专用,不适用于FireFox。
  • 在线收藏的服务器可能在美国,网速较慢。

Firefox专用插件: Foxmarks Bookmark Synchronizer

https://addons.mozilla.org/zh-CN/firefox/addon/2410

特点
  • 与IE Pro 类似的书签插件,提供在线收藏服务。
  • 与Firefox书签菜单完全集成。
  • 没有额外菜单和工具图标
缺点
  • Firefox专用,不适用于IE。
  • 在线收藏的服务器可能在美国,网速较慢。

FireFox中使用IE搜藏夹插件: PlainOldFavorites

https://addons.mozilla.org/zh-CN/firefox/addon/668

特点
  • 在Firefox上额外添加一个"收藏"菜单,列出本机IE收藏夹的内容。
  • Firefox原有的书签功能不受影响。
缺点
  • 没有在线服务,仅适用于一台电脑上的IE和Firefox
  • 可通过"收藏"菜单添加当前页到收藏夹,但不能通过右键添加。
  • "收藏"与"书签"两个菜单并存,本应加到"收藏"中的书签经常被加到"书签"中。
  • 不能应用于"书签工具栏"上的书签项,而这些书签项通常是最常用的。

在线书签 Delicious

http://delicious.com 据说是现在最好的在线书签服务商。目前已被雅虎收购并升级为Delicious 2.0. 原来的怪异网址del.icio.us也不再主推了。

特点
  • 良好的在线书签服务功能。
  • 标签化书签管理,书签搜索功能。特别适用于大量的书签管理。
  • 同时为IE和Firefox提供了插件。
  • IE/Firefox插件仅占用两三个工具图标位,不用单独占用一行。
缺点
  • 浏览器插件并没有浏览器自带的"收藏/书签"功能集成。不能相互同步。
  • 似乎不能通过右键添加书签。
  • 在线收藏的服务器可能在美国,网速较慢。
  • 不能批量删除书签。
  • 不支持树形目录。
  • 排序功能很差。
  • 不能应用于"书签工具栏"上的书签项,而这些书签项通常是最常用的。

在线书签 Google bookmarks

http://www.google.com/bookmarks/,提供与Delicious相似的在线书签服务。据说市场份额早已超过Delicious.

特点
  • 良好的在线书签服务功能。
  • 标签化书签管理,书签搜索功能。特别适用于大量的书签管理。
  • 与google笔记功能集成,这是一绝啊!
  • 在IE和Firefox的google工具栏提供了书签菜单
  • Firefox下还有第三方开发的Gmark插件,能以树型方式展现书签。
  • Google服务器,数度快,稳定。
缺点
  • 无论在IE中,还是在FireFox中,google工具栏都要独占一行。而且搜索框十分多余!
  • 浏览器插件并没有浏览器自带的"收藏/书签"功能集成。不能相互同步。
  • 似乎不能通过右键添加书签。
  • 界面太简单,不支持树形目录。
  • 不能应用于"书签工具栏"上的书签项,而这些书签项通常是最常用的。

image

其他在线书签服务

Windows Live Favorites :
  • 与IE收藏夹完全集成。但不适用Firefox。
  • 服务器超级慢。
Baidu搜藏
  • 与Google bookmarks类似。
  • 需要通过baidu工具栏与浏览器集成,与google工具栏存在一样的问题。
  • 同过添加注册表项,可在IE中支持右键添加。
  • 特色功能,如果书签指向的网址失效,可显示相应的百度快照
QQ书签
  • 与Google bookmarks类似。
  • 与QQ集成
Furl.net
  • 与Delicious类似。
  • 无IE插件或工具栏集成。
  • Firefox中有插件集成。
  • 特色功能:为所有书签指向的网页保存了备份,以防失效。
  • 服务器超级慢。

组合服务,覆盖在线书签,IE和firefox.

方案一 IE Pro + PlainOldFavorites
  1. 使用IE Pro 插件,在IE中获得在线服务。
  2. Firefox中同过PlainOldFavorites插件,直接使用IE收藏夹。
  3. Firefox自带的书签功能基本不用。
方案二 Google bookmarks.
  1. 使用Google bookmarks在线服务。
  2. IE中安装 Google 工具栏,忍受一下它的独占一行。
  3. Firefox中安装Gmark插件
  4. Firefox自带的书签功能基本不用。
posted @ 2008-08-13 12:28 Welkin Hu 阅读(2676) | 评论 (1)编辑 收藏

今天顺手是了一下Google Sites.

写了一个含iFrame的html页面放上去,居然不让过。报错如下:

HTML content will be modified

Your HTML either contains unsafe tags (iframe, embed, styles, script) or extra attributes. They will be removed when the page is viewed.

但是 google 自己的 Calendar, Docs, Video, 甚至乱七八糟的 gadget 都可以加进去。

51.la 专业、免费、强健的访问统计

posted @ 2008-08-09 17:27 Welkin Hu 阅读(324) | 评论 (0)编辑 收藏

Blog要在群里活的才滋润。从上半年开始,我的主要工作就不是Java了,这个BlogJava的站变得越来越不适合我。很多东西我只能选择发到"非技术区"。

posted @ 2008-08-09 15:21 Welkin Hu 阅读(227) | 评论 (0)编辑 收藏

目前免费的带语法高亮的文本编辑器,最优秀的莫过于PSPad和Notepad++。就个人使用感受,Notepad++更胜一筹,除了列编辑模式欠缺,和UltraEdit、EditPlus有一拼。用了好几个月,但实在受不了Notepad++主页上的“抵制北京奥运会”,最终决定弃用它。
本人忙于供房养家,对北京奥运会并不感冒。但对这种以技术外衣,宣扬反华的行为却是无法容忍。

posted @ 2008-06-03 17:34 Welkin Hu 阅读(2642) | 评论 (10)编辑 收藏

近来根据公司要求,学习Microsoft.Net。于是仿照EyeLoveU,写了一个C#的小程序。现在比较稳定了,就想放到在SoruceForge这样的网站上去秀一秀。

最开始考虑的自然是SourceForge。但在公司需要通过Proxy访问sourceforge.net时,速度奇慢。

第二个考虑的是Google Code。无论在家通过ADSL访问,还是在公司通过Proxy访问,速度都可以接受。最好用的是支持对Issue, Discussion, Document等自定义属性标签,如priority, type, milestone等。

无论是SourceForge,还是Google Code,与subversion和eclipse的集成都非常好。可是我用的是Microsoft Visual Studio 2008和C#,与这两个东家都不合拍:

  •  Subversion 与VS2008的集成需要购买Visual SVN
  • VS2008不能发布下载包到SourceForge和Google Code上。

最后我发现CodePlex这个网站,居然提供Visual Studio Team Fundation Server的服务。与我用的VS2008完全是一家!可惜的是它的网速非常不稳定,很难访问。估计服务器只在美国。最要命的是,在公司的Proxy环境下,我可以从IE访问CodePlex的VSTS服务器,但VS2008的Team Explorer怎么也访问不了。

posted @ 2008-02-27 10:20 Welkin Hu 阅读(1195) | 评论 (0)编辑 收藏

Collection mapping table

HBM Element Java Interface Java Implementation
<set> Set HashSet
<set> with order SortedSet TreeSet
<list> List ArrayList
<bag>, <idbag> Collection ArrayList
<map> Map HashMap
<map> with order SortedMap TreeMap
<array>, <primitive-array> N/A array

 

Sample Tables

CREATE TABLE `core_sample_company` (
  `companyId` decimal(18,0) NOT NULL,
  `companyName` varchar(128) NOT NULL,
  `description` varchar(1024) default NULL,
  PRIMARY KEY  (`companyId`)
);

CREATE TABLE `core_sample_role` (
  `roleId` decimal(18,0) NOT NULL,
  `roleName` varchar(128) NOT NULL,
  `companyId` decimal(18,0) NOT NULL,
  `description` varchar(1024) default NULL,
  PRIMARY KEY  (`roleId`)
);

CREATE TABLE `core_sample_user` (
  `userId` decimal(18,0) NOT NULL,
  `userName` varchar(128) NOT NULL,
  `companyId` decimal(18,0) NOT NULL,
  `defaultRoleId` decimal(18,0) default NULL,
  `description` varchar(1024) default NULL,
  PRIMARY KEY  (`userId`)
);

CREATE TABLE `core_sample_user_role` (
  `userId` decimal(18,0) NOT NULL,
  `roleId` decimal(18,0) NOT NULL,
  `pripority` int(11) NOT NULL,
  PRIMARY KEY  (`userId`,`roleId`)
);

HBM defintion

The definiton of <set>, <bag>, <list> is similar.

Defines a collection whose element type is simple data type.

<class name="SampleCompany" table="core_sample_company">

        <bag name="roleNames" table="core_sample_role" lazy="false" >
            <key column="companyId"/>
            <element column="roleName" type="string"/>
        </bag>

</class>

Query HQL: select c.id, c.name, r from SampleCompany c left join c.roleNames r

Defines a collection whose element type is another mapped java class

<class name="SampleCompany" table="core_sample_company">   

   <bag name="roles" cascade="none">
            <key column="companyId"/>
            <one-to-many class="SampleRole" not-found="ignore"/>
        </bag>

</class>

Query HQL: select c.id, c.name, r.name from SampleCompany c left join c.role r

Pay attention that key column is a foreign column of SampleRole table.

Defines a list with list-index

<list> is not a popular element. It request a index column in table. The index column is the index of java List, it has to be a sequence starts from 0.

<class name="SampleUser" table="core_sample_user">

     <list name="roles" table="core_sample_user_role" cascade="all" lazy="false" >
            <key><column name="userId" sql-type="integer"/></key>
            <index column="priority"></index>
            <many-to-many class="SampleRole">
                <column name="roleId"></column>
            </many-to-many>
        </list>

</class>

The benifit of <list> is it alwasy sorts list by index column. However, It is hard to resort the list. I tried remove a role from role list and add it to another poisition. When save the role list, an exception throwed:

java.sql.BatchUpdateException: Duplicate entry 'user001-role003 for key 1

This should be a hibernate bug.

Defines a bag with relationship table

<class name="SampleRole" table="core_sample_role">

      <bag name="users" table="core_sample_user_role" cascade="none" lazy="false">
            <key><column name="roleId" sql-type="integer"/></key>
            <many-to-many class="SampleUser">
                <column name="userId"></column>
            </many-to-many>
        </bag>

</class>

  • Key column is foreign column from relationship table to current table(SampleRole>
  • many-to-many sub column is foreign column from relationship table to target table (SampleUser)
posted @ 2007-10-24 11:09 Welkin Hu 阅读(689) | 评论 (0)编辑 收藏

转贴自:http://news.newhua.com/Html/System_win/2004-9/8/16...

 

安装Windows XP时,如果设置了一个管理员账户,那么系统内置没有密码保护的Administrator管理员账户是不会出现在用户登录列表中的。虽然它身在幕后,可却拥有系统最高权限,为了方便操作及保证系统安全,可以先给它设置密码,然后再把它请到台前来。以下便介绍具体方法。

1.使用“传统登录提示”登录

  启动系统到欢迎屏幕时,按两次“Ctrl+Alt+Delete”组合键,在出现的登录框中输入Administrator账户的用户名和密码即可。也可以单击“开始→控制面板”,双击“用户账号”图标,在弹出的“用户账号”窗口中,单击“更改用户登录或注销的方式”,去掉“使用欢迎屏幕”前的复选框,单击“应用选项”即可在启动时直接输入Administrator账户名及密码登录。

2.在登录的欢迎屏幕显示Administrator账户

  单击“开始→运行”,输入regedit后回车,打开注册表编辑器,依次展开“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList”分支,将右边的Administrator的值改为1,即可让Administrator账户出现在登录的欢迎屏幕上。

3.自动登录到Administrator账户

  单击“开始→运行”,输入control userpasswords2后回车,在打开的“用户账户”窗口去掉“要使用本机,用户必须输入密码”前的复选框,按“应用”后,在弹出的“自动登录”窗口中输入Administrator账户密码(如图1),按两次“确定”即可。注意:如果原来就设置了其它账户自动登录,应该先选中“要使用本机,用户必须输入密码”前的复选框,按“应用”后再去掉选中的复选框。也可以修改注册表实现自动登录,不过没有以上方法方便。

  图1

  当然,如果不需要Administrator账户,可以依次打开“开始→控制面板→管理工具→计算机管理”,在“计算机管理”窗口,展开“系统工具→本地用户和组→用户”,在“用户”右边窗口双击Administrator账户,在弹出的“属性”窗口中选中“账号已停用”前的复选框(如图2),按“确定”即可停用Administrator账户。

  图2

 

补充材料:修改注册表来实现XP的自动登录

 

在进入Windows XP桌面之前,每次都会出现一个用脑登录界面,要求我们输入用户名与密码,可以加大了系统的安全性,也为多人共用一台电脑提供了方便,但如果是家用电脑,只有你一个人使用,这样每次密码,的确不有点不大方便。我们可以通过修改注册表来实现XP的自动登录。

  第1步:运行注册表编辑器,依次展开[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon ]分支,然后在右侧窗口双击“DefaultUserName”,接着输入你的登录用户名。如果没有预设的用户名称,可以在注册表编辑器的菜单栏点选“编辑→新建→字符串值(s)→DefaultUserName”来添加这个项目,注意要区分大小写字母。  

  第2步:同样在该分支下,在注册表编辑器的右侧窗口中双击“DefaultPassword”,然后在空白栏内输入你的密码。假如未发现“DefaultPassword”一项,可按上面的步骤来新建该字符串值。  

  第3步:接下来在右侧窗口中双击“AutoAdminLogon”,将数值设置为“1”。假如未发现“AutoAdminLogon”,可按上面的步骤来新建。  

  现在关闭注册表编辑器并重新启动电脑,以后你会发现那个令人讨厌的登录对话框不见了。

posted @ 2007-08-31 14:07 Welkin Hu 阅读(1294) | 评论 (1)编辑 收藏

Office 2007使用Ribbon代替了主菜单和工具栏。而Ribbon中没有选项设置这一栏。经过查找,发现它被挤一个很不起眼的地方。

 

在Office 2007(Word等)的左上角,有一个Office图标按钮。点击它就会弹出一个菜单窗口,里面包含着Ribbon上没有的菜单项。其中在菜单窗口的右下方,有一个"Word Options"的按钮,这个就是选项设置的菜单了。

Outlook写邮件时,用的编辑器也是Word,但它的设置与Word的设置是独立的。必须在Outlook中打开编辑器,与Word一样设置编辑器选项。

 

这里列举几个比较重要的设置例子。

一、消除换行符。

Word 2007中默认会显示一直回车换行符。通过点击Ribbon上Paragraph栏中的"Show/Hide Edit Marks"图标并不能消除它。打开"Word Options"窗口,选择"Display"栏,勾掉一直显示符号中的"Paragrahp Marks"项,就可以不显示回车换行符了。

 

二、不让输入法随Office启动。

如果安装了中文输入法(当然,其它语言的输入法也一样),这个输入法有可能总跟着Word/Outlook一起启动。非常烦人。要去掉这个特性,只需勾掉“Edit Options"中的最后一项“IME Control Active”。如下图所示。

同时,还建议大家在控制面板中,把高级语言服务关掉。实际上大家常用的中文输入法只有一种,直接使用Ctrl+Space的方法最方便。根本不需要鼠标切换。

 

0001

posted @ 2007-08-20 09:45 Welkin Hu 阅读(3055) | 评论 (1)编辑 收藏

Sysdeo是知名的Tomcat插件。今天在构建eclipse 3.3 + sysdeo3.2.1 + tomcat 6.0.13时,发现如下几个注意点。

  1. Sysdeo主配置项中Tomcat Home是配置Tomcat目录的,注意最后不要加“\”。比如F:\java\tomcat-6.0.13是对了,F:\java\tomcat-6.0.13\就不对了。
  2. Sysdeo advance配置中的Tomcat Base指的是配置Tomcat运行时的基准目录。实际上这个配置项是多余的,可以不配,也不应当配。它必须和Sysdeo主配置项中Tomcat Home一致,否则会有一些Tomcat系统文件找不到。
  3. 如果不通过eclipse和Sysdeo,直接运行Tomcat的startup.bat,基准目录是%TOMCAT_HOME%/webapps。而sysdeo设定的基准目录是%TOMCAT_HOME%。这个会导致一些冲突。比如放在%TOMCAT_HOME%/logs/中的log文件的位置,直接运行要写成“../logs/app.log”,运行sysdeo时要写成“logs/app.log”
posted @ 2007-07-03 18:06 Welkin Hu 阅读(1217) | 评论 (1)编辑 收藏

1、不得在超类中使用通配符,例如

public class PojoModelTree extends IdentifiableTree<? extends PojoModel>

错误信息如下:

The type PojoModelTree cannot extend or implement IdentifiableTree<? extends PojoModel>. A
supertype may not specify any wildcard

2、只有<? super Type>,没有<E super Type>

正确用法:TreeNode<? super Node> getTree()

错误用法 <E super Node> E getParent();

3、函数返回值类型不应使用通配符:

错误用法:TreeNode<? extends T> getChildNode(String pKey)

这种用法本身无错,但在赋返回值给其它变量时会报类型不匹配。

正确用法:<N extends T> TreeNode<N> getChildNode(String pKey)

4、带通配符的泛型集合不能使用add方法。不带通配符的泛型集合也可接收子类元素。

错误用法:

List<? extends Number> list1 = new ArrayList<Number>();
list1.add(new Integer(11)); // 类型不匹配。

第二行报错为:

The method add(capture#1-of ? extends Number) in the type List<capture#1-of ? extends
Number> is not applicable for the arguments (Integer)

正确用法:

List<Number> list1 = new ArrayList<Number>();
list1.add(new Integer(11));

显然,在泛型的检查之下,仍可向集合中添加指定泛型的子类元素。以下代码也是合法的:

List<Number> list1 = new ArrayList<Number>();
list1.add(new Integer(11));
List<Integer> list2 = new ArrayList<Integer>();
list2.add(33);
list2.add(44);
list1.addAll(list2);

但是,如果写list1=list2就不合法了。

Technorati : ,

posted @ 2007-06-20 09:37 Welkin Hu 阅读(2491) | 评论 (0)编辑 收藏