JavaRush /Java Blog /Random-JA /Java 開発者のある日。パート1
alex8894
レベル 34
Санкт-Петербург

Java 開発者のある日。パート1

Random-JA グループに公開済み
親愛なる同僚の皆さん、こんにちは!『 20+ Years Later 』の出版後、一部の読者から物語の続きを求める声がありました。他に何を話せますか? 「ひげを生やしたエニキー」を Java 開発者にするというテーマを完全にカバーしたようです。早ければ1年以上の作業を経て、何らかの結論を導き出すことは可能だろう。そして、私の典型的な勤務日がどのように進むかを簡単に説明することにしました。「Java 開発者の生活の 1 日」というカットの下にあります。 若い頃は寝るのが大好きでした。エニキーの頃は、たまたま昼まで寝て、​​3時か3時半に出社することもありました。「他の人と同じように、つまり午前9時までに来てください」という経営陣の定期的な要求に毎回同じように応えました。誰にも迷惑をかけない時間にコンピューターで作業する必要があると彼らは言いました。転がりました。しかし、年齢とともに明らかに体に何かが変化し、今では「夜更かし」というよりは「ひばり」になっています。だからこそ、今は私が一番に(または一番に)出社します。今日は私が先頭で、他のそれほど「早い人」が追いつくまで、30分か1時間の沈黙があります。今日は計画を立てる時間です。私は Linux Mint で開発しています。私は、これらのタイルとは異なり、控えめでエレガントな [スタート] ボタンが好きです。Cinnamon デスクトップ マネージャーには視覚効果が過剰に搭載されているわけではありませんが、洗練という点では、もちろんこの点では標準である MacOS よりわずかに劣ります。比較するのは簡単です。隣のテーブルには Mac があり、UX デザイナーがその後ろで働いています。また、OS 自体についてもほとんど不満はありません。動作は速く、非常に安定しています。この間、再起動したのは 3 回だけでした (長期休暇中にコンピューターの電源を切ったとき)。実際、すべての開発者のコ​​ンピュータには SSD ドライブが搭載されているため、スプラッシュ スクリーンが表示される時間さえなく、ほぼ瞬時にロードされます。まず、Thunderbird 電子メールクライアントを開きます。そこには、Wiki 内の興味のあるページの変更に関する情報 (設定と仕様があります) が記載された手紙が届きますが、主なものはトラッカーからの通知です。私たちにどんな興味深いことが起こったのでしょうか?ああ、彼らは私が昨日完了した機能のテストから戻ってきました。どうやらバグが見つかったようです。そうですね、そうです。できるだけ早く修正する必要があります。テスターが到着して、まだ「未完成の構築」に着手する前にすぐに修正内容を確認するまでに時間があるかもしれません。それが今日の最初のことです。さて、これは私が最後のスプリントを通して書いた「未完の構築」についてです。 どうやら今回は地獄の輪廻を全て耐え抜いたようだ テストの段階で、おそらく今日、プロジェクトのメインブランチにマージする必要があるでしょう。しかし、それは後で、昼食後に行われます。現在でも、devops で作業し、現在開発が進行中のブランチからスタンドを更新する必要があり、新しい機能を示す必要があります。sudo コマンドは、root 権限を付与する前に、「大きな力には大きな責任が伴います」という警告を表示します。私のやや大雑把な翻訳では、このフレーズは「できることが増えれば増えるほど、やらなければならないことも増える」ように聞こえます。したがって、「管理者の印」を押している私が、そのような「境界線」の仕事を受けることが多いのも不思議ではありません。さて、始めましょう。昨日、私は別の機能に取り組んでいましたが、今度はバグのあるブランチに戻る必要があります。Windows ユーザーは通常、あらゆる種類のグラフィカル シェルを好み、Turtle (TortoiseGit) を使用しますが、私にとってはコマンド ラインを使用する方が簡単で馴染みがあります。一般に、Linux のコマンド ラインは小さな傑作であり、特に Midnight Commander と組み合わせると、信じられないほど思慮深く強力です。切り替えたので、プロジェクトを再構築する必要があります。コマンド gradle clean ass を入力します。このコマンドが最初に Gradle 作者によって意図されていたのか、それとも偶然に作成されたのかはわかりませんが、単にプロジェクトをクリーンアップして再構築するだけです (ass はアセンブルの略であり、最初に思い浮かぶものではありません)。javarush では、gradle は「およびその他のビルド システム」としてほんの少しだけ言及されています。はい、教育プロジェクトを組み立てる場合、gradle には maven に勝る利点はありません。インターネット上のほとんどのチュートリアルやハウツーでも Maven が使用されています。gradle の出現と人気の高まりは、最新のプロジェクトの構築の複雑さが急速に増大していることが原因であると考えられます。私が関わっているプロジェクトは数十のコンポーネントで構成されており、バックエンドは Java で、フロントエンドは Javascript で、テストは Python で書かれています。ちなみに、今日では、JavaScript プロジェクトの組み立ては別個の完全に複雑なプロセスになっており、Web ワークフローという名前も付けられており、依存関係ツリーは Java とほぼ同じくらい広大です。そうですね、少なくとも Python コンポーネントをアセンブルする必要はありません、ほとんど必要ありません... アセンブリして起動した後 (これも簡単ではありません)、リレーショナルを使用して環境全体をテスト データで生成して初期化する必要があります。 NoSql データベース、メッセージ キュー、メモリ内キャッシュ。次に、これらすべてを再度アセンブルして CI サーバー上で実行し、ansible を使用してデプロイする必要があります。同時に、開発は主に Windows 上で行われ、「戦闘」サーバー、デモサーバー、テストサーバー、およびその他の本番前サーバーは当然 Linux 上で実行されます。Maven でどのようにしてこのようなことを実装できるのか、実際には想像できませんが、Gradle ではかなりうまく実装できます。実際、gradle ビルド ファイルは Groovy で書かれています。これはとても面白い言語で、Java と Ruby を組み合わせたものだと言われていますが、私は Ruby については知りませんが、JavaScript については少し知っていますし、Java からの多くの構成要素も機能します。gradle の作成者は、単純なケースではビルド ファイルが非常に宣言的であるように見える API を実装しました (ちなみに、私の意見では、Maven の pom.xml よりも読みやすいと思います)。しかし、より複雑なものが必要な場合は、この宣言性はすべて破棄され、変数、関数、クラスが出現します。つまり、Groovy のすべての機能が表示されます。ちなみに、これらは Java コードと同じ JVM 上でコンパイルおよび実行できます。すでに述べたように、アセンブリ自体はクロスプラットフォームですが、環境と対話するため、Windows でも確認する必要があります。これを行うために、仮想マシンに Windows をインストールします。KVM は飛躍的に進歩しており、ゲスト システムが正しく構成されていれば、仮想化はほとんど目に見えません。はい、spice は 2 つのモニターをサポートするようになり、画面解像度は自動的に調整され、準仮想化デバイス ドライバーによるパフォーマンスの損失はほとんど発生しません。2 つのプラットフォームに大きな違いを感じないように思うことがあります。それでも、Java は、プロプライエタリなソフトウェアの世界という、2 つのまったく異なる、時には敵対的な世界を近づける素晴らしいツールです。 クラック、keygen、シリアル、Windows とオープン システム Linux の世界に代表されます。プロジェクトが組み立てられたので、それを起動して (もちろん、gradle 経由でも)、確認してみます。そうです、灰色のひげが恥ずかしいのですが、私は制作要件の 1 つを実装していませんでした。wiki に白黒で書かれています。以前の仕事で、私はこの状況に定期的に遭遇し、開発者が仕様の段落全体を見逃している可能性があることにいつも困惑していました。はい、簡単に!私はそれについて考え、別の問題に焦点を当てました - するとバグがありました。ここでのみ、いくつかの段階のテストのおかげで、彼女は捕らえられますが、前の場所では、まあ、何が起こったとしても。幸いなことに、ここでの仕事は長くは続かないでしょう。私は Idea Ultimate を立ち上げています。ちなみに、これは開発で使用される数少ない有料製品の 1 つです。基本的には Community Edition で十分ですが、Spring との統合などの優れた機能にはすぐに慣れます。また、ログ用のいくつかの端末、フロントエンドと wiki 用のブラウザ、コマンド ラインを備えた別の端末も必要です。すべてが動き、点滅します... 一般的に、2 つのモニターの画面上の画像は恐ろしいものになり始めます。ハッカーの懸命な仕事を描いた低予算映画のような外観。しかし、これらはまだ些細なことですが、フェールオーバー クラスターを立ち上げて構成しなければならなかったときのことを覚えています - 7 つのターミナル ウィンドウ、画面の隅にある何か、すべてのウィンドウ - ASCII グラフィックからのいくつかの数字と写真...仕事から少し脱線してしまい、時間が経ってしまいます。...ふー、必要なことはすべてやったようで、以前にやったことは何も破っていないようです。機能にコメントを追加し、テスト用にスレッドを送信します。テスターの作業を簡素化するために、具体的に何をしたのか、何を変更したかをより詳細に書くようにしています。前職では、開発者から受け取った改善点を確認する際に、そのような説明を本当に見逃していました。その間、朝は順調に昼に変わり、人々は徐々に引き上げられました。まもなくスタンドアップミーティング、または私たちの意見ではスタンドアップが開催されます。実際、一日の仕事はそれから始まるべきであり、ほとんどの「夜型人間」にとってこれがほぼ当てはまります。起立は、できるだけ遅く職場に到着するための境界線として機能し、遅刻することは強く推奨されません。まあ、私にとっては休憩のようなものです。それでは、皆さん立ち上がってみましょう。いつものようにスタンドアップで、開発者は昨日何をしたか、今日は何をするつもりかを話し、テスターは何をテストし、どのような結果が得られたかを私たちに話し、そして上司は、彼らが次に何をするつもりであるかを明らかにします。どのような問題が発生し、何に特別な注意を払う必要があるか。私たちのチームは地理的に分散しており、その全貌はスタンドアップで (もちろんテレビで) 見られるか、おそらく年に数回の一般的な企業イベントでしか見ることができません。スタンドアップ中に、これは実際には開発者がリラックスしないように発明されたのではないかという考えがよくあります。毎日、自分の仕事の進捗状況を上司だけが読む紙の報告書ではなく、同僚の前で示す必要があるとき、あなたは自発的にもっと多くのことをやろうとするでしょう。何か話したいことがあるから。もちろん、数日連続で「昨日はこれをやった、今日もやる」と繰り返すような「長期工事」もありますが、その中でも緊急性の高い小さな仕事が常に発生します。挟み込まれています。要するに本物 カウボーイ開発者は常に同僚に言いたいことがあります。スタンドアップでスタンドをすぐに更新するように言われたので、今すぐ更新します。プロジェクトのメインブランチが公開されると、管理者によって更新が行われますが、今度はまだ完成していない機能を公開する必要があり、同時に管理者が解決できないいくつかの問題が必然的に発生します。スタンドはデータセンターにあり、アクセスは ssh 経由でのみ可能です。もちろん、そこにはグラフィカル シェルはありません。つまり、コマンド ライン、ハードコアのみです。アップデート自体は自動化されておりスムーズに進みましたが、アップデート後にコンポーネントの1つが起動しなくなりました。私は、less コマンドでログを見ていますが、ちなみに、このコマンドには非常に便利な機能があり、Shift+F を押すと、ファイルの現在の内容が常に表示され、ログに最適です。そして、これは何ですか...奇妙なものですか? カンマで区切られた疑問符が全画面表示されます。2画面目、3画面目、10画面目…いくつあるでしょうか?ああ、終わりました。かなりのスタックトレースになりました。誰かが IN 演算子を使用して SQL クエリを作成し、リストから目的のレコードを選択し、リストの各要素のパラメータを作成しました。リストに 32767 を超える要素が含まれるまではすべてが機能しましたが、その後、SQL サーバーは最終的に忍耐力を使い果たしました。これについてはバグ レポートを書く必要がありますが、これは動作しないコンポーネントの問題とは何の関係もありません。さらに見てみましょう。これで、データベース構造の新しいバージョンへの移行が完了しなかったことは明らかです。機能の作成者が移行中に何かを変更したようです。そして、ここのスタンドには、その以前のバージョンがありました。SQL サーバー コンソール ユーティリティを使用して、構造の変更を手動でロールバックする必要があります。DML でフィールドを削除するコマンドを作成するにはどうすればよいですか? 索引?テーブル?それだけのようです。コンポーネントを再起動したところ、移行は正常に完了しました...すべて問題ありません。昼食を食べに行く時間です。ところで、今日は天気が良いです。「空に静止してぶら下がり、町の人々を非常に怖がらせた明るい黄色の球は、太陽であることが判明しました。」ほぼ今年初めての晴れの日。通りを離れたくもないが、そうしなければならない。合流の時間が近づいている。つづく
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION