BAB 3
METODOLOGI PENELITIAN
3.1. Analisis Data
3.1.1. Dataset overviews
Ketersediaan Dataset Dataset UVa Online Judge ini tersedia dari API uHunt yang mengembalikan data dalam
format JSON Halim, 2010. API ini memungkinkan pengembang aplikasi lainnya menciptakan berbagai complementary tools yang lebih kompleks dan sesuai dengan
kebutuhan dan kreativitas yang diinginkan oleh masing-masing pengembang. Dalam penelitian ini, peneliti menggunakan ketersediaan data yang bisa diakses publik untuk
pengembangan fitur untuk merekomendasikan berbagai soal di UVa Online Judge. Berikut detail API uHunt untuk keperluan penelitian.
Konversi Nama Pengguna menjadi UserID UID
URL http:uhunt.felix-halim.netapiuname2uid{
maestrofx} Deskripsi
{maestrofx} merupakan nama pengguna yang akan dikonversi menjadi ID pengguna.
Problem List
URL http:uhunt.felix-halim.netapip
Deskripsi Json Format
Mengembalikan daftar problemset yang ada di platform UVa dalam format array Javascript. Setiap soal terdefinisi sebagai larik dengan 21 nilai:
[[ 36,100,The 3n + 1 problem, 68010, 23, 1000000000, 0, 6642, 0, 0, 101746, 0, 57029, 131, 52588, 5209, 239064, 4447, 172221, 3000, 1],
[37, 101, The Blocks Problem ,11617, 10, 1000000000 , 0, 908, 0, 0, 12231, 0, 19191, 6, 8419, 200, 20790, 5697, 17207, 3000, 1],
Universitas Sumatera Utara
[38, 102,Ecological Bin Packing, 21345, 33, 1000000000, 0, 1947, 0, 0, 11769, 0, 4349, 6, 2739, 72, 32232, 635, 33197, 3000, 1]..]
Soal-Soal Spesifik
URL http:uhunt.felix-halim.netapipid{problem-id}
Deskripsi Json Format
URL Deskripsi
Json Format menampilkan soal tertentu dengan {problem-id}
http:uhunt.felix-halim.netapipnum{problem-number} menampilkan soal tertentu dengan {problem-number}
{pid:36, num:100, title:The 3n + 1 problem ,dacu:68010, mrun:23, mmem:1000000000, nover:0,
sube:6642, noj:0, inq:0, ce:101746, rf:0, re:57029, ole:131, tle:52588, mle:5209,
wa:239064, pe:4447, ac:172221, rtl:3000, status:1}
Status Pengumpulan Solusi pada Soal Tertentu
URL http:uhunt.felix-halim.netapipsubs{pids-csv}{start-sbt}{end-sbt}
Deskripsi Menampilkan submission ke soal tertentu dengan rentang tanggal yang diberikan. {pid-
csv} merupakan daftar identitas soal yang dikodekan dengan tanda koma dengan nilai terpisah. {start-sbt} dan {end-sbt} merupakan rentang tanggal dalam format unix. Perlu
dicatat bahwa submission yang dikembalikan dalam urutan acak. API uHunt ini sangat cocok untuk membuat virtual contests yang berjalan pada rentang waktu tertentu pada
sejumlah soal yang telah ditentukan.
Peringkat Soal
URL http:uhunt.felix-halim.netapiprank{pid}{rank}{count}
Deskripsi Mengembalikan submission terhadap satu soal {pid} yang diranking dari {rank} sampai
{rank} + {count} – 1.
Peringkat Soal Pengguna
URL http:uhunt.felix-halim.netapipranklist{pid}{uid}{nabove}{nbelow}
Deskripsi Mengembalikan submission terdekat secara eksekusi waktu untuk submissions
pengguna tertentu pada satu soal. {pid} adalah identitas soal. {uid} adalah identitas pengguna, {nabove} adalah jumlah submissions tercepat yang diranking di atas pengguna
yang ditampilkan, {nbelow} adalah jumlah submissions terlama yang dirangking di bawah pengguna yang ditampilkan.
Live Events
URL http:uhunt.felix-halim.netapipoll{poll-id}
Universitas Sumatera Utara
Deskripsi Fitur ini menggunakan teknik long-polling. Fitur ini dapat menahan permintaan untuk
paling tidak 1 menit untuk aktivitas baru. Fitur ini juga akan mengembalikan nilai dengan sesegera mungkin jika ada paling tidak satu aktivitas baru. Server hanya akan
menampilkan preferensi 100 aktivitas terakhir. {poll-id} merupakan id minimal yang dipanggil. Untuk pemanggilan pertama kalinya,
pengguna dapat menggunakan nilai 0 untuk mendapatkan 100 aktivitas terakhir. Setelah menerima aktivitas, perlu dicatatkan id terakhir dari aktivitas yang dikembalikan dan
menggunakannya untku memanggil fiturnya lagi dengan {poll-id} = the_last_id untuk mendapatkan nilai aktivitas berikutnya, demikian seterusnya.
Submissions Pengguna
URL 1.
http:uhunt.felix-halim.netapisubs-user{user-id} 2.
http:uhunt.felix-halim.netapisubs-user{user-id}{min-sid} Deskripsi
URL Deskripsi
{user-id} merupakan identitas pengguna. {min-sid} bersifat opsional. Misalnya, jika sebelumnya telah ditentukan, nilai ini akan mengembalikan submissions dengan identitas
aktivitas lebih besar dari nilai {min-sid}. Fitur ini mengembalikan objek dengan format JSON dengan 3 atribut: name name asli pengguna, uname username pengguna, dan
subs aktivitas pengguna sebagai satu array. http:uhunt.felix-halim.netapisubs-user-last{user-id}{count}
Fitur ini mengembalikan submission {count} terakhir dari pengguna {user-id} dalam format yang sama sebagai subs-user di atas. Panjang larik Subs sama dengan jumlah
submissions pengguna. Setiap elemen merupakan satu submission dengan nilai:
Submissions Pengguna Tertentu Terhadap Soal Tertentu
URL http:uhunt.felix-halim.netapisubs-pids{user-ids-csv}{pids-csv}{min-subs-id}
Deskripsi
URL Deskripsi
{user-ids-csv} merupakan identitas pengguna yang diwakilkan sebagai nilai yang dipisahkan dengan tanda koma. Sama halnya, {pids-csv} merupakan identitas soal yang
diwakilkan dengan dengan nilai yang dipisahkan dengan tanda koma. Jumlah dikedua csv dibatasi hingga 100 aktivitas. {min-subs-id} merupakan identitas submission minimal
yang akan dikembalikan. Hasilnya adalah dalam bentuk hash map dengan kuncinya adalah identitas pengguna dan
nilainya adalah submission pengguna tersebut yang berkorelasi dengan satu identitas soal tertentu. Format submission identik dengan deskripsi tersebut.
http:uhunt.felix-halim.netapisubs-nums{user-ids-csv}{nums-csv}{min-subs-id} fitur ini sama seperti fitur sebelumnya, kecuali soal yang diberikan di nomor soal, bukan
identitas soal.
Nilai Identitas bit-encoded-problem Yang Diselesaikan Oleh Beberapa Pembuat Soal
URL http:uhunt.felix-halim.netapisolved-bits{user-ids-csv}
Deskripsi Mengembalikan nilai larik yang terdiri dari {uid:id_pengguna, solved:[bit-encoded-
solved-pids]}. Nilai bit-encoded-solved-pids ini merupakan nilai larik dimana bit ke-i dari elemen j basis 0 mewakilkan apakan pengguna tertentu telah menyelesaikan soal
Universitas Sumatera Utara
dengan pid = j32+i
Ranking Pengguna
URL http:uhunt.felix-halim.netapiranklist{user-id}{nabove}{nbelow}
Deskripsi Mengembalikan peringkat pengguna dan pengguna lain terdekat dengan peringkat
pengguna yang dicari. {nabove} merupakan sejumlah pengguna di atas {user-id} yang ingin ditampilkan. Sama
halnya dengan {nbelow}. Keduanya, {nabove} dan {nbelow} dibatasi dengan banyak 100. hasil yang dikembalikan berupa larik berformat JSON dimana setiap elemen
merupakan peringkat pengguna tunggal dengan atribut sebagai berikut: 1.
rank → peringkat pengguna
2. old
→ nilai bukan 0 bila pengguna merupakan pengguna platform UVa yang belum migrasi
3. name
→ nama asli pengguna 4.
username → username pengguna
5. ac
→ jumlah soal yang berstatus accepted 6.
nos → jumlah submissions pengguna
7. activity
→ jumlah soal berstatus accepted dari pengguna dalam 2 hari, 7 hari, 31 hari, 3 bulan, dan 1 tahun
mengembalikan peringkat pengguna dari posisi tertentu
URL http:uhunt.felix-halim.netapirank{pos}{count}
Deskripsi Mengembalikan nilai pengguna dengan peringkat {pos} ke {pos} + {count} – 1.
3.1.2. Datasets grabbing untuk keperluan data testing
Datasets UVa Online Judge yang tersedia publik melalui API uHunt ini sangat kompleks dan dibagi berdasarkan spesifikasi pengguna tertentu, soal tertentu, dan
history submissions serta seluruhnya bisa dikostumsasi berdasarkan kebutuhan penelitian. Datasets yang tersedia di platform UVa Online Judges terdiri dari dua juta
lebih pengguna terdaftar dengan hampir 50000 pengguna unik aktif setiap bulannya. Berdasarkan statistik tahun 2014 pada Bab 2, terdapat 1784838 submissions, dengan
rata-rata ~148000 submissions setiap bulannya UVA, 2014.
1 Speficic-User-Information-Retrieval Script
Untuk keperluan data testing secara offline, penulis melakukan grabbing terhadap keseluruhan akun dengan keseluruhan informasi publik yang tersedia terhadap masing-
Universitas Sumatera Utara
masing pengguna. Karena datasets ini sangat besar large text documents dan memerlukan waktu yang cukup lama untuk proses grabbing, penulis membuatkan
codes mini yang menarik data ini secara terpisah-pisah sehingga bisa dijalankan ratusan codes
secara paralel dalam satu waktu. Seluruh data ini tersimpan dalam satu larik dengan format JSON dengan spesifikasi identitas pid pengguna.
Berikut pseudocode untuk grabbing data pengguna dengan rentang identitas pengguna 60000 sampai 69999:
mkdir user_60000 for i in {60000..69999}; do
wget -c http:uhunt.felix-halim.netapisubs-useri mv i user_60000
done
Berikut pseudocode untuk grabbing arsip soal dalam bentuk dokumen PDF:
volume_range=seq 1 127; mkdir -p pdfs
for volume in volume_range; do
for serial in seq 0 99; do
problem_id=100 volume + serial if [[ -f .pdfsvolumeproblem_id.pdf ]]; then
wget http:uva.onlinejudge.orgexternalvolumeproblem_id.pdf
fi done
mkdir -p .pdfsvolume mv -n volume.pdf .pdfsvolume 2devnull
done
3.2. Analisis Sistem