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

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

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

    2006年2月14日

    初學flex

         上大學的時候,看到好多精彩炫麗的flash,學習了一些flash的知識。那個時候不怎么會寫腳本,就用動畫的概念一幀一幀的拼出一個flash。后來工作以后,給客戶在線演示產品,有接觸了Captivate。2006年末的時候,客戶要求開發一個在線產品展示平臺,我偶然搜到了adobe用flex開發的網上購物演示,就體會到如果用flex來實現這個產品展示平臺將是很動人的事情,由于某種原因最終未能如愿。最近在做一個通用視頻培訓平臺時又用到了FLV播放器,也是用Flex開發的,最終效果和土豆、優酷非常類似。這些場景使我對flash的展現效果情有獨鐘,況且有adobe這樣的公司在運作flash,如果可能的話應該在合適的場合來把flex集成到我們現在開發的應用中,比如圖表功能、表單功能、打印功能等等?;谝陨系慕洑v和思路,決定花功夫學習一下flex還是值得的。
        首先,到adobe官方網站下載flex builder 3(當前最新版本)并安裝。安裝完畢后會看到一些入門文章中提到的Flex SDK已經在builder中存在了,所以初學僅下載個builder就夠了。
        然后,打開builder發現它就是基于eclipse開發的,我想這個IDE對于大多數java開發著再熟悉不過了。首次進入時會有一個歡迎界面和初學者向導,我比較習慣看看這些東西,點擊下載提供的入門工程Flex3GSEIII_a_WorkingWithData_JSP,并導入builder中??纯垂こ探Y構跟我們平時的JAVAEE工程有了一些不同。多了bin-debug和html-template文件夾,文件類型主要是*.mxml、*.as。在工程的左側視圖右鍵*.mxml運行(類似與運行java文件),會有一個編譯過程,過后彈出一個html,html中運行的正式flash。當時比較好奇,一個mxml是如何經過編譯產生html和flash的,打開剛才提到的bin-debug發現兩個文件生成到了這個文件夾。仔細讀一下mxml的代碼發現跟XHTML基本類似,其中的一些function都是AS寫的。至此我分析得到如下結論:mxml+as-->swf,中間的轉換是adobe集成在builder中的轉換工具完成的。如此跟我們以往HTML+JS的編程習慣很類似了,并且XHTML與AS的結合更緊密一些。由于初學原理性的知識我就理解至此了。
       最后,我們關心的是用flex都能實現哪些控件,并且控件的效果如何。我沒有迫不及待的去google,而是又深入到builder的安裝目錄下,在D:\Flex Builder 3\sdks\3.0.0發現了好東西,別的我不關心,先看samples,子目錄下有一個explorer,其中包含一個build.bat??吹竭@個bat我更加確定了我以上的結論。于是運行bat,開始編譯其下的mxml文件逐一生成swf文件?;ㄒ欢螘r間生成完畢,打開類似于index的swf文件,sdk中提供的樣例控件就都盡收眼底了。
       后續:有源文件,有開發工具,你可以隨意擺弄這些代碼,熟悉語法,熟悉開發環境,熟悉對象屬性,拼拼湊湊完成自己的一個組合界面了。

    posted @ 2008-03-12 14:28 beyondduke 閱讀(1389) | 評論 (2)編輯 收藏

    談一談在家辦公的利弊


    為緩解早晚高峰帶來的擁堵,北京交通委經過調研,擬從商業機構、大型商場開始試行錯峰上下班,同時擬在IT行業、科研單位試行彈性工作制。昨天,市人大代表趙鳳桐透露,具體方案政府還在擬訂中。
    市人大代表劉國祥在去年的人代會上提出“合理調整上下班時間”建議(見新聞附件)。市交通委對此予以回復稱,本市擬試行錯開上下班時間和實行彈性工作時間兩種方法,緩解早晚高峰的交通壓力。目前,已經在開展商業、機關企事業單位等錯峰上下班的研究,并提出了調整商業、機關企事業單位上下班時間的初步方案,擬從商業機構開始實施。 此外,交通委還與相關部門進行了協商,對中關村等地區進行調研,擬對某些行業(如IT行業、科研單位等)實行彈性工作制,鼓勵在家網上辦公。如果這些措施能夠實施,則在一定程度上可以削減高峰時段的交通流峰值。
    據了解,截至2007年底,北京的機動車保有量已達到310萬輛。市交通委表示,從城市交通運行態勢來看,出行需求和機動車保有量仍在持續快速增長,高峰時段道路擁堵區域不斷擴大、局部路段平均車速下降,緩解擁堵的措施大多被持續快速增長的交通需求所抵消,交通形勢依然十分嚴峻。


    這是前兩周的新聞了,當時一看到新聞就感覺這條消息很利好,尤其對我們北京的程序員來說。在家辦公的利弊,現在業內也沒有個具體的說法,這幾天有幸在家辦公,體驗了一把想跟大家談一談我的看法。
    一,利:
    1,節約時間:花在等車、路上、堵車、倒車或開車、停車等交通出行的時間成本。
    2,節約金錢:上下班的路費或車位費、油費等,還不算看不到的時間兌換的錢(時間就是金錢)。
    3,為國家做貢獻:不但給上述新聞中的交通部門減少壓力,而且減少了碳的排放量(節能減排)。
    4,為公司節約日常費用:占位費,水費,餐費,辦公費,交通費。。。。
    5,自己時間把握更準確:由于減少了交通環節,個人時間上更有可控性。
    二,弊:
    1,缺少辦公氣氛:家中的環境畢竟沒有公司那么統一,一個家一個樣兒,有條件給自己打造辦公環境和氣氛的員工恐怕只有少數。
    2,增加交流成本:公司面對面的交流只能改成手機對手機,或麥克對麥克,或手指對手指。這些肯定都比面對面花的時間長,還要通訊費上網費。
    3,容易受外界干擾:如果家中有妻兒老小,家里很難給你一個封閉環境,你會不斷的被“騷擾”,畢竟工作的事情像寫程序需要比較心靜的環境。
    4,容易自由散漫:沒有了公司領導的監控和同事的督促,人的自控能力是有限的,沒準看新聞泡論壇玩游戲就過了頭,耽誤的肯定是正事。
    5,造成公共資源浪費:公司里的公共資源在家是很難利用好的,比如內部的服務器,局域網和通訊工具。
    以上這些是我所能想到的,至于利大還是弊大我沒有偏向都是5條。個人還是覺得天時地利人和才適合在家辦公,對于不同的人或同一個人的不同時間段都是利弊難辨的。
    希望大家能聊一聊自己的看法。

    posted @ 2008-01-31 09:48 beyondduke 閱讀(4701) | 評論 (12)編輯 收藏

    Excel報表之js版

    ?半年以前做過server端生成excel的簡單引擎,總感覺不夠輕便,尤其在一些固定格式,數據量又不是很大的情況下,上周寫了一

    個根據表單數據在client端用js生成excle的demo,令我我激動了半天------js太強了!

    下面分享一下這段js:
    ?
    ?1var?excel??=?new?ActiveXObject("Excel.Application");?//創建AX對象excel
    ?2excel.visible?=true;?//設置excel可見屬性
    ?3var?workbook?=?excel.Workbooks.Add;?//獲取workbook對象
    ?4var?sheet1?=?xlBook.Worksheets(2);??//創建sheet1
    ?5var?sheet2?=?xlBook.Worksheets(1);??//創建sheet2
    ?6sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).mergecells=true;?//合并單元格
    ?7sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).value="員工月考核成績";?//設置單元格內容
    ?8sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).Interior.ColorIndex=6;//設置底色?
    ?9sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).Font.ColorIndex=5;//設置字體色?
    10sheet1.Rows(1).RowHeight?=?20;?//設置列高
    11sheet1.Rows(1).Font.Size=16;??//設置文字大小
    12sheet1.Rows(1).Font.Name="宋體";?//設置字體
    13//設置每一列的標題
    14sheet1.Cells(2,1).Value="工程師考核項";
    15sheet1.Cells(2,2).Value="總分";
    16sheet1.Cells(2,3).Value="研發進度";
    17sheet1.Cells(2,4).Value="出勤率";
    18sheet1.Cells(2,5).Value="執行力";
    19sheet1.Cells(2,6).Value="責任心";
    20sheet1.Cells(2,7).Value="工作規范";
    21sheet1.Cells(2,8).Value="協作精神";
    22sheet1.Cells(2,9).Value="進取性";
    23sheet1.Cells(2,10).Value="工作合理性";
    24sheet1.Cells(2,11).Value="解決問題能力";
    25sheet1.Cells(2,12).Value="應變能力";
    26sheet1.Cells(2,13).Value="人際技能";
    27sheet1.Cells(2,14).Value="理解能力";
    28//從表單循環控件中取出數據逐行插入對應列的數據
    29var?count?=?sfform.GetAttributeValue('Repeat','Count');
    30for(var?line=1;line<=count;line++){?//begin?for
    31??var?name??=?sfform.GetValue('Repeat['+line+'].name');
    32??var?total=?sfform.GetValue('Repeat['+line+'].total');
    33??var?yfjd?=?sfform.GetValue('Repeat['+line+'].yfjd');
    34??var?jh?=?sfform.GetValue('Repeat['+line+'].jh');
    35??var?gcgj?=?sfform.GetValue('Repeat['+line+'].gcgj');
    36??var?cql?=?sfform.GetValue('Repeat['+line+'].cql');
    37??var?zxl?=?sfform.GetValue('Repeat['+line+'].zxl');
    38??var?gzgf?=?sfform.GetValue('Repeat['+line+'].gzgf');
    39??var?zrx?=?sfform.GetValue('Repeat['+line+'].zrx');
    40??var?xzjs?=?sfform.GetValue('Repeat['+line+'].xzjs');
    41??var?jqx?=?sfform.GetValue('Repeat['+line+'].jqx');
    42??var?gzhl?=?sfform.GetValue('Repeat['+line+'].gzh');
    43??var?jjwt?=?sfform.GetValue('Repeat['+line+'].jjwt');
    44??var?ybnl?=?sfform.GetValue('Repeat['+line+'].ybnl');
    45??var?rjjn?=?sfform.GetValue('Repeat['+line+'].rjjn');
    46??var?ljnl?=?sfform.GetValue('Repeat['+line+'].ljnl');
    47??sheet1.Cells(2+line,1).Value=name;
    48??sheet1.Cells(2+line,2).Value=total;
    49??sheet1.Cells(2+line,3).Value=yfjd;
    50??sheet1.Cells(2+line,4).Value=cql;
    51??sheet1.Cells(2+line,5).Value=zxl;
    52??sheet1.Cells(2+line,6).Value=gzgf;
    53??sheet1.Cells(2+line,7).Value=zrx;
    54??sheet1.Cells(2+line,8).Value=xzjs;
    55??sheet1.Cells(2+line,9).Value=jqx;
    56??sheet1.Cells(2+line,10).Value=gzhl;
    57??sheet1.Cells(2+line,11).Value=jjwt;
    58??sheet1.Cells(2+line,12).Value=ybnl;
    59??sheet1.Cells(2+line,13).Value=rjjn;
    60??sheet1.Cells(2+line,14).Value=ljnl;
    61
    62}
    //end?for
    63
    64

    基本的代碼已經實現了,生成excel的格式和一些統計計算,用js寫應該是很方便的,以后有例子再作補充。

    從代碼角度來看這種寫法不是很靈活,但在能滿足用戶的需求前提下,這種生成方式還是很受歡迎的,給用戶的感覺就是輕

    便。個人認為簡單就是美!

    posted @ 2006-08-05 11:14 beyondduke 閱讀(6601) | 評論 (7)編輯 收藏

    數據庫常見的三種join方式(收藏)

    數據庫常見的join方式有三種:inner join, left outter join, right outter join(還有一種full join,因不常用,本文不討論)。這三種連接方式都是將兩個以上的表通過on條件語句,拼成一個大表。以下是它們的共同點:

    ? 1. 關于左右表的概念。左表指的是在SQL語句中排在left join左邊的表,右表指的是排在left join右邊的表。
    ? 2. 在拼成的大表中,左表排在左邊,右表排在右邊。
    ? 3. on條件語句最好用=號對兩表相應的主外鍵進行連接。當然,也可以用其他操作符,如>, <, 來連接兩表的任一字段,此時的關系將非常復雜,連接后的記錄數也隨之而變得不確定。如果在一些特殊的場合中需要用到這種方式,必須通過簡單的實例加以確認,否則,連接結果很可能不是我們所想要的!
    ? 4. on條件語句不能省略。
    ? 5. 可以連鎖使用join,每次使用join都令另一表與當前的表或連接的結果相連接。


    在下文中,用到了兩個表,"部門"表與"組織"表,其中,"部門"表有一名為"組織編號"的外鍵,指向"組織"表中的主鍵"編號"。

    inner join

    ? 格式:select * from 部門 inner join 組織 on 部門.組織編號 = 組織.編號

    ? 目的:將兩表中符合on條件的所有記錄都找出來。

    ? 規律:

    ??? 1. 拼出的大表記錄不會增加。
    ??? 2. 如果左邊與右表的關系是一對多的關系,在選出的任一記錄中,假若右表有多個記錄與其對應,那么,連接后的左表,主鍵將不再唯一。

    ? 典型應用:將存在多關系的引用表放在左表,將存在一關系的被引用表放在右表,通過=號將主外鍵進行連接,通過對右表設定過濾條件,選出相應的且主鍵唯一的左表記錄。

    ? 備注:inner join 是默認的連接方式,可縮寫為join。

    ? 轉化為where子句:

    ??? select * from 部門, 組織 where 部門.組織編號 = 組織.編號

    ?

    left outter join

    ? 格式: select * from 部門 left join 組織 on 部門.組織編號 = 組織.編號

    ? 格式: select * from 組織 left join 部門 on 組織.編號 = 部門.組織編號

    ? 目的:將左表的所有記錄列出,右表中只要符合on條件的,與左表記錄相拼合,不符合條件的,填以null值。

    ? 規律:

    ??? 1. 選出所有符合條件的左表,如果左邊與右表的關系是一對一的關系,則拼成的大表記錄不會改變。
    ?????? 如果左邊與右表的關系是多對一的關系,則拼成的大表記錄也不會改變。
    ?????? 如果左邊與右表的關系是一對多的關系,則拼成的大表記錄會增加。對于每一具有一對多關系的左表記錄,如果左表1:N與右表對應,那么會多出N-1條記錄。例如,如果左表第一條記錄1:3對應于右表,多出2條記錄。如果左表第二條記錄1:2對應于右表,則再多出1條記錄。這樣,總共多出3條記錄。其他類推。
    ??? 2. 如果左邊與右表的關系是一對多的關系,在選出的任一記錄中,假若右表有多個記錄與其對應,那么,連接后的左表,主鍵將不再唯一。
    ??? 3. 如果左邊與右表的關系是一對多的關系,對于左表任一記錄,如果右表沒有記錄與其相對應,則全部填以null值。

    ? 典型應用:將存在多關系的引用表放在左表,將存在一關系的被引用表放在右表,通過對右表設定過濾條件,選出相應的且主鍵唯一的左表記錄。

    ? 備注:left outter join可用left join代替。在有些數據庫中,如HSqlDb, 只能使用left join而不能使用left outter join。

    ? 轉化為where子句:

    ??? select * from 部門, 組織 where 部門.組織編號 = 組織.編號


    right outter join

    ? 格式: select * from 部門 right join 組織 on 部門.組織編號 = 組織.編號

    ? 格式: select * from 組織 right join 部門 on 部門.組織編號 = 組織.編號

    ? 目的:將右表的所有記錄列出,左表中只要符合on條件的,與右表記錄相拼合,不符合條件的,填以null值。

    ? 規律:(與left outter join相反)

    ? 典型應用:可轉化成left outter join。例如

    ??? select * from 組織 right join 部門 on 部門.組織編號 = 組織.編號
    ??? 與
    ??? select * from 部門 left join 組織 on 部門.組織編號 = 組織.編號
    ??? 的效果一樣

    ? 備注:right outter join可用right join代替。在有些數據庫中,如HSqlDb, 沒有實現right join功能。

    ? 轉化為where子句:

    ??? select * from 部門, 組織 where 部門.組織編號 = 組織.編號

    posted @ 2006-05-18 09:43 beyondduke 閱讀(5855) | 評論 (1)編輯 收藏

    遞歸小程序

    遞歸

    posted @ 2006-03-29 09:31 beyondduke 閱讀(289) | 評論 (0)編輯 收藏

    程序員的方向

    轉眼做程序已經1年半了,現在的工作似乎很不可思議,自己也搞不清是否真正屬于一個程序員。每天面對msn上幾十個客戶(大多數都是程序員),忙得不亦樂乎,總是不斷的switch workspace,客戶的問題你要能重現才行。也許這也是一種鍛煉吧,需要十足的耐心,千萬不能浮躁,一旦出現問題還要不斷的debug!

    posted @ 2006-03-25 11:21 beyondduke 閱讀(388) | 評論 (0)編輯 收藏

    linux 下配置java環境(jdk和tomcat)

    JDK的配置:

        1,  下載j2sdk-linux-i386-rpm.bin
        2,運行命令:chmod +x j2sdk-linux-i386-rpm.bin     (修改成可執行權限)
        3,執行:./ j2sdk-1_3_1-linux-i386-rpm.bin        (執行后生成rpm安裝包j2sdk-linux-i386.rpm)
        4,rpm -ivh j2sdk-1_3_1-linux-i386-rpm     (安裝成功后,jdk將被安裝在/usr/java/目錄下)
        5,   vi當前用戶(例root目錄下)的.bash_profile文件,添加內容如下:

    1export JAVA_HOME=/usr/java/j2sdk1.4.2_10
    2export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.
    jar
    3export PATH=$PATH:$JAVA_HOME/bin

         6,java命令,驗證環境是否配置成功。

    TOMCAT的配置:
        
         1,下載jakarta-tomcat-5.0.28.tar.gz
         2, tar zxvf jakarta-tomcat.tar.gz
         3, 轉換路徑cd到tomcat/bin目錄下:./startup.sh (啟動tomcat)
         4, 在ie瀏覽器輸入http://servername:port   (驗證tomcat是否啟動成功)
          

       

    posted @ 2006-02-14 12:34 beyondduke 閱讀(898) | 評論 (0)編輯 收藏

    JDBC實現oracle blob 出庫入庫

    1,首先建一個足夠簡單的表imageTable
          id         varchar(20)
          image   blob
    2,blob入庫
          拷貝Sunset.jpg圖片在C盤根目錄下     
     1      DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 
     2      Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:beyondduke","duke","duke"); 
     3      conn.setAutoCommit(false); 
     4      BLOB blob = null
     5      PreparedStatement pstmt = conn.prepareStatement("insert into imageTable(id,image) values(?,empty_blob())"); 
     6      pstmt.setString(1,"10001"); 
     7      pstmt.executeUpdate(); 
     8      pstmt.close(); 
     9      pstmt = conn.prepareStatement("select content from imageTable where id= ? for update"); 
    10      pstmt.setString(1,"10001"); 
    11      ResultSet rs = pstmt.executeQuery(); 
    12     if (rs.next()) blob = (BLOB) rs.getBlob(1); 
    13      String fileName = "c://Sunset.jpg"
    14      File f = new File(fileName); 
    15      FileInputStream fin = new FileInputStream(f); 
    16      System.out.println("file size = " + fin.available()); 
    17      pstmt = conn.prepareStatement("update imageTable set image=? where id=?"); 
    18      OutputStream out = blob.getBinaryOutputStream(); 
    19       byte[] data = new byte[(int)fin.available()]; 
    20      fin.read(data); 
    21      out.write(data); 
    22      out.close(); 
    23      fin.close(); 
    24
    25      pstmt.setBlob(1,blob); 
    26      pstmt.setString(2,"fankai"); 
    27
    28      pstmt.executeUpdate(); 
    29      pstmt.close(); 
    30
    31      conn.commit(); 
    32      conn.close(); 
    瀏覽數據庫的數據,發現image項中數據大小與圖片大小一致,說明入庫了!
     3,blob出庫
     1   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
     2   Connection conn = DriverManager.getConnection(            "jdbc:oracle:thin:@localhost:1521:beyondduke""duke","duke");     
              conn.setAutoCommit(
    false);
     3    Statement stmt = conn.createStatement();
     4/* 查詢BLOB對象 */
     5    ResultSet rs = stmt.executeQuery("SELECT content FROM javatest WHERE id='1001'");
     6while (rs.next()) {
     7/* 取出此BLOB對象 */    
     8    oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("image");
     9 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d://Sunset.jpg"));            
               BufferedInputStream in 
    = new BufferedInputStream(blob    .getBinaryStream());        
    10    int c;
    11while ((c = in.read()) != -1{ out.write(c);        
    12   }

    13   in.close();
    14   out.close();
    15   rs.close();
    16   stmt.close();
    17   conn.close();
    18
    檢查D盤根目錄,會發現Sunset.jpg文件,跟C盤下是一樣的,說明入庫出庫成功!

    posted @ 2006-02-14 09:23 beyondduke 閱讀(2660) | 評論 (0)編輯 收藏

    <2006年2月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627281234
    567891011

    導航

    統計

    公告


    MSN聯系

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    我的連接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 又粗又黄又猛又爽大片免费| 久久亚洲AV无码西西人体| 亚洲AV无码成人网站在线观看| 日韩免费视频在线观看| 一级毛片a免费播放王色电影| 亚洲精品无码久久久影院相关影片| www视频免费看| 精品女同一区二区三区免费播放 | 丰满亚洲大尺度无码无码专线 | 国产精品免费一区二区三区 | 国产午夜亚洲精品| 亚洲午夜精品久久久久久浪潮 | 一级午夜a毛片免费视频| 久久精品国产亚洲av麻豆色欲 | 99re6在线精品免费观看| 亚洲va成无码人在线观看| 亚洲成a人片在线观看日本麻豆| 日韩人妻一区二区三区免费| 亚洲自偷自偷在线成人网站传媒| 久久国产成人精品国产成人亚洲| 亚洲免费二区三区| 国产福利电影一区二区三区,免费久久久久久久精 | 人妻在线日韩免费视频| 亚洲狠狠婷婷综合久久蜜芽| 久久久久亚洲精品美女| 国产无遮挡色视频免费视频| 热re99久久6国产精品免费| 羞羞漫画小舞被黄漫免费| 亚洲国产理论片在线播放| 中文字幕不卡亚洲| 毛片免费观看的视频| 热re99久久6国产精品免费| www一区二区www免费| 亚洲a无码综合a国产av中文| 亚洲视频一区二区三区| 日韩亚洲变态另类中文| 日韩精品视频免费在线观看| 在线人成精品免费视频| 中文字幕免费在线看电影大全| 国产亚洲欧美在线观看| 中日韩亚洲人成无码网站|