<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2006年7月31日

    整理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)編輯 收藏


    2006年7月27日

    我很早以前便開始使用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)編輯 收藏


    2006年6月26日

    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)編輯 收藏


    2006年6月22日

    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)編輯 收藏


    2006年6月20日

         摘要: public ? class ?Generic? {???????? /**?*/ /** ?Creates?a?new?instance?of?Generic? */ ...  閱讀全文

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


    2006年3月16日

    Rasmus Lerdorf, creator of the PHP langauge, has a new tutorial on his site today that looks at the creation of a "no-framework PHP MVC framework" using PHP5, the Yahoo! User Interface Library, and JSON.

    He steps through the entire process of working up the "non-framework" - the goals of the project, why to go with the MVC approach for the structure, and, of course, the code.

    That arose the PHP's own MVC Pattern discussion in PHP Community.But i have my own view.Here is my response in one of most famous PHP community:


    其实我认为由于lerdorf演示的是一个PHP AJAX应用,所以其实很难跟cid的方案有什么对比。由于AJAX应用的特殊性,lerdorf这个所谓的controller根本不需要考虑进行完了相关的操作以后View到底应该去哪里,应该转向哪里?因为直接push给客户端JSON对象就好了,完全不用操心到a.php还是b.php
    另外,虽然lerdorf说以后可能可以多个请求Include一个xxx.inc就是他的controller,但是目前的状况,即使成为MVC也是page controller,而cid想要做的是一个Front controller做请求委派,Front Controller的复杂的明显要比PC要高,考虑的问题也多。但是并不是说FC就好,asp.net不就是典型的page controller模式么?
    但是说句我的真实感受:读完之后我把它看作PHP AJAX应用示例教程更合适,lerdorf的标题起的有点大了,而且读完以后没有给我任何架构上启示性的东西??
    而且那个if(isset($_POST[''])){}在里面做相关操作,我还是认为挺简陋甚至丑陋的。如果一个挺复杂的view采用此种方式,还是不优雅。
    所以AJAX应用的controller有一部分应该放在View里面,一个页面a.html不一定非要请求到a.php,叶面里面的操作也是要有不同逻辑划分的,但是目前没有成熟的应用示例和解决方案。大家有没有自己的尝试?

    文章來源:http://blueoxygen.dflying.net/3/archive/42_lerdorfs_no-framework_php_mvc_framework.html

    posted @ 2006-03-16 11:19 BlueO2 閱讀(474) | 評論 (0)編輯 收藏

    一场精彩的CMMI论战 Here
    quoted from o6z's post:
    文档最忌讳繁琐无比,事无巨细的都要说明,如果是这样我直接去看代码好了。实际上多数人都默认文档的抽象程度比代码级别高,看文档比看代码省事。但是如果你的文档过于细节化,那么你的代码很难做到同步于文档。这将是一个巨大的威胁。很多人抱怨要看一堆没文档的代码,但是他们很少真的看到过合适的文档。实际上文档的作用应该是让阅读者快速找的代码的位置,而不是用文字说明代码的作用,那些应该是单元测试的事情。
    人员的流动带来的最大问题,实际是知识的流失。文档可以固定下一部分的知识,但是如果文档的抽象层次不够,这些知识并不能很容易的被掌握,那么这些就是无用功。



    文章來源:http://blueoxygen.dflying.net/3/archive/45_working_software_over_comprehensive_documentation.html

    posted @ 2006-03-16 11:19 BlueO2 閱讀(354) | 評論 (0)編輯 收藏

    本来还要自己写一个auto-complete,但是大多数此类功能并没有提供类似google suggest提供的键盘选择功能,auto-complete便失去了一大半的交互改善。于是前两天还特意扒了google suggest来看ac.js 发现google定是用了混淆器。虽然代码没有压缩,但是代码的回车空行和函数名字全部混乱。正在要自己写的时候发现了此中国自产的AutoAssist。Very Cool!


    AutoAssist is an auto completion web widget that written in pure JavaScript. It can help enhance the accessibility of existing website, let the users to work effective and feel comfortable. AutoAssist Javascript only and is built upon prototype and rico. Its main features are :

    * improve the User Experience
    * Don't require an Ajax experience
    * pretty managed JavaScript, easy to understand and customize
    * works well on Mozilla/FireFox, IE and Opera
    * have a nice solution for fast user typing, reduce a lot of corresponding server loading (20% - 80% *)

    autoassist.png

    The code for the screenshot is very simple :

    var foo = function() {
    var tt = new AutoAssist("t", {setRequestOptions: function() {
    var pars = "name=" + this.txtBox.value;
    return { url: "/country.php", parameters: pars };
    }});
    }
    Event.observe(window, "load", foo);

    You can find a ten minutes tutorial for AutoAssist explaining in details how to use this script to create an auto-complete list based on country data.

    By the way,script.aculo.us also has it's impelmention:http://demo.script.aculo.us/ajax/autocompleter


    文章來源:http://blueoxygen.dflying.net/3/archive/53_ajax_auto-complete_component.html

    posted @ 2006-03-16 11:19 BlueO2 閱讀(902) | 評論 (0)編輯 收藏

    See DFlying's finding:
    Yep,No Block Scope concept in JavaScript.Only the global and function Scope.You can use "var" to declare a global variable and use "var" agian to declare a homonymous variable in a function.In the function ,the second one works.But there is no Block scope.
    Check the codes below,it's a demo for "NO BLOCK SCOPE"
    function test(o) {var i = 0; // i is defined throughout functionif (typeof o == "object") {var j = 0; // j is defined everywhere, not just blockfor(var k = 0; k < 10; k++) { // k is defined everywhere, not just loopdocument.write(k);

    }document.write(k); // k is still defined: prints 10}document.write(j); // j is defined, but may not be initialized}

    But,You still need to care javascript's FUNCTION SCOPE.Also see code snippet:
    var scope = "global";

    function f( ) {alert(scope); // Displays "undefined", not "global"var scope = "local"; // Variable initialized here, but defined everywherealert(scope); // Displays "local"}f( );
    Right,thought you alert(scope) first and then define a new functin scope variable scope.However,once you define a function scope vriable,it will hide the global variable in the function body,whatever the definition order.



    文章來源:http://blueoxygen.dflying.net/3/archive/68_variables_scope_in_javascript.html

    posted @ 2006-03-16 11:19 BlueO2 閱讀(491) | 評論 (0)編輯 收藏


    僅列出標題  下一頁

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

    Copyright © BlueO2

    主站蜘蛛池模板: 337p日本欧洲亚洲大胆色噜噜| 国国内清清草原免费视频99| 免费无码一区二区三区蜜桃大| 亚洲国产精品一区第二页| 中文字幕视频在线免费观看| 亚洲一本大道无码av天堂| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 无码日韩精品一区二区免费暖暖 | 1000部拍拍拍18免费网站| 亚洲AV美女一区二区三区| 久久精品成人免费网站| 亚洲av无码一区二区三区不卡 | 最近中文字幕免费完整| 亚洲区精品久久一区二区三区| 8x8×在线永久免费视频| 亚洲国产亚洲综合在线尤物| 蜜桃视频在线观看免费网址入口| 亚洲AV无码成人网站在线观看| 国产免费观看网站| 精品乱子伦一区二区三区高清免费播放| 久久亚洲国产成人影院网站| 久久国产乱子伦精品免费看| 亚洲一区二区三区亚瑟| 国产成人在线免费观看| 中国一级全黄的免费观看| 亚洲精品美女久久久久| 日本不卡在线观看免费v| 又硬又粗又长又爽免费看 | 亚洲伊人色欲综合网| 最近中文字幕2019高清免费 | 亚洲精品国产日韩无码AV永久免费网 | 久久精品免费一区二区| 亚洲中文字幕无码mv| www.亚洲一区| 91人人区免费区人人| 国产成人人综合亚洲欧美丁香花| 丝袜熟女国偷自产中文字幕亚洲| 91在线手机精品免费观看| 亚洲AV日韩AV无码污污网站| 久久久久久久亚洲精品| 亚洲精品免费在线视频|