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