Rata Kanan-Kiri (Justify) Pada WordPress.com

Selama ini untuk kepraktisan saya menggunakan wordpress template untuk membuat postingan di wordpress. Ketika mencoba membuat langsung dari wordpress.com ternyata agak ribet juga untuk yang rata kanan kiri. Hal ini karena tidak ada pilihan justify di wordpress, yang ada hanya rata kiri, center dan rata kanan.

Memang lebih mudah dengan template jika dengan word 365 [link], atau langsung share di microsoft word 2007 [link] atau 2016. Ternyata tombol untuk rata kanan tersembunyi di sebelah kanan hyperlink, yakni tombol menu yang diklik terlebih dahulu.

Tinggal klik ‘Rata kanan kiri’ untuk meratakan sisi kiri dan kanan pragraf kita. Hasilnya tampak seperti postingan ini. Sekian, semoga bermanfaat.

Istilah Machine Learning dalam Bahasa Indonesia yang Bermasalah

Kita pernah mendengar istilah-istilah konversi dari bahasa Inggris ke bahasa Indonesia. Di sini banyak yang bermasalah mengingat keterbatasan bahasa kita. Salah satunya adalah dalam bidang Machine Learning (termasuk juga Deep Learning). Postingan ini sedikit mengupas problem yang muncul, khususnya pada skripsi/tugas akhir mahasiswa.

Prediksi

Istilah ini muncul ketika fuzzy. inference system (FIS) muncul. Istilah inference ketika diterjemahkan artinya prediksi. Nah, munculah istilah ini pada mesin-mesin yang dengan masukan variabel-variabel tertentu dihasilkan prediksinya. Nah, saat ini jika istilah ini digunakan akibatnya jadi rancu karena istilah ini sangat umum. Kita bisa saja memprediksi kurs dolar beberapa hari ke depan, bisa saja mengatakan memprediksi nilai tertentu masuk dalam kelas apa, atau memprediksi nilai kontinyu tertentu dari fitur-fitur input. Tentu saja istilah itu seharusnya diganti berturut-turut menjadi proyeksi (forcasting), klasifikasi, dan regresi.

Klasifikasi

Klasifikasi adalah proses memasukan suatu set dalam kelas-kelas tertentu, misalnya pada model deteksi kanker, suatu set data dimasukan dalam kelas positif kanker atau negatif kanker, jika dua kelas. Jika lebih dari dua kelas, bisa saja kanker, kanker jinak, bukan kanker, pengapuran, dan lain-lain. Istilahnya dulu disebut multiclass untuk membedakan yang dua kelas. Nah, saat ini model ML hampir lebih dari dua kelas, jadi istilah multiklas sudah jarang disebut, baik dalam konten apalagi dalam judul artikel ilmiah. Untuk akurasi biasanya menggunakan matrix confusion. Sekali lagi jika diindonesiakan jadi matriks kebingungan .. bingung kan??

Regresi

Regresi mirip dengan klasifikasi, hanya saja outputnya bukan kelas tapi nilai tertentu yang biasanya bilangan real pecahan. Nah, untuk mengecek akurasinya tentu saja tidak bisa dengan matriks konfusi (saya lebih suka istilah ini daripada matriks kebingungan) karena sangat sulit nebak benar angka kontinyu yang tak hingga. Biasanya menggunakan Mean square Error (MSE).

Proyeksi

Nah ini merupakan prediksi jenis lain. Atau sebaiknya kata prediksi tidak dipakai ya karena terlalu umum. Langsung saja peramalan (projection). Salah satu syarat proyeksi adalah adanya data time-series. Misalnya prediksi harga saham maka variabel yang mempengaruhi adalah harga saham itu sendiri tapi berbeda waktunya (sequantial). Walaupun saat ini proyeksi dikombinasikan dengan regresi dengan eksternal input (dalam contoh ini selain harga saham, misalnya inflasi) yang bisa saja memengaruhi nilai proyeksi.

Object Detection, Segmentasi Semantik, Instance Segmentation

Nah istilah-istilah spesifik lainnya silahkan searching di internet baik definisi maupun paper-paper yang membahasnya. Jika object detection bermaksud mendeteksi (dengan pointer tertentu, misal kotak berwarna) kelas tertentu dalam satu gambar, segmentasi dan instan segmentasi bermaksud mengklasifikasi piksel gambar/citra/video menjadi warna tertentu yang merepresentasikan kelasnya. Misalnya segmen di video jalan raya, segmentasi semantik akan memberi warna objek tertentu, misal orang, mobil/kendaraan lain, pedesterian, rambu lalulintas dan lain-lain. Bagaimana instance segmentation? Ini merupakan tingkat yg lebih advance dari segmentasi semantik yang membedakan warna pada kelas yang berbeda, instance segmentation membedakan kelas yang sama, misalnya ada tiga ayam maka ada tiga warna untuk tiap-tiap ayam.

Klasterisasi (Clustering)

Ini sangat berbeda dengan klasifikasi dkk karena di sini data yang digunakan sebagai data training tidak memiliki label/kelas tertentu. Oiya, data training merupakan bahan baku model machine learning saat proses training untuk membuat model. Jadi jangan menggabungkan Naive bayes atau KNN dengan K-Means karena merupakan domain problem yang berbeda (yang satu klasifikasi, yang lain clustering). Tentu saja ada kombinasi problem, misalnya antara SVM yang klasifikasi dengan SVR yang regressi.

Jadi ketika menggunakan istilah-istilah itu sebaiknya dipahami dahulu agar tidak membingungkan orang lain. Contoh di atas hanya sebagian saja, silahkan selidiki problem lain misalnya optimization.

Peramalan Menggunakan ARIMA dengan SPSS

Sebelum masuk bagaimana meramalkan sesuatu dengan ARIMA ada baiknya membedakan antara peramalan (forecasting) dengan prediksi (prediction). Keduanya sama-sama memprediksi, tetapi peramalan prediksi didasarkan pada data historis. Jadi peramalan membutuhkan data deret berkala (time-series). Sementara prediksi membutuhkan variabel-variabel yang ada yang menentukan hasil prediksi. Jika meramalkan cuaca membutuhkan data-data cuaca sebelumnya, prediksi membutuhkan variabel-variabel seperti suhu, kelembaban, dan sebagainya untuk memprediksi. Walau terkadang keduanya digabung, misalnya pada Nonlinear Autoregressive Network with External (NarXnet) [link].

AutoRegressive Integrated Moving Average (ARIMA) merupakan peramalan dengan memanfaatkan tiga komponon yaitu AR, I, dan MA. Pada Statistical Package for Social Sciences (SPSS) diistilahkan dengan p, d, dan q dalam toolboxnya. AR menggunakan prinsip regresi, sementara I menghilangkan tran musiman dari data dan MA menggunakan prinsip moving average dari residu sebelumnya. Berapa ukuran yang tepat untuk AR, I, dan MA perlu dicari nilai yang optimal dimana kesalahan, misal MAPE, yang sekecil mungkin.

Beberapa riset tentang peramalan banyak dilakukan, khususnya saat COVID. Beberapa mengikuti pola tertentu, misalnya mengikuti konsep SIR [link], namun terkadang faktor-faktor eksternal kadang perlu juga dimasukan, misalnya ketika meramalkan inflasi di suatu daerah. Berikut bagaimana menggunakan ARIMA untuk meramalkan dengan data tertentu.

Video singkat ini bisa juga jadi bahan referensi meramalkan inflasi dengan ARIMA, di sini menggunakan ARIMA (1,2,1). Silahkan coba versi ARIMA lainnya.

Grafik Interaktif dari Google Form

Hampir kebanyakan survey saat ini menggunakan Google Form karena lebih praktis. Masalah yang utama adalah responden yang bersedia meluangkan waktu untuk mengisi survey kita. Banyak cara agar responden mau mengisi, dari memberikan doorprize, souvenir, hingga mengandalkan teman-teman di grup.

Di medsos terkadang ada survey singkat yang langsung memberikan hasil agar responden segera tahu bagaimana hasil riset yang dihasilkan berdasarkan data terkini berupa rekapitulasi. Kita lihat ketika pemilu, banyak rakyat tertarik dengan hasil quick count karena ingin segera melihat hasilnya. Rasa penasaran terkadang menambah tingkat partisipasi masyarakat. Bayangkan jika habis ‘nyoblos’ menunggu hasilnya sebulan kemudian, pasti ‘be te’. Keingintahuan responden terkadang perlu difasilitasi agar tingkat partisipasi naik.

Berikut ini cara menggunakan google form untuk survey, kemudian hasilnya dapat dilihat dalam website berupa kode HTML berisi chart. Kode tersebut tinggal dishare, bahkan oleh web server statik seperti github page atau spaces.w3school.

Perkembangan Tool Programming

Ketika pertama mengenal komputer di awal 90-an, kita mengenal bahasa yang berbasis teks. Di sini kemampuan programmer, khususnya dari logika dan ketelitian mutlak diperlukan. Salah sedikit saja, harus ulang lagi, dimana kompilasi bisa memakan waktu, bahkan mahasiswa waktu itu ditinggal pergi jalan-jalan dulu saat menunggu selesai.

Setelah itu beberapa pengembang bahasa pemrograman mulai membuat pemrograman dengan menggunakan toolbox, dimana untuk membuat interface GUI tinggal drag and drop saja menggunakan mouse. Waktu itu visual basic menjadi idola bagi para mahasiswa untuk tugas akhir, selain memang industri juga banyak permintaan dengan bahasa itu. Selanjutnya Netbeans, Eclips, Delphi, dan lain-lain mengikuti langkah microsoft.

Perkembangan terus berlanjut, khususnya aplikasi berbasis Web, yang dipelopori oleh PHP yang open source dan dotnet untuk microsoft. Muncul pula beberapa bahasa seperti Ruby and Rails dan Python yang masuk ke web-based. Tentu saja agak sulit membuat satu Integrated Development Environment (IDE) yang bisa menyatukan platform yang ada, apalagi terkadang memanfaatkan library yang terpencar-pencar. Perkembangan smartphone memaksa lagi developer memanfaatkan peluang itu dengan tools canggihnya, misalnya Android Studio.

Artificial Intelligence (AI) muncul di beberapa tahun terakhir mengubah peta. Beberapa aplikasi seperti ChatGPT mampu mengubah paradigma dimana penggunaan IDE bisa digantikan lewat tanya jawab dengan AI. Error yang terjadi dapat langsung terselesaikan, berbeda dengan cara mencari, bertanya, atau cara-cara lama lainnya. Video berikut menunjukan dengan mudahnya training deep learning dengan Tensor Flow dengan mudah dikonversi ke pesaingnya Pytorch untuk sample IRIS dataset.

Membuat ChatGPT Sendiri

Tidak dapat dipungkiri bahwa ChatGPT membuat warna baru dalam persaingan Artificial Intelligence App di dunia. Dalam hitungan hari penggunanya sudah menyaingi beberapa situs-situs ternama. Hal ini karena fleksibilitasnya yang cukup memanjakan pengguna dibanding hanya sekedar search engine saja seperti Google, Bing, dan kawan-kawan.

Namun salah satu keterbatasannya adalah informasi terkait kondisi terkini atau kondisi spesifik tertentu, misalnya menanyakan informasi khusus seperti nama Anda sendiri. Biasanya jawabannya seperti ini:


Ok, jangan tersinggung, memang aplikasi ini tidak ditujukan sebagai search engine. Generative Pre-trained Transformer (GPT) sendiri merupakan model transformer yang cukup ampuh dalam mengelola Natural Language Processing (NLP). Ternyata Google mencoba mengembangkan Bidirectional Encoder Representations from Transformers (BERT) yang tidak kalah hebat.

Beberapa situs di internet banyak yang mengajarkan bagaimana membuat ChatBOT ala ChatGPT. Salah satunya adalah Github ini. Untuk mempraktikannya cukup dengan Google Colab. Misalnya saya menggunakan data Nilai Mata Kuliah Artificial Intelligence berupa tabel CSV.

Dengan memanfaatkan pretrained model dari HuggingFace yang lumayan juga ukurannya, hampir setengah Gigabyte.

Di sini kita akan membuat sistem Chat yang dapat menginfokan data.csv yang telah digunakan untuk transfer learning. Oiya, transfer learning adalah melatih model dengan data baru dari model yang sudah terlatih sebelumnya. Beberapa bobot dibekukan (freeze) agar info yang dahulu dapat dipakai lagi, sementara data baru menggunakan bobot yang biasanya diujung untuk belajar hal baru.

Tampak paramater yang dapat dilatih contoh di atas adalah 500an Mb sementara yang dibekukan 60-an juta parameter. Bagaimana penggunaannya? Sederhana saja, mirip ChatGPT. Jika kita ingin mencari informasi nilai dari tabel tersebut kita tinggal bertanya saja.

Yang tadinya model tidak bisa menjawab informasi tersebut (silahkan tanya ChatGPT, pasti jawabannya seperti gambar sebelumnya), sekarang bisa menjawab. Hal terpenting adalah model transformers dapat mengetahui susunan kata yang berbeda. Tinggal model tersebut diimplementasikan pada Web maupun mobile app.

Jadi jika kita akan membuat sistem ChatBOT yang menjawab masalah jadwal perkuliahan, prosedur pendaftaran dan lain-lain, alangkah baiknya menggunakan aplikasi ini. Saya pernah ditegur oleh bagian pusat layanan informasi/pusat informasi karena dianggap tidak men-share informasi dari rektorat ke jurusan yang saya pimpin (padahal sih udah), akibat mahasiswa yang kerap chat ke layanan informasi dan mengganggu waktu istirahatnya, karena sebagai manusia biasa butuh istirahat. Waktu pandemi COVID-19 memang mahasiswa butuh informasi tertentu terkait kuliahnya. Alangkah baiknya hal-hal yang kadang pertanyaannya ‘itu-itu saja’ bisa diganti dengan AI. Sekian, semoga bisa menginspirasi.

Mengatasi Google Drive yang Penuh

Google merupakan raksasa IT yang hampir menguasai internet. Beberapa situs melaporkan Google sebagai situs nomor 1, misalnya situs similarweb.

Walaupun situs pencarinya mulai terancam dengan searching berbasis AI, misalnya ChatGPT, fasilitas lainnya tentu saja sulit ditinggalkan oleh konsumen, salah satunya adalah cloud storage, yaitu penyimpanan bernama Google Drive yang secara cuma-cuma diberikan sekitar 15 Gb.

Penyimpanan ini sangat fleksibel karena dapat mengakomodir sesorang yang sangat mobile. Hanya dengan koneksi internet, kita dapat menyimpan dan mengunduh data dari Google Drive. Tingkat keamanannya pun cukup baik mengingat Google menggunakan skema two-factors authentication (2FA). Selain itu fasilitas sharing juga sangat bermanfaat. Oiya, Anda yang menggunakan Google Colab juga sangat terbantu dengan Google Drive ini mengingat Google Colab dapat terhubung dengan Google Drive sehingga pemrosesan Big Data dapat dilakukan.

Salah satu kendala dari Google Drive adalah kapasitasnya yang terbatas, yakni 15 Gb. Sebenarnya kapasitas ini cukup besar, hanya saja karena dipergunakan setiap hari terkadang kapasitasnya mulai menipis. Beberapa siswa memiliki problem tidak bisa upload soal tugas di Google Classroom karena kapasitas Google Drive nya penuh sehingga harus ‘dibersihkan’ atau berlangganan untuk mendapatkan kapasitas di atas 15 Gb.

1. Transfer Ownership

Untuk mengatasi hal tersebut ada dua fungsi Google Colab yang dapat dimanfaatkan untuk mengatasi storage yang penuh, yaitu transfer ownership. Mengapa hal ini perlu dilakukan? Alasannya hanya satu, untuk menyelamatkan data di cloud, mengunduh sebesar puluhan giga membutuhkan kuota yang besar, disamping itu perlu menyiapkan ruang harddisk. Jadi, ada baiknya ‘menitipkan’ file ke Google Drive lain. Tentu saja dengan mendaftarkan akun baru yang sebesar 15 Gb juga.

Untuk melakukan Transfer Ownership, sebelumnya file dishare ke akun target. Misalnya Google Drive saya yang mulai menipis, padahal akun tersebut merupakan akun utama yang sudah lama dipakai. Sayang kalau tidak dipakai lagi mengingat jurnal dan korespondensi lain masih menggunakan akun tersebut.

Jika kita tekan ‘Storage (87% full)” maka akan muncul jendela yang memberitahukan file apa saja yang ukurannya besar yang memenuhi Google Drive. Misalnya kita akan mem-backup file terbesar saya.

2. Sharing File

Langkah pertama adalah men-share file tersebut ke akun backup kita. Nah, di sini untuk transfer ownership mengharuskan Gmail yang sejenis. Seperti Anda ketahui akun Gmail ada dua jenis, Gmail institusi dan Gmail.com. Jika email institusi maka Anda hanya bisa mentransfer ownership pada institusi yang sama.

Cara sharing seperti biasa, ada baiknya tidak full share, melainkan hanya mengundang email tertentu saja, lebih aman. Selanjutnya ketika sudah share, lakukan share lagi pada file tersebut tapi di sini kita melanjutkan proses transfer ownership.

Perhatikan, storage sekarang menjadi 83% full, alias bertambah 4%, lumayan. Tentu saja akun backup saya akan bertambah juga, dan lama kelamaan pun penuh. Memang ada baiknya menyimpan di harddisk backup yang saat ini harganya kian murah. Tapi resiko rusak, hilang, corrupt dan terkena virus harus siap dihadapi.

Untuk jelasnya silahkan lihat video berikut ini, terima kasih.

Buldozer for developing Python applications on Android

Mobile applications saat ini merupakan aplikasi yang paling banyak dipakai. Sebagai contoh, hampir jarang pengguna Facebook dengan browser. Mulai dari taxi online, hingga pembarayan menggunakan handphone. Kemudahan karena bentuk yang mudah dibawa menuntuk aplikasi-aplikasi (desktop dan website) disiapkan juga versi mobile-nya. Postingan kali ini hanya mengilustrasikan bagaimana mengkonversi aplikasi berbasis python yang kita buat menjadi aplikasi mobile, salah satu yang terkenal adalah berbasis Android.

Mobile applications are currently the most widely used applications. For example, it is rare to find Facebook users accessing it through a browser. From online taxis to mobile payments, smartphones have made it convenient to access various applications. As a result, many applications (both desktop and website-based) have prepared mobile versions. This post will illustrate how to convert a Python-based application into a mobile application, specifically focusing on the popular Android platform.

A. Kivy

Salah satu library python yang banyak digunakan untuk membuat aplikasi Python agar bisa berjalan di mobile app adalah Kivy, lihat post terdahulu untuk lengkapnya. Masih menggunakan aplikasi pada post sebelumnya sebagai ilustrasi. Berikut tampilan GUI dengan Kivy setelah dirunningl.

One of the widely used Python libraries for creating Python applications that can run on mobile apps is Kivy, as mentioned in the previous post. Continuing with the application from the previous post as an illustration, here is the GUI appearance with Kivy after running it.

B. Buldozer

Buldozer merupakan satu paket berbasis Python untuk membuat apk dari bahasa Python yang dibuat dengan library kivy. Kira-kira tampilannya sebagai berikut. Silahkan lihat di google colab ini. Uniknya, buldozer dapat dijalankan lewat Google Colab, sehingga hanya membutuhkan browser saja. Metode lainnya lihat postingan ini.

Bulldozer is a Python-based package for creating APK files from Python code built with the Kivy library. Here is an example of its appearance. Please refer to this Google Colab link for more details. The unique feature of Bulldozer is that it can be executed through Google Colab, requiring only a web browser. For alternative methods, please refer to this post.

C. File Buldozer.spec

Perhatikan setiap instalasi pada cell di colab jangan sampai ada error (berwarna merah). Ketika inisialisasi, buldozer.spec muncul dan siap dijalankan, juga dengan Google Colab. Ganti nama aplikasi, tampilan splash dan icon. Untuk requirements di baris ke 40 tambahkan library-library yang digunakan, beserta versinya, misalnya kivy==2.2.0. Library lain tambahkan jika ada di impor pada header python, misal pillow, tensorflow, dll.

Please ensure that there are no errors (in red color) during the installation process in each cell in Colab. When initializing, the bulldozer.spec file will appear and is ready to be executed, even in Google Colab. You can rename the application, customize the splash screen, and change the icon. In line 40, add the required libraries along with their versions to the requirements, for example, kivy==2.2.0. If there are any additional libraries imported in the Python header, such as Pillow, TensorFlow, etc., please include them as well.

Jangan lupa menghilangkan hastag # jika akan digunakan. Please remember to remove the ‘#’ symbol if you intend to use the code.

D. Menjalankan (running) File Apk

Nah, repotnya adalah proses kompilasi yang hampir setengah jam. Jika sudah tinggal dipindah apk yang dihasilkan untuk diinstal di handphone. Lokasi apk ada di folder bin. Pastikan Android paket sudah selesai terbentuk di bagian akhir google colab.

Well, the inconvenience lies in the compilation process which takes nearly half an hour. Once it’s done, you just need to transfer the generated APK file to your mobile device for installation. The APK file can be found in the ‘bin’ folder. Make sure that the Android package has been successfully created towards the end of Google Colab.

Tampilannya kira-kira seperti ini, mirip dengan versi Kivy python.

The appearance would be something like this, similar to the Kivy Python version.

Sekian, video youtube dapat dilihat di link berikut, terima kasih.

That’s all, the YouTube video can be viewed at the following link. Thank you.

Convert Python file to Exe File

Mahasiswa jaman dulu sudah mengenal kompilasi program menjadi file executable. File jenis ini tidak bisa langsung dilihat kode programnya, sehingga lebih aman dari ‘penggunaan kembali’ oleh orang lain. Postingan ini khusus untuk pengguna windows, platform yang bisa menjalankan langsung dile EXE.

Pertama-tama siapkan dahulu file python yang akan dikonversi dilanjutkan dengan menuju ke lokasi foldernya. Klik kanan dan pilih Open in Terminal. Atau bisa masuk langsung ke Command lalu arahkan ke folder aplikasi.

In the past, students were already familiar with compiling programs into executable files. This type of file cannot be directly viewed as source code, making it safer from being reused by others. This post is specifically for Windows users, a platform that can directly run EXE files.

First, prepare the Python file that will be converted, then navigate to its folder location. Right-click and select “Open in Terminal.” Alternatively, you can directly go to the Command Prompt and navigate to the application folder.

A. Install Pyinstaller

Setelah masuk ke command prompt, install library untuk konversi ke executable, yakni pyinstaller. Ketik kode:

After entering the Command Prompt, install the library for converting to an executable, which is pyinstaller. Type the following code:

pip install pyinstaller

B. Run Pyinstaller

Setelah pyinstaller terinstall, jalankan untuk mengkonversi file py menjadi exe. Ketikan instruksi:

After pyinstaller is installed, run it to convert the .py file to .exe. Type the following command:

pyinstaller –onefile -w process.py

Proses kompilasi berjalan dengan lama tergantung kompleksitasnya. Untuk program contoh, cukup lama prosesnya (sepeminuman the). Setelah selesai, pada folder dist tampak process.exe sudah terbentuk. Selanjutnya saya pindahkan ke folder tempat akan dieksekusi. Ukurannya fantastis, 500-an Mb, dibanding dengan sebelumnya yang 1 Kb. Mungkin akibat memasukan library-library yang digunakan. Salah satunya adalah tensorflow.

The compilation process takes time depending on its complexity. For the example program, it took quite a while (around a few minutes). Once it’s done, you will see that the process.exe file is created in the “dist” folder. Next, you can move it to the folder where you want to execute it. The size of the executable file is significantly larger, around several hundred megabytes, compared to the original file size of 1 KB. This increase in size is likely due to the inclusion of the libraries used in the program. One of them is TensorFlow.

C. Cek Hasil Konversi

Berikutnya kita uji dengan menjalankan file EXE. Kebetulan di sini file exe akan diakses oleh file PHP (maaf, rumit ya). Sebelumnya diakses dengan kode pada process.php sebagai berikut:

Next, we will test the executable file by running the EXE file. In this case, the EXE file will be accessed by a PHP file (apologies for the complexity). Before accessing it, use the following code in process.php:

Kemudian di sini process.py akan kita ganti dengan process.exe yang baru saja kita konversi. Ganti menjadi sebagai berikut.

Then, here we will replace process.py with the newly converted process.exe. Change it as follows:

Untuk memastikan bukan file process.py yang dipakai, ganti saja (rename), misalnya xprocess.py. Setelah itu jalankan file phpnya dengan kode:

To ensure that the file being used is not process.py, simply rename it, for example, to xprocess.py. After that, run the PHP file with the following code:

php -S localhost:8000

Atau gunakan cara biasa dengan XAMPP setelah memindahkan file aplikasi ke htdocs (lihat pos yang lalu).

Alternatively, you can use the conventional method with XAMPP after moving the application files to the htdocs directory (as mentioned in the previous post).

Dengan memasukan 4 input, file html tersebut menjalankan file process.php yang menangkap inputan, selanjutnya mengakses file process.exe yang sebelumnya python. Jadi, jika ingin kode rahasia Anda tidak bisa dibuka karena file .py maka dengan .exe akan lebih aman. Lebih jelasnya lihat video youtube berikut:

By entering 4 inputs, the HTML file executes the process.php file, which captures the inputs and then accesses the previously Python file, process.exe. So, if you want to protect your secret code from being easily accessed, using .exe files instead of .py files will provide more security. For more clarity, please refer to the following YouTube video:

XAMPP Cannot be Run

XAMPP merupakan aplikasi terkenal yang mengintegrasikan server web Apache dengan server Database MySQL. Kendala yang menyebalkan saat menggunakannya adalah XAMPP control panel tidak bisa menghidupkan MySQL.

XAMPP is a popular application that integrates the Apache web server with the MySQL database server. An annoying issue encountered while using it is that the XAMPP control panel is unable to start MySQL.

Jika kita mengalami hal tersebut, langkah pamungkas adalah instal ulang XAMPP. Tentu saja tidak ada masalah jika MySQL masih kosong atau baru sedikit, jika sudah banyak tentu saja merepotkan. Postingan ini sedikit berbagi pengalaman bagaimana menyelesaikan hal tersebut ketika problem terjadi.

If you encounter such an issue, the final step would be to reinstall XAMPP. Of course, this is not a problem if your MySQL database is empty or contains only a few entries, but it can be quite troublesome if there is a large amount of data. This post shares a little experience on how to resolve such a situation when the problem occurs.

1. Backup

Sebagai langkah awal backup database kita, bernama ‘data’, yang berlokasi di xampp/mysql. Simpan di lokasi baru, misalnya old_data.

As an initial step, let’s backup our database named ‘data’, which is located in xampp/mysql. Save it to a new location, for example, ‘old_data’.

2. Restore

Buka folder ‘backup’ di xampp/mysql lalu copy seluruh isi ke folder ‘data’. Hal ini bermaksud membuat mysql seperti baru kembali. Pastikan XAMPP control panel bisa menjalankan MySQL.

Open the ‘backup’ folder in xampp/mysql and then copy all its contents to the ‘data’ folder. This is intended to make MySQL start fresh. Make sure the XAMPP control panel can run MySQL.

Kemudian di folder ‘old_data’ pindahkan folder berisi database yang akan dijalankan (jika semua ingin diaktifkan, berarti seluruh folder-folder databasenya). Copy ke folder data.

Next, in the ‘old_data’ folder, move the folder containing the database that needs to be run (if you want to activate all of them, it means moving all the database folders). Copy them to the ‘data’ folder.

3. Run

Di sini jika kita buka PhpMyAdmin tampak database kita berhasil dibuka. Tetapi terkadang ada kendala karena tidak bisa diakses. Oleh karena itu timpa saja file ‘ibdata1’ yang berlokasi di xampp/mysql/old_data ke folder xampp/mysql/data. Oiya, pastikan confirm untuk replace ketika muncul jendela konfirmasi. Restart kembali MySQL kita lewat XAMPP Control Panel, kemudian cek kembali, dan pastikan database bisa dibuka di PhpMyAdmin. Sekian, semoga bermanfaat.

Here, if we open PhpMyAdmin, it appears that our database has been successfully accessed. However, sometimes there may be issues with accessing it. Therefore, simply overwrite the ‘ibdata1’ file located in xampp/mysql/old_data with the one in the xampp/mysql/data folder. Oh, and make sure to confirm the replacement when prompted. Restart MySQL through the XAMPP Control Panel, then check again and ensure that the database can be opened in PhpMyAdmin. That’s all, hope it’s helpful.

NOTION as an alternative to ChatGPT

Hebohnya ChatGPT pasti akan memunculkan AI-AI lainnya, salah satunya adalah Notion. Fasilitasnya ada yang mirip ChatGPT, tapi agak sedikit ribet. Postingan ini hanya mencoba fasilitas yang seperti ChatGPT, alias sarana untuk menjawab problem-problem kita. Silahkan buka situsnya:

(The buzz around ChatGPT will surely give rise to other AIs, one of which is Notion. Some of its features are similar to ChatGPT, but it’s a bit more complicated. This post only explores its ChatGPT-like feature, which is a means to answer our problems. Please visit the site:)

Siapkan login dengan email Anda, misalnya Gmail. Berikutnya Anda akan masuk ke menu utama Notion AI. Perhatikan bagian ‘Press ‘ space for AI ‘/’ for commands …’ coba ketik ‘/‘ untuk membuat command/perintah. Atau bahasa ilmiahnya prompts.

(Prepare to log in with your email, such as Gmail. Next, you will enter the Notion AI main menu. Pay attention to the ‘Press ‘ space for AI ‘/ for commands …’ section and try typing ‘/’ to create a command. Or scientifically called prompts.)

Pilih Ask AI to Write lalu ketika pertanyaan Anda. Misalnya perbedaan Antara LSTM dengan RNN pada Deep Learning.

(Choose Ask AI to Write and then ask your question. For example, the difference between LSTM and RNN in Deep Learning.)

Tampak, Notion AI akan langsung memberi jawaban dalam satu paragraf. Coba iseng tekan Make longer di jendela yang muncul.

(As you can see, Notion AI will immediately give an answer in one paragraph. Try clicking Make longer in the window that appears.)

Silahkan explore fasilitas-fasilitas lainnya yang dapat kita manfaatkan. Cocok untuk negara kita, negara berkembang yang harus ‘berlari’ mengejar ketertinggalan tanpa perlu mengeluarkan ongkos yang besar agar bisa sejajar dengan negara maju dari sisi pengetahuan.

(Please explore other features that we can use. It is suitable for our country, a developing country that needs to ‘run’ to catch up with advanced countries in terms of knowledge without having to spend a lot of money.)

Ketika diminta mencari jawaban dalam bentuk gambar ternyata belum tersedia. Atau mungkin suatu saat nanti tersedia. Sekian, semoga bermanfaat.

(When asked to find answers in the form of images, they are not yet available. Or maybe someday they will be. That’s all, I hope it’s useful.)

Pulling Grade Data from Google Classroom

Walau perkuliahan sebagian besar sudah tatap muka saat ini, terkadang alat bantu, seperti Google Classroom (GC) masih menjadi andalan mempercepat proses penilaian. Untuk mahasiswa yang banyak siswanya termasuk juga nilai harian yang banyak, ada kalanya perlu waktu untuk memberi nilai. Nah, GC memiliki fasilitas untuk secara otomatis mengunduh seluruh nilai (grade) dalam bentuk CSV untuk diolah lebih lanjut.

(Although most of the classes have been conducted face-to-face, sometimes tools such as Google Classroom (GC) are still relied upon to speed up the assessment process. For students who have a large number of classmates and also have many daily grades, there are times when it takes time to give grades. Well, GC has a feature to automatically download all grades in CSV format for further processing.)

Menu yang ada adalah setting yang memiliki simbol ‘gear’, tapi letaknya bukan di menu grades melainkan di menu Stream perkuliahan (bukan di Classwork). Klik saja salah satu week, lalu tekan simbol ‘gear’ di bagian kanan atas. Tinggal pilih seluruh grade atau these grade (minggu yang dipilih saja). Untuk jelasnya lihat video short berikut.

(The menu in question is the “Settings” menu, which has a “gear” symbol, but it is not located in the “Grades” menu, but rather in the “Stream” menu of the class (not in “Classwork”). Simply click on one of the weeks, then press the “gear” symbol in the upper right corner. Just select all grades or those grades (only the selected week). For more details, please see the following short video.)

Running Python within PHP

Beberapa framework menyediakan fasilitas server untuk bahasa Python misalnya Flask, Django, Pyramid, Bottle, dan CherryPy. Namun karena kebanyakan website telah menggunakan server berbasis PHP, misalnya Apache, Nginx, Microsoft IIS, Lighttpd, dan Caddy, beberapa pengembang memanfaatkan fasilitas PHP untuk menjalankan Python di server. Pada prinsipnya ada dua metode mengakses Python dalam PHP.

(Several frameworks provide server facilities for the Python language, such as Flask, Django, Pyramid, Bottle, and CherryPy. However, since most websites have been using PHP-based servers such as Apache, Nginx, Microsoft IIS, Lighttpd, and Caddy, some developers leverage PHP facilities to run Python on servers. In principle, there are two methods to access Python in PHP).

1. Kode Python dijalankan di web server (Python code is executed on the web server)

Kalau pada flask, style Python dijalankan dengan format HTML dengan %% (format jinja-2) PHP membutuhkan setting terlebih dahulu agar server mampu membaca format *.py agar dijalankan server. Agak sedikit rumit untuk Ubuntu seperti video berikut.

(In Flask, Python code is run using HTML format (with jinja-2), while in PHP, the server needs to be configured first to read the *.py format and execute it on the server. The configuration process may be a bit complicated for Ubuntu, as shown in the following video).

Di sini program *.py diintegrasikan denan html lewat mekanisme print seolah-olah mencetak string style HTML. Tentu saja header perlu ditambahkan.

(Here, the *.py program is integrated with HTML through the print mechanism, as if printing an HTML-style string. Of course, the header needs to be added).

Untuk yang versi Windows sedikit lebih mudah, dengan format header yang berbeda pula. Misalnya video singkat ini untuk XAMPP.

(For the Windows version, it is slightly easier with a different header format. For example, this short video for XAMPP).

Kelemahan metode ini adalah karena load ke web server maka membebankan web server.

(The drawback of this method is that it can burden the web server due to the load it creates).

2. Kode Python dijalankan oleh file PHP (Python code is executed by a PHP file)

Metode ini merupakan metode yang lazim dipakai karena file Python dijalankan di terminal server tanpa melibatkan secara realtime web server, dan jauh lebih cepat. Apalagi jika disertakan tambahan multitasiking dengan pooling processor.

(This method is commonly used because the Python file is run on the terminal server without involving the web server in real-time, making it much faster. Moreover, if multitasking with processor pooling is added, it can be even faster).

Dengan fungsi exec file Python dipanggil dengan input dengan library sys untuk mempermudah. Di sini seolah-olah file php dimanfaatkan untuk menjalankan file Python via terminal biasa, seperti menjalankan file Python dengan mengetik python <file *.py>. Kedua pernah saya gunakan. Jika ada metode lain silahkan beri masukan di komentar. Sekian, semoga bermanfaat.

(The Python file is called with the input using the sys library to make it easier using the exec function. Here, it is as if the PHP file is used to run the Python file via the regular terminal, like running a Python file by typing python <file *.py>. I have used both methods before. If there are other methods, please provide feedback in the comments. That’s all, hope it’s useful).

Eling lan Waspada

Saat tulisan ini dibuat, terjadi beberapa hal yang menghebohkan, misalnya kasus Sambo, Teddy, dan Rafael yang memiliki efek lanjutan. Pencucian uang konon menyebar ke beberapa orang, bahkan terindikasi ke artis ternama. Begitu juga kejadian Indonesia yang tidak jadi tuan rumah piala dunia U-20 karena masalah dengan penolakan Israel. Tulisan sederhana kali ini hanya sekedar mengingatkan agar berhati-hati di beberapa waktu ke depan.

Ketika jalan-jalan di Thailand waktu kuliah dulu, tampak beberapa rumah di depannya ada kolam ikan. Sempat bertanya dalam hati, kenapa tidak ada yang ambil ya? Mungkin kalau di Indonesia sudah ‘bablas angine ikannya”. Ternyata mereka percaya dengan karma, karena mayorias penduduknya Budha. Walau sudah minta ampun, tobat, dan sejenisnya, pasti akan menerima balasan. Bagi mereka tidak ada ritual yang membuat pengampunan instan, seperti terhapus dosanya selama setahun misalnya.

Jika ada kejadian yg dahulu baik-baik saja, tertutup rapat, dan sekarang sepertinya terbuka, berarti ada kekuatan tertentu yang bekerja, yang entah apa itu. Bayangkan saja ada statemen-statemen dari tokoh yang jika tidak ada korupsi di departemen x maka tiap kepala rakyat mendapat 20 juta. Bayangkan untuk seluruh departemen (lihat link ini). Jika perbuatan jahat langsung terbalas atau terbuka, pasti perbuatan baik pun demikian. Tentu saja terlepas dari itu, hidup bukan seperti dagang, berbuat x dapat 2x dan seterusnya. Berbuat baik ya berbuat baik, terlepas dapat balasan tertentu yang jelas jika di hati terasa nyaman, lanjutkanlah.

Berbagi informasi, menghibur orang, entah itu lewat blog, youtube, dan sejenisnya, jika terasa nyaman di hati, jalankan saja. Kalau fokus ke uang, endorse, adsens, takutnya malah bikin konten, tulisan, dan lain-lain yang heboh tapi meresahkan atau tidak mendidik. Walaupun memang ada yang menjadikan profesi (lihat link youtuber ternama ini) ya tidak apa-apa tapi tetap waspada karena ‘balasan’ pasti tiba. Tetap berkarya dan membuat orang dan semua makhluk berbahagia.

Tag Cloud dengan HTML

Tag cloud atau awan tag adalah representasi visual dari kata-kata kunci atau tag yang paling umum digunakan dalam suatu dokumen atau set dokumen. Tag cloud biasanya terdiri dari sekelompok kata-kata yang ditampilkan dalam ukuran yang berbeda-beda, dengan ukuran yang lebih besar menunjukkan bahwa kata-kata tersebut lebih sering muncul dalam dokumen atau set dokumen yang dianalisis. Tag cloud digunakan untuk membantu pengguna memperoleh pemahaman yang lebih cepat tentang topik atau konten dokumen yang dianalisis.

Berikut ini kita coba membuat tagcloud dari scrapping www.newsapi.org yang merupakan platform penyedia layanan berita berbasis web (lihat pos terdahulu). Layanan ini menyediakan akses ke ribuan artikel berita dari berbagai sumber terpercaya di seluruh dunia. NewsAPI.org adalah salah satu layanan terbaik untuk pengembang dan pembuat aplikasi yang ingin mengintegrasikan berita ke dalam aplikasi mereka. Berikut ini adalah contoh akses API:

https://newsapi.org/v2/top-headlines?country=id&apiKey=APIKEY

Untuk mendapatkan API Key dari NewsAPI.org, ikuti langkah-langkah berikut:

  • Kunjungi situs web NewsAPI.org di https://newsapi.org/.
  • Klik tombol “Get API Key” di sudut kanan atas halaman web.
  • Isi formulir pendaftaran yang tersedia dengan alamat email Anda dan kata sandi yang aman, kemudian klik “Get Started”.
  • Verifikasi alamat email Anda dengan mengklik tautan yang dikirimkan ke email Anda.
  • Login ke akun NewsAPI.org yang baru saja Anda buat.
  • Setelah login, klik “Dashboard” untuk melihat API Key Anda.
  • Salin API Key yang ditampilkan dan gunakan dalam permintaan API Anda.

Perlu diingat bahwa NewsAPI.org menyediakan berbagai paket layanan dengan harga yang berbeda-beda. Paket gratis memiliki batasan permintaan API per hari, sedangkan pada paket berbayar, batasan permintaan dan fitur yang lebih banyak tersedia. Pastikan untuk memilih paket yang sesuai dengan kebutuhan Anda. Berikut ini terapannya untuk membuat Tagcloud.

<!DOCTYPE html>
<html>
<head>
<title>Tag Cloud dari Scraping NewsAPI</title>
</head>
<body>
<h1>Tag Cloud dari Scraping NewsAPI</h1>
<?php
$apiUrl = “https://newsapi.org/v2/top-headlines?country=id&apiKey=API KEY“; // Ubah kode “id” menjadi kode negara yang ingin Anda scrap beritanya
$response = file_get_contents($apiUrl); // Ambil data dari NewsAPI dalam format JSON
$newsData = json_decode($response); // Ubah data JSON menjadi objek PHP
$tags = array(); // Buat array kosong untuk menyimpan tag yang diambil dari berita
foreach ($newsData->articles as $article) { // Loop setiap artikel dalam objek berita
$title = strtolower($article->title); // Ambil judul artikel dan ubah ke huruf kecil
$words = explode(” “, $title); // Pisahkan kata-kata dalam judul artikel ke dalam array
foreach ($words as $word) { // Loop setiap kata dalam array
if (strlen($word) > 3) { // Jika kata lebih panjang dari 3 karakter
array_push($tags, $word); // Tambahkan kata ke dalam array tag
}
}
}
$tagCounts = array_count_values($tags); // Hitung frekuensi kemunculan setiap tag
arsort($tagCounts); // Urutkan tag berdasarkan frekuensi kemunculan dari yang paling banyak
foreach ($tagCounts as $tag => $count) { // Loop setiap tag dan frekuensi kemunculannya
$tagSize = 15 + ($count * 4); // Tentukan ukuran tag berdasarkan frekuensi kemunculan
echo “<a href=’#’ style=’font-size: ” . $tagSize . “px;’>$tag</a> “; // Tampilkan tag dalam elemen anchor dengan ukuran yang ditentukan
}
?>
</body>
</html>
Tampilannya kira-kira seperti ini. Tampak Piala Dunia Indonesia U-20 memiliki frekuensi yang tertinggi di antara kata-kata lainnya. Selamat mencoba.