一只灰機(jī)

          藍(lán)色
          posts - 6, comments - 1, trackbacks - 0, articles - 0

          2010年11月24日

          一、基礎(chǔ)類
          1、《Thinking in java》,入門第一位是建立正確的概念。
          2、《Core Java》,我沒(méi)系統(tǒng)讀過(guò),這本書(shū)更貼近實(shí)踐,更多API的介紹,同樣,更新也更頻繁。

          二、進(jìn)階類
          1、《Effective Java》,在熟悉語(yǔ)法、API之后,你需要知道最佳實(shí)踐和陷阱,沒(méi)有比這本更好的。
          2、《Java Puzzlers》,通過(guò)謎題介紹一些你可能沒(méi)有注意到的邊角料,作為趣味讀物也不錯(cuò)
          3、《深入Java虛擬機(jī)》,翻譯一般,但不可不讀,最好結(jié)合最新的JVM規(guī)范來(lái)讀。

          三、特定領(lǐng)域
          1、網(wǎng)絡(luò)編程:
          (1)
          O'Reilly的《Java nio》,很多人都推薦,我個(gè)人覺(jué)的一般,基本上只是個(gè)API更詳細(xì)的說(shuō)明文檔,O'reilly的java系列很多都是這樣。
          (2)我更推薦這本《Fundamental networking in java》,由淺入深教你怎么做java網(wǎng)絡(luò)編程,并且介紹很多背景知識(shí),甚至介紹了各種最佳實(shí)踐、網(wǎng)絡(luò)編程模型以及Java socket在不同平臺(tái)之間的差異等等。

          2、并發(fā)編程:
          (1)《Java Concurrency in Practic》,并發(fā)領(lǐng)域必讀經(jīng)典。
          (2)《Java并發(fā)編程:設(shè)計(jì)原則與模式》,同樣是Doug lea的作品。
          (3) 《java threads》,入門讀物。

          3、web編程,這塊我許久未接觸了,就不推薦了,有興趣的朋友可以補(bǔ)充下。

          四、模式與設(shè)計(jì)

          1、《設(shè)計(jì)模式》,GOF的經(jīng)典。
          2、《設(shè)計(jì)模式精解》,應(yīng)該有最新版,個(gè)人認(rèn)為更適合入門。
          3、《Head first設(shè)計(jì)模式》,更輕松的入門讀物。
          4、《企業(yè)應(yīng)用架構(gòu)模式》
          5、《分析模式——可復(fù)用對(duì)象模型》
          6、《面向模式的軟件體系結(jié)構(gòu)》,國(guó)內(nèi)貌似翻譯了3卷,絕對(duì)經(jīng)典,可惜翻譯較差。
          7、《重構(gòu)——改善既有代碼設(shè)計(jì)》,想寫好代碼必讀。
          8、《重構(gòu)與模式》,給我印象很深的 xml構(gòu)建的例子,在我的代碼里應(yīng)用到了。

          五、方法論
          1、《敏捷軟件開(kāi)發(fā)》
          2、《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)》,你不一定要TDD,但是你一定要學(xué)會(huì)做單元測(cè)試。
          3、《Agile Java》,也可以作為java入門讀物。
          4、《快速軟件開(kāi)發(fā)》
          5、《面向?qū)ο蠓治雠c設(shè)計(jì)》,OO設(shè)計(jì)必讀。
          6、《Unix編程藝術(shù)》,打開(kāi)你的眼界。

          六、Java之外
          0、《代碼大全》,編程的百科全書(shū),必讀。
          1、《unix網(wǎng)絡(luò)編程》,學(xué)習(xí)網(wǎng)絡(luò)編程必讀書(shū)。
          2、《C++網(wǎng)絡(luò)編程》上下兩卷,介紹ACE的,但是其中對(duì)各種模式運(yùn)用的介紹非常值的一讀。
          3、《Joel說(shuō)軟件》,編程文化
          4、《人月神話》、《人件》
          5、《卓有成效的程序員》,給我很大啟發(fā)的一本書(shū)。
          6、《程序員修煉之道》
          7、《計(jì)算機(jī)程序的構(gòu)造與解釋》,必讀
          8、《算法導(dǎo)論》,可以作為參考書(shū)
          9、《深入理解計(jì)算機(jī)系統(tǒng)》
          10、《編譯原理》龍書(shū),最新版用java解釋,我沒(méi)有讀完,順便提下。

          posted @ 2010-12-01 10:19 noaso 閱讀(160) | 評(píng)論 (0)編輯 收藏

          利用Javascript取和設(shè)FCKeditor值也是非常容易的,如下:

          // 獲取編輯器中HTML內(nèi)容
          function getEditorHTMLContents(EditorName) {
              var oEditor = FCKeditorAPI.GetInstance(EditorName);
              return(oEditor.GetXHTML(true));
          }

          // 獲取編輯器中文字內(nèi)容
          function getEditorTextContents(EditorName) {
              var oEditor = FCKeditorAPI.GetInstance(EditorName);
              return(oEditor.EditorDocument.body.innerText);
          }

          // 設(shè)置編輯器中內(nèi)容
          function SetEditorContents(EditorName, ContentStr) {
              var oEditor = FCKeditorAPI.GetInstance(EditorName) ;
              oEditor.SetHTML(ContentStr) ;
          }

          FCKeditorAPI是FCKeditor加載后注冊(cè)的一個(gè)全局對(duì)象,利用它我們就可以完成對(duì)編輯器的各種操作。

          在當(dāng)前頁(yè)獲得 FCK 編輯器實(shí)例:
          var Editor = FCKeditorAPI.GetInstance('InstanceName');

          從 FCK 編輯器的彈出窗口中獲得 FCK 編輯器實(shí)例:
          var Editor = window.parent.InnerDialogLoaded().FCK;

          從框架頁(yè)面的子框架中獲得其它子框架的 FCK 編輯器實(shí)例:
          var Editor = window.FrameName.FCKeditorAPI.GetInstance('InstanceName');

          從頁(yè)面彈出窗口中獲得父窗口的 FCK 編輯器實(shí)例:
          var Editor = opener.FCKeditorAPI.GetInstance('InstanceName');

          獲得 FCK 編輯器的內(nèi)容:
          oEditor.GetXHTML(formatted); // formatted 為:true|false,表示是否按HTML格式取出
          也可用:
          oEditor.GetXHTML();

          設(shè)置 FCK 編輯器的內(nèi)容:
          oEditor.SetHTML("content", false); // 第二個(gè)參數(shù)為:true|false,是否以所見(jiàn)即所得方式設(shè)置其內(nèi)容。此方法常用于"設(shè)置初始值"或"表單重置"哦作。

          插入內(nèi)容到 FCK 編輯器:
          oEditor.InsertHtml("html"); // "html"為HTML文本

          檢查 FCK 編輯器內(nèi)容是否發(fā)生變化:
          oEditor.IsDirty();

          在 FCK 編輯器之外調(diào)用 FCK 編輯器工具條命令:
          命令列表如下:
          DocProps, Templates, Link, Unlink, Anchor, BulletedList, NumberedList, About, Find, Replace, Image, Flash, SpecialChar, Smiley, Table, TableProp, TableCellProp, UniversalKey, Style, FontName, FontSize, FontFormat, Source, Preview, Save, NewPage, PageBreak, TextColor, BGColor, PasteText, PasteWord, TableInsertRow, TableDeleteRows, TableInsertColumn, TableDeleteColumns, TableInsertCell, TableDeleteCells, TableMergeCells, TableSplitCell, TableDelete, Form, Checkbox, Radio, TextField, Textarea, HiddenField, Button, Select, ImageButton, SpellCheck, FitWindow, Undo, Redo

          使用方法如下:
          oEditor.Commands.GetCommand('FitWindow').Execute();

          = FCKConfig.BasePath + 'plugins/'
          // FCKConfig.Plugins.Add( 'placeholder', 'en,it' ) ;


          去掉//后,就相當(dāng)于把placeholder這個(gè)插件功能加上了,fckeditor的插件文件都在/editor/plugins/文件夾下分類按文件夾放置的,對(duì)于fckeditor2.0來(lái)說(shuō),里面有兩個(gè)文件夾,也就是有兩個(gè)官方插件,placeholder這個(gè)文件夾就是我們剛才加上去的,主要用于多參數(shù)或單參數(shù)自定義標(biāo)簽的匹配,這個(gè)在制作編輯模板時(shí)非常管用,要想看具體實(shí)例的話,大家可以去下載acms 這個(gè)系統(tǒng)查看學(xué)習(xí),另一個(gè)文件夾tablecommands就是編輯器里的表格編輯用到的了。當(dāng)然,如果你想制作自己其它用途的插件,那就只要按照 fckeidtor插件的制作規(guī)則制作完放置在/editor/plugins/下就行,然后再在fckeidtor.js里再添加 FCKConfig.Plugins.Add('Plugin Name',',lang,lang');就可以了。

          第二部分 ,如何讓編輯器一打開(kāi)的時(shí)候,編輯工具條不出現(xiàn),等點(diǎn)“展開(kāi)工具欄”時(shí)才出現(xiàn)?Easy,F(xiàn)CKeditor本身提供了這個(gè)功能啦,打開(kāi)fckconfig.js,找到

          FCKConfig.ToolbarStartExpanded = true ;
          改成
          FCKConfig.ToolbarStartExpanded = false ;
          就可以啦!

          第三部分,使用自己的表情圖標(biāo),同樣打開(kāi)fckcofnig.js到最底部那一段


          FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ;
          FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif'] ;
          FCKConfig.SmileyColumns = 8 ;
          FCKConfig.SmileyWindowWidth    = 320 ;
          FCKConfig.SmileyWindowHeight = 240 ;

          上面這段已經(jīng)是我修改過(guò)的了,為了我發(fā)表此文的版面不會(huì)被撐得太開(kāi),我把FCKConfig.SmileyImages那一行改得只有三個(gè)表情圖了。

          第一行,當(dāng)然是表情圖標(biāo)路徑的設(shè)置,第二行是相關(guān)表情圖標(biāo)文件名的一個(gè)List,第三行是指彈出的表情添加窗口最每行的表情數(shù),下面兩個(gè)參數(shù)是彈出的模態(tài)窗口的寬和高嘍。

          第四部分,文件上傳管理部分

          此部分可能是大家最為關(guān)心的,上一篇文章簡(jiǎn)單的講了如何修改來(lái)上傳文件以及使用fckeidtor2.0才提供的快速上傳功能。再我們繼續(xù)再深層次的講解上傳功能

          FCKConfig.LinkBrowser = true ;
          FCKConfig.ImageBrowser = true ;
          FCKConfig.FlashBrowser = true ;在fckconfig.js找到這三句,這三句不是連著的哦,只是我把他們集中到這兒來(lái)了,設(shè)置為true的意思就是允許使用fckeditor來(lái)瀏覽服務(wù)器端的文件圖像以及flash等,這個(gè)功能是你插入圖片時(shí)彈出的窗口上那個(gè)“瀏覽服務(wù)器”按鈕可以體現(xiàn)出來(lái),如果你的編輯器只用來(lái)自己用或是只在后臺(tái)管理用,這個(gè)功能無(wú)疑很好用,因?yàn)樗屇愫苤庇^地對(duì)服務(wù)器的文件進(jìn)行上傳操作。但是如果你的系統(tǒng)要面向前臺(tái)用戶或是像blog這樣的系統(tǒng)要用的話,這個(gè)安全隱患可就大了哦。于是我們把其一律設(shè)置為false;如下

          FCKConfig.LinkBrowser = false ;
          FCKConfig.ImageBrowser = false ;
          FCKConfig.FlashBrowser = false ;

          這樣一來(lái),我們就只有快速上傳可用了啊,好!接下來(lái)就來(lái)修改,同樣以asp為范例進(jìn)行,進(jìn)入/editor/filemanager/upload/asp/打開(kāi)config.asp,修改
          ConfigUserFilesPath = "/UserFiles/"這個(gè)設(shè)置是上傳文件的總目錄,我這里就不動(dòng)了,你想改自己改了

          好,再打開(kāi)此目錄下的upload.asp文件,找到下面這一段


          Dim resourceType
          If ( Request.QueryString("Type")
          <>"" ) Then
          resourceType = Request.QueryString("Type")
          Else
          resourceType = "File"
          End If
          然后再在其后面添加


          ConfigUserFilesPath = ConfigUserFilesPath & resourceType &"/"& Year(Date()) &"/"& Month(Date()) &"/"
          這樣的話,上傳的文件就進(jìn)入“/userfiles/文件類型(如image或file或flash)/年/月/”這樣的文件夾下了,這個(gè)設(shè)置對(duì)單用戶來(lái)用已經(jīng)足夠了,如果你想給多用戶系統(tǒng)用,那就這樣來(lái)改


          ConfigUserFilesPath = ConfigUserFilesPath & Session("username") & resourceType &"/"& Year(Date()) &"/"& Month(Date()) &"/"
          這樣上傳的文件就進(jìn)入“/userfiles/用戶目錄/文件類型/年/月/”下了,當(dāng)然如果你不想這么安排也可以修改成別的,比如說(shuō)用戶目錄再深一層等,這里的Session("username")請(qǐng)根據(jù)自己的需要進(jìn)行修改或換掉。

          上傳的目錄設(shè)置完了,但是上傳程序還不會(huì)自己創(chuàng)建這些文件夾,如果不存在的話,上傳不會(huì)成功的,那么我們就得根據(jù)上面的上傳路徑的要求進(jìn)行遞歸來(lái)生成目錄了。

          找到這一段


          Dim sServerDir
          sServerDir = Server.MapPath( ConfigUserFilesPath )
          If ( Right( sServerDir, 1 )
          <>"\" ) Then
              sServerDir = sServerDir & "\"
          End If

          把它下面的這兩行


          Dim oFSO
          Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
          用下面這一段代碼來(lái)替換


          dim arrPath,strTmpPath,intRow
          strTmpPath = ""
          arrPath = Split(sServerDir, "\")
          Dim oFSO
          Set oFSO = Server.CreateObject( "Scripting.FileSystemObject" )
          for intRow = 0 to Ubound(arrPath)
              strTmpPath = strTmpPath & arrPath(intRow) & "\"
              if oFSO.folderExists(strTmpPath)=false then
               oFSO.CreateFolder(strTmpPath)
              end if
          next
          用這段代碼就可以生成你想要的文件夾了,在上傳的時(shí)候自動(dòng)生成。

          好了,上傳文件的修改到現(xiàn)在可以暫時(shí)告一段落了,但是,對(duì)于中文用戶還存在這么個(gè)問(wèn)題,就是fckeditor的文件上傳默認(rèn)是不改名的,同時(shí)還不支持中文文件名,這樣一來(lái)是上傳的文件會(huì)變成“.jpg”這樣的無(wú)法讀的文件,再就是會(huì)有重名文件,當(dāng)然重名這點(diǎn)倒沒(méi)什么,因?yàn)閒ckeditor會(huì)自動(dòng)改名,會(huì)在文件名后加(1)這樣來(lái)進(jìn)行標(biāo)識(shí)。但是,我們通常的習(xí)慣是讓程序自動(dòng)生成不重復(fù)的文件名

          在剛才那一段代碼的下面緊接著就是
          ' Get the uploaded file name.
          sFileName = oUploader.File( "NewFile" ).Name
          看清楚了,這個(gè)就是文件名啦,我們來(lái)把它改掉,當(dāng)然得有個(gè)生成文件名的函數(shù)才行,改成下面這樣

          '//取得一個(gè)不重復(fù)的序號(hào)
          Public Function GetNewID()
          dim ranNum
          dim dtNow
          randomize
          dtNow=Now()
          ranNum=int(90000*rnd)+10000
          GetNewID=year(dtNow) & right("0" & month(dtNow),2) & right("0" & day(dtNow),2) & right("0" & hour(dtNow),2) & right("0" & minute(dtNow),2) & right("0" & second(dtNow),2) & ranNum
          End Function

          ' Get the uploaded file name.
          sFileName = GetNewID() &"."& split(oUploader.File( "NewFile" ).Name,".")(1)

          這樣一來(lái),上傳的文件就自動(dòng)改名生成如20050802122536365.jpg這樣的文件名了,是由年月日時(shí)分秒以及三位隨機(jī)數(shù)組成的文件名了


          利用Javascript取和設(shè)FCKeditor值也是非常容易的,如下:

          // 獲取編輯器中HTML內(nèi)容
          function getEditorHTMLContents(EditorName) {
              var oEditor = FCKeditorAPI.GetInstance(EditorName);
              return(oEditor.GetXHTML(true));
          }

          // 獲取編輯器中文字內(nèi)容
          function getEditorTextContents(EditorName) {
              var oEditor = FCKeditorAPI.GetInstance(EditorName);
              return(oEditor.EditorDocument.body.innerText);
          }

          // 設(shè)置編輯器中內(nèi)容
          function SetEditorContents(EditorName, ContentStr) {
              var oEditor = FCKeditorAPI.GetInstance(EditorName) ;
              oEditor.SetHTML(ContentStr) ;
          }

          FCKeditorAPI是FCKeditor加載后注冊(cè)的一個(gè)全局對(duì)象,利用它我們就可以完成對(duì)編輯器的各種操作。

          在當(dāng)前頁(yè)獲得 FCK 編輯器實(shí)例:
          var Editor = FCKeditorAPI.GetInstance('InstanceName');

          從 FCK 編輯器的彈出窗口中獲得 FCK 編輯器實(shí)例:
          var Editor = window.parent.InnerDialogLoaded().FCK;

          從框架頁(yè)面的子框架中獲得其它子框架的 FCK 編輯器實(shí)例:
          var Editor = window.FrameName.FCKeditorAPI.GetInstance('InstanceName');

          從頁(yè)面彈出窗口中獲得父窗口的 FCK 編輯器實(shí)例:
          var Editor = opener.FCKeditorAPI.GetInstance('InstanceName');

          獲得 FCK 編輯器的內(nèi)容:
          oEditor.GetXHTML(formatted); // formatted 為:true|false,表示是否按HTML格式取出
          也可用:
          oEditor.GetXHTML();

          設(shè)置 FCK 編輯器的內(nèi)容:
          oEditor.SetHTML("content", false); // 第二個(gè)參數(shù)為:true|false,是否以所見(jiàn)即所得方式設(shè)置其內(nèi)容。此方法常用于"設(shè)置初始值"或"表單重置"哦作。

          插入內(nèi)容到 FCK 編輯器:
          oEditor.InsertHtml("html"); // "html"為HTML文本

          檢查 FCK 編輯器內(nèi)容是否發(fā)生變化:
          oEditor.IsDirty();

          在 FCK 編輯器之外調(diào)用 FCK 編輯器工具條命令:
          命令列表如下:
          DocProps, Templates, Link, Unlink, Anchor, BulletedList, NumberedList, About, Find, Replace, Image, Flash, SpecialChar, Smiley, Table, TableProp, TableCellProp, UniversalKey, Style, FontName, FontSize, FontFormat, Source, Preview, Save, NewPage, PageBreak, TextColor, BGColor, PasteText, PasteWord, TableInsertRow, TableDeleteRows, TableInsertColumn, TableDeleteColumns, TableInsertCell, TableDeleteCells, TableMergeCells, TableSplitCell, TableDelete, Form, Checkbox, Radio, TextField, Textarea, HiddenField, Button, Select, ImageButton, SpellCheck, FitWindow, Undo, Redo

          使用方法如下:
          oEditor.Commands.GetCommand('FitWindow').Execute();


          posted @ 2010-11-24 08:42 noaso 閱讀(557) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 永定县| 永泰县| 定陶县| 三明市| 托里县| 抚远县| 加查县| 锦屏县| 中山市| 水富县| 贵德县| 蕲春县| 阳东县| 佛山市| 淮北市| 乌兰县| 南部县| 平泉县| 攀枝花市| 华坪县| 兴化市| 马龙县| 屯留县| 金乡县| 五家渠市| 土默特右旗| 当阳市| 眉山市| 红桥区| 通榆县| 台山市| 龙山县| 天峻县| 宕昌县| 蓝田县| 陆良县| 全州县| 罗山县| 黄山市| 斗六市| 汉寿县|