2006年6月22日

          整理P大點兒的硬盤空間居然整理出來俺曾經做過的幾個東東,哎呀,想當年啊……成長歷程啊。
          第一個正把經的個人網站的首頁
          ?進步了一些的第二版個人主頁

          又做了一些小東東而且跟著DFLYING大蝦學會PHP以后,開始接校內的小活做……一個團委旗下網站
          加入Enwell.net開始欄目制作。其中一個,Enwell商城。

          成立Enwell Studio
          做的第一個商業網站,反而不知道咋做了
          又陸續寫了一些PHP以后,進入Hywave多媒體開始寫Delphi和ASP.NET,為hywave改版提出兩套方案
          ASP.NET寫了一些,包括一個巨惡心的OA以后開始和差沙,范例華寫J2ME,要不是因為期末沒時間了,俺們相信瘋狂坦克對打網絡版肯定能產出,差沙小伙兒一個星期就把是男人就下一百層從無到有寫出來了(以前從來不做JAVA何況J2ME)
          開始寫DELPHI以后俺就成了一個職業的程序員了,和頁面沒關系了……就走進了JAVA的世界。也不知道現在開始寫SAP ABAP是不是對得起自己。sigh,好多東西翻不到了,都是大學逃課的心血啊……

          posted @ 2006-07-31 22:47 BlueO2 閱讀(464) | 評論 (0)編輯 收藏

          我很早以前便開始使用bloglines的訂閱服務。在那里我訂閱了很多常去的技術站點和一些朋友們的blog,使用總發現了一些不便之處也產生了自己的一些想法,今天偶然看keso的一篇blog發現了抓蝦網以及rojo,眼前為之一亮,很多想法,這兩個網站已經替我實現了。
          rss訂閱服務衍生的門戶
          在bloglines這樣的純粹訂閱服務來說,用戶群的大小,用戶群訂閱的內容的相似度,用戶的閱讀頻率對網站產生不了任何貢獻。這實在是大大的浪費。我當時就想,如果在每個種子旁邊有個方便的"頂"也就是digg it功能,那么,將用戶頂的最多的story聚合起來,分門別類,這就是一個dzone.com這樣的網站啊。現在類似dzone以及更加出名的digg我都認為是rss訂閱服務網站的失敗之處,他們完全有優勢快速聚合出來一個這樣的小型門戶。現在抓蝦網以及rojo都有這樣的服務了,也都由此衍生出了一個熱文排行樣式的東西,但是我感覺做得還不夠,這樣太雜。泛泛的講內容一列。應該根絕用戶訂閱時此feed的tag做分析,整理出來分類,做類似daqi.com或者qihoo.com一樣的布局。
          rss訂閱衍生出來的朋友圈
          web20有一點很重要,就是社會網絡。就拿豆瓣網來說,我通過豆瓣提供的以書會友的功能認識了幾個志趣相投的朋友。豆瓣會根據你喜歡讀的書,看的電影,聽得音樂,推薦給你和你興趣相投的人,rss訂閱也應該這樣。比如Bloglines可以查看都有誰訂閱了這個feed,可是為什么不更近一步,將兩個人的訂閱內容作比較,做匹配呢?通過在你的網站提供的 rss訂閱服務我可以認識朋友,這也是網站粘性之一。否則像我現在可以毫無顧忌的從bloglines搬家到rojo和抓蝦網。而更多自取相同的人可以組成圈子。甚至衍生更廣一點,大家通過查看你的profile,瀏覽你的Blog,決定跟你做朋友的時候,你會得到一個vote的分數,在朋友圈的聚合門戶上排名考前,這個不就是聯絡家么?
          推薦給我其他讀物
          當我用豆瓣的時候,還有一個功能特別貼心,就是它會推薦給我相類似的圖書。比如我讀兄弟,它會在旁邊給我推薦活著,許三關賣血等等……rss的小門戶,可以根據每個人的興趣不同,推薦在此類別中背digg次數最多的blog給我,省得我總是感慨:哎呀,怎么沒早點看到這個網站呢?
          信息篩選
          訂閱了好多rss feed的人都有此種經歷,那就是有的時候忙,你好久沒看了,突然以上來,成百上千的新條目,當即暈倒。貼心的篩選是很必要的,rss訂閱服務網站完全可以根據其他用戶的digg rank來按照重要程度給我排序,大家認為重要的先看,大家認為不重要的后看……我想,群眾的眼睛還是雪亮的。
          冗余的剔除
          訂閱了大量rss的人來說,有一些種子可能已經壞掉了,或者作者更新頻率很低,或者過了一段時間以后,你已經不太認為那個對你有價值了(這個可以從你digg it和收藏的頻率來判斷),但是因為我們進行了大量的訂閱,要把它剔除需要花費時間的。RSS訂閱服務只需要替訂閱者看著點壞掉的種子,統計下訂閱者對其的關注度,然后建議剔除哪些沒有價值的feed,這將給我帶來巨大的方便。
          抓蝦與rojo相比bloglines的改進
          rojo有一點很好,當你大開一個feed的時候,他們顯示的是title,只有當點擊小十字查看具體內容,它才認為你讀過了,下次你再打開這個種子,這個條目便不會顯示出來。之前用bloglines有的條目很多,一天可能看不完,下一次再打開就看不到了,因為你之前的打開被bloglines認為是閱讀過的表現。而有些條目我們認為是很有價值的,rojo和抓蝦都提供了收藏的功能。此外rojo對bloglines對feed死板的分類功能進行了改善,替代的是tag,就是說一個feed可以屬于多個tag,你甚至可以對條目進行tag,這樣更加有利于小門戶分門別類的聚合。
          更進一步
          我一直感覺blog的互動性還不夠,這個不動不是指comment。而是無法像BBS一樣,對一個討論形成一個有主線的跟進。大家對一些東西都有自己的看法,可是都是零敲碎打,自己說自己的,對別人的想法可能不了解。僅僅靠track back是無法串聯起來的。如果你的rss訂閱服務能夠有足夠的粘性,那么用戶基本都從你這里獲得信息,當他要發表對某個條目的看法,讓用戶登陸他自己的 Blog,快捷的引用到自己的blog里面,而訂閱服務網站將通過某種方式將用戶的評論內容得到。這樣,將眾多的用戶的內容整理出來,類似BBS討論的形式,聚合在門戶里。這樣,Blog之間才形成了有效的互動。可惜,這個想法,似乎還不知道怎么實現。
          我的頁面&&個人門戶
          幾乎這種rss訂閱服務網站都提供我收藏的feed的展示,我感覺這個是不夠的。而還應該展示的則是跟我上面所說的有聯系的,最近digg的條目,最近收藏的條目,以及我最近評論的條目,以及我的朋友圈等等。這才形成了真正的“我的頁面”。
          用keso的話說,rss閱讀器的技術門檻很高啊。

          posted @ 2006-07-27 10:26 BlueO2 閱讀(478) | 評論 (0)編輯 收藏

          public ? class ?Artist? {
          ????
          ????String[]?others;
          ????
          /** ?Creates?a?new?instance?of?Artist? */
          ????
          public ?Artist()? {
          ????}

          ????
          public ?Artist(String?name,String??others) {
          ????????
          for (String?other?:?others) {
          ????????????System.out.println(other);
          ????????}

          ????????
          this .others? = ?others;
          ????}

          ????
          public ? void ?wildestMethod(Object??objs) {
          ????
          // this?method?will?accept?any?arguments
          ????}

          ????
          public ? static ? void ?main(String[]?args) {
          ????????Artist?artist?
          = ? new ?Artist( " You " ,? " 1 " ,? " 2 " );
          ????????artist.wildestMethod(
          1 ,? 3.5 ,? " AA " ,? new ?Artist());
          ????}

          ????
          }

          posted @ 2006-06-26 20:25 BlueO2 閱讀(387) | 評論 (0)編輯 收藏

          public ? class ?AutoBoxing? {
          ????
          ????
          /** ?Creates?a?new?instance?of?AutoBoxing? */
          ????
          public ?AutoBoxing()? {
          ????}

          ????
          public ? void ?boxingDemo() {
          ????????
          // auto?boxing
          ????????Integer?i? = ? 0 ;
          ????????
          float ?f? = ? 1.66f ;
          ????????Float?F?
          = ?f;
          ????????
          // auto?unboxing
          ????????Integer?I? = ? new ?Integer( 1 );
          ????????
          int ?i2? = ?I;
          ????????
          // null?value?test,?it?will?case?NullPointerException
          ????????Integer?I2? = ? null ;
          ????????
          int ?i3? = ?I2;
          ????}

          ????
          public ? void ?testOperator() {
          ????????Integer?i?
          = ? 1 ;
          ????????
          while ( true ) {
          ????????????i
          ++ ;
          ????????????System.out.println(
          " Counter: " + i);
          ????????????
          if (i > 5 )? break ;
          ????????}

          ????}

          ????
          public ? void ?testCompare() {
          ????????
          // it's?equal?because?-127~127?are?immutable?objects
          ????????Integer?i? = ? 1 ;
          ????????Integer?i2?
          = ? 1 ;
          ????????
          if (i? == ?i2)?System.out.println( " 1:Equal " );
          ????????
          else ?System.out.println( " 1:Not?Equal " );
          ????????
          // it's?not?equal?because?j?and?j2?are?different?objects
          ????????Integer?j? = ? 200 ;
          ????????Integer?j2?
          = 200 ;
          ????????
          if (j? == ?j2)?System.out.println( " 200:Equal " );
          ????????
          else ?System.out.println( " 200:Not?Equal " );
          ????}

          ????
          public ? void ?testControl() {
          ????????Boolean?flag?
          = ? true ;
          ????????Integer?i?
          = ? 20 ;
          ????????Integer?j?
          = ? 30 ;
          ????????
          if (flag) {
          ????????????System.out.println(
          " Boolean?affects " );
          ????????}

          ????????
          if (i < j)
          ????????????System.out.println(
          " Integer?affects " );
          ????}

          ????
          public ? void ?testMethod( double ?arg) {
          ????????System.out.println(
          " public?void?testMethod(double?arg)?is?invoked " );
          ????}

          ????
          public ? void ?testMethod(Integer?arg) {
          ????????System.out.println(
          " public?void?testMethod2(Integer?arg)?is?invoked " );
          ????}

          ????
          public ? static ? void ?main(String?args[]) {
          ????????AutoBoxing?auto?
          = ? new ?AutoBoxing();
          ????????auto.testCompare();
          ????????auto.testOperator();
          ????????auto.testControl();
          ????????
          int ?i? = ? 1 ;
          ????????
          // ?public?void?testMethod(Integer?arg)?wouldn't?be?invoked
          ????????
          // because??public?void?testMethod(double?arg)?will?be?invoked?in?JDK1.4
          ????????
          // Java?tiger?consider?the?backward?capability
          ????????auto.testMethod(i);
          ????????auto.boxingDemo();
          ????}

          ????
          }

          posted @ 2006-06-22 18:34 BlueO2 閱讀(403) | 評論 (0)編輯 收藏

          public ? enum ?User? {
          ????Admin,User,Guest,Unknown???
          }

          public ? class ?Login? {
          ????
          ????
          private ?User?user;
          ????EnumMap
          < User,String > ?userName? = ? new ?EnumMap < User,?String > (User. class );
          ????
          /** ?Creates?a?new?instance?of?Login? */
          ????
          public ?Login()? {
          ????????userName.put(User.Admin,?
          " Administrator " );
          ????????userName.put(User.User,?
          " David " );
          ????????userName.put(User.Guest,?
          " Steve " );
          ????}

          ????
          public ? boolean ?isAdmin(User?user) {
          ????????
          if (user.equals(User.Admin)) {
          ????????????
          return ? true ;
          ????????}

          ????????
          return ? false ;
          ????}

          ????
          public ? void ?printUserRole() {
          ????????User[]?users?
          = ?user.values();
          ????????
          for (User?u?:?user.values()) {
          ????????????System.out.println(u.toString());
          ????????}

          ????}

          ????
          public ? void ?isRole(User?user) {
          ????????
          switch (user) {
          ????????????
          case ?Admin:
          ????????????????System.out.println(
          " admin " );
          ????????????????
          break ;
          ????????????
          case ?User:
          ????????????????System.out.println(
          " User " );
          ????????????????
          break ;
          ????????????
          case ?Guest:
          ????????????????System.out.println(
          " Guest " );
          ????????????????
          break ;
          ????????????
          default :
          ????????????????System.out.println(
          " unknow " );
          ????????}

          ????}

          ????
          public ? static ? void ?main(String[]?args) {
          ????????Login?login?
          = ? new ?Login();
          ????????System.out.println(login.isAdmin(User.Admin));
          ????????login.printUserRole();
          ????????login.isRole(User.User);
          ????}

          ????
          }

          posted @ 2006-06-22 18:22 BlueO2 閱讀(343) | 評論 (0)編輯 收藏


          posts - 29, comments - 3, trackbacks - 0, articles - 0

          Copyright © BlueO2

          主站蜘蛛池模板: 嘉祥县| 舒城县| 海盐县| 永福县| 阳信县| 合川市| 井陉县| 彰武县| 铅山县| 南昌市| 景德镇市| 津市市| 盈江县| 赫章县| 乡城县| 昭觉县| 上栗县| 武清区| 凤翔县| 中江县| 龙井市| 唐海县| 枣阳市| 邯郸县| 南陵县| 吉木乃县| 孝昌县| 克拉玛依市| 开鲁县| 浮梁县| 罗山县| 岑溪市| 开阳县| 伊宁市| 天祝| 鄂伦春自治旗| 确山县| 宜黄县| 阜阳市| 绥棱县| 东城区|