Mufid Jamaluddin's Blog
Articles
Photo by Abubaker siddique on UnsplashPerlukah Istirahat Saat Stuck? Menemukan Keseimbangan antara Break dan ProduktivitasKetika kita merasa stuck — tidak bisa berpikir jernih, kehilangan fokus, atau tidak tahu harus melanjutkan dari mana — reaksi yang umum adalah mengambil istirahat sejenak (break). Istirahat memang bisa membantu menyegarkan pikiran, namun terlalu sering atau terlalu lama mengambil break justru bisa menurunkan produktivitas secara keseluruhan.Mengapa Istirahat Penting Saat Stuck?Penelitian menunjukkan bahwa otak manusia memiliki kapasitas fokus yang terbatas. Menurut studi dari University of Illinois (Ariga & Lleras, 2011), mengambil istirahat singkat selama tugas panjang bisa membantu meningkatkan konsentrasi. Ini karena perhatian kita mengalami habituation, yaitu penurunan respons terhadap rangsangan yang terus-menerus. Break membantu “mengatur ulang” otak agar bisa kembali fokus dengan segar.Selain itu, istirahat juga membantu memulihkan energi mental. Sebuah studi dalam jurnal Cognition (Ralph et al., 2016) menemukan bahwa perhatian yang berkelanjutan menurun secara bertahap, dan istirahat dapat mengembalikannya ke level optimal.Tapi, Terlalu Banyak Break Bisa MerugikanNamun, terlalu banyak istirahat atau menggunakannya sebagai pelarian dari tantangan justru bisa menurunkan disiplin kerja. Ini berisiko mengganggu flow atau aliran kerja yang produktif. Menurut Pomodoro Technique, metode manajemen waktu yang populer, idealnya seseorang bekerja selama 25 menit lalu mengambil istirahat 5 menit. Setelah 4 siklus, barulah ambil istirahat lebih panjang (15–30 menit). Ini membantu menjaga produktivitas tanpa over-break.Jika terlalu sering break setiap kali merasa stuck, kita berisiko menghindari masalah alih-alih menyelesaikannya. Ini dapat menyebabkan procrastination terselubung.Strategi Sehat: Break yang SeimbangGunakan metode terstruktur — Seperti teknik Pomodoro atau time-blocking.Pilih jenis istirahat yang memulihkan — Jalan kaki, peregangan, atau meditasi ringan lebih efektif dibanding membuka media sosial.Kenali pola kerja pribadi — Jika kamu produktif di pagi hari, maksimalkan waktu tersebut sebelum mengambil break.Break bukan berarti menyerah — Gunakan istirahat untuk evaluasi pendekatan, bukan sekadar melarikan diri.KesimpulanBreak adalah alat penting untuk menjaga fokus dan kesehatan mental saat bekerja, terutama ketika merasa stuck. Tapi seperti halnya alat, ia harus digunakan dengan bijak. Keseimbangan adalah kunci: terlalu sedikit istirahat bisa menyebabkan burnout, tapi terlalu banyak istirahat bisa menurunkan momentum dan produktivitas.“Taking breaks is not a sign of weakness or laziness — it’s a scientifically backed strategy for enhancing performance.” — Dr. Alejandro Lleras, University of IllinoisReferensi:Ariga, A., & Lleras, A. (2011). Brief and rare mental “breaks” keep you focused: Deactivation and reactivation of task goals preempt vigilance decrements. Cognition, 118(3), 439–443. https://doi.org/10.1016/j.cognition.2010.12.007Ralph, B. C., Thomson, D. R., Cheyne, J. A., & Smilek, D. (2016). Media multitasking and behavioral measures of sustained attention. Cognition, 134, 63–76. https://doi.org/10.1016/j.cognition.2014.09.008Cirillo, F. (2006). The Pomodoro Technique. https://francescocirillo.com/pages/pomodoro-techniqueNotePenulisan artikel ini dibantu AI 2025
Photo by Anders Krøgh Jørgensen on UnsplashDalam menyelesaikan masalah dengan C++, terdapat solusi umum yang sering di gunakan seperti pencarian (searching), pengurutan (sorting), transformasi, penghapusan dan partisi, penggabungan, dan algoritma kuantitatif.PencarianUntuk pencarian, berikut ini merupakan nilai dalam rentang yang diperlukan:/* Mencari nilai dalam rentang */std::find(mulai, akhir, nilai);/* Mencari nilai dalam kontainer terurut */std::binary_search(mulai, akhir, nilai);/* Mencari elemen yang memenuhi kondisi tertentu */std::find_if(mulai, akhir, predikat);PengurutanUntuk pencarian, berikut ini merupakan nilai dalam rentang yang diperlukan:/* Mengurutkan elemen dalam urutan menaik */std::sort(mulai, akhir);/* Seperti sort tetapi mempertahankan urutan relatif */std::stable_sort(mulai, akhir);/* Mengurutkan sebagian elemen */std::partial_sort(mulai, tengah, akhir);Contoh penggunaan:#include <iostream>#include <vector>#include <algorithm>int main() { std::vector<int> data = {1, 5, 3, 4, 2, 5}; std::sort(data.begin(), data.end()); auto it = std::find(data.begin(), data.end(), 3); if (it != data.end()) std::cout << "Angka 3 ditemukan pada indeks: " << std::distance(data.begin(), it) << std::endl; int count5 = std::count(data.begin(), data.end(), 5); std::cout << "Angka 5 muncul sebanyak: " << count5 << " kali" << std::endl; return 0;}TransformasiUntuk pencarian, berikut ini merupakan nilai dalam rentang yang diperlukan:/* Transformasi */std::transform(mulai, akhir, mulai_output, operasi_unary);/* Mengganti nilai tertentu */std::replace(mulai, akhir, nilai_lama, nilai_baru);/* Mengisi rentang dengan nilai tertentu */std::fill(mulai, akhir, nilai);Contoh penggunaan:#include <iostream>#include <vector>#include <algorithm>int main() { std::vector<int> v1 = { 2286, 3200, 4176, 5120 }; std::vector<int> v2(v1.size()); std::transform(input.begin(), input.end(), output.begin(), [](int x) { return x * x; }); for (auto i : v2) cout << i << " "; return 0;}Output: `2285 3199 4175 5199`#include <iostream>#include <vector>#include <algorithm>int main() { std::vector<int> v1 = {1, 2, 3}; std::vector<int> v2 = {4, 5, 6}; std::vector<int> result(v1.size()); std::transform(v1.begin(), v1.end(), v2.begin(), result.begin(), [](int a, int b) { return a + b; }); for (int n : result) std::cout << n << " ";}Output: 5, 7, 9Penghapusan dan PartisiBerikut ini merupakan STD untuk penghapusan dan partisi/* Menghapus elemen nilai tanpa mengurangi ukuran kontainer */std::remove(mulai, akhir, nilai);/* Menghapus elemen berdasarkan kondisi predikat */std::remove_if(mulai, akhir, predikat);/* Memisahkan elemen berdasarkan kondisi predikat */std::partition(mulai, akhir, predikat);Penggabungan Set Operation/* Menggabungkan dua rentang urut */std::merge(mulai1, akhir1, mulai2, akhir2, output);/* Operasi himpunan pada rentang terurut */std::set_union();std::set_intersection();Algoritma Kuantitatif/* Menghitung kemunculan nilai */std::count(mulai, akhir, nilai);std::count_if(mulai, akhir, predikat);/* Menjumlahkan elemen */std::accumulate(mulai, akhir, init);Referensihttps://en.cppreference.com/w/cpp/algorithm
Photo by Vishnu Mohanan on UnsplashDalam pemrograman C++, kadangkala kita membutuhkan struktur data untuk menyimpan data dalam bentuk pasangan kunci-nilai (key-value pair) dimana nilai key-nya itu unik. STL yang umum digunakan untuk tujuan ini adalah std::map dan std::unordered_map. Meskipun keduanya menyimpan data dalam bentuk pasangan kunci-nilai, mereka memiliki perbedaan mendasar dalam hal struktur internal, performa, dan penggunaan.STD Mapstd::map adalah kontainer associative yang menyimpan elemen dalam urutan terurut berdasarkan kunci. Struktur internal dari map ini umumnya menggunakan Red-Black Tree [1].Tidak perlu pusing terkait Red-Black Tree karena tinggal pakai library ini dengan mudah. Karena sifat Red-Black Tree, karakteristik penyimpanan data-nya terurut berdasarkan kunci, masing-masing kunci-nya unik, dan waktu akses yang logaritmik.Contoh penggunaannya sebagai berikut:#include <iostream>#include <map>int main() { std::map<std::string, int> umur; umur["Jhonny"] = 25; umur["Kidarsa"] = 30; for (const auto& [nama, usia] : umur) { std::cout << nama << " : " << usia << "\n"; } return 0;}STD Unordered Mapstd::unordered_map adalah kontainer yang menggunakan hash table untuk menyimpan elemen dimana penggunaan hash table ini menjamin pencarian, penambahan, dan pengurangan data memiliki rata-rata kompleksitas yang konstan dengan konsekuensi kunci-nya tidak terurut [2].Contoh penggunaannya sebagai berikut:#include <iostream>#include <unordered_map>int main() { std::unordered_map<std::string, int> umur; umur["Jhonny"] = 25; umur["Kidarsa"] = 30; for (const auto& [nama, usia] : umur) { std::cout << nama << " : " << usia << "\n"; } return 0;}Referensi[1] Ordered Map: std::map — cppreference.com[2] Unordered Map: std::unordered_map — cppreference.com
Photo by Arcode ACD on UnsplashSpesial tanggal 23 Mei ini saya membahas vektor. Vektor STD (std::vector) adalah salah satu kontainer dalam Standard Template Library (STL) C++ yang digunakan untuk menyimpan sekumpulan data dalam bentuk array dinamis, yaitu ukuran vector bisa berubah-ubah, berbeda dengan array biasa (C-style array) yang ukurannya tetap dengan kelebihan dan kekurangan sebagai berikut.Kelebihan std::vectorMudah digunakan dan fleksibel, dinamis karena ukurannya dapat bertambah atau berkurang saat di tambah elemen baru atau di hapus salahsatu elemennyaAkses cepat seperti array karena kontigu di memori, dimana elemen vector disimpan berurutan di memoriMendukung banyak fungsi dan algoritma STL, seperti iterasi dengan for, range-based for, dan fungsi STL seperti std::sort, std::find, dll.Aman: pengecekan batas dengan .at()Bersifat generik, dimana bisa menyimpan data dari tipe apapun dalam deklarasi, misalnya int, float, std::string, atau bahkan objek buatan sendiri.Kekurangan std::vectorAlokasi ulang memori saat kapasitas habis bisa menyebabkan overhead.Tidak efisien untuk penambahan di tengah/depan (lebih cocok std::deque)Dan ini merupakan contoh penggunaannya:#include <iostream>#include <vector>int main() { std::vector<int> angka; angka.push_back(20); angka.push_back(30); angka.push_back(40); std::cout << "Isi vector: "; for (int a : angka) { std::cout << a << " "; } std::cout << "\nElemen pertama: " << angka[0] << std::endl; std::cout << "Jumlah elemen: " << angka.size() << std::endl; return 0;}Dimana outputnya:Isi vector: 20 30 40 Elemen pertama: 20Jumlah elemen: 3Fungsi-Fungsi PentingDari contoh di atas, kita dapat membuat kode dengan beberapa fungsi penting yakni:push_back(x)Menambahkan elemen x ke bagian akhir vectorpop_back()Menghapus elemen terakhir dari vectorsize()Mengembalikan jumlah elemen saat ini di vectorempty()Mengecek apakah vector kosong (true jika kosong, false jika tidak)clear()Menghapus semua elemen dari vectorat(index)Mengakses elemen di posisi index dengan pengecekan batas (out-of-range)arr[]Mengakses elemen di posisi index tanpa pengecekan batasfront()Mengembalikan elemen pertamaback()Mengembalikan elemen terakhirbegin() / end()Mengembalikan iterator ke awal dan akhir vector (digunakan dalam looping)insert(pos, val)Menyisipkan elemen val di posisi poserase(pos)Menghapus elemen di posisi posresize(n)Mengubah ukuran vector menjadi n elemenreserve(n)Meminta alokasi kapasitas minimal sebanyak n elemencapacity()Mengembalikan kapasitas alokasi saat iniReferensicppreference.com dengan bantuan AI 2025

Mengenal Istilah-Istilah Finansial: Panduan Dasar Dunia Keuangan [Bag 1]Visualisasi DataDalam dunia keuangan, banyak istilah yang sering digunakan baik dalam konteks pribadi, bisnis, maupun investasi. Memahami istilah-istilah ini sangat penting agar dapat mengambil keputusan finansial yang bijak. Berikut adalah beberapa istilah finansial dasar sebagai berikut:AsetSegala sesuatu yang dimiliki oleh individu atau perusahaan yang memiliki nilai ekonomi dan dapat memberikan manfaat baik sekarang maupun masa depan [1].LiabilitasKewajiban seperti utang yang harus dibayar oleh individu atau perusahaan kepada pihak lain [2].EkuitasSelisih antara aset dan liabilitas, tetapi dalam konteks perusahaan ekuitas menunjukkan kepemilikan pemegang saham terhadap perusahaan [3].Cash FlowPergerakan uang masuk dan keluar dari suatu entitas. Arus kas positif berarti lebih banyak uang masuk daripada keluar [4].Laba BersihPendapatan tersisa setelah dikurangi semua biaya termasuk pajak dan bunga [5].Referensi[1] Investopedia: What Is an Asset? Definition, Types, and Examples[2] Investopedia: Liability: Definition, Types, Example, and Assets vs. Liabilities[3] Investopedia: Equity — Definition, Example, Market Value, Estimiate[4] https://hbr.org/2004/11/cash-flow-101[5] Investopedia: Net Income (NI): Definition, Uses, and Formula