Mengenal Bahasa Pemrograman Python dan Django

Python telah lama menjadi salah satu bahasa pemrograman yang paling populer, dan salah satu alasan utama kepopulerannya adalah kemampuan untuk mengembangkan aplikasi web dengan cepat dan efisien. Python memiliki beragam framework yang sering digunakan dalam pengembangan berbagai jenis aplikasi, diantaranya seperti framework Flask, Pyramid, Tornado dan Falcon. Namun yang paling populer dan banyak digunakan adalahan Framework Django, sebuah alat yang mempermudah pengembangan aplikasi web yang kuat dan skalabel. Artikel ini akan membahas bagaimana Python, bersama dengan Django, memungkinkan pengembangan aplikasi web yang efisien dan kuat.

Python: Bahasa Pemrograman yang Populer

Faktanya menurut IEE Spectrum mengatakan bahwa python adalah bahasa pemrograman paling populer. Sebelum kita membahas Django, mari tinjau mengapa Python menjadi pilihan utama dalam pengembangan web

  1. Sintaksis yang Mudah Dipahami: Python dikenal dengan sintaksisnya yang sederhana dan mudah dipahami. Ini membuatnya menjadi bahasa yang ideal untuk pemula dan pengembang yang ingin fokus pada logika aplikasi daripada menangani kompleksitas sintaksis.
  2. Ekosistem yang Kaya: Python memiliki ekosistem yang kaya dengan berbagai pustaka dan framework yang mendukung pengembangan web, analisis data, kecerdasan buatan, dan banyak lagi. Ini berarti Anda dapat dengan mudah mengakses alat-alat yang diperlukan untuk tugas-tugas khusus dalam pengembangan web.
  3. Komunitas yang Besar: Python memiliki komunitas yang besar dan beragam. Komunitas ini menyediakan dukungan, tutorial, dan sumber daya yang berlimpah, membuatnya mudah untuk menyelesaikan masalah dan memperdalam pengetahuan Anda.
  4. Kemampuan Cross-Platform: Python dapat berjalan di berbagai platform, termasuk Windows, macOS, dan Linux. Ini membuatnya cocok untuk pengembangan aplikasi web yang bersifat lintas platform.

Django: The Web Framework for Perfectionists with Deadlines

Menurut penelitian yang dilakukan dengan judul “Pemanfaatan Python dan Framework Django Sebagai Dashboard Sistem Informasi Pengelolaan Skripsi Pada STIMIK Pontianak” (Gat,2023) mengatakan bahwa Bahasa pemrograman Python dan framework Django hadir dengan kesederhaan, memiliki sintaks yang mudah dipahami untuk dibaca dan juga menyedikan banyak library yang siap dipergunakan. Dari segi keamanan, python menawarkan keamanan yang lebih kuat dari framework kebanyakan bahasa pemrograman lainnya. Hasil dari penelitian tersebut membuktikan bahwa, bahasa pemrograman Python dengan framework Django yang dilengkapi dengan banyak fitur dan library yang lengkap, mampu menghasilkan sistem informasi pengelolaan skripsi dengan mudah dan cepat.

Hal yang paling menarik dari Django adalah arsitektur sistem MTV (Model, Template, View) yang dimilikinya, berbeda dengan kebanyakan framework yang menggunakan sistem MVC (Model, View, Control) hal ini merupakan setara namun istilahnya saja yang berbeda.

assitektur-sistem-mtv

 

  • Model mewakili struktur data aplikasi Anda dan berfungsi untuk berinteraksi dengan basis data.
  • View bertanggung jawab untuk mengatur logika presentasi dan mengatur bagaimana data dari model ditampilkan kepada pengguna.
  • Template adalah komponen yang mengontrol tampilan akhir yang diberikan kepada pengguna, seringkali dalam bentuk halaman web HTML.

Berikut adalah 10  keunggulan framework Django dibandingkan beberpa framework python lainnya:

  1. Kekuatan Batteries-Included: Django sering dijuluki sebagai “framework yang memiliki baterai terisi penuh” karena menyertakan banyak komponen bawaan (seperti ORM, sistem admin, sistem otentikasi, dll.) yang membuat pengembangan web lebih cepat dan mudah. Ini mengurangi kebutuhan untuk mencari pustaka pihak ketiga atau menggabungkan berbagai komponen sendiri.
  2. ORM Kuat: Django dilengkapi dengan Django ORM (Object-Relational Mapping) yang kuat, yang memungkinkan Anda berinteraksi dengan basis data relasional tanpa harus menulis SQL secara eksplisit. Ini mempermudah pemodelan dan pengaksesan data.
  3. Sistem Admin yang Kuat: Django menyertakan sistem admin bawaan yang memungkinkan Anda membuat antarmuka administrasi web untuk aplikasi Anda dengan sedikit atau tanpa penulisan kode tambahan. Ini sangat berguna untuk mengelola data aplikasi Anda.
  4. Dokumentasi yang Luar Biasa: Django memiliki dokumentasi yang sangat baik dan komprehensif, yang membuatnya mudah bagi pengembang baru untuk memahami dan memulai dengan framework ini. Dokumentasi yang baik juga membantu dalam pemeliharaan dan pengembangan aplikasi.
  5. Keamanan Terintegrasi: Django menerapkan banyak praktik keamanan terbaik secara bawaan, termasuk proteksi terhadap serangan umum seperti SQL injection, Cross-Site Scripting (XSS), dan Cross-Site Request Forgery (CSRF). Ini membantu menjaga aplikasi Anda aman secara default.
  6. Skalabilitas: Meskipun Django cocok untuk proyek-proyek kecil, itu juga dapat digunakan untuk proyek-proyek besar dan rumit. Dengan desain yang kuat dan kemampuan untuk membagi aplikasi menjadi komponen yang terpisah, Anda dapat mengembangkan aplikasi yang sangat skalabel.
  7. Dukungan Komunitas dan Ekosistem: Django memiliki komunitas yang besar dan aktif, sehingga Anda dapat dengan mudah menemukan dukungan, tutorial, dan pustaka pihak ketiga yang memperluas fungsionalitas Django.
  8. Ketersediaan Hosting dan Deployment yang Luas: Ada banyak penyedia hosting web dan layanan PaaS yang mendukung Django, membuatnya mudah untuk mendeploy aplikasi Anda secara online.
  9. Berfokus pada Prinsip “Don’t Repeat Yourself” (DRY): Django mendorong praktik pengembangan yang menghindari pengulangan kode (DRY) dengan menyediakan alat-alat seperti template dan middleware yang memungkinkan Anda mengorganisir kode Anda dengan baik.
  10. Desain URL yang Elegan: Django memiliki sistem routing URL yang sangat baik yang memungkinkan Anda mendefinisikan pola URL dengan mudah, membuat aplikasi Anda lebih terstruktur dan mudah dipahami.

Namun, penting untuk diingat bahwa setiap framework memiliki kelebihan dan kelemahan masing-masing. Pilihan framework web Python terbaik tergantung pada kebutuhan proyek Anda dan preferensi pribadi Anda sebagai pengembang.

Kesimpulan:

Python dengan Django adalah kombinasi yang sangat kuat untuk pengembangan aplikasi web. Python memberikan sintaksis yang mudah dipahami, ekosistem yang kaya, dan dukungan komunitas yang besar, sementara Django menawarkan produktivitas tinggi, keamanan terintegrasi, dan kemampuan skalabilitas. Kombinasi ini membuat Python dan Django menjadi pilihan yang luar biasa untuk pengembangan aplikasi web yang efisien dan andal. Jika Anda ingin membangun aplikasi web, pertimbangkan untuk memulai dengan Python dan Django untuk mendapatkan hasil terbaik dalam waktu singkat.

Software Process Model

Judul Buku: Software Engineering
Edisi : Tenth Edition
Pengarang : Ian Sommerville
Penerbit : Pearson Education Limited
Bagian yang dibaca
Bab 2 : Software Processes
Halaman : 43 s.d 65


Software Process adalah serangkaian aktivitas pada pembuatan perangkat lunak.

Ada 4 aktivitas dasar dalam rekaya perangkat lunak yaitu:

  1. Specification, menentukan spesifikasi dari fungsionalitas perangkat lunak dan batasan pengoperasiannya.
  2. Design and implementation, pengembangan perangkat lunak yang sesuai dengan spesifikasi diatas.
  3. Validation, validasi perangkat lunak Perangkat untuk memastikan bahwa perangkat lunak tersebut berfungsi diinginkan pelanggan.
  4. Evolution, evolusi perangkat lunak untuk memenuhi perubahan kebutuhan pelanggan

Software process model atau yang biasa disebut Software Development Life Cyctle (SDLC) adalah suatu representasi sederhana dari rangkaian proses pengembangan software. Dari proses model kita hanya melihat kerangka proses, tetapi tidak melihat detail dari aktivitas masing-masing proses tersebut.
Pada buku ini dijelaskan sejumlah model proses yang sangat umum (paradigma proses) dan biasa digunakan dalam membuat rekayasa perangkat lunak yang lebih spesifik. Berikut ini akan dijelaskan beberapa model proses yang umum digunakan:

1. The Waterfall Model
Tahapan pada model ini dari satu fase ke fase lainnya bersifat cascade, hal ini lah yang menjadikan proses model ini dikenal sebagai model waterfall.Berikut ini adalah tahapan pengembangan software pada model waterfall:

1. Requirements analysis and definition
Pada tahap ini dilakukan analisis requirement dan batasan-batasan pembuatan aplikasi. Hasil dari analisis akan didefinisikan sebagai spesifikasi dari sistem yang dibuat.
2. System and software design
Pada tahap ini dilakukan desain sistem dan aplikasi seperti membuat desain arsitektur sistem secara keseluruhan untuk hardware dan software yang digunakannya.
3. Implementation and unit testing
Tahap ini adalah pembangunan perangkat lunak, selama pembangunan perangkat lunak berlangsung dilakukan juga unit tes terhadap aplikasi untuk memastikan perangkat lunak yang dibuat memenuhi spesifikasi yang telah dibuat.
4. Integration and system testing
Pada tahap ini dilakukan integrasi dari modul-modul yang sudah dibuat sebelumnya dan diuji sebagai sebuah sistem yang lengkap. Pengujian dilakukan untuk memastikan perangkat lunak telah memenuhi semua requirement-nya. Setelah pengujian selesai, perangkat lunak diserahkan ke pelanggan.
5. Operation and maintenance
Pada tahap terakhir ini sistem diinstal di environment production untuk dijalankan. Selama sistem berjalan dilakukan pemeliharaan berupa perbaikan bug.

Model waterfall ini cocok untuk pengembangan software yang memerlukan banyak biaya produksi. Setiap proses yang dilakukan tidak saling tumpah tindih karena untuk melanjutkan fase berikutnya harus menunggu fase sebelumnya benar-benar selesai. Hal ini menjadikan model ini kurang cocok untuk diimplementasi dalam pembangunan software dengan kompleksitas yang tinggi.

2. Incremental Development
Pembangunan inkremental adalah pengembangan software yang dibuat berdasarakan rancangan awal yang dipecah menjadi beberapa fungsi atau bagian sehingga pengembangan software dilakukan secara bertahap. Untuk increment pertama dilakukan pengembangan fitur-fitur utama sesuai dengan spesifikasi kebutuhan aplikasi yang telah didefinisikan diawal pekerjaan. Beberapa modul atau fitur yang telah dibangun dapat langsung dievaluasi lebih awal oleh klien untuk dilihat apakah sistem sudah sesuai kebutuhan. Untuk modifikasi fitur yang lebih canggih dapat dikerjakan pada inkremen selanjutnya dengan tetap memperhatikan timeline penyelesaian proyek.
Dengan mengembangkan software secara bertahap ini akan lebih murah dari segi biaya dan mempermudah dalam melakukan perubahan pada software yang sedang dikembangkan. Tetapi model ini tidak cocok diimplementasi dalam pembangunan sistem yang besar, kompleks, dan berjangka watu yang panjang. Karena sistem yang besar memerlukan kerangka kerja dan arsitektur yang stabil.

3. Integration and Configuration
Proses ini melakukan pendekatan yang berorientasi penggunaan kembali software dengan mengintegrasikannya. Tahapan porses model ini yaitu:
Requirement Specification, tahap ini melakukan deskripsi singkat mengenai pesyaratan penting dan fitur sistem yang akan dibangun.

  1. Software discovery and evaluation, berdasarkan requirement yang sudah dibuat dilakukan pencarian komponen dan sistem yang menyediakan fungsionalitas yang diperlukan lalu dievaluasi untuk melihat apakah komponen tersebut benar-benar penting dan secara umum cocok diimplementasi pada sistem yang akan dibangun.
  2. Requirements refinement
  3. Application system configuration, jika sistem aplikasi siap pakai dan memenuhi persayaratan yang telah ada, maka sistem dapat dikonfigurasi dan digunakan dalam pembuatan sistem baru.
  4. Component adaption and integration, jika tidak ada sistem yang siap pakai, maka masing-masing komponen yang dapat digunakan kembali akan dimodifikasi dan komponen baru akan dikembangkan. Nantinya komponen-komponen ini akan dintegrasikan untuk membuat suatu sistem.
    Dengan menggunakan model ini maka dapat mengurangi biaya pengembangan dan delivery software cenderung lebih cepat.

Pada proses pengembangan software juga terdapat beberapa aktivitas untuk mengatasi perubahan. Hal ini dapat dilakukan dengan pembuatan Prototipe yang bisa membantu mengeksplorasi solusi software dan dalam pembuatan antarmuka. Atau bisa dengan melakukan proses penyampaian yang bertahap sehingga perubahan dapat dilakukan tanpa mengganggu sistem secara keseluruhan. Lalu lakukanlan proses improvement dari pengembangan software yang telah dilakukan sehingga dapat meningkatkan kualitas software yang dibuat.


Kesimpulan:
Pada buku ini dijelaskan proses model dan aktivitasnya yang umum digunakan dalam software development. Setiap tahapan pada masing-masing proses model dijelaskan dengan rinci sampai dengan keuntungan dan kekurangannya. Selain membahas proses model, pada buku ini dijelaskan aktivitas untuk mengatasi perubahan dalam pengambangan software, dan bagaimana kita melakukan proses improvement-nya. Sehingga buku ini dapat dijadikan referensi untuk mempelajari software processes model. Dengan mengetahui tentang beberapa proses model ini dapat memudahkan tim pengembang dalam memilih model proses yang sesuai dengan pekerjannya dan dapar menerapkan sehingga dapat membantu tim pengembang memahami keseluruhan proses bisnis dan proses pengembangan software dapat berjalan dengan efektif.

 

Software Engineering #Chapter 3 – Agile Software Development

blog-removebg-preview

Ringkasan Agile Software Development
Metode agile adalah metode pengembangan berulang yang berfokus pada pengurangan biaya overhead dan proses dokumentasi serta pengiriman perangkat lunak tambahan. Metode ini cocok untuk pengembangan aplikasi dimana persyaratan sistem biasanya berubah dengan cepat, kemudian mengusulkan persyaratan baru dan perubahan untuk disertakan dalam iterasi sistem selanjutnya selama proses pengembangan.

Scrum merupakan metode agile yang telah muncul sebagai metode yang paling banyak digunakan. Proses scrum atau siklus sprint menghasilkan peningkatan produk dari setiap iterasi proses, kemudian dapat dikirimkan ke pelanggan. Titik awal siklus sprint scrum adalah product backlog. Product backlog merupakan daftar dari item seperti fitur produk, dokumen requirement, daftar cerita pengguna, atau deskripsi lain dari software yang akan dikembangkan oleh tim Scrum. Kemudian seluruh tim dilibatkan dalam memilih item mana yang memiliki prioritas tertinggi dan memperkirakan waktu yang dibutuhkan untuk menyelesaikan setiap sprint.

Dalam berbagai kisah sukses Scrum (Schatz and Abdelshafi 2005; Mulder and van Vliet 2008; Bellouiti 2009), hal-hal yang disukai pengguna tentang metode Scrum adalah:

  1. Produk dipecah menjadi serangkaian bagian yang dapat dikelola bersamaan dan dipahami oleh para pemangku kepentingan.
  2. Perubahan requirement saat pengembangan software tidak menghambat kemajuan progress.
  3. Seluruh tim dapat melihat progress pengerjaan produk, sehingga komunikasi dan semangat tim meningkat.
  4. Pelanggan melihat kemajuan progress, deliverable tepat waktu, dan mendapatkan feedback tentang produk dengan jangka waktu yang cukup pendek.
  5. Kepercayaan antara pelanggan dan pengembang terjalin, dimana setiap pelanggan mengharapkan produk berhasil dan sesuai dengan yang diharapkan.

Diketahui sebagian besar software engineering melakukan pemeliharaan dan pengembangan dari sistem yang ada. Berikut adalah keunggulan pada metode agile software development:

  1. Up to date, karena lebih fleksibel dan menerima perubahan berkelanjutan.
  2. Resource yang dibutuhkan tidak terlalu banyak.
  3. Alur kerja lebih singkat dan efisien,  sehingga kinerja tim menjadi lebih stabil.
  4. Interaksi antara client dan developer menjadi lebih intens dan responsif terhadap kebutuhan pengembangan software.

Tetapi bagaimana jika business requirement saat pemeliharaan perangkat lunak melibatkan sistem kustom yang harus diubah, tidak ada konsensus yang jelas mengenai kesesuaiannya?
Tiga jenis masalah dapat terjadi:

  1. Kurangnya dokumentasi produk dari pembangunan perangkat lunak sebelumnya
  2. Menjaga keterlibatan pelanggan dalam proses pengembangan
  3. Tim pengembangan harus dapat memahami perangkat lunak sebelumnya

Kesimpulan
Menurut saya buku ini sangat menarik untuk pembaca yang ingin mengetahui teknik agile development seperti user stories, refactoring, pair programming and test-first development. Pada buku ini pembaca juga dapat memahami perbedaan antara metode agile software development dengan plan-driven development, dan isu-isu pada scaling agile methods.

Sistem Fuzzy #Bab 5 – Aplikasi Praktis Fuzzy Dunia Nyata

SISTEM FUZZY

Bab 5 ” Aplikasi Praktis Fuzzy Dunia Nyata”

Hallo – hallo sahabat Auls, aku mau sedikit sharing nih dari buku yang udah aku baca

Pada masa kini, sistem fuzzy berkembang dengan pesat. Banyak sistem fuzzy yang dikembangkan menyelesaikan permasalahan – permasalahan yang terjadi di dunia nyata. Permasalah – permasalahan ini mencakup berbagai bidang antara lain bidang kendali, bidang manajemen, bidang rantai pasok, bidang telekomunikasi, dan lain – lain. Pada bab ” Aplikasi Praktis Fuzzy Dunia Nyata” akan membahas aplikasi praktis sitem fuzzy yang digunakan untuk menyelesaikan aplikasi permasalahan di dunia nyata.

1. Permasalahan Bidang Kendali ( Aplikasi Microcontroller)

Perkembangan teknologi kendali mengalami banyak kemajuan dan kendali  konvensional ke kendali otomatik sampai ke kendali cerdas. Logika Fuzzy digunkaan sebagai sistem kendali, karena proses kendali ini relatif mudah, fleksibel, dan dirancang dengan tidak melibatkan model matematis yan rumit dari sistem yang akan dikendalikan.Permasalahan di bidang kendali biasanya adalah mengendalikan sesuatu ( actuar, motor dc, dan lain – lain) berdasarkan input dari sensor yang digunakan ( misalkan suhu, intesitas cahaya, dan lain – lain). Beberapa pengendalian menggunakan microcontroller sebagai unit processing-nya. Sedangkan untuk output biasanya menggunakan metode PWM untuk melakukan kendalinya. Pada sistem pengendalian fuzzy menggunakan microcontroller ini biasanya menggunakan metode Mamdani atau Sugeno.

2. Permasalahan Bidang Telekomunikasi ( Routing pada WSN)

  Wireless Sensor Network (WSN) sebagai salah satu teknologi telekomunikasi bertujuan untuk mngurangi biaya infrastruktur dengan menggunakan komunikasi node to node baiik untuk aplikasi kota maupun aplikasi hutan. Masalah muncul secara alami, karena node dalam jaringan sensor nirkabel tersebar dan bekerja secara independen untuk setiap node.Masalah lain juga terjadi ketika data observasi telah dikumpulkan oleh semua node, data observasi tersebut harus dapat disampaikan kepada node teratas dengan error data minimum. Untuk dapat meminimalkan kesalahan pengirimkan data ketika data hasil pengamatan sensor dikirim ke node teratas, diperlukan adanya suatu algoritma yang mengatur routing (jalur pemilihan transmisi data) pada jaringan sensor nirkabel.

Algoritma routing adalah perilaku dari node jaringan yang mengatur tentang bagaimana node berkomunikasi antara satu sama lain dan memberikan data hasil pengamatan sensor dengan menggunakan komunikasi dan node ke node lainnya, dari node terjauh menuju node terdekat dengan node teratas (stasiun pengumpulan data). Dapat dengan mudah diketahui bahwa cara sederhana untuk mengirimkan dat ahsil pengamatan sensor adalah menggunakan routing jalur terpendek. Algoritma routing rute terpendek adalah algoritma unttuk menemukan jalur terpendek dari node terjauh ke node terminal lebih dekat dengan base stasiun.

3. Permasalah di Bidang Big Data ( Aplikasi Forecasting/Peramalan)

Salah satu permasalahan big data adalah forecasting atau perkiraan adalah cara untuk memberikan infromasi tambahan kepada para pembuat keputusan dengan mengolah data menjadi sebuah data yang menunjukkan tren pergerakan data tersebut dari waktu ke waktu, baik tren naik, tren turun, maupun trend datar.Pada contoh kasus ini, akan menggunakan data mentah berupa data – data penggunaan mesin ATM dari tahun 2017 sampai dengan tahun 2019. Dengan data – data mentah ini, akan memcoba untuk membuat perkiraan tentang kerusakan ATM yang terjadi karena penggunaan sehari – hari.

1. Pengumpulan Data Semesta

2. Mengelompokkan Data – Data

3. Menentukan Interval Setiap Kelompok ( Klasifikasi Data)

4. Fuzifikasi Nilai Linguistik

5. Menentukan FLR dan FLRG (Fuzzy Rule/Inference)

6. Defuzifikasi

7. Pengujian Akurasi Forecasting

Semoga bermanfaat untuk semua

TERIMA KASIH

 

Akhdani Tech Talk 2021 Series #8 – Database Transaction

Database Transaction

Oleh: Aldia Rahman Mahmudi, Arvin Rasheda, Hesti Pratiwi

Apa itu Database Transaction?

Database transaction adalah salah satu subset yang disediakan SQL. Gunanya untuk mengatur alur data transaksi dalam suatu database. Dengan menggunakan Database Transaction maka kita akan memasukan beberapa query kedalam satu blok dan DBMS akan menganggap query tadi menjadi suatu kesatuan, sehingga jika terjadi error pada salah satu query maka sistem akan membatalkan (rollback) query yang sudah di eksekusi sebelumnya. Konsep ini adalah pengertian dari Atomic yaitu do all or nothing (lakukan semua atau tidak sama sekali).

Konsep Dasar

Dalam implementasinya, kita akan bertemu dengan 3 istilah berikut:Dalam implementasinya, kita akan bertemu dengan 3 istilah berikut:

  • BEGIN/START TRANSACTION

Ini adalah perintah untuk memulai sesi database transaction.

  • COMMIT

Commit adalah perintah untuk menyimpan semua perubahan pada database secara permanen, commit ini dijalankan setelah semua query dieksekusi dan tidak ada error sama sekali.

  • ROLLBACK

Rollback adalah perintah untuk membatalkan semua perubahan data, rollback ini akan dijalankan ketika ada salah satu query yang error. Jika kita menggunakan try..catch, maka perintah rollback ini biasa disimpan di blok catch.

Properti ACID

ACID merupakan singkatan dari Atomicity, Consistency, Isolation, and Durability. ACID adalah karakteristik dari Database Transaksional yang menjamin transaksi database diproses secara reliable.

1

  1. Atomicity: transaksi merupakan suatu kesatuan yang tidak dapat dipisah. Suatu proses selesai secara menyeluruh atau tidak sama sekali.
  2. Consistency: semua proses yang terjadi di database harus memiliki state yang jelas. Sehingga ketika proses gagal, maka data akan dikembalikan seperti keadaan sebelum proses transaksi dimulai.
  3. Isolation: data yang belum selesai diproses harus terisolasi dari transaksi lainnya. Berarti bahwa satu transaksi tidak dapat membaca data dari transaksi lain yang belum selesai.
  4. Durability: kemampuan DBMS untuk menyimpan data transaksi yang terjadi. Sehingga jika terjadi kegagalan, DBMS menjamin bahwa data transaksi yang telah tersimpan tidak akan hilang.

State Transaksi

2

Beberapa state dalam sebuah transaksi, diantaranya:

  1. Active: inisiasi state, transaksi tetap berada pada state ini pada saat proses transaksi
  2. Partially committed: setelah statement final telah dieksekusi
  3. Failed: setelah ditelusuri bahwa eksekusi tidak dapat diproses kembali
  4. Aborted: setelah transaksi di-rolled back dan database di-restore ke kondisi awal sebelum transaksi dimulai.
  5. Committed: setelah transaksi sukses dipenuhi

Implementasi

Misalkan kita memiliki sebuah desain database berisi 2 buah tabel (“header” dan “detail”) yaitu “akun” dan “transaksi” untuk menyimpan saldo dan transaksi yang dilakukan user. Di dalam tabel akun terdapat attribute id, nama dan jumlah saldo user tersebut, dimana saldo memiliki check constraint yaitu saldo harus lebih besar atau sama dengan 0. Dalam satu akun dapat memiliki beberapa detail transaksi yang jenisnya dapat berupa debit dan kredit yang dapat di tuliskan dalam bentuk +/- dalam attribute jenis, besaran transaksi pada attribute jumlah, tanggal dilakukannya transaksi dan akunid yang merupakan foreign key dari tabel akun. Struktur data tersebut dalam database dapat digambarkan dalam sebuah skema sederhana sebagai berikut :

3

Contoh Kasus :

User A dan B memiliki sebuah akun, dimana dalam akun tersebut user A memiliki saldo awal sebesar Rp 100.000,00 dan user B memiliki saldo awal sebesar Rp 750.000,00.

4

Misal user B ingin melakukan transfer saldo sebesar Rp. 800.000,00 ke user A, dimana transaksi ini harusnya gagal karena user B hanya memiliki saldo sebesar Rp. 750.000,00. Disini kita akan mensimulasikan transaksi tersebut dalam bentuk query untuk memperbarui data transaksi dan saldo kedua akun tersebut tanpa menggunakan database transaction.

5

Terdapat error ketika melakukan update pada saldo user B karena saldo akhir menjadi -50.000 dan terdapat check constraint dimana minimal saldo harus lebih besar atau sama dengan 0. Ketika kita melihat kembali data pada tabel akun dan transaksi maka akan terdapat kesalahan data karena ketiga query sebelumnya berhasil dilakukan sedangkan saldo user B tidak berhasil di update.

67

Berikut ini perbandingan apabila kita menggunakan database transaction.

8

Ketika terjadi error kita tinggal melakukan perintah ROLLBACK untuk membatalkan semua perubahan data / mengembalikannya lagi ke state awal, atau lakukan COMMIT jika semua query sukses dijalankan dan data akan tersimpan. Disini kita akan melakukan ROLLBACK pada transaction tersebut.

9

Jika kita melihat kembali data yang ada pada tabel akun dan transaksi, maka tidak akan terdapat perubahan dimana saldo masih sesuai data awal dan transaksi masih kosong.

10 11

Kesimpulan

Database transaction dapat disebut sebagai salah satu fundamental dari pemrograman menggunakan database relasional karena dapat membantu mencegah inkosistensi data atau kesalahan yang terjadi akibat aksi yang dilakukan pada database. Secara umum implementasi database transaction dapat membantu meningkatkan keandalan, integritas dan kinerja aplikasi yang dibangun diatas database tersebut.

Akhdani Tech Talk 2021 Series #7 – Penerapan Algoritma Naive Bayes pada Klasifikasi Data Penerimaan Pegawai

PENERAPAN ALGORITMA NAIVE BAYES PADA KLASIFIKASI DATA PENERIMAAN PEGAWAI

oleh: Maulana, Hardi, Akbar

Apa itu Klasifikasi Naive Bayes ?

Naïve Bayes Classifier merupakan Metode pengklasifikasian dg menggunakan metode probabilitas dan statistik yg dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu memprediksi peluang di masa depan berdasarkan pengalaman di masa sebelumnya sehingga dikenal sebagai Teorema Bayes. Klasifikasi Naive Bayes diasumsikan bahwa ada atau tidak ciri tertentu dari sebuah kelas tidak adahubungannya dengan ciri dari kelas lainnya.

Alasan Memilih Algoritma Klasifikasi Naive Bayes ?

  • Naive Bayes Classifier bekerja sangat baik dibanding dengan model classifier lainnya. Hal ini dibuktikan oleh Xhemali , Hinde Stone dalam jurnalnya “Naïve Bayes vs. Decision Trees vs. Neural Networks in the Classification of Training Web Pages” mengatakan bahwa “Naïve Bayes Classifier memiliki tingkat akurasi yg lebih baik dibandingmodel classifier lainnya”.
  • Penggolong statistik: Melakukan prediksi probabilitas, misalnya: Memprediksi probabilitas keanggotaan kelas
  • Standar: Sekalipun metode Bayesian tidak dapat dilakukan secara komputasional, mereka dpaat memberikan standar pengambilna keputusan yang optimal yang ddapat diukur dengan metode lain.

Kelebihan dan Kekurangan Algoritma Naive Bayes

1. Kelebihan

  • Bisa dipakai untuk data kuantitatif maupun kualitatif
  • Tidak memerlukan jumlah data yang banyak
  • Tidak perlu melakukan data training yang banyak
  • Jika ada nilai yang hilang, maka bisa diabaikan dalam perhitungan.
  • Perhitungannya cepat dan efisien
  • Mudah dipahami
  • Mudah dibuat
  • Pengklasifikasian dokumen bisa dipersonalisasi, disesuaikan dengan kebutuhan setiap orang
  • Jika digunakan dalaam bahasa pemrograman, code-nya sederhana
  • Bisa digunakan untuk klasifikasi masalah biner ataupunmulticlass

2. Kekurangan

  • Apabila probabilitas kondisionalnya bernilai nol, maka probabilitas prediksi juga akan bernilai nol
  • Asumsi bahwa masing-masing variabel independen membuat berkurangnya akurasi, karena biasanya ada korelasi antara variabel yang satu dengan variabel yang lain
  • Keakuratannya tidak bisa diukur menggunakan satu probabilitas saja. Butuh bukti-bukti lain untuk membuktikannya.
  • Untuk membuat keputusan, diperlukan pengetahuan awal atau pengetahuan mengenai masa sebelumnya. Keberhasilannya sangat bergantung pada pengetahuan awal tersebut Banyak celah yang bisa mengurangi efektivitasnya
  • Dirancang untuk mendeteksi kata-kata saja, tidak bisa berupa gambar

skema-naive-bayesGambar 1.1. Skema Naive Bayes

Perancangan Sistem

flowchart-sistemGambar 2.1. Flowchart Sistem

diagram-classGambar 2.2. Diagram Kelas

Implementasi Klasifikasi Naive Bayes dan Rancangan Sistem 

Klasifikasi Naive bayes dibuat menggunakan bahasa pemrograman python yang terintegrasi dengan halaman web yang dibuat berdasarkan rancangan sistem diatas.

data-trainingGambar 3.1. Tabel Data Training

Tabel data training seperti gambar 3.1, data tersebut yang akan diklasifikasi menggunakan algoritma Naive Bayes dan digunakan sebagai pengambil keputusan untuk menentukan lulus atau tidaknya data baru calon pegawai.

halamanGambar 3.2. Halaman Form Input Sistem

dalam halaman web yang dibuat seperti Gambar 3.1. user akan menginput data calon pegawai seperti nama, nilai administrasi, nilai tes 1, nilai tes 2 dan nilai interviewnya. setelah user menginput data calon pegawai, sistem akan menentukan lulus atau tidaknya data calon pegawai berdasarkan hasil klasifikasi data training seperti pada gambar 3.3 dan gambar 3.4.lulus

Gambar 3.3. Tampilan Data Calon Pegawai Lulus

tidak-lulus

Gambar 3.4. Tampilan Data Calon Pegawai Tidak Lulus

Kesimpulan

1. Dengan adanya sistem ini, akan mempermudah pihak panitia penerimaan pegawai dalam memperkirakan calon pegawai yang akan bergabung sehingga panitia bisa mengambil keputusan untuk menerima atau tidak calon pegawai tersebut.

2. Pada algoritma Naive Bayes, semua attribut akan memberikan kontribusinya dalam pengambilan keputusan, dengan bobot atribut yang sama penting dan setiap atribut saling bebas satu sama lain.

Akhdani Tech Talk 2021 Series #6 – Load Test WebRTC

Load Test WebRTC

Oleh: Muhamad Indra Kusmana, Rahmat Hidayat, Rahmat Setiawan

Apa itu WebRTC?

WebRTC (Web Real-TIme Communication) merupakan teknologi yang memungkinkan kita melakukan komunikasi secara real-time menggunakan video dan audio secara langsung pada halaman web. Contoh aplikasi yang menggunakan teknologi ini misalnya Google Meet, Zoom, Microsoft Teams, dan sebagainya.

Teknologi WebRTC

WebRTC menggunakan 3 komponen utama:

  1. Media Stream
    Untuk penggunaan media device dan merepresentasikan data audio dan video kedalam bentuk stream.
  2. Peer Connection
    Memungkinkan 2 atau lebih pengguna terkoneksi secara bersamaan.
  3. Data Channel
    Memungkinkan pengguna mengirim data dalam bentuk text chat, file sharing, dsb secara bersamaan.

Apa itu Load Test?

Load test adalah proses pengujian non-functional suatu aplikasi dimana performa diuji dengan load tertentu. Proses ini dilakukan untuk mengetahui bagaimana suatu aplikasi dapat berjalan pada saat penggunaan dalam jumlah banyak dan waktu bersamaan.

Permasalahan Load Test pada WebRTC

Seperti aplikasi berbasis web yang diakses oleh banyak pengguna pada umumnya, tentunya load test perlu dilakukan pada aplikasi WebRTC untuk mengetahui performa dari aplikasi tersebut saat diakses oleh banyak pengguna pada waktu bersamaan. Sayangnya saat ini tidak banyak tools open source untuk yang tersedia untuk melakukan load test pada WebRTC. Selain itu beberapa tools hanya tersedia untuk aplikasi yang menggunakan platform yang sama dengan tools tersebut.

Tujuan

Sample aplikasi yang kami gunakan pada pengujian kali ini adalah sebuah aplikasi sederhana, dimana terdapat 2 halaman podium dan student. Halaman podium akan melakukan broadcast ke halaman student yang berada pada room yang sama berupa screen sharing dan audio. 

 1-1

Gambar 1.1: tampilan halaman podium

 1-2

Gambar 1.2: tampilan halaman student

Pada pengujian ini, akan dilakukan load test pada aplikasi WebRTC menggunakan Apache Jmeter dan Cypress. Metode pengujian dilakukan dengan cara melakukan sejumlah koneksi pada aplikasi. Hal ini dapat berguna untuk mengetahui berapa jumlah maksimal pengguna yang dapat terhubung pada aplikasi yang dibangun pada waktu bersamaan.

Apache JMeter

JMeter merupakan aplikasi berbasis Java yang didesain untuk melakukan load test mengukur performa suatu aplikasi. Pada pengujian ini, JMeter akan mensimulasikan sejumlah pengguna dengan membuat banyak koneksi menggunakan chrome headless mode.

 2-1

Gambar 2.1: Script untuk melakukan koneksi ke aplikasi WebRTC menggunakan chrome headless mode

2-2

Gambar 2.2: Hasil build dalam bentuk jar

2-3

Gambar 2.3: Konfigurasi pada JMeter dengan sampler menggunakan Java Request

2-4

Gambar 2.4: Hasil eksekusi JMeter(1)

2-5

Gambar 2.5: Hasil eksekusi JMeter (2)

2-6

Gambar 2.6: Console log aplikasi WebRTC menampilkan jumlah subscriber yang terhubung

 

Cypress

Cypress merupakan end-to-end test framework berbasis Javascript. Pada pengujian ini, penggunaan Cypress dilakukan untuk menyimulasikan sejumlah pengguna dengan membuka aplikasi WebRTC pada banyak halaman sekaligus.

3-1

Gambar 3.1: Script untuk melakukan koneksi ke aplikasi WebRTC

3-2

Gambar 3.2: Script untuk melakukan replikasi koneksi

3-3

Gambar 3.3: Hasil eksekusi Cypress

Kesimpulan

Beberapa poin penting pada penggunaan Apache JMeter:

  1. Tidak bisa menggunakan HTTP Sampler, sehingga harus menggunakan Sampler Java Request.
  2. Sulit mencari referensi, karena masih sangat jarang yang melakukan. Referensi terbaik yang didapat: https://www.cnblogs.com/chenkx6/p/13639629.html
  3. Hasil eksekusi pada JMeter menampilkan error meskipun koneksi berhasil dilakukan, sehingga untuk melihat jumlah koneksi yang terhubung dapat dilihat melalui log aplikasi

Poin penting pada penggunaan Cypress:

  1. Selalu terjadi error di sekitar iterasi ke-10. Terdapat tiket terkait issue tersebut pada forum https://github.com/cypress-io/cypress/issues/1305 (status: open saat pengujian dilakukan, 28 Januari 2021)

Akhdani Tech Talk 2021 Series #5 – Test Driven Development

Test Driven Development

Oleh: Agus, Dimas, Moris

Apa itu Test Driven Development (TDD)

Praktek koding yang pertama kali dibuat adalah uji tesnya, lalu membuat koding yang bisa membuat test tersebut lolos. Menagapa harus TDD ? TDD baiknya digunakan apabila Anda ingin menjaga base code dalam waktu yang lama.  TDD itu merupakan proses tertutup yang berulang. Hal ini membuat programmer paham dengan apa yang dia buat. Sebagai contoh berikut adalah gambaran dari proses pembuatan TDD tersebut

Mengapa menggunakan TDD?

Karena TDD adalah cara paling sederhana untuk mencapai kode berkualitas baik dan cakupan pengujian yang baik.

Untuk Jawaban lebih panjang, keep scrolling!

Lima langkah dalam flow TDD

  1. Baca, pahami dan proses permintaan fitur atau fix-bug.
  2. Terjemahkan persyaratan dengan menulis tes unit. Jika memiliki pengaturan hot-reload, unit test akan berjalan dan gagal karena belum ada kode yang diimplemen.
  3. Tulis dan implementasikan kode yang memenuhi persyaratan. Jalankan semua tes dan pastikan test berhasil/lulus. Jika ada yang tidak lulus ,silakan ulangi langkah ini.
  4. Bersihkan kode dengan refactoring.
  5. Check dan ulangi hingga test sudah bisa diimpelemtasikan untuk produksi (production).

tdd

tdd-red-green-refactoring-v3

 

 

Terdapat beberapa keuntungan dan kekurangan yang didapatkan jika menggunakan metode TDD. Berikut adalah contohnya :

Keuntungan : 

  1. Bisa memberitahu pada kondisi apa kodingan tersebut bisa berjalan sempurna dan tidak jalan sempurna. Programmer bisa mengetahui jika terjadi kesalahan karena sebelumnya kodingan tersebut berjalan dengan baik.
  2. Membuat waktu yang lebih singkat untuk melakukan refactor kodingan jika diperlukan, karena programmer dapat mengetes dengan mudah.
  3. Membuat programmer lebih percaya diri. karena apabila ada penambahan fitur, dapat dites dengan mudah.

Kekurangan : 

  1. Tidak mudah untuk memulai dengan TDD. Anda harus mengetahui mengetahui banyak praktik dan teknik baru. Contoh: unit testing, dan asertions, dll.
  2. Dibutuhkan lebih banyak waktu diawal saat melakukan pengembangan, karena Programmer harus menguji kode saat membuat kodingan juga.

Secara umum, TDD dapat dibagi menjadi 4 bagian yaitu : 

  1. Unit Testing: Unit test yang paling rendah. Biasanya yang di test hanya 1 method. Hal ini membuat unit testing mudah untuk digunakan.
  2. Integration Testing: Integration testing yang menyentuh beberapa class. Selain berhubungan dengan beberapa class, ada juga yang berhubungan dengan pihak external lainnya, misalnya API lain. 
  3. Functional Testing: Functional testing adalah tipe testing yang dilakukan kepada semua fitur. Testing ini agak memakan banyakan waktu karena fitur yang dites nya lebih banyak dari integration testing.
  4. Acceptance Testing: Acceptance testing merupakan test yang paling atas. Testing ini hanya dianggap sukses apabila customer sudah mengatakan testnya selesai.

Sebagai contoh, disini kita akan membuat 1 bagian TDD yaitu unit testing. Sebagai awalan, framework yang digunakan adalah menggunakan laravel (contoh menggunakan laravel karena saat menginstal laravel sudah sekaligus otomatis terinstal contoh unit testnya). Untuk menjalankan TDD secara otomatis, ketikan “vendor\bin\phpunit” pada root folder laravel.

Script test yang dibuat biasanya disimpan pada folder test\Unit

folder

lalu pada terminal akan muncul tampilan seperti ini

success1

hal tersebut menandakan bahwa semua test lolos.

sebagai contoh lain, kita buat 1 class yang bernama Calculate yang isinya 1 methode untuk menghitung luas

public function areaOfSquare($length)
{
    return pow($length, 2);
}

lalu buat class testnya yang bernama CalculateTest pada folder “tests\Unit”

 

folder-2

 

buat 1 method pada CalculateTest yang berfungsi untuk mengetes hasil balikan dari method “areaOfSquare” pada class “Calculate”

public function test_areaOfSquare_WhenCalledWithLength2_Return4()
{
    $this->calculate = new Calculate();

    $length = 2;

    $response = $this->calculate->areaOfSquare($length);

    $this->assertTrue(is_int($response));
    $this->assertEquals(4, $response);
}

jalankan test maka akan menghasilkan tampilan seperti berikut

success1

untuk apabila ada logic yang salah pada method “areaOfSquare” pada class “Calculate”, maka akan muncul tampilan seperti berikut.

error

 

disana disebutkan bahwa pada test “test_areaOfSquare_WhenCalledWithLength6_Return36″ hasil yang diharapkan adalah 36, sedangkan hasil yang keluar dari uji test adalah 216. dari sana bisa diambil kesimpulan bahwa kodingan di method “areaOfSquare” pada class “Calculate” terdapat kesalahan. Namun tidak menutup kemungkinan juga jika output yang ditulis pada script test yang dibuat salah. padahal hasil yang dikeluarkan oleh kodingan di method tersebut betul.

Kesimpulan :

Pengembangan berbasis tes (TDD) adalah teknik pengembangan di mana harus terlebih dahulu menulis tes yang gagal sebelum menulis kode fungsional baru. TDD dengan cepat diadopsi oleh pengembang perangkat lunak tangkas untuk pengembangan kode sumber aplikasi. TDD tidak menggantikan pengujian tradisional, melainkan mendefinisikan cara yang telah terbukti untuk memastikan pengujian unit yang efektif. Efek samping dari TDD adalah bahwa tes yang dihasilkan adalah contoh kerja untuk menjalankan kode, sehingga memberikan spesifikasi kerja untuk kode tersebut. Pengalaman pribadi, bahwa TDD bekerja dengan sangat baik dalam praktiknya dan ini adalah sesuatu yang harus dipertimbangkan oleh semua pengembang perangkat lunak.

 

Akhdani Tech Talk 2021 Series #4 – Deteksi Emosi pada teks Chat

Deteksi Emosi pada teks Chat

Oleh: Fildah A., Ikhsan H. Frasetiawan H.

  • Masalah dan Ide

    Bentuk komunikasi teks saat ini merupakan salah satu yang tidak bisa dipisahkan dari kehidupan kita, meskipun ada banyak aspek non verbal yang terkadang tidak mampu ditunjukkan melalui komunikasi teks. Dengan perkembangan AI hingga kini, sangat memungkinkan untuk menggali informasi non verbal dari sebuah teks seperti emosi agar tercipta suatu bentuk komunikasi teks yang lebih komprehensif. Kali ini tim techtalk akan membuat sebuah sistem prediksi emosi sederhana menggunakan machine learning dari data teks.

  • Requirements

  • Python versi 3
  • Modul sklearn
  • Modul nltk corpora
  • Flask
  • Tahap Implementasi

    1. Mencari dataset yang sesuai

    Untuk melakukan sebuah proses supervised learning, dataset yang diperlukan untuk proses training nanti adalah labeled dataset. Terdapat banyak dataset yang sudah dilabeli emosi tersedia secara gratis di internet, misalnya di https://www.kaggle.com/.
    Dataset yang dipilih untuk percobaan kali ini merupakan data tweet dalam Bahasa Inggris yang sudah dilabeli dengan berbagai macam emosi seperti senang, sedih, marah, khawatir, bosan, netral. Untuk menyederhanakan proses training dan prediksi, dipakai hanya data-data yang memiliki label senang, sedih dan netral.

image9Gambar 1. Snippet code untuk load dataset

2. Preprocessing data

Untuk mengoptimalkan proses ekstraksi fitur dan akurasi prediksi, perlu dilakukan ‘pembersihan’ dari kata-kata yang tidak menambah/memiliki makna maupun pengubahan kata menjadi kata dasar. Tahap-tahap preprocessing data meliputi beberapa hal berikut.

  • Memilih data dengan label happiness, sadness dan netral
  • tweet_id sentiment content
    1 1956967666 sadness layin n bed headache ughh waitin call
    2 1956967696 sadness funeral ceremony gloomy friday
    4 1956968416 neutral dannycastillo want trade someone houston ticke...
    6 1956968487 sadness sleep im thinking old friend want married damn...
    8 1956969035 sadness charviray charlene love miss
    ... ... ... ...
    39992 1753918881 neutral jasimmo oo showing french skill lol thing good...
    39993 1753918892 neutral haha yeah twitter many us know ppl care
    39994 1753918900 happiness succesfully following
    39995 1753918954 neutral
    39998 1753919043 happiness wassup beautiful follow peep new hit single ww...
    
    [19012 rows x 3 columns]
  • Penyeragaman huruf kapital menjadi huruf kecil (lowercase)
  •  tweet_id sentiment content
    1 1956967666 sadness layin n bed with a headache ughhhh...waitin on...
    2 1956967696 sadness funeral ceremony...gloomy friday...
    4 1956968416 neutral @dannycastillo we want to trade with someone w...
    6 1956968487 sadness i should be sleep, but im not! thinking about ...
    8 1956969035 sadness @charviray charlene my love. i miss you
    ... ... ... ...
    39992 1753918881 neutral @jasimmo ooo showing of your french skills!! l...
    39993 1753918892 neutral @sendsome2me haha, yeah. twitter has many uses...
    39994 1753918900 happiness succesfully following tayla!!
    39995 1753918954 neutral @johnlloydtaylor
    39998 1753919043 happiness @niariley wassup beautiful!!! follow me!! peep...
    
    [19012 rows x 3 columns]
  • Menghilangkan tanda baca
  •  tweet_id sentiment content
    1 1956967666 sadness layin n bed with a headache ughhhh waitin on...
    2 1956967696 sadness funeral ceremony gloomy friday
    4 1956968416 neutral dannycastillo we want to trade with someone w...
    6 1956968487 sadness i should be sleep but im not thinking about ...
    8 1956969035 sadness charviray charlene my love i miss you
    ... ... ... ...
    39992 1753918881 neutral jasimmo ooo showing of your french skills l...
    39993 1753918892 neutral sendsome2me haha yeah twitter has many uses...
    39994 1753918900 happiness succesfully following tayla
    39995 1753918954 neutral johnlloydtaylor
    39998 1753919043 happiness niariley wassup beautiful follow me peep...
    
    [19012 rows x 3 columns]
  • Menghilangkan stopwords
  •  tweet_id sentiment content
    1 1956967666 sadness layin n bed headache ughhhh waitin call
    2 1956967696 sadness funeral ceremony gloomy friday
    4 1956968416 neutral dannycastillo want trade someone houston ticke...
    6 1956968487 sadness sleep im thinking old friend want married damn...
    8 1956969035 sadness charviray charlene love miss
    ... ... ... ...
    39992 1753918881 neutral jasimmo ooo showing french skills lol things g...
    39993 1753918892 neutral sendsome2me haha yeah twitter many uses know p...
    39994 1753918900 happiness succesfully following tayla
    39995 1753918954 neutral johnlloydtaylor
    39998 1753919043 happiness niariley wassup beautiful follow peep new hit ...
    
    [19012 rows x 3 columns]
  • Mengubah kata ke bentuk kata dasar
  • tweet_id sentiment content
    1 1956967666 sadness layin n bed headache ughhhh waitin call
    2 1956967696 sadness funeral ceremony gloomy friday
    4 1956968416 neutral dannycastillo want trade someone houston ticke...
    6 1956968487 sadness sleep im thinking old friend want married damn...
    8 1956969035 sadness charviray charlene love miss
    ... ... ... ...
    39992 1753918881 neutral jasimmo ooo showing french skill lol thing goo...
    39993 1753918892 neutral sendsome2me haha yeah twitter many us know ppl...
    39994 1753918900 happiness succesfully following tayla
    39995 1753918954 neutral johnlloydtaylor
    39998 1753919043 happiness niariley wassup beautiful follow peep new hit ...
    
    [19012 rows x 3 columns]

image7Gambar 2. Snippet code untuk preprocessing data

3. Ekstraksi fitur

Mesin melakukan pembelajaran melalui suatu proses kalkulasi tertentu yang memetakan antara nilai input dan output dalam bentuk numerik. Dalam percobaan ini data yang akan dibaca tersedia dalam bentuk teks, sehingga perlu dilakukan pengubahan untuk data input (konten teks) maupun outputnya (label) dari teks menjadi nilai numerik.

3.1. Untuk label, proses transformasi dilakukan dengan cara mengubah label menjadi nilai 0…n sesuai banyaknya jenis label berbeda.

image8Gambar 3. Snippet code untuk encoding label

3.2. Untuk data konten teks, dilakukan 2 metode berbeda untuk mengekstraksi fitur-fitur yang dimiliki teks menjadi bentuk numerik yaitu CountVectorizer dan TF-IDF

image5Gambar 4. Snippet code untuk ekstraksi fitur

*CountVectorizer adalah sebuah metode mengubah data teks dengan menghitung banyaknya kemunculan sebuah kata dalam dokumen teks dan kemudian dari nilai hasil kemunculan tiap kata tersebut diubah menjadi bentuk vektor

*TF-IDF adalah sebuah metode mengubah data teks dengan memberikan bobot/nilai terhadap kata berdasarkan seberapa penting kata tersebut dianggap memberikan makna pada kalimat.

4.Melakukan training dan test

Sebelum melakukan training data dan test, dipisahkan terlebih dahulu antara data training dan tes dari dataset yang tersedia dengan rasio 9:1. Ada beberapa model yang dilakukan untuk percobaan, yaitu multinomial naive bayes dan linear svm.

image6Gambar 5. Snippet code untuk split dataset dan fit model

*Multinomial Naive Bayes adalah suatu model klasifikasi berdasarkan teorema bayes dengan mengasumsikan bahwa setiap aspek/fitur dianggap setara.
*Linear SVM adalah model klasifikasi dengan ide untuk mencari sebuah garis pemisah antara kelompok-kelompok vektor

image1Gambar 6. Hasil akurasi model

Model dengan akurasi tertinggi dipilih dan disimpan ke dalam bentuk objek untuk kemudian dipakai melakukan prediksi. Proses menyimpan model menggunakan joblib dari python.

image4Gambar 7. Snippet code dump model menggunakan joblib

5. Membuat web app dengan Flask

Flask merupakan microframework web app untuk python. Model terlebih dahulu di load, lalu dilakukan proses prediksi menggunakan model dan vocab hasil training.

image3Gambar 8. Snippet code app.py

image2Gambar 9. Menjalankan web app

6. Melakukan prediksi menggunakan input random

Setelah web app berhasil dijalankan, selanjutnya kita coba melakukan prediksi dengan input yang kita buat sendiri dengan cara mengetikkan pesan ke dalam textbox yang tersedia.

image11Gambar 10. Tampilan input teks untuk prediksi emosi

image10Gambar 11. Tampilan hasil prediksi

  • Saran pengembangan selanjutnya

  1. Sistem prediksi dengan Bahasa Indonesia
    Pengembangan sistem prediksi dalam Bahasa Indonesia membutuhkan dataset berlabel dan serangkaian langkah preprocessing untuk Bahasa Indonesia. Pada proses pencarian dataset sebelumnya, kami sempat menemukan dataset dengan Bahasa Indonesia. Namun, kami belum sempat eksplorasi lebih jauh mengenai library/modul preprocessing dari python apakah sudah tersedia untuk Bahasa Indonesia.
  2. Disambungkan dengan sosial media
    Sistem prediksi emosi berkaitan erat dengan kegiatan komunikasi teks. Dalam kegiatan sehari-hari kita tentu paling sering melakukan komunikasi teks melalui sosial media. Sistem prediksi emosi mungkin bisa dimanfaatkan untuk meningkatkan kualitas respon chatbot atau sejenisnya. Tentu saja harus dengan pengembangan model ML lebih lanjut agar prediksi bisa lebih akurat.

Sumber :
https://medium.com/the-research-nest/applied-machine-learning-part-3-3fd405842a18
https://towardsdatascience.com/develop-a-nlp-model-in-python-deploy-it-with-flask-step-by-step-744f3bdd7776
https://towardsdatascience.com/naive-bayes-classifier-81d512f50a7c
https://towardsdatascience.com/https-medium-com-pupalerushikesh-svm-f4b42800e989

Akhdani Tech Talk 2021 Series #3 – PENGGUNAAN E-PROCUREMENT BAGI PERUSAHAAN

Apakah e-Procurement itu??
e-Procurement adalah proses pengadaan barang/jasa pemerintah yang pelaksanaannya dilakukan secara elektronik dan berbasis web/internet dengan memanfaatkan fasilitas teknologi komunikasi dan informasi yang meliputi pelelangan umum secara elektronik yang diselenggarakan oleh Pusat Layanan Pengadaan Secara Elektronik (LPSE).
Dilatarbelakangi oleh tuntutan masyarakat dalam memperoleh informasi seluas-luasnya mengenai pengadaan barang/jasa pemerintah dan penyelenggaraan pemerintah yang baik dan bebas dari Korupsi, Kolusi, dan Nepotisme (KKN), maka pemerintah menerapkan e-Procurement dengan tujuan untuk menciptakan transparansi, efisiensi dan efektivitas serta akuntabilitas dalam pengadaan barang/jasa melalui media elektronik antara panitia dan penyedia jasa.

Jika kita berbicara tentang LPSE, Apakah LPSE itu? LPSE (Layanan Pengadaan Secara Elektronik) adalah layanan pengelolaan teknologi informasi untuk memfasilitasi pelaksanaan Pengadaan Barang/Jasa secara elektronik.

Dasar Hukum Pembentukan LPSE
Dasar hukum pembentukan Layanan Pengadaan Secara Elektronik adalah Pasal 73 Nomor 16 Tahun 2018 tentang pengadaan barang/jasa pemerintah yang ketentuan teknis operasionalnya diatur oleh Peraturan Lembaga LKPP Nomor 14 Tahun 2018 tentang Layanan pengadaan Secara Elektronik. Layanan Pengadaan Secara Elektronik dalam menyelenggarakan sistem pelayanan Pengadaan Barang/Jasa secara elektronik juga wajib memenuhi persyaratan sebagaimana yang ditentukan dalam Undang-undang Nomor 11 Tahun 2008 tentang Informasi dan Transaksi Elektronik.

SPSE (Sistem Pengadaan Secara Elektronik)
SPSE merupakan aplikasi e-Procurement yang dikembangkan oleh Direktorat Pengembangan Sistem Pengadaan Secara Elektronik – LKPP untuk digunakan oleh Layanan Pengadaan Secara Elektronik di seluruh K/L/PD. Aplikasi ini dikembangkan dengan semangat efisiensi nasional sehingga tidak memerlukan biaya lisensi, baik lisensi SPSE itu sendiri maupun perangkat lunak pendukungnya.
SPSE dikembangkan oleh LKPP bekerja sama dengan:
1. Badan Siber dan Sandi Negara (BSSN) untuk fungsi enkripsi dokumen;

logo_bssn
2. Badan Pengawasan Keuangan dan Pembangunan (BPKP) untuk sub sistem audit.

bpkp_logo

 

LKPP (Lembaga Kebijakan Pengadaan Barang/Jasa Pemerintah)

foto-lkpp
Lembaga Kebijakan Pengadaan Barang/Jasa Pemerintah (LKPP) merupakan Lembaga Pemerintah Non Departemen yang berada di bawah dan bertanggung jawab kepada Presiden dan dibentuk berdasarkan Perpres No 106 tahun 2007.
LKPP merupakan lembaga pemerintah satu-satunya yang mempunyai tugas melaksanakan pengembangan dan perumusan kebijakan pengadaan barang/jasa Pemerintah, dan dalam melaksanakan tugas dan fungsinya LKPP dikoordinasikan oleh Menteri Negara Perencanaan Pembangunan Nasional.

SIKaP (Sistem Informasi Kinerja Penyedia)

Aplikasi yang merupakan subsistem dari SPSE yang digunakan untuk mengelola data/informasi mengenai data kualifikasi Pelaku Usaha dan riwayat kinerja Penyedia Barang/Jasa.