第一篇:Nutch二次開發(fā)總結(jié)
1.1 信息源選擇及規(guī)范制定
Nutch通過制定相應(yīng)的URL規(guī)則來達(dá)到對限定的URL進(jìn)行爬取,即過濾信息。默認(rèn)情況下可以在相關(guān)的配置文件中進(jìn)行配置,它用正則表達(dá)式來規(guī)范URL。當(dāng)然,還可以自己編寫相應(yīng)的插件等來實(shí)現(xiàn)所制定的URL規(guī)范。
1.2 信息預(yù)處理
這里的信息預(yù)處理是指將Nutch爬蟲所下載下來的內(nèi)容轉(zhuǎn)變?yōu)镹utch索引器所能調(diào)用的文本。信息預(yù)處理過程主要涉及到如下內(nèi)容:
(1)格式識(shí)別并抽取文本。一般情況下,Nutch爬蟲下載下來的文檔是HTML,但是網(wǎng)絡(luò)上還存在諸多類型的其他文本:txt、doc、pdf、xls、rtf等等,甚至還有多媒體的文檔格式。在進(jìn)行索引之前,必然從這些下載下來的文件中抽取出文本信息,針對不同的格式文檔抽取方式也不同。Nutch默認(rèn)對HTML、TXT能直接處理,而其他的有些已經(jīng)實(shí)現(xiàn)但并沒有加載。目前有很多開源軟件可以抽取文本信息,如word文檔的poi、pdf文檔的pdf-reader等等。在二次開發(fā)時(shí),需要對相應(yīng)的文檔格式進(jìn)行編寫抽取文本工具。
(2)信息過濾。這里的信息過濾是指從抽取的文本中濾去那些不希望使其存在的文本內(nèi)容,這個(gè)過程也不一定是獨(dú)立的,可能會(huì)與上一個(gè)過程存在相交之處。舉個(gè)實(shí)例,比如針對某一個(gè)網(wǎng)站的某一部分網(wǎng)頁中的部分區(qū)域不希望被索引,那么可以編寫一個(gè)相關(guān)的插件來實(shí)現(xiàn)對這個(gè)網(wǎng)站的這類網(wǎng)頁進(jìn)行過濾,去除這一區(qū)域內(nèi)的內(nèi)容。
(3)編碼格式的轉(zhuǎn)換。網(wǎng)絡(luò)上的信息編碼格式五花八門,并不是特別規(guī)范。一般情況下,Nutch處理后都能實(shí)現(xiàn)編碼的統(tǒng)一,但是有些信息卻不能很好地被默認(rèn)程序轉(zhuǎn)換,這時(shí)候就應(yīng)當(dāng)對Nutch進(jìn)行擴(kuò)展,以實(shí)現(xiàn)編碼的轉(zhuǎn)換。
1.3 索引本土化構(gòu)建
以過信息預(yù)處理后的信息可以直接為Nutch索引。在索引過程中,需要考慮的因素也有很多。一是中文類語言的分詞問題。這一點(diǎn)在前面實(shí)驗(yàn)中已有詳細(xì)的分析并做了一些總結(jié)。二是信息的進(jìn)一步處理,這一過程是在尋找最能表達(dá)原文語義的語詞集合。另外還有一些其他相關(guān)技術(shù)如詞干提取、停止詞、本體等等。這個(gè)過程是相當(dāng)重要的一個(gè)過程,直接決定了查詢服務(wù)的效果。
1.4 排序規(guī)則制定
排序規(guī)則的制定并不僅僅影響到查詢結(jié)果,可以說它貫穿在了整個(gè)搜索引擎的工作過程中。因?yàn)槟苡绊懪判蛞?guī)則的因素有很多,比如說與用戶需求的相關(guān)性、系統(tǒng)業(yè)務(wù)需求等,具體的有如語詞在文獻(xiàn)中的詞頻、在整個(gè)文獻(xiàn)空間的詞頻、語詞位置等,甚至是信息時(shí)間都會(huì)影響到排序。因此在二次開發(fā)時(shí),需要根據(jù)需求,針對性地制定排序規(guī)則,并把它反映在系統(tǒng)中。
1.5 查詢系統(tǒng)及用戶界面
Nutch的查詢系統(tǒng)是發(fā)布在Tomcat下的,它提供了一種類似于google的查詢界面,并且支持多語言。在實(shí)際的二次開發(fā)中,并不一定支持多種語言,可針對某一種語言進(jìn)行改寫。另外還可以對查詢過程進(jìn)行二次改發(fā),改變它的查詢方式、添加分頁、增加summery等。對于用戶接口界面,則根據(jù)實(shí)際情況改寫即可。
第二篇:Discuz二次開發(fā)基本知識(shí)總結(jié)
隨筆-12文章-0評論-46
Discuz二次開發(fā)基本知識(shí)總結(jié)
一)Discuz!的文件系統(tǒng)目錄
注:想搞DZ開發(fā),就得弄懂DZ中每個(gè)文件的功能。
a)Admin:后臺(tái)管理功能模塊
b)Api:DZ系統(tǒng)與其它系統(tǒng)之間接口程序
c)Archiver:DZ中,用以搜索引擎優(yōu)化的無圖版
d)Attachments:DZ中 ,用戶上傳附件的存放目錄
e)Customavatars:DZ中,用戶自定義頭像的目錄
f)Forumdata:DZ緩存數(shù)據(jù)的存放目錄
g)Images:DZ模板中的圖片存放目錄
h)Include:DZ常用函數(shù)庫,基本功能模塊目錄
i)Ipdata:DZ統(tǒng)計(jì)IP來路用的數(shù)據(jù)
j)Plugins:DZ插件信息的存放目錄
k)Templates:DZ模板文件的存放目錄
l)Wap:DZ無線,Wap程序處理目錄
二)必須記熟Discuz!數(shù)據(jù)庫設(shè)計(jì)的每個(gè)表的功能,每個(gè)表中每個(gè)字段的功能。關(guān)于DZ數(shù)據(jù)庫設(shè)計(jì)文檔,請參閱DZ相關(guān)的項(xiàng)目文檔(請從本貼附件中下載)
三)Discuz!的流程控制
a)后臺(tái)流程控:DZ后臺(tái)所有的功能,均需要注冊到admincp.php文件,每個(gè)功能都至少有一個(gè)或一個(gè)以上的Action(動(dòng)作),在admincp.php中,可以定義Action的執(zhí)行權(quán)限,分別為:“admin==1”管理員,或“admin==2 || admin==3”超級版主和版主,每個(gè)Action對應(yīng)一個(gè)腳本文件,腳本文件的命名為action.inc.php(*.inc.php),并存放在admin目錄下,如執(zhí)行:admincp.php?action=dodo,相當(dāng)于執(zhí)行admin目錄下的dodo.inc.php文件
b)前臺(tái)流程控制:前臺(tái)的流程控制比較簡單:流程是自由的,如: 首頁:index.php
會(huì)員注冊:register.php;
會(huì)員登錄:logging.php
發(fā)貼程序:post.php
會(huì)員信息:member.php
論壇內(nèi)容:forumdisplay.php
查看貼子:viewthread.php
…大部分功能,此處不一一列出…
c)DZ根目下的config.inc.php屬于整個(gè)DZ系統(tǒng)的配置文件
四)Discuz!的數(shù)據(jù)處理過程
a)DZ對mysql的數(shù)據(jù)庫操作處理全部封裝在dbstuff(db_mysql.class.php)類中
b)所在的外部數(shù)據(jù)均通過“daddslashes()”初步過濾,然后再過濾,再根據(jù)需要處理
五)Discuz!的顯示控制(網(wǎng)站多樣式風(fēng)格輸出)
a)顯示層就是大家通常所看到的網(wǎng)站風(fēng)格了。DZ中每套風(fēng)絡(luò)分別在templates及images下對應(yīng)一個(gè)風(fēng)格文件的存放目錄。網(wǎng)站風(fēng)格的制作,請參閱詳細(xì)的DZ風(fēng)格制作文檔
b)DZ網(wǎng)站風(fēng)格文件處理的原理:其實(shí)很簡單,DZ使用template.func.php中的parse_template()以PHP正則運(yùn)算把htm模文件中的模板標(biāo)簽,轉(zhuǎn)換成了PHP代碼,并根據(jù)styleid保存在forumdata/templates下,這個(gè)有點(diǎn)像Smarty中的技術(shù)。
六)DZ中的語言處理
a)DZ前臺(tái)及后臺(tái)中、英語言的實(shí)現(xiàn),均是把語句定義成了語變量,然后在模板輸入,語句變量的賦值,均放在模板目錄中的*.lang.php文件中,DZ在生成網(wǎng)站風(fēng)格時(shí)就加載了這相應(yīng)的語言包。
七)DZ如何處理用戶信息(存取、計(jì)算、更新過程)
新手要做二次開發(fā),都必須掌握這數(shù)組中,每個(gè)數(shù)組元素的意義。
a)DZ的基本信息,如用戶信息,Session信息存在如下變量中: a).$_DCACHE
b).$_COOKIE
c).$_DCOOKIE
d).$_DSESSION
e).$_DPLUGIN
b)可以通過print_r($GLOBALS),打印全部變量
八)DZ中緩存處理機(jī)制
a)DZ中緩存處理過程都放在“cache.func.php”中,DZ的緩存處理比較簡單,其原理是把一個(gè)數(shù)組轉(zhuǎn)換成了PHP代碼,并保存在緩存目錄下,大家可打開緩存文件查看便知。
b)使用方法:如果在新開的功能中,需要緩存某部分?jǐn)?shù)據(jù),基本上就是:
1)定義并注冊緩存名字。
2)從數(shù)據(jù)讀取相應(yīng)的數(shù)據(jù)。
3)數(shù)據(jù)在寫入緩存前作相應(yīng)處理。
4)最后寫入緩存。
具體操作,可以看文件中的代碼,做相應(yīng)的修改即可
九)DZ中模板處理機(jī)制
a)DZ獨(dú)創(chuàng)的模板處理技術(shù),類似于Smarty中的模板處理,只是具體算法,過程不同,Smarty是一種重型模板引擎方案。其原理都是把模板中的變量轉(zhuǎn)換成相應(yīng)的PHP代碼,這個(gè)過程實(shí)際是模訪JAVA中的一次編譯,多處運(yùn)行。
十)DZ中權(quán)限處理機(jī)制
a)對于DZ中前臺(tái)的每相action都有$discuz_action定義,DZ根據(jù)用戶所在的用戶組來判定用戶是否具有相應(yīng)操作$discuz_action的權(quán)限。至于后臺(tái)的權(quán)限權(quán)驗(yàn)證,則更簡單了,依據(jù)“admin==1”來確定的十一)DZ中如何實(shí)現(xiàn)URL靜態(tài)化
a)DZ中的靜態(tài)有兩法,只要懂ReWrite規(guī)劃的朋友,一看就知。
十二)DZ獨(dú)創(chuàng)的HTML編輯器,如何截取并使用,如果進(jìn)行Discuz!代和Html代碼的轉(zhuǎn)換
a)這也算是DZ比較牛的一項(xiàng)技術(shù)了,在早期版中,因DZ編輯器的不足,使得很多用戶放棄了DZ。實(shí)現(xiàn)原理:通過JS把用的一些操作轉(zhuǎn)換成了DZ的bbcode代碼。這樣子提交了安全性,將帶有bbcode代碼的內(nèi)容存入數(shù)據(jù),在用戶打開頁頁時(shí),又把bbcode代碼轉(zhuǎn)換成html代碼
本貼聲明:由于時(shí)間有限,本貼只有關(guān)于DZ部分功能的簡短分析。若各位網(wǎng)友,對本文感興趣并想更為深入了解DZ,請?jiān)诒举N后回貼!我將盡可能多的DZ技術(shù)分析寫在本文,不斷更新本貼內(nèi)容。
部分文件說明:
admincp.php 管理
ajax.php ajax功能
announcement.php 公告
attachment 附件
board.php 真正的首頁
config.inc.php 這個(gè)是配置文件
corpus.php 論壇文集
digest.php 精華帖子
discuz_version.php 論壇版本號
faq.php 問題列表
forumdisplay.php 論壇列表
index.php 跳轉(zhuǎn)頁面
loggin.php 認(rèn)證頁面(登錄退出)mail_config.inc.php 郵件配置 member.php 用戶操作
memcp.php 個(gè)人控制面版
misc.php 零碎功能
my.php 我的帖子
plugin.php 插件
pm.php 短信
post.php 發(fā)送帖子
redirect.php 頁面重定向
register.php 注冊
robots.txt 限制搜索
rss.php rss信息發(fā)布
search.php 論壇查詢
secode.php 驗(yàn)證碼
stats.php 統(tǒng)計(jì)
topic.php 首頁論壇專題
topicadmin 主題管理
viewpro.php 顯示個(gè)人信息
viewthread.php 主題顯示
文件夾
admin 管理
api 接口
archiver 文檔
attachments 附件
customavatars 自定義表情
forumdata 論壇數(shù)據(jù)包含緩沖數(shù)據(jù) images 圖片
include 公共文件
install 安裝包
ipdata ip地址
plugins 插件
readme 幫助文檔
templates 模板
utilities 工具包
wap 手機(jī)網(wǎng)站
文件夾include
advertisements.inc.php 廣告管理 ajax.js ajax相關(guān)
attachment.func.php 附件函數(shù)集 bbscode.js 論壇表情
cache.fun.php 緩存函數(shù)集
category.inc.php 欄目
chinese.class.php
common.inc.php 最主要的頭文件 common.js 最主要的js文件 corpus.func.php 論壇文集函數(shù) counter.inc.php 論壇計(jì)數(shù)
cron.func.php 計(jì)劃任務(wù)
db_mysql.class.php 數(shù)據(jù)庫
db_mysql_error.inc.php 數(shù)據(jù)庫錯(cuò)誤 debug.php 調(diào)試信息
discuzcode.func.php 論壇代碼 editor.func.php 編輯器
editor.js 編輯器
editpost.inc.php 編輯帖子
floatadv.js 浮動(dòng)廣告
forum.func.php 論壇函數(shù)集 global.func.php 全局函數(shù)
menu.js 菜單
misc.func.php 其它
newreply.inc.php 新回復(fù)
newthread.inc.php 新主題 *pmprompt.inc.php
post.fun.php 發(fā)表主題
printable.inc.php 論壇打印 qihoo.js qihoo
relatethreads.inc.php 相關(guān)主題 security.inc.php 安全
sendmail.inc.php 郵件
serverbusy.htm 系統(tǒng)繁忙
template.func.php 模板
threadpay.inc.php 購買帖子
第三篇:AutoCAD二次開發(fā)教程復(fù)習(xí)總結(jié)
紅色部分為答案空白或不確定
CAD復(fù)習(xí)題及答案
1、AutoLISP
2、VisualLISP
3、VBA
4、ADS
5、ObjectARX
紅色部分為答案空白或不確定
6、.NET 托管API
7、ActiveX Automation
紅色部分為答案空白或不確定
8、Visual Java
1、AutoCAD二次開發(fā)方式有哪些?各自優(yōu)缺點(diǎn)?
2、AutoCAD 中實(shí)現(xiàn)ObjectARX.NET API 的有哪些優(yōu)點(diǎn)?
3、AutoCAD.NET API 的三個(gè)主要的DLL文件是?
4、簡述ObjectARX.NET API所對應(yīng)的VS.NET版本。
5、簡述AutoCAD數(shù)據(jù)庫的組成。
AutoCAD數(shù)據(jù)庫是用來管理當(dāng)前圖形中的圖元實(shí)體和其他非幾何信息的容器對象,一個(gè)AutoCAD數(shù)據(jù)庫包含一套固定的符號表和命名的對象詞典,每一個(gè)符號表包含一個(gè)特定符號
紅色部分為答案空白或不確定
表記錄類的實(shí)例,例如層表(AcDbLayerTable)中包含層表的記錄,塊表(AcDbBlockTable)中包含塊表記錄,所有的AutoCAD實(shí)體均包含于塊表記錄中。詞典提供了一種通用容器來存儲(chǔ)對象,它可以保存AcDbObject對象以及其它對象,也可以創(chuàng)建新的對象詞典,將新的數(shù)據(jù)庫元素加入其中。
AutoCAD數(shù)據(jù)庫的組成如圖所示,從圖中我們可以看出數(shù)據(jù)庫主要由一下內(nèi)容組成: 1)層表AcDbLayerTable和層表記錄AcDbLayerTableRecord。
2)塊表AcDbBlockTable和塊表記錄AcDbBlockTableRecord。AutoCAD中所有可見實(shí)體均存儲(chǔ)在塊表記錄。塊表中包含有兩條特殊的記錄*MODEL_SPACE(模型空間)和*PAPER_SPACE(圖紙空間)。
3)其他符號表和符號表記錄。
4)命名對象詞典。缺省情況下當(dāng)AutoCAD數(shù)據(jù)庫被建立以后,詞典中就包括了組詞典以及MILINE樣式詞典。
5)符號表和命名對象詞典都是存儲(chǔ)數(shù)據(jù)庫對象的容器,用于組織和管理數(shù)據(jù)庫對象。AutoCAD數(shù)據(jù)庫通常有9個(gè)固定類型的符號表,開發(fā)者不能向數(shù)據(jù)庫中新增或者刪除任何一種類型符號表,能實(shí)現(xiàn)的是向符號表中添加對應(yīng)的符號表記錄。
6、Application 對象是 AutoCAD.NET API 對象模型的根對象,它包括哪些部分?
Application 對象是層次結(jié)構(gòu)的根,而且它提供對 AutoCAD 的主窗口的訪問。
紅色部分為答案空白或不確定
7、列出所有圖形與非圖形對象,他們有什么區(qū)別?
圖形對象,也稱為圖元,是組成圖形的可見對象(例如直線、圓、光柵圖像等):
1)添加圖形對象到圖形中是通過正確的塊表記錄引用,然后使用 AppendEntity 方法將一個(gè)新對象添加到圖形中來完成的
2)要修改或查詢這些對象,請從正確的塊表記錄獲得對象引用,然后使用對象本身的方法或特性。每一個(gè)圖形對象都擁有允許應(yīng)用程序執(zhí)行大部分 AutoCAD 編輯命令的方法,例如復(fù)制、刪除、移動(dòng)、鏡像等
這些對象還提供了一些方法,用來設(shè)置和檢索對象的擴(kuò)展數(shù)據(jù)(xdata),亮顯和更新對象,以及從另外的圖元設(shè)置屬性。大多數(shù)圖形對象具有諸如 LayerId、LinetypeId、Color 和 Handle 之類的典型特性。每個(gè)對象也具有一些特有的特性,例如 Center、StartPoint、Radius 和 FitTolerance 非圖形對象是指屬于圖形的一部分但不可見的(提示性的)對象,例如 Layers、Linetypes、DimStyles、TableStyle 等
1)若要?jiǎng)?chuàng)建新的符號表記錄,請使用表所有者的 Add 方法或使用 SetAt 方法添加一個(gè)字典到命令對象字典中
2)要修改或查詢這些對象,請使用對象本身的方法或特性。每一個(gè)非圖形對象都有用于特定目的的方法和特性,都有設(shè)置和檢索擴(kuò)展數(shù)據(jù)以及刪除自己的方法
8、如何實(shí)現(xiàn)對AutoCAD數(shù)據(jù)庫圖形對象的訪問?給出實(shí)例代碼。
大部分的集合和容器對象都是通過 Document 或 Database 對象訪問的。Document 和 Database 對象都包含一些相應(yīng)的特性用來訪問大多數(shù)可用集合的對象或?qū)ο?ID。例如,以下代碼定義一個(gè)變量,并將其設(shè)置為當(dāng)前圖形的 LayersTable 對象:
紅色部分為答案空白或不確定
9、AutoCAD中集合對象是指?列舉出部分實(shí)例。
10、如何定義一個(gè)用戶命令?CommandMethod 所接受的屬性包括哪些?
命令和 AutoLISP 函數(shù)可以通過使用兩個(gè)屬性:CommandMethod 和 LispFunction 就可以在 AutoCAD.NET API 中被定義
使用 CommandMethod 屬性定義一個(gè)命令,CommandMethod 屬性期待一個(gè)字符串值,它將當(dāng)作被定義命令的全局名稱。和全局命令名稱一起,CommandMethod 屬性還能接受如下值:
【Command Flags】-定義命令的行為 【Group Name 】-命令組名稱
【Local Name 】-本地化命令名稱,通常用于特定語言
【Help Topic Name】定義當(dāng)命令被激活時(shí)相應(yīng)的快捷菜單的狀態(tài) 【Help File Name】-包含當(dāng)命令激活并按 F1 鍵時(shí)將要顯示其中幫助主題的幫助文件
11、如何通過代碼調(diào)用AutoCAD內(nèi)部命令?
A、使用 SendStringToExecute 方法可以直接將命令發(fā)送到 AutoCAD 命令行。SendStringToExecute 方法將單個(gè)字符串發(fā)送到命令行。該字符串必須包含提供給所執(zhí)行命令的參數(shù),并依照該命令的提示順序所要求的次序排列這些參數(shù)
B、使用 SendStringToExecute 執(zhí)行命令是異步的,直到.NET 命令結(jié)束,否則不會(huì)被調(diào)
紅色部分為答案空白或不確定
用。如果需要立即執(zhí)行一個(gè)命令(同步),應(yīng)該: 1)使用 COM Automation 庫中的 SendCommand 方法,它可以利用.NET COM Interop 訪問 2)使用 ObjectARX 或.NET API 定義命令,P/Invoke 非托管的用于本地化的 AutoCAD 命令的 acedCommand 或 acedCmd 方法
3)通過定義 AutoLISP 命令,P/Invoke 非托管的 acedInvoke 方法
12、如何實(shí)現(xiàn)圖形對象的旋轉(zhuǎn)、平移、縮放?請給出具體實(shí)現(xiàn)。
使用transformBy函數(shù)進(jìn)行幾何變換
1)Entity.TransformBy(Matrix3d transform)2)transformBy是Entity類的一個(gè)成員函數(shù),該函數(shù)使用一個(gè)Matrix3d參數(shù)對實(shí)體進(jìn)行相應(yīng)的幾何變換
3)Matrix3d是一個(gè)四維矩陣,常用函數(shù): Translation:生成一個(gè)移動(dòng)對象的矩陣 Rotation:生成旋轉(zhuǎn)矩陣
Scaling:生成比例縮放矩陣。Mirroring:生成鏡像矩陣
public static void Move(Entity ent, Point3d ptStart, Point3d ptEnd){ ent.TransformBy(Matrix3d.Displacement(ptEndn-5), sourceDb, false);
4)將新建塊表記錄加載到當(dāng)前塊表記錄中 5)刪除新建塊表記錄
23、AutoCAD有哪些選擇集過濾規(guī)則類型?請列舉部分實(shí)例代碼。
選擇集過濾規(guī)則類型:
A、使用選擇集過濾器定義選擇集規(guī)則
B、在選擇集過濾器中指定多個(gè)條件
C、添加復(fù)雜的過濾器列表?xiàng)l件
D、在選擇器過濾器條件中使用通配符
E、過濾擴(kuò)展數(shù)據(jù) 實(shí)例:
DBObject dbObj = Trans.GetObject(idBTR, OpenMode.ForWrite);dbObj.Erase();
紅色部分為答案空白或不確定
A)實(shí)例:使用過濾器選擇圓圖形實(shí)體
B)實(shí)例
C)實(shí)例1:選擇半徑大于或等于 5.0 的圓
// 創(chuàng)建一個(gè) TypedValue 數(shù)組,用于定義過濾條件 TypedValue[] acTypValAr = new TypedValue[3];acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, “CIRCLE”), 0);acTypValAr.SetValue(new TypedValue((int)DxfCode.Operator, “>=”), 1);acTypValAr.SetValue(new TypedValue(40, 5), 2);// 賦值過濾條件給 SelectionFilter 對象 SelectionFilter acSelFtr = new SelectionFilter(acTypValAr);// 要求在圖形區(qū)域中選擇對象 PromptSelectionResult acSSPrompt;acSSPrompt = acDocEd.GetSelection(acSelFtr);
實(shí)例2:選擇 Text 或 Mtext 對象
紅色部分為答案空白或不確定
// 創(chuàng)建一個(gè) TypedValue 數(shù)組,用于定義過濾條件 TypedValue[] acTypValAr = new TypedValue[4];acTypValAr.SetValue(new TypedValue((int)DxfCode.Operator, “
D)實(shí)例:選擇所有文字字符串中出現(xiàn)“The”的多行文字
E)實(shí)例:查找出包含通過“MY_APP”應(yīng)用程序添加的外部數(shù)據(jù)的圓
24、在AutoCAD中如何給一條道路添加擴(kuò)展屬性數(shù)據(jù)XData?請給出具體實(shí)現(xiàn)。
1)擴(kuò)展數(shù)據(jù)需要一個(gè)唯一的應(yīng)用程序名,可以通過acdbRegApp()進(jìn)行注冊,名字最長可達(dá)31 個(gè)字符
2)由于每個(gè)數(shù)據(jù)庫對象可以附加多個(gè)應(yīng)用程序的數(shù)據(jù),所以在結(jié)果緩沖區(qū)鏈表中,應(yīng)用程序名是每段擴(kuò)展數(shù)據(jù)的第一個(gè)數(shù)據(jù),其后的結(jié)果緩沖數(shù)據(jù)都?xì)w此應(yīng)用程序名所有 具體實(shí)現(xiàn):
紅色部分為答案空白或不確定
public string appName = “Road”;[CommandMethod(“setXData”)] public void setXData(){ //選擇實(shí)體 PromptEntityOptions pEntityOptions = new PromptEntityOptions(“n請選擇道路”);PromptEntityResult pEntityResult = pEd.GetEntity(pEntityOptions);if(pEntityResult.Status == PromptStatus.OK){ ObjectId pEntId = pEntityResult.ObjectId;using(Transaction pTrans = m_db.TransactionManager.StartTransaction()){ Entity pRoadEnt =(Entity)pTrans.GetObject(pEntId, OpenMode.ForWrite);TypedValue[] vals = new TypedValue[]{ //注冊應(yīng)用程序 new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataRegAppName),appName), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),“中央路”), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),“瀝青路面”), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),“2000”), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString), “雙向”)};//創(chuàng)建緩存 ResultBuffer pResBuff = new ResultBuffer(vals);//設(shè)置擴(kuò)展數(shù)據(jù) pRoadEnt.XData = pResBuff;pTrans.Commit();} } }
[CommandMethod(“ReadXData”)] public void ReadXData(){ //選擇實(shí)體 PromptEntityOptions pEntityOptions = new PromptEntityOptions(“n請選擇道路”);PromptEntityResult pEntityResult = pEd.GetEntity(pEntityOptions);if(pEntityResult.Status == PromptStatus.OK){ ObjectId pEntId = pEntityResult.ObjectId;using(Transaction pTrans = m_db.TransactionManager.StartTransaction()){ Entity pRoadEnt =(Entity)pTrans.GetObject(pEntId, OpenMode.ForRead);if(pRoadEnt.XData == null)return;//得到實(shí)體擴(kuò)展數(shù)據(jù)緩存 ResultBuffer pResBuff = pRoadEnt.XData;//轉(zhuǎn)換成TypedValue數(shù)組 TypedValue[] getvals = pResBuff.AsArray();string pRoadName = getvals[1].Value.ToString();string pRoadMtia = getvals[2].Value.ToString();string pRoadYear = getvals[3].Value.ToString();string pSingle = getvals[4].Value.ToString();pTrans.Commit();} } }
25、如何使用DBDictionary對象給一設(shè)計(jì)圖或一圖形對象添加屬性信息?實(shí) 例:使用擴(kuò)充詞典(XRecord)存儲(chǔ)擴(kuò)展數(shù)據(jù)
紅色部分為答案空白或不確定
[CommandMethod(“setXRecord”)] public void setXRecord(){ using(Transaction pTrans = m_db.TransactionManager.StartTransaction()){ DBDictionary dbDictionary = pTrans.GetObject(m_db.NamedObjectsDictionaryId, OpenMode.ForWrite)as DBDictionary;//創(chuàng)建存儲(chǔ)圖紙?jiān)O(shè)計(jì)者信息數(shù)據(jù)字典 if(!dbDictionary.Contains(“設(shè)計(jì)者”)){ DBDictionary pDesDict = new DBDictionary();dbDictionary.SetAt(“設(shè)計(jì)者信息”, pDesDict);Xrecord pDesRecord = new Xrecord();TypedValue[] vals = new TypedValue[]{ new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),“李明”), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),“深圳建筑設(shè)計(jì)院”), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString),“2005”), new TypedValue(Convert.ToInt16(DxfCode.ExtendedDataAsciiString), “100年”)};//創(chuàng)建緩存 ResultBuffer pResBuff = new ResultBuffer(vals);pDesRecord.XData = pResBuff;pDesDict.SetAt(“設(shè)計(jì)者”, pDesRecord);} pTrans.Commit();} }
26、“當(dāng)一個(gè)對象要被修改時(shí),使用Database對象的ObjectOpendForModify事件應(yīng)該被通知”這句話是否正確? I don’t know ,nor do I care
(P103)表格第一豎排最后一個(gè),個(gè)人認(rèn)為應(yīng)該正確
27、AutoCAD中的詞典和符號表有什么區(qū)別和聯(lián)系?
AutoCAD 中的詞典是一般的容器對象,這類似于AutoCAD中的符號表,但符號表只能存儲(chǔ)指定類型的對象,而詞典則可以保存任意的DbObject對象或其派生類的對象,實(shí)際上詞典是通用非圖形數(shù)據(jù)庫對象的容器
在AutoCAD中詞典用DbDictionary類表示,和符號表一樣包含一個(gè)唯一的字符串關(guān)鍵字,它的操作也非常類似于符號表操作方法
28、簡述創(chuàng)建字體樣式的基本過程。
29、ObjectARX.NET API提供了哪幾種創(chuàng)建二維圓弧CircularArc2d的方法?
使用Autodesk.AutoCAD.DatabaseServices下的Arc類創(chuàng)建圓弧,該類提供了三種定義圓弧的方法:
Arc():不帶參數(shù)
Arc(Point3d center, double radius, double startAngle, double endAngle)Arc(Point3d center, Vector3d normal, double radius, double startAngle, double endAngle)
紅色部分為答案空白或不確定
30、采用交互方式,繪制一個(gè)已知圓心和半徑的圓,并將圓的顏色設(shè)置成紅色。
[DllImport(“acad.exe”, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)] //調(diào)用繪制圓命令 private static extern int acedCommand(int type1, string command, int type2, string center, int type3, string radius, int end);[CommandMethod(“DrawCircle”)] public void DrawCircle(){ acedCommand(5005, “circle”, 5005, “100,100,0”, 5005, “30”, 5000);}
第一段代碼是交互式創(chuàng)建圓,但沒有顏色;第二段代碼是靜態(tài)創(chuàng)建圓,其中pCir.ColorIndex = 1,參數(shù)“1”代表紅色,4代表綠色,2代表黃色
第四篇:網(wǎng)站二次開發(fā)協(xié)議范文
網(wǎng)站二次開發(fā)合同
甲方:
乙方:
甲方在此委托乙方進(jìn)行
網(wǎng)站的二次開發(fā)。為明確雙方責(zé)任,經(jīng)友好協(xié)商,雙方達(dá)成以下協(xié)議:
第一條:項(xiàng)目的內(nèi)容、價(jià)款、開發(fā)進(jìn)度、交付方式。
第二條:甲方的權(quán)利和義務(wù)
1.提供專人與乙方聯(lián)絡(luò)。
2.提供所有需要放到網(wǎng)上的資料交給乙方,并保證資料的合法性。
3.乙方在完成合同規(guī)定的義務(wù)后,甲方按照附錄一的要求,及時(shí)支付費(fèi)用。
4.甲方將在著作權(quán)法的范圍內(nèi)使用本合同標(biāo)的及相關(guān)作品、程序、文件源碼,不得將其復(fù)制、傳播、出售或許可給其它第三方。
5.甲方對本合同標(biāo)的中的網(wǎng)頁、圖像享有排版的版權(quán)。
6.版權(quán)所有歸甲方(包括原文件、程序、文字、動(dòng)畫文件、有聲文件、及相關(guān)作品)第三條:乙方的權(quán)利和義務(wù)
1.提供專人與甲方聯(lián)絡(luò)。
2.按附錄一的要求,使用甲方資料,進(jìn)行網(wǎng)站的二次開發(fā)。
3.在附錄一要求的期限內(nèi),完成網(wǎng)站的二次開發(fā),并通知甲方進(jìn)行驗(yàn)收。
4.在驗(yàn)收期內(nèi)甲方要求下,對不合格地方進(jìn)行修改。
5.乙方未經(jīng)甲方同意不得向第三方拷貝或泄露網(wǎng)站程序。6.乙方負(fù)責(zé)維護(hù)甲方網(wǎng)站運(yùn)營期間數(shù)據(jù)的安全。
7.在附錄一要求進(jìn)行網(wǎng)站更新的情況下,在接到甲方要求網(wǎng)站更新的傳真2日內(nèi),按照要求對網(wǎng)站進(jìn)行更新;
8.在附錄一要求進(jìn)行培訓(xùn)的情況下,對甲方1-3名技術(shù)人員進(jìn)行培訓(xùn)。第四條:驗(yàn)收
1.驗(yàn)收標(biāo)準(zhǔn)有以下幾條:
a.甲方可以通過任何上網(wǎng)的計(jì)算機(jī)訪問這個(gè)網(wǎng)站。
b.主頁無文字拼寫及圖片(以甲方提供的材料為準(zhǔn))錯(cuò)誤。
c.網(wǎng)絡(luò)程序正常運(yùn)行。
2.驗(yàn)收期為5天時(shí)間。
第五條 違約責(zé)任
1.任何一方有證據(jù)表明對方已經(jīng)、正在或?qū)⒁`約,可以中止履行本合同,但應(yīng)及時(shí)通知對方。若對方繼續(xù)不履行、履行不當(dāng)或者違反本合同,該方可以解除本合同并要求對方賠償損失。
2.因不可抗力而無法承擔(dān)責(zé)任的一方,應(yīng)在不可抗力發(fā)生的3 天內(nèi),及時(shí)通知另一方。
3.一方因不可抗力確實(shí)無法承擔(dān)責(zé)任,而造成損失的,不付賠償責(zé)任。本合同所稱不可抗力是指不能預(yù)見、不能克服并不能避免且對一方當(dāng)事人造成重大影響的客觀事件,包括但不限于自然災(zāi)害如洪水、地震、火災(zāi)和風(fēng)暴等以及社會(huì)事件如戰(zhàn)爭、**、政府行為等。
第六條 保密條款
雙方應(yīng)嚴(yán)格保守在合作過程中所了解的對方的商業(yè)及技術(shù)機(jī)密,否則應(yīng)對因此造成的損失承擔(dān)賠償。
第七條 以上條款如有未盡事疑,經(jīng)甲、乙雙方協(xié)商后加以補(bǔ)充:
補(bǔ)充內(nèi)容: 乙方需提供使用文檔,并根據(jù)使用文檔對甲方技術(shù)人員提供相關(guān)培訓(xùn)等支持。并在交付后有免費(fèi)代碼維護(hù)義務(wù),并在雙方合作共贏的基礎(chǔ)上提供更多技術(shù)支持(比如有償?shù)墓δ荛_發(fā)等項(xiàng)目)。
第八條 其它
1.如果本合同任何條款根據(jù)現(xiàn)行法律被確定為無效或無法實(shí)施,本合同的其他所有條款將繼續(xù)有效。此種情況下,雙方將以有效的約定替換該約定,且該有效約定應(yīng)盡可能接近原約定和本合同相應(yīng)的精神和宗旨。
2.附錄一規(guī)定的有效期滿,乙方未完成附錄一任務(wù),超出期限每天扣兩百,超出期限后放棄該任務(wù),按網(wǎng)站的費(fèi)用雙倍賠償。
3.如乙方在期限內(nèi)放棄該任務(wù),按網(wǎng)站的費(fèi)用雙倍賠償。3.本合同經(jīng)雙方授權(quán)代表簽字并蓋章,自簽訂日起生效。
4.本合同一式兩份,雙方當(dāng)事人各執(zhí)一份,具有同等法律效力。
甲方(蓋章):
乙方(蓋章)代表:
代表:
第五篇:RobotFramework二次開發(fā)小結(jié)
RobotFramework二次開發(fā)小結(jié)
本文主要針對用例之間的調(diào)度,和定時(shí)運(yùn)行用例這兩個(gè)方向進(jìn)行了介紹,其中用例之間的調(diào)度在RobotFramework平臺(tái)上直接可以實(shí)現(xiàn),對定時(shí)運(yùn)行用例,我們進(jìn)行了Robot平臺(tái)的二次開發(fā)。
【用例之間調(diào)度】:
1、前一個(gè)用例的執(zhí)行結(jié)果是后一個(gè)用例的執(zhí)行條件,在python編譯環(huán)境下定義兩個(gè)函數(shù)。
圖1 python編寫資源庫文件
在RobotFramework里添加該資源庫文件,定義一個(gè)全局變量${turn},新建兩個(gè)用例test1和test3,Robot平臺(tái)提供了關(guān)鍵詞Run Keyword if,可以實(shí)現(xiàn)兩個(gè)用例之間的調(diào)度關(guān)系,如果函數(shù)(在Robot稱為關(guān)鍵字)check返回的是True則執(zhí)行函數(shù)Add,否則不會(huì)執(zhí)行函數(shù)Add。
圖2 RobotFramework設(shè)計(jì)用例1
2、前一個(gè)用例的執(zhí)行結(jié)果是后一個(gè)測試用例的輸入值,定義一個(gè)全局變量${sum},將函數(shù)Add的執(zhí)行結(jié)果傳給函數(shù)Fun。
圖3 RobotFramework設(shè)計(jì)用例2
【RobotFramework二次開發(fā)】 關(guān)于定時(shí)運(yùn)行用例,對Robot平臺(tái)進(jìn)行了二次開發(fā),在Robot平臺(tái)的菜單欄里添加一個(gè)Tasks菜單項(xiàng),點(diǎn)擊下拉菜單Schedule彈出設(shè)置界面。
圖 4 RobotFramework二次開發(fā)界面
1、該Task Schedule Dialog 可以設(shè)計(jì)定時(shí)運(yùn)行用例,有兩種觸發(fā)方式,Single和Cycle(CI Trigger方式目前沒有實(shí)現(xiàn)),其中Cycle可以設(shè)置間隔時(shí)間,單位為hour、day、week;
2、打開Task Schedule Dialog時(shí),自動(dòng)將Robot平臺(tái)設(shè)計(jì)的用例樹放在界面的綠色區(qū)域,可以選擇單個(gè)用例或多個(gè)用例,輸入Task Name(也就是Robot平臺(tái)的tag),選定觸發(fā)方式(Single或Cycle),點(diǎn)擊Add按鈕添加任務(wù);
3、選擇添加的任何一個(gè)任務(wù),可以通過Modify按鈕修改Task Name,或通過Delete按鈕刪除該任務(wù);
4、鼠標(biāo)點(diǎn)擊一個(gè)任務(wù)時(shí),在綠色區(qū)域的用例樹中,被設(shè)置的用例會(huì)自動(dòng)打勾顯示。
圖5 RobotFramework平臺(tái)二次開發(fā)功能圖
5、點(diǎn)擊Start按鈕將按設(shè)置時(shí)間依次運(yùn)行各用例,如圖6所示,如果用例是保存在文件夾D:python_testSofttest,,任務(wù)的運(yùn)行報(bào)告自動(dòng)保存在當(dāng)前目錄的OutputDirN下,如果是Cycle方式會(huì)再建一層文件夾(文件夾名為任務(wù)運(yùn)行時(shí)間)。
圖 6 用例執(zhí)行報(bào)告保存文件夾
關(guān)注點(diǎn):Task Schedule Dialog里的Task Name就是Robot平臺(tái)的tag,執(zhí)行的過程先判斷設(shè)定時(shí)間,如果滿足條件,將Output Directory目錄下的含有該tag的所有用例都運(yùn)行一次。用例執(zhí)行順序和最初在Robot平臺(tái)設(shè)計(jì)的用例順序一致。
6、Robot平臺(tái)的二次開發(fā)使用方法:將FrameTask.py,mainframe.py,TaskSchedule.py,TestTree.py放在C:Python26Libsite-packagesrobotideui,覆蓋所有文件,再打開Robot就可以看到菜單項(xiàng)。