JavaRush /Blog Java /Random-MS /Suatu hari dalam kehidupan pembangun Java. Bahagian 1
alex8894
Tahap
Санкт-Петербург

Suatu hari dalam kehidupan pembangun Java. Bahagian 1

Diterbitkan dalam kumpulan
Salam, rakan sekerja yang dikasihi! Selepas penerbitan " 20+ Years Later ", beberapa pembaca meminta sambungan cerita. Apa lagi yang boleh saya bincangkan? Nampaknya saya telah membincangkan sepenuhnya topik menukar "enikey berjanggut" menjadi pembangun Java. Adalah mungkin untuk membuat beberapa kesimpulan tidak lebih awal daripada selepas setahun bekerja. Dan kemudian saya memutuskan untuk menerangkan secara ringkas bagaimana hari kerja biasa saya berjalan. Di bawah potongan "Suatu hari dalam kehidupan pembangun Java." Semasa saya muda, saya suka tidur. Semasa saya menjadi enikey, kebetulan saya tidur sehingga tengah hari dan datang bekerja pada pukul tiga, malah pukul tiga setengah. Setiap kali saya menjawab tuntutan berkala pihak pengurusan untuk "datang seperti orang lain," iaitu, pada pukul 9 pagi, dengan cara yang sama setiap kali—mereka berkata, saya perlu bekerja pada komputer apabila saya tidak mengganggu sesiapa. Ia bergolek. Tetapi dengan usia, nampaknya, sesuatu telah berubah dalam badan, dan sekarang saya lebih daripada "lark" daripada "burung hantu malam". Itulah sebabnya sekarang saya datang bekerja dahulu (atau salah satu yang pertama). Hari ini saya yang pertama, dan saya mempunyai setengah jam atau satu jam untuk berdiam diri sehingga yang lain, kurang "burung awal" mengejar. Sudah tiba masanya untuk merancang hari ini. Saya membangunkan di bawah Linux Mint. Saya suka butang Mula, sederhana dan elegan, tidak seperti jubin ini. Pengurus desktop Cinnamon tidak terlalu sarat dengan kesan visual, tetapi dari segi penggilap ia sedikit lebih rendah daripada MacOS, yang sudah tentu, standard dalam perkara ini. Ia mudah untuk dibandingkan, terdapat Mac di meja sebelah, pereka UX sedang bekerja di belakangnya. Saya juga hampir tidak mempunyai aduan tentang OS itu sendiri: ia berfungsi dengan cepat dan sangat stabil, saya hanya but semula tiga kali pada masa ini - apabila saya mematikan komputer semasa cuti panjang. Sebenarnya, ia juga dimuatkan hampir serta-merta, malah skrin percikan tidak mempunyai masa untuk muncul, kerana semua komputer pembangun dilengkapi dengan pemacu SSD. Pertama sekali, saya membuka klien e-mel Thunderbird, surat datang ke sana dengan maklumat tentang perubahan pada halaman yang menarik minat saya di wiki (terdapat tetapan dan spesifikasi), tetapi perkara utama adalah pemberitahuan daripada penjejak. Apakah perkara menarik yang berlaku kepada kami? Oh, mereka kembali daripada menguji ciri yang saya selesaikan semalam, nampaknya mereka menemui pepijat. Ya, betul. Saya perlu membetulkannya secepat mungkin, mungkin saya akan mempunyai masa sebelum penguji tiba dan dia akan segera melihat pembetulan sebelum dia memasuki beberapa "pembinaan yang belum siap" lagi. Itu perkara pertama untuk hari ini. Jadi, ini mengenai "pembinaan yang belum selesai" saya, yang saya tulis sepanjang pecut terakhir. Nampaknya kali ini dia berjaya mengharungi semua lingkaran nerakaperingkat ujian dan hari ini, mungkin, ia perlu digabungkan ke dalam cabang utama projek. Tetapi itu akan datang kemudian, selepas makan tengah hari. Malah pada hari ini kita perlu bekerja di devops dan mengemas kini pendirian dari cawangan di mana pembangunan sedang dijalankan, kita perlu menunjukkan fungsi baharu. "Dengan kuasa besar datang tanggungjawab besar," arahan sudo memaparkan amaran sebelum memberikan keistimewaan root. Dalam terjemahan saya yang agak longgar, frasa ini berbunyi seperti "semakin banyak yang anda boleh lakukan, semakin banyak yang perlu anda lakukan." Oleh itu, tidak menghairankan bahawa saya, yang menanggung "setem pentadbir," sering menerima tugas "garis sempadan" sedemikian. Baiklah, mari kita mulakan. Semalam saya sedang mengusahakan ciri lain, dan sekarang saya perlu kembali ke cawangan di mana pepijat itu berada. Pengguna Windows biasanya menyukai semua jenis cengkerang grafik dan menggunakan Turtle (TortoiseGit), tetapi bagi saya ia lebih mudah dan lebih biasa melalui baris arahan. Secara umum, baris arahan dalam Linux adalah karya kecil, sangat bertimbang rasa dan berkuasa, terutamanya dalam kombinasi dengan Midnight Commander. Kami bertukar, kini kami perlu membina semula projek itu. Saya menaip arahan gradle clean ass. Saya tidak tahu sama ada arahan ini pada asalnya dimaksudkan oleh pengarang gradle atau dicipta secara kebetulan, tetapi ia hanya membersihkan dan membina semula projek (pantat adalah singkatan untuk memasang, dan bukan perkara pertama yang terlintas di fikiran). Pada javarush, gradle hanya disebut secara ringkas, sebagai "dan sistem binaan lain." Ya, gradle tidak mempunyai kelebihan berbanding maven untuk memasang projek pendidikan. Kebanyakan tutorial dan cara-cara di internet juga menggunakan maven. Kemunculan dan populariti gradle yang semakin meningkat mungkin disebabkan oleh peningkatan pesat dalam kerumitan membina projek moden. Projek di mana saya terlibat terdiri daripada beberapa dozen komponen, di mana bahagian belakang ditulis dalam Java, bahagian hadapan dalam Javascript, dan ujian dalam Python. Ngomong-ngomong, pada masa kini, memasang projek Javascript adalah proses yang berasingan dan rumit sepenuhnya, yang malah mempunyai nama - Aliran Kerja Web, dan pokok kebergantungan di sana hampir sama seperti di Jawa. Nah, sekurang-kurangnya anda tidak perlu memasang komponen Python, baik, hampir tidak perlu... Selepas pemasangan dan pelancaran (yang juga bukan remeh), anda perlu menaikkan dan memulakan dengan data ujian keseluruhan persekitaran dengan hubungan dan pangkalan data NoSql, baris gilir mesej dan cache dalam memori . Kemudian semua ini perlu dipasang semula dan dijalankan pada pelayan CI, dan kemudian digunakan menggunakan ansible. Pada masa yang sama, pembangunan terutamanya dijalankan di bawah Windows, dan "pertempuran", demo, ujian dan pelayan pra-prod lain, secara semula jadi, di bawah Linux. Saya tidak benar-benar membayangkan bagaimana mungkin untuk melaksanakan perkara sedemikian dalam maven, tetapi agak baik dalam gradle. Hakikatnya ialah fail binaan gradle ditulis dalam Groovy. Ia adalah bahasa yang sangat lucu, mereka mengatakan ia adalah persilangan antara Java dan Ruby, tetapi saya tidak tahu Ruby, tetapi saya tahu sedikit Javascript, dan banyak binaan daripadanya juga berfungsi. Pencipta gradle telah melaksanakan API sedemikian yang dalam kes mudah fail binaan kelihatan agak deklaratif (dan, dengan cara ini, pada pendapat saya, ia lebih mudah dibaca daripada pom.xml Maven), tetapi jika anda memerlukan sesuatu yang lebih kompleks, semua perisytiharan ini dibuang, pembolehubah, fungsi, kelas muncul - dalam satu perkataan, semua ciri Groovy, yang, dengan cara itu, boleh disusun dan dilaksanakan pada JVM yang sama dengan kod Java. Perhimpunan itu sendiri, seperti yang telah saya nyatakan, adalah platform silang, tetapi ia berinteraksi dengan persekitaran, jadi ia perlu diperiksa di bawah Windows juga. Untuk melakukan ini, saya telah memasang Windows pada mesin maya. KVM semakin maju dengan pesat, dan jika sistem tetamu dikonfigurasikan dengan betul, virtualisasi hampir tidak kelihatan. Ya, rempah kini menyokong dua monitor, resolusi skrin dilaraskan secara automatik, dan pemacu peranti paravirtual menyebabkan hampir tiada kehilangan prestasi. Saya kadang-kadang mendapati diri saya berfikir bahawa saya tidak merasakan banyak perbezaan antara kedua-dua platform. Namun, Java ialah alat yang menakjubkan yang telah membawa dua dunia yang sama sekali berbeza dan, kadangkala, malah dunia yang bermusuhan menjadi lebih rapat - dunia perisian proprietari, retak, keygen dan siri,dilambangkan oleh Windows dan dunia sistem terbuka Linux. Jadi, projek itu dipasang, kami melancarkannya (sudah tentu, juga melalui gradle) dan lihat. Nah, ya, malu pada janggut kelabu saya, saya tidak melaksanakan salah satu keperluan pengeluaran, ini dia, ditulis dalam warna hitam dan putih di wiki. Pada tugas saya sebelum ini, saya menghadapi situasi ini dengan kerap dan sentiasa bingung dengan bagaimana pembangun boleh terlepas keseluruhan perenggan daripada spesifikasi. Ya, mudah! Saya memikirkannya, memberi tumpuan kepada masalah lain - dan terdapat pepijat. Hanya di sini, terima kasih kepada beberapa peringkat ujian, dia akan ditangkap, tetapi di tempat sebelumnya - baiklah, apa sahaja yang berlaku. Nasib baik, kerja di sini tidak akan bertahan lama. Saya melancarkan Idea Ultimate, yang merupakan salah satu daripada beberapa produk berbayar yang digunakan dalam pembangunan. Pada dasarnya, anda boleh bertahan dengan Edisi Komuniti, tetapi anda cepat terbiasa dengan perkara yang baik, contohnya, penyepaduan dengan Spring. Anda juga memerlukan beberapa terminal untuk log, penyemak imbas untuk bahagian hadapan dan wiki, terminal lain dengan baris arahan, semuanya bergerak, berkelip... Secara umum, gambar pada skrin dua monitor mula mengambil gambar yang menakutkan penampilan, seperti yang ditunjukkan dalam filem bajet rendah, menggambarkan kerja keras seorang penggodam. Tetapi ini masih perkara kecil, tetapi saya masih ingat apabila saya terpaksa menaikkan dan mengkonfigurasi kluster failover - tujuh tetingkap terminal, sesuatu yang lain di sudut skrin, dalam semua tetingkap - beberapa nombor dan gambar daripada grafik ascii... Tetapi Saya menyimpang sedikit dari kerja, dan masa berlalu. ... Fuh, nampaknya saya melakukan semua yang saya perlukan dan, nampaknya, saya tidak melanggar apa-apa yang saya lakukan sebelum ini. Saya menambah ulasan pada ciri dan menghantar benang untuk ujian. Saya cuba menulis dengan lebih terperinci apa sebenarnya yang saya lakukan atau ubah untuk memudahkan kerja penguji. Pada tugas saya sebelum ini, saya sangat terlepas penjelasan sedemikian apabila saya perlu menyemak penambahbaikan yang diterima daripada pembangun. Sementara itu, pagi lancar bertukar menjadi siang, orang ramai beransur-ansur berhenti. Tidak lama lagi akan ada mesyuarat pendirian, atau pada pendapat kami, pendirian. Sebenarnya, hari bekerja harus bermula dengannya, dan untuk kebanyakan "burung hantu malam" ini hampir berlaku. Berdiri bertindak sebagai sempadan untuk tiba di tempat kerja selewat mungkin; terlambat untuk itu adalah sangat tidak digalakkan. Nah, bagi saya ia seperti rehat. Jadi, mari kita semua berdiri. Pada pendirian, seperti biasa, pembangun memberitahu apa yang mereka lakukan semalam dan apa yang mereka rancang untuk lakukan hari ini, penguji memberitahu kami apa yang mereka uji dan dengan keputusan apa, dan bos, jelas, apa yang mereka rancang untuk lakukan seterusnya, apakah masalah yang timbul dan apa yang perlu diberi perhatian khusus. Pasukan kami diedarkan secara geografi, dan pelengkap penuhnya hanya boleh dilihat secara berdiri (di TV, sudah tentu), dan juga, mungkin, pada acara korporat am beberapa kali setahun. Semasa berdiri, saya sering berfikir bahawa ia sebenarnya dicipta untuk menghalang pembangun daripada berehat. Apabila setiap hari anda perlu menunjukkan kemajuan dalam kerja anda, dan bukan dalam laporan kertas yang hanya bos anda akan membaca, tetapi di hadapan rakan sekerja anda, mahu tidak mahu anda akan cuba melakukan lebih banyak lagi, untuk mempunyai sesuatu untuk dibincangkan. Sudah tentu, terdapat "projek pembinaan jangka panjang", yang selama beberapa hari berturut-turut anda mengulangi "semalam saya melakukan ini, dan hari ini saya akan terus melakukannya," tetapi walaupun di dalamnya beberapa tugas kecil yang mendesak sentiasa tersepit masuk. Pendek kata, nyata Seorang pemaju koboi sentiasa mempunyai sesuatu untuk dikatakan kepada rakan sekerjanya. Pada pendirian saya diminta untuk mengemas kini pendirian saya dengan cepat, jadi sekarang saya akan melakukannya. Apabila cawangan utama projek diterbitkan, kemas kini dibuat oleh pentadbir, tetapi kini kami perlu menerbitkan ciri yang belum selesai, dan pada masa yang sama beberapa masalah pasti akan timbul yang tidak dapat diselesaikan oleh pentadbir. Pendirian terletak di pusat data, akses kepadanya hanya boleh melalui ssh, sudah tentu, tiada cangkang grafik di sana - jadi hanya baris arahan, hanya tegar! Kemas kini itu sendiri adalah automatik dan berjalan lancar, tetapi selepas kemas kini salah satu komponen tidak bermula. Saya melihat log dengan arahan yang kurang; dengan cara ini, ia mempunyai fungsi yang sangat mudah: jika anda menekan Shift-F, ia akan sentiasa memaparkan kandungan semasa fail, yang sesuai untuk log. Dan apakah ini... perkara pelik? Skrin penuh tanda soal dipisahkan dengan koma. Skrin kedua, ketiga, kesepuluh... Berapakah bilangan mereka? Oh, sudah berakhir, ternyata ia adalah jejak timbunan. Seseorang menulis pertanyaan SQL dengan operator IN untuk memilih rekod yang dikehendaki daripada senarai, dan mencipta parameter untuk setiap elemen senarai. Semuanya berfungsi sehingga senarai itu mengandungi lebih daripada 32767 elemen, selepas itu pelayan SQL akhirnya kehabisan kesabaran. Anda perlu menulis laporan pepijat tentang perkara ini, tetapi ini tiada kaitan dengan masalah dengan komponen yang tidak berfungsi. Mari lihat lebih jauh. Kini jelas bahawa penghijrahan struktur pangkalan data ke versi baharu tidak berlaku, nampaknya pengarang ciri itu mengubah sesuatu dalam penghijrahan, dan di sini, di tempat berdiri, terdapat versi sebelumnya. Anda perlu melancarkan semula perubahan struktur secara manual, melalui utiliti konsol pelayan SQL. Bagaimanakah saya boleh menulis arahan dalam DML untuk memadamkan medan? indeks? meja? Nampak macam tu je. Saya memulakan semula komponen, penghijrahan berjalan lancar... semuanya baik-baik saja. Sudah tiba masanya untuk pergi makan tengah hari, cuaca sangat baik hari ini. "Bola kuning terang yang tergantung tidak bergerak di langit dan begitu menakutkan penduduk bandar ternyata Matahari." Hampir hari pertama yang cerah dalam setahun. Saya tidak mahu meninggalkan jalan, tetapi saya terpaksa - masa untuk penggabungan semakin hampir. Akan bersambung
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION