部落格客戶端如何實現
像我們這種基本沒接觸過web開發的人,可能完全沒有思路去實現乙個部落格客戶端。事實上
實現起來非常簡單。
使用過其他部落格客戶端(例如windows live writer)的人肯定知道metaweblog api,在配
置客戶端的時候需要填入。例如cppblog的這個位址就是
這個頁面展示了一些api
說明。這些api就是部落格客戶端和伺服器進行操作通訊的介面。意思是說,伺服器端提供這
這些介面,我們的客戶端呼叫這些介面即可。例如:
blogger.deletepost,呼叫該介面即可刪除一篇部落格文章
但是客戶端如何呼叫到這個介面呢?這需要通過一種新的技術(或者說標準),即 xml rpc
。rpc大家應該清楚,xml rpc其實說白了, 就是把介面呼叫的細則塞進 http
請求發給web伺服器,伺服器接收請求完成操作後再把結果以http回應的形式丟給客戶端,
即完成了一次介面呼叫 。
至於http請求回應的細則就不提了,無非就是一些特殊格式的資料,通過tcp連線與伺服器
互動這些資料。
所以,基本上,整個過程還是非常簡單。如何來將呼叫細節塞進http請求,則是以xml rpc
標準來做,其格式正好是xml格式。舉個例子吧:
title_or_id
當然這部分資料之前就是若干http請求的資料。伺服器回應也是以xml格式組織:
welcome to zope.org
我們的部落格客戶端所要做的,就是把這些部落格發布相關的操作封裝起來提供給使用者。底層
實現主要包括http請求、xml-rpc的組織等。何況,這兩部分在各個語言裡都有大量的庫存
在,lisp自然也有。
我這裡直接選取了lisp的乙個xml-rpc庫:s-xml-rpc,基本上百來行**就可以把各個功
能跑一遍。例如以下lisp**就實現了通過s-xml-rpc刪除cppblog的一篇文章:
(defun delete-post (postid)
(rpc-call
"blogger.deletepost"
postid
"kevinlynx"
"password"
t))發布部落格也很簡單,根據metaweblog api介面的說明,發布部落格時需要填充乙個結構體。但
主要涉及到的資料僅包括:文章內容、文章標題、文章分類(可選):
(defun new-post (title context &optional (cates))
(rpc-call
"metaweblog.newpost"
"kevinlynx"
"password"
(new-post-struct title context cates)
t))metaweblog api裡恰有api提供:
(defun new-media-object (filename)
(rpc-call
"metaweblog.newmediaobject"
"kevinlynx"
"password"
(new-media-object-struct filename)))
該函式讀入檔案,然後呼叫metaweblog.newmediaobject介面,即可完成上傳。上傳成
LISP 函式型程式語言
lisp有很多種方言,各個實現中的語言不完全一樣。1980年代guy l.steele編寫了common lisp試圖進行標準化,這個標準被大多數直譯器和編譯器所接受。在unix linux系統中,還有一種和emacs一起的emacs lisp 而emacs正是用lisp編寫的 非常流行,並建立了自...
lisp正負調換 AUTOLISP程式設計技巧
對由直線和圓弧組成的機械圖形人們已經作了很多研究,可是計算機便捷繪製機械圖的辦法並不多.福大機械設計製圖工具箱提出獨特的作圖方法,是不同於引數化設計的繪圖新概念,正是靠這些獨特能使機械設計中大量存在的軸與軸上零件等的設計繪圖變得分簡單和快捷.下面簡介我們提出的畫機械圖新概念.歡迎批評指正.1 繪製階...
cad數門窗的lisp 浩辰建築CAD教程 門窗篇
cad軟體中的門窗是一種附屬於牆體並需要在牆上開啟洞口,帶有編號的cad自定義物件,它包括通透的和不通透的牆洞在內 門窗和牆體建立了智慧型聯動關係,門窗插入牆體後,牆體的外觀幾何尺寸不變,但牆體物件的粉刷面積 開洞面積已經立刻更新以備查詢。門窗和其它自定義物件一樣可以用cad的命令和夾點編輯修改,並...