JavaRush /Java Blog /Random-TW /Java 開發人員生活中的一天。第1部分
alex8894
等級 34
Санкт-Петербург

Java 開發人員生活中的一天。第1部分

在 Random-TW 群組發布
問候,親愛的同事們!《二十多年後》出版後,有讀者要求續寫故事。我還能談什麼?看來我已經完全涵蓋了將「大鬍子 enikey」轉變為 Java 開發人員的主題。至少工作一年後才能得出一些結論。然後我決定簡單地描述我典型的工作日是如何度過的。在「Java 開發人員生命中的一天」的剪輯下。 小時候,我很愛睡覺。當我還是個小白的時候,碰巧我睡到中午,三點甚至四點半才來上班。每次我都會回應管理層「像其他人一樣來」的定期要求,即上午9 點之前,每次都以同樣的方式回應——他們說,我需要在不打擾任何人的情況下在電腦上工作。它滾動了。但隨著年齡的增長,身體顯然發生了一些變化,現在我更像是一個「百靈鳥」而不是「夜貓子」。這就是為什麼我現在第一個(或第一個)來工作。今天我是第一個,我有半個小時或一個小時的沉默時間,直到其他不那麼「早起的鳥兒」趕上來。今天是時候計劃一下了。我在 Linux Mint 下開發。我喜歡“開始”按鈕,樸素而優雅,不喜歡這些瓷磚。Cinnamon 桌面管理器的視覺效果並不豐富,但在精美程度方面略遜於 MacOS,當然,MacOS 是這方面的標準。這很容易比較,旁邊的桌子上有一台 Mac,使用者體驗設計師正在它後面工作。我對作業系統本身也幾乎沒有什麼抱怨:它運行得很快而且非常穩定,我在這段時間只重新啟動了它三次——當我在長假期間關閉電腦時。實際上,它也幾乎可以立即加載,甚至連閃屏都沒有時間出現,因為所有開發人員的電腦都配備了 SSD 驅動器。首先,我打開 Thunderbird 電子郵件用戶端,裡面有信件,其中包含有關 wiki 中我感興趣的頁面更改的資訊(有設定和規範),但最主要的是來自追蹤器的通知。我們發生了什麼有趣的事?哦,他們測試了我昨天完成的功能回來了,看起來他們發現了一個錯誤。嗯,是的,確實如此。我需要盡快修復它,也許在測試人員到達之前我有時間,他會在進入一些「未完成的施工」之前立即查看更正。這是今天的第一件事。所以,這是關於我的“未完成的構建”,這是我在上一個衝刺中寫的。看來這次他成功的抵擋住了所有的 地獄圈測試階段,今天,它可能需要合併到專案的主分支。但這會在午餐後發生。即使今天,我們也必須在 DevOps 中工作,並從目前正在進行開發的分支更新展位,我們需要展示新功能。“權力越大,責任越大”,sudo 命令在授予 root 權限之前會顯示警告。在我有點寬鬆的翻譯中,這句話聽起來像是“你能做的越多,你必須做的就越多。” 因此,帶有「管理員印記」的我經常接到這樣的「邊緣」任務也就不足為奇了。好吧,讓我們開始吧。昨天我正在開發另一個功能,現在我需要回到錯誤所在的分支。Windows 使用者通常喜歡各種圖形 shell 並使用 Turtle (TortoiseGit),但對我來說,透過命令列更容易、更熟悉。總的來說,Linux 中的命令列是一個小傑作,非常周到且強大,特別是與 Midnight Commander 結合使用時。我們切換了,現在我們需要重建專案。我輸入指令 gradle clean ass。我不知道這個命令最初是 gradle 作者的意圖還是偶然創建的,但它只是清理和重建項目(ass 是 assemble 的縮寫,而不是首先想到的)。在 javarush 上,gradle 僅被簡單地提及為「和其他建置系統」。是的,在組裝教育計畫方面,Gradle 比 Maven 沒有優勢。網路上的大多數教學和操作方法也使用 Maven。Gradle 的出現和日益普及很可能是由於建造現代專案的複雜性迅速增加。我參與的專案由幾十個元件組成,後端用Java編寫,前端用Javascript編寫,測試用Python編寫。順便說一句,現在組裝一個 Javascript 專案是一個獨立且完全複雜的過程,甚至有一個名字 - Web Workflow,而且那裡的依賴關係樹幾乎和 Java 一樣龐大。好吧,至少你不需要組裝 Python 元件,好吧,幾乎不需要......組裝和啟動之後(這也很重要),你需要使用測試資料來引發和初始化具有關係的整個環境和NoSql資料庫,訊息佇列和記憶體快取。那麼這一切都需要再次組裝並運行在CI伺服器上,然後使用ansible進行部署。同時,開發主要在Windows下進行,「實戰」、演示、測試等預生產伺服器自然也是在Linux下進行。我不太想像如何在 Maven 中實現這些東西,但在 gradle 中卻可以很好地實現。事實上,gradle 建置檔案是用 Groovy 編寫的。這是一種非常有趣的語言,他們說它是 Java 和 Ruby 之間的交叉語言,但我不懂 Ruby,但我了解一點 Javascript,而且它的許多構造也可以工作。gradle 的創建者已經實現了這樣一個API,在簡單的情況下,構建文件看起來相當具有聲明性(順便說一句,在我看來,它甚至比Maven 的pom.xml 更容易閱讀),但如果您需要更複雜的東西,所有這些宣告性都被丟棄,出現了變數、函數、類別——總之,Groovy 的所有功能,順便說一下,它可以在與 Java 程式碼相同的 JVM 上編譯和執行。正如我已經提到的,程序集本身是跨平台的,但它與環境交互,因此也需要在 Windows 下進行檢查。為此,我在虛擬機器上安裝了 Windows。KVM正在突飛猛進,如果客戶系統配置正確,虛擬化幾乎是看不見的。是的,Spice 現在支援兩個顯示器,螢幕解析度自動調整,半虛擬化裝置驅動程式幾乎不會造成效能損失。有時我發現自己認為這兩個平台之間沒有太大差異。儘管如此,Java 仍然是一個令人驚嘆的工具,它使兩個完全不同的、有時甚至是敵對的世界更加緊密地聯繫在一起——專有軟體的世界, 破解、註冊機和序號,以 Windows 和開放系統 Linux 世界為代表。這樣,專案就組裝好了,我們啟動它(當然,也是透過 gradle)並看一下。嗯,是的,對我的灰白鬍子感到羞恥,我沒有實現製作的要求之一,這就是維基百科上白紙黑字寫的。在我之前的工作中,我經常遇到這種情況,並且總是對開發人員如何錯過規範中的整個段落感到困惑。是的,很容易!我想了想,把注意力集中在另一個問題上——有一個錯誤。只有在這裡,經過幾個階段的測試,她才會被抓住,但在以前的地方 - 好吧,無論發生了什麼。幸運的是,這裡的工作不會持續太久。我正在推出 Idea Ultimate,順便說一下,它是開發中使用的少數付費產品之一。原則上,您可以使用社群版,但您很快就會習慣好東西,例如與 Spring 的整合。您還需要幾個用於日誌的終端,一個用於前端的瀏覽器和一個wiki,另一個帶有命令行的終端,一切都在移動,閃爍......一般來說,兩個顯示器螢幕上的圖片開始呈現出令人恐懼的效果外觀就像低成本電影中所展示的那樣,描繪了駭客的辛勤工作。但這些仍然是小事,但我記得當我必須啟動和配置故障轉移集群時- 七個終端窗口,屏幕一角的其他東西,在所有窗口中- 來自ascii 圖形的一些數字和圖片......但是我稍微偏離了工作,時間就這樣過去了。……唷,好吧,看來我已經做了我需要做的一切,而且似乎我沒有破壞我之前做的任何事情。我向該功能添加評論並發送線程進行測試。我嘗試更詳細地寫下我到底做了什麼或改變了什麼,以簡化測試人員的工作。在我之前的工作中,當我必須檢查從開發人員那裡收到的改進時,我真的很想念這樣的解釋。同時,早晨順利地變成了白天,人們也漸漸地起床了。很快就會有一個站立會議,或者我們認為,一個站立會議。事實上,工作日就應該從這裡開始,對於大多數「夜貓子」來說幾乎都是這樣。站立是盡可能遲到上班的界限;強烈建議不要遲到。好吧,對我來說這就像是一次休息。那麼,就讓我們都站起來吧。在站立會議上,像往常一樣,開發人員告訴我們他們昨天做了什麼以及今天計劃做什麼,測試人員告訴我們他們測試了什麼以及結果如何,而老闆們很清楚,他們下一步計劃做什麼,出現了什麼問題,需要特別注意什麼。我們的團隊分佈在不同的地理位置,其全部成員只能在單口喜劇表演中(當然是在電視上)看到,也許每年也能在一般的公司活動中看到幾次。在站立時,我經常想到它實際上是為了讓開發人員放鬆而發明的。當你每天需要展現自己的工作進度時,不是在只有老闆會看的紙本報告中,而是在同事面前,不管願意與否,你都會試著做得更多,有話可說。當然,也有一些“長期建設項目”,你連續幾天重複“昨天我做了這個,今天我將繼續做”,但即使在這些項目中,也不斷有一些小的緊急任務楔入。簡而言之,真實 牛仔開發人員總是有話要對他的同事說。在站立會議上,我被要求快速更新我的立場,所以現在我會這樣做。當專案的主分支發佈時,更新是由管理員進行的,但現在我們需要發布一個尚未完成的功能,同時不可避免地會出現一些管理員無法解決的問題。該展位位於資料中心,只能透過 ssh 存取它,當然,那裡沒有圖形外殼 - 所以只有命令行,只有硬核!更新本身是自動化的並且進展順利,但更新後其中一個元件無法啟動。我用less命令看日誌;順便說一句,它有一個非常方便的功能:如果你按Shift-F,它會不斷顯示文件的當前內容,這對於日誌來說是完美的。這是什麼……奇怪的東西?全螢幕顯示以逗號分隔的問號。第二屏、第三屏、第十屏……總共有幾個?哦,結束了,結果是相當多的堆疊追蹤。有人使用 IN 運算子編寫了一個 SQL 查詢,以從清單中選擇所需的記錄,並為清單的每個元素建立一個參數。一切正常,直到清單包含超過 32767 個元素,之後 SQL 伺服器終於失去了耐心。您需要為此編寫一份錯誤報告,但這與非工作元件的問題無關。讓我們進一步看一下。現在很明顯,資料庫結構到新版本的遷移沒有完成,似乎該功能的作者在遷移中改變了一些東西,在這裡,在展位上,有它以前的版本。您必須透過 SQL Server 控制台公用程式手動回滾結構變更。如何在 DML 中編寫命令來刪除字段?指數?桌子?看起來就是這樣。我重新啟動了元件,遷移順利......一切都很好。該去吃午餐了,順便說一句,今天天氣很好。「那個亮黃色的球一動不動地懸掛在天空中,讓鎮上的人們感到害怕,原來是太陽。」幾乎是一年中第一個陽光明媚的日子。我甚至不想離開街道,但我必須離開——匯合的時間即將到來。待續
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION