posted @ 2011-04-23 22:41 summeryhrb 閱讀(1995) | 評論 (5) | 編輯 收藏
2009年7月24日
我的網站是http://www.javaei.com,定位于收錄java開發領域最精華的博克,討論最熱烈的話題。Javaei中的ei取自美國工程索引的EI。網站于2009年5月6日開通,空間只購買了一年的時限,馬上就要到期了。
去年這時候,突然萌生了做一個自己的網站的想法。有了創意,很快就行動起來了,從設計到開發到域名構思到購買空間,大約兩周的時間,網站的雛形就上線了。后來逐步完善,融入了更多的想法。其實當時并沒有很多空余時間來做這個網站,只因一時興起,把所有其它的事情全放到一邊了。當時我除了工作外,正在準備兩個重要的考試,一個是系統分析師考試,一個是報考哈工大的博士招生考試。
Javaei網站核心功能是收集java開發領域最精華的博克、討論最熱烈的話題,其內容還包括數據庫開發、web前端開發等內容,每周更新一次,后來還加入了各大網站的一些優秀的序列連載博客;跟學生交流過程中,發現hta很有意思,又把網站每周的內容做成hta文件,供訪問者下載;再后來,我覺得把博克內容轉換成pdf很有必要,就提出了H2P,設計了H2P文件的xml格式、寫了一個簡單編輯H2P文件的工具,并且根據H2P文件,把網站每周的內容生成一個有目錄的pdf電子書,這種方式比某些網站推出的電子書生成功能先進的多,同時,還設計了xsl把H2P文件解析成樹形結構的形式,使網站可以以左邊樹形目錄右邊顯示正文的形式瀏覽。后來接受網友的建議,為網站增加了RSS訂閱功能。
網站的推廣工作也做了一些,主要是做了一些簡單的SEO、寫一些文章、和其它網站交換鏈接。在這里,向和我交換鏈接的網站表示衷心的感謝。也曾經想以郵件的方式推廣,從各學生那里要來了他們所在公司員工的email,但是這種大批量的群發郵件必須購買專門的郵件服務才可以,所以郵件推廣的方式就放棄了。為了推廣我的H2P,向各大網站發起過倡議,希望有更多的網站支持H2P,但回復者寥寥。我把H2P做了簡單的整理,向各開源網站提交,希望有更多的人來一起完善H2P,但是由于我自己精力有限,沒有時間作后續跟進。
在系統分析師考試的前一周,網站的更新暫停了下來,必須為考試做準備了。幸運的是,后來系統分析師通過了,但這個證書對我已經沒有意義了。網站最后一次更新是2009年9月12日,博士招生考試的時間已經臨近,我必須全力以赴的復習了,還是很幸運,我現在已經在上博了,網站依然沒有時間更新,而且現在正在忙著準備參加今年的blog track評測,網站的更新完全停下了。
網站域名和空間使用期限馬上就到了,寫這篇短文紀念我的網站,并希望有人能接手這個網站,把我前段時間的工作延續下去。
關于網站的介紹請參考我的序列文章——建站手記。
我的聯系方式qq:38295305,emal:yangjinfeng2010@gmail.com
posted @ 2010-05-03 21:11 summeryhrb 閱讀(2133) | 評論 (3) | 編輯 收藏
H2p是一種根據批量URL生成一個有書簽的pdf文檔的解決方案。H2p主要包括兩部分:h2p-file和h2p-tool。h2p-file是一個xml文件,該xml文件主要描述url的信息和url的層次結構,h2p-tool根據h2p-file生成有書簽的pdf文檔。還可以通過xsl直接展示url的層次結構,而且合作網站對h2p的支持也將變得簡單。
posted @ 2009-09-21 12:57 summeryhrb 閱讀(1074) | 評論 (0) | 編輯 收藏
昨天,javaei網站推出的h2p被開源中國收錄為開源項目,url為http://www.oschina.net/p/h2p。希望借助這個平臺,能有更多的人了解h2p。
H2p是一種根據批量URL生成一個有書簽的pdf文檔的解決方案。H2p主要包括兩部分:h2p-file和h2p-tool。h2p-file是一個xml文件,該xml文件主要描述url的信息和url的層次結構,h2p-tool根據h2p-file生成有書簽的pdf文檔。還可以通過xsl直接展示url的層次結構,而且合作網站對h2p的支持也將變得簡單。
posted @ 2009-09-17 13:50 summeryhrb 閱讀(206) | 評論 (0) | 編輯 收藏
JavaEI網站從建站到現在已經初具規模,具有穩定的訪問量,也產生了一定的影響力,尤其是h2p推出后,收到很多朋友的褒揚和鼓勵。
但由于站長自身的技術局限性,而且站長本人精力有限,所以希望有對javaei感興趣的同仁能加盟。
在軟件開發技術蓬勃發展的今天,JavaEI不局限于Java,希望向其他技術領域(C++、ruby、python、scala等等)發展,
為了JavaEI的進一步發展和壯大,誠邀對此目標感興趣的同仁,一起來發展JavaEI。對h2p感興趣的同仁,也歡迎與我們聯系,
我們的聯系方式是:
QQ: |
1027816029 |
Email: |
javaei@163.com |
posted @ 2009-09-16 13:13 summeryhrb 閱讀(1569) | 評論 (4) | 編輯 收藏
這些意見主要是三個方面的問題。第一:為什么要生成pdf;第二:h2p文件分成兩個,比較繁瑣,為什么不合成一個;第三:h2p-tool由c#和java實現,用起來不夠簡單,需要進一步完善。這三方面的意見提得非常好,在設計h2p之前,我其實是深思熟慮過的。
閱讀全文
posted @ 2009-08-31 13:20 summeryhrb 閱讀(1236) | 評論 (1) | 編輯 收藏
各網站管理員:
我是javaei網站的管理員,近段時間,我站提出h2p概念,并推出h2p應用。h2p是html to pdf的意思,具體地說是根據批量URL生成一個有書簽的pdf文檔的解決方案,該方案是一個完整的解決方案。我覺得h2p是互聯網應用的一種創新,值得推廣,經過調查,得到不少人的認可。但是javaei網站的影響力有限,推廣力度不夠,為了能讓h2p被大家認可并得到推廣,特向各位發起倡議,一起來完善并推廣這種應用,當然首先要得到各位的認可。H2p在技術上微不足道,重要意義體現在應用模式上。就像Rss一樣,rss本身技術上沒什么可說的,但應用模式上意義重大,rss從提出到被接受,也是經過了曲折的歷程。我私下里希望,h2p也能像rss那樣,被廣為接受,最終成為一種大家接受的應用模式而確立下來,更重要的是,這是中國的程序員發起并推廣的,這絕對是零的突破。
下面從三個方面來展開:h2p具體介紹,為什么要推廣h2p,h2p完善和推廣
一、H2P具體介紹
H2P是javaei網站發展的結果。H2P包括兩個部分:h2p-file和h2p-tool。h2p-file其實是xml文件,用來描述批量的URL,主要描述兩個信息,url的先后順序和層次結構(用于處理書簽)。h2p-tool是一個客戶端工具,用途目前主要有三個,根據dtd校驗h2p-file的合法性、編輯h2p-file和根據h2p-file生成有書簽的pdf文檔。
(1)h2p-file
在目前的方案中h2p-file包括兩個xml文件,href.h2p.xml和outline.h2p.xml。
href.h2p.xml示例如下
2 <href id="KxgYaRxG">
3 <value><![CDATA[http;//www.163.com]]></value>
4 </href>
5 <href id="53Bw5A32">
6 <value><![CDATA[http://www.sohu.com]]></value>
7 </href>
8 <href id="eyEis6ra">
9 <value><![CDATA[http;//news.163.com]]></value>
10 </href>
11 <href id="DMQoSN2t">
12 <value><![CDATA[http;//sports.163.com]]></value>
13 </href>
14 <href id="5vaf3LN7">
15 <value><![CDATA[http://news.sohu.com]]></value>
16 </href>
17 </href-info>
18
這個xml很簡單,之所以這樣描述,是因為URL通常會有&而這個符號不能出現在xml里,而且作為屬性的值,還不能用<![CDATA[]]>,所以就作為一個節點了。
h2p-tool根據這個xml生成的每個pdf文件,pdf文件的名字取id的值,后綴為pdf。
outline.h2p.xml示例如下
2 <chapter name="163" href="KxgYaRxG">
3 <chapter name="163新聞" href="eyEis6ra" />
4 <chapter name="163體育" href="DMQoSN2t" />
5 </chapter>
6 <chapter name="sohu" href="53Bw5A32">
7 <chapter name="sohu新聞" href="5vaf3LN7" />
8 </chapter>
9 </book>
10
這個xml描述了每個pdf合并的順序,href的值和上一個xml的id值對應,chapter標簽嵌套的層次就是書簽的層次,name的值就是書簽的名稱。H2p-tool根據這個xml把每個pdf合并成一個pdf,并生成書簽。
考慮到h2p的發展,完全有理由把這兩個xml文件合并成一個xml文件,可以定義成如下格式:
2 <chapter name="163">
3 <href><![CDATA[http://www.163.com]]></href>
4 <chapter name="163新聞">
5 <href><![CDATA[http://news.163.com]]></href>
6 </chapter>
7 <chapter name="163體育">
8 <href><![CDATA[http://sports.163.com]]></href>
9 </chapter>
10 </chapter>
11 <chapter name="sohu">
12 <href><![CDATA[http://www.sohu.com]]></href>
13 <chapter name="sohu新聞">
14 <href><![CDATA[http://news.sohu.com]]></href>
15 </chapter>
16 </chapter>
17 </book>
18
對應的dtd可以定義如下
2 <!ATTLIST book name CDATA #REQUIRED>
3 <!ELEMENT chapter (chapter*)>
4 <!ATTLIST chapter name CDATA #REQUIRED>
5 <!ATTLIST chapter href CDATA #IMPLIED>
6
在這個方案當中,h2p-file具有十分重要的意義,它作為一種資源被提供下載,也可以在線使用,h2p-file的格式作為一種協議,可以被各大網站支持,
(2)h2p-tool
h2p-tool是處理h2p-file的客戶端工具,目前h2p-tool的功能主要有以下三個方面
根據dtd校驗h2p-file的合法性,
編輯h2p-file編輯功能包括新建、修改、保存,
根據h2p-file生成有書簽的pdf文檔,先根據。
目前h2p-tool一部分是用C#開發的,一部分是用Java開發的。不管h2p-tool用什么開發,通過什么方式使用(在線或離線的),只要能處理h2p-file即可。
h2p-tool的功能還可以有如下擴充:
合并h2p-file,解析h2p-file在線閱讀(這一點類似于google reader),也可以不需要h2p-tool,直接用xsl展示h2p-file。
下圖是h2p生成pdf的一個示例。
二、為什么要推廣H2P
其實就是要回答h2p有什么價值。自從有了h2p構想以來,我一直在思考這個問題。
從以下幾個方面說明我的思考:
(1)各大網站已經積累了豐富的資料,隨著pdf的風行,導出pdf是很多用戶的需求,提供pdf導出功能的網站還不多,實際上技術已很成熟,原因在于沒有很好的模式。導出pdf是個性需求,網站無法知道用戶需要把哪些導出成pdf,而且在服務器端生成pdf,不僅會增加服務器端壓力。而且會增加管理員工作量。而如果網站只是提供h2p-file下載,由用戶利用第三方工具(也即h2p-tool)自行編輯h2p-file,自行生成pdf,上面的問題就解決了,服務器端壓力沒有了,只需生成h2p-file,用戶可以根據自己的需要對h2p-file進行編輯,生成pdf既滿足了個性需求,同時把生成pdf的壓力轉移了用戶,這點小壓力對單個用戶是可以接受的。
(2)如果網站想支持pdf導出的話,那么只需提供h2p-file,就像rss一樣,網站要提供訂閱功能,只需提供rss就行
(3)網站可以根據用戶的請求動態的生成h2p-file,從而間接的實現根據請求動態生成pdf的功能,這一點意義非凡。
(4)網站提供h2p-file,會導致對網站內容的整理和挖掘,從而促進站內智能搜索的應用。
(5)滿足了用戶的便捷,就是贏利的開始。關于盈利,在網站廣告投放這方面一點都不會受影響,pdf超強的表現力足可以完美的表現廣告效果,在h2p-file里可以適當放一些廣告鏈接,同時,h2p-tool上也可以投放廣告,h2p-tool在生成pdf的時候也能再適當位置加入廣告。把廣告固化到pdf文件里,這種方式比在瀏覽器里顯示的廣告生命周期要長得多,因為pdf是只讀的。
(6)最后一點,是意義上的而非價值上的,那就是如果h2p推廣開了,被人們接受了,那么這將是第一個由中國的程序員發起并推廣的一個協議,一個互聯網應用模式。Bbs、blog、wiki、twitter、rss等等,耳熟能詳的東西,有技術含量嗎?真正有價值的是這些應用模式,正是這些應用模式推動著互聯網的飛速發展。而搜索引擎卻集優秀的應用模式和先進的理論思想與技術于一身。
(7)有可能帶來其他方面的影響,比如網站內容的提煉和聚合。
三、H2P完善和推廣
H2P剛剛產生,是個雛兒,盡管核心思想已經體現出來了,但在形式上和應用上還有需要大幅度的完善。可從以下幾個方面展開:
(1)齊心協力共同制定和完善h2p-file的格式,使h2p應用更加便捷和豐富。h2p-file可以分成兩個文件獨立描述,也可以合為一個,前面已經闡述了。
(2)確定了h2p-file的格式,進一步完善和重新開發h2p-tool,h2p-tool可以有三個方向,一個方向就是目前的方向,開發一個客戶端工具,并且使用瀏覽器的內核,把瀏覽器的功能集成進來,在java開發方面已經有了JDIC這么一個框架了;第二個方向就是類似google reader的方向,在線解析h2p-file,以樹形結構顯示連接,提供在線的便捷閱讀;第三個方向采取最簡單的方式,直接用xsl顯示h2p-file。
(3)博克文章、論壇帖子一般至少有三分之一的內容是廣告或圖片,直接根據URL生成的pdf就顯得很臃腫,這是這個方案的缺陷,解決這個問題最簡單的思路就是網站針對h2p應用再提供一個URL,根據這個URL得到的內容主要是文字形式的內容,之所以說它簡單,是因為現在的界面的輸出大多采用的模板技術,在模板上稍作變動,就可以輸出沒有太多廣告和圖片的內容。但考慮到網站需要投放廣告,可以允許有少量廣告,從而就產生了h2p-file質量這個概念,圖片越少廣告越少,那么生成的pdf就越干凈體積就越小,h2p-file質量就越高;反之,生成的pdf就像現在的報紙一樣,實質內容淹沒在廣告里而且體積還很大,h2p-file質量就越低。
(4)如果上面的思路得到了采納,那么根據一條URL生成單個pdf 的技術就能很好的解決。目前的h2p-tool在這一部分的開發用的是一個C#組件(生成的pdf有水印,我估計這個組件是調用了IE瀏覽器的功能)。之所以采用這個組件,是因為要保證生成的pdf展現效果和瀏覽器里的效果完全相同,這無異于做一個瀏覽器,難度可想而知。如果專門為h2p應用再提供一個URL,根據這個URL得到的內容主要是文字形式的內容,沒有復雜的標簽和樣式,這種情況下,使用iText等框架生成pdf是可行的。Javaeye網站提供的pdf下載和電字書制作得到的pdf就是這種情況,提取博克文章的主體內容生成pdf。
(5)各網站對h2p的支持很簡單,只需發布網站內容的h2p-file即可,h2p-file從此就以協議或資源的身份出現在互聯網中。
以上三方面的內容分別闡述了h2p應用模式、h2p的意義和價值和h2p完善和發展的方向,回答了為什么要發起這個h2p倡議。敬請各網站管理員考慮我的意見,推動這個新的h2p應用,不僅會各網站帶來新的贏利,而且這將是我們這些中國程序員的集體榮耀。
2009-8-7
Javaei網站
相關介紹:
投票——你認為h2p實用嗎
posted @ 2009-08-12 09:31 summeryhrb 閱讀(1773) | 評論 (5) | 編輯 收藏
H2P在很多人看來是個令人激動的方案,而且javaei網站提供h2p文件資源又是相當自然的一件事情,一想到h2p,我都很高興,因為這個方案是我提出來的,盡管實現h2p的技術很成熟。在這篇文章里,說一下實現h2p所涉及到的技術吧,既有核心的j2se應用,又有開源框架的使用。
(1)dtd的應用,為了規范使用者正確的編輯h2p文件,我定義了h2p文件的dtd,當然我還有一個奢望,希望能成為一種規范。
(2)使用根據dtd校驗xml(h2p文件),h2p-tool需要解析xml(h2p文件)提取url生成pdf并合并,不合法的xml文件肯定不能正確的生成pdf,所以必須對xml文件進行校驗。
(3)xml解析,編輯h2p,用JTree展示xml的樹形結構,這一部分用的是dom解析(具體的是JDom),獲取書簽的目錄結構并構建書簽的數據結構,這一部分用的是SAX解析,并借助于Stack。保存xml文件用的是dom。
(4)swing的應用,h2p-tool編輯功能用的是swing,展示并編輯樹形結構用的是JTree
(5)C#組件,根據url生成單個的pdf,用的是c#組件,并在vs.net開發平臺上進行了簡單的開發。Javaei提供的h2p文件通常包含幾十條url,單就每條url生成pdf也需要一點時間,何況是幾十條,所以運用多線程是必須的方式,研究了一下c#的多線程(c#的多線程方式也很有意思,感覺比java的簡單),可是別人的組件在多線程下表現欠佳,無賴之下,只好還是采用單線程。本想用jni把c#的調用封裝起來,但經過研究,據說比較麻煩,就放棄了,所以采用簡單的辦法,用批處理來調用。
(6)iText的應用,生成單個pdf頁面以及合并pdf生成書簽用的是iText。在合并的時候,也研究過另一個框架就是pdfbox。IText確實強悍,理論上,應用iText可以實現任意效果的輸出,應該可以實現瀏覽器的效果,但比較麻煩。iText在生成書簽這一塊,做得相當漂亮,書簽可以指向任意一個頁面的任意部分,還可以設置書簽對應頁面的打開效果,對書簽的開發也很便利,直接構造書簽的樹形數據結構我認為是最簡單的,iText還支持用xml描述書簽的結構。
(7)Classloader的應用,h2p-tool的運行依賴于很多的jar包,通常我們開發的時候,都是把jar包放在指定的目錄,應用服務器會去加載依賴的jar包。在h2p-tool中,需要自己處理jar包。因為這是提供給用戶使用的工具,不應要求使用者去配置除了jdk環境變量以外的變量。所以解決jar包加載的問題通常的辦法是在主類(帶有main方法的類)所在jar包里的Manifest.mf文件里寫上jar包的相對路徑。這種辦法不太靈活,所以在h2p-tool中,對類加載進行了改寫,使其自動加載指定目錄下的jar包。
(8)jvm參數的應用,因為要合并的pdf很多,再合并的時候會占用大量內存,很容易out of memery,所以在批處理文件里,需要配置適當的jvm參數,主要是兩個:-Xmx512m -Xms512m,這兩個參數的意義這里不再贅述,網上有很多的。
總結一下,實現h2p-tool的技術細節貌似很多,實則很少,除了JDOm和iText,再就是j2se核心的東西了,出列上面列到的,還包括流、字符集的處理等。H2p-tool及源代碼下載。posted @ 2009-07-30 14:44 summeryhrb 閱讀(1659) | 評論 (5) | 編輯 收藏
《根據批量URL生成有書簽的pdf文檔的解決方案》一文作為一個完整的解決方案,主要有四個要點
(1)詳細描述了解決方案的思路,
(2)提出了一種描述URL的xml文件,稱之為h2p文件
(3)根據h2p文件生成pdf文檔的工具稱為h2p-tool,同時h2p-tool還能對h2p文件進行編輯,從而制作自己的pdf電子書。
(4)h2p文件是該解決方案的資源文件,收集url是件費時費力的事情,所以該解決方案還提供了下載h2p文件的鏈接
H2p是我自己定義的一種xml格式,我私下里是希望這種格式能夠被大家接受,所以我定義了dtd,并且開發了一個編輯h2p文件的工具h2p-tool,而且在javaei網站上提供了大量的h2p文件作為資源下載。有了h2p,制作自己的pdf電子書將變得很容易。
如果想讓h2p為大家所接受,h2p必須不斷的發展。因為現在h2p應用還是很簡單很原始。主要表現在,生成的pdf是原html的完全再現,這是他的優點也是他的弱點。
說是優點,是因為pdf的呈現效果和在瀏覽器里風格一樣。
說是缺點,是因為既然生成了pdf,我們希望pdf里主要突出文章的主題內容,而不希望有原來網頁里的那么多的圖片和廣告,而且還希望原來是分頁的內容自動合并到一個pdf里。
所以,就此缺點,我提出兩個可能的展望。
(1)制定一種規范,該規范要求網站為每篇博客提供一個為h2p專用的鏈接(姑且叫h2p鏈接吧),根據這個鏈接打開的博客文章是沒有廣告的,那么h2p文件的連接采用這種h2p鏈接,生成的pdf就沒有上述的缺點了。這個想法可能與網站的盈利相悖,因為如果提供h2p鏈接,很多人將會之點擊h2p鏈接,這樣,就避開了網站投放的廣告。
(2)第二種可能的展望就是,各網站提供一個webservice的編程接口,通過該編程接口,用程序訪問每篇博客文章,這樣得到的文章就是沒有廣告的干凈的文章。
這兩種展望的目的主要是為了生成干凈的pdf文檔,顯然,要實現這兩個展望是很困難的,除非大家都很接受h2p這個思路,并且對這種應用很迫切,才會有人來大力推動。想想rss的普及,那也是一波三折,最終還是因為其便捷的使用模式而被大家所接受。
私下里是希望大家能接受并喜歡h2p的。
posted @ 2009-07-29 14:43 summeryhrb 閱讀(1435) | 評論 (2) | 編輯 收藏
posted @ 2009-07-24 17:08 summeryhrb 閱讀(1601) | 評論 (3) | 編輯 收藏