Skip to content

So many opportunities!

Section 1: Magic should be fun, isn't it?

Setelah anda bekerja keras mengerjakan aplikasi tracking ekspedisi di tugas anda sebelumnya, anda akhirnya dapat menyelesaikan tugas tersebut dengan baik dan tepat waktu.

Anda kemudian diminta untuk mengunggu hasil evaluasi CTO dan GM mengenai hasil kerja anda. Anda pun duduk di sekitar cafetaria untuk istirahat sejenak dan mengambil sekaleng minuman. Menurut anda, tugas kemarin ternyata cukup menantang untuk dikerjakan. Walaupun demikian, anda yakin bahwa anda telah menyelesaikannya dengan cukup baik. Tak berselang, anda diundang untuk bertemu dengan CTO di ruangannya.

Dengan hati yang gugup, anda masuk ke ruangan CTO dan beliau mempersilahkan anda untuk duduk. "Kami telah mengevaluasi hasil kerja anda," ujar CTO, "dan saya sangat puas dengan hasil kerja anda! Kami mempertimbangkan untuk menggunakan seluruh hasil kerja anda untuk digunakan di production."

Anda menghela nafas dengan lega dan berterima kasih. "Terima kasih banyak, tugas kemarin cukup menantang." Jawab anda dengan rasa gembira. "Cukup seru sekali untuk dikerjakan."

"Nah, karena anda cukup mahir dan menukai tantangan, kami menawarkan kamu untuk ditempatkan di divisi riset kami." Ujar Manajer Inora, "Ini merupakan kesempatan kamu untuk dapat membuat impact yang besar terhadap perusahaan ini. Saya yakin anda akan menyukai divisi tersebut."

"Terdengar menarik, tapi sebelumnya apakah saya boleh tahu apa saja tugas saya di divisi tersebut?" Tanya Anda dengan nada yang menandakan anda kebingungan.

"Boleh saja," Jawab CTO, "kamu dapat menemui manajer divisi riset untuk dapat bertanya langung langsung bersamanya"

Dengan antusias anda menjawab, "Boleh sekali!"

"Baiklah, saya akan menelpon manajernya untuk segera bertemu kamu di ruangannya." Ucap sang CTO.

Kemudian CTO memberikan arahan untuk anda agar dapat sampai ke ruangan Manajer. Dengan mengikuti arahan sang CTO secara perlahan, anda dapat menemukan ruangan manajer divisi riset. Anda kemudian masuk ke ruangan manajer dan menemukan sang manajer sedang berbicara melalui telepon.

Di atas meja terlihat sebuah papan nama bertuliskan "Inora Azerovan - Research Manager" dengan sebuah cangkir disampingnya. Sang manajer kemudian menutup teleponnya sambil memperkenalkan diri.

"Perkenalkan nama saya Inora, saya adalah Research Manager di perusahaan ini." Ucap manajer Inora, "Saya sudah mendengar cerita anda dari CTO, saya rasa anda akan suka bekerja di divisi ini."

"Sebelumnya apakah saya boleh bertanya mengenai pekerjaan saya di divisi ini?" Tanya anda kepada manajer Inora.

"Pertanyaan bagus, sebelumnya apakah anda tertarik dengan praktik sihir?"

Andapun menjawab, "praktik sihir?"

"Tepat sekali!" Jawab Manajer Inora, "Saya kira anda sudah tahu, perusahaan ini mempunyai berbagai anak perusahaan di berbagai bidang."

"Saya pribadi sudah tahu, tapi saya tidak sangka akan menyentuh bagian sihir. Saya masuk ke perusahaan ini hanya sebagai pengembang." Jawab Anda.

"Tidak apa-apa," Ujar Manajer Inora. "Melihat performa kamu di tugas sebelumnya saya sangat yakin anda mampu menangani tugas yang akan saya berikan."

Kamu beprikir sejenak untuk menimbang tawaran dari Manajer Inora.

"Bagaimana?" Tanya Manajer Inora. "Apakah kamu tertarik?"

Anda menjawab dengan percaya diri, "Saya akan coba semampu saya."

"Bagus sekali! Sekarang, mari kita akan pergi ke ruangan riset anda." Ajak Manajer Inora.

Tak lama kemudian seluruh badanmu dikelilingi oleh cahaya kuning. Anda terkejut karena anda dan Manajer Inora tiba-tiba berada di ruangan ramai nan luas.

Task 1: One stick to summon them all

Manajer Inora: "Ini adalah ruangan riset kami, anda akan membantu kami untuk membangun sebuah tongkat."
Anda: "Tongkat sihir?"
Manajer Inora: "Ya memang tongkat sihir, tongkat apa lagi?", jawab Manajer sambil tersenyum. "Kami berencana untuk memproduksi tongkat ini untuk agar bisa men-summon berbagai macam makhluk."
Anda: "Makhluk apa yang bisa di-summon oleh tongkat tersebut?"
Manajer Inora: "Banyak, namun sejauh ini kebutuhan kami hanya terbatas kepada makhluk-makhluk yang sudah familiar, seperti hewan dan tumbuhan. Seluruh makluk hidup dapat di-summon menggunakan sebuah segel kontrak."
Anda: "Segel kontrak?"
Manajer Inora: "Ya, segala macam makhluk hidup dapat diberi segel kontrak sehingga dapat di-summon kapanpun dimanapun. Tentu saja tidak terbatas pada makluk hidup, benda mati juga dapat dipengaruhi menggunakan segel kontrak."
Anda: "Bagaimana sebuah benda mati dapat dipengaruhi oleh sihir?"
Manajer Inora: "Dengan mengatur intensitas mana yang digunakan benda mati tersebut. Tentunya bukan sembarangan benda, hanya alat-alat magic/magic tools yang bisa dipengaruhi."
Anda: "Oohh… Baiklah… Kalau begitu apa yang harus saya perbuat?"
Manajer Inora: "Tugas kamu cukup membuat tongkat melakukan seluruh hal yang telah saya deskripsikan, dan pastikan hal yang dilakukan itu benar."
Anda: "Hoo.. Baiklah kalau begitu. Kira-kira adakah hal dari magic tool ini yang harus saya atasi?"
Manajer Inora: "Pertanyaan yang bagus! Magic tool hanya memberikan segel kontrak. Oleh karena itu, intensitas mananya harus diatur sendiri oleh pemilik tongkat, baik sedikit, menengah, maupun tinggi. Tergantung ukuran benda yang akan di-summon"
Anda: "Kalau begitu, tongkat ajaib in hanya perlu mengatur intensitas dari sebuah magic tool saja?"
Manajer Inora: "Tepat sekali! Tentunya dalam membuat segel kontraknya, anda minimal harus mempunyai satu opsi intensitas mana."
Anda: "Mungkin kembali ke makhluk hidup. Apakah makhluk yang sudah di-summon tidak dapat di-summon lagi kedepannya?"
Manajer Inora: "Tentu saja bisa! Dengan syarat makhluk tersebut di-seal ulang terlebih dahulu. Memangnya jika sudah di-summon, bagaimana caranya di-summon lagi? Tidak bisa bukan?"
Anda: "Oh seperti itu ya, hmm… Bagaimana cara membuat segel kontrak?"
Manajer Inora: "Melalui formulir kontrak tentunya. Formulir kontrak tersebut nantinya akan mengikat terhadap tongkat ajaib secara otomatis. Pengguna cukup cast segel kontrak yang sudah terikat di dalam tongkat, tidak perlu memanggil makhluk familiar atau magic tools secara langsung. Oh iya, saya lupa sampaikan satu hal penting."
Anda: "Apa itu?"
Manajer Inora: "Setiap makhluk dan benda yang terkontrak pada tongkat harus mempunyai semacam riwayat untuk jaminan keamanan perusahaan. Setiap perubahan state pada makhluk dan benda tersebut harus terekam dengan jelas. Selain itu, untuk kemudahan, spell yang di-summon oleh tongkat tersebut agar bisa di-undo"
Anda: "Baiklah, adakah kasus khusus lain yang harus saya kerjakan?"
Manajer Inora: "Saya rasa saya sudah semua saya berikan. Apabila ada hal yang kamu tidak yakin, kamu dapat bertanya langsung ke saya."
Anda: "Baiklah akan saya kerjakan segera."
Manajer Inora: "Bagus, kerjakan tugasmu dengan semangat!"

Sang manajer kemudian meninggalkan anda di sebuah meja dengan sebuah telepon dan sebuah tongkat sihir untuk anda kerjakan.

Additional Feature:

Saat anda mengerjakan tugas, anda sadar bahwa apabila pengguna perlu men-summon berbagai macam makluk sekaligus, maka akan lebih mudah jika urutan spell tersebut disimpan dalam suatu chain spell, sehingga seluruh makhluk dapat di-summon sekaligus secara bertahap. Anda berpikir, jika anda mengimplementasikan fitur ini mungkin manajer akan terkesan dan mungkin anda akan mendapatkan promosi. Setelah berjam-jam memikirkan bagaimana cara untuk implementasi fitur ini, anda mendapat ide untuk menggunakan riwayat pada setiap makhluk/benda. Anda merancang chain Spell agar dapat menyimpan 2–7 spell terakhir yang di-cast pada makhluk/benda. Tentunya chain spell ini dapat di-undo seperti spell normal, agar memenuhi jaminan keamanan perusahaan.

Hint:

  • Silahkan ubah class yang sudah tersedia di core jika diperlukan, namun tetap ingat design principle yang ingin dicapai.
  • Silahkan menerapkan best practice yang telah dipelajari. Desain kode akan memperngaruhi penilaian.
  • Untuk bonus command: silahkan perhatikan form_contract.html baris 68–69
  • Alangkah baiknya menjalankan aplikasi terlebih dahulu untuk memahami bagaimana flow yang seharusnya diimplementasikan
  • Silahkan bertanya pada asdos jika ada yang kurang jelas.

Screenshot Contoh Tampilan

  1. /control-wand: Hasil dari eksekusi Abyssal:Summon, Abyssal:Sealed, undox2; Pogo:Medium, Pogo:High, undox2

/control-wand

  1. /contract-form

/contract-form

Section 2: Go big or go home!

Telepon di meja anda berbunyi dan anda mengangkat telepon tersebut. "Halo," tanya seseorang dari balik telepon. "Halo, bagaimana akhirnya? Apakah anda tertarik dengan pekerjaan yang ditawarkan divisi riset?"

Anda kemudian mengenali suara tersebut merupakan suara sang CTO, kemudian anda menjawab "Ya, saya sangat tertarik dengan pekerjaan yang ditawarkan." Jawab Anda, "Jadi saya ambil."

"Baiklah," ucap CTO, "Awalnya saya ingin menawarkan anda pekerjaan di bagian lain yang mungkin lebih rileks apabila anda merasa riset terlalu berat."

"Pada bagian apa kalau boleh tahu?" Tanya anda merasa penasaran.

"Fleksibel, anda akan bekerja langsung dibawah pengawasan saya dan bekerja di berbagai bidang perusahaan." Ujar CTO menggunakan nada serius, "perusahaan ini berusaha untuk dapat meraih setiap dunia yang dapat kami raih, baik itu dunia yang penuh sihir, monster, maupun dunia yang dipenuhi berbagai macam makhluk yang belum dikenal. Saya ingin mengajak anda untuk dapat berkeliling dunia untuk memecahkan setiap masalah yang ada di dunia tersebut." Jelas CTO.

Rasa takjub akan tawaran CTO membuat anda terdiam dan kesulitan untuk memberikan respon. "Tapi, karena anda sudah merasa nyaman terhadap divisi ini, saya tidak jadi menerima penawaran kamu."

Anda pun membayakan hal-hal apa saja yang akan dapat dipelajari melalui tawaran tersebut. Anda diam sejenak untuk bepikir untuk mengambil tawaran ini, anda berpikir tawaran ini merupakan kesempatan yang mungkin tidak akan datang kedua kalinya.

"Halo? Anda masih disana?" Tanya CTO memotong jalan pikir anda.

"Oh! Ya!" Jawab anda dengan nada terkejut. "Menurut saya itu tawaran yang sangat menarik."

"Jadi anda ingin mengambil tawaran tersebut?"

"Ya, tapi bagaimana dengan pekerjaan saya dengan Manajer Inora?"

"Jangan khawatir, anda dapat menyelesaikan tugas anda dengan Manajer Inora terlebih dahulu. Untuk sementara ini saya ingin menguji kepandaian anda dalam multitasking."

"Baiklah, apa yang harus saya lakukan?" Tanya anda dengan semangat.

"Kami sedang ada permintaan besar dari negeri Hollowith. Ada dua negara terbesar, Crownvern dan Etherdia, akan saling bertanding di final turnamen ketangkasan. Kedua negara memesan ribuan unit Training Dummy dari kami untuk membantu setiap pemain berlatih."

"Kalau begitu… Apa saja yang kebutuhan Training Dummy? Training apa saja yang diperlukan setiap pemain? Apa saja…"

"Tunggu tunggu!" Potong CTO. "Anda tidak akan membuat Training Dummy anda sendiri. kami sudah mempunyai beberapa unit Traning Dummy tersedia. Saya rasa anda belum mampu mendesain Training Dummy yang cukup kompleks dan tahan banting. Apalagi jika dilakukan bersama tugas dari Manajer Inora yang saya yakin sudah lumayan berat."

"Ah iya, benar juga." Ujar anda, "Tugas dari Manajer Inora sudah lumayan berat untuk dikerjakan. Kalau begitu apa yang harus saya lakukan?"

"Seluruh unit Training Dummy sebenarnya merupakan unit dari turnamen yang sama beberapa tahun lalu. Agar perusahaan dapat menghemat anggaran, maka kami hanya membutuhkan kamu untuk mengecek kondisi setiap Training Dummy."

"Bagaimana caranya saya bisa mengecek kondisi setiap Training Dummy?" Tanya anda kepada sang CTO.

"Dengan menguji setiap training dummy dengan standar prosedur yang sudah tersedia. Anda cukup menjalankan prosedur yang sama untuk setiap Training Dummy yang ada. Perlu diperhatikan bahwa Training Dummy itu memiliki tipe yang berbeda, tergantung pada tipe senjata yang akan digunakan Training Dummy."

"Saya harus menyesuaikan setiap tipe Training Dummy sesuai SOP yang telah ditentukan, begitu kah maksud anda?" Tanya anda kepada CTO.

"Tepat sekali! Detilnya akan saya kirim melalui e-mail anda. Seharusnya ini cukup sederhana untuk anda kerjakan bersama tugas Manajer Inora." Ujar CTO.

"Baiklah, saya akan berusaha sebaik mungkin untuk tidak mengecewakan anda."

Task 2: Gotta go test them all!

Setelah membaca product requirement yang dikirim oleh si CTO, anda mengerti bahwa anda diminta untuk membuat sebuah sistem penyimpanan Training Dummy. Training Dummy adalah sebuah dummy yang digunakan untuk menguji senjata tempur. Training Dummy itu sendiri mempunyai 3 macam sesuai peruntukannya masing-masing: Melee, Ranged, dan Magic.

Karena Training Dummy secara berkala akan disimpan dan digunakan, maka diperlukan sebuah uji kualitas agar Training Dummy dapat digunakan untuk sesi pengujian senjata di kemudian hari. Setiap tipe Training Dummy mempunyai SOP masing-masing. Training Dummy juga boleh dibuang apabila dianggap tidak layak.

SOP terdiri dari:

  1. Weight Adjustment
  2. Activation
  3. Moveset Testing
  4. Deactivation

Pada tahap Weight Adjustment, Training Dummy dengan tipe Melee harus diberikan armor seberat 20 satuan dan Training Dummy dengan tipe Ranged perlu dirampingkan sebanyak 20% dari berat awal agar mudah digerakkan. Sementara Training Dummy dengan tipe Magic tidak perlu dilakukan Weight Adjustment.

Sebelum dilakukan Moveset Testing, setiap Training Dummy perlu dilakukan aktivasi. Aktivasi dari Training Dummy ini sendiri terdiri dari 2 tahap, yaitu aktivasi Training Dummy itu sendiri diikuti dengan aktivasi senjata. Perlu diperhatikan bahwa senjata yang bertipe Meelee tidak perlu diaktivasi.

Moveset Testing adalah tes yang menguji kinerja dari senjata yang diuji. Pada tes ini, Training Dummy akan melakukan beberapa aksi pada senjata yang dimiliki Dummy. Urutan aksi yang harus dilakukan dummy:

  1. Attack (2x)
  2. Buff
  3. Attack
  4. Defense
  5. Attack
  6. Defense

Setiap aksi dummy juga sudah pasti berbeda-beda, karena tipe senjata yang digunakan berbeda juga. Training Dummy dengan tipe Ranged sama sekali tidak dapat melakukan Defense. Sedangkan Training Dummy dengan tipe Magic selalu melakukan Buff setelah melakukan Attack. Saat Buff, Training Dummy dengan tipe Melee akan melakukan attack.

Seluruh aksi yang dilakukan Training Dummy pada tahap ini akan terekam di log Training Dummy. Training Semua Training Dummy yang sebelumnya diaktivasi kemudian dimatikan untuk disimpan.


Last update: 2022-02-22 22:27:15
Created: 2022-02-22 22:27:15
Back to top