揚聲器 | 成績單 |
| 韋恩·萊文 | 歡迎參加我們的會議,主題是擴展 JSL 應用程序的 Hamcrest 自動化測試以實現持續改進。 |
| 我們將在這裡向您展示的,我們對您的承諾,是我們將向您展示如何建立一個高效、具有成本效益的企業 |
| 高質量保證、高度可靠且可支持的基於 JMP 的關鍵任務集成分析系統。 是的,有很多話要說,但那就是 |
| 這就是我們在這個環境中所做的事情。 我們對此非常滿意。 我們非常榮幸能夠與您分享。 |
| 這是我們將遵循的議程。 稍微介紹一下我自己,我稍後會介紹一下 Predictum,因為您可能不太了解我們, |
| 我們的背景、我們的 JSL 開發背景、基礎設施以及與此相關的一些歷史。 |
| 然後我們將在這裡與您分享我們所實施的變革的結果。 然後我們將進行演示並討論下一步是什麼,我們計劃繼續做什麼,最後我們將開放它,回答您可能有的任何問題。 |
| 我是韋恩·萊文,右邊就是我。 我是 Predictum 的總裁,我已加入 |
| 與文斯·法勒。 文斯是我們的首席軟件工程師,他一直領導著這項非常重要的計劃。 就在這裡簡單介紹一下我們。 我們是 JMP 合作夥伴。 |
| 我們於 1992 年成立,今年 29 歲。 |
| 我們使用 JMP 進行統計方法等方面的培訓,在這些領域提供諮詢,我們花費了大量時間來構建和 |
| 部署集成分析應用程序和系統,因此這項工作對我們非常重要。 我們首先交付 JMP 應用程序 |
| 2000 年的 JMP 4.0,是的,確實是 20 多年前,我們一直在構建更大的系統。 當然,從那時起,它就太小了,但我認為我們是圍繞 JMP 8 或 9 開始構建更大的系統的。 |
| 所以我們在這方面有相當多的歷史,很容易就超過10年了。 簡單介紹一下背景……直到 2019 年下半年,我們的開發環境真的很不同,很零散。 |
| 項目管理 |
| 在那裡,但一切又都破碎了。 我們有不同的應用程序用於版本控制和管理時間,您知道,我們的開發人員時間等等,以及一般的項目管理。 |
| 開發商很容易花錢,我們會討論這個, |
| 他們大約一半的時間只是做常規的機械事情,例如加密和打包 JMP 插件。 你知道,維護配置包, |
| 你知道,並分離存儲庫或我們通常所說的存儲庫,用於加密和未加密的腳本。 我們必須考慮很多事情,但這並不是真正的開發工作。 這確實是工作 |
| 開發人員的才華……被浪費了。 正如我所說,我們已經這樣做了很長時間,即使在 2019 年,我們也輕鬆地度過了 10 年,所以 10 多年的遺留框架甚至可以追溯到 JMP 5,你知道,你知道,它變得臃腫且緩慢。 |
| 我們知道 JMP 多年來已經取得了長足的進步。 我的意思是,在 JMP 9 中,我們有了命名空間,JMP 14 引入了類,這就是 Hamcrest 的時候 |
| 開始了。正是 Hamcrest 真正讓我們能夠採取這一行動……通過這一重大舉措。 因此,我們早在 2019 年 8 月就開始了這項重大舉措。 |
| 就在那時,我們獲得了第一個 Gitlab 許可證,這就是我們新的開發……我們新的開發架構的開發,就這樣,開始成形,從那時起它就一直在改進。 |
| 基本上每個月,我們都在不斷增加和增強我們的能力,隨著我們的前進,變得越來越高效。 |
| 而且這種情況還在繼續,所以如果你願意的話,我們實際上認為這是一種精益類型的努力。 它確實遵循精益原則,並且加速了我們的發展。 |
| 多虧了這個系統,我們有了自動化測試,文斯將向我們展示這一點。 我們這裡有這個小模型,儘早測試並經常測試 |
| 這就是我們所做的。 它支持重用代碼,並且我們重新開發了 Predictum 系統框架。 現在是2.0了。 我們從早期的努力中學到了很多東西。 所有這些都消失了,幾乎全部消失了,並且被替換和擴展了。 |
| 文斯將告訴我們更多相關信息。 很容易,很容易,我們的生產力就提高了 50% 以上,我只想說開發人員更高興了。 他們不再那麼沮喪。 |
| 他們更專注於自己的工作,我的意思是開發人員應該做的真正工作,而不是那些乏味的事情。 |
| 我要說的是,仍有改進的空間,所以我們還沒有完成,文斯會告訴我們更多相關信息。 |
| 您可能會說,我們現在有了開發標準,因此我們有功能的風格指南,並且我們所有的開發都是基於功能的。 |
| 每個功能至少需要一次 Hamcrest 測試,並且開發人員正在相互共享代碼審查 |
| 確保我們遵循我們的標準。 它還提出瞭如何提高這些標準、使其變得更好的問題。 |
| 我們還有這些有趣的會議,鼓勵開發人員打破代碼, |
| 是的,所以它們被稱為“這些破解代碼挑戰”,或者你有什麼。 因此,它已成為我們工作方式的一部分,並且完全適合這種開發環境。 例如,它會導致進一步的測試,添加更多的 Hamcrest 測試。 我們有一個很小的、相當小的項目 |
| 我們一年多前就這麼做了。 我們即將進入一個新階段。 事情已經過去了... |
| 其中內置了超過 100 個 Hamcrest 測試,並且在開發過程中一遍又一遍地運行它們。 |
| 其他一些好處是它允許我們分配和跟踪我們的資源分配,比如開發人員正在做什麼。 每個人都知道其他人在做什麼 |
| 持續集成、持續部署等), |
| 有...代碼衝突很早就被檢測到,所以如果我們...而且我們確實這樣做了,我們有多個人在處理某些項目,所以,你知道,有人在這裡更改了一個功能,它會與其他人的功能發生衝突是在做。 我們會更快找到答案。 |
| 它還使我們能夠提高多名員工的支持能力。 我們不能讓代碼依賴於特定的開發人員;我們必須擁有任何開發人員或支持人員都可以支持的代碼 |
| 前進。 所以這也是我們的一個重要目標。 它確實總體上推進了整個質量保證領域, |
| 包括支持 FDA 的要求,涉及 QA,比如驗證、IQ OQ PQ。 所以...我們正在自動化或半自動化 |
| 這些任務也通過這個基礎設施完成。 我們確實在內部和外部使用它,所以你可能知道,我們有 |
| 那裡有一些產品,(???)科比腰帶實驗室,但新產品垃圾郵件很好科比發送垃圾郵件(???)也在其他地方談論 |
| 2021 年 JMP Discovery 歐洲會議。 你可能想去看看,但它們相當大 |
| 代碼庫,它們都是開發出來的,換句話說,我們吃自己的狗糧,如果你知道這個表達方式,但我們也將它與我們所有的客戶一起使用 |
| 開發,所以這對我們的客戶來說很重要,因為我們正在構建他們將依賴的應用程序。 |
| 所以我們,我們需要……我們需要擁有讓我們變得可靠的基礎設施,無論如何,這是其中的一個重要部分。 |
| 我提到了Predictum系統框架。 您可以在這裡看到它的一些片段。 它就在腳本索引中,你知道,我們看到了參數和 |
| 例子等等。 我們構建了所有這些,並且 95%,其中超過 95% 都有與之相關的 Hamcrest 測試。 當然,我們的目標是確保所有人都這樣做,並且我們正在實現這一目標。 |
| 我們快到了。 有……這些框架……這個框架實際上是我們這里基礎設施的一部分。 這是它的重要要素之一。 另一個就是……漢克雷斯特…… |
| 進行單元測試的能力。 我將......最後有一張幻燈片,它將為您提供一個社區鏈接,您可以在其中了解有關 Hamcrest 的更多信息。 這是一個 |
| 正如我幾分鐘前提到的,JMP 在 JMP 14 中為我們帶來了開發。 Gitlab 是其中的重要組成部分;它為我們提供了項目管理存儲庫、CI/CD 管道等。 |
| 還有我們為 JSL 創建的 Visual...Visual Studio 代碼擴展,我們...您會在那裡看到五顆星,因為它在 |
| 在視覺工作室上。 我不確定我們稱之為什麼。 文斯,也許你可以告訴我們,商店裡有什麼。 它已被下載數百次,我們已經 |
| 定期更新。 所以這也是你可以去尋找的東西。 我認為我們在最後的資源幻燈片中也有一個鏈接。 |
| 所以我現在要做的就是把這個任務交給 Vince Faller。 文斯再次擔任我們的首席軟件工程師。 正如我所說,文斯從 2019 年 8 月開始領導這項倡議。 這是很多艱苦的工作 |
| 艱苦的工作仍在繼續。 公司裡的我們所有人都非常感謝文斯和他的領導。 話雖如此,文斯,你為什麼不從這裡拿走它呢? 我要... |
| 我是... |
| 文斯·法勒 | 分享。 |
| 所以韋恩多次提到了漢克雷斯特。 對於不知道 Hamcrest 是什麼的人來說,它是由 |
| JMP。 |
| 賈斯汀·奇爾頓(Justin Chilton)和埃文·麥考克(Evan McCorkle)領銜。 它只是一個單元測試庫,可讓您以自動化的方式運行、測試並獲取結果。 |
| 它確實讓我們能夠做到這一點,這就是為什麼它被稱為擴展。 |
| 我要展示一些東西 |
| 與我的屏幕。 我幾乎只在我們構建的 VSCode 擴展中工作。 這是 VSCode。 |
| 我們這樣做是因為它有很多我們不必編寫的內置功能或可擴展功能,例如集成、實驗室集成。 |
| 在這裡您可以看到這是一個 JSL 腳本,並且它讀取得很好。 |
| 如果你想得到它,如果你......如果你熟悉 VSCode,它只是一個輕量級的文本編輯器。 您只需輸入 JMP |
| 你會看到的。 這是唯一的一個。 |
| 但我們會繼續我們正在做的事情。 |
| 所以。 |
| 對於我們所做的任何代碼更改, |
| 有管道運行。 |
| 我們只是展示它的作用。 因此,如果我將自述文件更改為 Discovery 的演示。 |
| 2021 年。 |
| 我將承諾這一點。 如果你不知道得到,就只是承諾 |
| 說我想要我們目前所處位置的快照,然後將其推送到存儲庫並將其保存在服務器上。 |
| 快樂的一天。 |
| 提交消息。 更多自述信息。 |
| 我可以直接獲取推送,因為 VSCode 非常棒。 |
| 管道演示。 |
| 所以現在我已經推動了它。 將會有一條管道正在運行。 我可以到這裡點擊這個,它會給我我的合併請求。 所以現在 |
| 管道開始運行。 |
| 我可以檢查管道的狀態。 |
| 它現在正在做的是檢查並檢查它是否具有所需的 Hamcrest 文件。 我們有一些要求 |
| 我們強制執行,以便它能夠... |
| 我們可以確保我們 |
| 做好我們的工作。 |
| 然後就完成了。 我要按加密。 |
| 現在加密將獲取整個包並對其進行加密。 |
| 如果我們去這裡的話 |
| 這只是某處的虛擬機。 它應該 |
| 開始跑步 |
| 一秒鐘。 |
| 所以它只是遍歷所有代碼。 |
| 寫下所有加密密碼,檢查,點擊所有這些東西。 如果您曾經嘗試過同時加密多個腳本, |
| 你可能會知道這很痛苦,所以我們將其自動化,這樣我們就不必這樣做,因為正如韋恩所說,我們花了很多時間來做這些。 |
| 就像,如果我們每次想要發布任何版本時都要檢查 100 個腳本並加密其中的每一個腳本,那就太糟糕了。 |
| 因為我們必須有我們的 |
| 代碼被加密,因為,是的,對不起,意見,好吧,我可以停止分享它。 |
| 啊。 |
| 這樣就可以運行了。 |
| 應該很快就會完成。 |
| 然後它將進行並分階段,然後分階段基本上採用我們想要的所有信息源,如我們的文檔中所示,如 |
| 我們編寫的任何其他內容,它都會將它們呈現為我們在插件中想要的形式,因為就像github、gitlab 的其餘部分一樣,我們的大部分文檔都是用markdown 編寫的,然後我們將其呈現為任何形式。 |
| 我不需要展示其餘的內容,但是是的。 所以它就過去了。 它會過去的。 |
| 我們將回到 VSCode。 |
| 所以。 |
| 如果我們要改變的話,那麼這只是一個單一的功能。 |
| 如果我走進這裡,如果我要運行這個...... |
| JSL,運行當前選擇。 |
| 所以。 |
| 您可以看到它回來了...它要做的就是打開 Big Class,運行擬合線,然後得到方程。 它正在返回方程。 |
| 實際上你也可以看到它也跑到了這裡。 |
| 但。 |
| 所以這可能需要更多的文檔。 |
| 我們就像,哦,我們實際上並不希望打開這個數據表。 |
| 但讓我們快速運行一下。 |
| 並說, |
| 不。這不是一個好的回報,它顯然將方程式全部大寫。 |
| 所以如果我表演的話。 |
| 更好的文檔。 |
| 推。 |
| 再次回到這裡。 |
| 所以,它再次推動。 這是另一條管道。 |
| 它只是按順序運行一堆 power shell 腳本,具體取決於我們如何設置它。 |
| 但您會注意到該管道有更多階段。 |
| 所以當我們 |
| 為了幫助擴展這一點,我們只測試 JSL |
| 一開始是最低限度的,然後,當它通過時,我們允許進一步測試。 |
| 而且我們只測試是否有 JSL 文件發生了變化。 |
| 但我們可以經歷這個。 |
| 它將運行並告訴我們它在測試中的位置,以防測試凍結。 您知道,如果您有一個模式對話框無法關閉,顯然 JMP 之後不會繼續執行任何操作。 但你可以看到,它做了很多事情,是的,太棒了。 我受夠了。 |
| 令人興奮。 |
| 刷新一下。 獲得一個綠色的小複選標記。 |
| 我們現在就可以開始運行一切了。 它將經歷,測試所有內容,然後對其進行加密,然後測試加密的內容,基本上就是我們要製作加載項的實際內容,然後再次暫存它,為我們打包它,創建實際的加載項 -我們會給予客戶。 |
| 我不會很快做這件事,因為這需要一分鐘。 |
| 但 |
| 假設我們走進這裡,我們就像,哦, |
| 好吧,我真的很想關閉這個數據表。 我不知道為什麼我首先評論了。 我認為它不應該開放,因為我不再使用它,我們不……我們不想要這樣。 |
| 我們會說好的。 |
| 關閉 dt。 |
| 再次推。 現在,這一切都可以通過 Hamcrest 在我的計算機上手動完成。 |
| 但你知道,有時開發人員會推送一些東西,而不是在他們的計算機上運行所有的 Hamcrest,這就是......它的全部目的就是捕捉它。 它迫使我們把工作做得更好一點。 |
| 和 |
| 是的。 |
| 繼續點擊這個按鈕。 我可以打開它,但沒關係。 |
| 現在您會看到它再次運行管道。 前往管道。 |
| 我將繼續重複這句話。 我們只是進行測試、加密,然後測試 |
| 因為有時加密會進入它自己的狀態 |
| 如果有人曾經加密過的話,世界上就充滿了問題。 |
| 跑,跑,跑,跑,跑。 |
| 然後,哦,我們得到了一個投球。 你會看一下嗎? |
| 我並不是想面無表情,但你知道。 |
| 因此,如果我們將其標記為就緒並說,是的,我們完成了,我們會看到, |
| 哦,好吧,那個測試沒有通過。 |
| 現在 |
| 我們可以下載 |
| 為什麼工件中的測試沒有通過。 |
| 這將打開一個 J 單元 |
| 我要在這裡提取的文件。 |
| 它還會在 getlab 中渲染它,這可能更容易,但現在我們就這樣做。 |
| 最終。 盡量減少一切。 |
| 現在來吧。 |
| 所以,我們可以看到 R 平方發生了一些事情並且失敗了。 |
| 裡面 |
| 藍色的。 |
| 所以我們可以來這裡。 |
| 比如說,為什麼 boo 中有一些東西會導致這個失敗? |
| 我們看到,哦,有人稱我們的方程為 |
| 然後他們就假設數據表就在那裡。 因為我更改的某些內容破壞了其他人的代碼,就好像這種情況會發生一樣。 |
| 所以我們遇到了這個問題。 |
| 你去哪兒? 開始了。 |
| 所以這就是我們在這裡所做的一切的主要目的,就是能夠發現我改變了一些東西並且我破壞了別人的東西這一事實。 |
| 這樣我就可以通過了。 |
| 看看boo做了什麼。 |
| 說吧,好吧,也許我應該開大班 |
| 我。 |
| 是的,很酷。 好吧,如果我保存它, |
| 我也許應該讓它變得更好。 |
| 自己開大班。 |
| 我會表演這個。 |
| 開大班。推一下。 |
| 再說一遍,只是顯示 |
| 舊管道。 |
| 現在這應該需要 |
| 不……不太長。 |
| 所以我們要進去這裡。 我們...我們只測試一個...以... |
| JMP版本,不過可以看到 |
| 自動地,我們只測試一個。 |
| 然後等待開發人員說,是的,我已經完成了,一切看起來都很好。 繼續。 我們這樣做是出於資源原因, |
| 因為這些系統運行在一直自動運行的虛擬機上,而且我們有多個開發人員,他們都在使用這些系統。 |
| 也是... |
| 你可以看到,這實際上是一個 docker 系統,我們正在將它們容器化。 |
| 好吧,我們正在將這些容器化。 我們已經讓它們工作了,但我們還沒有所有版本。 |
| 但是我們運行14.3,至少對於這個項目,我們運行14.3、15、15.1, |
| 這應該有效。 |
| 讓我們恢復一切吧。 |
| 因為你知道那是有效的。 |
| 也許應該拍出經典……但沒關係。 |
| 嗯是的。 |
| 我們要測試一下。 |
| 我感覺我一直在一遍又一遍地說這句話。 我們將測試一切。 |
| 實際上,我們會讓這個運行來向您展示我們所得到的最終結果。 |
| 應該只需要。 |
| 一點點。 |
| 因此,我們將對其進行測試,確保其正常運行,並且您可以看到日誌。 我們從正在發生的事情、它的位置中獲取有用的信息,就像它會告訴你正在跑步的跑步者一樣。 |
| 我現在只在 Windows 上運行。 再說一次,這是一個演示,但是 |
| 我們應該能夠跑 |
| 更多的。 |
| 當它運行時,我將進一步討論 VSCode。 |
| 在 VSCode 中,我們還...還有代碼片段和其他東西,所以如果你想創建一個函數, |
| 它會為您創建所有功能信息。 我們使用自然文檔 |
| 又是從 Hamcrest 隊偷來的, |
| 作為我們的 |
| 開發文檔。 |
| 所以它只會把所有內容都放在自然文檔的形式中。 所以,再次強調,這個想法是幫助我們完成我們的工作,並迫使我們完成我們的工作 |
| 好一點,多一點熱情。 |
| 韋恩·萊文 | 為了文檔? |
| 文斯·法勒 | 這就是文檔,是的。 |
| 韋恩·萊文 | 在我們開發的同時,我們也在記錄。 |
| 文斯·法勒 | 是的。 絕對地。 |
| 要知道,它還有for循環、while循環。 |
| 對於關聯行,類似的東西。 |
| 我們……這……這件事完成了嗎? 大概已經完成了,是的。 |
| 這樣我們就得到了綠色複選標記。 現在它將在所有系統上運行。 |
| 如果我們能回到這裡,你就會看到它。 |
| 打開 JMP。 它將運行一些測試, |
| 可能會開大班。 |
| 然後關閉所有...將其自身全部關閉。 |
| 韋恩·萊文 | 所以我們這樣做主要是因為 |
| 我們的許多客戶部署了不同版本的 JMP,他們想要特定的插件,但他們 |
| 運行它,你知道,他們在現場有不同的版本。 我們還針對 JMP 的早期採用者版本進行測試,這是 JMP 的一項服務,因為我們報告了錯誤。 |
| 但對於客戶來說,這也很有幫助,因為他們知道他們可以......他們可以升級到新版本的 JMP。 他們知道我們為他們構建的應用程序已經過測試。 |
| 這對我們來說只是例行公事。 |
| 好的。 |
| 文斯·法勒 | 你完成了。 你完成了。 你完成了。 |
| 改成... |
| 我可以談論... |
| 這只是要運行,我們可以 |
| 如果你願意的話,可以用這個電影魔法,梅格。 |
| 只是為了讓它跑得更快。 |
| 基本上,我只是想進入舞台,但需要一點時間。 |
| 韋恩,對此你還有什麼要說的嗎? |
| 涼爽的。 |
| 我會把那個... |
| 我可以說的是 |
| 當我們上台的時候 |
| 我們在 mk docs 中也有我們的文檔。所以它實際上會運行 mk doc 的版本,渲染它,將幫助放入幫助文件中,並且基本上能夠為我們創建一個版本,這樣我們就不必 |
| 處理它。 |
| 因為創建版本需要付出很多努力。 |
| 加密。 快完成了。 |
| 可能應該只預裝一個。 |
| 現場演示,你要做什麼。 |
| 一些。 |
| 跑步。 |
| 哦,我絕對想做一件事。 |
| 所以,管道實際上做的最後一件事是檢查我們是否實際花費了時間,因為,你知道,如果 |
| 我們實際上並沒有記錄我們花費的時間,我們沒有得到報酬,所以強迫我們這樣做。 |
| 太棒了,美好的時光。 |
| 文德·法勒 | 所以 |
| 文斯·法勒 | 如果沒有這個,工作就會失敗。 |
| 我只能展示一些工作。 試。 |
| 那是碼頭工人的。 我們不希望這樣。 |
| 所以 |
| 你可以看到這給我們帶來了成功。 |
| 沒有失敗。 沒有意外的投擲。 這些都是來自漢克雷斯特的東西。 |
| 快點。 多一個。 |
| 好的,開始上演了。 |
| 它所做的一件事是創建存儲庫。 |
| 它每次都會讓它們變得新鮮。 |
| 所以就像,它試圖將其保持在某種無狀態狀態 |
| 方式。好的,我們現在可以下載工件了。 |
| 現在我們應該有這個管道演示。 |
| 我真希望它就去那裡。 |
| 什麼。 |
| 為什麼 Internet Explorer 已啟動? 現在您將看到管道演示 |
| 是一個 JMP 插件。 |
| 如果我們解壓它。 |
| 如果您不知道,JMP 插件只是一個 zip 文件。 |
| 如果我們現在看的話 |
| 你可以看到裡面有我們所有的腳本,它有我們的 foo,它有我們的 bar。 如果我們打開那些, |
| 打開, |
| 你可以看到這是一個加密文件。 |
| 這基本上就是我們能夠提供給客戶的 |
| 並且沒有那麼多機械工作。 韋恩提到過 |
| 開發人員不會那麼沮喪,就我個人而言,我認為這是輕描淡寫的,因為在我們把它落實到位之前,一遍又一遍地這樣做是非常令人沮喪的,而這已經幫助了很多人。 |
| 那。 |
| 韋恩·萊文 | 現在,關於加密,當您交付加載項時 |
| 對於公司內部的用戶使用,您通常不希望出於安全原因等原因,您不希望任何人都能夠進入並使用它們 |
| 處理代碼。 你知道,這樣的事情,所以我們可能會提供未加密的代碼,只是為了,你知道,所以客戶端的代碼是加密的,但為了交付給最終用戶,你通常希望所有內容都加密,所以它不能被篡改。 只是其中之一。 |
| 文斯·法勒 | 是的,我的演示就結束了。 韋恩,如果你想把它拿回來做總結的話。 |
| 韋恩·萊文 | 是啊,太棒了。 |
| 當然,非常感謝,文斯。 所以整個系統中有很多活動部件,所以基本上,確保我們有, |
| 您知道,代碼是由多個用戶開發的,彼此之間不會發生衝突。 我們正在同時構建文檔。 實際上,文檔是隨應用程序一起部署的,我們不必將其編入其中。 它是... |
| 我們設置了基礎設施,以便自動處理。 我們可以將其與代碼一起全面、同時更新, |
| 如果你願意的話。 正在進行的 Hamcrest 測試,每一個已編寫的函數, |
| 如果你願意的話,會有預期的結果。 所以我們對它們進行了比較,所以我們簡單地看到,我猜這個方程存在一些問題。 一個 R 方或任何返回不同值的東西, |
| 所以換句話說,它崩潰了,說嘿,這裡有些不對勁;我期待函數的輸出 |
| 對於一個用例。 這是我們從客戶那裡得到的東西之一,所以你知道,我們建立了一個用例池,這些用例被轉化為 Hamcrest 測試,然後我們就開始了。 這裡還有一些其他幻燈片 |
| 您可以使用,例如,當您,當您,如果您去下載幻燈片時。 所以我會把它留給你,這是管道的小圖片 |
| 我們正在使用這一點,並且也有一些關於開發人員的代碼審查活動。 如果你想來回的話。 Vince,您想在此處添加有關如何進行代碼審查和批准的任何內容嗎? |
| 文斯·法勒 | 是的,所以在合併請求中 |
| 它將在代碼差異上包含 JSL 代碼。 再說一次,一個大 |
| 謝謝至 |
| 也做了 Hamcrest 的人,因為他們還為 GitHub 和 GitLab 啟動了一個詞法分析器(?),以便能夠讀取 JSL,所以實際上這是在 getlab 內部。 |
| 他們還可以閱讀 JSL。 它不執行它,但它具有很好的格式。 它不只是白色的文字,它很漂亮。 我們只要進去, |
| 就像這個屏幕截圖一樣,您單擊一行,輸入您想要的評論,它就成為一個可審查的任務。 所以我們嘗試在 GitLab 內部做盡可能多的事情 |
| 出於透明度原因,以及 |
| 一旦一切都結束了,你可以說是的,我的合併請求已經準備好了。 讓我們把它放到 master 分支,main 分支。 |
| 韋恩·萊文 | 太棒了。 所以你真的是......它很有幫助,你知道,我們真的正在定義編碼標準,如果你願意的話,並且 |
| 我不喜歡“執行”這個詞,但它就是這個意思。 它減少了變化。 如果願意的話,它可以讓多個開發人員更輕鬆地了解什麼 |
| 其他人做了什麼。 當我們引入新的開發人員時,他們開始了解該標準,他們知道要尋找什麼,他們知道要做什麼。 |
| 所以它......它使入職變得更加容易,而且它再次處理......一切都附加到這裡的一切,所以你知道可支持性等等。 |
| 這是我之前提到的幻燈片,只是為了一些資源,所以我們使用 GitLab。 我想同樣的原則通常適用於任何 git,比如 GitHub 或其他什麼。 這是 Hamcrest 的社區鏈接。 有一次演講在 |
| 在圖森,那是2019年的事,以前我們經常一起旅行和聚會。 那很有趣。 這是視覺效果的市場鏈接...視覺代碼工作室。 |
| Visual Studio代碼,你有什麼。 |
| 正如 Vince 所說,是的,我們大量使用該編輯器,而不是僅僅因為它是集成的就使用內置 JMP 編輯器。 它是... |
| 它只是一個大型應用程序開發環境的一部分。 在此,Vince 和我代表 Vince 和我本人,感謝您對此的興趣,並再次感謝 JMP 團隊。 賈斯汀·奇爾頓和他的公司, |
| 我會打電話給你。 如果沒有漢克雷斯特,我們就不會這麼做。 那是 |
| 缺失的部分或者是真正使我們能夠進行 JSL 開發的有利部分, |
| 基本上,您在代碼開發中期望的標準類型,通常是在行業中。 所以我們真的很感激,而且我知道我們的... |
| 您知道,這是通過我們部署的每個應用程序傳播出去的。 此時此刻,文斯和我很樂意回答任何問題…… |
| info@predictum.com 它將轉發給我們,我們會回复您。 但此時,我們將開放問答。 |