tag:blogger.com,1999:blog-53384270318500519662024-03-19T03:43:49.599+07:00Bahas KomputerKursus IT Secara OnlineAnhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.comBlogger706125tag:blogger.com,1999:blog-5338427031850051966.post-61235932471901436712024-03-19T03:38:00.004+07:002024-03-19T03:43:17.426+07:00Menggunakan Firebase Dan Node JS 14 Di Docker Ubuntu<div class="separator" style="clear: both;"><a href="https://anhartasman.github.io/assets/img/posts/docker_black_logo.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="509" data-original-width="800" src="https://anhartasman.github.io/assets/img/posts/docker_black_logo.png"/></a></div><br />
Sebagai pengguna mac mini saya mengalami kesulitan untuk menggunakan firebase,
oleh karena itu saya menggunakan docker untuk menjalankan firebase di dalam OS
Ubuntu, begini caranya<br /><br />
<h3>1. Siapkan docker file dockerfile</h3>
<script src="https://gist.github.com/anhartasman/83b0cebb4d2b04937424f522939b73df.js"></script>
kemudian bikin imagenya dengan command dibawah ini<br />
<figure class="highlight">
<pre><code>docker build --tag ubuntu-firebase:latest</code>
</pre>
</figure>
<h3>2. Jalankan containernya</h3>
Pergi ke folder project firebase kamu kemudian ketik command berikut ini untuk menjalankan container yang baru saja kita buat
<figure class="highlight">
<pre><code>docker run -it -v "$(pwd)":/data1 -p 9005:9005 ubuntu-firebase:latest</code>
</pre>
</figure>
<h3>3. Menggunakan Firebase CLI</h3>
Jangan lupa login dulu untuk menggunakan firebase cli
<figure class="highlight">
<pre><code>firebase login</code>
</pre>
</figure>
Kemudian masuk ke folder project mu (data1)
<figure class="highlight">
<pre><code>cd data1</code>
</pre>
</figure>
Untuk mengaktifkan projectnya ketik command berikut
<figure class="highlight">
<pre><code>firebase use --add</code>
</pre>
</figure>
<h3>4. Berhasil deh</h3>
Karena saya ingin menggunakan firebase function maka saya menginstall package yang dibutuhkan
<figure class="highlight">
<pre><code>npm install</code>
</pre>
</figure>
Kalau udah, ketik command dibawah ini untuk melakukan test di local
<figure class="highlight">
<pre><code>firebase serve --only functions -o 0.0.0.0 --port=9005</code>
</pre>
</figure>
Semoga bermanfaat untuk kalian yah
Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-88846490674233289332020-05-04T19:00:00.005+07:002020-05-04T19:00:56.149+07:00Ngopi Ngoding Ngoprek Flutter Bagian 6 : Pubspec<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPAdpRdpCTZmjjQYh9fIQ_lCCC5MWogtqHfRD8cOkySYafO1QVHn3s0-rzQFX7XBGAxBa9PatnEgXdKL5HCXiRi536koSv4M-PNILQJpOs8nlz-T2Pk7elLZ8MbSn4EHByI39lzgATAI0/s1600/bahanThumbnailYoutube.jpg" imageanchor="1" style="display: none; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPAdpRdpCTZmjjQYh9fIQ_lCCC5MWogtqHfRD8cOkySYafO1QVHn3s0-rzQFX7XBGAxBa9PatnEgXdKL5HCXiRi536koSv4M-PNILQJpOs8nlz-T2Pk7elLZ8MbSn4EHByI39lzgATAI0/s1600/bahanThumbnailYoutube.jpg" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/MRjv-ue73Dw/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/MRjv-ue73Dw?feature=player_embedded" width="320"></iframe></div>
<br />
Pubspec adalah file tempat kita menulis asset-asset apa saja dan dependencies apa saja yang digunakan di dalam project. Pada pembahasan kali ini, kita akan belajar bagaimana cara mengimport gambar dan dependencies ke dalam project.<br />
<br />
<b>Bagian 1 : Mengimport Gambar </b><br />
<br />
Pertama, buka file pubspec.yaml, kemudian perhatikan gambar di bawah ini<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhen5Gp41zm7OSPBgk1Bw_jMLJfV3NTLRHuDDwTMKYDs1XgEbhMsEy2rZfpxjijpU3DC19Yea_vdyZs33eVRt6ce2mO4X0BaFJpVEEEUQzDdjGLHplaFXGBGi01F5NekNeHHQ-MmxnpR1g/s1600/vlcsnap-2020-05-03-10h59m35s915.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="476" data-original-width="1089" height="279" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhen5Gp41zm7OSPBgk1Bw_jMLJfV3NTLRHuDDwTMKYDs1XgEbhMsEy2rZfpxjijpU3DC19Yea_vdyZs33eVRt6ce2mO4X0BaFJpVEEEUQzDdjGLHplaFXGBGi01F5NekNeHHQ-MmxnpR1g/s640/vlcsnap-2020-05-03-10h59m35s915.png" width="640" /></a></div>
<br />
Siapkan file gambar bernama kopiLaptop.jpg kemudian tempatkan file tersebut ke dalam folder assets/img lalu tuliskan alamat yang sama pada file pubspec.yaml dibawah tulisan assets, untuk panduannya silahkan lihat lingkaran-lingkaran merah pada gambar di atas.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNcKifhyphenhyphenx8FEI2r1lqa4yv8XSoyR-mye2CEniJG3g37lT9dnrRaylM9vtxEQbmFntcjEEMfIKNvLrFunS9gSAb2E4iHEhXPom8PzMjD5Gq_g3vdgQm899hARErc8iQKh226JBQccI8fkA/s1600/vlcsnap-2020-05-03-11h23m20s903.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1324" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNcKifhyphenhyphenx8FEI2r1lqa4yv8XSoyR-mye2CEniJG3g37lT9dnrRaylM9vtxEQbmFntcjEEMfIKNvLrFunS9gSAb2E4iHEhXPom8PzMjD5Gq_g3vdgQm899hARErc8iQKh226JBQccI8fkA/s640/vlcsnap-2020-05-03-11h23m20s903.png" width="640" /></a></div>
<br />
<br />
Jika sudah, tekan ctrl+S lalu virtual studio secara otomatis akan melakukan pub get secara otomatis untuk mendownload dan mengatur file-file yang diperlukan yang ditulis di pubspec.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu4FLbDSmAvaV7VEl_6X9sLp4HGH4khIaq2YYjt8jUo4Bnf6lUNET288ygAp_6QEdJRYFasQIJ8M9QtrQ74Wofr4kZlx165cdzCglsOxCxIyLaOpamjDjVYonl_9pkLtMkES-m7dhO7zE/s1600/cvbcvvb.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="150" data-original-width="402" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu4FLbDSmAvaV7VEl_6X9sLp4HGH4khIaq2YYjt8jUo4Bnf6lUNET288ygAp_6QEdJRYFasQIJ8M9QtrQ74Wofr4kZlx165cdzCglsOxCxIyLaOpamjDjVYonl_9pkLtMkES-m7dhO7zE/s640/cvbcvvb.JPG" width="640" /></a></div>
<br />
<br />
Setelah pub get selesai dijalankan, lakukan build ulang file apk bundle kemudian pasang ke genymotion, karena setiap kali kita melakukan perubahan pada file pubspec maka diperlukan build ulang agar hasil perubahannya bisa dilihat di emulator.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEWuAEbrCdWYLrjUOrnVPDjsvLtyi0lk39sR7cfBZD7oa9lQTJkWu0xObbvyiIcmbFHPZ9AM9OA1bwKwZ07CibbaSzW121nyHANn9XZKrqht64rOGOIeLm-AGd_1fWgblD_GppTW_gQWM/s1600/vlcsnap-2020-05-03-20h32m35s683.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1324" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEWuAEbrCdWYLrjUOrnVPDjsvLtyi0lk39sR7cfBZD7oa9lQTJkWu0xObbvyiIcmbFHPZ9AM9OA1bwKwZ07CibbaSzW121nyHANn9XZKrqht64rOGOIeLm-AGd_1fWgblD_GppTW_gQWM/s640/vlcsnap-2020-05-03-20h32m35s683.png" width="640" /></a></div>
<br />
<br />
Setelah mempersiapkan pubspec, buka file main.dart lalu tambahkan skrip untuk widget Image, silahkan lihat pada gambar di bawah ini<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl4pPXMCjMjQ9X4Fm3g3Hvgrl9AuFXT6pmQ6IjJlA1Gq6lIQuj0N2nEQJB4zEIXl0W_bbIxj5KqwBQ-NVjrGlRaa148mbGxCSUh8_uZhVXPpBYiwGichojPdWOEB-ktmxGiDB3I9mZCg4/s1600/vlcsnap-2020-05-03-20h33m23s973.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1324" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl4pPXMCjMjQ9X4Fm3g3Hvgrl9AuFXT6pmQ6IjJlA1Gq6lIQuj0N2nEQJB4zEIXl0W_bbIxj5KqwBQ-NVjrGlRaa148mbGxCSUh8_uZhVXPpBYiwGichojPdWOEB-ktmxGiDB3I9mZCg4/s640/vlcsnap-2020-05-03-20h33m23s973.png" width="640" /></a></div>
<br />
Pastikan tulisan assets/img/kopiLaptop.jpg sesuai dengan nama file yang Anda miliki dan lokasi tempat penyimpanannya silahkan disesuaikan<br />
<br />
Jika sudah, lakukan flutter Attach dan seperti biasa pastikan muncul tulisan syncing filesnya, jika tidak maka harus melakukan flutter Attach dari awal<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfdmlEqEYRjYgbqqfn9fO_R4SH1auJFmqfh8xKr65EmRDXjjON8yVJv6AM2Jv-WlLic0QsIe0NrqeMCzB7_7-q-HutvkDHdYH9MGgttcac_E5YLG5DsCiHS3T7kFyQIUzOmnXET37akn8/s1600/vlcsnap-2020-05-03-20h35m56s777.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1324" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfdmlEqEYRjYgbqqfn9fO_R4SH1auJFmqfh8xKr65EmRDXjjON8yVJv6AM2Jv-WlLic0QsIe0NrqeMCzB7_7-q-HutvkDHdYH9MGgttcac_E5YLG5DsCiHS3T7kFyQIUzOmnXET37akn8/s640/vlcsnap-2020-05-03-20h35m56s777.png" width="640" /></a></div>
<br />
Begitu selesai syncingnya, seperti biasa akan muncul panduan hot reload, r untuk hot reload dan R untuk hot restart. Pada awal dijalankan, Anda masih melihat tampilan yang lama bekas pelajaran dari bab sebelumnya, tekan R untuk hot restart, kemudian Anda akan melihat gambar pada aplikasi yang sedang dijalankan<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8Yopf4b_Ua-DWgxw-xYqQJf2jagLow9B3jgR_Ysd7XC8U6i5MWm4CYbWbYBHmh6l4L0jMzr19AyHWhCwe03ZuMxxNxgDkc5o_8SYzlNQ8BQFv53McZg2B2gP5xcotoHyUuj7ocqKHJnM/s1600/vlcsnap-2020-05-03-22h17m18s139.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1324" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8Yopf4b_Ua-DWgxw-xYqQJf2jagLow9B3jgR_Ysd7XC8U6i5MWm4CYbWbYBHmh6l4L0jMzr19AyHWhCwe03ZuMxxNxgDkc5o_8SYzlNQ8BQFv53McZg2B2gP5xcotoHyUuj7ocqKHJnM/s640/vlcsnap-2020-05-03-22h17m18s139.png" width="640" /></a></div>
<br />
<br />
Jika Anda belum berhasil, ada banyak faktor, salah satunya kesalahan menulis nama file, jangan gunakan underscore atau tanda unik lainnya, gunakan saja karakter biasa (a-z), silahkan diperiksa lagi dimana kesalahannya.<br />
<b><br />
</b> <b>Bagian 2 : Mengimport Dependencies</b><br />
<br />
Dependencies adalah program-program kecil dengan fungsi beraneka ragam, baik itu berhubungan dengan koneksi internet, membaca GPS, membaca file, User Interface dan lain-lain, yang bisa diimport ke project Flutter, gunanya untuk menghemat waktu agar kita tidak perlu membuat program-program mini dari awal. Pada contoh artikel ini kita akan belajar cara mengimport dependency yang berhubungan dengan CSS.<br />
<br />
Pertama, kunjungi situs dibawah ini<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgStA7QuD70P5p_SMJtcw3e3TNsLZKL_gWJQqpZmE3RVeaYnoiOMoLi2KQ4gFhal5bNUKhoKSIDXpJERnbAgt2YIJP1mw40VHGUsv7JXArjD45wKy8Dzuo6s5USCGnW9r3_3Ls8WFA0ig4/s1600/vlcsnap-2020-05-04-18h45m06s098.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1324" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgStA7QuD70P5p_SMJtcw3e3TNsLZKL_gWJQqpZmE3RVeaYnoiOMoLi2KQ4gFhal5bNUKhoKSIDXpJERnbAgt2YIJP1mw40VHGUsv7JXArjD45wKy8Dzuo6s5USCGnW9r3_3Ls8WFA0ig4/s640/vlcsnap-2020-05-04-18h45m06s098.png" width="640" /></a></div>
<br />
Di situs pub dev ini ada tiga tab, tab Readme untuk melihat informasi tentang dependencies, tab Installing untuk melihat cara installnya dan tab Versions untuk melihat daftar versi yang ada. Klik tab installing lalu copy sesuai gambar dibawah ini<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2N7s01qzwXTZxNdKEQG7LOd6OvUApeqwfyLYu5Od_H3-UQOx0m9pkeCu8NbRkAOIKaN14kz-YWqk1RYHs6mWs9ajteZHdgFYXocNLDqeKhfwjBamOHLKkKxn-FZT5QZcnq5l-5l1vRo8/s1600/vlcsnap-2020-05-04-18h46m53s116.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1324" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2N7s01qzwXTZxNdKEQG7LOd6OvUApeqwfyLYu5Od_H3-UQOx0m9pkeCu8NbRkAOIKaN14kz-YWqk1RYHs6mWs9ajteZHdgFYXocNLDqeKhfwjBamOHLKkKxn-FZT5QZcnq5l-5l1vRo8/s640/vlcsnap-2020-05-04-18h46m53s116.png" width="640" /></a></div>
<br />
Kemudian salin ke file pubspec.yaml dibawah dependencies<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyAr8Rp9X7xrXe7oD0RO2kTkyv-r9YNT_hlXA8B3rabo0RMGnxtliPgNWkFg5QJ94WKtP4rxhviRCfur-Lh07nxsH57IuCxUiMBSXGs1WG3Lx5uh5HH4-ZzeahGnCCW-Bl_DjbF6asxQA/s1600/vlcsnap-2020-05-04-18h47m20s955.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1324" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyAr8Rp9X7xrXe7oD0RO2kTkyv-r9YNT_hlXA8B3rabo0RMGnxtliPgNWkFg5QJ94WKtP4rxhviRCfur-Lh07nxsH57IuCxUiMBSXGs1WG3Lx5uh5HH4-ZzeahGnCCW-Bl_DjbF6asxQA/s640/vlcsnap-2020-05-04-18h47m20s955.png" width="640" /></a></div>
<br />
Kemudian tekan Ctrl+S maka Visual Studio Code akan secara otomatis mengeksekusi pub get, Anda bisa melihatnya di kanan bawah editor<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj41dXXQRs6uocwO9ceJVOqi6RorwvGZ-h5E-0qJ0ZVu4Ycv8n6s32A-Ghw7nPCvl23GUQRgnRMoLeLz7vm-YFooR6CL03GVdcgJfUtfXvwcu7IDGKW3tiLnmRPzvIPaP_NSuqQ4PuaKo/s1600/vlcsnap-2020-05-04-18h48m58s666.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1324" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj41dXXQRs6uocwO9ceJVOqi6RorwvGZ-h5E-0qJ0ZVu4Ycv8n6s32A-Ghw7nPCvl23GUQRgnRMoLeLz7vm-YFooR6CL03GVdcgJfUtfXvwcu7IDGKW3tiLnmRPzvIPaP_NSuqQ4PuaKo/s640/vlcsnap-2020-05-04-18h48m58s666.png" width="640" /></a></div>
<br />
Itu lah cara mengimport gambar dan dependencies, insya Allah kita akan bertemu dengan dua teknik ini lebih sering pada bab-bab sebelumnya, semoga bermanfaat<br />
<br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-38552891637554848392020-04-23T14:04:00.001+07:002020-05-03T11:28:32.614+07:00Ngopi Ngoding Ngoprek Flutter Bagian 5 : Statefull Widget vs Stateless Widget<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_GT8V_amxN8l0z72203DwSb3V3k61hyZOwGmHI1EhTzM_zXDIgn8nIibclf9Snjw1oNPZO0NtuVXYxqI1_1cxsdgsHBF4Yf1wYVsLEtSQ3vsDPMROSoasDhWSwYjGUZFGVQ0Wb8q9u8A/s1600/thumbnailArtikel.jpg" imageanchor="1" style="display: none; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_GT8V_amxN8l0z72203DwSb3V3k61hyZOwGmHI1EhTzM_zXDIgn8nIibclf9Snjw1oNPZO0NtuVXYxqI1_1cxsdgsHBF4Yf1wYVsLEtSQ3vsDPMROSoasDhWSwYjGUZFGVQ0Wb8q9u8A/s1600/thumbnailArtikel.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/uKzQHT8zwlc/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/uKzQHT8zwlc?feature=player_embedded" width="320"></iframe></div>
<br />
Bismillah, alhamdulilah kita sudah sampai pada pembahasan perbedaan statefull widget dan stateless widget, berikut gambar yang menjelaskan perbedaan keduanya<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKu6scjZkeevfSQdR_bGzer0416slquDM0MsNUTKh0F-aR9Z11LSX6_VX5sVsJ3tN_uqTjlvCHH5BgTq5JQeTb42xpjEhCndOx544l5Uv8YFCraKZIm_6Hn5REujrMuxYqCDHhJe8sJBg/s1600/cvvbcvbcvb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="705" data-original-width="1177" height="382" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKu6scjZkeevfSQdR_bGzer0416slquDM0MsNUTKh0F-aR9Z11LSX6_VX5sVsJ3tN_uqTjlvCHH5BgTq5JQeTb42xpjEhCndOx544l5Uv8YFCraKZIm_6Hn5REujrMuxYqCDHhJe8sJBg/s640/cvvbcvbcvb.png" width="640" /></a></div>
Pada stateless widget, datanya disiapkan sebelum widget dibuat, misal, kita membuat stateleess widget yang menampilkan nilai dari integer, maka nilai integer itu harus disisipkan melalui parameter, dan nilai integer ini tidak bisa dirubah dari dalam widget tersebut, tapi kita bisa merubah nilai integernya melalui statefull widget, dan nilai yang berubah ini bisa digunakan untuk membentuk widget baru.<br />
<br />
Stateless widget digunakan untuk menampilkan data yang tidak bisa dirubah oleh User secara mandiri seperti icon, image, button ataupun Text <br />
<br />
Berbeda dengan stateless widget, statefull widget bisa melakukan pengolahan data secara mandiri tanpa ketergantungan, dan hasil pengolahan ini bisa ditampilkan secara mandiri ataupun melalui stateless widget yang dipanggil melalui statefull widget.<br />
<br />
Statefull widget digunakan untuk menampilkan data yang bisa dirubah oleh User secara langsung seperti checkbox, radio dan textfield.<br />
<br />
Untuk memulai praktik, seperti biasa, nyalakan Android Studio dan Genymotion kemudian buka file sebelumnya melalui Visual Studio, dan lakukan flutter attach, silahkan melihat <a href="https://bahaskomputer.blogspot.com/2020/04/ngopi-ngoding-ngoprek-flutter-bagian-4.html">pelajaran sebelumnya</a> jika lupa<br />
<br />
Jika diperhatikan gambar dibawah ini, angka 15 berasal dari variabel _counter yang terus ditambahkan melalui fungsi _increment_counter<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp_pxA2ZEDV9caYF5olTlyXamcWiLoTerFzdTin4JhWgwnnlXaBBf1FVTcdf27ZhfJ2oh5p7xidp7_DIIj-FuK9AyGtN6ETqpyo8g0W6GIdrrGXZZ92IDxg4QtgIilh0NzoF7cBUH_6oI/s1600/asdasd.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="924" data-original-width="1305" height="451" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp_pxA2ZEDV9caYF5olTlyXamcWiLoTerFzdTin4JhWgwnnlXaBBf1FVTcdf27ZhfJ2oh5p7xidp7_DIIj-FuK9AyGtN6ETqpyo8g0W6GIdrrGXZZ92IDxg4QtgIilh0NzoF7cBUH_6oI/s640/asdasd.JPG" width="640" /></a></div>
<br />
Scroll Visual Studio untuk mencari void_incrementCounter<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcHps9W16NW0AOYaoM3_1iNajdTlIwLLzUK4BcGmqRa7u2JEOctxcA31xRUpPNB-RGhITSo6DdTy3ZMnfMGc9q0nH7gjPMNEhHj2opkpwelMcnOXeW8Hz7xrY0pWhBHNHhHMmgVhbtCRU/s1600/vbvb.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="197" data-original-width="596" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcHps9W16NW0AOYaoM3_1iNajdTlIwLLzUK4BcGmqRa7u2JEOctxcA31xRUpPNB-RGhITSo6DdTy3ZMnfMGc9q0nH7gjPMNEhHj2opkpwelMcnOXeW8Hz7xrY0pWhBHNHhHMmgVhbtCRU/s640/vbvb.JPG" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Perhatikan gambar diatas, setState berfungsi untuk menggambar ulang statefull widget, maka ketika function _incrementCounter dipanggil, nilai _counter ditambah satu dan tampilan digambar ulang<br />
<b><br />
</b> <b>Menggunakan widget bikinan sendiri</b><br />
<br />
Silahkan tulis skrip seperti di bawah ini<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy3kE_j4YpILqtuRqsDZxvll5r8NQvQC4OO93UEwCM2Z-rO1lUse2CKnXG-b4MhB73nzrDy8VqhKRQbwmlTrfGf8DKKHrSFtJDwBzjq5dw1uRtF8oARcr7jniwyrLkVIaiCNfIwU-he44/s1600/mbnbn.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="516" data-original-width="435" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy3kE_j4YpILqtuRqsDZxvll5r8NQvQC4OO93UEwCM2Z-rO1lUse2CKnXG-b4MhB73nzrDy8VqhKRQbwmlTrfGf8DKKHrSFtJDwBzjq5dw1uRtF8oARcr7jniwyrLkVIaiCNfIwU-he44/s640/mbnbn.JPG" width="538" /> </a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Kemudian ketik skrip berikut di bawah elemen Text<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNOGXz8ZPV_H1cn8z8xucee7BHjgHm96MHC-gr9RWhbPrpnrFmfNjkDmy_LWBWTez7nIQEWglIgkIOELIK338T0NtRjTyWKeu1hZv2afsnB6NpsS_oqyw9GZHZ2LhQJwMznuCrMOeosFQ/s1600/cvbvbb.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="148" data-original-width="385" height="123" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNOGXz8ZPV_H1cn8z8xucee7BHjgHm96MHC-gr9RWhbPrpnrFmfNjkDmy_LWBWTez7nIQEWglIgkIOELIK338T0NtRjTyWKeu1hZv2afsnB6NpsS_oqyw9GZHZ2LhQJwMznuCrMOeosFQ/s320/cvbvbb.JPG" width="320" /></a></div>
<br />
Pada skrip di atas kita memberikan parameter jumlah dengan variabel _counter dan parameter key dengan variabel widget.key, apa itu key? insya Allah akan kita bahas di pertemuan lain. Widget jumlahPencetan bertipe stateless, sehingga datanya harus disiapkan dulu, yaitu data jumlahnya berasal dari variabel _counter, maka saat program dijalankan, widget jumlahPencetan menampilkan data jumlah, yang nilainya sama dengan nilai variabel _counter. Berikut tampilan aplikasi ketika dijalankan<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1wlF94XR7tMSoAytf1oKH1XSBSiI6CiPrXtzMfHwcbmzn9PrJgwnH1mCUjAFv2pViOl0TdiNet2ek8nl0omghoMdK8JG3rIZU4ESz-PnheZw4mMEs3O2kg6VMPAOL1Ukwkeig9CDXHK4/s1600/xcvxcvxcv.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="934" data-original-width="566" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1wlF94XR7tMSoAytf1oKH1XSBSiI6CiPrXtzMfHwcbmzn9PrJgwnH1mCUjAFv2pViOl0TdiNet2ek8nl0omghoMdK8JG3rIZU4ESz-PnheZw4mMEs3O2kg6VMPAOL1Ukwkeig9CDXHK4/s320/xcvxcvxcv.JPG" width="193" /></a></div>
<br />
<br />
<br />
<br />
Pada pelajaran berikutnya insyaAllah kita akan sering berjumpa dengan stateless dan statefull, sekian dan semoga bermanfaat<br />
<br />
<br />
<br />
<br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-55833798220609947582020-04-20T09:16:00.006+07:002020-05-03T11:28:40.961+07:00Ngopi Ngoding Ngoprek Flutter Bagian 4 : Hot Reload<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUtauJVALGLYCye5OJDkTBlmwJno801CwRt28fpQVSqS7VlHseQgp85UvpGNGMUPDLjV3WZPMkJC1NzjAtO8jHWZ9I-WcW3aFeTnT5RCe61sjXSzb0kkwEug8bztUstEI1uq7YKcPAnp0/s1600/thumbnailArtikel.jpg" imageanchor="1" style="display: none; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUtauJVALGLYCye5OJDkTBlmwJno801CwRt28fpQVSqS7VlHseQgp85UvpGNGMUPDLjV3WZPMkJC1NzjAtO8jHWZ9I-WcW3aFeTnT5RCe61sjXSzb0kkwEug8bztUstEI1uq7YKcPAnp0/s1600/thumbnailArtikel.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/tbe2exsFmQg/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/tbe2exsFmQg?feature=player_embedded" width="320"></iframe></div>
<br />
Hot Reload di Flutter artinya adalah merubah tampilan aplikasi saat sedang dijalankan, sehingga tidak perlu membuild dan menginstall ulang aplikasi setiap ingin melihat perubahan pada hasil kodingan, sehingga developing aplikasi bisa cepat selesai.<br />
<br />
Pertama, buka Android Studio, kemudian buka folder android yang berada di dalam folder project fulter yang sedang Anda kerjakan, lalu jalankan emulator genymotion melalui Android Studio, silahkan <a href="https://bahaskomputer.blogspot.com/2020/04/ngopi-ngoding-ngoprek-flutter-bagian-3.html">lihat pembahasan sebelumnya</a> jika Anda lupa, jika sudah, buka Visual Studio<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXZ3xY29WpygO_wDGndsF7IPIe-xDV0DsCXhbGvgT24bQKGt5ilLedx-3V2bJMMm0ng1A31vGAllxS5K4l6kjNk5MfD8BvTAVF0QzBRJpqF5IwJ4oE0n6ZRcCqHqM-68U-Q1LI7OlxZkk/s1600/vlcsnap-2020-04-20-08h04m20s255.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXZ3xY29WpygO_wDGndsF7IPIe-xDV0DsCXhbGvgT24bQKGt5ilLedx-3V2bJMMm0ng1A31vGAllxS5K4l6kjNk5MfD8BvTAVF0QzBRJpqF5IwJ4oE0n6ZRcCqHqM-68U-Q1LI7OlxZkk/s640/vlcsnap-2020-04-20-08h04m20s255.png" width="640" /></a></div>
<br />
Buka folder project flutter<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlyu488BV5LtHKoYAvPVuKFVUEhFVHIBRVKJ6miv_Q1ab9Y2qApKk954rrjTDrTexMaWMpGOwnocmoQ44RVihU8aGoj9nZ4ezmQ-GEo1IN7j0VQguaODn4KKVZbMi3LRHDuQ8oYqWTwTI/s1600/vlcsnap-2020-04-20-08h06m58s191.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlyu488BV5LtHKoYAvPVuKFVUEhFVHIBRVKJ6miv_Q1ab9Y2qApKk954rrjTDrTexMaWMpGOwnocmoQ44RVihU8aGoj9nZ4ezmQ-GEo1IN7j0VQguaODn4KKVZbMi3LRHDuQ8oYqWTwTI/s640/vlcsnap-2020-04-20-08h06m58s191.png" width="640" /></a></div>
<br />
Klik Terminal > New Terminal di toolbar<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKvs8axcNOv1VRvpNqwiby9y2UaxDTsctxZaqpk00Iwo6nd9BJuRI-icKnfG9V42aJMkl3bA3XST59Qy20iRFdf8BhpbG_70qdB2Va-FMc2Rqtqlj2sM5ouwIZ_Rh1W53ov4SZz_uByr4/s1600/vlcsnap-2020-04-20-08h12m27s170.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKvs8axcNOv1VRvpNqwiby9y2UaxDTsctxZaqpk00Iwo6nd9BJuRI-icKnfG9V42aJMkl3bA3XST59Qy20iRFdf8BhpbG_70qdB2Va-FMc2Rqtqlj2sM5ouwIZ_Rh1W53ov4SZz_uByr4/s640/vlcsnap-2020-04-20-08h12m27s170.png" width="640" /></a></div>
<br />
Pada terminal yang terbuka, ketik Flutter Devices, jika muncul tulisan connected device maka flutter Anda sudah terkoneksi ke emulator yang sudah dijalankan, jika belum, maka ulangi lagi dari langkah sebelumnya, dan terkadang Anda akan mendapati terminalnya tidak mengeluarkan balikan apapun, jika itu terjadi maka, jika Anda menggunakan Windows, tekan Ctrl+C lalu tekan Y untuk keluar dari proses yang sedang berjalan lalu ulangi mengetik Flutter Devices, lakukan hal yang sama pada perintah lain di lain waktu jika Anda menemukan kendala serupa.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqDWFfLD1mCQHR9sWAPJw7ly1hBzE2ZZih9LAQvJbL6u0annWQJxILPVlNhOVRxbFNybBRkJ9r_85IdN3O5nzfMeY-WqYolbUlqAlJZjEbCY4X0ERlXo3mUs7cCq6PmG7L-_7XQh2y5FQ/s1600/Capture4546463.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="158" data-original-width="530" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqDWFfLD1mCQHR9sWAPJw7ly1hBzE2ZZih9LAQvJbL6u0annWQJxILPVlNhOVRxbFNybBRkJ9r_85IdN3O5nzfMeY-WqYolbUlqAlJZjEbCY4X0ERlXo3mUs7cCq6PmG7L-_7XQh2y5FQ/s640/Capture4546463.JPG" width="640" /></a></div>
<br />
Kemudian ketik flutter attach, tunggu hingga tulisan waiting muncul<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzZ2MMngQihPYR3i7JuP9gH98yT9MTmMfqd-Fbv8JTO98j_uAGXnHJeEWtLmhctTW49Jm9uqdgxfN2EdPHG6_hdEkcNCY4JmyEZw2cFe5rmdxkub14V52YN5dHOxYVFp9qqtVQGs3j5js/s1600/wewe.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="52" data-original-width="456" height="72" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzZ2MMngQihPYR3i7JuP9gH98yT9MTmMfqd-Fbv8JTO98j_uAGXnHJeEWtLmhctTW49Jm9uqdgxfN2EdPHG6_hdEkcNCY4JmyEZw2cFe5rmdxkub14V52YN5dHOxYVFp9qqtVQGs3j5js/s640/wewe.JPG" width="640" /></a></div>
<br />
Kemudian jalankan aplikasi di emulator, perhatikan apakah terminal memunculkan tulisan synching<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj0QJ6avityCEUlbE9RZ7R5SgvPJzZKsQ6kgQ4idgfOBtu1ry0QpLHMeB7jr-FQQOfwJa83zOo7Yq5C_H3jOnnsrKSa5y0oM5Jb1WoHzHuP3pHie_zYZ6ZQbVompcYfRSfgfrMYP5DKFM/s1600/aaa.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="51" data-original-width="438" height="74" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj0QJ6avityCEUlbE9RZ7R5SgvPJzZKsQ6kgQ4idgfOBtu1ry0QpLHMeB7jr-FQQOfwJa83zOo7Yq5C_H3jOnnsrKSa5y0oM5Jb1WoHzHuP3pHie_zYZ6ZQbVompcYfRSfgfrMYP5DKFM/s640/aaa.JPG" width="640" /></a></div>
<br />
Jika tulisan synching belum muncul2, close aplikasi di emulator kemudian jalankan ulang flutter attach, terus lakukan hingga tulisan synching muncul. Kemudian akan muncul tulisan bagaimana cara melakukan hot reload<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJrbw9AQ7BBMPlcwKWF_EQ1rKdbjFv6LXl9IpFg5rHqqVtfR2qGWkoA4xAerjzJlYQ-vKo9dyA0HPP2OLWwWkxHLzsZZ8XnJAF2p9XF1ikjDJVyNg9xj8pWnxsAFxxFwRcsKsp1o981XA/s1600/aafdf.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="96" data-original-width="655" height="92" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJrbw9AQ7BBMPlcwKWF_EQ1rKdbjFv6LXl9IpFg5rHqqVtfR2qGWkoA4xAerjzJlYQ-vKo9dyA0HPP2OLWwWkxHLzsZZ8XnJAF2p9XF1ikjDJVyNg9xj8pWnxsAFxxFwRcsKsp1o981XA/s640/aafdf.JPG" width="640" /></a></div>
<br />
Pada tulisan diatas dapat disimpulkan bahwa kita bisa menekan tombol r kecil untuk melakukan hot reload(reload page/halaman aplikasi yang sedang dibuka) atau hot restart(memulai ulang aplikasi), pada artikel ini kita akan menggunakan hot reload. Kembali ke Visual Studio Code kemudian lakukan perubahan pada file lib/main.dart, contohnya pada aplikasi ini kita akan merubah tulisan inggris ke indonesia.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHEZfGijsJqS_XDOPSmJ6k31oRHTUkJIgypXH5jfKRifWNpqIjf1xlsdb30W_VQpTYYBIlvkxA3nU6Ar_GDAPWJRL1Wka6uFY85DDDXGRyhsq7o1Qq6DzyvE3ctgjbCYf49r_EPOb4JUo/s1600/xcvcv.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="193" data-original-width="778" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHEZfGijsJqS_XDOPSmJ6k31oRHTUkJIgypXH5jfKRifWNpqIjf1xlsdb30W_VQpTYYBIlvkxA3nU6Ar_GDAPWJRL1Wka6uFY85DDDXGRyhsq7o1Qq6DzyvE3ctgjbCYf49r_EPOb4JUo/s640/xcvcv.JPG" width="640" /></a></div>
<br />
Rubah skrip pada baris dan file diatas sesuai keinginan Anda, kemudian tekan r kecil pada terminal, maka tampilan aplikasi yang dijalankan di emulator akan berubah<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBN_iXaKx2BKhFMX8d1Jrd1k4CVeQQAKyoJjTkQgYg-n3grwExn6jYqOGOA4WG7KcND4mc_DCgMQE1B6t0yUDg_wIhQ_JH9G_a9emEh-tE1gIArWC6qMDQ-Juv2BkrSwRE0Br92YkBaQk/s1600/vlcsnap-2020-04-20-08h54m00s25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBN_iXaKx2BKhFMX8d1Jrd1k4CVeQQAKyoJjTkQgYg-n3grwExn6jYqOGOA4WG7KcND4mc_DCgMQE1B6t0yUDg_wIhQ_JH9G_a9emEh-tE1gIArWC6qMDQ-Juv2BkrSwRE0Br92YkBaQk/s640/vlcsnap-2020-04-20-08h54m00s25.png" width="640" /></a></div>
<br />
Anda bisa melakukan hot reload pada semua elemen, bukan hanya text, tapi juga bisa gambar, text area, field, tombol dan lain-lain. Kita akan banyak memakai reload pada pelajaran-pelajaran berikutnya<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-81542058491034927092020-04-19T14:14:00.001+07:002020-05-03T11:28:48.712+07:00Video Persiapan Belajar Flutter : Software yang dibutuhkan<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijtpIMFnwnFF4QJLVpseZNhRGZSymRiuJaejnzMLzGTZMSuY0u7p99aDC01hf298a1eEzleaPcmEs2tCgnm66M3QTW9ezJdR-AjsPKsEjtvl6_fgw0FciwphR6H2P4iaXaLo2zhDrwf_I/s1600/bahanThumbnailYoutube.jpg" imageanchor="1" style="display: none; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijtpIMFnwnFF4QJLVpseZNhRGZSymRiuJaejnzMLzGTZMSuY0u7p99aDC01hf298a1eEzleaPcmEs2tCgnm66M3QTW9ezJdR-AjsPKsEjtvl6_fgw0FciwphR6H2P4iaXaLo2zhDrwf_I/s1600/bahanThumbnailYoutube.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span id="goog_341282805"></span><span id="goog_341282806"></span><iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/QQmmQrpJBNI/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/QQmmQrpJBNI?feature=player_embedded" width="320"></iframe></div>
<br />
<span class="style-scope yt-formatted-string" dir="auto">Sebelum mulai mempelajari flutter, selain membutuhkan flutter SDK, ada 4 software yang harus diinstall yaitu </span><br />
<span class="style-scope yt-formatted-string" dir="auto">- Android Studio </span><br />
<span class="style-scope yt-formatted-string" dir="auto">- Genymotion </span><br />
<span class="style-scope yt-formatted-string" dir="auto">- Git </span><br />
<span class="style-scope yt-formatted-string" dir="auto">- Visual Studio Code </span><br />
<br />
<span class="style-scope yt-formatted-string" dir="auto">Untuk mempelajari cara menginstall masing-masing software silahkan menyimak video berikut</span>Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-24227093588005913662020-04-13T18:55:00.001+07:002020-05-03T11:28:58.803+07:00Ngopi Ngoding Ngoprek Flutter Bagian 3 : Build APK Debug<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmCq_bXstUcIcNwn1c6IuDaEjgLIMNn7E0R2YymwJJjHEkITL-kB8lUQy10cW4diEGFuKWNwX_hEz1jt-eIZsgs6mSfoyS10motF1T_40Ceotu7qYZKZWnGLBnGCRClN2mdkvldg0OUIk/s1600/thumbnailArtikel.jpg" imageanchor="1" style="display: none; margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="397" data-original-width="585" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmCq_bXstUcIcNwn1c6IuDaEjgLIMNn7E0R2YymwJJjHEkITL-kB8lUQy10cW4diEGFuKWNwX_hEz1jt-eIZsgs6mSfoyS10motF1T_40Ceotu7qYZKZWnGLBnGCRClN2mdkvldg0OUIk/s1600/thumbnailArtikel.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/IixjFV1EKPs/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/IixjFV1EKPs?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
Cara yang umumnya digunakan dalam debugging di Android Studio adalah dengan mengklik tombol play di toolbar, tapi untuk pembuatan aplikasi dengan flutter, menekan tombol play akan membuat waktu build sangat lama bahkan stuck(tidak ada proses), maka solusinya adalah dengan membuat apk build yang kemudian dijalankan di emulator, kemudian gunakan fitur flutter attach dan hot reload, bagaimana maksudnya? Pada artikel kali ini akan saya bahas cara membuat file apk debug di Android Studio.<br />
<br />
Buka folder android yang berada di dalam folder project fulter yang sedang Anda kerjakan<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIYlfGFYfoI9iDQVXf53jijGExGZRpnAi45jbQNlBb40Uy7OCygmFjBxa4XPuwgGUrutCwTX9Of0HiwlICNU4rIyzpAP2xp7JogiD6dOV-5PcnHMaBwhUMiPBvvptntC8p10qOm5M0J7Y/s1600/vlcsnap-2020-04-13-18h42m51s202.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIYlfGFYfoI9iDQVXf53jijGExGZRpnAi45jbQNlBb40Uy7OCygmFjBxa4XPuwgGUrutCwTX9Of0HiwlICNU4rIyzpAP2xp7JogiD6dOV-5PcnHMaBwhUMiPBvvptntC8p10qOm5M0J7Y/s320/vlcsnap-2020-04-13-18h42m51s202.png" width="320" /></a></div>
<br />
klik tombol OK kemudian window baru akan terbuka sesuai pilihan Anda (this window atau new window). Setelah window baru muncul, tunggu hingga proses gradle selesai, proses gradle dapat dilihat di bagian bawah editor, setelah proses gradle selesai, maka tombol Build Bundle dibawah menu Build akan muncul, klik tombol tersebut kemudian pilih Build APK(s)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7Lw4WtkPmFCqdlZdTuxg9AYsXDIgBOI7fNmltWbGqObm-MEopp7EXz8AwLVR73JWyMJwcgZcJYdYEqsXXIRUPndK-DvuINdgRZ9ThSKH7W9Y-gn-QtJtp8Ui4KwQqVxNxtqwqlvI7UFs/s1600/vlcsnap-2020-04-13-18h46m22s119.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7Lw4WtkPmFCqdlZdTuxg9AYsXDIgBOI7fNmltWbGqObm-MEopp7EXz8AwLVR73JWyMJwcgZcJYdYEqsXXIRUPndK-DvuINdgRZ9ThSKH7W9Y-gn-QtJtp8Ui4KwQqVxNxtqwqlvI7UFs/s320/vlcsnap-2020-04-13-18h46m22s119.png" width="320" /></a></div>
<br />
Tunggu hingga proses build selesai, kemudian akan muincul pemberitahuan di bagian bawah editor, Anda bisa melihat dua link yakni link locate dan link analyze<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizn9x8bN9nvcLZ_Ox6fBxjTXcslWx_9zR4_eHBI3DFqD2ymRaLnqkad8pWykjRDAHLQLZQuwU9AUXEz45cGvaduJBpSOpab2_IxJSF0SJcooEM5n6MFAI3qQfrdgRPt81r3spLf5TtlTI/s1600/vlcsnap-2020-04-13-18h47m15s88.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizn9x8bN9nvcLZ_Ox6fBxjTXcslWx_9zR4_eHBI3DFqD2ymRaLnqkad8pWykjRDAHLQLZQuwU9AUXEz45cGvaduJBpSOpab2_IxJSF0SJcooEM5n6MFAI3qQfrdgRPt81r3spLf5TtlTI/s320/vlcsnap-2020-04-13-18h47m15s88.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
Klik link locate maka akan muncul Window File Explorer tempat file apk debug berada<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6y2vdJlEjlEUlx4f72GohoEYhQJqObn-uN9INA7W6LwvsdrrsyjwnAEpkI6OIssCDGWCGw8PT5kWzeACRhUZbrHk-himIbS9DR0x48QiwAxMChmJxvjtUO97p88lsfbwwvryJ56ljCRA/s1600/vlcsnap-2020-04-13-18h48m43s200.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6y2vdJlEjlEUlx4f72GohoEYhQJqObn-uN9INA7W6LwvsdrrsyjwnAEpkI6OIssCDGWCGw8PT5kWzeACRhUZbrHk-himIbS9DR0x48QiwAxMChmJxvjtUO97p88lsfbwwvryJ56ljCRA/s320/vlcsnap-2020-04-13-18h48m43s200.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
Kembali ke Android Studio, jalankan emulator melalui tombol genymotion kemudian tunggu hingga emulator siap digunakan<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUjFHe8uzhFOa4We8BfYv95kcCTLumUd_SwcUvim54hReXEbGPGbTvCTcuPbJOI2tBgU0UtB0tjOdj32gnVHOo0DSjL_EL6k_ckgrK8TX22ID9X32NO6waNqF6iUQKeUuAzRcX16aoPgI/s1600/vlcsnap-2020-04-13-18h50m04s248.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUjFHe8uzhFOa4We8BfYv95kcCTLumUd_SwcUvim54hReXEbGPGbTvCTcuPbJOI2tBgU0UtB0tjOdj32gnVHOo0DSjL_EL6k_ckgrK8TX22ID9X32NO6waNqF6iUQKeUuAzRcX16aoPgI/s320/vlcsnap-2020-04-13-18h50m04s248.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
Drag file apk debug ke emulator lalu tunggu hingga proses installasi selesai<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNKeFkWOpwqQcjNtRG53o0oRbWupK3Rec5kpaPpMEDzodgvQb5wxrA9nC-9WexnbBPyf5JiEZJlIUr7gAMW98F6eWaWRGptwDGaVPgxbq8GDrneGeBCYtTU8MagKTqAgTxrrzKAbTmhBs/s1600/vlcsnap-2020-04-13-18h50m57s248.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNKeFkWOpwqQcjNtRG53o0oRbWupK3Rec5kpaPpMEDzodgvQb5wxrA9nC-9WexnbBPyf5JiEZJlIUr7gAMW98F6eWaWRGptwDGaVPgxbq8GDrneGeBCYtTU8MagKTqAgTxrrzKAbTmhBs/s320/vlcsnap-2020-04-13-18h50m57s248.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
Aplikasi flutter pun akan otomatis terbuka setelah proses installasi selesai<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMS0tJZj8noO4CiEkZwthLy3SdNf0mK5jrqEHXPIlOfnHzLzUo5J9P0cWEvensWjEI-OVPP-fPWRJ6K-YK8YUHuytCiVY5D0eb-wdVW88YQ0jCZADwth7-1jXVOb0_u8SVkn1jakkpcys/s1600/vlcsnap-2020-04-13-18h52m14s254.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMS0tJZj8noO4CiEkZwthLy3SdNf0mK5jrqEHXPIlOfnHzLzUo5J9P0cWEvensWjEI-OVPP-fPWRJ6K-YK8YUHuytCiVY5D0eb-wdVW88YQ0jCZADwth7-1jXVOb0_u8SVkn1jakkpcys/s320/vlcsnap-2020-04-13-18h52m14s254.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
Begitulah cara membuat file apk dan menjalankannya di emulator virtual, untuk belajar bagaimana menggunakan flutter attach dan hot reload, insya Allah akan dibahas pada kesempatan berikutnya<br />
<br />
Tetap semangat!<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-91858675142759209482020-04-12T07:18:00.001+07:002020-05-03T11:29:07.269+07:00Ngopi Ngoding Ngoprek Flutter Bagian 2 : Pengenalan Genymotion<div class="separator" style="clear: both; display: none; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB2h_JacvvGGXwgfk6vh379b6vwg5GWyYP8iU4yp_M8EjUoKs6DLpYt7HPE3jkyaOmAe2PyWl8ZET1_Dbn57M32AA-dlLzPnDOJM-BpE7zwM9ez7hRvlA-hr-ddlyxrpkMGygJ0ZWYLGo/s1600/thumbnailArtikel.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="582" data-original-width="585" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgB2h_JacvvGGXwgfk6vh379b6vwg5GWyYP8iU4yp_M8EjUoKs6DLpYt7HPE3jkyaOmAe2PyWl8ZET1_Dbn57M32AA-dlLzPnDOJM-BpE7zwM9ez7hRvlA-hr-ddlyxrpkMGygJ0ZWYLGo/s1600/thumbnailArtikel.jpg" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/-rIbM2LXuIM/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/-rIbM2LXuIM?feature=player_embedded" width="320"></iframe></div>
<br />
<br />
Inilah emulator yang insya Allah akan dipakai untuk pelajaran-pelajaran berikutnya. Alasan saya menggunakan genymotion karena lebih cepat dibanding emulator bawaan Android Studio, dan karena selama pengelaman saya, selalu mendapati error ketika ingin membuka emulator bawaan, maka karena itu lah saya menggunakan genymotion.<br />
<br />
Genymotion bisa di dapatkan melalui web officialnya genymotion.com dan jangan lupa register terlebih dahulu agar bisa mendownload produk-produk mereka baik versi gratis ataupun versi berbayarnya<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc2mfvk5DLvihuGC8VWq_yEZqpW-QVGdlEvi8zgB8kcVjZBNQuCYMMAYLbYk-IsPJpAs8_a7Y5NubScCorTgOen234rjVYnl0vtz6wjqOfwr7pTK6K1VF0CkZmUvm_V346bCdo8XApPCI/s1600/vlcsnap-2020-04-11-23h36m47s90.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc2mfvk5DLvihuGC8VWq_yEZqpW-QVGdlEvi8zgB8kcVjZBNQuCYMMAYLbYk-IsPJpAs8_a7Y5NubScCorTgOen234rjVYnl0vtz6wjqOfwr7pTK6K1VF0CkZmUvm_V346bCdo8XApPCI/s320/vlcsnap-2020-04-11-23h36m47s90.png" width="320" /></a></div>
<br />
Untuk mendapatkan versi gratisnya kunjungi genymotion.com/fun-zone disana Anda bisa mengklik Download Genymotion Personal Edition untuk mendownloadnya<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXoaIEfZCG9zI7HSvho1pZoXwONYLOZKR0-ejDoQsr0RiVGpQNgnYJi9_kllX4SJbSusCHa5jxm5ovJvxfHMd3vd1lP9iFzP7nc8GWtcEB4aDse2PmBzRg9zdkCEa7AnWmARstlzB-x8E/s1600/vlcsnap-2020-04-11-23h38m08s145.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXoaIEfZCG9zI7HSvho1pZoXwONYLOZKR0-ejDoQsr0RiVGpQNgnYJi9_kllX4SJbSusCHa5jxm5ovJvxfHMd3vd1lP9iFzP7nc8GWtcEB4aDse2PmBzRg9zdkCEa7AnWmARstlzB-x8E/s320/vlcsnap-2020-04-11-23h38m08s145.png" width="320" /></a></div>
<br />
Setelah mendownload dan menginstall genymotion, Anda harus menginstall plugin genymotion di Android Studio, dengan cara mengklik File > Setting kemudian pilih tab plugins<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglL6DQ0U1o8pKsl5vTLEPK7Bp1nJs51qvrqMblUDZfhnpRzDAbVNOoyzzlE7cXBLFEU88Xlb0xaBky6WXDGNE2lbgGvCkk-BPoekN7vRgp1XiMs39RNAvoonAz-8xS1_sj49TC0yT6nOE/s1600/vlcsnap-2020-04-11-23h42m12s248.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglL6DQ0U1o8pKsl5vTLEPK7Bp1nJs51qvrqMblUDZfhnpRzDAbVNOoyzzlE7cXBLFEU88Xlb0xaBky6WXDGNE2lbgGvCkk-BPoekN7vRgp1XiMs39RNAvoonAz-8xS1_sj49TC0yT6nOE/s320/vlcsnap-2020-04-11-23h42m12s248.png" width="320" /></a></div>
<br />
Jika penginstallan berhasil, Anda akan melihat tombol kecil merah berlogo genymotion di toolbar Android Studio<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBoDyY_8NbKe0Jik3zp9S1hMOnn8JJol6KfVr2FY1tVjNisFdQLEe8vQfNxJCoQefc-DGzWvcqIGKv6QIB_unaU-p0opnjHOjxUE2LFogTrdHdEG_55T1sTLJc4y6JY6vUYHgfKo08PO4/s1600/vlcsnap-2020-04-11-23h45m00s25.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBoDyY_8NbKe0Jik3zp9S1hMOnn8JJol6KfVr2FY1tVjNisFdQLEe8vQfNxJCoQefc-DGzWvcqIGKv6QIB_unaU-p0opnjHOjxUE2LFogTrdHdEG_55T1sTLJc4y6JY6vUYHgfKo08PO4/s320/vlcsnap-2020-04-11-23h45m00s25.png" width="320" /></a></div>
<br />
Begitu tombol merahnya diklik, akan muncul daftar virtual device, inilah daftar handphone virtual yang bisa Anda gunakan untuk mengetes aplikasi Android<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigpPCrCSCp1HhgNIxkAQKFM00dzdpBT6fNWcGBKJFKdvfWaKbY0DdX3mKwsX_ezvBBfdlvStjQczrNPkc8hc7M1-MSEafNfMxs9AhsTaToo-VF3-7EEYg0c3wpoQwm8Jv3pjD1OXQNt8o/s1600/vlcsnap-2020-04-11-23h47m07s153.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigpPCrCSCp1HhgNIxkAQKFM00dzdpBT6fNWcGBKJFKdvfWaKbY0DdX3mKwsX_ezvBBfdlvStjQczrNPkc8hc7M1-MSEafNfMxs9AhsTaToo-VF3-7EEYg0c3wpoQwm8Jv3pjD1OXQNt8o/s320/vlcsnap-2020-04-11-23h47m07s153.png" width="320" /></a></div>
<br />
Jika Anda belum memiliki virtual device, maka jalankan genymotion terlebih dahulu<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizhFyoj3V21CpUpjnGthWVYFtenjVxwQE7e1gKI34nuINevFjjcPLLK4ksXOnREOyMVzXVAh5LkbFz7DoXM_0_RHM_-Ff2eH3twoqln4MG4Xjr4TlLwM7SN5crd2dSKoaP1rxhjBIuqOU/s1600/vlcsnap-2020-04-11-23h51m21s148.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizhFyoj3V21CpUpjnGthWVYFtenjVxwQE7e1gKI34nuINevFjjcPLLK4ksXOnREOyMVzXVAh5LkbFz7DoXM_0_RHM_-Ff2eH3twoqln4MG4Xjr4TlLwM7SN5crd2dSKoaP1rxhjBIuqOU/s320/vlcsnap-2020-04-11-23h51m21s148.png" width="320" /></a></div>
<br />
Untuk menambah vitual device, klik tombol Add maka akan muncul pop up Virtual Device Creation Wizard, dan ada daftar device yang bisa Anda pilih sesuai keperluan, ikuti instruksi penginstallan sampai selesai<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzt814g1y4lKqUVVzkV-IGLYBzEK6tKmzVwNpZW1XevPRaEAx2_BprAVTZ1C-1bQTLRa5EDmyFUGivEYWiNfLRqysM_1veMaUmlyVwLsFbyYs_HdSbs1H-DLM2oM72RT8Xo5BOvOme4PQ/s1600/vlcsnap-2020-04-12-00h10m45s228.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzt814g1y4lKqUVVzkV-IGLYBzEK6tKmzVwNpZW1XevPRaEAx2_BprAVTZ1C-1bQTLRa5EDmyFUGivEYWiNfLRqysM_1veMaUmlyVwLsFbyYs_HdSbs1H-DLM2oM72RT8Xo5BOvOme4PQ/s320/vlcsnap-2020-04-12-00h10m45s228.png" width="320" /></a></div>
<br />
Untuk menjalankan virtual device yang sudah diinstall, klik tombol Start lalu akan muncul pop up loading<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_jguwDsg0rLr9UR8aywo3BGANVumu4wWvO-n5TzKkgYtAFqfvtMoFjQNoSQJiY-pKh0aDWkDXjU1z29bEqu7gB9AssLp4MqgDe1lKuFTayKnrrCu9IAxAEWcby79KxC7y_Aj80Tx3En8/s1600/vlcsnap-2020-04-12-00h13m16s164.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_jguwDsg0rLr9UR8aywo3BGANVumu4wWvO-n5TzKkgYtAFqfvtMoFjQNoSQJiY-pKh0aDWkDXjU1z29bEqu7gB9AssLp4MqgDe1lKuFTayKnrrCu9IAxAEWcby79KxC7y_Aj80Tx3En8/s320/vlcsnap-2020-04-12-00h13m16s164.png" width="320" /></a></div>
<br />
Tunggu loading hingga selesai lalu Anda sudah bisa mengetes file apk di emulator tersebut, untuk versi gratis, banyak fitur-fitur yang dinonaktifkan, tetapi sudah cukup untuk pemula atau untuk menjalankan aplikasi Android yang tidak memiliki kebutuhan yang tinggi seperti koneksi bluetooth dan lain lain.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGzfA8gjZSZSst6kRsTzxtgZN0elyUg4cejfuYYAczTK1eXUjEqJKuqv282PQ7jWc9iZFq9i_4MIXtWmXQpZI5YnsFCQqAaCCHpP-8gUQxk1xCktJYGezN_iGFPfK4kWFYfVURoJGf-OE/s1600/vlcsnap-2020-04-12-00h13m58s98.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGzfA8gjZSZSst6kRsTzxtgZN0elyUg4cejfuYYAczTK1eXUjEqJKuqv282PQ7jWc9iZFq9i_4MIXtWmXQpZI5YnsFCQqAaCCHpP-8gUQxk1xCktJYGezN_iGFPfK4kWFYfVURoJGf-OE/s320/vlcsnap-2020-04-12-00h13m58s98.png" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
Silahkan Anda pelajari lebih lanjut mengenai genymotion, dan insya Allah emulator ini lah yang akan dipakai pada tutorial-tutorial berikutnya<br />
<br />
Selamat mencoba!<br />
<br />
<br />
<br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-68232274484444449832020-04-11T16:39:00.005+07:002020-05-03T11:29:16.501+07:00Ngopi Ngoding Ngoprek Flutter Bagian 1 : Membuat proyek flutter di Android Studio<br />
<div class="separator" style="clear: both; display: none; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuoPs6i4Jb-qfo0ioW9npFTZs1CUZEs4Sozru1ffr3nM1NxXqsBqOWSiy0KysoYbF56Pqd5TkyvWuXwr0dXGKyxJuxV2Xwh6-t6xGvHPDik-olS5V4B-A6s_syoif4_B01jYCgZRff1tQ/s1600/thumbnailArtikel.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="582" data-original-width="585" height="318" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuoPs6i4Jb-qfo0ioW9npFTZs1CUZEs4Sozru1ffr3nM1NxXqsBqOWSiy0KysoYbF56Pqd5TkyvWuXwr0dXGKyxJuxV2Xwh6-t6xGvHPDik-olS5V4B-A6s_syoif4_B01jYCgZRff1tQ/s320/thumbnailArtikel.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/Plg-m6eR6eI/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/Plg-m6eR6eI?feature=player_embedded" width="320"></iframe></div>
<br />
<span class="style-scope yt-formatted-string" dir="auto">Sebelum mulai mempelajari flutter, selain membutuhkan flutter SDK, ada 4 software yang harus diinstall yaitu </span><br />
<span class="style-scope yt-formatted-string" dir="auto">- Android Studio </span><br />
<span class="style-scope yt-formatted-string" dir="auto">- Genymotion </span><br />
<span class="style-scope yt-formatted-string" dir="auto">- Git </span><br />
<span class="style-scope yt-formatted-string" dir="auto">- Visual Studio Code </span><span class="style-scope yt-formatted-string" dir="auto"></span><br />
Silahkan melihat <a href="https://bahaskomputer.blogspot.com/2020/04/video-persiapan-belajar-flutter.html">video panduan installasi</a> untuk membantu Anda menginstall <span class="style-scope yt-formatted-string" dir="auto">masing-masing software diatas</span><br />
<br />
<br />
Pertama, jalankan Android Studio<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjKGPxc1a-XoVMLuwVWkGskJNhhkOsrPTODtjKFkG44RkuUHzQ9rLNq3ONqD-omLNdIt5GLNEK_40ANo_EijFsjAsl2EEjd6Lsoww0lRQuuGhVyNKYI9wH9FtB9Ahpg2_3dM_mVDVMhp0/s1600/vlcsnap-2020-04-11-06h03m46s106.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjKGPxc1a-XoVMLuwVWkGskJNhhkOsrPTODtjKFkG44RkuUHzQ9rLNq3ONqD-omLNdIt5GLNEK_40ANo_EijFsjAsl2EEjd6Lsoww0lRQuuGhVyNKYI9wH9FtB9Ahpg2_3dM_mVDVMhp0/s320/vlcsnap-2020-04-11-06h03m46s106.png" width="320" /></a></div>
<br />
Periksa terlebih dahulu apakah Anda sudah menginstall plugin flutter, caranya klik File > Settings<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3dgduks6C65n19PWI4iTpYPNaq4qZ_9zYDXRc795bMr3_cSxdq9DBmPx5VkOCOBGjaV7rEX944GuIaSBnOa3b6ENkmFqdhe7tjFir7hWEeLl1oiVn3ygkL-5mGV84TTrF9PTQFwtqBdk/s1600/vlcsnap-2020-04-11-06h08m03s88.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3dgduks6C65n19PWI4iTpYPNaq4qZ_9zYDXRc795bMr3_cSxdq9DBmPx5VkOCOBGjaV7rEX944GuIaSBnOa3b6ENkmFqdhe7tjFir7hWEeLl1oiVn3ygkL-5mGV84TTrF9PTQFwtqBdk/s320/vlcsnap-2020-04-11-06h08m03s88.png" width="320" /></a></div>
<br />
Pilih tab Plugins, cek tab installed untuk melihat apakah plugin flutter sudah terinstall, jika belum maka Anda harus mencarinya melalui tab marketplace untuk menginstallnya<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhot_7RnF4W47eOaRLWwE87CmNVUOSsfsPK_jUKqyECYaULYCVB2Hd6iqcCviITegMMjkDBARaisi0tV15p6jGtsppNt9pJf6OHiLASYp02Hy9AXPSkgR9-kGOgqX2b8XkEa7AIcTab3cI/s1600/vlcsnap-2020-04-11-06h10m50s160.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhot_7RnF4W47eOaRLWwE87CmNVUOSsfsPK_jUKqyECYaULYCVB2Hd6iqcCviITegMMjkDBARaisi0tV15p6jGtsppNt9pJf6OHiLASYp02Hy9AXPSkgR9-kGOgqX2b8XkEa7AIcTab3cI/s320/vlcsnap-2020-04-11-06h10m50s160.png" width="320" /></a></div>
<br />
Close windows diatas kemudian klik File > New > New Flutter Project. Pastikan menu new flutter project ada, jika tidak, maka Anda belum memasang plugin flutter dengan benar<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhboNZCf8yeTcHatJfe14xSdywAd_Lx5Z-zBpWiHLDqKsPvap50DLw32Y0O3R7WjzPWwAPkSeP8MunCyTUViXnt5zJ5uQj2TwzteqJfBr940KW7tsRPiaS4pdmCmm4CGzDaUmGWhfhLPz8/s1600/vlcsnap-2020-04-11-09h14m18s196.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhboNZCf8yeTcHatJfe14xSdywAd_Lx5Z-zBpWiHLDqKsPvap50DLw32Y0O3R7WjzPWwAPkSeP8MunCyTUViXnt5zJ5uQj2TwzteqJfBr940KW7tsRPiaS4pdmCmm4CGzDaUmGWhfhLPz8/s320/vlcsnap-2020-04-11-09h14m18s196.png" width="320" /></a></div>
<br />
Pilih Flutter Application kemudian klik Next<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_c0nHsVRQ9AZ1jm1rp27A-I1Cv2c9BkdxpOOXEmEmp9eZYNFbmiedjhpX56In2Q9UqN_nXIiUef-tGrNRmwlbLnQakEu_gLePzTOwCZ5XUlDrzohxXk6b0BSi7S1MdZ13xPN3DyUuz9g/s1600/vlcsnap-2020-04-11-09h23m23s48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_c0nHsVRQ9AZ1jm1rp27A-I1Cv2c9BkdxpOOXEmEmp9eZYNFbmiedjhpX56In2Q9UqN_nXIiUef-tGrNRmwlbLnQakEu_gLePzTOwCZ5XUlDrzohxXk6b0BSi7S1MdZ13xPN3DyUuz9g/s320/vlcsnap-2020-04-11-09h23m23s48.png" width="320" /></a></div>
<br />
Isi data-data penting seperti nama project dan deskripsi project, pastikan alamat flutter sdk valid dan project location sesuai keinginan Anda, jika sudah, klik Next<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ3ymt1hyphenhyphenDUK87W5I6ywTLE-Jv-x_15IMMil-lHX8CRo1CUd_34_N2dM-PiMH3zhK0VuuI6rkyd6hQcgGzTl8JJ6bf6ikYVdOBaw1yC5nuPR1duu5NPXPIeQUzyoSNPJWlOMoEHOk5R2Q/s1600/vlcsnap-2020-04-11-09h30m02s196.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ3ymt1hyphenhyphenDUK87W5I6ywTLE-Jv-x_15IMMil-lHX8CRo1CUd_34_N2dM-PiMH3zhK0VuuI6rkyd6hQcgGzTl8JJ6bf6ikYVdOBaw1yC5nuPR1duu5NPXPIeQUzyoSNPJWlOMoEHOk5R2Q/s320/vlcsnap-2020-04-11-09h30m02s196.png" width="320" /></a></div>
<br />
Isikan Package Name, ini berguna untuk menentukan nama package saat akan diupload ke play store, masukkan nama yang unik, jika sudah, klik Finish<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMYGdSdBk3vSUN0y3wFhht95UVxI04Y9xr1FGGHaZmsMpVXVkkfU7rDIMG7-KJ64g7DZXFkhY5IuMilrjZsZdhluquz3eLcHU-c7KAg-GBN39XDOhm9fjV7GZTlQZXCzgmEmqEHD7Lrf8/s1600/vlcsnap-2020-04-11-09h32m45s26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMYGdSdBk3vSUN0y3wFhht95UVxI04Y9xr1FGGHaZmsMpVXVkkfU7rDIMG7-KJ64g7DZXFkhY5IuMilrjZsZdhluquz3eLcHU-c7KAg-GBN39XDOhm9fjV7GZTlQZXCzgmEmqEHD7Lrf8/s320/vlcsnap-2020-04-11-09h32m45s26.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Akan muncul pop up Creating Flutter Project, tunggu hingga selesai<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOzVq5BmW50GdcubSaP-DDJbe64gjTXkvEBUcIbMk5X9HfvfVVhtNzm1teLOZX8rAlQkOvrPYxyP3jc1f-J0LGz1_7rUXssYbDe6L7jjlwaC7IHaadSPMlPRaplCo8iYNIQ2x9EfBdOZQ/s1600/vlcsnap-2020-04-11-09h34m06s67.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOzVq5BmW50GdcubSaP-DDJbe64gjTXkvEBUcIbMk5X9HfvfVVhtNzm1teLOZX8rAlQkOvrPYxyP3jc1f-J0LGz1_7rUXssYbDe6L7jjlwaC7IHaadSPMlPRaplCo8iYNIQ2x9EfBdOZQ/s320/vlcsnap-2020-04-11-09h34m06s67.png" width="320" /></a></div>
<br />
Setelah selesai, akan ada pilihan apakah ingin membuka project yang baru saja dibuat, di window yang sama atau window baru, pilih sesuai keinginan Anda<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvmlW9SCDiVKkDjfwlNSpoQWGSBsLOIeU-j2V3tonoWUI7lmSOT-dCZrDoN_eF94jExScWVFvW0AEGKwJVkXj9psdJ9POcI7VeouxVUsTNaiyWqG5kDzvuUkGV5lV6TFBFYixdXvi3364/s1600/vlcsnap-2020-04-11-09h35m20s216.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvmlW9SCDiVKkDjfwlNSpoQWGSBsLOIeU-j2V3tonoWUI7lmSOT-dCZrDoN_eF94jExScWVFvW0AEGKwJVkXj9psdJ9POcI7VeouxVUsTNaiyWqG5kDzvuUkGV5lV6TFBFYixdXvi3364/s320/vlcsnap-2020-04-11-09h35m20s216.png" width="320" /></a></div>
Setelah window terbuka, tunggu hingga gradle building selesai, Anda bisa melihat prosesnya di bagian paling bawah editor<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLEK_kT17oGins5TZC9WGtUcHdJBZc6BxQ1-hug8qZGhOdk4WntRQ_k1n8xlUhJ1jzxLbgU7gI1NnNnjuSvqKFMF72TYLeRhFtdbfhhZsxvWkj5CdaEDwkkxsmtwKYJSNqBrblBiwYqlc/s1600/vlcsnap-2020-04-11-09h36m40s141.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1334" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLEK_kT17oGins5TZC9WGtUcHdJBZc6BxQ1-hug8qZGhOdk4WntRQ_k1n8xlUhJ1jzxLbgU7gI1NnNnjuSvqKFMF72TYLeRhFtdbfhhZsxvWkj5CdaEDwkkxsmtwKYJSNqBrblBiwYqlc/s320/vlcsnap-2020-04-11-09h36m40s141.png" width="320" /></a></div>
<br />
Project telah dibuat, Anda telah berhasil membuat project flutter, artikel berikutnya akan membahas tentang genymotion dan cara menjalankan aplikasi flutter di genymotion. Jika ada pertanyaan, silahkan isi di kotak komentar<br />
<br />
Tetap semangat!<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-22235284725111685442020-04-07T09:03:00.003+07:002020-04-07T10:20:52.369+07:00Perbedaan push dan pop dalam flutter, maju mundur juga asik<div class="separator" style="clear: both; text-align: center;">
<a href="https://live.staticflickr.com/4134/4794925571_0491c4cf7b_b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="240" src="https://live.staticflickr.com/4134/4794925571_0491c4cf7b_b.jpg" width="320" /></a></div>
<br />
<br />
Bismillah, seperti di framework laravel ataupun codeIgniter, flutter menggunakan routes untuk berpindah antar halaman, setiap route menentukan halaman mana yang akan terbuka ketika user mengarah kesana. Dua function dasar yang biasa dipanggil ketika ingin berpindah antar halaman adalah push dan pop, push akan membuka halaman baru, sedangkan pop akan kembali ke halaman sebelumnya.<br />
<br />
Jika push dan pop mengingatkan Anda pada tipe data stack/tumpukan, maka itu tidak salah, karena sebenarnya flutter memiliki tumpukan-tumpukan halaman, tumpukan ini bertambah dengan function push dan berkurang dengan function pop, lihat gambar di bawah ini sebagai contohnya,<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrVEZ24Rmopy49e_w0rd5gw0A_euj21d2Hj_gpT81pzBLC2BPTT0_r3H2jFsTVMiphkwQE_ZmB6ey-AwmIf3MVVjDLIP5gIZ9CUV3UjoF-i_JihE-VAJVI2LSgCMfDRr5GT8F8k7OYx_g/s1600/stackPageHome.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="262" data-original-width="407" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrVEZ24Rmopy49e_w0rd5gw0A_euj21d2Hj_gpT81pzBLC2BPTT0_r3H2jFsTVMiphkwQE_ZmB6ey-AwmIf3MVVjDLIP5gIZ9CUV3UjoF-i_JihE-VAJVI2LSgCMfDRr5GT8F8k7OYx_g/s320/stackPageHome.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Pada awal aplikasi dijalankan, hanya ada halaman home dalam di dalam stack, kemudian jika fungsi di bawah ini dijalankan maka akan menambahkan halaman keranjang_belanja ke dalam tumpukan halaman dan membuka halaman keranjang<br />
<br />
<span style="background-color: yellow;">Navigator.of(context).pushNamed('/keranjang_belanja');</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi0EILjhoSRM_mj8zIT-iWBSaKTC0-eitMoCYDP4Lj6rV_Bnkp3G-3u8M_GjmHnuZleo_GINOV-QS-hIhNyO0NyH-nhtUNLSdCT-3PLHFgumkWUhzIRmgvewlF-2SvJRLjCG_SWk7G3AM/s1600/stackPageKeranjangBelanja.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="262" data-original-width="407" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi0EILjhoSRM_mj8zIT-iWBSaKTC0-eitMoCYDP4Lj6rV_Bnkp3G-3u8M_GjmHnuZleo_GINOV-QS-hIhNyO0NyH-nhtUNLSdCT-3PLHFgumkWUhzIRmgvewlF-2SvJRLjCG_SWk7G3AM/s320/stackPageKeranjangBelanja.png" width="320" /></a></div>
Kemudian, jika dijalankan perintah <span style="background-color: yellow;">Navigator.of(context).pop();</span> maka user akan kembali satu halaman ke halaman sebelumnya dan tumpukan akan kembali seperti awal<br />
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqUmRQ5Fgy61-gRJWm5uioIc-ojY7XvXrjZYih6tcxo00i5BlZYdrePlzkbFy33Qq3lCoKViqwTRmvwnphVfl66zhjtUG8YVX8PkhSjMHUPOwpApsVSkpJ4Aa-ew-F1gqCGr4oCXbgSOM/s1600/stackPageHome.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="262" data-original-width="407" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqUmRQ5Fgy61-gRJWm5uioIc-ojY7XvXrjZYih6tcxo00i5BlZYdrePlzkbFy33Qq3lCoKViqwTRmvwnphVfl66zhjtUG8YVX8PkhSjMHUPOwpApsVSkpJ4Aa-ew-F1gqCGr4oCXbgSOM/s320/stackPageHome.png" width="320" /></a></div>
<br />
Bagaimana jika kita ingjn pindah halaman tanpa menambah tumpukan? dalam artian, tumpukan terakhir diganti dengan halaman baru, kita bisa menggunakan pushReplacementNamed, contohnya seperti dibawah<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEk_xzMbFHML6jl5t0Z9B6ryIIzhumYAQO8B2yYI6PQbMN5BtgMbM67ixkhN_DhAf6txVL0cRb1_cNosHCfroRT3lIqyk2dsNLBuowPyxC4AzX-C2QNb-bCHPYF5Kolr2BOR5pZc_L2bE/s1600/stackPageFormPemesanan.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="262" data-original-width="407" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEk_xzMbFHML6jl5t0Z9B6ryIIzhumYAQO8B2yYI6PQbMN5BtgMbM67ixkhN_DhAf6txVL0cRb1_cNosHCfroRT3lIqyk2dsNLBuowPyxC4AzX-C2QNb-bCHPYF5Kolr2BOR5pZc_L2bE/s320/stackPageFormPemesanan.png" width="320" /></a></div>
Tumpukan di atas menunjukan user sedang berada di tampilan form pemesanan, jika kita ingin agar setelah mengisi form pemesanan, user pindah ke halaman sukses memesan dan ketika tombol back di handphone mereka diklik, kembali ke menu keranjang belanja?, maka skrip yang harus dijalankan adalah skrip di bawah ini<br />
<br />
<span style="background-color: yellow;">Navigator.of(getContext()).pushReplacementNamed(page); </span><br />
<br />
Skrip diatas akan merubah tumpukan menjadi seperti di bawah ini<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiunEmTkdYjE_qSu6FAj3zl5J9KkjIEhxOgN-abV1ZQdK6FaZ7SVyJ8Mo-FMCDKUJHDb_Pef0cBNmPOgFLm9rglqzpmVv0kyOrq2gXQIIkNgjJDpVHZhBYm6iHCjT5y6xffR-fblNxUF8k/s1600/stackPageFormPemesananBerhasil.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="262" data-original-width="407" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiunEmTkdYjE_qSu6FAj3zl5J9KkjIEhxOgN-abV1ZQdK6FaZ7SVyJ8Mo-FMCDKUJHDb_Pef0cBNmPOgFLm9rglqzpmVv0kyOrq2gXQIIkNgjJDpVHZhBYm6iHCjT5y6xffR-fblNxUF8k/s320/stackPageFormPemesananBerhasil.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Tumpukan di atas menunjukan tumpukan teratas yang tadinya adalah form pemesanan, berubah menjadi halaman pemesanan berhasil. Jika kita ingin agar setelah mengisi form pemesanan, user pindah ke halaman sukses memesan dan ketika tombol back di handphone mereka diklik, kembali ke menu Home, maka skrip yang harus dijalankan adalah skrip di bawah ini<br />
<br />
<span style="background-color: yellow;">Navigator.of(context).pushNamedAndRemoveUntil('/pemesanan_berhasil', ModalRoute.withName('/home'));</span><br />
<br />
Skrip diatas akan merubah tumpukan menjadi seperti di bawah ini<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4nFPOEpKKiVKYhLKmdSdekcaLmxsvqrE6-9bBR_gggCI2tg-SJoOornzGzEGJ1to7e_MmTu6cRkhq_qozjiPZJ1YMoGNT1sz3tKxsrHnTtbJZMbJ7MiWoFz_aJx-bS2L5PEOfUSn5xW0/s1600/stackPageFormPemesananBerhasil.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="262" data-original-width="407" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4nFPOEpKKiVKYhLKmdSdekcaLmxsvqrE6-9bBR_gggCI2tg-SJoOornzGzEGJ1to7e_MmTu6cRkhq_qozjiPZJ1YMoGNT1sz3tKxsrHnTtbJZMbJ7MiWoFz_aJx-bS2L5PEOfUSn5xW0/s320/stackPageFormPemesananBerhasil.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Pada situasi di atas jika user menekan tombol back maka akan kembali ke halaman home, bukan lagi halaman form pemesanan, dengan begini akan berkurang kemungkinan duplikasi pengiriman data. Bagaimana jika kita ingin setelah user mengisi form pemesanan, langsung kembali ke home tanpa harus ke halaman pemesanan berhasil terlebih dahulu? dalam artian, membuat di tumpukan page hanya ada Home, maka skrip yang dipakai adalah<br />
<br />
<span style="background-color: yellow;">Navigator.of(context).pushNamedAndRemoveUntil('/home', (Route<dynamic> route)=>false);</dynamic></span><br />
<br />
Jika skrip diatas dijalankan, saat user berada di halaman pemesanan berhasil dan menekan tombol back di hapenya, maka dia akan kembali ke home dan tumpukan page akan kembali seperti awal<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqUmRQ5Fgy61-gRJWm5uioIc-ojY7XvXrjZYih6tcxo00i5BlZYdrePlzkbFy33Qq3lCoKViqwTRmvwnphVfl66zhjtUG8YVX8PkhSjMHUPOwpApsVSkpJ4Aa-ew-F1gqCGr4oCXbgSOM/s1600/stackPageHome.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="262" data-original-width="407" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqUmRQ5Fgy61-gRJWm5uioIc-ojY7XvXrjZYih6tcxo00i5BlZYdrePlzkbFy33Qq3lCoKViqwTRmvwnphVfl66zhjtUG8YVX8PkhSjMHUPOwpApsVSkpJ4Aa-ew-F1gqCGr4oCXbgSOM/s320/stackPageHome.png" width="320" /></a></div>
<br />
<br />
Itu saja yang bisa saya share untuk saat ini, semoga bermanfaat<br />
<br />
<br />
<b>Referensi</b><br />
https://live.staticflickr.com/4134/4794925571_0491c4cf7b_b.jpgAnhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-58323665802057610142020-03-26T21:01:00.000+07:002020-03-26T21:05:20.466+07:00Pengalaman kuliah jurusan Teknik Informatika<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://p0.pikrepo.com/preview/803/405/black-chairs-and-white-tables-inside-room.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="534" data-original-width="800" height="213" src="https://p0.pikrepo.com/preview/803/405/black-chairs-and-white-tables-inside-room.jpg" width="320" /></a></div>
<br />
Jurusan Teknik Informatika (TI) adalah jurusan yang banyak digemari, ada pro kontra mengenai perlu atau tidaknya kuliah di TI, pada artikel ini saya akan membeberkan beberapa pelajaran yang saya pelajari selama kuliah TI, dengan tujuan menjadi bahan pertimbangan untuk kalian yang ingin melanjutkan ke jenjang kuliah atau pindah jurusan.<br />
<br />
<b>1. Belajar Flowchart</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/commons/e/ed/Consensus-flowchart.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="385" data-original-width="307" height="320" src="https://upload.wikimedia.org/wikipedia/commons/e/ed/Consensus-flowchart.png" width="255" /></a></div>
<div style="text-align: center;">
<br /></div>
Ini dipelajarin di tingkat satu, gunanya untuk melatih merancang alur program yang akan dibuat, alur program digambar di komputer ataupun kertas menggunakan simbol-simbol yang sesuai dengan fungsinya, alur input output, alur kondisi if else, alur penyimpanan data dan lain sebagainya, dari flowchart yang sudah dibuat kita akan tahu seperti apa alur kerja program kita ke depannya.<br />
<b><br /></b>
<b>2. Belajar QBASIC</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/commons/6/62/Qbasic.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="430" data-original-width="651" height="211" src="https://upload.wikimedia.org/wikipedia/commons/6/62/Qbasic.gif" width="320" /></a></div>
<br />
<br />
Singkatan dari Quick Beginners All purpose Symbolic Instruction
Code, ini yang dulu saya pelajari setelah mempelajari flowchart dan usecase, penempatan skrip pada kolom tertentu sangat berpengaruh, tidak bisa asal-asalan tanpa mengikuti panduan, meskipun terlihat jadul, tapi bisa digunakan untuk mengetes alur logika dari flowchart yang dibuat.<br />
<br />
<b>3. Sistem Informasi (SI)</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQprsSwad_Eq6qAwIF0J6PEoziNyTCCTu8NJGxVQcIB8Qqyz90e" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="225" data-original-width="225" src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQprsSwad_Eq6qAwIF0J6PEoziNyTCCTu8NJGxVQcIB8Qqyz90e" /></a></div>
<div style="text-align: center;">
<br /></div>
Di mata kuliah ini, kita mempelajari use case, untuk menjelaskan fitur-fitur, jenis-jenis user dan bagaimana interaksi antar user di dalam sistem yang dibuat, software yang digunakan untuk membuat use case adalah Star UML, pada akhir kegiatan praktikum, kita mendapatkan tugas untuk menulis rancangan sistem informasi, di dalamnya terdapat komponen sistem, input data, pemrosesan data dan tujuan dibuatnya sistem tersebut.<br />
<br />
<b>4. Grafik Komputer (Grafkom)</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/commons/1/14/Pixareyes-Eye_mesh.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="220" data-original-width="380" height="185" src="https://upload.wikimedia.org/wikipedia/commons/1/14/Pixareyes-Eye_mesh.gif" width="320" /></a></div>
<div style="text-align: center;">
<br /></div>
Di mata kuliah ini saya mempelajari cara membuat animasi, software yang digunakan adalah blender, untuk tugas akhirnya, saya membuat aplikasi game yang menggunakan fitur penyusunan algoritma yang tersedia di blender, selain itu saya juga membuat animasi dengan blender dan animasi lainnya<br />
<b><br /></b>
<b>5. Hak Kekayaan Intelektual (HAKI)</b><br />
<div style="text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<b><a href="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQivrV3_fr6Q-5fcFrl9rpYOtVyk-1YLmDj5KQcMNjNagU2EJDh" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="183" data-original-width="275" src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQivrV3_fr6Q-5fcFrl9rpYOtVyk-1YLmDj5KQcMNjNagU2EJDh" /></a></b></div>
<br />
Di mata kuliah ini saya mempelajari betapa pentingnya menghargai karya cipta orang lain dan pentingnya melindungi karya cipta sendiri<br />
<b><br /></b>
<b>6. Interaksi Manusia Komputer(IMK)</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcRzEfGTEPKqUEFiHhwAQMbHtJlGjX7JBNB0lICkBSafvl_riBue" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="168" data-original-width="300" src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcRzEfGTEPKqUEFiHhwAQMbHtJlGjX7JBNB0lICkBSafvl_riBue" /></a></div>
<div style="text-align: center;">
<br /></div>
Di mata kuliah ini saya mempelajari teori penggunaan komputer secara mendalam, dari sisi pelajaran teknisnya, saya mempelajari cara membuat aplikasi android menggunakan eclipse<br />
<b><br /></b>
<b>7 Jaringan Komputer(Jarkom)</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://p0.pikrepo.com/preview/580/1024/posts-on-social-media-networks-socializing-concept.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="504" data-original-width="800" height="201" src="https://p0.pikrepo.com/preview/580/1024/posts-on-social-media-networks-socializing-concept.jpg" width="320" /></a></div>
<div style="text-align: center;">
<br /></div>
Di mata kuliah ini saya mempelajari cara mendesain jaringan menggunakan CISCO Packet Tracer, seperti cara menghubungkan dua device, routing dan menghubungkan jaringan ke cloud<br />
<br />
<b>8. Pemrograman Web (PWeb)</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://c0.wallpaperflare.com/preview/579/90/558/products-laptop-computer-keyboard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="534" data-original-width="800" height="213" src="https://c0.wallpaperflare.com/preview/579/90/558/products-laptop-computer-keyboard.jpg" width="320" /></a></div>
<div style="text-align: center;">
<br /></div>
Di mata kuliah ini saya mempelajari cara membuat website, mulai dari pengenalan Web, javascript, MySQL, Code Igniter, koneksi database di Code Igniter dan penggunaan session di Code Igniter<br />
<br />
<b>9. Sistem Basis Data (SBD)</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.thebluediamondgallery.com/handwriting/images/data.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="533" data-original-width="800" height="213" src="https://www.thebluediamondgallery.com/handwriting/images/data.jpg" width="320" /></a></div>
Di mata kuliah ini saya mempelajari database, mulai dari pengenalan dasar, perintah query MySQL, join tabel, objek sequence, syntax trigger dan lain-lain.<br />
<br />
<b>Penutupan</b><br />
<br />
Itulah beberapa pengalaman pelajaran selama kuliah di jurusan Teknik Informatika yang bisa saya share, semoga menjadi bahan pertimbangan untuk kalian yang ingin kuliah TI, ingat, kuliah memerlukan hardskill dan softskill, sehingga jangan menganggap remeh ataupun merasa rendah diri hanya karena membaca bocoran pelajaran-pelajaran di atas, apapun pilihan kalian, iringi dengan doa dan tetap semangat!<br />
<br />
<br />
<b>Referensi</b><br />
https://p0.pikrepo.com/preview/803/405/black-chairs-and-white-tables-inside-room.jpg <br />
https://upload.wikimedia.org/wikipedia/commons/e/ed/Consensus-flowchart.png <br />
https://upload.wikimedia.org/wikipedia/commons/6/62/Qbasic.gif<br />
https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQprsSwad_Eq6qAwIF0J6PEoziNyTCCTu8NJGxVQcIB8Qqyz90e<br />
https://upload.wikimedia.org/wikipedia/commons/1/14/Pixareyes-Eye_mesh.gif<br />
https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQivrV3_fr6Q-5fcFrl9rpYOtVyk-1YLmDj5KQcMNjNagU2EJDh<br />
https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcRzEfGTEPKqUEFiHhwAQMbHtJlGjX7JBNB0lICkBSafvl_riBue<br />
https://p0.pikrepo.com/preview/580/1024/posts-on-social-media-networks-socializing-concept.jpg<br />
https://c0.wallpaperflare.com/preview/579/90/558/products-laptop-computer-keyboard.jpg<br />
https://www.thebluediamondgallery.com/handwriting/images/data.jpg <br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-58591108267660423312020-03-04T18:48:00.004+07:002020-03-05T09:55:15.975+07:00Pemrograman blok visual, geser geser asikDunia programmer tidak terlepas dari text editor, yakni software untuk menulis skrip, hanya programmer saja yang mengerti alur dari suatu program dengan membaca skripnya, sedangkan untuk orang awam, atau yang baru <a href="https://bahaskomputer.blogspot.com/2020/02/persiapan-menuju-dunia-pemrograman.html">terjun ke dunia pemrograman</a>, perlu dibuatkan dokumentasinya. Sekarang ada cara ngoding yang unik. yaitu menggunakan visual block, dengan begini, baik programmer ataupun orang yang bekerja di bidang lain misal manajer, desainer atau yang lainnya, dapat mengerti alur program tersebut melalui visualisasi yang baik.<br />
<br />
<b>Apa itu pemrograman blok visual?</b> Dikutip dari blog wordpress citragitaaulia<br />
<br />
Visual Block Programming adalah Membuat aplikasi tanpa kode satupun. Mengapa disebut visual block programming? , karena kita akan melihat, menggunakan, menyusun dan drag-drops “block” yang merupakan simbol-simbol perintah dan fungsi event handler tertentu dalam membuat aplikasi, dan secara sederhana kita bisa menyebutnya tanpa menuliskan kode program –coding less.<br />
Dalam komputasi, sebuah bahasa pemrograman visual adalah bahasa pemrograman yang memungkinkan pengguna membuat program dengan memanipulasi unsur-unsur program grafis bukan dengan menentukan mereka secara tekstual. Sebuah VPL memungkinkan pemrograman dengan ekspresi visual, pengaturan tata ruang dari teks dan simbol grafis, digunakan baik sebagai elemen sintaks atau notasi sekunder. Sebagai contoh, banyak VPLS (dikenal sebagai dataflow atau pemrograman diagram) didasarkan pada gagasan “kotak dan panah”, di mana kotak atau benda layar lainnya diperlakukan sebagai entitas, dihubungkan dengan panah, garis atau busur yang mewakili hubungan.<br />
<br />
<b>Karakteristik Pemrograman Berbasis Blok</b><br />
<ol>
<li>Menggunakan objek visual sebagai pembangun program</li>
<li>Bahasa nya sama seperti bahasa sehari-hari</li>
<li>Mudah dipahami bagi programer awam dan tingkat lanjut</li>
<li>Bahasa pemrograman nya dapat di translate ke bahasa pemrograman manapun</li>
<li>User dapat melihat hasil dari kodingan langsung tanpa mengkompail terlebih dahulu</li>
<li>Diterjemahkan tanpa ada syntax error (penulisan program mudah)</li>
<li>User friendly</li>
</ol>
<br /><ol>
</ol>
<b>Contoh penggunaan Blok Visual </b><br />
<br />
<b>1. MIT App Inventor</b><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/commons/e/e6/Mit_app_inventor_2_beta2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="583" data-original-width="800" height="233" src="https://upload.wikimedia.org/wikipedia/commons/e/e6/Mit_app_inventor_2_beta2.png" width="320" /></a></div>
<br />
<br />
Dari wikipedia<b>. App Inventor</b> adalah aplikasi web sumber terbuka yang awalnya dikembangkan oleh Google, dan saat ini dikelola oleh Massachusetts Institute of Technology (MIT). <br />
App Inventor memungkinkan pengguna baru untuk memprogram komputer untuk menciptakan aplikasi perangkat lunak bagi sistem operasi Android. App Inventor menggunakan antarmuka grafis, serupa dengan antarmuka pengguna pada Scratch dan StarLogo TNG, yang memungkinkan pengguna untuk men-drag-and-drop objek visual untuk menciptakan aplikasi yang bisa dijalankan pada perangkat Android. Dalam menciptakan App Inventor, Google telah melakukan riset yang berhubungan dengan komputasi edukasional dan menyelesaikan lingkungan pengembangan online Google.<br />
<br />
<b>2. Code Org</b><br />
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/commons/e/ea/Code1OrgCode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="527" data-original-width="800" height="210" src="https://upload.wikimedia.org/wikipedia/commons/e/ea/Code1OrgCode.png" width="320" /></a></div>
<b><br /></b>
<b><br /></b>
Dari codepolitan. Code.Org sebuah organisasi nirlaba yang mempunyai misi agar setiap orang
dapat belajar ilmu komputer khususnya pemrograman. Code.Org juga ingin
agar jumlah wanita dan anak - anak dari negara tertinggal dapat semakin
banyak mempelajari ilmu komputer. Code.Org berharap bahwa ilmu komputer
dapat diterapkan di kurikulum pelajaran bersama pelajaran <i>science, technology, engineering, dan mathematic</i>
(STEM) seperti biologi, fisika, kimia, dan algebra. Saat ini sudah 45
juta pelajar telah berpartisipasi dalam Hour of Code yang
diselenggarakan Code.Org.<br />
<br />
<b>3. Microsoft Makecode </b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/en/b/b0/MakecodeScreenCPX.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="180" src="https://upload.wikimedia.org/wikipedia/en/b/b0/MakecodeScreenCPX.jpg" width="320" /></a></div>
Sama seperti App Inventor yang merupakan software berbasis web, bedanya adalah jika App Inventor digunakan untuk membuat aplikasi android, maka microsoft makecode digunakan untuk membuat robotik.<br />
<br />
<b>4. Ozo blockly</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP-4YyMyo77t_74bI2v3QtEeFsRNH4Lnbmqyosihk73KHOdwK1bT55kMNXuLA3ypATaJWmDujw_Qr83S5HWhWkp_Qmovq3jnEs5ywwnzlrHUlSGFqQS0dR6ou0C3RwxpOjta_J1TBeupk/s1600/Screen+Shot+2020-03-03+at+06.17.06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="821" data-original-width="1600" height="164" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP-4YyMyo77t_74bI2v3QtEeFsRNH4Lnbmqyosihk73KHOdwK1bT55kMNXuLA3ypATaJWmDujw_Qr83S5HWhWkp_Qmovq3jnEs5ywwnzlrHUlSGFqQS0dR6ou0C3RwxpOjta_J1TBeupk/s320/Screen+Shot+2020-03-03+at+06.17.06.png" width="320" /></a></div>
<br />
Dikutip dari dailysocial. Ozobot adalah mainan fisik yang bisa Anda gunakan dalam permainan digital, ia dirancang untuk menjembatani <i>game</i>
masa kini dengan permainan-permainan lawas, mengkombinasi teknologi
masa depan dengan manisnya nostalgia. Ozobot dapat berinteraksi dan
mempelajari aktivitas yang dilakukan para penggunanya.<br />
<br />
Situs ozo blockly ini digunakan untuk memprogram ozobot, menggunakan pemrograman blok visual<br />
<br />
<b>5. Parallax</b><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFaBccg7DqevXRXk2HCc1cX8xzxqVDDQLaEkTEE3CC_Xphyphenhyphenm5y9WoC6Vhfiyb2TPXJ-xyD73VDmrSXSpp_b6FpOGD1jcZ2JugMRH5WyX4QhaKpz2mrNYe95rESPNHLZB2bARcEYoT0Zyc/s1600/Screen+Shot+2020-03-03+at+06.20.46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="893" data-original-width="1600" height="178" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFaBccg7DqevXRXk2HCc1cX8xzxqVDDQLaEkTEE3CC_Xphyphenhyphenm5y9WoC6Vhfiyb2TPXJ-xyD73VDmrSXSpp_b6FpOGD1jcZ2JugMRH5WyX4QhaKpz2mrNYe95rESPNHLZB2bARcEYoT0Zyc/s320/Screen+Shot+2020-03-03+at+06.20.46.png" width="320" /></a></div>
Sama seperti ozobot dan makecode, parallax juga berhubungan dengan robotik<br />
<b> 6. MakeWonder</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvIT7H1IfqYGR0lwdgGz2JGaPDEQT-1YIHzfs_K1y3W3oWH_d2SH9dt-LG7qtzWGhOxc9WYkONGSK5u7_5Cl9j10wfLxZhlSenKlu-eNEh__8hlbLpu-tjEDoAkcI9InrlXVkCLKKTxbk/s1600/Screen+Shot+2020-03-03+at+06.27.23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="826" data-original-width="1600" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvIT7H1IfqYGR0lwdgGz2JGaPDEQT-1YIHzfs_K1y3W3oWH_d2SH9dt-LG7qtzWGhOxc9WYkONGSK5u7_5Cl9j10wfLxZhlSenKlu-eNEh__8hlbLpu-tjEDoAkcI9InrlXVkCLKKTxbk/s320/Screen+Shot+2020-03-03+at+06.27.23.png" width="320" /></a></div>
Situs untuk belajar robotik dengan pemrograman blok visual<br />
<br />
<b>7. Roberta</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAB-nZmBOWbyh1oXGhSnlHHrSq6inLSo1COEEFPXpuWu8j42qT4CU0NgbAmZ5lokJTIkNgSeMPwkerf1COFHHQoZMGB-Yf3qkxqI7kuisuHz7TZaywPACNjTduYkH2GeEHjpZDXv8zjU/s1600/Screen+Shot+2020-03-03+at+06.29.59.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="576" data-original-width="1600" height="115" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAB-nZmBOWbyh1oXGhSnlHHrSq6inLSo1COEEFPXpuWu8j42qT4CU0NgbAmZ5lokJTIkNgSeMPwkerf1COFHHQoZMGB-Yf3qkxqI7kuisuHz7TZaywPACNjTduYkH2GeEHjpZDXv8zjU/s320/Screen+Shot+2020-03-03+at+06.29.59.png" width="320" /></a></div>
Dikutip dari teknosains. Google secara khusus meluncurkan Open Roberta, sebuah aplikasi Cloud Platform yang dapat membantu pelajar di jerman untuk memprogram robot dengan mudah tanpa perlu mempelajari bahasa pemrograman komplex terlebih dahulu.<br />
Open Roberta sendiri dipadukan dengan platform Lego Mindstorms sebuah platform (meliputi software dan hardware) yang dirancang agar robot dapat diprogram dan di kustomisasi dengan mudah.<br />
<br />
<b>8. Pipercode</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiruqEHar357TlGuDDXwWkwc23KbiGvFdbh2Yq2taRPLA08MzJdB0vJ1qfifpsiAKN1_ggPqll_xKrUGbQCbLCdKbr1AERFHaMCPBghdCuFb7bnUWoBK6u-5OMds-6fMqHV2ndOU8w0gl4/s1600/Screen+Shot+2020-03-03+at+06.33.04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="873" data-original-width="1600" height="174" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiruqEHar357TlGuDDXwWkwc23KbiGvFdbh2Yq2taRPLA08MzJdB0vJ1qfifpsiAKN1_ggPqll_xKrUGbQCbLCdKbr1AERFHaMCPBghdCuFb7bnUWoBK6u-5OMds-6fMqHV2ndOU8w0gl4/s320/Screen+Shot+2020-03-03+at+06.33.04.png" width="320" /></a></div>
Situs untuk belajar robotik dengan pemrograman blok visual<br />
<br />
<b>9. Gamefroot</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFQr_Obx1704qAYyZQNqjj5rBuOWIIBLUNnBArISugcOE16iY0bnVyjrrkKZG8cdsGSOaPs850h-pVKglhtAPVD1nhWTW1D57osr_SaMPPyH-PWKDcx5anutM8CY1NKhE_oQzsIluMkRs/s1600/Screen+Shot+2020-03-03+at+06.40.38.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="986" data-original-width="1600" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFQr_Obx1704qAYyZQNqjj5rBuOWIIBLUNnBArISugcOE16iY0bnVyjrrkKZG8cdsGSOaPs850h-pVKglhtAPVD1nhWTW1D57osr_SaMPPyH-PWKDcx5anutM8CY1NKhE_oQzsIluMkRs/s320/Screen+Shot+2020-03-03+at+06.40.38.png" width="320" /></a></div>
Berbeda dengan situs-situs sebelumnya yang menggunakan pemrograman blok visual untuk membuat aplikasi mobile dan robotik, gamefroot ini digunakan untuk membuat game<br />
<br />
<b>10. GameBlox Org</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDkdNAicbnUCOuyaiYtovdKR66cKBT4dZAaWMAz-7qP9sRa5Ty_S3r5IwAguhdNozFU3-xAzBiitxzD4o6NHX7hAET-XFI7K4HRBor1KCrFdZ8CE6rYMwVrprHgyF5n3xsU0LHqAW6yw8/s1600/Screen+Shot+2020-03-04+at+18.45.17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="940" data-original-width="1600" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDkdNAicbnUCOuyaiYtovdKR66cKBT4dZAaWMAz-7qP9sRa5Ty_S3r5IwAguhdNozFU3-xAzBiitxzD4o6NHX7hAET-XFI7K4HRBor1KCrFdZ8CE6rYMwVrprHgyF5n3xsU0LHqAW6yw8/s320/Screen+Shot+2020-03-04+at+18.45.17.png" width="320" /></a></div>
Sama seperti gamefroot, situs ini menawarkan platform pembuatan game tanpa coding, dan hasil game yang sudah dibuat, bisa dimainkan di android dan iOS<br />
<br />
<b>Perbandingan pemrograman blok visual dengan cara konvensional</b><br />
Pemrograman
blok visual adalah "gerbang" menuju dunia pemrograman, sedangkan
pemrograman konvensional adalah "jalan yang akan dilewati", karena blok
visual adalah metode pembelajaran agar pelajar mudah memahami fungsi
sintaks-sintaks dasar, dan pelajar hanya perlu menyusun alur program
dengan drag drop, tanpa khawatir salah menulis sintaks, kemudian program
bisa langsung dijalankan melalui menu emulator yang disediakan.<br />
<br />
Dengan
segala kemudahan yang dimiliki blok visual, tetap saja harus
menggunakan cara konvensional untuk mengerjakan proyek besar,
dikarenakan lama dan ribetnya menyusun kotak-kotak sintaks dan si
pemrogram akan mudah lupa dimana kordinat fungsi-fungsi yang sudah dia
susun, berbeda dengan mengkoding dengan text editor, kita tidak perlu
mencari ke kanan kiri, cukup menscroll saja dan itupun bisa menggunakan
fitur search.<br />
<br />
<br />
Itulah penjelasan mengenai pemrograman blok visual dan situs-situs untuk mempraktikannya serta perbandingannya dengan cara konvensional, jika Anda menemukan situs lainnya, silahkan isi di kotak komentar, selamat berkarya!<br />
<br />
<b>Referensi</b><br />
https://citragitaaulia.wordpress.com/2016/12/22/pemrograman-berbasis-blok/<br />
https://id.wikipedia.org/wiki/App_Inventor<br />
https://upload.wikimedia.org/wikipedia/commons/e/e6/Mit_app_inventor_2_beta2.png<br />
https://upload.wikimedia.org/wikipedia/commons/e/ea/Code1OrgCode.png<br />
https://www.codepolitan.com/ajak-anak-anak-untuk-coding-bersama-code-org<br />
https://upload.wikimedia.org/wikipedia/en/b/b0/MakecodeScreenCPX.jpg<br />
https://dailysocial.id/post/ozobot-robot-pintar-yang-mengintegrasi-video-game-dengan-board-game<br />
http://teknosains.com/i/luncurkan-open-roberta-google-bantu-pelajar-jerman-memprogram-robot<br />
https://makelearn.org/2018/06/06/text-based-vs-block-based-coding/<br />
https://blog.penjee.com/what-is-block-based-coding/Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-90133812083919674852020-02-20T06:00:00.001+07:002020-02-20T06:04:02.297+07:00Persiapan menuju dunia pemrograman<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoH6rC6gubvaiib1qsRcFEVMAXc3GdopRIgF6orOpz-A65IZiAJ_NudNqdLPWNTD53jFZsQq-sauSaCdTUh0cnwyN2bvOQbGr4DhttwWVav-YGgqHLdJCDhqTTmO9IiGb9Nakta6sarWs/s1600/fb.jpg" imageanchor="1"><img border="0" data-original-height="607" data-original-width="910" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoH6rC6gubvaiib1qsRcFEVMAXc3GdopRIgF6orOpz-A65IZiAJ_NudNqdLPWNTD53jFZsQq-sauSaCdTUh0cnwyN2bvOQbGr4DhttwWVav-YGgqHLdJCDhqTTmO9IiGb9Nakta6sarWs/s400/fb.jpg" width="400" /></a></div>
<br />
Cepatnya perkembangan teknologi informasi menuntut semua kalangan untuk selalu mempelajari teknologi2 terbaru, baik itu untuk kemudahan pekerjaannya, ataupun untuk tugasnya melindungi orang2 yang mereka cintai, seperti ibu rumah tangga yang harus melek teknologi agar bisa melindungi anak2nya dari penggunaan gadget yang melenceng.<br />
<br />
Sebagian orang mempelajari cara penggunaan teknologinya, tapi sebagian yang lain mempelajari bagaimana cara membuatnya, kategori kedua ini yang menarik mereka untuk terjun ke dunia pemrograman, baik karena iming2 gaji besar atau untuk memenuhi rasa penasaraannya. Tapi sayangnya, keinginan besar ini tidak diiringi oleh bekal, sehingga rasa kecewa dan rage quit menghampiri mereka yang menggebu2 untuk menjadi programmer.<br />
<br />
Beberapa hal yang perlu dipersiapkan untuk masuk ke dunia pemrograman, baik dari sisi mental, peralatan dan bahasa pemrograman apa saja yang direkomendasikan, antara lain<br />
<br />
<b>Dari Sisi Mental</b><br />
<br />
<b><a href="https://bahaskomputer.blogspot.com/2019/04/adab-dalam-belajar-pemrograman.html">1, Persiapkan adab</a></b>.<br />
Ketahuilah programmer adalah pekerjaan yang meenuntut kita untuk selalu berpikir, mencari solusi yang paling efektif dalam memecahkan sebuah masalah, karena teknologi selalu berkembang, maka kita harus mengesampingkan ego untuk mudah lapang dada pindah teknologi ketika ada teknologi yang
lebih baik padahal kita sudah mempelajari teknologi sebelumnya, misalnya
pindah bahasa pemrograman padahal kita sudah jago dalam bahasa
pemrograman sebelumnya, ini semua demi kemudahan memecahkan masalah yang kita hadapi.<br />
<br />
<b>2. Kita dituntut untuk mandiri</b><br />
Gunakan google,youtube dan forum atau media sosial lain untuk mencari solusi ketika menemukan error saat running, saat instalasi, saat compiling dan situasi lain, jutaan artikel dan video tersebar di internet dan kita dituntut untuk mandiri menemukannya. Bertanyalah jika memang kita sudah berusaha tetapi jawabannya belum ketemu, sebagaimana ada forum yang melarang membernya memposting pertanyaan dengan masalah yang sama berulang2 ketika pertanyaan yang sudah ada sudah dijawab.<br />
<br />
<b>3. Ketahui cara bertanya</b><br />
Banyak postingan pertanyaan di sosmed yang tidak jelas, bilang menemukan error tapi tanpa menyertakan screen shoot atau pesan errornya, atau pun menyertakan skrip satu file padahal pesan errornya hanya di baris tertentu, alih-alih mendapatkan jawaban yang memuaskan, justru malah menuai kritikan atau lebih parahnya lagi, dicuekin. Intinya, permudah orang2 di grup untuk mengerti apa masalah yang Anda tanyakan, bisa tambahkan video atau minimal screen shoot yang penting-penting.<br />
<br />
<b>4. Tentukan pola belajar</b><br />
Tentukan jadwal dan cara belajar, apakah melalui video tiga kali seminggu, melalui artikel dua kali seminggu, lalu pola belajarnya bagaimana, apakah mengikuti kursus online yang sudah menyediakan pola yang tinggal kita ikut atau membuat pola sendiri, gunakan aplikasi smartphone yang berfungsi sebagai pengingat jadwal, konsisten adalah kuncinya, belajar sedikit tetapi sering itu lebih baik daripada belajar satu buku sekaligus tapi jarang-jarang dan bahkan jarang dipraktekan. <br />
<br />
<br />
<b>Dari Sisi Peralatan</b><br />
<br />
<b>1. Laptop/PC </b><br />
Diperlukan laptop atau PC. Saya sarankan menggunakan laptop/PC yang memiliki RAM 4GB, dengan RAM sebanyak itu seharusnya sudah cukup untuk mendukung Anda. Untuk kekuatan grafisnya, tergantung apakah Anda akan menjadi programmer game? Kalau iya, gunakan laptop/PC yang bisa menampung grafik yang bagus. Jika Anda ingin menjadi programmer iOS, maka gunakan Macbook.<br />
<br />
<b>2. OS</b><br />
Saya sarankan gunakan OS Linux atau Mac, karena lebih aman dari Virus, tapi kalaupun mau Windows tidak masalah, apapun OSnya tetap diperlukan maintenance, lakukan backup secara berkala dan hapus file-file yang tidak penting. Tapi itu kembali lagi kepada produk yang ingin Anda ciptakan, jika ingin membuat aplikasi untuk iOS, maka gunakan Macbook.<br />
<br />
<b>3. Modem</b><br />
Untuk browsing tutorial, install library dan keperluan lainnya yang membutuhkan akses internet, gunakan modem. Gunakan paket data sesuai kemampuan Anda masing-masing. Jika paket datanya sedikit, maka cari tutorial yang berupa teks, bukan video atau audio. Beberapa pihak juga menyediakan IDE berbasis web untuk membuat aplikasi mobile sehingga butuh internet untuk mengerjakannya.<br />
<br />
<b>Bahasa Pemrograman apa yang direkomendasikan?</b><br />
<br />
Berikut daftar bahasa pemrograman yang layak Anda pelajari<br />
<br />
<h3>
1. JavaScript</h3>
<br />
<div style="text-align: justify;">
JavaScript benar-benar merupakan bahasa
pemrograman yang sangat populer hingga saat ini. Tidak mungkin menjadi
pengembang perangkat lunak hari ini tanpa menggunakan JavaScript dalam
beberapa cara. Menurut Survei Pengembang 2018 Stack Overflow, JavaScript
adalah bahasa yang paling populer di kalangan pengembang untuk tahun
keenam secara berturut-turut. Hampir 70 persen responden survei
melaporkan bahwa mereka telah menggunakan JavaScript pada tahun lalu.</div>
<div style="text-align: justify;">
Seiring dengan HTML dan CSS, JavaScript
sangat penting untuk pengembangan web front-end. Sebagian besar situs
web paling populer, dari Facebook dan Twitter hingga Gmail dan YouTube, bergantung pada JavaScript untuk membuat halaman web interaktif dan menampilkan konten secara dinamis kepada pengguna.</div>
<div style="text-align: justify;">
Selain JavaScript “murni”, ada juga
sejumlah pustaka dan kerangka kerja yang dimaksudkan untuk mempermudah
pembuatan JavaScript. Beberapa kerangka kerja yang paling populer
termasuk Angular, React, Vue, Ember dan jQuery. Pengembang JavaScript
profesional kemungkinan akan membutuhkan pengalaman dengan satu atau
lebih dari ini.</div>
<div style="text-align: justify;">
Meskipun JavaScript pada dasarnya adalah
bahasa front-end yang dijalankan di browser, JavaScript juga dapat
digunakan di sisi server melalui Node.js untuk membangun aplikasi
jaringan yang skalabel. Node.js kompatibel dengan Linux, SunOS, Mac OS X dan Windows.</div>
<div style="text-align: justify;">
Karena JavaScript memiliki sintaks yang
memaafkan dan fleksibel dan berfungsi di semua browser utama, ini adalah
salah satu bahasa pemrograman yang paling ramah untuk pemula.</div>
<h3>
2. PHP</h3>
<div style="text-align: justify;">
Pilihan lain bahasa pemrograman yang
kuat untuk pengembang web adalah PHP. Bahasa skrip sisi server ini
memperkokoh 83 persen situs web dan telah menjadi alat back-end penting
bagi raksasa teknologi seperti Facebook, Wikipedia, dan Yahoo. PHP juga
populer berkat perannya dalam sistem manajemen konten WordPress, yang membuat pengembangan situs web dapat diakses oleh massa.</div>
<div style="text-align: justify;">
PHP dapat disematkan dalam sistem
template web atau digunakan untuk meningkatkan fungsionalitas laman web
HTML. Ini juga mentransfer data melalui database query seperti MySQL dan
PostgreSQL.</div>
<div style="text-align: justify;">
Seperti halnya JavaScript, situs web
menggunakan PHP untuk berbagai tujuan, termasuk mengumpulkan dan
memverifikasi data formulir, membuat cookie, dan menampilkan konten dan
gambar dinamis. Juga seperti JavaScript, PHP menawarkan sejumlah
kerangka kerja, seperti Laravel dan Drupal, yang membantu pengembang
membangun aplikasi lebih cepat dan membuatnya lebih kuat, terukur dan
aman.</div>
<div style="text-align: justify;">
Jika Anda ingin bekerja sebagai
pengembang web freelance, PHP adalah bahasa praktis untuk dipelajari.
Dengan lebih dari 75 juta situs web yang menjalankan WordPress, akan
selalu ada kebutuhan bagi pengembang yang dapat membuat plugin PHP
khusus dan memberikan bantuan teknis.</div>
<h3>
3. Java</h3>
<div style="text-align: justify;">
Java, bahasa tujuan umum, telah menjadi
andalan di dunia pemrograman komputer selama lebih dari 20 tahun. Kunci
popularitasnya adalah filosofi “menulis sekali, jalankan di mana saja”.
Secara teoritis, Anda dapat menulis perangkat lunak Java di perangkat
apa pun, mengompilasinya ke kode mesin tingkat rendah, lalu
menjalankannya di platform apa pun yang dilengkapi dengan Java Virtual
Machine (JVM). Ini berarti Java sangat kompatibel lintas platform.</div>
<div style="text-align: justify;">
Java juga menjadi dasar untuk sistem
operasi Android dan bahasa yang paling umum untuk mengembangkan aplikasi
Android. Bahasa ini disukai oleh perusahaan juga, dengan sekitar 90
persen dari 500 perusahaan Fortune menggunakan Java untuk membangun
aplikasi dan sistem back end. Untuk melengkapi itu, sistem pengolahan
data Apache Hadoop ditulis di Java dan dijalankan oleh Amazon Web
Services dan Windows Azure.</div>
<div style="text-align: justify;">
Berkat keserbagunaan dan keunikannya,
Java adalah bahasa yang umum bagi pemula untuk dipelajari, dan ini
digunakan dalam banyak kursus pemrograman pengantar.</div>
<div style="text-align: justify;">
Dengan begitu banyak kasus penggunaan
yang berbeda, Java adalah taruhan pasti untuk programmer yang mencari
bahasa modular fleksibel dengan aplikasi bisnis yang mengakar, dan oleh
karena itu prospek pekerjaan.</div>
<h3>
4. C / C++</h3>
<div style="text-align: justify;">
C adalah bahasa pemrograman old-school
yang masih hidup dan baik hari ini. Pertama kali diperkenalkan pada
tahun 1970-an, C memiliki pengaruh yang kuat pada lanskap pemrograman
komputer, meskipun kurva pembelajarannya yang curam.</div>
<div style="text-align: justify;">
Ada lusinan bahasa dalam keluarga C yang
berasal dari C atau sangat dipengaruhi oleh sintaks, konstruk dan
paradigma. Ini termasuk beberapa bahasa yang disebutkan dalam artikel
ini, termasuk Java, Objective-C dan C #.</div>
<div style="text-align: justify;">
Karena ini memungkinkan Anda untuk
menjadi sangat dekat dengan pekerjaan di dalam komputer, C tetap menjadi
pilihan populer untuk membangun aplikasi khusus berkinerja tinggi. C
adalah dasar untuk sistem operasi Linux dan sering digunakan untuk
pemrograman embedded system.</div>
<div style="text-align: justify;">
Salah satu penerus paling langsung dari C
adalah bahasa pemrograman C++. C++ dibangun di C, yang memberikan
banyak keuntungan yang sama, tetapi C++ adalah bahasa berorientasi objek
dan karena itu merupakan pilihan yang lebih baik ketika mengembangkan
aplikasi tingkat yang lebih tinggi. C++ adalah pilihan yang sangat
populer untuk grafik komputer, gim video dan virtual reality.</div>
<div class="9c448c57e322084b6201708072004b81" data-index="2" style="float: none; margin: 5px 0 5px 0; text-align: center;">
</div>
<h3>
5. Swift</h3>
<div style="text-align: justify;">
Jika Anda tertarik dengan produk Apple
dan pengembangan aplikasi seluler, Swift adalah tempat yang baik untuk
memulai. Pertama kali diumumkan oleh Apple pada tahun 2014, Swift adalah
bahasa pemrograman yang relatif baru yang digunakan untuk mengembangkan
aplikasi iOS dan macOS. Menurut Github’s State of the Octoverse Report,
Swift telah berkembang pesat, sekarang peringkat ke-13 sebagai bahasa
paling populer dengan menarik permintaan.</div>
<div style="text-align: justify;">
Pengembang menggunakan Swift untuk
membuat aplikasi iOS, macOS, dan Linux yang kuat, berkinerja tinggi, dan
asli. Swift dimaksudkan untuk menjadi lebih cepat, lebih ramping, dan
lebih mudah untuk didebug daripada Objective-C pendahulunya. Setelah
masuk untuk pengembangan iOS, Objective-C sekarang dianggap kikuk dan
diberi tanggal oleh banyak pengembang. Sebaliknya, Swift telah
dioptimalkan untuk kinerja dan dibangun dari bawah ke atas agar sesuai
dengan realitas perkembangan iOS modern.</div>
<div style="text-align: justify;">
Mengembangkan keterampilan pemrograman
Swift adalah investasi yang bijaksana untuk calon insinyur perangkat
lunak. Tidak hanya iOS yang berjalan di setiap iPhone dan iPad, itu juga
menjadi dasar untuk sistem operasi lain seperti watchOS (untuk Apple
Watches) dan tvOS (untuk Apple TV). Selain itu, Apple tidak akan menjadi
pemimpin industri teknologi dan aplikasi iOS terus menjadi yang paling
menguntungkan di pasar aplikasi seluler.</div>
<h3>
6. Python</h3>
<div style="text-align: justify;">
Python mungkin adalah bahasa pemrograman
yang paling mudah digunakan di daftar ini. Sering dikatakan bahwa
sintaks Python jelas, intuitif dan hampir mirip bahasa Inggris, yang,
seperti Java, membuatnya menjadi pilihan populer untuk pemula.</div>
<div style="text-align: justify;">
Juga seperti Java, Python memiliki
berbagai aplikasi yang membuatnya menjadi pilihan yang serbaguna dan
kuat ketika memilih bahasa pemrograman terbaik untuk kasus penggunaan
Anda. Jika Anda tertarik dengan pengembangan web back-end, misalnya,
maka kerangka kerja Django open-source, yang ditulis dengan Python,
populer, mudah dipelajari, dan kaya fitur. Django telah digunakan dalam
pengembangan beberapa situs populer seperti Mozilla, <a href="https://www.centerklik.com/5-plugin-instagram-gratis-terbaik-untuk-wordpress/" rel="noopener noreferrer" target="_blank">Instagram</a>, dan Spotify.</div>
<div style="text-align: justify;">
Python juga memiliki paket seperti NumPy
dan SciPy yang umum digunakan dalam bidang komputasi ilmiah,
matematika, dan teknik. Perpustakaan Python lain seperti TensorFlow,
PyTorch, scikit-learn dan OpenCV digunakan untuk membangun program dalam
ilmu data, pembelajaran mesin, pemrosesan gambar dan visi komputer.
Aplikasi sains dan data Python membuatnya menjadi pilihan yang bagus
untuk bidang akademis.</div>
<h3>
7. Ruby</h3>
<div style="text-align: justify;">
Ruby adalah bahasa scripting lain yang
biasa digunakan untuk pengembangan web. Secara khusus, ini digunakan
sebagai dasar untuk kerangka kerja aplikasi web Ruby on Rails yang
populer.</div>
<div style="text-align: justify;">
Pemula sering tertarik ke Ruby karena
memiliki reputasi memiliki salah satu komunitas pengguna yang paling
ramah dan paling membantu. Komunitas Ruby bahkan memiliki pepatah tidak
resmi, “Matz itu bagus dan kami sangat baik,” mendorong anggota untuk
meniru perilaku baik dan perhatian mereka pada penemu utama Ruby,
Yukihiro Matsumoto.</div>
<div style="text-align: justify;">
Selain komunitas yang aktif dan
sintaksnya yang langsung, Ruby juga merupakan bahasa yang baik untuk
diambil berkat hubungannya dengan bisnis teknologi yang hebat. Twitter,
Airbnb, Bloomberg, Shopify, dan banyak startup lainnya telah membangun
situs web mereka menggunakan Ruby on Rails di beberapa titik.</div>
<h3>
8. C#</h3>
<div style="text-align: justify;">
Seperti C++, C# (diucapkan C Sharp)
adalah bahasa tujuan-tujuan, berorientasi objek yang dibangun di atas
fondasi C. Awalnya dirancang oleh Microsoft sebagai bagian dari kerangka
.NET untuk membangun aplikasi Windows.</div>
<div style="text-align: justify;">
Sama seperti Swift adalah bahasa pilihan
untuk aplikasi iOS, C# adalah bahasa pemrograman terkemuka untuk
membangun aplikasi asli platform Microsoft. C# menggunakan sintaks yang
mirip dengan bahasa yang berasal dari C lainnya seperti C++, sehingga
mudah diambil jika Anda berasal dari bahasa lain di keluarga C.</div>
<div style="text-align: justify;">
C# bukan hanya untuk pengembangan
aplikasi Microsoft, tetapi juga digunakan oleh pengembang mobile bahasa
untuk membuat aplikasi lintas platform di platform Xamarin. Alih-alih
menulis aplikasi iOS Anda di Swift dan aplikasi Android Anda di Java,
yang merupakan dua kali pekerjaan, Anda dapat menulis satu aplikasi
menggunakan Xamarin dan C# dan menyebarkannya ke kedua platform secara
bersamaan.</div>
<div style="text-align: justify;">
Akhirnya, siapa pun yang tertarik dengan
pengembangan VR harus mempertimbangkan belajar C#. C# adalah bahasa
yang direkomendasikan untuk membuat video game 3D dan 2D menggunakan
mesin game Unity yang populer, yang menghasilkan sepertiga dari game
teratas di pasar.</div>
<h3>
9. Rust</h3>
<div style="text-align: justify;">
Rust sedikit baru di antara bahasa lain
di daftar ini, tetapi itu tidak berarti itu bukan bahasa yang berharga
untuk dipelajari. Survei Pengembang 2018 Stack Overflow menemukan bahwa
Rust adalah bahasa pemrograman yang paling disukai di kalangan
pengembang untuk tahun ketiga berturut-turut, dengan 78 persen
pengembang Rust mengatakan bahwa mereka ingin terus bekerja dengannya.</div>
<div style="text-align: justify;">
Dikembangkan oleh Mozilla Corporation,
Rust, seperti C dan C++, ditujukan terutama untuk pemrograman sistem
tingkat rendah. Apa yang Rust tambahkan ke campuran, bagaimanapun,
adalah penekanan pada kecepatan dan keamanan. Rust menekankan menulis
“kode aman” dengan mencegah program mengakses bagian memori yang
seharusnya tidak boleh mereka lakukan, yang dapat menyebabkan perilaku
tak terduga dan sistem crash.</div>
<div style="text-align: justify;">
Keuntungan dari Rust berarti bahwa
perusahaan teknologi besar lainnya, seperti Dropbox dan Coursera, sudah
mulai menggunakannya secara internal. Meskipun mungkin sedikit lebih
sulit untuk dikuasai daripada bahasa pemula lainnya, keterampilan
pemrograman Rust cenderung melunasi dengan gemilang karena popularitas
bahasa hanya akan terus meningkat dalam waktu dekat.<br />
<br />
Selamat Mencoba! <br />
Intinya, untuk terjun ke dunia pemrograman, diperlukan niat, komitmen dan konsistensi, baru kemudian didukung oleh alat-alat yang cukup. Semoga berhasil!</div>
<br />
<br />
<b>Daftar Referensi</b><br />
Gambar utama : https://p0.piqsels.com/preview/272/489/111/black-and-white-luggage-man-monochrome.jpg<br />
<br />
<b>Tulisan</b><br />
https://www.centerklik.com/bahasa-pemrograman-terbaik-untuk-dipelajari/<br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-23242001256795699942019-05-17T08:00:00.001+07:002020-02-20T06:21:44.936+07:00Empat kaki, satu selimut, magic number<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbc0uVJMsqyGtlyBYdGMJRsdjbDCHG5Tnl7qhHytLNjKqyLh1cSTkupr73uWpu8854KzOoLOOnJc4ePq1DaMLIYlVSY_rhWRoraftK6IBH2DaV_35tNNbm1BoH4cIaphP9ybT2ZrFYyuw/s1600/fb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="1024" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbc0uVJMsqyGtlyBYdGMJRsdjbDCHG5Tnl7qhHytLNjKqyLh1cSTkupr73uWpu8854KzOoLOOnJc4ePq1DaMLIYlVSY_rhWRoraftK6IBH2DaV_35tNNbm1BoH4cIaphP9ybT2ZrFYyuw/s640/fb.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Sebut saja namanya Mawar, dia ingin membelikan baju untuk suaminya sebagai hadiah karena puasanya full sebulan, saat di toko, terjadi percakapan antara Mawar dan si penjual baju, sebut saja namanya Joko<br />
<br />
Mawar : Bang, beli baju batiknya dua<br />
<br />
Joko : Dua lusin?<br />
<br />
Mawar : Engga, dua biji aja<br />
<br />
Joko : Nyari ukuran berapa?<br />
<br />
Mawar : 1,56 panjangnya<br />
<br />
Joko : 1,56 meter?<br />
<br />
Mawar : Iya<br />
<br />
Joko : Ada nih, 1,5 aja<br />
<br />
Mawar : 1,5 juta?<br />
<br />
Joko : Engga, 150 ribu<br />
<br />
Setelah terjadi negosiasi sengit antara keduanya, Mawar berhasil membeli baju di harga yang diinginkannya. Poin yang ingin saya tekankan disini adalah tidak jelasnya satuan dari angka-angka yang diucapkan sehingga terjadi dialog tidak penting, seperti dua biji ternyata dua lusin, 1,56 apakah meter atau bukan, 1,5 juta ternyata 150 ribu.<br />
<br />
Begitu juga dalam pemrograman, sering kali kita menulis angka-angka yang hanya dimengerti oleh kita sendiri, contohnya seperti di bawah ini<br />
<br />
$umur=20;<br />
<br />
if($umur>=30){<br />
//skrip jika dibawah 30<br />
}<br />
<br />
Pada skrip di atas, apakah kita tahu maksud dari 30? tidak, apakah 30 adalah batasan umur? apakah 30 tahun? atau 30 dekade? atau 30 abad? Akan lebih jelas kalau 30 itu dimasukan ke dalam sebuah variable, seperti contoh di bawah ini<br />
<br />
$umur=20;<br />
$batasumur=30; <br />
<br />
if($umur>=$batasumur){<br />
//skrip jika dibawah batas umur<br />
}<br />
<br />
Skrip di atas lebih mudah dipahami, pembaca tahu bahwa program di atas mencoba mengenali apakah nilai umur melebihi batas umur atau tidak, contoh lainnya adalah skrip di bawah ini<br />
<br />
$jumlahorder=5;<br />
$hargasatuan=50000;<br />
$totalharga=$jumlahorder*$hargasatuan;<br />
$hargadibayar=$totalharga;<br />
<br />
if($totalharga>250000){<br />
<br />
$hargadibayar=$totalharga*30/100;<br />
<br />
}<br />
<br />
Pada skrip di atas, sulit dipahami apa itu 250000, dan apa itu 30/100, akan lebih mudah dipahami kalau skripnya seperti ini <br />
<br />
<br />
$jumlahorder=5;<br />
$hargasatuan=50000;<br />
$totalharga=$jumlahorder*$hargasatuan;<br />
$hargadibayar=$totalharga;<br />
$syaratdiskon=250000;<br />
$diskon=30/100;<br />
<br />
if($totalharga>$syaratdiskon){<br />
<br />
$hargadibayar=$totalharga*$diskon;<br />
<br />
}<br />
<br />
Sekarang kita tahu, bahwa program diatas akan menentukan apakah total harga telah melebihi syarat diskon, jika iya, maka harga yang harus dibayar sudah termasuk diskon.<br />
<br />
Dan masih banyak lagi kasus-kasus skrip lainnya yang berisi Magic Number, yaitu angka-angka yang hanya dimengerti oleh si programmer dan Allah SWT. <br />
<br />
Memang kelihatannya ini hal remeh, tetapi bukankah setiap masalah besar berasal dari hal-hal kecil yang diremehkan? Mari kita minimalkan jumlah angka-angka ajaib di kodingan kita mulai saat ini. Apabila ada masukan, silahkan isi kotak komentar di bawah artikel ini, syukron<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-85767146628571579212019-05-01T08:14:00.001+07:002020-02-20T06:20:38.377+07:00Berpisah lebih baik, prinsip SOLID<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM8tcOyV0MDZ-4D12XVpebvBDVchNyXMyr_5uaud_sc8bQ959CKzIIVFd_aEeOnJqyo6PrAqxHFjhGNVUbM86UD5779yNCVBh51EUd3KkMUCZsUxPoY4sgz4ve5UhrE0ZS9-Pmnu2s3CM/s1600/fb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="1024" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM8tcOyV0MDZ-4D12XVpebvBDVchNyXMyr_5uaud_sc8bQ959CKzIIVFd_aEeOnJqyo6PrAqxHFjhGNVUbM86UD5779yNCVBh51EUd3KkMUCZsUxPoY4sgz4ve5UhrE0ZS9-Pmnu2s3CM/s320/fb.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
Atas kuasa Allah SWT, setiap orang memiliki batas kemampuannya masing-masing. dan kita sering membanggakan seseorang atau diri sendiri dari berapa banyak beban atau tanggung jawab yang mampu dipikul, semakin banyak kemampuannya maka semakin kita membanggakannya. Begitu juga ketika kita menciptakan software, kita akan senang ketika berhasil membuat software yang memiliki banyak fitur. Akan tetapi, berbeda ketika kita membuat sebuah Class.<br />
<br />
Class, adalah komponen yang sering kali kita remehkan penggunaannya, dengan begitu kita membuat satu class memiliki banyak beragam fungsi, sehingga classnya menjadi gemuk, semakin gemuk suatu class maka semakin sulit untuk mempelajarinya, serta semakin sulit jika suatu waktu ingin membersihkan skrip-skrip yang sudah tidak terpakai.<br />
<br />
Maka gunakanlah prinsip SOLID, yaitu singkatan dari<br />
<br />
1.Single Responsibility Principle<br />
2.Open/Closed Principle<br />
3.Liskov Substitution Principle<br />
4.Interface Segregation Principle<br />
5.Dependency Inversion Principle<br />
<br />
<b>1. Single Responsibility Principle</b><br />
<br />
Artinya, suatu kelas seharusnya hanya mempunyai satu tujuan, Contohnya adalah class User di bawah ini<br />
<br />
class User{<br />
public function getName() {}<br />
public function getEmail() {}<br />
public function find($id) {}<br />
public function save() {}<br />
}<br />
<br />
Class diatas memiliki dua tujuan, yaitu memanajemen eksistensi data (getter setter) variabel dan
menyimpan dan mengambil data (entah melalui API, session, file atau
database). Maka akan lebih baik kalau class di atas, dipisah menjadi dua class, contohnya di bawah ini<br />
<br />
class User{<br />
public function getName() {}<br />
public function getEmail() {}<br />
}<br />
<br />
class UserRepository{<br />
public function find($id) {}<br />
public function save(User $user) {}<br />
}<br />
<br />
Sekarang ada dua class, satu untuk memanajemen variabel di dalam class User, satu lagi untuk memanajemen dari mana dan ke mana class User ini disimpan, dua class untuk dua tujuan.<br />
<br />
<br />
<b>2. Open/Closed Principle</b><br />
<br />
Yaitu class yang kita buat(misal class hitung), bisa digunakan di kemudian hari oleh class lain tanpa harus merubah skrip yang ada di class hitung. Disebut open dalam artian class hitung dapat dijadikan ekstensi atau plugin untuk digunakan oleh class-class yang membutuhkan operasi matematika, dan class yang menggunakannya sebagai extend, dapat meng override fungsi-fungsi di dalam class tersebut untuk digunakan sebebas-bebasnya.<br />
<br />
Disebut closed dalam artian class hitung tidak boleh dimodifikasi, dan class hitung membatasi tipe-tipe data yang diterimanya(misal melalui constructor) dan membatasi tipe data yang dikeluarkannya(return). Karena dengan merubah class hitung, dapat membahayakan class-class lain yang juga menggunakan class hitung.<br />
<br />
<br />
<b>3.Liskov Substitution Principle</b><br />
<br />
Ketika class yang Anda buat, mengextends atau mengimplements dari class lain, pastikan semua function dari class induknya, dapat digunakan oleh class anaknya, dan class induk tidak perlu tahu class-class apa saja yang akan menjadi anaknya. Misal sebagai berikut<br />
<br />
public class Burung{<br />
public void makan(){}<br />
public void terbang(){}<br />
}<br />
<br />
public class BurungGereja extends Burung{}
<br />
<br />
Class Burung mempunyai function terbang, ketika digunakan oleh class BurungGereja maka class tersebut bisa menggunakan function terbang dan makan juga. Tetapi lihatlah contoh dibawah ini<br />
<br />
public class BurungOnta extends Burung{}
<br />
<br />
Kelihatannya benar, tetapi class BurungOnta tidak bisa menggunakan function terbang, sehingga hanya function makan yang bisa digunakan, maka solusinya adalah sebagai berikut<br />
<br />
public class Burung{<br />
public void makan(){}<br />
}<br />
public class BurungTerbang extends Burung{<br />
public void terbang(){}<br />
}<br />
<br />
public class BurungGereja extends BurungTerbang{}<br />
<br />
public class BurungOnta extends Burung{}<br />
<br />
Dengan membagi class menjadi hirarki-hirarki, class-class lain bisa mengextends sesuai keperluannya, dalam kasus ini yaitu class BurungGereja mengextends class BurungTerbang, karena class tersebut butuh function makan dan terbang, sementara class BurungOnta mengextends class Burung, karena class tersebut butuh function makan saja.<br />
<br />
<b>4.</b><b>Interface Segregation Principle</b><br />
<br />
Yaitu suatu class yang mengimplements suatu interface, tidak dipaksa untuk mengimplemen function interface yang tidak dibutuhkan. Contohnya seperti di bawah ini<br />
<br />
public interface <b>atlit</b> {<br />
<br />
void berenang();<br />
<br />
void berlari();<br />
<br />
void lompatjauh();<br />
<br />
void mulai();<br />
<br />
}<br />
<br />
public <b>atlit_renang</b> implements <b>atlit</b>(){<br />
<br />
<br />
public void mulai(){<br />
<br />
}<br />
<br />
public void berenang(){<br />
<br />
}<br />
<br />
public void berlari(){<br />
<br />
}<br />
<br />
public void lompatjauh(){<br />
<br />
}<br />
<br />
}<br />
<br />
Class atlit_renang tidak membutuhkan void berlari atau lompat jauh, tetapi karena dia mengimplements class atlit maka terpaksa dia menyediakannya. Maka akan lebih baik jika dipisah menjadi cabang_renang seperti contoh dibawah ini<br />
<br />
public interface <b>atlit</b> {<br />
<br />
void mulai();<br />
<br />
}<br />
<br />
public interface <b>cabang_renang</b> extends <b>atlit</b> {<br />
<br />
void berenang();<br />
<br />
}<br />
<br />
public <b>atlit_renang</b> implements <b>cabang_renang</b>(){<br />
<br />
public void mulai(){<br />
<br />
}<br />
<br />
public void berenang(){<br />
<br />
}<br />
<br />
}<br />
<br />
Dengan begini, class atlit_renang hanya menggunakan void berenang dan void mulai, sesuai dengan kebutuhannya<br />
<br />
<br />
<b>5.</b><b>Dependency Inversion Principle</b><br />
<br />
Prinsip ini memiliki dua poin, yaitu :<br />
<br />
1. Class induk atas tidak bergantung dengan class anak, dan kedua class seharusnya bergantung pada class abstraksi<br />
<br />
2. Class abstraksi seharusnya tidak perlu mengetahui hal-hal detail, karena class yang memakai class abstraksi lah yang seharusnya menyediakan info detail<br />
<br />
Untuk lebih memahaminya, lihatlah contoh di bawah ini<br />
<br />
public class <b>pertempuran</b> {<br />
<br />
pasukan_panah pp = new pasukan_panah();<br />
pasukan_berkuda pb = new pasukan_berkuda();<br />
<br />
pp.memanah();<br />
pb.berkuda(); <br />
<br />
}<br />
<br />
Pada contoh di atas, class pertempuran bergantung pada class anak yaitu class pasukan_panah dan pasukan_berkuda, kemudian bergantung pada function memanah dan berkuda(), apabila terjadi perubahan atau dihapusnya class pasukan_panah, maka skrip di class pertempuran juga harus dirubah, hal ini melanggar prinsip dependency inversion. Maka untuk solusinya adalah dengan sebagai berikut.<br />
<br />
public interface <b>pasukan</b> {<br />
<br />
void menyerang();<br />
<br />
}<br />
<br />
class pasukan adalah class abstraksi, dia tidak perlu mengetahui hal-hal detail, tidak perlu tahu siapa saja jenis pasukannya dan apa saja metode penyerangannya, dia hanya menyediakan void menyerang dan hanya tahu bahwa gunanya pasukan adalah untuk menyerang. <br />
<br />
public <b>pasukan_panah</b> implements <b>pasukan</b> {<br />
<br />
public void menyerang(){<br />
<br />
memanah();<br />
<br />
}<br />
<br />
public void memanah(){<br />
<br />
}<br />
<br />
}<br />
public <b>pasukan_berkuda</b> implements <b>pasukan</b> {<br />
<br />
public void menyerang(){<br />
<br />
berkuda();<br />
<br />
}<br />
<br />
public void berkuda(){<br />
<br />
}<br />
<br />
}<br />
<br />
class pasukan_panah dan pasukan_berkuda lah yang mengimplements class pasukan dan kedua class ini yang membeberkan secara detail bagaimana taktik penyerangannya <br />
<br />
<br />
public class <b>pertempuran</b> {<br />
<br />
List<pasukan> pasukan_list;</pasukan><br />
<br />
public pertempuran(List<pasukan> pasukan_list){</pasukan><br />
this.pasukan_list = pasukan_list;<br />
} <br />
<br />
public void mulai_pertempuran(){<br />
<br />
pasukan_list.forEach(p->p.menyerang());<br />
<br />
}<br />
<br />
}<br />
<br />
Dengan begini, class pertempuran tidak perlu tahu jenis-jenis pasukan dan metode penyerangannya, sehingga apabila class pasukan_panah dihapus maka skrip class pasukan tidak perlu diganti.<br />
<br />
Itulah lima poin SOLID yang harus kita terapkan pada kodingan kita, sehingga class-class yang kita buat, mudah untuk dikembangkan dan dites. Maka jangan lagi bebankan tugas yang banyak pada satu class, pecah-pecahlah fungsi-fungsinya, agar classnya tidak "gendut".<br />
<br />
Itu saja yang bisa saya bahas di sini, silahkan ikut diskusi di kolom komentar di bawah ini, syukron<br />
<br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-85303346211716742482019-04-19T06:59:00.002+07:002019-04-19T06:59:37.445+07:00Titik mu ternyata koma<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS5nHndM1Rs7TWgOH7cPDmRbMmLqO38oEblxvxuZ5_-wv6xniQALXkzO3oHNK0oL59oFMMzmqFUcA4CAxSp0o_iXQUfgYvDwAW-ARMGlQyJX8DWpi3zmgbWJKXCFZbUXeXu1ani0Q4ks8/s1600/fb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="381" data-original-width="640" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS5nHndM1Rs7TWgOH7cPDmRbMmLqO38oEblxvxuZ5_-wv6xniQALXkzO3oHNK0oL59oFMMzmqFUcA4CAxSp0o_iXQUfgYvDwAW-ARMGlQyJX8DWpi3zmgbWJKXCFZbUXeXu1ani0Q4ks8/s320/fb.jpg" width="320" /></a></div>
<br />
Artikel lainnya yang membahas bahayanya sifat ujub pada diri programmer. Perlu kita ingat, perkembangan teknologi begitu cepat, maka tidak bijak kalau kita merasa cukup dengan penghargaan-penghargaan yang sudah kita dapat. Jika pada <a href="https://bahaskomputer.blogspot.com/2019/04/majelis-majelis-ilmu-pemrograman.html">artikel pertama</a> kita bahas satu cara untuk menghilangkan sifat ujub ini yaitu dengan terus belajar, maka pada artikel kedua ini akan saya berikan hal-hal apalagi yang bisa membantu kita terjauhkan dari sifat ujub.<br />
<br />
1) <b>Terus buat produk-produk dummy</b><br />
<br />
Yakni produk-produk yang kita buat di saat tidak memiliki proyek, bagi
yang memiliki blog mungkin sering membuat produk dummy untuk kemudian
dishare melalui blognya seperti sayaa. Coba buat produk-produk yang sederhana
tapi bisa dipakai dan jelas dari desain UInya walaupun simpel. Walaupun tidak ada yang membayar, tapi ada dua keuntungan yang bisa didapatkan.<br />
<br />
1.1) Mendatangkan klien<br />
<br />
Ini pengalaman pribadi. Saya pernah membuat software web based yang
menangkap gambar webcam di komputer, nah kemudian saya share secara
gratis di blog, beberapa bulan kemudian saya mendapatkan email dari orang yang
sudah mencoba software webcam itu dan membutuhkan jasa saya untuk
membuatkan software yang desktop based.<br />
<br />
1.2) Bahan Portfolio<br />
<br />
Semakin banyak proyek yang Anda kerjakan, semakin banyak bahan portofolio agar calon-calon klien semakin yakin dengan kredibilitas Anda.<br />
<br />
<br />
2) <b>Kejar terus penghargaan</b><br />
<br />
Ini merupakan senjata yang dibutuhkan dalam memburu proyek.
Penghargaan bisa didapat dengan cara mengikuti kursus ataupun lomba.
Dengan banyaknya penghargaan, klien semakin yakin dengan kemampuan kita. Atau, bisa juga diganti dengan sertifikat keikut-sertaan
kegiatan-kegiatan yang berhubungan dengan bidang yang Anda tekuni. Semakin banyak acara kursus yang Anda ikuti, semakin bertambah ilmu Anda<br />
<br />
3) <b>Perbaiki terus Surat Penawaran</b><br />
<br />
Supaya tidak copy paste dan supaya tidak malas dalam menulis surat penawaran, latihlah kemampuan Anda dalam mengkreasikan kosa-kata kosa-kata, tambahkan sentuhan personal agar si pembaca tidak merasa bahwa Anda malas menulis dan hanya menyalin dari surat penawaran yang sudah tersebar di google.<br />
<br />
Demikianlah poin-poin yang bisa saya sampaikan, jangan diam, jangan merasa cepat puas, karena diatas langit-masih ada langit.<br />
<br />
SyukronAnhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-42519193511377019722019-04-11T07:53:00.003+07:002019-04-11T07:53:47.002+07:00Majelis majelis ilmu pemrograman<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDmTyx8QcC7PX5XUKPEGvQDZLc6c1AM7HPZiIor6h4ikY0oVb9T2Qv_BWqrngY5h9J3UQgyx-J9R4P0kwMLp5SFDE_pkuPu602ksz-1Lh9hxFLXD4QnhZOR-MstOCNqtRKdE_tIhsuACA/s1600/fb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1046" data-original-width="1600" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDmTyx8QcC7PX5XUKPEGvQDZLc6c1AM7HPZiIor6h4ikY0oVb9T2Qv_BWqrngY5h9J3UQgyx-J9R4P0kwMLp5SFDE_pkuPu602ksz-1Lh9hxFLXD4QnhZOR-MstOCNqtRKdE_tIhsuACA/s320/fb.jpg" width="320" /></a></div>
<br />
<br />
Yang paling berbahaya dalam seluruh profesi, adalah sifat cepat puas dengan ilmu yang dimiliki. Sesungguhnya sifat ujub itu dilarang, karena berbahaya di dunia dan berbahaya di akhirat. Lalu bagaimana agar kita tidak memiliki sifat ujub? Yaitu dengan terus belajar, ingatlah, orang yang semakin mendalami suatu bidang, semakin dia merasa bodoh di bidang tersebut, kalau Anda sekarang merasa sudah hebat di bidang tersebut, maka siap-siaplah menghadapi kehancuran diri Anda sendiri, karena sebenarnya Anda termasuk orang-orang yang ujub. Di bawah ini ada beberapa website tempat Anda bisa mempelajari ilmu pemrograman secara rutin.<br />
<br />
1) Mbah Google<br />
<br />
Dari saya SMP sampai sekarang kuliah sebutannya kebanyakan Mbah Google
atau Eyang Google. Misal Anda mau belajar
teknik looping, tanya ke mbah google, nanti Anda diarahkan ke website yang
mengajarkan teknik looping.<br />
<br />
2) W3 School<br />
<br />Untuk pelajaran seputar web development, disinilah tempatnya. Disediakan teori, skrip dan runtime di browsernya. <br />
<br />
3) Stack Overflow<br />
<br />
Cara orang belajar itu macam-macam, ada yang praktik teori dan ada juga
yang belajar langsung dari masalah-masalah yang ada atau istilahnya
studi kasus lah. Di situs Stack Overflow Anda akan menemukan beragam
problem baik yang sudah dipecahkan ataupun belum, kalau saya sendiri
lebih suka belajar disini.<br />
<br />
<br />
4) Code Fight<br />
<br />
Anda bisa berlatih
kemampuan algoritma dan pengetahuan bahasa pemrograman dengan cara
memecahkan masalah-masalah yang disediakan dalam waktu yang dibatasi,
Anda bahkan bisa bersaing dengan member lain untuk beradu cepat,
karena di website ini, semakin cepat maka bisa dibilang semakin hebat kemampuan
Anda.<br />
<br /><br />
5) Dikoding<br />
<br />
Situs dikoding ini bikinan orang indonesia. Sama seperti Stack Overflow
tempatnya membahas masalah-masalah yang dihadapin programmer lain. Kalau
Anda tipe orang yang suka belajar dari masalah, dua situs ini cocok
untuk Anda.<br />
<br />
Demikian lah lima website yang bisa dijadikan rujukan untuk belajar pemrograman. Jika Anda mempunyai rujukan lain, silahkan isi komentar di bawah ini<br />
<br />
Syukron<br />
<br />
<br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-66371593650283324762019-04-07T07:05:00.002+07:002020-02-20T06:21:14.435+07:00Serupa tapi tak sama, poin-poin penting dalam dunia desain<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin4eBdLs_nJniSXrz9ZN9uHN17noPxLTh2gTTLiYoLzIuvWPYtt61nnsQ_JEnXRfUG2JhL6RIocXUdCxGHzuMlSKMLjz68zD92ePAzpXYPmF038a_S2LWdQmyWgEaPokcccudQ0b7MOTE/s1600/fb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="576" data-original-width="1024" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin4eBdLs_nJniSXrz9ZN9uHN17noPxLTh2gTTLiYoLzIuvWPYtt61nnsQ_JEnXRfUG2JhL6RIocXUdCxGHzuMlSKMLjz68zD92ePAzpXYPmF038a_S2LWdQmyWgEaPokcccudQ0b7MOTE/s320/fb.jpg" width="320" /></a></div>
<br />
Saya mencoba mengingatkan poin-poin penting dalam dunia desain, sebagai pedoman kawan-kawan dalam merancang tampilan agar program yang dibuat, nyaman dilihat dan nyaman digunakan<br />
<br />
1. Jaga kontras warna<br />
<br />
Pentingnya menjaga kontras warna dalam desain, agar user bisa jelas membedakan komponen satu dengan yang lainnya, tidak jarang sekarang masih ada website atau aplikasi yang tidak memperhatikan kontras ini, sehingga, warna tulisan dan warna backgroundnya sama, atau kalaupun berbeda, tetap tidak kontras, misal warna backgroundnya hijau tua, warna tulisannya hitam, dan langsung saja saya keluar dari website tersebut.<br />
<br />
2. Beritahukan jika ada loading<br />
<br />
Sudah menjadi rahasia umum, kecepatan program saat di publish, tidak secepat saat di develop, contohnya website, sangat cepat mendapatkan data user saat login sehingga begitu tekan ENTER, maka user langsung masuk ke halaman member, tapi bagaimana setelah dipublish? Tentu tidak semua user punya koneksi cepat, maka berikanlah tampilan loading supaya user tahu bahwa dia harus menunggu pengiriman data selesai<br />
<br />
3. Pentingnya validasi form<br />
<br />
Meskipun ada pepatah mengatakan "Jangan percaya pada apapun yang user kirimkan", maksudnya disini adalah validasi di sisi server, tetapi validasi di sisi user tetap diperlukan, agar user tahu tipe data apa yang dibutuhkan di suatu field, misal karakter dan angka atau hanya angka<br />
<br />
4. Jangan ada "ruang kosong"<br />
<br />
Kalau bisa, manfaatkan seluruh ruang kosong di kanfas atau halaman yang ada, misal bagian kiri diisi foto user, tetapi di sebelah kanan kosong dan di bawahnya ada label nama user, maka pindahkanlah label tersebut ke sebelah kanan foto agar tampilannya efisien.<br />
<br />
5. Cicil datanya<br />
<br />
Misal, ada seratus baris foto dalam sebuah aplikasi, jangan seluruhnya langsung diload, karena akan memberatkan kinerja aplikasi, cicil loadingnya, load data saat user melakukan scroll ke bawah, dengan begini data yang diambil hanya seperlunya.<br />
<br />
Segitu dulu yang akan saya sampaikan, sisanya insya Allah akan muncul di postingan berikutnya<br />
<br />
SyukronAnhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-75425624704293697842019-04-04T14:14:00.000+07:002019-04-04T14:14:15.620+07:00Adab dalam belajar pemrogramanSungguh baik, jalan yang ditempuh orang yang ingin terjun ke dunia pemrograman dengan cara menggandeng orang lain untuk dijadikan gurunya, mereka menggebu-gebu ingin segera menjadi master, dengan semangat 45 mereka mulai perjalanannya, tetapi sayangnya, begitu baru mulai, sering kali mereka berhenti belajar, entah karena dikeluarkan oleh gurunya karena tidak sanggup dengan sikap muridnya, atau dia yang keluar sendiri karena tidak sanggup, entah otaknya tidak sanggup atau sikapnya tidak sanggup mengikuti arahan dari gurunya.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigpK_WsekXfdsMeHTgGwY4rQZdQ6C8Tb3mhzM-0T9UDOygPzGCVs0YDyZFhp6D7TIkU697xoAhmP6qDQ2hpNB8bd1AdbIP2O4WqTHeSVbzaAEVyXZL958UXR_6XA11UWJidZUATF44GbA/s1600/fb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="682" data-original-width="960" height="227" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigpK_WsekXfdsMeHTgGwY4rQZdQ6C8Tb3mhzM-0T9UDOygPzGCVs0YDyZFhp6D7TIkU697xoAhmP6qDQ2hpNB8bd1AdbIP2O4WqTHeSVbzaAEVyXZL958UXR_6XA11UWJidZUATF44GbA/s320/fb.jpg" width="320" /></a></div>
<br />
<br />
Dari pengalaman saya, ada beberapa kunci sukses jika ingin belajar pemrograman dengan cara belajar pada orang lain<br />
<br />
1. Sadarlah kalau proses lebih berharga daripada hasil<br />
<br />
Taruhlah Anda bisa jago pemrograman dalam waktu 1 bulan, tapi jika dalam prosesnya Anda melukai hati guru Anda, bertindak semaunya, memaksa guru Anda untuk menuruti keinginan Anda secara kasar, apakah ilmu yang Anda dapatkan itu, bisa menjadi berkah? Tidak kah setelah Anda jago pemrograman, Anda masih membutuhkan orang tersebut untuk mendapatkan proyek? Perhatikan proses belajar Anda agar tetap penuh adab dan berkah, dan nikmatilah walaupun jalan tersebut memakan waktu lama. Imam Syafi'i berkata orang yang tidak kuat menahan pedihnya belajar, harus dipaksa menahan pedihnya kebodohan.<br />
<br />
2. Tinggalkan maksiat<br />
<br />
Tidak kah Imam Syafi'i pernah mengeluh pada gurunya karena susah menghafal, lalu gurunya menasihatinya untuk meninggalkan maksiat? Dan ada ulama lain yang berkata sesungguhnya tidak ada cara yang lebih baik untuk menghafal selain dengan cara meninggalkan maksiat. Maka dengan cara ini, insyaAllah Anda dapat cepat mengerti bahasa pemrograman yang sedang Anda pelajari.<br />
<br />
3. Keluarkan modal besar<br />
<br />
Bagaimana ilmu tersebut berharga untuk Anda, kalau Anda tidak mau berkorban banyak? perhatikanlah bahwa imam-imam terdahulu, mereka menempuh jalan berhari-hari, diantaranya sampai sebulan, hanya untuk mendapatkan sedikit hadits, belum lagi ada yang menjual rumah untuk bisa belajar pada imam lainnya. Mereka keluar modal, modal uang dan modal keringat. Jangan bermimpi menjadi master pemrograman, kalau segelas kopi pun tidak pernah Anda belikan untuk guru Anda. Beli juga buku-buku tebal, atau jangan lelah mencari di internet, jangan hanya mencari beberapa jam saja kemudian menyerah, jangan bermental tempe.<br />
<br />
Itu lah 3 poin penting yang ingin saya sampaikan. Jangan menyerah, terus belajar, insya Allah keberkahan akan Anda dapatkan, dan jangan lupa untuk beribadah di dalam prosesnya, karena Dialah yang memberikan dan mengambil ilmu<br />
<br />
Kalau ada yang benar dari Allah SWT, kalau ada yang salah dari saya, silahkan berkomunikasi di kolom komentar dan jangan lupakan pembahasan kita kali ini, jagalah adab Anda :)<br />
<br />
SyukronAnhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-85435190780805737052019-04-02T11:43:00.001+07:002019-04-02T11:45:19.616+07:00Biarkan Mereka Berkarya<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrirt6wJwLbk7Iy2l9r2DJygiL5Fc84J5ibJixABwpOAo_dp1f7rR_kPtMsYSxK5qR9j-QV0nfcpCtY6wtXSp17YWsNNdN1eAZkyvadSAMggwGOJZgS_S1eKuxzj_ot3XOueqb0wgTnJ0/s1600/fb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="712" data-original-width="1200" height="189" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrirt6wJwLbk7Iy2l9r2DJygiL5Fc84J5ibJixABwpOAo_dp1f7rR_kPtMsYSxK5qR9j-QV0nfcpCtY6wtXSp17YWsNNdN1eAZkyvadSAMggwGOJZgS_S1eKuxzj_ot3XOueqb0wgTnJ0/s320/fb.jpg" width="320" /></a></div>
<br />
Salah satu metode pemasaran yaitu dengan cara membangun komunitas, dimana orang-orang bisa bergabung untuk mencapai suatu tujuan, dan di lain sisi, para pendirinya bisa menawarkan produk-produk mereka untuk dibeli para anggotanya. Ada cara lain, yaitu membuat produk ini bisa dengan mudah dimodifikasi oleh para pembelinya, lalu para pembeli ini membuat komunitas yang tidak berhubungan dengan perusahaan penjual produk tersebut, dengan begini, si pembeli pun akan memasarkan produk yang dia beli dengan senang hati, karena produk tersebut membuat dia mudah untuk menghasilkan suatu karya.<br />
<br />
Contohlah LEGO, orang-orang membeli dan menghasilkan karya yang sesuai dengan keinginannya, mereka bisa membentuk komunitas masing-masing di daerahnya, dengan begini, nama LEGO secara otomatis tersebar ke seluruh dunia. Kuncinya hanya "membiarkan mereka berkarya", LEGO terkadang menjual set-set dengan tema tertentu seperti Star Wars misalnya, akan tetapi potongan-potongannya bisa dilepas dan digabung dengan tema lain, misal badannya Iron Man tetapi kepalanya Spider-man.<br />
<br />
Begitu juga dalam dunia game, ketika sebuah game itu menarik untuk dimainkan, dan mudah untuk dimod, maka orang-orang akan membentuk komunitas atau forum untuk sama-sama modding game tersebut, dengan sendirinya nama game tersebut akan tersebar dan semakin banyak peminatnya, contolah game GTA San Andreas, game tersebut sudah lama umurnya, tetapi sampai sekarang masih ada saja mod-mod terbaru, karena mudahnya memodding game tersebutf.<br />
<br />
Dan mod bisa menjadi sarana seleksi bagi perusahaan yang ingin mencari karyawan baru, misal sebuah perusahaan game ingin merekrut programmer baru, mereka bisa mencari mod-mod game mereka yang terbaik di internet lalu merekrut si moddernya(pembuat mod), dan ini bisa dilakukan secara tersembunyi tanpa diketahui oleh modder tersebut. Dan ini sudah dilakukan secara nyata oleh beberapa studio game. Contohlah game Counter Strike yang awalnya merupakan sebuah mod, kemudian dijadikan game stand alone karena awalnya mod ini banyak diminati, contoh lainnya adalah game Dota, awalnya ini hanyalah mod untuk game Warcraft, tetapi karena banyak peminatnya maka dijadikanlah game stand alone yang sekarang bisa kita dapatkan di Steam.<br />
<br />
Maka jika Anda ingin membuat software atau game, kalau tidak ada masalah, buatlah agar produk tersebut moddable, karena sangat disayangkan begitu banyak game-game bagus tetapi tidak bisa dimod, sehingga game tersebut hilang tertinggal zaman.<br />
<br />
Kesimpulan kegunaan suatu produk moddable adalah :<br />
<br />
1. Bisa menjadi promosi gratis<br />
2. Bisa mendapatkan ide-ide pengembangan melalui mod-mod yang sudah ada<br />
3. Tidak perlu ragu untuk merekrut modder yang hebat, karena sudah terbukti dari karyanya<br />
4. Game Anda, jika bagus, insyaAllah akan "hidup" lebih lama<br />
<br />
Sekian pembahasan dari saya, kalau benar datangnya dari Allah SWT, kalau salah dari saya dan mohon dikoreksi melalui kolom komentar untuk bahan perbaikan kedepannya<br />
<br />
Syukron <br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-54020487210170141892019-03-28T07:28:00.001+07:002019-03-28T07:28:04.525+07:00Pentingnya Clean ArchitectureClean architecture berbeda dengan clean code, sebuah proyek dikatakan memiliki clean architecture apabila orang lain bisa mudah mengetahui program apa yang sedang dia buat, hanya dari melihat struktur file di folder projectnya, begitu dia melihat isi folder kita, yang dia tahu bukanlah dengan framework apa program kita dibuat, bukan dengan database apa penyimpanan yang kita buat, bukan pula library apa saja yang kita gunakan, tapi yang pertama kali dia tangkap adalah, program apakah itu, apakah aplikasi keuangan, atau sistem manajemen rumah sakit, atau aplikasi gudang, atau yang lainnya. Ibaratkan sketsa arsitektur bangunan, begitu kita melihatnya, kita akan tahu itu adalah arsitektur untuk bangunan sekolah, atau rumah sakit, atau perpustakaan, hanya dari melihat sketsanya saja, dan kita tidak tahu dengan bahan apa bangunan tersebut dibuat, dengan pasir jenis apa, dengan baja ringan atau apa, yang kita tahu, hanyalah fungsi bangunannya.<br />
<br />
<b>Sifat-sifat Clean Architecture</b><br />
<br />
1. <b>Tidak tergantung pada framework, library atau metode penyimpanan</b><br />
Pada saat memulai koding, posisikan lah bahwa framework, library, metode penyimpanan dan yang lainnya hanyalah tool/alat. Sebagaimana pada kehidupan sehari-hari, gunanya alat adalah membantu kita, bukannya kita yang bergantung pada alat, dan alat sifatnya bisa diganti, bukan kitanya yang diganti. Begitu juga pada pemrograman, pastikan kodingan kita tidak bergantung pada tool, dalam kata lain, apabila ingin mengganti framework, maka gantilah skrip penghubungnya(penghubung antara skrip original kita dengan tool-tool luar) saja, dan apabila nanti ingin mengganti metode penyimpanan dari MySQL ke Oracle dan lainnya, maka gantilah skrip penghubungnya saja, bukan sebagian besar apalagi keseluruhan kodingan kita. Tempatkan tool sebagai budak kita, bukan kita yang menjadi budak tool tersebut<br />
<br />
<b>2. Tidak menakutkan untuk diedit</b><br />
Pernahkah Anda berpikiran untuk merapihkan kodingan project Anda, kemudian Anda mulai merapihkannya sedikit demi sedikit dengan cara edit kemudian compile, edit kemudian compile, edit kemudian compile dan seterusnya hingga akhirnya Anda menemukan pesan error, dan di keadaan itu Anda berpikir untuk berhenti merapihkan kodingan karena takut akan merusak keseluruhan project Anda. Dengan Clean Architecture, Anda bisa dengan mudah merubah-rubah suatu kodingan tanpa harus takut akan mempengaruhi keseluruhan project, hal ini karena clean architecture memaksa sang programmer untuk mengkotak-kotakkan tiap-tiap fungsi-fungsi atau fitur-fitur dengan jalur lingkaran kecil dan lingkaran besar, yakni fitur-fitur yang ada di lingkaran kecil, tidak terpengaruh oleh fitur-fitur di lingkaran yang lebih besar, sebaliknya, fitur-fitur yang lebih besar sangat tergantung dan harus mengikuti aturan-aturan yang ditetapkan oleh fitur-fitur yang lebih kecil darinya.<br />
<br />
Sebagai contoh, fitur data user, pada fitur ini tidak peduli apakah penyimpanannya akan menggunakan database, file atau session, yang fitur ini tahu hanyalah tugasnya untuk memberikan data-data yang harus disimpan ke lingkaran yang lebih besar darinya yakni fitur basis data, disinilah ditentukan akan disimpan dengan metode apa. Dan apabila nanti akan diganti dari MySQL atau Oracle misalnya, fitur data user tidak perlu dirubah, yang perlu dirubah hanya fitur basis data<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGQltuiT-lKbqolUEctzWcNmoF4cfFdu9LFYtysD-hGKmrgcqD_7j4BGuJ9NW-pKXUbLSQ8BT9A_0HXVeXzVAGSll3ndT42GOnjM8zf3v_VjFW_vPptznWoo_wtLPiHiJgjtf-49MjwGI/s1600/Screen+Shot+2019-03-27+at+17.54.35.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="972" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGQltuiT-lKbqolUEctzWcNmoF4cfFdu9LFYtysD-hGKmrgcqD_7j4BGuJ9NW-pKXUbLSQ8BT9A_0HXVeXzVAGSll3ndT42GOnjM8zf3v_VjFW_vPptznWoo_wtLPiHiJgjtf-49MjwGI/s320/Screen+Shot+2019-03-27+at+17.54.35.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Contoh Metode Onion pada Clean Architecture</td></tr>
</tbody></table>
<br />
<br />
3. <b>Mudah, portable dan cepat dites </b><br />
Karena setiap fitur "terkotak-kotak", maka akan dengan mudah mengetes setiap fitur tersebut, misal kita ingin mengetes fitur yang menampilkan profil user, yang datanya diambil dari fitur basis data, maka walaupun program kita belum terkoneksi ke databaase, kita bisa merubah agar fitur basis data ini mengambil data dari hardcode array atau membaca file, sembari menunggu kesiapan database, dan jika di lain waktu nanti terjadi migrasi database (misal dari MySQL ke Oracle) maka yang perlu dirubah hanyalah dari fitur basis data ini. Yang dimaksud portable adalah misal kita membuat aplikasi android menggunakan android studio dengan bahasa JAVA, sebuah fitur disebut portable apabila bisa ditest tanpa membutuhkan android studio, yaitu karena bahasanya JAVA maka bisa ditest dengan JVM, dengan begini programmer tidak bergantung pada versi android studio tertentu atau library tertentu untuk melakukan pengetesan.<br />
<br />
<b>Link-link untuk belajar lebih lanjut tentang Clean Architecture</b><br />
<br />
<a href="https://phutai.me/wp-content/uploads/2016/10/The-Clean-Architecture-in-PHP-Kristopher-Wilson.pdf">https://phutai.me/wp-content/uploads/2016/10/The-Clean-Architecture-in-PHP-Kristopher-Wilson.pdf</a><br />
<br />
<a href="https://github.com/jkphl/clear-architecture">https://github.com/jkphl/clear-architecture</a><br />
<br />
<a href="https://github.com/android10/Android-CleanArchitecture">https://github.com/android10/Android-CleanArchitecture</a><br />
<br />
<a href="https://medium.com/@dmilicic/a-detailed-guide-on-developing-android-apps-using-the-clean-architecture-pattern-d38d71e94029">https://medium.com/@dmilicic/a-detailed-guide-on-developing-android-apps-using-the-clean-architecture-pattern-d38d71e94029</a><br />
<br />
<a href="https://proandroiddev.com/a-guided-tour-inside-a-clean-architecture-code-base-48bb5cc9fc97">https://proandroiddev.com/a-guided-tour-inside-a-clean-architecture-code-base-48bb5cc9fc97</a><br />
<br />
<a href="http://lundgren.io/blog/clean-architecture-in-android-example-app/">http://lundgren.io/blog/clean-architecture-in-android-example-app/</a><br />
<br />
<a href="https://medium.com/style-theory-engineering/android-clean-architecture-using-kotlin-48306644ada7">https://medium.com/style-theory-engineering/android-clean-architecture-using-kotlin-48306644ada7</a><br />
<br />
<a href="https://medium.freecodecamp.org/a-quick-introduction-to-clean-architecture-990c014448d2">https://medium.freecodecamp.org/a-quick-introduction-to-clean-architecture-990c014448d2</a><br />
<a href="https://www.blogger.com/goog_53187441"><br /></a>
<a href="https://proandroiddev.com/clean-architecture-data-flow-dependency-rule-615ffdd79e29">https://proandroiddev.com/clean-architecture-data-flow-dependency-rule-615ffdd79e29</a><br />
<br />
<a href="https://arsetonugroho.web.id/programming/2018/03/28/clean-architecture-konsep.html">https://arsetonugroho.web.id/programming/2018/03/28/clean-architecture-konsep.html</a><br />
<br />
Sekian tulisan dari saya, apabila benar datangnya dari Allah SWT, apabila salah maka harap berikan komentar di kolom komentar agar bisa saya perbaiki sesuai saran yang tertera di komentar tersebut<br />
<br />
Syukron<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-63332303065497032812018-08-19T08:31:00.001+07:002019-01-10T11:15:41.084+07:00Jasa Pembuatan Skripsi Website, Aplikasi Android dan Aplikasi iOS<h3>
<b> <div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsYuXg-rabh-9t4mRpPPYhejI6X0wrDe2UpNg8fQEuuhjqLch8sEizUUs4vWaXKfE843VHu0HGi3X8iZ3gLKUo7JOu2R8p6WkHpBVmU3gd7V3P01Y0UUz7GhqHU_dsUANUOzkQfTV2kcA/s1600/fb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1080" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsYuXg-rabh-9t4mRpPPYhejI6X0wrDe2UpNg8fQEuuhjqLch8sEizUUs4vWaXKfE843VHu0HGi3X8iZ3gLKUo7JOu2R8p6WkHpBVmU3gd7V3P01Y0UUz7GhqHU_dsUANUOzkQfTV2kcA/s320/fb.jpg" width="320" /></a></div>
</b></h3>
<h3>
<b>Layanan Skripsi Website, Aplikasi Android dan Aplikasi iOS <a href="http://bahaskomputer.blogspot.com/">bahaskomputer.blogspot.com</a></b></h3>
Kami menerima jasa pembuatan skripsi melalui online
ataupun offline, anda dapat datang langsung ke tempat kami
dengan alamat yang tertera pada blog ini. Jika kamu sedang pusing
bagaimana menentukan judul tentang tugas kuliah kawan-kawan, kami juga menerima jasa konsultasi GRATIS !!! tanpa di
pungut biaya apapun.<br />
<br />
<b>Program yang dapat kami kerjakan</b><br />
<ol>
<li>Pembuatan skripsi menggunakan PhpMySQL</li>
<li>Pembuatan skripsi menggunakan Code Igneter</li>
<li>Pembuatan tugas kuliah menggunakan Java</li>
<li>Pembuatan tugas akhir menggunakan Android</li>
<li>Pembuatan tugas akhir menggunakan iOS</li>
<li>Pembuatan skripsi menggunakan Laravel</li>
</ol>
<b>Lainya</b><br />
<ol>
<li>Jasa Pembuatan Website Company Profile</li>
<li>Jasa Pembuatan Aplikasi Webbase Perpustakaan</li>
</ol>
Dan masih banyak lagi yang tidak dapat kami sebutkan satu
persatu, jika ada pertanyaan silahkan hubungi kami terlebih dahulu untuk menentukan
jadwal konsultasi. Harap maklum
dikarenakan full nya jadwal maka harus antri dan mengikuti jadwal yang kami tentukan. Namun jangan kawatir karena kami sangat profesional jadi sehingga insyaAllah
program yang Anda inginkan bisa diselesaikan sebelum jadwal sidang.<br />
<br />
<b>Kontak</b><br />
Jln Buaran 3 Blok ME No 13 RT 005/015, Duren Sawit, Jakarta Timur<br />
<br />
Telp / Sms / Whatsapp<br />
<b>1. 087 8868 20318</b><br />
<b></b><br />
<br />
Email : anhar_tasman@yahoo.comAnhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-23938819788524837972018-03-23T14:50:00.001+07:002018-03-23T14:50:05.140+07:00koneksi HTTP dengan Swift 4Gimana? Masih puyeng dengan <a href="https://bahaskomputer.blogspot.co.id/2018/03/mempelajari-json-di-swift-4.html" target="_blank">tutorial sebelumnya</a>? Siap siap tambah puyeng yah dengan pembahasan kali ini hahaha. Sekarang kita akan membahas cara melakukan koneksi internet dengan menggunakan swift 4<br />
<br />
Pertama, kita membutuhkan library alamofire. Alamofire adalah library yg digunakan untuk melakukan koneksi ke jaringan. Anda bisa membaca tentang alamofire ini lebih lengkap dan cara installasinya melalui <a href="https://github.com/Alamofire/Alamofire" target="_blank">link ini</a><br />
<br />
Oiya, Anda mungkin akan mendapatkan pesan error seperti framework not found atau sejenisnya, coba perbaiki ini dengan cara close project kemudian buka project melalui file yg berekstensi .xcworkplace dan bukan yg berekstensi .xcodeproj<br />
<br />
Jika library alamofire sudah selesai dipasang, kita lanjut ke pemakaiannya. Ketikkan skrip dibawah ini di bagian atas file<br />
<br />import Alamofire<br />
<br />
<b>Contoh penggunaan</b><br />
<br />
Misal Anda ingin mengambil JSON dari link https://jsonplaceholder.typicode.com/posts/1 maka ketikkan skrip dibawah ini<br />
<br />
Alamofire.request("https://jsonplaceholder.typicode.com/posts/1").downloadProgress { progress in<br /> print("Download Progress: \(progress.fractionCompleted)")<br /> }.response { response in<br /> <br /> //print("Request: \(response.request)")<br /> //print("Response: \(response.response)")<br /> //print("Error: \(response.error)")<br /> <br /> if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {<br /> print("Data: \(utf8Text)")<br /> }<br /> }<br />
<br />
Skrip diatas akan menghasilkan : Data: {<br /> "userId": 1,<br /> "id": 1,<br /> "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",<br /> "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"<br />}<br />
<br />
<br /><b>Cara mengirim JSON dengan method POST</b><br />
<br />
Kita sudah tahu cara mengambil data, tapi bagaimana cara mengirim data JSON? Pertama buatlah sebuah function dengan skrip dibawah ini<br />
<br />
func jsonToDictionary(from text: String) -> [String: Any]? {<br /> guard let data = text.data(using: .utf8) else { return nil }<br /> let anyResult = try? JSONSerialization.jsonObject(with: data, options: [])<br /> return anyResult as? [String: Any]<br /> }<br />
<br />
Kemudian buatlah sebuah variabel berisi paramter yang akan dikirim, misal pada tutorial ini kita akan mengirim JSON ke alamat <span class="pl-s">https://jsonplaceholder.typicode.com/posts</span><br />
<br />
dengan variabel paramternya adalah<br />
<br />
var jsonparam:String="{\"title\":\"Coba dulu\",\"body\":\"isi pesan\",\"userId\":1}"<br />
<br />
Kemudian ketik var params = jsonToDictionary(from: jsonparam) ?? [String : Any]()<br />
<br />
Lalu terakhir masukkan skrip dibawah ini<br />
<br />
Alamofire.request("https://jsonplaceholder.typicode.com/posts", method: .post,parameters: params, encoding: JSONEncoding.default, headers: [:]).downloadProgress { progress in<br /> print("Download Progress: \(progress.fractionCompleted)")<br /> }.response { response in<br /> <br /> //print("Request: \(response.request)")<br /> //print("Response: \(response.response)")<br /> //print("Error: \(response.error)")<br /> <br /> if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {<br /> print("Data: \(utf8Text)")<br /> }<br /> }<br />
<br />
Setelah dijalankan akan muncul :<br />
<br />
Data: {<br /> "body": "isi pesan",<br /> "title": "Coba dulu",<br /> "userId": 1,<br /> "id": 101<br />}<br />
<br />
Menggunakan Dictionary<br />
<br />
Selain menggunakan string json, kita juga bisa menggunakan Dictionary, caranya buatlah variabel seperti dibawah ini<br />
<br />
let paramnya=[<br /> "title": "Coba dulu",<br /> "body": "Isi pesan",<br /> "userId": 1] as [String : Any]<br />
<br />
Kemudian ganti parameters: params dengan parameters: paramnya lalu jalankan, akan muncul pesan seperti dibawah ini<br />
<br />
Data: {<br /> "body": "isi pesan",<br /> "title": "Coba dulu",<br /> "userId": 1,<br /> "id": 101<br />}<br />
<br />
Mudahkan? Selamat bereksperimen yah... <br />
<br />
<br />Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-76586615130017141022018-03-22T13:23:00.001+07:002018-03-22T13:23:04.576+07:00Mempelajari JSON di SWIFT 4Tanpa perlu menjelaskan ulang apa itu JSON atau SWIFT langsung saja kita masuk ke tutorial tentang JSON di bahasa pemrograman yg digunakan untuk membuat aplikasi di iOS ini<br />
<br />
Pertama, buat lah sebuah class Person<br />
<br />
<br /> struct Person: Codable {<br /> let name: String<br /> let age: Int<br /> <br /> func getString() -> String {<br /> return "Name: \(name), Age: \(age)"<br /> }<br /> <br /> }<br />
<br />
Class diatas bisa didefinisikan sebagai berikut<br /> let person = Person(name: "Yuri", age: 20)<br />
<br />
Kita bisa memanggil function getString untuk mendapatkan isi dari Class tersebut<br />
<br /> print("Original Person Struct: " + person.getString() + "\n")<br />
<br />
Skrip diatas akan menampilkan pesan : Original Person Struct: Name: Yuri, Age: 20<br />
<br />
Kemudian bagaimana merubahnya ke dalam bentuk JSON? Gunakan skrip di bawah ini<br />
<br />
var json: Any?<br />
let encodedData = try? JSONEncoder().encode(person)<br />
<br /> if let data = encodedData {<br /> json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments)<br /> if let json = json {<br /> print("Person JSON:\n" + String(describing: json) + "\n")<br /> <br /> }<br /> }<br />
<br />
Skrip diatas akan menampilkan : Person JSON: { age = 20; name = Yuri; }<br />
<br />
Bagaimana cara merubahnya ke dalam bentuk string JSON? Ketik skrip dibawah ini<br />
<br /> var encodedData3 = try? JSONEncoder().encode(person)<br /> var json3 = String(data: encodedData3!, encoding: .utf8)!<br /> print("hasil print "+json3) <br />
<br />
Skrip diatas akan menampilkan : hasil print {"name":"Yuri","age":20}<br />
<br />
<b>Membuat Array JSON</b><br />
<br />
Contoh yg kita bahas diatas adalah contoh satu objek saja, bagaimana jika dalam bentuk array (lebih dari satu objek) ?<br />
<br />
Gunakan skrip dibawah ini untuk menuliskan array<br />
<br />
var familyMembers: [Person] = [Person]()<br />
<br />
Lalu tambahkan skrip ini dibawahnya untuk memasukan variabel person ke dalam array familyMembers<br />
<br />
familyMembers.append(person)<br />
<br />
Bagaimana jika datanya lebih dari satu? Caranya sama, cukup gunakan append <br />
<br />
Bagaimana cara menampilkannya ke dalam prinan? Gunakan skrip dibawah ini<br />
<br /> var json2: Any?<br />
<br /> let encodedData2a = try? JSONEncoder().encode(familyMembers)<br />
<br /> if let data2 = encodedData2a {<br /> <br /> json2 = try? JSONSerialization.jsonObject(with: data2, options: .allowFragments)<br /> <br /> if let json2 = json2 {<br /> print("Person JSON 2:\n" + String(describing: json2) + "\n")<br /> //Prints: Person JSON: { age = 20; name = Yuri; }<br /> }<br /> <br /> }<br />
<br />
Skrip diatas akan menampilkan tulisan seperti ini<br />
<br />
Person JSON 2:<br />(<br /> {<br /> age = 20;<br /> name = Yuri;<br /> }<br />)<br />
<br />
Bagaimana caranya merubah ke dalam string JSON? Gunakan skrip dibawah ini<br />
<br />
var encodedData3 = try? JSONEncoder().encode(familyMembers)<br /> var json3 = String(data: encodedData3!, encoding: .utf8)!<br /> print("hasil print "+json3)<br />
<br />
Skrip diatas akan menghasilkan : hasil print [{"name":"Yuri","age":20}]<br />
<br />
<b>Cara Merubah dari String ke JSON</b><br />
<br />
Sebelumnya kita sudah belajar cara merubah JSON ke String, tetapi bagaimana cara sebaliknya?<br />
<br />
Jika menggunakan tipe data any<br />
<br />
Perhatikan pembuatan variabel json, tipe datanya Any bukan? Gunakan skrip dibawah ini jika tipe datanya adalah Any<br />
<br />
var jsonDataWithNullsc = try? JSONSerialization.data(withJSONObject: json)<br /> let jsonDecoder3c = JSONDecoder()<br /> if let aaa=jsonDataWithNullsc{<br /> var rolesc: Person = try! jsonDecoder3c.decode(Person.self, from: aaa)<br /> print("Decoded people tipe Any: " + rolesc.getString())<br /> }<br />
<br />
Skrip diatas akan menghasilkan : Decoded people tipe Any: Name: Yuri, Age: 20<br />
<br />
Jika menggunakan tipe data String<br />
<br />
Perhatikan pembuatan variabel json3 yang menggunakan tipe data string, Gunakan skrip dibawah ini jika tipe datanya adalah String<br />
<br />
<br /> let jsonDataWithNullsc = json3.data(using: .utf8)!<br /> let jsonDecoder3c = JSONDecoder()<br /> var rolesc: Person = try! jsonDecoder3c.decode(Person.self, from: jsonDataWithNullsc)<br /> print("Decoded people tipe String: " + rolesc.getString())<br />
<br />
Skrip diatas akan menghasilkan : Decoded people tipe String: Name: Yuri, Age: 20<br />
<br />
Bagaimana jika string jsonnya adalah string array? Gunakan skrip dibawah ini<br />
<br />
<br /> let jsonDataWithNulls = json3.data(using: .utf8)!<br /> let jsonDecoder3 = JSONDecoder()<br /> var roles: [Person] = try! jsonDecoder3.decode(Array<person>.self, from: jsonDataWithNulls)<br /> </person><br />
Skrip diatas akan menghasilkan variabel roles dengan tipe array yg berisi array class Person<br />
<br />
Bagaimana teman-teman? Bikin puyeng kan :v segini dulu yah, kalau ada pertanyaan silahkan isi di kolom komentar<br />
<br />
Terimakasih Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-26529690600832297182016-08-13T21:01:00.001+07:002016-08-13T21:40:53.164+07:00Menu SpesialBlog post ini dibuat dalam rangka mengikuti Kompetisi Menulis Cerpen #MyCupOfStory Diselenggarakan oleh GIORDANO dan <a href="http://nulisbuku.com/" rel="nofollow" target="_blank">Nulisbuku.com</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyMUEPrqW8VDRW7KRhCLno5vi_PNNgJQVK0I2QWq9X6O5FnvVbvZvVt91ZuJdUCmVp8Jffmpjx5j5ZwzMjxn4iLp2it6tuYwRFshANeq7Qui6EJNZovCUvSUvLWIyS3YDf7ZIpC1icECw/s1600/fb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyMUEPrqW8VDRW7KRhCLno5vi_PNNgJQVK0I2QWq9X6O5FnvVbvZvVt91ZuJdUCmVp8Jffmpjx5j5ZwzMjxn4iLp2it6tuYwRFshANeq7Qui6EJNZovCUvSUvLWIyS3YDf7ZIpC1icECw/s320/fb.jpg" width="320" /></a></div>
<br />
<br />
*TOK! TOK! TOK!<br />
<br />
*TOK! TOK! TOK!<br />
<br />
*TOK! TOK! TOK!<br />
<br />
"TUNGGU!!' Terdengar teriakan bapak tua dari balik pintu. "Detektif Zein? Silahkan." Ucapnya dengan mulut tertutup masker hijau, dia tunjukkan sebuah jasad yang terbaring di ranjang besi, di sampingnya ada mangkuk berisi serpihan peluru yang sudah dikeluarkan dari kepalanya, tangan Naufal sibuk memainkan alat berbentuk sumpit untuk mencari sisa serpihan di otak orang malang itu.<br />
<br />
"Kamu sudah aktif lagi?" Tanya dia sambil menaruh potongan kecil ke dalam mangkuk, "Ya, diresmikan kemarin" jawab ku."Jumlah liburnya masih banyak kan?" "Ya, saya sudah bosan", ketika aku berbalik, dia menegor, "saya turut berduka" ucapnya setelah membuka masker, "terimakasih" aku berjalan keluar sambil menenteng laporan otopsi.<br />
<br />
"PAK! PAK! GIMANA HASILNYA?!" Teriak salah satu dari puluhan wartawan yang mengerumuni rumah sakit, aku dikawal keluar oleh empat polisi, setelah sampai di dalam mobil, Detektif Rifki memencet tombol klakson berkali kali sembari menginjak gas secara perlahan, setelah sepuluh menit menembus para pencari berita, kami kembali ke jalan raya.<br />
<br />
"Hati-hati bro" Ucap Rifki, kami melangkahi setiap garis polisi yang dipasang di sekitar lokasi TKP hingga akhirnya sampai di rooftop tempat si penembak melancarkan aksinya kemarin sore. "Cari daftar pegawai kereta api yang punya masalah keuangan" Jelas ku sambil menunjuk jembatan kereta api yang letaknya tidak begitu jauh, "Kenapa?" Tanya dia, "Pelakunya menggunakan suara kereta untuk menyamarkan suara tembakan, dia tahu pasti kapan kereta akan lewat, dan kebetulan waktunya bertepatan dengan lewatnya konvoi Pak Nirwan di sini". Ku keluarkan sendok dan kantung plastik kecil yang selalu disiapkan untuk mengambil barang bukti, dengan sendok itu ku kerok noda kopi yang berhamburan di aspal atap, sepertinya pelaku terburu-buru melarikan diri hingga tanpa sengaja menendang gelas kopinya. "Bawa ini ke lab, kabarin gue hasilnya, mobil lu bawa aja, gue mau ke tempat lain".<br />
<br />
"SAYAAA TIDAK AKAAAN MENGHENTIKAN KAMPANYEE INIIII, PAK NIRWAN ORANG BAIK, SAYA MENGHORMATINYA SEBAGAI LAWAN ATAUPUN KAWAN.. BERITA YANG MENGATAKAN SAYA DAN KANDIDAT LAIN MUNDUR ITU TIDAK BENAR...." Ucap Pak Setyo melalui pengeras suara di konferensi persnya. Aku duduk di ruang tunggu, menyaksikan tanya jawab antara dia dengan para penanya, sesekali dia berbisik kepada pengacaranya sebelum memberikan jawaban, apapun pertanyaannya, jawaban yang dia katakan tidak sesuai, semua ucapannya hanyalah bumbu pemanis citra agar publik juga bersimpati kepadanya. Dia tutup pertemuan itu dengan senyum nyengir yang dipaksakan ke arah puluhan kamera. Aku berdiri, mengancing jas kemudian menunggu kedatangannya.<br />
<br />
"Mau apa kamu?" Keramahannya menghilang sedetik setelah pintu ditutup, sifat aslinya muncul setelah hanya kami berdua di ruangannya. "Saya perlu tahu rute konvoi bapak hari ini". "Untuk apa?", "Saya yakin almarhum Nirwan bukan korban terakhir, dari modus operasinya saya berfirasat bahwa penembaknya akan melakukan pembunuhan berantai dan bapak akan menjadi korban berikutnya kalau tidak saya lindungi", dia tertawa meledek, "Tahun lalu, kamu berusaha menjarain saya dengan tuduhan yang macam-macam, dan sekarang kamu justru mau melindungi saya?", "Sebagai aparat, sudah kewajiban saya untuk melindungi siapapun, terlepas dari masalah pribadi".<br />
<br />
Setelah mendapatkan informasi yang dibutuhkan, aku menghubungi Rifki, kami berdua berangkat ke bandara terdekat, di sana sebuah helikopter dan pilot sudah disediakan, langit tidak berawan, pemandangan kota terlihat jelas dari ketinggian, di bawah sana Pak Setyo dan tim kampanyenya melaju pelan di tengah-tengah simpatisannya, dia mengangkat lengannya ke atas, mendadahi kerumunan di kanan kirinya yang memegang spanduk dan foto bertuliskan berbagai macam kalimat ajakan untuk memilihnya menjadi presiden.<br />
<br />
"Dia gak akan meninggal hari ini" Ucap Rifki di samping ku melalui headset komunikasinya. "Tahu dari mana?", "Zein, kalau lu butuh rute konvoi doang, lu bisa minta ke gue, tapi lu tetap pergi nemuin Pak Setyo, karena lu mau melihat wajahnya sekali lagi sebelum dia meninggal, lu harus lupain masalah tahun kemarin, tanpa adanya bukti lu gak bisa bilang kalau dia dalang dibalik pembunuhan anak lu", "gue emang gapunya bukti kalau dia pelakunya, tapi dia tetap orang korup, gue gak akan berhenti sebelum dia ditangkap"<br />
<br />
"Sssst, lihat itu!" Rifki menunjuk ke sosok pria yang berdiri di sebuah rooftop, dia menenteng tas besar di punggungnya, melalui binocular ku lihat dia mengeluarkan alat hitam panjang seperti senapan tembak jarak jauh, ku hubungi tim pelindung yang bertugas di bawah sana, mereka berlari masuk ke gedung yang ditunjuk, tidak berapa lama akhirnya mereka sampai di rooftop, tersangka mengangkat kedua tangannya di belakang kepala, polisi memborgolnya dan memeriksa barang bawaannya.<br />
<br />
"Lapor, kami hanya menemukan teleskop" Jawab seorang polisi melalui radio komunikasi<br />
<br />
*DUAAAAAAAAR!!!!<br />
<br />
Pak Setyo terjatuh dari truk pickup tempat dia berdiri, orang-orang menjerit, polisi dan tentara membentuk lingkaran di sekeliling konvoi, petugas medis membawakan tandu putih, dia digotong ke ambulan. Rupanya pria mencurigakan itu hanya pengalih perhatian, dua helikopter yang sebelumnya diam di bandara, kini diterbangkan untuk membantu pencarian, sudah lebih dari sejam belum ada informasi apapun mengenai si pelaku, misi kami gagal.<br />
<br />
Keluarga, saudara dan kerabat dekatnya bersedih mendengar kabar dukanya, sementara yang lain tidak peduli dan menganggap berita kematian yang ditayangkan di televisi hanya sebagai teman makan malam, tapi aku justru sebaliknya, aku pergi ke supermarket membeli bir dan cemilan, musuh bebuyutan ku sudah meninggal, aku akan menemui istri ku dan merayakan kemenangan ini bersamanya.<br />
<br />
Di dalam mobil yang lampunya dimatikan ini, aku menyaksikan Jovita sedang berciuman dengan pria yang tidak ku kenal, kemudian mereka masuk ke rumah, lampu ruang tamu yang tadinya menyala kini mati. Tuhan begitu baik, secara tiba-tiba dia turunkan hujan lebat, dalam kesendirian ini aku menangis penuh kebencian dan penyesalan, ku ambil pistol di laci mobil, meletakkan ujungnya di bawah dagu, aku berbisik "Jovita.. maafkan aku", pelatuk ku tekan, "klik..." ku tekan terus menerus "klik.. klik.. klik.. klik.." *PRANK!!! Kaca jendela mobil ku dipecahkan dari luar, itu Rifki, dia tarik kerah kemejaku kemudian mengayunkan pukulan.<br />
<br />
"KALU LU MAU MATI!! MATI SENDIRI! JANGAN DI DEPAN RUMAH DIA!!"<br />
<br />
"MAS! CUKUP!" <br />
<br />
Hana, istri Rifki meletakkan sapu tangan yang menutupi es batu ke pipi ku yang lebam, jarum di jam tangan menunjukkan pukul sebelas malam, sudah satu jam aku pingsan, hujan sudah berhenti, begitu juga keinginan ku untuk menangis. Ku pegang sapu tangan yang ditahan Hana, dia pergi ke dapur lalu membuatkan teh hangat, sementara itu Rifki bertolak pinggang menatap ku yang sedang terbaring di sofa. <br />
<br />
"Ngapain lu disana?" Tanya ku sambil berusaha duduk. "Zein, Bobi sekarang sudah di surga, dia gak butuh lu lagi, Jovita juga gak akan lama sedih, seminggu dua minggu dia akan balik lagi ke pacarnya, gue? Gue akan kehilangan sahabat, nyawa gue akan berada di tangan partner baru, ingat itu lain kali kalau lu mau bunuh diri. Bro, gue ngerti lu punya banyak masalah, tapi terkadang jawaban yang kita butuh ada di depan kita, cuman kita yang gak sadar, gue saranin lu lanjutin cuti supaya pikiran lu jernih"<br />
<br />
"Terkadang jawaban yang kita butuh ada di.... ki, makasih, titip salam untuk istri lu, gue harus pulang", "Gue anterin", "Gak, gue janji gak akan gitu lagi" Ku tatap matanya untuk memberikan keyakinan, dia mengangguk, aku berbalik membelakanginya kemudian berjalan menuju pintu keluar. Setelah sampai di rumah, aku mengakses berkas online, ternyata di TKP penembakan Setyo juga terdapat tumpahan kopi, jenisnya kopi Lanang, kopi ini berasal dari Jawa Timur, sedangkan tumpahan kopi di TKP penembakan Nirwan adalah kopi Kintamani atau nama lainnya kopi Bali. Ku pelajari kasus-kasus yang pernah menimpa kedua korban, Setyo dituduh menggelapkan uang pembelian lahan di Jawa Timur, dan Nirwan pernah dikaitkan dengan jaringan teroris pelaku bom Bali. Masih ada satu kandidat yang tersisa yaitu Okis, dia pernah dituduh melakukan korupsi uang sedekah untuk masyarakat miskin di Papua, ku cari informasi jenis kopi yang berasal dari Papua adalah kopi Wamena. Ku ambil handphone kemudian menelepon juru kampanye Okis, setelah mendapatkan rute konvoi yang akan dilakukan besok, ku buka peta lalu menandai lima kedai kopi yang terdekat dari jalanannya. Melalui laptop di atas pangkuan ini ku dapatkan menu dari kelima kedai itu, hanya satu kedai yang menyajikan kopi Wamena.<br />
<br />
"Ini mas pesanannya, ada lagi?" Tanya pelayan dengan senyuman ramah tulusnya. "Engga mbak makasih". Pagi yang indah, orang-orang duduk santai memainkan gadgetnya sambil sesekali menyeruput kopinya, ku lihat juga suami istri berbincang hangat penuh senyuman bahagia, lalu kulihat seorang pria duduk terdiam menunduk, wajahnya terhalang topi abu-abu yang dikenakannya, tas di samping kaki kirinya berukuran besar, cukup besar untuk menyimpan senjata, kecurigaan ku semakin bertambah setelah seorang pelayan mengantarkan kopi Wamena, hanya dia satu-satunya orang yang memesan kopi itu. Ku bawa kopi mocha milik ku kemudian mendekatinya dan duduk di bangku di hadapannya, dia memandangku dengan ekspresi tegang seperti murid yang ketahuan mencontek.<br />
<br />
"Maaf, mas siapa ya?" Tanya nya dengan nada mendesak ku untuk pindah. "Tenang, lu gausah khawatir, setelah lu berdiri, gue akan ngikutin lu, tanpa basa basi langsung aja lu tembak gue, gausah pikirin polisi, mereka udah gue alihin ke tempat lain, lagian juga lu pandai menyembunyikan diri". "Pergi sekarang sebelum gue bener-bener nembak lu" Nadanya kini mengancam. "Lu lihat suami istri itu? Gue juga punya istri, tapi sekarang dia pacaran sama pria lain, lu lihat bocah yang lagi mainin laptop itu? Gue dulu punya anak seumuran dia, sekarang dia udah meninggal, plis, buat gue bertemu dengan dia, gue mohon"<br />
<br />
Dia berdiri, sesuai harapan ku, dia todongkan sepucuk pistol ke jidat ku, orang-orang berteriak dan berlarian meninggalkan kedai, kecuali seorang pelayan yang berdiri di belakangnya, dia layangkan nampan berisi teh panas ke kepala si pembunuh, pistolnya terlepas, dia pukul wajah si pelayan dan terus menghajarnya dengan tangan dan kakinya. "Jangan! Jangan diaa!! bunuh akuuu! Aku ingin bertemu Bobi!!" Jerit ku dalam hati, tapi sudah terlambat, sirine polisi berbunyi dan suaranya semakin mendekat, si pembunuh ditembak dengan peluru karet dari jarak jauh, belasan polisi masuk ke kedai untuk mengamankan lokasi, aku dibawa ke ambulan untuk diperiksa.<br />
<br />
*DING!!<br />
<br />
Pintu lift terbuka, aku berjalan keluar dalam keadaan sedikit mabuk, lantai terlihat bergoyang ke kanan kiri, pintu kamar seperti semakin menjauh, ku rogoh saku dan dengan susah payah mencari kunci kamar hotel ini, setelah lima belas menit mencari di saku yang sama akhirnya kepala ku kembali sadar, ternyata kartu kuncinya ada di saku yang lain, ku buka pintu, lampu ruangan mati, ku raba-raba tombol di dinding, setelah menekannya, terlihat seseorang duduk di kursi putar membelakangi ku, perlahan dia putar kursinya, semakin lama semakin jelas wajahnya, dia adalah pelayan yang ku temui tadi pagi, tapi pakaiannya kini berbeda, dia mengenakan kemeja putih berdasi dengan jas hitam elegan.<br />
<br />
"Duduk.." Bisa kurasakan aura ancaman dalam perkataannya meski dia tidak memegang pistol, ku rasakan juga kebahagiaan, akhirnya, seseorang yang bisa mengabulkan impian terpendam ku untuk menemui sang pencipta. "Siapa lu?" Tanya gue setelah duduk berhadapan dengannya. "Gue Mulik, agen UDARA yang dikirim untuk memberikan lu hadiah atas keberanian lu"<br />
<br />
"UDARA? Sial" Hati ku membatin. UDARA adalah lembaga misterius yang sudah menjadi legenda dalam dunia kepolisian, hanya dua jenis orang yang mendengar namanya secara langsung, orang yang akan meninggal, dan orang yang akan direkrut untuk menjadi agennya. Banyak komplotan teroris, geng narkoba dan jenis penjahat lain yang dimusnahkan oleh lembaga itu, baik yang melalui peradilan resmi ataupun main hakim sendiri. Sudah lama aku berusaha melacak keberadaannya tapi tidak pernah berhasil, karena mereka hanya bisa ditemukan jika mereka ingin ditemukan oleh orang tertentu, pada malam ini, diri ku.<br />
<br />
"Apa maksud lu?" Tanya ku. "Tahun lalu lu berhasil membongkar skandal korupsi pejabat korup bernama Setyo, usaha lu berhenti setelah anak lu meninggal terbunuh, istri lu meminta cerai, jabatan lu diturunkan. Hari ini lu berhasil menangkap pelaku pembunuhan berantai, bos lu akan ngebalikin jabatan lu ke semula, reputasi lu akan kembali bersih. Itu hadiah dari kami karena lu sudah membantu mencari bukti keterlibatan Setyo" Jawabnya sambil tersenyum kecil.<br />
<br />
Aku sadar sekarang, pelaku pembunuhan itu juga salah satu agen UDARA yang dikirim untuk menghabisi semua pejabat korup yang mencoba menjadi presiden, dia sengaja menumpahkan beragam jenis kopi di TKP supaya aku bisa melacak dan menangkapnya. Sejauh yang publik tahu sekarang dia sudah dipenjara, hanya masalah waktu sebelum orang itu dibebaskan dengan berbagai alasan.<br />
<br />
"Terimakasih, tapi gue gak mau jabatan yang lama, gue bahkan gamau lagi kerja di situ lagi". "Tunggu! Gue belum selesai ngomong, di atas meja itu lu akan nemuin foto-foto bukti selingkuhan pacar istri lu, Zein.. lu udah mencoba bunuh diri sebanyak dua kali, selama gue masih disini lu gak akan mati, tapi misi gue sudah selesai, setelah gue pergi, Tuhan yang akan campur tangan dan gue yakin dia akan ngebiarin lu berhasil dalam percobaan yang ketiga. Gue cuman bisa ngasih tahu, kalau lu mati, istri lu akan menghabiskan hidupnya bersama pria pembohong, lu gamau begitu kan?"<br />
<br />
"Dia udah gak mencintai gue lagi" Aku tertunduk mencoba menahan air mata, dia berdiri mendekat, memegang pundak ku, dia pegang erat otot bahu ku dan membiarkan ku mengekspresikan perasaan untuk sesaat. "Sepuluh tahun lalu gue cuman mahasiswa ingusan yang juga berniat untuk bunuh diri, sampai suatu hari seorang agen memberikan kartu ini, dia merekrut gue dan sejak itu hidup gue berubah, dari yang tadinya pencundang kini menjadi pahlawan tak dikenal. Gue pengen lu pegang kartu ini, hubungi nomor disitu kalau lu mau gabung ke UDARA. Tapi kalau lu masih mau bunuh diri, gue punya berita baik yang kedua, tadi pagi gue udah menyerahkan salinan foto-foto itu ke istri lu, dia merasa bersalah sudah meninggalkan lu, dan sekarang anak buah gue SMS, katanya dia lagi jalan ke sini, ini fotonya"<br />
<br />
Ku lihat foto Jovita di handphone yang diperlihatkan agen Mulik, kami sudah lama berpisah sampai ku lupa betapa cantik dirinya. Aku hapus air mata di wajah kemudian berdiri dan memeluknya, kemudian kami bersalaman. Setelah dia pergi, ku ambil sebotol minyak tanah, lencana, foto-foto selingkuhan pacar Jovita dan kartu yang diberikan agen Mulik lalu pergi ke kamar mandi.<br />
<br />
Pekerjaan ini menjauhkan ku dari keluarga, sudah cukup, ingin kubakar lencana dan kartu ini lalu menyambut Jovinta di pintu. Tapi disisi lain aku ingin melindungi negara ini dari para penjahat, ingin ku bakar lencana ku kemudian menelepon agensi UDARA agar bisa bergabung. Tapi diri ku yang lain merasa sudah letih dengan semua drama ini, ingin ku siram diri ku dengan minyak tanah dan membakar diri ini. Begitu banyak pilihan dalam waktu yang semakin tipis.<br />
<br />
*TOK! TOK! TOK!<br />
<br />
"Zeiiin!! Ini gue Jovita!!"<br />
<br />
*TOK! TOK! TOK!<br />
<br />
"ZEIIIIN!!! INI GUE JOVITA!!!"<br />
<br />
*TOK! TOK! TOK!<br />
<br />
"ZEIIIIN!!!"<br />
<br />
*TOK! TOK! TOK!<br />
<br />
<br />
<br />
[TAMAT]Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0tag:blogger.com,1999:blog-5338427031850051966.post-89402996292308854292016-05-10T14:59:00.000+07:002016-05-10T14:59:17.055+07:00Parallel Computing<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
<br />
<div class="MsoNormal">
<b>Parallel Computing</b></div>
<div class="MsoNormal">
Teknik mengolah data yang dilakukan oleh banyak komputer
yang saling terhubung melalui suatu jaringan, contoh parallel adalah ATM, semua
komputer dalam mesin ATM terhubung ke jaringan perbankan, dan data yang diolah
adalah data-data keuangan seperti jumlah saldo, transaksi penarikan, pembayaran
dan lain sebagainya</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Keuntungan Parallel Computing</b></div>
<div class="MsoNormal">
Dapat melayani banyak user, seperti kasus ATM sebelumnya,
masyarakat tidak perlu lagi pergi ke bank, cukup mencari ATM terdekat untuk
melakukan transaksi</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b>Kelemahan Parallel Computing</b></div>
<div class="MsoNormal">
Dibutuhkan sarana yang mencukupi untuk dapat mendistribusi
alur data antar komputer, seperti kasus ATM sebelumnya, diperlukan komputer
yang online 24 jam sehari, tidak jarang ditemukan ATM ditaruh dalam ruangan
berAC agar tetap dingin</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Referensi : https://dikky12.wordpress.com/2011/04/01/parallel-processing/</div>
Anhar Tasmanhttp://www.blogger.com/profile/06966575500147482887noreply@blogger.com0