Persepolis Download Manager: Alternatif Internet Download Manager

Segmen kali ini bakalan ngebahas soal aplikasi download manager. Aplikasi mungkin terdengar familiar di telinga temen-temen semua, I mean, siapa sih yang belum tau aplikasi Internet Download Manager atau IDM? Buat temen-temen yang sering donlot aplikasi, game, atau film, aplikasi ini merupakan sebuah tools yang wajib dimiliki.

Masalahnya di sini adalah, aplikasi Internet Download Manager ini berbayar. Kalo temen-temen bisa install secara cuma-cuma di komputer temen-temen semua, tanpa harus masukin serial number, kemungkinan besar aplikasi Internet Download Manager temen-temen itu bajakan. Buat orang-orang idealis, meng-install aplikasi bajakan sangat, sangat, sangat dihindari. Yaa bisa dibilang saya tipikal seperti itu. Makanya, saya sering mencari alternatif aplikasi download manager yang gratis dengan performa yang gak kalah dari Internet Download Manager.

Ada 2 aplikasi yang saya pernah coba. Yang pertama ada JDownloader. Tapi saya kurang suka karena untuk seukuran aplikasi download manager, aplikasi ini bisa dibilang berat. So far, aplikasi yang menurut saya cukup oke adalah EagleGet. Performanya lumayan. Akan tetapi, aplikasi ini hanya tersedia untuk sistem operasi Windows.

Setelah eksplorasi lebih jauh lagi, saya menemukan satu aplikasi download manager yang stabil dan performanya oke banget. Namanya Persepolis Download Manager. Dan kabar baiknya, aplikasi ini tersedia untuk sistem operasi Windows, BSD, MacOS, dan Linux.

Dilihat dari sisi UI nya, aplikasi ini memiliki tampilan yang cukup elegan untuk sebuah aplikasi gratis dan open source. Dari segi koneksi, Persepolis memungkinkan untuk membuat 16 koneksi dalam satu kali download file. Hal ini membuat proses download jauh lebih cepat. FYI, siang tadi saya coba donlot file ukuran 1 GB via browser dan via Persepolis. Via browser, kecepatannya mentok di 200-300KBps. Via Persepolis, kecepatannya sampai 3MBps.

Gak percaya? Coba aja sendiri 🙂

Buat yang penasaran, atau iseng nyoba, atau pengen buktiin ucapan saya di atas, bisa langsung cek cara instalasinya di web Persepolis: https://persepolisdm.github.io/

Persepolis Download Manager ini juga ada add-ons/extension-nya buat di Firefox sama Google Chrome.

Untuk Firefox:
https://addons.mozilla.org/en-US/firefox/addon/persepolis-dlm-integration/

Untuk Chrome:
https://chrome.google.com/webstore/detail/persepolis-download-manag/legimlagjjoghkoedakdjhocbeomojao?hl=en

 

That’s all.

Ciao!

Solusi Codeforces 669A – Little Artem and Presents

A. Little Artem and Presents

time limit per test

2 seconds

memory limit per test

256 megabytes

input: standard input
output:standard output

Little Artem got n stones on his birthday and now wants to give some of them to Masha. He knows that Masha cares more about the fact of receiving the present, rather than the value of that present, so he wants to give her stones as many times as possible. However, Masha remembers the last present she received, so Artem can’t give her the same number of stones twice in a row. For example, he can give her 3 stones, then 1 stone, then again 3 stones, but he can’t give her 3 stones and then again 3 stones right after that.

How many times can Artem give presents to Masha?

Input:

The only line of the input contains a single integer n (1 ≤ n ≤ 109) — number of stones Artem received on his birthday.

Output:

Print the maximum possible number of times Artem can give presents to Masha.

***

Itu adalah salah satu dari sekian banyak soal di codeforces. Saya tergelitik untuk berbagi ide dari penyelesaian masalah ini. Langsung saja.

Lanjutkan membaca “Solusi Codeforces 669A – Little Artem and Presents”

Belajar Arduino dan Java

Tadi sore saya ada kegiatan KKM Robotik. Pertemuan kali ini membahas seputar pengenalan bahasa pemrograman Arduino kepada para anggota yang baru bergabung.

IMG_20160329_181807.jpg
Arduino Uno dan Rangkaian LED pada protoboard

Kegiatan KKM ini memang baru berjalan efektif beberapa minggu yang lalu. Eh, sebenernya hari ini adalah pertemuan pertama yang benar-benar pertemuan, menurut saya. Karena sebelum-sebelumnya (2 minggu sebelumnya), yang hadir hanya 6 orang. Alhasil, kami hanya ngobrol-ngobrol ringan, sambil memanfaatkan wifi kampus untuk streaming video. Minggu lalu, ada pemilihan kepengurusan yang baru. Saya tidak hadir karena memang sedang kurang enak badan.

Seperti saat pertama kali mencoba pemrograman, saya mengalami sedikit kesulitan dalam memahami sintaks-sintaks yang baru. Beberapa sintaks memang ada yang mirip dengan bahasa C++, bahkan persis. Sehingga ini cukup membantu memudahkan saya dalam memahami kodingan yang dibuat.

Saya pun sekarang ini mulai kembali belajar bahasa Java, setelah sebelumnya sempat macet karena malas, he he. Niatnya sih, tadi hanya ingin download Android Studio yang ukurannya sampai 1,1 GB itu. Tapi malah nyasar ke blog orang lain, dan di sana saya menemukan modul Java. Ya sudah, lanjut belajar deh. Dimulai dari nol lagi, karena saya sudah agak lupa akan sintaks-sintaks di Java.

Belajar 2 bahasa pemrograman sekaligus (3 kalau C++ ikut dihitung), memang gampang-gampang susah. Harus bisa bagi waktu. Jam terbang pun harus benar-benar ditingkatkan lagi. Agar bisa lebih menguasai bahasa-bahasa pemrograman ini. Mudah-mudahan lancar…

Membangun Paradigma Pemrograman

Bagi seseorang yang baru pertama kali mencoba pemrograman, mungkin akan mengalami sedikit kesulitan, baik dalam memahami sintaks bahasa pemrograman, ataupun memahami algoritma program itu sendiri.

Ini merupakan hal yang wajar dalam proses pembelajaran. Dan seiring berjalannya waktu, memahami sebuah program tidak akan sesulit seperti saat pertama kali. Dengan catatan, bahwa kita harus mengikuti proses pembelajaran itu dengan baik.

Yang tidak wajar justru ketika sudah cukup lama belajar bahasa pemrograman, tetapi tidak paham tentang apa yang dibuatnya itu. Atau hanya paham sedikit. Hanya sebatas mengetik sebuah kode. Yang penting, program yang dibuat bisa dijalankan. Itu saja sudah cukup.

Jika diibaratkan, maka ini seperti ketika kita belajar, tapi tidak tahu, maksud sebenarnya kita belajar itu apa. Yang kita tahu adalah bahwa kita harus belajar. Belajar ini, ini, dan ini. Kemudian dapat nilai yang bagus saat ujian, dan selesai.

Apakah hanya itu saja? Harusnya tidak. Tujuan kita belajar adalah untuk mendapatkan ilmu. Untuk meng-upgrade diri agar menjadi individu yang lebih baik lagi. Jika hanya mengejar nilai yang sempurna, gampang. Kita tidak perlu belajar, cukup kerjakan tugas yang jawabannnya bisa didapatkan dari internet. Salin, kumpulkan. Ketika ujian, tinggal siapkan contekan. Atau tinggal lirik kiri-kanan, lihat jawaban teman di sebelah.

Tapi… jangan kaget ketika nanti muncul variasi-variasi soal baru. Karena kita tahu, bahwa ada banyak sekali permasalahan yang memerlukan penanganan yang berbeda-beda. Beda penanganan, beda pula kode yang harus dibuat. Dan orang yang dalam memprogram hanya sebatas mengetik saja, tanpa paham apa maksud dari kode yang dia buat itu, hanya bisa duduk terdiam, bingung harus memulai dari mana.

Membangun Paradigma Pemrograman

Jika sudah cukup lama belajar bahasa pemrograman, dan masih saja tidak mengerti akan program yang dibuatnya itu, maka jelas, ada sesuatu yang salah dan harus segera diperbaiki.

Biasanya, ini terjadi karena mereka tidak paham akan masalah yang akan dibuat programnya. Atau mungkin sudah paham masalahnya, tapi bingung harus memulainya darimana. Atau, kebanyakan langsung mengetikkan kodenya tanpa mengidentifikasikan masalahnya terlebih dahulu.

Sebagaimana yang kita ketahui, bahwa secara teoritis, ada tahapan-tahapan yang harus dilakukan dalam membuat sebuah program. Pertama: identifikasi permasalahan. Pada tahap ini, kita memahami permasalahan yang dihadapi Kemudian, memperkirakan kemungkinan-kemungkinan yang akan terjadi untuk melakukan error handling.

Contohnya, ketika ingin menginput sebuah nilai ujian ke dalam sebuah variabel, maka yang diperlukan adalah sebuah variabel untuk menampung nilai, dan sebuah nilai yang akan diinput. Ada 2 kemungkinan yang terjadi. Yang pertama, nilai ujian yang diinput itu berkisar antara 0 sampai 100, yaitu nilau ujian pada umumnya. Dan kemungkinan kedua, nilai ujian yang diinput lebih dari 100 atau kurang dari 0.

Jika telah melakukan identifikasi masalah, maka langkah selanjutnya adalah menyusun algoritmanya. Secara sederhana, algoritma adalah sekumpulan perintah yang jelas, logis dan sistematis untuk menyelesaikan suatu masalah. Dalam kasus input nilai ujian di atas, maka algoritmanya adalah sebagai berikut:

  1. Mendeklarasikan sebuah variabel untuk menampung nilai ujian yang diinput, misalnya variabel a;
  2. Menginput sebuah nilai ke dalam variabel a;
  3. Jika nilai yang diinput lebih dari 100 atau kurang dari 0, maka ulangi perintah nomor 2;
  4. Jika tidak, maka program selesai.

Setelah menyusun algoritmanya, maka langkah selanjutnya adalah menerjemahan algoritma yang telah disusun ke dalam sebuah kode program. Setelah selesai, maka kode yang telah dibuat bisa dicoba untuk dieksekusi.

Ada 3 kemungkinan, berdasarkan pengalaman saya, yang akan terjadi ketika kita mengeksekusi program yang telah kita buat. Yang pertama, program kita tidak berjalan karena ada sebuah error pada sintaks penulisan, misalnya lupa memberi tanda semicolon (“;”) pada setiap instruksi yang diberikan. Ini adalah sebuah kemungkinan yang menurut saya paling gampang untuk diatasi.

Yang kedua, program kita berjalan dengan semestinya. Ini adalah sebuah momen yang membuat para programmer senang bukan kepalang. Minimal, programnya bisa jalan saja sudah senang. Meskipun belum tahu apakah ada bug atau semacamnya. Syukur-syukur kalau program yang dibuat tidak ada bug-nya sama sekali.

Yang ketiga, kemungkinan yang menurut saya paling menyebalkan. Program yang dibuat berhasil di jalankan, namun tidak berjalan sesuai dengan apa yang diinginkan karena adanya bug. Kemungkinan ini cukup membuat para programmer pusing, karena untuk menemukan di mana letak kesalahannya, harus teliti sekali memahami alur program yang dibuat itu. Baru kemudian bisa memprediksi di mana letak kesalahannya.

Yah, kira-kira begitulah alur dari pembuatan sebuah program. Dan jika mengacu kepada penuturan di atas, maka jelas bahwa langsung membuat program tanpa identifikasi masalah kurang tepat dan tidak dianjurkan untuk dilakukan. Boleh-boleh saja dilakukan, tapi menurut saya, that is such a nonsense. Percuma, dan hanya akan buang-buang waktu.

Inilah yang saya maksud dengan membangun sebuah paradigma pemrograman. Cara kita memandang bagaimana kita membuat sebuah program untuk menyelesaikan suatu permasalahan yang diberikan. Bahwa dalam menyusun sebuah program, ada tahapan-tahapan yang harus dilakukan. Semuanya bertahap dan berproses.

Kesulitan dalam memahami inti permasalahan

Inilah yang seringkali terjadi, ketika kita hendak membuat sebuah program. Dan justru inilah yang terpenting, menurut saya. Karena dari inti permasalahan ini, bisa didapatkan informasi-informasi yang dapat menyelesaikan permasalahan itu. Jika inti permasalahannya saja belum dapat dipahami, maka bagaimana mungkin program bisa dibuat?

Ada 2 tips untuk mengasah kemampuan dalam memahami inti permasalahan. Yang pertama, mulailah dari hal-hal sepele. Seperti, apa inti dari permasalahan pintu kamar kost kita? Apakah terkunci dan kuncinya hilang? Apakah engselnya rusak? Apakah pintunya sudah jelek? Dari sana, kita bisa mendapatkan informasi-infomasi untuk mengatasi inti permasalahan itu, kemudian menyusun langkah-langkah yang harus dilakukan, dan melaksanakan langkah-langkah itu.

Yang kedua, tingkatkan jam terbang. Ini adalah pepatah dari dosen saya. Dan memang benar, dengan jam tebang yang lebih ditingkatkan, kemampuan programming kita akan lebih mantap lagi. Ibarat sebuah pisau yang diasah selama 30 menit, akan lebih tajam daripada pisau yang diasah selama 1 jam.

Sebenarnya jika dipikirkan lebih dalam, pemrograman mirip sekali dengan penyelesaian masalah sehari-hari kita. Atau, bahkan mungkin sudah menjadi bagian daripada itu. Maka harusnya , kita tidak mengalami kesulitan yang berarti dalam membuat sebuah program.

Harusnya loh, ya… He he he.