導航:首頁 > 源碼編譯 > bdd模型驅動源碼

bdd模型驅動源碼

發布時間:2023-05-27 03:12:24

『壹』 bdd是什麼意思

行為驅動開發(Behavior-Driven Development)(簡寫BDD),在軟體工程中,BDD是一種敏捷軟體開發的技術。

行為驅動開發(BDD)是測試驅動開發的延伸,開發使用簡單的,特定於領域的腳本語言。這些DSL將結構化自然語言語句轉換為可執行測試。結果是與給定功能的驗收標准以及用於驗證該功能的冊芹測試之間的關系更密切。因此,它一般是測試驅清前動開發(TDD)測試的自然延伸。

BDD 作為一種設計方法,可以有效的改善設計,並在系統的演化過程中為團隊指明前進方向。

行為驅動開發的根基是一種「通用語言」。這種通用語言同時被客戶和開發者用來定義系統的行為。由於客戶和開發者使用同一種「語言」來描述同一個系統,可以最大程度避免表達不一致帶來的問題。

表達不一致是軟體開發中最常見的問題,由此造成的結果就是開發人員最終做出來的東西就不是客戶期望的。使用通用語言,客戶和開發者可以一起定義出系統的行為,從而做出符合客戶需求的設計。但如果光有設計,而沒有驗證的手段,就無法檢驗我們的實現是不是符合設計。所以 BDD還是答姿清要和測試結合在一起,用系統行為的定義來驗證實現代碼。

『貳』 python BDD自動化測試框架有哪些

  1. Python自動化測試框架比較有名的就是python+selenium,還有單元測試框架PyUnit,還有一個叫做Robot Framework的自動化測試框架,大大小小的有很多

  2. BDD顧名思義Behavior Driven Development,譯作"行為驅動開發",是基於TDD(Test Driven Development 測試驅動開發)的軟體開發過程和方法。BDD可以讓項目成員(甚至是不懂編程的)使用自然語言來描述系統功能和場景,從而根據這些描述步驟進行系統自動化的測試。

  3. BDD的自動化測試框架的話,目前應用最好的是Ruby下的Cucumber,Python下有類似的Behave、Lettuce及Freshen等,這三個都差不多,個人推薦Behave

  4. 可以網路這篇文章(我寫的):Python BDD自動化測試框架初探

『叄』 GitHub上面有哪些經典的java框架源碼

『肆』 怎麼查看linux下的模塊

1、lsmod 列加以掛載的內核模塊;
lsmod 是列出目前系統中已載入的模塊的名稱及大小等;另外我們還可以查看 /proc/moles ,我們一樣可以知道系統已經載入的模塊;
代碼:

[root@localhost beinan]# lsmod
2、modinfo 查看模塊信息;
modinfo 可以查看模塊的信息,通過查看模塊信息來判定這個模塊手譽殲的用途;
代碼:

[root@localhost beinan]# moinfo 模塊名
舉例:
代碼:

[root@localhost beinan]# modinfo ne2k-pcifilename: /lib/moles/2.6.11-1.1369_FC4/kernel/drivers/net/ne2k-pci.koauthor: Donald Becker / Paul Gortmakerdescription: PCI NE2000 clone driverlicense: GPLparmtype: debug:intparmtype: options:array of intparmtype: full_plex:array of intparm: debug:debug level (1-2)parm: options:Bit 5: full plexparm: full_plex:full plex setting(s) (1)vermagic: 2.6.11-1.1369_FC4 686 REGPARM 4KSTACKS gcc-4.0depends: 8390alias: pci:v000010ECd00008029sv*sd*bc*sc*i*alias: pci:v00001050d00000940sv*sd*bc*sc*i*alias: pci:v000011F6d00001401sv*sd*bc*sc*i*alias: pci:v00008E2Ed00003000sv*sd*bc*sc*i*alias: pci:v00004A14d00005000sv*sd*bc*sc*i*alias: pci:v00001106d00000926sv*sd*bc*sc*i*alias: pci:v000010BDd00000E34sv*sd*bc*sc*i*alias: pci:v00001050d00005A5Asv*sd*bc*sc*i*alias: pci:v000012C3d00000058sv*sd*bc*sc*i*alias: pci:v000012C3d00005598sv*sd*bc*sc*i*alias: pci:v00008C4Ad00001980sv*sd*bc*sc*i*srcversion: 6ACE95F441CD26DF9DC31C2
上 面的例子是我們查看 ne2k-pci 這個模塊的信息,通過查看,我們知道ne2k-pci 模塊是8029網卡(PCI NE2000 clone driver)的驅動;模塊是位於 /lib/moles/2.6.11-1.1369_FC4/kernel/drivers/net/ 中ne2k-pci.ko
我們現在常用的網卡也有8139的,8139網卡所用的驅動是 8139too ;查查看?
代碼:

[root@localhost beinan]# modinfo 8139too

我們再查查vfat 和ntfs 的模塊信息;
代碼:

[root@localhost beinan]# modinfo vfat[root@localhost beinan]# modinfo ntfs

自己嘗試一下;
注意: 模塊名是不能帶有後綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
3、modprobe 掛載新模塊以及新模塊相依賴的模塊
modprobe 我們常用的功能就是掛載模塊,在虛渣掛載某個內核模塊的同時,這個模塊所依賴的模塊也被同時掛畢沖載;當然modprobe 也有列出內核所有模塊,還有移除模塊的功能;下在我們舉個例子說一說咱們常用的功能和參數;
代碼:
modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-o ] [parameters...]
modprobe -r [-n] [-i] [-v] ...
modprobe -l -t [ -a ...]
上面是modprobe 的用法,具體更為詳細的幫助,我們可以查看 man modprobe ;
代碼:
[root@localhost beinan]# modprobe -c
modprobe -c 可以查看moles 的配置文件,比如模塊的別名是什麼等;
代碼:

[root@localhost beinan]# modprobe -l
modprobe -l 是列出內核中所有的模塊,包括已掛載和未掛載的;通過modprobe -l ,我們能查看到我們所需要的模塊,然後根據我們的需要來掛載;其實modprobe -l 讀取的模塊列表就位於 /lib/moles/'uname -r' 目錄中;其中uname -r 是內核的版本;
代碼:

[root@localhost beinan]# uname -r2.6.11-1.1369_FC4[root@localhost beinan]# ls /lib/moles/2.6.11-1.1369_FC4/
通過上面的命令,自己試試看?
代碼:

[root@localhost beinan]# modprobe 模塊名 註:掛載一個模塊;
舉例:
代碼:

[root@localhost beinan]# modprobe ne2k-pci 註:掛載 ne2k-pci 模塊;[root@localhost beinan]# modprobe vfat 註:掛載vfat 模塊[root@localhost beinan]# modprobe ntfs 註:掛載ntfs 模塊[root@localhost beinan]# lsmod 註:列出已掛載模塊, 我們會看到ne2k-pci ,vfat ,ntfs的模塊 ;
注意: 模塊名是不能帶有後綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
代碼:

[root@localhost beinan]# modprobe -r 模塊名 註:移除已載入的模塊,和rmmod 功能相同;
注意:模塊名是不能帶有後綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
代碼:

[root@localhost beinan]# modprobe -r 模塊名
舉例:
代碼:

[root@localhost beinan]# modprobe -r ne2k-pci
就說這么多吧,更為詳細的還是用 man modprobe 來查看和嘗試;

4、rmmod 移除已掛載模塊;
命令格式:
代碼:
rmmod 模塊名
注意: 模塊名是不能帶有後綴的,我們通過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
舉例:
代碼:
[root@localhost beinan]# rmmod vfat 註:移除已掛載的模塊vfat

5、depmod 創建模塊依賴關系的列表
這 個模塊管理工具是創建模塊依賴關系的列表,有幾個參數我們注意一下就行了,目前的的Linux 發行版所用的內核是2.6x版本,是自動解決依賴關系,所以這個命令知道就行了;模塊之前也有依賴關系,比如我們想驅動USB 移動硬碟,目前有兩種驅動,一種是udev ,在內核中有,但目前不太穩定;另一種辦法是用usb-storage驅動,而usb-storage 依賴的模塊是scsi 模塊,所以我們要用usb-storage 的模塊,也得把scsi 編譯安裝;
再 舉個例子:sata的硬碟,在Linux中的設備表示的是/dev/sd* ,比如 /dev/sda,/dev/sdb 等... 系統要驅動 sata硬碟,則需要把sata在內核中選中,或編譯成模塊,或內置於內核之中,在此同時,還需要在內核中選中ide ,scsi 的支持等;
depmod 工具的洋文原意:depmod — program to generate moles.dep and map files.(我譯的:為moles.dep 文件或映射文件創建依賴關系)
代碼:

[root@localhost beinan]# depmod -a 註:為所有列在/etc/modprobe.conf 或/etc/moles.conf 中的所有模塊創建依賴關系,並且寫入到moles.dep文件;[root@localhost beinan]# depmod -e 註:列出已掛載但不可用的模塊;[root@localhost beinan]# depmod -n 註:列出所有模塊的依賴關系,但僅僅是輸出出來 (Write the dependency file on stdout only)
註:moles.dep 位於 /lib/moles/內核版本 目錄
比如 Fedora Core 4.0 中,系統默認的內核:
代碼:

[root@localhost beinan]# ls /lib/moles/2.6.11-1.1369_FC4/moles.dep/lib/moles/2.6.11-1.1369_FC4/moles.dep

6、insmod 掛載模塊;
insmod 這個工具,和modprobe 有點類似,但功能上沒有modprobe 強,modprobe 在掛載模塊是不用指定模塊文件的路徑,也不用帶文件的後綴.o 或.ko ;而insmod 需要的是模塊的所在目錄的絕對路徑,並且一定要帶有模塊文件名後綴的(molefile.o 或molesfile.ko );
對於這個工具,我們只是介紹一下, 並不推薦使用。因為模塊有依賴關系,對於新手來說,可能不知道這個模塊依賴和哪個模塊依賴;
舉例:
代碼:
[root@localhost beinan]# insmod /lib/moles/2.6.11-1.1369_FC4/kernel/drivers/net/tg3.ko
我們要到 /lib/moles/內核版本 uname -r 的命令輸出/kernel/drivers 中找相對應的模塊才行,要有絕對路徑,而且必須要用到文件名的全稱,不能把文件名的後綴省略;
四、與內核模塊載入相關的配置文件;
1、模塊的配置文件 moles.conf 或 modprobe.conf
內 核模塊的開機自動掛載模塊一般是位於一個配置文件,一般的Linux發行版本都有 /etc/moles.conf 或 /etc/modprobe.conf 。比如Fedora Core 4.0 內核模塊開機自動載入文件是 /etc/modprobe.conf ;在這個文件中,一般是寫入模塊的載入命令或模塊的別名的定義等;比如我們在moles.conf 中可能會發行類似的一行 ;
代碼:

alias eth0 8139too
而8029的網卡應該是
代碼:

alias eth0 ne2k-pci
這樣系統啟動的時候,首先會modprobe 8139too ,然後再為8139too 指定別名為 eth0,然後我們在登錄的時候,用 ifconfig 就會查看到網卡的IP 等情況,當然您得為網卡設置IP 才行;
一 般的情況下,modproe.conf 或moles.conf的內容 是我們用相應的硬體配置工具而生成的;如果您的硬體驅動是沒有被內核支持,您自己到硬體的廠商下載而來的驅動。一般的情況下都有安裝和幫助文件。他們的驅 動在配置時,他會寫入硬體的支持到moles.conf 或modprobe.conf 文件中。
再比如我們的音效卡在moles.conf 或modprobe.conf 中也有相應的內容,這是由alsaconf 配置工具生成的,明白了吧;同理網卡在modprobe.conf 或moles.conf中的內容也是由網卡的配置工具而來的。
有些硬體是以內核模塊的方式驅動的,模塊一旦載入上就能用,也沒有什麼配置工具,比如vfat 和ntfs 的支持;如果是硬體驅動不以模塊的方式支持,而是直接編入內核,也不會用在modprobe.conf 或 moles.conf 中加入什麼內容;
如果您有些模塊不能開機載入,您想讓一些模塊加機自動載入,就可以把modprobe 模塊 直接寫入配置文件;
2、內核模塊其它配置文件
內核模塊的其它配置文件還是需要了解的,比如 /lib/moles/內核版本目錄下的幾個文件;了解一下就行;比如:
代碼:

[root@localhost beinan]# uname -r2.6.11-1.1369_FC4[root@localhost beinan]# ls /lib/moles/2.6.11-1.1369_FC4/build misc moles.ccwmap moles.ieee1394map moles.isapnpmap moles.symbols sourcekernel moles.alias moles.dep moles.inputmap moles.pcimap moles.usbmap
五、硬體驅動在系統中的目錄;
硬體驅動在內核中以模塊支持的目錄;
硬 件驅動是必須由內核支持的,無論是我們自己安裝驅動,還是內核自帶的驅動都是如此。硬體驅動如果是以內核模塊支持的,驅動目錄位於: /lib/moles/內核版本/kernel/目錄 或 /lib/moles/內核版本/kernel/drivers 目錄中;
代碼:

[root@localhost beinan]# uname -r2.6.11-1.1369_FC4[root@localhost beinan]# ls /lib/moles/2.6.11-1.1369_FC4/kernelarch crypto drivers fs lib net sound
註:只有驅動在內核中以模塊的方法支持,驅動才位於 /lib/moles/相應的目錄;如果是直接置入內核的,不會出現在/lib/moles驅動相關的目錄;
六、自己編譯驅動的辦法;
通 過源碼編譯驅動一般是./configure ;make;make install ,有時程序不提供./configure ,我們可以make或make install ,或者執行make;make install ;如果不能make install ,則需要我們自己復制.o或者.ko文件到 /lib/moles/內核版本/kernel/目錄 或 /lib/moles/內核版本/kernel/drivers 目錄中相應的驅動目錄;
這個還是自己嘗試吧,說也說不清楚,遇到問題後就知道怎麼弄了;具體的還是驅動的REAME和INSTALL為准;
現在大多驅動都是在編譯安裝時,都自動復制.o或.ko 文件到內核模塊目錄,大多不用我們自己動手復制過去。如果您嘗試編譯安裝音效卡驅動 alsa-drivers 就會明白我所說的意思。
建議系統學習下linux,可以看看《linux就該這么學》

『伍』 Web前端崗位面試題有哪些

前端面試題匯總,基本上會有四大類問題,具體如下:
一、HTML

1、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?

2、HTML5 為什麼只需要寫 <!DOCTYPE HTML>?
3、行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?
4、頁面導入樣式時,使用link和@import有什麼區別?
5、介紹一下你對瀏覽器內核的理解?
6、常見的瀏覽器內核有哪些?
7、html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分 HTML 和 HTML5?
8、簡述一下你對HTML語義化的理解?
9、HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
10、瀏覽器是怎麼對HTML5的離線儲存資源進行管理和載入的呢?
11、請描述一下 cookies,sessionStorage 和 localStorage 的區別?
12、iframe有那些缺點?
13、Label的作用是什麼?是怎麼用的?(加 for 或 包裹)
14、HTML5的form如何關閉自動完成功能?
15、如何實現瀏覽器內多個標簽頁之間的通信? (阿里)
16、webSocket如何兼容低瀏覽器?(阿里)
17、頁面可見性(Page Visibility)API 可以有哪些用途?
18、如何在頁面上實現一個圓形的可點擊區域?
19、實現不使用 border 畫出1px高的線,在不同瀏覽器的Quirksmode和CSSCompat模式下都能保持同一效果。
20、網頁驗證碼是幹嘛的,是為了解決什麼安全問題?
21、tite與h1的區別、b與strong的區別、i與em的區別?

二、css

1、介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?

2、CSS選擇符有哪些?哪些屬性可以繼承?
3、CSS優先順序演算法如何計算?
4、CSS3新增偽類有那些?
5、如何居中div?如何居中一個浮動元素?如何讓絕對定位的div居中?
6、display有哪些值?說明他們的作用。
7、position的值relative和absolute定位原點是?
8、CSS3有哪些新特性?
9、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
10、用純CSS創建一個三角形的原理是什麼?

11、一個滿屏 品 字布局 如何設計?

三、常見兼容性問題?


  1. 1、li與li之間有看不見的空白間隔是什麼原因引起的?有什麼解決辦法?
    2、經常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什麼,常用hack的技巧 ?
    3、為什麼要初始化CSS樣式。
    4、absolute的containing block計算方式跟正常流有什麼不同?
    5、CSS里的visibility屬性有個collapse屬性值是幹嘛用的?在不同瀏覽器下以後什麼區別?
    6、position跟display、margin collapse、overflow、float這些特性相互疊加後會怎麼樣?
    7、對BFC規范(塊級格式化上下文:block formatting context)的理解?
    8、CSS權重優先順序是如何計算的?
    9、請解釋一下為什麼會出現浮動和什麼時候需要清除浮動?清除浮動的方式
    10、移動端的布局用過媒體查詢嗎?
    11、使用 CSS 預處理器嗎?喜歡那個?
    12、CSS優化、提高性能的方法有哪些?
    13、瀏覽器是怎樣解析CSS選擇器的?
    14、在網頁中的應該使用奇數還是偶數的字體?為什麼呢?
    15、margin和padding分別適合什麼場景使用?
    16、抽離樣式模塊怎麼寫,說出思路,有無實踐經驗?[阿里航旅的面試題]
    17、元素豎向的百分比設定是相對於容器的高度嗎?
    18、全屏滾動的原理是什麼?用到了CSS的那些屬性?
    19、什麼是響應式設計?響應式設計的基本原理是什麼?如何兼容低版本的IE?
    20、視差滾動效果,如何給每頁做不同的動畫?(回到頂部,向下滑動要再次出現,和只出現一次分別怎麼做?)
    21、::before 和 :after中雙冒號和單冒號 有什麼區別?解釋一下這2個偽元素的作用。
    22、如何修改chrome記住密碼後自動填充表單的黃色背景 ?
    23、你對line-height是如何理解的?
    24、設置元素浮動後,該元素的display值是多少?(自動變成display:block)
    25、怎麼讓Chrome支持小於12px 的文字?
    26、讓頁面里的字體變清晰,變細用CSS怎麼做?(-webkit-font-smoothing: antialiased;)
    27、font-style屬性可以讓它賦值為「oblique」 oblique是什麼意思?
    28、position:fixed;在android下無效怎麼處理?
    29、如果需要手動寫動畫,你認為最小時間間隔是多久,為什麼?(阿里)
    30、display:inline-block 什麼時候會顯示間隙?(攜程)
    31、overflow: scroll時不能平滑滾動的問題怎麼處理?
    32、有一個高度自適應的div,裡面有兩個div,一個高度100px,希望另一個填滿剩下的高度。
    33、png、jpg、gif 這些圖片格式解釋一下,分別什麼時候用。有沒有了解過webp?
    34、什麼是Cookie 隔離?(或者說:請求資源的時候不要讓它帶cookie怎麼做)
    35、style標簽寫在body後與body前有什麼區別?

    四、JavaScript

    1、介紹JavaScript的基本數據類型。
    2、說說寫JavaScript的基本規范?
    3、JavaScript原型,原型鏈 ? 有什麼特點?
    4、JavaScript有幾種類型的值?(堆:原始數據類型和 棧:引用數據類型),你能畫一下他們的內存圖嗎?
    5、Javascript如何實現繼承?
    6、Javascript創建對象的幾種方式?
    7、Javascript作用鏈域?
    8、談談This對象的理解。
    9、eval是做什麼的?
    10、什麼是window對象? 什麼是document對象?
    11、null,undefined的區別?
    12、寫一個通用的事件偵聽器函數(機試題)。
    13、[「1」, 「2」, 「3」].map(parseInt) 答案是多少?
    14、關於事件,IE與火狐的事件機制有什麼區別? 如何阻止冒泡?
    15、什麼是閉包(closure),為什麼要用它?
    16、javascript 代碼中的」use strict」;是什麼意思 ? 使用它區別是什麼?
    17、如何判斷一個對象是否屬於某個類?
    18、new操作符具體幹了什麼呢?
    19、用原生JavaScript的實現過什麼功能嗎?
    20、Javascript中,有一個函數,執行時對象查找時,永遠不會去查找原型,這個函數是?
    21、對JSON的了解?
    22、[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) }) 能解釋一下這段代碼的意思嗎?
    23、js延遲載入的方式有哪些?
    24、Ajax 是什麼? 如何創建一個Ajax?
    25、同步和非同步的區別?
    26、如何解決跨域問題?
    27、頁面編碼和被請求的資源編碼如果不一致如何處理?
    28、模塊化開發怎麼做?
    29、AMD(Moles/Asynchronous-Definition)、CMD(Common Mole

    Definition)規范區別?
    30、requireJS的核心原理是什麼?(如何動態載入的?如何避免多次載入的?如何 緩存的?)
    31、讓你自己設計實現一個requireJS,你會怎麼做?
    32、談一談你對ECMAScript6的了解?
    33、ECMAScript6 怎麼寫class么,為什麼會出現class這種東西?
    34、非同步載入的方式有哪些?
    35、documen.write和 innerHTML的區別?
    36、DOM操作——怎樣添加、移除、移動、復制、創建和查找節點?
    37、.call() 和 .apply() 的含義和區別?
    38、數組和對象有哪些原生方法,列舉一下?
    39、JS 怎麼實現一個類。怎麼實例化這個類
    40、JavaScript中的作用域與變數聲明提升?
    41、如何編寫高性能的Javascript?
    42、那些操作會造成內存泄漏?
    43、JQuery的源碼看過嗎?能不能簡單概況一下它的實現原理?
    44、jQuery.fn的init方法返回的this指的是什麼對象?為什麼要返回this?
    45、jquery中如何將數組轉化為json字元串,然後再轉化回來?
    46、jQuery 的屬性拷貝(extend)的實現原理是什麼,如何實現深拷貝?
    47、jquery.extend 與 jquery.fn.extend的區別?
    48、jQuery 的隊列是如何實現的?隊列可以用在哪些地方?
    49、談一下Jquery中的bind(),live(),delegate(),on()的區別?
    50、JQuery一個對象可以同時綁定多個事件,這是如何實現的?
    51、是否知道自定義事件。jQuery里的fire函數是什麼意思,什麼時候用?
    52、jQuery 是通過哪個方法和 Sizzle 選擇器結合的?(jQuery.fn.find()進入Sizzle)
    53、針對 jQuery性能的優化方法?
    54、Jquery與jQuery UI有啥區別?
    55、JQuery的源碼看過嗎?能不能簡單說一下它的實現原理?
    56、jquery 中如何將數組轉化為json字元串,然後再轉化回來?
    57、jQuery和Zepto的區別?各自的使用場景?
    58、針對 jQuery 的優化方法?
    59、Zepto的點透問題如何解決?
    60、jQueryUI如何自定義組件?
    61、需求:實現一個頁面操作不會整頁刷新的網站,並且能在瀏覽器前進、後退時正確響應。給出你的技術實現方案?
    62、如何判斷當前腳本運行在瀏覽器還是node環境中?(阿里)
    63、移動端最小觸控區域是多大?
    64、jQuery 的 slideUp動畫 ,如果目標元素是被外部事件驅動, 當滑鼠快速地連續觸發外部元素事件, 動畫會滯後的反復執行,該如何處理呢?
    65、把 Script 標簽 放在頁面的最底部的body封閉之前 和封閉之後有什麼區別?瀏覽器會如何解析它們?
    66、移動端的點擊事件的有延遲,時間是多久,為什麼會有? 怎麼解決這個延時?(click 有 300ms 延遲,為了實現safari的雙擊事件的設計,瀏覽器要知道你是不是要雙擊操作。)
    67、知道各種JS框架(Angular, Backbone, Ember, React, Meteor, Knockout…)么? 能講出他們各自的優點和缺點么?
    68、Underscore 對哪些 JS 原生對象進行了擴展以及提供了哪些好用的函數方法?
    69、解釋JavaScript中的作用域與變數聲明提升?
    70、那些操作會造成內存泄漏?
    71、JQuery一個對象可以同時綁定多個事件,這是如何實現的?
    72、Node.js的適用場景?
    (如果會用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
    73、解釋一下 Backbone 的 MVC 實現方式?
    74、什麼是「前端路由」?什麼時候適合使用「前端路由」? 「前端路由」有哪些優點和缺點?
    75、知道什麼是webkit么? 知道怎麼用瀏覽器的各種工具來調試和debug代碼么?
    76、如何測試前端代碼么? 知道BDD, TDD, Unit Test么? 知道怎麼測試你的前端工程么(mocha, sinon, jasmin, qUnit..)?
    77、前端templating(Mustache, underscore, handlebars)是幹嘛的, 怎麼用?
    78、簡述一下 Handlebars 的基本用法?
    79、簡述一下 Handlerbars 的對模板的基本處理流程, 如何編譯的?如何緩存的?
    80、用js實現千位分隔符?(來源:前端農民工,提示:正則+replace)
    檢測瀏覽器版本版本有哪些方式?
    81、我們給一個dom同時綁定兩個點擊事件,一個用捕獲,一個用冒泡,你來說下會執行幾次事件,然後會先執行冒泡還是捕獲

『陸』 Ideal BDD啟動報Can』t find any datasource

Ideal BDD啟動報Can』t find any datasource需要修改模板。

BDD,Behavior Driven Development,行為驅姿皮動開發。

如果你不是很了解BDD,可以參考我四年前的一篇文章說起BDD,你會想到亂敬什麼,其中介紹過BDD的理論和應用。

我們可以這樣來概括BDD:

BDD採用統一的領域特定語言(DSL)來描述業務場景和用戶行為,讓團隊各個不同角色對業務需求有一致認識,從而做到更有效的溝通和更高效的協作;嘩冊慎

BDD的目的不是自動化測試,但是BDD可以有效指導自動化測試,基於BDD的自動化測試相當於維護了一份需求活文檔,對項目需求的維護和管理非常有價值。

『柒』 安全開發你必須使用的28個DevSecOps工具

將安全融入開發過程,更早捕獲並修復應用漏洞,你需要這五類共28款DevSecOps工具。

DevSecOps 是將安全集成到整個應用開發周期的過程,是從內到外強化應用,使其能夠抵禦各種潛在威脅的理想方式。因為很多公司企業不斷開發應用以滿足客戶和商業合作夥伴的需求,DevSecOps的吸引力也與日俱增。

敏捷開發方法與DevOps操作幫助公司企業達成持續開發的目標。雲原生應用架構也成為了DevSecOps運動的有力貢獻者,推動採用公共雲提供商、容器技術和容器平台為應用提供計算能力。DevSecOps將安全過程與工具集成進工作流並加以自動化,擺脫了傳統方法按時間點進行的潛在干擾,是個無縫且持續的過程。

咨詢公司 Data Bridge Market Research 稱,鑒於網路安全威脅數量與危害性的持續上升,全球DevSecOps市場預計將從2018年的14.7億美元增長至2026年的136.3億美元。

市場繁榮之下,DevSecOps工具必將呈現百花齊放百家爭鳴的局面。下面就按核心門類為您呈上多款優秀DevSecOps工具。

開發應用的時候很容易忽略掉安全漏洞。下面的工具為開發人員提供了潛在安全異常及缺陷的警報功能,可供開發人員及時調查並修復這些漏洞,不至於走得太遠回不了頭。有些工具專用於警報功能,比如開源的Alerta 。其他工具則兼具測試等別的功能,比如 Contrast Assess。

1. Alerta

(https://alerta.io/)

該開源工具可將多個來源的信息整合去重,提供快速可視化功能。Alerta與Prometheus、Riemann、Nagios、Cloudwatch及其他監視/管理服務集成,開發人員可通過API按需定製Alerta。

2. Contrast Assess

(https://www.contrastsecurity.com/interactive-application-security-testing-iast)

作為一款互動應用安全測試(IAST)工具,Contrast Assess 與用戶應用集成,在後台持續監視代碼,並在發現安全漏洞時發出警報。據稱即便是非安全開發人員也可使用 Contrast Assess 自行識別並修復漏洞。

3. Contrast Protect

(https://www.contrastsecurity.com/runtime-application-self-protection-rasp)

該運行時應用自保護(RASP)工具採用了 Contrast Assess 同款嵌入式代理。Contrast Protect 在生產環境中查找漏洞利用程序和未知威脅,並將結果提交給安全信息及事件管理(SIEM)控制台、防火牆或其他安全工具。

4. ElastAlert

(https://elastalert.readthedocs.io/en/latest/)

ElastAlert提供近實時接收警報的框架,可接收來自Elasticsearch數據的安全異常、流量激增及其他模式。ElastAlert查詢Elasticsearch並根據一系列規則比較這些數據。一旦出現匹配,ElastAlert便發出警報並隨附建議動作。

大多數DevSecOps工具都提供一定程度的自動化。此類工具自動掃描、發現並修復安全缺陷,只是自動化程度各有不同,從條件式事件驅動的自動化到運用深度學習技術的自動化都有。

1. CodeAI

(http://www.qbitlogic.com/codeai/)

旨在通過深度學習技術自動查找並修復源代碼中的安全漏洞,號稱可為開發人員提供可供參考的解決方案列表,而不僅僅是安全問題列表。其供應商QbitLogic宣稱,已為CodeAI饋送了數百萬個現實世界漏洞修復樣本供訓練。

2. Parasoft tool suite

(https://www.parasoft.com/)

Parasoft提供包括應用開發安全測試在內的多種自動化工具:

1)Parasoft C/C++test

(https://www.parasoft.com/procts/ctest)

用於開發過程早期缺陷識別;

2)Parasoft Insure++

(https://www.parasoft.com/procts/insure)

可以查找不規范編程及內存訪問錯誤;

3)Parasoft Jtest

(https://www.parasoft.com/procts/jtest)

用於Java軟體開發測試;

4) Parasoft dotTEST

(https://www.parasoft.com/procts/jtest)

以深度靜態分析和高級覆蓋作為 Visual Studio 工具的補充。

3. Red Hat Ansible Automation

(https://www.redhat.com/en/technologies/management/ansible)

該工具包含三個模塊——Ansible Tower、Ansible Engine 和 Red Hat Ansible Network Automation,可作為無代理IT自動化技術單獨或聯合使用。盡管不是專門的安全工具,Ansible Automation 卻可供用戶定義規則以確定自身軟體開發項目中哪些部分是安全的。

4. StackStorm

(https://stackstorm.com)

該開源工具號稱「可進行條件式運營」,其事件驅動的自動化能在檢測到安全漏洞時提供腳本化的修復與響應,並附有持續部署、ChatOps優化等功能。

5. Veracode

(https://www.veracode.com/devsecops)

該公司提供DevSecOps環境中廣泛使用的一系列自動化安全工具,包括在代碼編寫時即時自動掃描的Greenlight;在沙箱中掃描代碼漏洞的 Developer Sandbox;識別漏洞組件的 Software Composition Analysis (SCA);以及識別應用缺陷的 Static Analysis。

專用DevSecOps儀錶板工具可使用戶在同一圖形界面中查看並共享從開發伊始到運營過程中的安全信息。有些DevSecOps應用,比如ThreatModeler和Parasoft已自帶儀錶板。

1. Grafana

(https://grafana.com/)

該開源分析平台允許用戶創建自定義儀錶板,聚合所有相關數據以可視化及查詢安全數據。如果不想自行構建,還可以在其網站上選用社區構建的儀錶板。

2. Kibana

(https://www.elastic.co/procts/kibana)

如果你使用Elasticsearch,該開源工具可在統一圖形界面中集成成千上萬的日誌條目,包括運營數據、時間序列分析、應用監視等等。

威脅建模DevSecOps工具用以在復雜的攻擊界面中識別、預測並定義威脅,以便用戶可以做出主動安全決策。有些工具可根據用戶提供的系統及應用信息自動構建威脅模型,並提供可視化界面以幫助安全及非安全人員 探索 威脅及其潛在影響。

1. IriusRisk

(https://continuumsecurity.net/threat-modeling-tool/)

出自 Continuum Security 的解決方案,既可雲部署,也可現場部署,能以基於問卷的界面自動化風險及需求分析,並設計出威脅模型和技術性安全要求。IriusRisk還可幫助用戶管理代碼構建及安全測試階段。

2. ThreatModeler

(https://threatmodeler.com/)

該自動化威脅建模系統有兩個版本:AppSec版和雲版。在提供了用戶應用或系統的功能性信息後,ThreatModeler會基於更新的威脅情報自動就整個攻擊界面進行數據分析和潛在威脅識別。

3. OWASP Threat Dragon

(https://www.owasp.org/index.php/OWASP_Threat_Dragon)

一款基於Web的開源工具,提供系統圖解和用於自動化威脅建模與緩解的規則引擎。Threat Dragon 承諾可與其他軟體開發生命周期(SDLC)工具無縫集成,且界面易於使用。

在開發過程中測試應用以找出潛在漏洞是DevSecOps的關鍵部分,能夠事先發現安全漏洞,避免漏洞被黑客利用。盡管其他工具往往包含了測試功能,比如Parasoft出品的那些,下列工具仍然在應用安全測試上表現強勁。

1. BDD-Security

(https://continuumsecurity.net/bdd-security/)

該出自 Continuum Security 的開源框架可使安全人員在敏捷開發過程中測試行為驅動開發(BDD)語言編寫的功能及非功能性安全場景。此BDD框架旨在使安全功能獨立於應用特定的導航邏輯,讓同樣的安全要求能夠更容易地應用到多個應用程序上。

2. Checkmarx CxSAST

(https://www.checkmarx.com/procts/static-application-security-testing/)

可對25種編程及腳本語言進行未編譯/未構建源代碼掃描的靜態應用安全測試(SAST)工具,能在SDLC早期發現成百上千種安全漏洞。CxSAST兼容所有集成開發環境(IDE),是Checkmarx軟體暴露平台的一部分——該平台可在DevOps所有階段植入安全。Checkmarx的互動式應用安全測試(IAST)工具可檢測運行中應用的安全漏洞。

3. Chef InSpec

(https://github.com/inspec/inspec)

整個開發過程中的每一階段都可以運用該開源工具自動化安全測試以確保針對傳統伺服器及容器和雲API的合規、安全及其他政策要求。

4. Fortify

(https://www.microfocus.com/en-us/solutions/application-security)

Micro Focus 出品,提供端到端應用安全,可供進行覆蓋整個軟體開發生命周期的現場及按需測試。Fortify on Demand 是 Micro Focus 的應用安全即服務產品,提供靜態、動態和移動應用安全測試,以及生產環境中Web應用的持續監視。

5. Gauntlt

(http://gauntlt.org/)

流行測試框架,旨在推動易操作的安全測試及安全、開發和運營團隊間的溝通。GauntIt便於產生攻擊測試用例,且能方便地鉤入現有工具及進程。

6. Synopsys suite

(https://www.synopsys.com/)

Synopsys提供多個應用安全測試工具,包括:

1)SAST工具Coverity

(https://www.synopsys.com/software-integrity/security-testing/static-analysis-sast.html)

自動化測試且融入持續集成/持續交付(CI/CD)管道;

2)SCA工具 Black Duck

(https://www.synopsys.com/software-integrity/security-testing/software-composition-analysis.html)

採用容器及應用中的開源和第三方代碼檢測並管理安全;

3)SeekerIAST

(https://www.synopsys.com/software-integrity/security-testing/interactive-application-security-testing.html)

識別可暴露敏感數據的運行時安全漏洞;

以及一系列用於應用安全測試的託管服務。

以下DevSecOps工具同樣含有上述工具提供的功能,但或多或少略有不同。

1. Aqua Security

(https://www.aquasec.com/)

在整個CI/CD管道和運行時環境中管理端到端安全,可用於所有平台和雲環境的容器及雲原生應用。

2. Dome9 Arc

(https://www.checkpoint.com/solutions/devops-security/)

被 Check Point 收購,提供自動化測試及安全實施,使開發人員能夠將安全及合規融入公共雲應用的構建、部署及運營。

3. GitLab

(https://about.gitlab.com/)

該工具可將DevSecOps架構融入CI/CD過程,在提交時測試每一塊代碼,使開發人員能夠在編程期間緩解安全漏洞,並提供涵蓋所有漏洞的儀錶板。

4. Red Hat OpenShift

(https://www.redhat.com/en/technologies/cloud-computing/openshift)

為基於容器的應用提供內置安全,比如基於角色的訪問控制、以安全增強的Linux(SELinux)實現隔離,以及貫穿整個容器構建過程的核查。

5. RedLock

(https://www.paloaltonetworks.com/procts/secure-the-cloud/redlock/cloud-security-governance)(前身為Evident.io)

Palo Alto Networks 出品,適用於部署階段,幫助開發人員快速發現並緩解資源配置、網路架構及用戶活動中的安全威脅,尤其是在亞馬遜S3存儲桶和彈性塊存儲(EBS)卷上。

6. SD Elements

(https://www.securitycompass.com/sdelements/)

出品自 Security Compass 的自動化平台,旨在收集客戶軟體信息,發現威脅及對策,突出相關安全控制措施以幫助公司企業實現其安全和合規目標。

7. WhiteHat Sentinel 應用安全平台

(https://www.whitehatsec.com/procts/solutions/devsecops/)

該解決方案提供貫穿整個SDLC的應用安全,適用於需將安全集成進工具中的敏捷開發團隊,以及需持續測試以保證生產環境應用安全的安全團隊。

8. WhiteSource

(https://www.whitesourcesoftware.com/)

用於解決開源漏洞,可集成進用戶的生成過程,無論用戶採用什麼編程語言、生成工具或開發環境。WhiteSource使用經常更新的開源代碼資料庫持續檢查開源組件的安全及授權。

『捌』 TypeError: an integer is required (got type bytes)

https://github.com/pytest-dev/pytest-bdd/issues/354

您正在使用毀胡做哪個版本的pytest-bdd?

卸載本地安裝的 pytest-bdd ,就可以了。

pip3 uninstall pytest-bdd==3.0.1

BDD行為驅動簡介及Pytest-bdd基礎使用 :

後纖衡續自己學習下做悄

https://www.cnblogs.com/superhin/p/11454716.html

『玖』 如何編譯Docker源碼

本文根據docker官方給出的docker代碼編譯環境搭建指南做更深入的分析。官方給出的指導比較簡單,但是由於國內的網路問題經常會編譯失敗,了解了編譯步驟後,也可以結合自身遇到的網路問題進行「規避」。
docker的編譯環境實際上是創建一個docker容器,在容器中對代碼進行編譯。 如果想快速的查看編譯環境搭建指導,而不關注環境搭建的機制和細節,可以直接跳到最後一章「總結」。

前提
機器上已經安裝了docker,因為編譯環境是個docker容器,所以要事先有docker(daemon),後面會創建個編譯環境容器,在容器裡面編譯代碼。本文中使用物理機,物理機上運行著docker (daemon)。
機器(物理機)上安裝了git 。 後續使用git下載docker源碼
機器(物理機)上安裝了make。
下載ubuntu 14.04的docker鏡像

下載docker源碼
git clone
會把代碼下載到當前目錄下,後面會把代碼拷貝到容器中。

編譯前分析
官方給的編譯方法是make build 和 make binary等。下面先分析Makefile,看懂Makefile後,編譯環境的准備流程就比較清楚了。

Makefile
在下載的docker源碼中可以看到它的Makefile,Makefile中比較關鍵的幾個參數:
DOCKER_MOUNT := $(if $(BIND_DIR),-v "$(CURDIR)/$(BIND_DIR):/go/src/github.com/docker/docker/$(BIND_DIR)") DOCKER_MOUNT 表示創建容器時的mount參數。因為編譯環境是一個容器,在後續的步驟中啟動容器時使用DOCKER_MOUNT參數,會將物理機上的目錄mount給容器容器,容器中該目錄是編譯生成docker二進制文件的目錄。
DOCKER_FLAGS := docker run --rm -i --privileged $(DOCKER_ENVS) $(DOCKER_MOUNT) 這是後面創建docker容器時的命令行的一部分,其中包含了前面的DOCKER_MOUNT參數。
DOCKER_IMAGE := docker-dev$(if $(GIT_BRANCH),:$(GIT_BRANCH)) 這是docker image參數,鏡像的名字是docker-dev,以當前git中docker版本作為tag名。這個鏡像是在make build一步做出來的。
DOCKER_RUN_DOCKER := $(DOCKER_FLAGS) "$(DOCKER_IMAGE)" 創建docker容器的命令行,組合了前面的DOCKER_FLAGS 和 DOCKER_IMAGE 。 從命令行中可以看出,啟動容器使用的參數有 --rm -i --privileged,使用了一些環境變數,還有使用了-v參數把物理機上目錄mount給容器,在容器中編譯好二進制文件後放到該目錄中,在物理機上就能獲得docker二進制文件。啟動的的docker 容器鏡像名字是docker-dev。下文會介紹docker-dev鏡像是怎麼來的。
由於官方給出的「構建編譯環境」的方法是執行 make build,下面在Makefile中看到build分支是這樣的:

make build時會調用 docker build -t "$(DOCKER_IMAGE)" . 去製作一個叫做DOCKER_IMAGE的鏡像。
進行源碼編譯的方式是執行 make binary來編譯代碼,在Makefile中make binary的分支如下:

make binary除了進行 make build以外,會執行$(DOCKER_RUN_DOCKER),即上文提到的docker run命令行。由於執行過了build,會build出來docker-dev鏡像,所以在docker run時直接使用前面build出來的鏡像。docker run時的命令行參數是hack/make.sh binary。make binary的過程實際上是創建一個容器,在容器中執行hack/make.sh binary腳本。接下來會詳細介紹make build和make binary所做的內容。
make build
根據官方的指導,先執行make build來搭建編譯環境。上面分析了,make build實際上是製作了一個鏡像,這個鏡像里會包含編譯代碼所需的環境。下面來介紹下這個鏡像。

Dockerfile
在和Makefile相同的目錄下(源碼的根目錄),有Dockerfile。執行make build 相當於調用docker build,使用的就是該Dockerfile。Dockerfile中的幾個主要步驟(有些步驟這里略過):
FROM ubuntu:14.04 使用ubuntu 14.04作為基礎鏡像;在宿主機上,要事先下載好ubuntu 14.04鏡像。
安裝一些編譯需要的軟體;
用git下載lvm2源碼,並編譯安裝;
下載並安裝GO 1.5.1;
安裝GO相關的tools 可以做code coverage test 、 go lint等代碼檢查
安裝registry和notary server;
安裝docker-py 後面跑集成測試用的
將物理機的contrib/download-frozen-image.sh 腳本拷貝到鏡像中/go/src/github.com/docker/docker/contrib/
運行contrib/download-frozen-image.sh 製作鏡像 實際上這一步只是下載了3個鏡像的tar文件。注意:docker build相當於創建一個臨時的容器(在臨時的容器中執行Dockerfile中的每一步,最後在保存成鏡像),「運行contrib/download-frozen-image.sh 製作鏡像」這個動作出現在Dockerfile中,相當於在docker build所創建的臨時的容器中下載docker鏡像,有docker-in-docker容器嵌套的概念。下一小節會對download-frozen-image.sh腳本做詳細分析。
ENTRYPOINT ["hack/dind"] 做出來的鏡像,使用它啟動的容器可以自動運行源碼目錄中的hack/dind腳本。 dind這個腳本是a wrapper script which allows docker to be run inside a docker container 。後面的小節會對hack/dind腳本做詳細的分析。
COPY . /go/src/github.com/docker/docker 把物理機上的docker源碼文件打入到鏡像中
download-frozen-image.sh腳本
上一小節里提到,在Dockerfile中,有一步會調用contrib/download-frozen-image.sh ,它主要作用是下載3個鏡像的tar包,供後續docker load。在Dockerfile中的調用方式如下:

download-frozen-image.sh腳本中會依次解析參數,其中/docker-frozen-images作為base dir,後面下載的東西全放到這里。之後的3個參數是鏡像,裡麵包含了鏡像名(例如busybox)、鏡像tag(例如latest)、鏡像id(例如),後面會在循環中依次下載這3個鏡像的tar文件。
download-frozen-image.sh腳本中會通過curl從registry上獲取如下信息:
token:獲取token,後面curl獲取的其他信息時都需要使用token。例如本例中 token='signature=,repository="library/busybox",access=read'
ancestryJson:把鏡像相關聯的歷史層次的id也都獲取到,因為每一層的tar都需要下載。本例中 ancestryJson='["", ""]'
這里可以看到這個鏡像只有2層,兩層的id這里都列了出來。 每個鏡像包含的層數不同,例如。第三個鏡像jess/unshare共有10層。
VERSION、json、tar: 每一層鏡像id的目錄下,都下載這3個文件,其中VERSION文件內容目前都是「1.0」,json文件是該層鏡像的json文件,tar文件是該層鏡像的真正內容,以.tar保存。
下載好的各層鏡像目錄結構如下:
$ls

$tree

hack/dind腳本
在Dockerfile中,ENTRYPOINT ["hack/dind"] ,表示在鏡像啟動後,運行該腳本,下面分析一下這個腳本的功能。
腳本在代碼根目錄下的hack目錄中,作者對腳本的描述是 DinD: a wrapper script which allows docker to be run inside a docker container.
就是可以在docker容器中創建docker容器。它就做了一個事,那就是在容器中創建好cgroup目錄,並把各個cgroup子系統mount上來。
為了方便理解,我們可以先看看物理機。在宿主機上如果創建docker容器,需要宿主機上必須事先mount cgroup子系統,因為cgroup是docker容器的一個依賴。同理docker-in-docker也要求外層的docker容器中有cgroup子系統,dind腳本在容器啟動後,先去/proc/1/cgroup中獲取cgroup子系統,然後依次使用mount命令,將cgroup mount上來,例如mount -n -t cgroup -o "cpuset" cgroup "/cgroup/cpuset"
最終在運行make build後,會製作出一個叫docker-dev的鏡像。
make binary
執行make binary 就可以編譯出docker二進制文件。編譯出來的二進制文件在源碼目錄下的bundles/1.10.0-dev/binary/docker-1.10.0-dev ,其中還包含md5和sha256文件。

Makefile中的binary
Makefile中關於make binary流程是

先執行build,即上一節介紹的,製作docker-dev編譯環境鏡像。
再執行DOCKER_RUN_DOCKER,創建容器,DOCKER_RUN_DOCKER就是執行docker run,使用docker-dev鏡像啟動容器,並且會mount -v 將容器生成二進制文件的路徑與宿主機共享。DOCKER_RUN_DOCKER在「編譯前分析」一章中有介紹。啟動的容器運行的命令行是 hack/make.sh binary 。docker run完整的形式如下:
docker run --rm -i --privileged -e BUILDFLAGS -e DOCKER_CLIENTONLY -e DOCKER_DEBUG -e DOCKER_EXECDRIVER -e DOCKER_EXPERIMENTAL -e DOCKER_REMAP_ROOT -e DOCKER_GRAPHDRIVER -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT -v "/home/mu/src/docker/docker/bundles:/go/src/github.com/docker/docker/bundles" -t "docker-dev:master" hack/make.sh binary
hack/make.sh腳本
上一節提到的make binary中創建的容器啟動命令是hack/make.sh binary,運行容器中的(docker源碼目錄下的)hack/make.sh腳本,參數為binary。
make.sh中根據傳入的參數組裝後續編譯用的flags(BUILDFLAGS),最後根據傳入的參數依次調用 hack/make/目錄下對應的腳本。例如我們的操作中傳入的參數只有一個binary。那麼在make.sh的最後,會調用hack/make/binary腳本。
hack/make/binary腳本中,就是直接調用go build進行編譯了,其中會使用BUILDFLAGS LDFLAGS LDFLAGS_STATIC_DOCKER等編譯選項。
如果最終生成的docker二進制文件不在bundles/1.10.0-dev/binary/目錄下,那麼可能是編譯參數BINDDIR設置的不正確,可以在執行make binary時增加BINDDIR參數,例如
make BINDDIR=. binary , 將BINDDIR設置為當前目錄。
總結
編譯步驟總結:
1、編譯前在物理機上安裝好make、git,並下載好docker代碼。下載好ubuntu:14.04鏡像
2、執行make build 。這步執行完會在物理機上創建出一個docker-dev的鏡像。
3、執行make binary 。 這步會使用docker-dev鏡像啟動一個容器,在容器中編譯docker代碼。編譯完成後在物理機上直接可以看到二進制文件。默認二進制文件在 bundles/1.10.0-dev/binary/目錄下
4、docker代碼里有很多test,可以使用此套編譯環境執行test,例如 make test 。 更多參數可以看Makefile
搭建環境心得:
1、在make build時,使用Dockerfile創建製作鏡像,這個鏡像有40多層,其中一層失敗就會導致整個build過程失敗。由於Dockerfile中很多步驟是要連到國外的網站去下載東西,很容易失敗。好在docker build有cache機制,如果前面的層成功了,下次重新build時會使用cache跳過,節省了很多時間。所以如果make build中途失敗(一般是由於國內連國外的網路原因),只要重新執行make build就會在上次失敗的地方繼續,多試幾次可以成功。
2、如果其他人已經build出了docker-dev鏡像,可以把它下載到自己的環境上。這樣在自己make build時,會跳過那些已經在本地存在的層,可以節省時間。
3、每一次編譯會自動刪除掉前面已經生成的二進制文件,所以不用擔心二進制文件不是最新的問題。

『拾』 bdd是什麼意思

行為驅動開發(Behavior-Driven Development)(簡寫BDD),在軟體工程中,BDD是一種敏捷軟體開發的技術。

行為驅動開發(BDD)是測試驅動開發的延伸,開發使用簡伍氏單的,特定於領域的腳本語言。這些DSL將結構化自然語言語句轉換為可執行測試。結果是與給定功能的驗收標准以及用於驗證該功能的測試之間的關系更密切。因此,它一般是測試驅腔此散動開發(TDD)測試的自然延伸。

其他意思

bdd是韓國LCK賽區Gen.G戰隊中單的游戲名,全名叫郭普成。

2015年4月,BDD加入CJE戰隊開啟自己的職業生涯,但由於年齡不足的原因,他一直作為CoCo的替補。

2016年LCK春季賽,BDD與另一名中單選手SKY輪換上場,共出場22場。CJE以8勝10位列常規賽第八,未能進入季後賽。同年LCK夏季賽,BDD共出場27場。但CJE在常規賽僅取得3勝15負的戰績,排名聯賽墊底。12月6日,LZ戰隊宣布原扒神CJE戰隊中單選手BDD加入。

閱讀全文

與bdd模型驅動源碼相關的資料

熱點內容
傳奇引擎修改在線時間命令 瀏覽:105
php取域名中間 瀏覽:896
cad命令欄太小 瀏覽:830
php開發環境搭建eclipse 瀏覽:480
qt文件夾名稱大全 瀏覽:212
金山雲伺服器架構 瀏覽:230
安卓系統筆記本怎麼切換系統 瀏覽:618
u盤加密快2個小時還沒有搞完 瀏覽:93
小米有品商家版app叫什麼 瀏覽:94
行命令調用 瀏覽:434
菜鳥裹裹員用什麼app 瀏覽:273
窮查理寶典pdf下載 瀏覽:514
csgo您已被禁用此伺服器怎麼辦 瀏覽:398
打開加密軟體的方法 瀏覽:156
雲存儲伺服器可靠嗎 瀏覽:967
2核1g的雲伺服器能帶動游戲嘛 瀏覽:898
逆命20解壓碼 瀏覽:146
徐州辦犬證需要下載什麼app 瀏覽:1002
百保盾是什麼樣的app 瀏覽:699
文件和文件夾的命名規格 瀏覽:798