GraphQl adalah query pemrosesan data untuk memanipulasi API. GraphQl dikembangkan secara internal oleh Facebook pada tahun 2012 dan di publikasikan pada tahun 2015 namun untuk rilis stabilnya pada tahun 2018. GraphQl memiliki posisi diantara Client dan Server dimana menjembatani aliran data. GraphQl hamper sama seperti REST dimana ada proses CRUD bedanya GraphQl ini memerlukan skema untuk proses fetching data yang diinginkan sehingga tidak ada proses berulang dari client dan server. Salah satu tujuan pengembangan bahasa query ini adalah untuk mempermudah komunikasi data antara server dan Client.
Alur poses penggunaan Schema GraphQl
GraphQl dapat diimplementasikan di berbagai bahasa sisi client seperti react, vue, svelte dll. Apapun jenis framework nya selama dapat mengakses data dengan API. dan karena GraphQl ini hanya penerjemah (query language) dan runtime saja maka tidak tergantung pada bahasa pemograman sisi server dan database apapun.
Kegunaa Utama?
Pandangan alur proses data di GraphQl
1. Handle untuk Permintaan Ganda.
GraphQl memiliki proses dimana fetching data setelah diproses dari server maka akan dimanipulasi lagi sehingga smeua yang client butuhkan bisa didapatkan. proses berulang seperti di REST tidak akan terjadi karena data yang diinginkan sudah diload oleh GraphQl dan hanya perlu mengambil ulang dari schema yang di buat GraphQl.
2. Efisiensi Data dan Konsistensi.
Asumsinya kita semua sudah mengenal REST endpoint jadi tidak perlu dijelaskan apa itu REST. Setiap endpoint mewakili satu entitas dan memiliki beberapa metode seperti GET, POST, PUT dan DELETE. Ketika mengakses endpoint dengan metode GET akan menampilkan data dari entitas tersebut. Data yang ditampilkan bersifat tetap, maksudnya kita akan menerima semua data meskipun kita tidak membutuhkan data itu. Konsistensi data karena data kita sendiri yang atur atau yg menjembatani antara API yang ada dengan data yang akan kita berikan ke client.
Seklias penggunaan GraphQl untuk Argument
Argument Pada saat fetching data menggunakan GraphQl
Argument ini menunjukan get data dari API akan dioleh oleh query GraphQl sesuai dengan kebutuhan client sehingga tidak semua data dari API akan muncul di Client. Untuk lebih jelasnya silahkan bermeditasi disini: graphql
Perbedaan dengan graphQl dengan REST API
Pada dasarnya GraphQl dan REST API tidak terlalu berbeda namun sesuai dengan penggunaannya, GraphQl digunakan untuk data yang besar dimana didapat API dari pihak ketiga yang kemudian akan di deliver ke client sedangkan REST API proses data yang diingin kan sudah disiapkan oleh programmernya sehingga telihat pakem.
Kesimpulan
GraphQl memiliki efisiensi, konsistensi dan kemapampuna untuk handle data yang ganda. GraphQl dibutuhkan pada saat data dari sebuah aplikasi semakin besar dan dari segi development akan sangat lama apabila menggunakan RESTful API langsung ke client, jadi GraphQl akan memilah data mana saja yang akan tampil dan digunakan oleh client. Meski bitupun GraphQl bisa digunakan di aplikasi dengan skala kecil.
Beberapa waktu belakangan, kolaborasi designer – developer masih terasa individualistis. Contohnya bisa dilihat pada proses kerja mereka yang dimulai dari seorang designer (fase perancangan design hingga design selesai dalam bentuk mockup dan prototype), lalu design disimpan pada file lokal dan selanjutnya adalah tugas developer untuk melakukan review. Setelah mereview, barulah developer mengimplementasi design ke dalam bentuk kode. Apabila workflow semacam ini masih dilakukan, tentu berpeluang membuahkan hasil yang kurang optimal. Beberapa kekurangannya antara lain terjadinya miskomunikasi, tidak efektif dan efisien-nya kolaborasi, dan yang paling disayangkan adalah tidak beradaptasi menggunakan tools yang membantu kolaborasi antara designer – developer seperti XD, Figma, atau Sketch. Mengingat beberapa tools tersebut gratis.
Padahal hakikatnya designer dan developer adalah satu kesatuan yang tidak dapat dipisahkan pada era saat ini. Keterikatan tersebut bisa dibina mulai dari tahap perancangan design hingga selesainya sebuah system atau aplikasi. Jadi mindset kita pada artikel kali ini adalah bagaimana membuat kolaborasi antara designer – developer menjadi satu kesatuan, bukan tim yang terpisah. Dalam implementasinya, memang ada hal-hal yang patut diperhatikan supaya job description kedua pihak tersebut tidak tumpang tindih. Jika tidak ada batasan yang jelas, aspek yang tumpang tindih bisa mengakibatkan developer berpikir sebagai designer dan begitupun sebaliknya. Pada artikel ini akan dibahas mengenai beberapa saran agar kolaborasi designer – developer bisa lebih optimal dan menjadi satu kesatuan namun dibatasi dengan batasan yang jelas.
Perbedaan Designer dan Developer
Sebenarnya designer dan developer memliki beberapa perbedaan yang jelas. Designer bisa diibaratkan sebagai arsitek dan developer adalah konstruktornya. Sehingga seorang designer harus melihat sesuatu secara menyeluruh. Sedangkan developer akan lebih nyaman untuk melakukan breakdown task menjadi beberapa langkah kecil dan membuat sesuatu secara cepat.
Ketika membicarakan perbedaan antara designer dan developer, maka kita juga perlu mengetahui proses berpikir mereka. Terdapat dua proses berpikir yang kita bahas disini yaitu empathize dan systemize. Kebanyakan developer berpikir secara systemize daripada empathize. Mereka mengandalkan logika di atas segalanya sehingga jarang kita dapati sisi emosional yang dominan seorang developer. Berbanding terbalik dengan developer, designer memiliki pola pikir empathize yang lebih mengandalkan perasaan dan emosi sehingga mentrigger kreatifitas pada otak kanan mereka.
Fokus dari kedua pihak pun berbeda, developer lebih berfokus kepada sistem sedangkan designer lebih berfokus ke end user. Kedua pihak tersebut harus berkomunikasi sedari awal fase perancangan dan mengenal satu sama lain sehingga bisa berkolaborasi secara terpadu. Ibarat otak manusia, ada otak kanan dan kiri. Inilah yang saya maksud dengan satu kesatuan karena manusia tidak akan bisa menjalankan hasrat hidupnya hanya menggunakan otak kiri saja atau otak kanan saja melainkan harus saling melengkapi, sama hal-nya dengan kesatuan designer – developer.
Bagaimana Caranya?
Key Discussion
Pertama-tama sebelum designer memulai fase perancangan design dengan tools XD, Figma, atau Sketch, bertanyalah kepada developer beberapa pertanyaan kunci.
Tools Apa yang Digunakan?
Tools seperti XD, Figma memiliki fitur yang memudahkan kolaborasi antara designer dengan developer. Ketika developer memilihi hak akses untuk melihat keseluruhan design beserta assetnya, maka designer bisa mengecek sedari awal kira-kira seperti apakah design yang akan diimplementasikan, memberikan komen, dan menyatukan persepsi antara designer dengan developer secara lebih mudah. Sehingga feedback bisa langsung diberikan oleh developer sebelum designer mengimplementasikannya lebih jauh.
Cobalah untuk mendiskusikan tools apa yang terbaik menyesuaikan dengan jenis project, preferensi tim, hingga preferensi perusahaan. Tools ini bisa disebut juga sebagai asset management yang memudahkan developer untuk mengakses sekaligus mengekspor assets pada layout yang telah di design oleh designer secara mandiri. Sehingga tidak ada lagi yang namanya developer meminta asset kepada designer. Semua sudah tersedia di satu tempat yang sama dan lebih terorganisir.
Apakah Framework / Library yang Digunakan?
Penting sekali untuk menanyakan hal ini karena designer bisa menyesuaikan asset, icon, komponen, hingga grid supaya sesuai dengan apa yang akan diimplementasikan developer dan tidak memiliki gap yang terlalu jauh. Menjadi tidak baik apabila designer mementingkan ego untuk memberikan design dengan kompleksitas yang tinggi dan tidak memungkinkan untuk didevelop. Contohnya ketika mendesign untuk aplikasi android, maka designer alangkah lebih baik untuk memahami komponen yang digunakan dalam material design. Sama hal-nya ketika web developer mendevelop web dengan bootstrap 4, mau tidak mau, designer juga harus menyesuaikan design dengan guideline yang ada di bootstrap.
Fase Design Seharusnya Tidak Pernah Selesai
Terdapat miskonsepsi yang umum terjadi bahwa ketika designer selesai melakukan tugasnya (mendesign screen keseluruhan mockup serta prototype-nya), maka mereka merasa bahwa kerja mereka telah selesai. Konsep seperti ini sering ditemukan pada projek bertipe waterfall, bahkan pada beberapa project agile sekalipun. Sebenarnya ketika designer selesai mendesign mockup atau prototype, pekerjaan designer baru selesai setengahnya. Karena ketika design sampai di tangan developer, fokus tidak lagi berpusat pada screen tetapi lebih spesifik ke fitur. Fitur dikembangkan behind the screen sehingga beberapa perubahan akan sering terjadi. Maka designer harus bisa stand by kapan saja apabila sewaktu-waktu ada developer yang membutuhkan bantuan designer untuk menyesuaikan design-nya kembali.
Perlu diingat bahwa kerja designer adalah menyeluruh. Pekerjaan designer tidak boleh terbatas pada visual yang mengandung nilai estetik saja. Namun juga mencakup bagaimana keseluruhan sistem bisa mudah digunakan oleh user. Maka dari itu, designer juga sedikit banyak ikut bertanggung jawab pada produk final yang telah diimplementasikan oleh developer.
Membuat Guideline yang Memudahkan Developer
Developer sangat dominan menggunakan otak kiri. Maka dari itu, ketika design sudah di depan mata, tidak semua developer bisa menerjemahkan visual design ke dalam bentuk code. Ada beberapa developer yang mengerti komposisi design dan nilai estetik, ada pula developer yang kurang memahaminya. Maka designer harus lebih aware dalam hal ini. Setiap fase design yang dilakukan, jangan lupa membuat guidance yang simple namun mencakup keseluruhan aspek design. Guideline itu bisa mencakup palet warna, ukuran margin padding, white space, typeface dan font size, dan lain-lain. Biasanya developer tidak memberikan feedback apapun setelah melihat design guideline dari kita. Mereka mengaku paham mengenai guideline namun pegakuan ini seringkali bertolak belakang dengan yang diharapkan designer. Maka dari itu, kedua pihak harus saling supportive dan terbuka mengenai persepsi mereka masing-masing.
Akses ke Code Base
Mungkin banyak developer tidak setuju dan mempertanyakan untuk apa memberikan akses code kepada designer? Namun hal ini ternyata efektif dan solutif untuk menjawab masalah yang timbul ketika kolaborasi antara designer dan developer tidak berjalan lancar. Pada satu titik, kolaborasi tim ini memungkinkan untuk terjadi bottleneck dan muncul rasa ketidakpercayaan satu sama lain. Namun ketika designer memiliki akses kode, terjadi perubahan drastis yaitu munculnya rasa supportive dan kepercayaan.
Terdapat pro dan kontra di komunitas designer maupun developer mengenai designer yang memiliki akses code. Tetapi realitanya, sangat susah untuk mendapatkan chemistry untuk kolaborasi ketika ada tembok raksasa, tidak terlihat, dan hanya bisa di akses oleh satu pihak saja. Sehingga muncul istilah baru yang mengkombinasikan design dengan programming, yaitu fullstack design.
Ketika seorang designer dipercaya untuk mengakses kode program, berarti designer tersebut sudah memenuhi kriteria sebagai fullstack designer. Seorang fullstack designer harus memiliki pengetahuan dasar tentang git, git hub, dan penullisan kode khususnya di bagian client side.
Kembali lagi pada pokok permasalahan yaitu harus ada batasan pembagian jobdesc serta peraturan yang disetujui antara developer – designer supaya pekerjaan tidak tumpang tindih atau malah simpang siur karena cara ini bukanlah best practice yang bisa diimplementasikan pada mayoritas perusahaan.
Mempelajari “Bahasa” Satu Sama Lain
Jika penjelasan sebelumnya lebih spesifik ke fullstack design, pembahasan kali ini akan mencakup developer – designer secara umum. Mempelajari “bahasa” satu sama lain bukan berarti designer harus bisa menulis kode atau developer harus bisa mendesign sesuatu. Yang dimaksud “bahasa” disini adalah istilah yang berkenaan dengan bidang ilmu masing masing. Kenapa harus mengerti “bahasa” satu sama lain? Karena ada istilah-istilah yang tidak mungkin diperjelas secara panjang lebar dan diterjemahkan menjadi bahasa orang awam karena kemungkinan besar justru mengakibatkan salah persepsi. Katakanlah seorang developer menanyakan “Kenapa fontsize-nya berubah-ubah?” Maka designer bisa menjawab “Karena dengan penggunaan fontsize dan weight yang berbeda, bisa membuat visual hierarchy yang baik sehingga meningkatkan usability”. Jika developer mengerti istilah yang dimaksud designer begitupun sebaliknya, akan sangat menguntungkan kedua pihak dari segi apapun.
Kesimpulan
Tidak ada cara yang selalu cocok dengan kondisi kolaborasi apapun. Hal itu kembali lagi dengan karakteristik masing-masing tim. Ketika satu sama lain saling memahami kebutuhan dan kondisi, barulah bisa mengaplikasikan beberapa cara yang disarankan di atas. Saran dari saya sendiri, mulailah pilih salah satu cara di atas, dan aplikasikan sesuai dengan kondisi kolaborasi tim. Jika memungkinkan, temukan beberapa orang dalam tim yang memiliki visi serupa untuk mewujudkan lingkungan kerja yang kolaboratif antara designer –developer. Buatlah tim kecil, berdiskusi sambil minum kopi dengan membahas mengenai apa yang harus dan tidak dilakukan demi kolaborasi yang lebih baik. Pada akhirnya, catat progress dari cara yang sudah disepakati sehingga Anda dan tim bisa mengukur dan melihat dengan harapan bahwa cara tersebut membawa dampak baik dan tidak lupa untuk terus mengevaluasinya.
Saat ini, Neumorphism menjadi style design yang digandrungi oleh komunitas designer dan banyak ditemukan pada Dribbble, Behance, Instagram dan forum-forum lain. Neumorphism merupakan turunan dari skeumorphism. Untuk lebih mudah membedakannya, skeumorphism merupakan istilah yang digunakan pada user interface untuk membuat suatu komponen layaknya komponen real di dunia nyata. Salah satu contoh pengaplikasian skeumorphism adalah pada icon shortcut recycle bin di OS windows. Skeumorphism pertama diimplementasi pada era awal smartphone touchscreen yang diperkenalkan oleh Apple iOS. iOS sangat mengerti bahwa dengan mengaplikasikan skeumorphism, user yang awal mulnya tidak paham bagaimana cara kerja touchscreen, bisa beradaptasi lebih cepat. Contohnya button dengan efek glossy, foto dengan border putih seperti foto real di dunia nyata, dan masih banyak lagi. Design ini lalu dengan cepat menyebar sehingga tidak luput diaplikasikan pada platform lain.
Skeumorphism VS Flat Design
Untuk saat ini, sudah sangat jarang ditemukan design dengan style skeumorphism karena hampir seluruh manusia di dunia sudah mengenal media digital mulai dari smartphone hingga desktop. Maka, penggunaan skeumorphism yang terlalu banyak detail, akan menjadi useless karena user sudah bisa menginterpretasikan suatu komponen dengan cepat meskipun tidak menyerupai komponen di dunia nyata. Ketika mendekati perilisan iOS7, Apple mengumumkan bahwa mereka akan meninggalkan style tradisional (Skeumorphism) dan beralih ke style yang lebih simple yaitu flat design. Saat ini, hampir semua platform mengimplementasi flat design. Namun dalam beberapa waku belakangan (2018-2019), flat design murni juga sepertinya mengalami dark period seiring berumunculan flat design yang dikembangkan dengan gaya flat illustratif.
Neumorphism lahir dari hasil kombinasi antara skeumorphism dengan flat design. Sehingga menghasilkan design yang 3D, bertekstur namun tetap soft dan simple. Output seperti itu bisa dihasilkan dengan racikan yang tepat atas bentuk, gradien, warna background, highlights, dan permainan shadow. Secara kasat mata, mungkin Anda berpikir bahwa Anda memerlukan aplikasi 3D rendering. Tetapi sebenarnya Anda hanya perlu aplikasi design standar yang biasa Anda gunakan seperti XD, Figma, Sketch dan sejenisnya dengan sedikit sentuhan “magis” dalam pembuatannya.
Anda bisa melihat panduan di bawah untuk membuat design neumorphism.
Mendesign Style Neumorphism
Panduan untuk Designer
Pada panduan kali ini, saya memberikan contoh bagaimana membuat design neumorphism secara simple menggunakan Adobe XD.
Popping Up
Disini, Anda akan membuat efek timbul neumorphism. Pertama-tama, Anda harus memilih warna yang smooth (biasanya saturasi rendah). Lalu implementasikan warna tersebut di artboard anda.
Hex color yang saya gunakan
Setelah itu, buat square shape dengan ukuran bebas. Dalam contoh saya, saya menggunakan ukuran 100px X 100px. Set warna menyamakan dengan warna background. Lalu berilah efek black shadow dengan X=6, Y=6, B=10 dan opacity 20%. Anda bisa mengatur shadow sesuai dengan preferensi Anda.
Atribut Black Shadow
Square dengan Black Shadow
Buat lagi square shape dengan ukuran yang sama, namun berilah efek white shadow dengan X=-6, Y=-6, B=10 dan opacity 80%.
Atribut White Shadow
Square Ke-dua dengan White Shadow
Gabungkan kedua square secara tumpang tindih. Berikut adalah hasilnya.
Hasil Popping Up Square
Popping Down
Disini, Anda akan membuat efek rongga (ketika di tekan) neumorphism. Pertama-tama, buat square bernama layer “dark” dengan ukuran yang sama seperti cara sebelumnya. Set fill color transparent, border black, object blur seperti gambar di bawah.
Atribut Square Dark
Hasil Square Dark
Buat square ke-dua bernama layer “light” dengan ukuran yang sama. Set fill color transparent, border white, object blur seperti gambar di bawah.
Atribut Square Light
Hasil Square Light
Lalu buat square ke-tiga bernama layer “mask” dengan ukuran yang sama. Set atribut fill color transparent dan border dengan warna mencolok.
Square “Mask”
Lalu posisikan ketiga square tersebut secara tumpang tindih dengan susunan layer dari atas ke bawah: mask – light – dark.
Susunan Layer
Ketiga Square Tumpang Tindih
Ubah ukuran square dark menjadi 120px X 120px dan geser beberapa pixel ke kanan dan ke bawah. Ubah pula ukuran square light menjadi 120px X 120px dan geser beberapa pixel ke kiri dan ke atas. Usahakan efek blur dari kedua square tersebut masih tercakup di dalam square mask.
Posisi Setelah Ukuran Square Dark dan Light Dirubah
Langkah terakhir, select ketiga object tersebut, klik kanan > Mask With Shape. Dan jadilah efek rongga (popping down) neumorphism.
Hasil Popping Down Square
Implementasi Neumorphism
Setiap design memiliki sisi baik dan buruknya. Sisi baiknya, neumorphism bisa memberi nuansa yang baru, fresh, dan terasa unik. Ketika dilihat oleh mata, membuat siapapun usernya ingin untuk memainkan komponen yang ada (termasuk saya) sehingga unsur gamification secara tidak langsung bisa dirasakan. Yang jadi pertanyaan adalah, mengapa saat ini kita masih belum melihat aktivitas masif implementasi neumorphism ini pada produk real? Meskipun neumorphism membawa efek visual yang bagus, ternyata mengandung kelemahan yang krusial yaitu usability.
Usability yang diusung oleh neumorphism sangat bergantung pada niche tertentu. Margin warna yang sangat kecil dan kontras membuat neumorphisme bekerja dengan tingkat saturasi yang rendah. Ditambah juga terlalu banyak shadow dan textur membuatnya tidak cocok untuk aplikasi yang tergolong kompleks. Sehingga ketika diaplikasikan pada contohnya, aplikasi bisnis, mengharuskan nuansa formal dan neumorphism gagal diimplementasi. Sepertinya neumorphisme hanya cocok untuk beberapa aplikasi yang memiliki idealisme yang berhubungan dengan kreatifitas, out of the box, dan simplicity.
Beberapa Issue
Button (tombol) adalah salah satu komponen terpenting dalam user interface. Tanpa adanya button, user akan kesulitan untuk melakukan aksi trigger aktivitas dalam aplikasi. Maka dari itu, suatu button harus terlihat mencolok dan mengandung sedikiti interaksi untuk memberitahu user perubahan status dari suatu button. Meskipun hanya sepersekian detik, perubahan status dan warna sangat krusial karena bersifat komunikatif kepada user. Ketika button menggunakan style neumorphisme, sulit untuk memberi perubahan status pada button karena terhalang dengan margin tipis dalam efek bayangan. Beberapa designer mencoba menjawab permasalahan dengan tetap memberikan style neumorphism hanya pada cards namun mengunakan tombol classic tanpa sentuhan neumorphism.
Neumorphism Button
Hal ini berlaku pula dengan prinsip CTA (Call to action). Sebagaimana diketahui, bahwa CTA harus mengandung warna yang mencolok sehingga mempersuasi user untuk menekan button tersebut. Dengan neumorphism, lagi-lagi ada batasan warna sehingga user tidak bisa menemukan CTA dengan mudah.
Contoh Implementasi CTA pada Neumorphism
Issue berikutnya berhubugan dengan aksesibilitas. Melanjutkan perihal implementasi neumorphism yang bergantung dengan niche, neumorphism menyulitkan beberapa pengguna yang memiliki gangguan penglihatan khsusunya pada beberapa orang dewasa dan telah berumur. Neumorphisme adalah tentang UI yang lembut tetapi jika digunakan secara berlebihan, membuat user mudah untuk terdistraksi. Ditambah lagi apabila user menggunakan layar kualitas rendah sehingga menghilangkan detail dari neumorphism itu sendiri.
Beberapa Pihak Tidak Setuju dengan Neumorphism
Kesimpulan
Komunitas pada Dribbble, instagram, medium, hingga reddit, beberapa menganggap bahwa neumorphism adalah pengganti flat design. Hal tersebut tidak sepenuhnya benar, karena lebih tepatnya adalah design yang bersifat tambahan saja. Sama seperti halnya trend gradient yang terjadi beberapa waktu belakangan. Banyak yang bereaksi dan menggadang-gadang bahwa gradient akan menggantikan flat design. Katika gradient diimplementasi sedemikian rupa dan diterapkan untuk mengcover seluruh layar, ternyata hasilnya sangat buruk. Pada akhirnya, gradient hanya sebagai pelengkap dan perfectly fits pada UI design yang spesifik pada beberapa komponen saja.
Gelombang neumorphism untuk saat ini masih fase permulaan. Komunitas designer terus bereksperimen untuk menghasilkan neumorphism yang benar-benar bisa cocok diaplikasikan pada real produk. Sebagai designer, Anda bisa ikut berkontribusi melakukan eksperimen. Sebagai non designer khususnya developer, tetap ikuti dan amati trend neumorphism ini karena telah banyak bermunculan tools generator untuk membuat neumorphism secara mudah. Walaupun dalam waktu mendatang neumorphism gagal untuk benar-benar diimplementasikan, kita semua tetap bisa mengambil pelajaran dan menjadi bagian dari fenomena ini.
Halo teman-teman! Terimakasih sudah membuka artikel ini 😊
So, artikel ini saya tulis sebagai media literasi dan dokumentasi dari event webinar yang diadakan oleh Kopertip Indonesia pada tanggal 14 Juni 2020.
Jadi, Bagaimana cara cepat untuk berkarir sebagai Mobile Developer? Sebelum menjawab hal tersebut, saya akan menjelaskan kenapa harus berkarir sebagai Mobile Developer. Saya menghighlight beberapa hal penting yang terdapat pada profesi ini, yaitu:
[SATU]: Trend Statistic
Saat ini total dari perusahaan terdaftar pada sensus ekonomi 2016 berjumlah lebih dari 23 juta perusahaan yang terdiri dari UMK dan UMB. Selain itu juga terjadi pertambahan sekitar lebih dari 2000 perusahaan baru setiap tahunya. Perubahan pola administrasi dan bisnis pada perusahaan juga akan berubah seiring berjalanya waktu. Untuk mengubah pola tersebut Indonesia memerlukan sumber daya manusia yang banyak.
Untuk memenuhi target tersebut, saat ini pemerintah dan berbagai perusahaan swasta menyelengarakan berbagai program untuk memenuhi kebutuhan mobile programmer di Indonesia. Diantara program tersebut adalah menyelenggarakan bootcamp scholarship, workshop, online course scholarship, dan berbagai program lain. Seperti contoh: Program Digitalent by Kominfo, IDCamp by Indoosat Ooredo, Sholarship Internship by Apple Developer Academy.
[DUA]: Salary
Payscale merangkum beberapa hasil survey terhadap gaji developer, berikut hasil survey untuk rata-rata gaji dari android developer dan iOS developer di Indonesia.
resource: www.payscale.com
Angka tersebut belum menjelaskan angka pasti nilai gaji di seluruh wilayah Indonesia. Teman-teman bisa mengecek lebih detail pada qr code yang telah saya cantumkan atau pada link berikut:
Saya pribadi menerapkan konsep Ikigai yang berkaitan dengan beberapa aspek pada hidup. Hal tersebut mendukung saya agar dapat mendalami lebih dalam tentang apa yang saya suka, apa yang saya bisa, apa yang dunia butuhkan, dan apa yang dunia mau membayar untuk mendapatkan hal tersebut.
resource: Ikigai, Hector Gracia and Francesc Miralles
Saya mendapatkan bahwa Mobile Developer menjadi profesi yang menarik saya untuk lebih mendalaminya.
[EMPAT]: Learning Path
Selain beberapa hal diatas, ada juga hal penting yang dapat mempercepat proses kita untuk menjadi Mobile Developer yaitu mengikuti Learning Path atau Roadmap yang dibutuhkan. Dengan memiliki learning path tersebut akan mempermudah dan mempercepat kita untuk mempelajari hal-hal yang dibutuhkan di dunia industri sebagai Mobile Developer.
Berikut saya bagikan learning path yang juga saya gunakan dalam proses saya untuk menjadi Mobile Developer.
Sebagai developer tentunya kita harus dapat memecahkan sebuah masalah yang kita alami, nah untuk memecahkan masalah tersebut kita memerlukan proses pembelajaran dan best-practice untuk menyelesaikanya. Berikut beberapa tips yang dapat teman-teman terapkan untuk mendukung teman-teman menjadi Mobile Developer:
Be Stackoverflow buddy!
Join Bootcamp or Courses
Find match Community!
Remember, 10.000 hours rules
Berikut saya bagikan beberapa bootcamp dan course yang dapat membantu teman-teman dalam belajar sebagai Mobile Developer:
Pertama kali saya terjun di dunia kerja langsung menghadapi banyak materi yang asing. Namun materi pertama dan selalu saya gunakan sampai sekarang adalah suatu proses menjalankan aplikasi dan proses jalannya secara client dan server side, hal utama yang menurut saya perlu dipelajari adalah Synchronus dan Asynchronus. Materi ini menurut saya sangat diperlukan untuk dasar pemrograman (walaupun saat kuliah tidak pernah ada :3). Walaupun secara tidak langsung hampir semua Web Developers menggunakannya namun perlu Pengetahuan lebih dalam karena proses ini sederhana dan berdampak ke semua aspek kehidupan program Anda.
Apakah yang di maksud dengan Synchronouse?
Synchronous adalah proses jalannya program secara sequential , disini yang dimaksud sequential ada berdasarkan antrian ekseskusi program. Pada dasarnya semua Bahasa pemrograman menggunakan Asynchronouse terutama PHP.
Cotoh Synchronous di Bahasa Perograman PHP:
beri nama file synchronous.php
<?php
$now = date(‘Y-m-d’);
// antrian 1
echo$now.‘ |’;
$yesterday = date(‘Y-m-d’,strtotime(‘-1 days’));
// antrian 2
echo$yesterday.‘ |’;
$week = date(‘Y-m-d’,strtotime(‘-1 week’));
// antrian 3
echo$week.‘ |’;
?>
Hasil Eksekusi:
Hasil eksekusi file php sync
Penjelasan: Pada saat file synchronouse.php dieksekusi maka proses nya adalah membaca antrian 1 terlebih dahulu kemudian antrian 2 dan terakhir adalah antrian 3.
Apakah yang dimaksud dengan Asynchronous?
Asynchronous adalah proses jalannya program bisa dilakukan secara bersamaan tanpa harus menunggu proses antrian. Synchronous merupakan bagian dari Asynchronous (1 antrian) dimana proses akan dieksekusi secara bersamaan dan untuk hasil tergantung lama proses suatu fungsi synchronous . Asynchronouse hampir disemua Bahasa pemrograman ada namun untuk PHP masih belum ada. PHP sebagai server side hanya menyediakan synchronous namun bisanya di WEB Developers tetap digunakan namun menggunakan AJAX (Asynchronous Javascript And XML) untuk proses Asynchronouse.
Nilai terus berjalan Secara bersamaan tanpa ada AntrianPenjelasan: Counter Nilai terus berjalan tanpa ada antrian.
Berikut Source Code Link Gitlab apabila anda ingin mencoba: Link
Contoh Asynchronous di NODE JS
Di artikel saya sebelumnya pernah membahas chat menggunakan Socket.io dimana basic dari Realtime Chat dengan socket.IO ada Synchronous. Silahkan lihat di Artikel saya berikut : Realtime Chat dengan Html, Javascript dan Socket.io
Berikut Link Artikel untuk mempelajari Asynchronous di beberapa Bahasa pemrograman:
Note: Synchronous dan Asynchronous saling berkisambungan jadi apabila anda ingin lebih detail bisa Anda pahami lebih dalam. Kegunakan juga sesuai kebutuhan.
Convolutional Neural Network (CNN) adalah salah satu algoritme deep learning. CNN sudah dikenal luas dalam bidang pengolahan gambar, namun kini CNN juga mulai diterapkan di bidang-bidang lain seperti pengolahan kata, pengolahan time series data, pengolahan video, dan bidang lainnya.
Bila kita menggunakan keras, maka akan ada tiga jenis CNN layer yang dapat kita gunakan, yaitu Conv1D, Conv2D, dan Conv3D. Walaupun memiliki kesamaan prinsip kerja, namun ketiganya digunakan untuk menyelesaikan kasus yang berbeda. Sekarang mari kita bahas perbedaan diantara ketiga CNN layer tersebut.
Bila Anda belum memahami dasar dari CNN, maka saya sarankan untuk mempelajari dasar-dasar CNN terlebih dahulu sebelum melanjutkan membaca artikel ini. Misalnya melalui artikel “A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way” ini. Artikel tersebut membahas dasar-dasar CNN dengan ilustrasi yang menarik, sehingga mudah dipahami.
Penggunaan
Masing-masing jenis CNN layer digunakan untuk kasus dan obyek pemrosesan yang berbeda. Table 1 berikut merangkum contoh penggunaan masing-masing CNN layer.
Conv1D
Conv2D
Conv3D
Natural Language Processing
2D Image Processing
Video Processing
Time series data analysis
3D Image Processing
Audio processing
Table 1. Tipe CNN layer dan penggunaannya.
Agar dapat memahami mengapa terdapat perbedaan CNN layer yang digunakan pada kasus tersebut, maka kita harus memahami cara kerja dari masing-masing CNN layer tersebut.
Cara Kerja
Kita mulai dari cara kerja Conv2D karena layer ini adalah dasar dari konsep CNN yang nantinya dikembangkan menjadi Conv1D dan Conv3D. Conv2D juga merupakan CNN layer yang paling sering kita temui di berbagai buku dan tutorial tentang CNN, khususnya pada topik pengolahan gambar.
Gambar 1 adalah ilustrasi Conv2D yang diimplementasikan ke dalam pixel gambar RGB. Tiap pixel berada di posisi tertentu dalam koordinat X dan Y. Tiap pixel terdiri dari 3 kanal (channel) atau vektor (vector) warna, yaitu merah (Red), hijau (Green), dan biru (Blue). Dalam praktiknya, vektor kata disimpan array 1 dimensi. Sebagai contoh, pixel warna merah direpresentasikan menggunakan vektor [255, 0, 0].
Filter dalam Gambar 1 berukuran 2 x 2 pixel. Filter tersebut akan memindai gambar secara vertikal (X axis) dan horizontal (Y axis). Karena contoh pada Gambar 1 berukuran 10 x 9 pixel, maka filter tersebut akan memindai sebanyak 9 x 8 atau 72 kali.
Filter dalam topik CNN juga dikenal dengan nama lain seperti kernel, convolution matrix, mask, atau feature detector.
Tujuan dari penggunaan filter ini adalah untuk mendapatkan feature dari gambar. Dalam praktiknya, feature yang dicari oleh CNN filter dapat berupa tepi (edge) atau pola (pattern) lainnya dari obyek dalam gambar. Bila tertarik lebih dalam, artikel berjudul What exactly does CNN see? ini memberikan visualisasi atas hasil perhitungan CNN filter.
Gambar 2 adalah ilustrasi Conv1D yang diimplementasikan ke dalam text processing. Pada contoh dalam Gambar 2, terdapat sebuah teks yang terdiri dari 9 kata. Agar dapat diolah menggunakan CNN, kata tersebut di encode menjadi vektor. 1 vektor merupakan representasi dari 1 kata. Sehingga dalam contoh di Gambar 2, terdapat 9 vektor yang merupakan representasi dari 9 kata.
Pada contoh Gambar 2, 1 vektor kata terdiri dari 6 nilai (value). Misalnya, kata “Love” dapat di encode ke dalam vektor [1, 1, 1, 0, 0, 0]. Pada prinsipnya, ini mirip seperti nilai 1 pixel dalam Conv2D yang terdiri dari 3 nilai RGB.
Filter dalam Gambar 2 berukuran 2 kata. Filter tersebut akan memindai teks dari awal hingga akhir (X axis). Karena dalam contoh pada Gambar 2 terdapat 9 kata, maka filter tersebut akan memindai sebanyak 8 kali.
Pada dasarnya, Conv3D mengolah data 3 dimensi. Contohnya adalah video. Video sebenarnya merupakan sebuah gambar, namun jumlahnya sangat banyak dan ditampilkan secara berurutan. Dengan kata lain video adalah sebuah time series images.
Pada Conv3D, filter memindai secara horizontal (X axis), vertikal (Y axis), dan mendalam (Z axis). Conv3D banyak digunakan untuk mengolah data 3D seperti data Magnetic Resonance Imaging (MRI) atau Computerized Tomography (CT).
Dimensi Input Space pada Keras
Bila anda menggunakan keras, maka terdapat perbedaan dimensi input space yang dimasukkan sebagai parameter saat melakukan inisialisasi CNN layer. Tabel 2 berikut ini merangkum perbedaan input space pada ketiga jenis CNN layer tersebut.
Catatan, urutan input pada Tabel 2 disusun berdasarkan asumsi nilai data_format='channels_last'.
Sebagai contoh:
Data input: 1 detik suara stereo (2 kanal) 44100 Hz Dimensi input Conv1D:(batch_size, 44100, 2)
Data input: 2 detik suara mono (1 kanal) 44100 Hz Dimensi input Conv1D:(batch_size, 88200, 1)
Data input: gambar RGB 32 x 16 pixel Dimensi input Conv2D:(batch_size, 32, 16, 3)
Data input: gambar grayscale 16 x 32 pixel Dimensi input Conv2D:(batch_size, 16, 32, 1)
Data input: 1 detik video RGB berukuran 128 x 80 pixel dengan kecepatan putar 24 frame per second (fps) Dimensi input Conv3D:(batch_size, 24, 128, 80, 3)
Data input: 2 detik video grayscale berukuran 80 x 128 pixel dengan kecepatan putar 24 frame per second (fps) Dimensi input Conv3D:(batch_size, 48, 80, 128, 1)
Kesimpulan
Kesimpulan dari pembahasan tentang perbedaan Conv1D, Conv1D, dan Conv1D dalam dilihat pada Tabel 3 berikut.
Conv1D
Conv2D
Conv3D
Dimensi keras input space
3 D
4 D
5 D
Dimensi data input
2 D
3 D
4 D
Dimensi filter
2 D
3 D
4 D
Dimensi data output
2 D
3 D
4 D
Gerakanfilter
1 D
2 D
3 D
Tabel 3. Kesimpulan
Semoga tulisan ini dapat bermanfaat bagi kita semua.
Dalam beberapa bulan terakhir, berita tentang wabah covid-19 telah memenuhi semua media informasi. Internet dan sosial media yang kini sudah tersebar luar membuat informasi tersebut membanjiri gadget kita tanpa kita minta. Ibarat tsunami yang datang menghantam tanpa bisa dibendung. Fenomena semacam ini dikenal dengan istilah “tsunami informasi”.
Bagaimana kita bertahan menghadapi tsunami informasi ini? Bagaimana kita bisa memilah mana informasi yang benar dan yang salah? Mana informasi yang perlu kita terima dan abaikan?
Berpikir secara ilmiah dapat membantu kita menjawab pertanyaan tersebut dan bertahan menghadapi tsunami informasi. Berpikir secara ilmiah dapat dilakukan oleh setiap orang tanpa memandang latar belakang pendidikan. Yang diperlukan adalah kemampuan berpikir secara kritis agar dapat menilai tingkat kebenaran suatu informasi.
Bagaimana cara berpikir ilmiah?
Agar dapat berpikir secara ilmiah, kita harus memahami langkah-langkah dalam berpikir ilmiah agar dapat mengukur suatu kebenaran.
Fakta
Fakta adalah hasil dari pengamatan.
Fakta adalah hal (keadaan, peristiwa) yang merupakan kenyataan yang benar-benar ada atau terjadi. Fakta tidak dapat dibantah, karena dia benar-benar ada, dapat kita lihat dan rasakan menggunakan panca indra. Berikut adalah contoh fakta yang dapat kita temukan sehari-hari:
Kita dapat melihat alam sekitar dengan jelas di siang hari.
Kita tidak dapat melihat alam sekitar dengan jelas di malam hari.
Dua hal itu adalah hasil dari pengamatan. Bila semua orang melakukan pengamatan yang sama, maka mereka akan mendapati fakta yang sama pula.
Fakta akan seringkali memunculkan pertanyaan dalam benak kita, misalnya “mengapa kita dapat melihat alam sekitar dengan jelas di siang hari, namun tidak di malam hari?”
Kita, sebagai manusia, akan berusaha mencari jawaban atas pertanyaan-pertanyaan tersebut. Mungkin akan ada sebagian orang yang berusaha menjawab pertanyaan tersebut, misalnya dengan mengatakan:
“Mata kita mengeluarkan sinar di siang hari, namun tidak di malam hari.”
“Matahari yang bersinar di siang hari, namun ia hilang di malam hari”
Dalam ilmu pengetahuan (science) kedua pernyataan tersebut dikenal dengan istilah hipotesis.
Hipotesis
Hipotesis adalah gagasan yang diajukan untuk menjelaskan suatu fenomena sebagai langkah awal dalam melakukan penelitian.
Namun, yang perlu diingat, hipotesis adalah sesuatu yang harus diuji.
Nah sekarang cobalah berpikir sejenak, bagaimana cara kita menguji dua contoh hipotesis sebelumnya?
Salah satu cara menguji hipotesis pertama, cobalah anda melihat benda dalam ruang tertutup, tanpa lampu, di siang hari? Bila anda tetap dapat melihat, maka mungkin benar bahwa mata anda mengeluarkan sinar di siang hari.
Cara menguji hipotesis kedua, lakukan hal yang sama di pengujian pertama, namun kali ini cobalah membuka jendela sehingga sinar matahari dapat masuk ke dalam ruangan tersebut. Bila anda dapat melihat isi ruangan setelah jendela dibuka, maka mungkin benar bahwa matahari yang mengeluarkan sinar sehingga kita dapat melihat alam sekitar.
Ada puluhan atau bahkan ratusan cara untuk menguji hipotesis yang kita buat. Semakin banyak hipotesis tersebut lolos pengujian, maka semakin tinggilah keyakinan kita akan kebenaran dari hipotesis tersebut. Sebaliknya, semakin banyak hipotesis tersebut gagal dalam pengujian, maka hipotesis tersebut akan semakin meragukan.
Ketika terdapat banyak hipotesis yang telah lolos pengujian ilmiah, maka semua hipotesis tersebut dalam disatukan ke dalam sebuah teori ilmiah.
Teori Ilmiah
Teori ilmiah merupakan penjelasan yang mendalam dari satu fenomena yang merupakan kesimpulan dari banyak fakta dan hipotesis yang telah diuji menggunakan serangkaian pengujian ilmiah.
Teori ilmiah bukanlah standar kebenaran yang tak dapat dibantah. Seiring dengan meningkatkan ilmu pengetahuan dan teknologi yang dimiliki manusia, banyak teori ilmiah yang dahulu diterima, namun kini telah dibantah dan digantikan oleh teori ilmiah lainnya.
Geocentric model adalah salah satu contoh teori ilmiah yang sempat bertahan selama ratusan tahun namun akhirnya gagal melalui pengujian ilmiah modern dan kini telah digantikan oleh heliocentric model. Heliocentric model masih bertahan hingga saat ini karena ia masih berhasil melalui serangkaian pengujian ilmiah modern.
Membantah suatu teori ilmiah bukan merupakan sesuatu yang tabu dalam ilmu pengetahuan. Misalnya, sah saja bila Anda tidak setuju dengan teori heliocentric model. Namun Anda harus dapat melakukan serangkaian pengujian ilmiah yang mampu membantah teori tersebut.
Sejarah telah mengajarkan kita bahwa pada akhirnya hanya teori ilmiah yang mampu lolos berbagai macam pengujian yang mampu bertahan dan diterima sebagai penjelasan atas suatu fenomena.
Bertahan Menghadapi Tsunami Informasi
Bagaimana kita bertahan menghadapi tsunami informasi saat ini?
Sederhana saja, kita harus dapat memilah apakah informasi tersebut adalah:
fakta?
hipotesis?
teori ilmiah?
Bila informasi tersebut adalah fakta, maka masih layak kita percaya.
Bila informasi tersebut adalah hipotesis, maka periksalah dahulu. Apakah hipotesis tersebut telah lolos melalui serangkaian pengujian? Bila hipotesis tersebut tidak pernah diuji maka abaikan saja. Bisa jadi itu hanyalah opini yang mungkin tak ada manfaatnya bagi Anda.
Bila informasi tersebut adalah teori ilmiah, maka masih layak untuk kita terima. Namun sekali lagi, teori ilmiah juga bukanlah merupakan satu standar kebenaran, karena masih dapat dibantah bila suatu saat nanti ditemukan fakta dan pengujian baru yang tak dapat dia lampaui.
Bila kita mampu memilah tsunami informasi yang kita terima, maka dapat membuat kita lebih tenang dalam menerima informasi dan terhindar dari rasa panik yang tidak perlu.
Semoga artikel ini dapat bermanfaat bagi kita semua.
LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the de facto standard for the communication and publication of scientific documents. LaTeX is available as free software [1].
LaTeX adalah perangkat lunak yang umum digunakan oleh mahasiswa untuk menulis karya ilmiah seperti tesis atau disertasi. Walaupun LaTeX awalnya terasa sulit untuk dipelajari, tetapi di balik itu LaTeX memberikan banyak kemudahan dan fitur yang tidak dimiliki oleh Word Processor.
Dalam tulisan ini saya tidak akan membahas tentang kelebihan dan kekurangan LaTeX, namun saya akan membahas cara instalasi LaTeX di Linux Ubuntu. Sebenarnya saya menggunakan Linux Mint 19, namun secara umum panduan ini akan sama untuk Linux Ubuntu dan turunannya.
Instalasi LaTex
Langkah pertama adalah melakukan instalasi distribusi LaTeX untuk Linux [2]. Ada beberapa distribusi LaTeX yang dapat anda gunakan, namun dalam tulisan ini saya akan menggunakan TeX Live.
Lakukan instalasi TeX Live menggunakan perintah:
$ sudo apt-get install texlive-full
Langkah kedua adalah melakukan instalasi LaTeX editor. LaTeX editor yang saya pilih adalah TexMaker. Lakukan instalasi TexMaker menggunakan perintah:
$ sudo apt-get install texmaker
Setelah instalasi selesai, bukalah TexMaker. Antarmuka TexMaker kurang lebih seperti Gambar 1.
Gambar 1. Antarmuka TexMaker
Sedikit tips tambahan dari saya, bila anda ingin file PDF yang dihasilkan ditampilkan dalam satu Windows yang sama, maka bukalah menu:
Options > Configure Texmaker > Commands
Pada bagian Pdf Viewer, centang pada pilihan Built-in Viewer dan Embed[3].
Contoh Dokumen LaTeX
Untuk menguji apakah instalasi anda berhasil. Buatlah TexMaker dan buatlah file baru menggunakan menu:
Jalankan perintah Quick Build, misalnya melalui menu:
Tools > Quick Build
Maka kita akan mendapat peringatan seperti Gambar 2.
Gambar 2. Peringatan tentang penamaan file.
Ya, sebelum dapat melakukan Quick Build, dokumen yang baru kita buat harus kita simpan menggunakan ekstensi .tex dan tanpa menggunakan spasi dan accents characters[4].
Sekarang simpanlah file tersebut, lalu jalankan lagi perintah Quick Build. Bila berhasil, maka akan menghasilkan tampilan yang kurang lebih seperti Gambar 3.
Gambar 3. Tampilan setelah perintah Quick Build berhasil dijalankan
Di dalam folder yang sama tempat kita menyimpan file .tex, Anda akan menemukan file .pdf hasil dari generate perintah Quick Build tersebut.
Halo teman-teman! Terimakasih sudah membuka artikel ini 😊
Jadi, artikel ini saya tujukan untuk teman-teman dalam bidang pendidikan yang pada masa-masa ini terpaksa harus melakukan kegiatan belajar secara online dengan para siswa atau peserta pelatihan. Ya, kita tahu sampai hari ini sudah lebih dari satu bulan semua lembaga pendidikan melakukan kegiatan belajar secara online.
So, How to do simple thing yang dapat membantu kalian untuk melakukan online learning.
Satu platform kelas online yang sangat saya rekomendasikan adalah Google Classroom. Saya juga menggunakan platform ini selama masa pandemi, well saya membantu menjadi admin untuk kelas virtual ibu saya (teacher). Ada sekitar 2 kelas dengan total 150 murid dan sangat mudah sekali untuk mengatur kegiatan kelasnya.
Jadi, apa yang membuat platform ini spesial?
Pengembang platform ini adalah Google. Perusahaan raksasa yang banyak melakukan inovasi di bidang teknologi membuat platform ini sangat bisa untuk dipercaya.
Sinkronisasi dengan semua produk Google seperti Google Form, Google Sheets, Youtube, Google Drive dan masih banyak lagi. Sehingga sangat mudah untuk melakukan banyak hal disini.
Bisa membuat Topic yang dapat disesuaikan dengan Bab bahasan seperti kelas fisik biasanya.
Bisa melakukan pengumpulan dan penilaian tugas secara online
Yang paling penting, hasil tugas siswa dapat direkap secara otomatis dengan output file excell.
Dengan berbagai kemudahan tersebut, ternyata cara menggunakan nya cukup mudah sekali. Silakan ikuti step-step dibawah ini.
[SATU]: Pastikan kalian terhubung dengan Internet dengan kecepatan yang memadai. Why? Karena sebagai guru atau fasilitator tentunya kalian harus tanggap dengan kondisi kelas.
[DUA]: Buka link https: classroom.google.com di browser kalian. Halaman ini adalah wajib kalian buka jika ingin membuka platform Google Classroom. Jangan lupa untuk Sign In dengan akun Google kalian.
Jika kalian baru pertama membuka halaman ini maka akan muncul halaman seperti ini. Pilih ‘Lanjutkan’.
[TIGA]: *Opsional. Silakan download aplikasi Google Classroom di smartphone kalian. Hal ini ditujukan agar kalian dapat dengan mudah memonitor kondisi kelas ketika sedang melakukan aktivitas lain.
[EMPAT]: Pilih ikon ‘+’ untuk membuat kelas kalian. Lalu pilih Create Class.
[LIMA]: Masukan identitas kelas yang akan kalian buat.
Ada beberapa form yang dapat kalian isi sebagai identitas kelas kalian. Berikut beberapa informasi terkait form yang perlu kalian isikan
Class Name: bagian ini akan menjadi judul kelas kalian. Jadi pastikan cukup deskriptif. Bisa diisi dengan nama lembaga kalian.
Section: bagian ini akan menjadi informasi yang muncul dibawah judul kelas kalian. Kalian bisa mengisi dengan nama kelas, guru, atau tahun ajar.
Subject: bagian ini menjadi informasi mata pelajaran atau mata kuliah terkait dengan kelas.
Room: bagian ini menjadi informasi nama ruang kelas seperti kelas fisik pada biasanya.
[ENAM]: Kalian akan mendapatkan tampilan kelas kalian seperti ini.
Ada beberapa tab yang membedakan fungsi-fungsi dari platform ini:
Stream / Forum:
Tab ini berisi informasi kelas dan forum. Kalian dapat post informasi terkait kelas seperti pengumuman penggunaan kelas, atau diskusi terbuka. Dan siswa dapat berkomentar pada postingan yang kalian buat.
Classwork / Tugas Kelas
Tab ini berisi halaman tugas yang harus dilakukan siswa. Kalian dapat memberikan tugas seperti quiz dengan menggunakan Google Forms, atau tugas membaca buku dengan membagikan file ebook yang kalian pilih.
People / Anggota
Tab ini berisi informasi penghuni kelas. Kalian dapat memonitor siapa saja yang memasuki kelas kalian. Kalian juga bisa menambahkan guru lain pada kelas ini.
Grades / Nilai
Tab ini berisi hasil nilai dari tugas yang siswa kalian kumpulkan.
[TUJUH]: Membuat Kelas!
Silakan Pilih ‘Create’ untuk membuat tugas dan silakan pilih tipe tugas yang akan kalian buat. Google menyediakan beberapa templates yang akan membantu kalian untuk membuat tugas.
Assignment: Bagian ini untuk membuat tugas secara umum
Quiz Asignment: Bagian ini untuk membuat tugas dengan template quiz
Question: Bagian ini untuk membuat tugas dengan model kalian membagikan satu pertanyaan lalu siswa dapat menjawabnya
Material: Bagian ini untuk membuat materi bahasan. Bisa berupa informasi tentang bahasan suatu bab / chapter. Kalian bisa menambahkan beberapa link untuk referensi siswa
Reuse Post: Bagian ini untuk menggunakan post yang sebelumnya sudah pernah kalian post.
Topic: Bagian ini untuk membuat pemisah dari setiap bab. Kalian bisa menggunakanya untuk memberi nama bab atau nama tema dari tugas yang akan kalian buat.
[DELAPAN]: Pilih ‘Assignment’, untuk membuat tugas general.
Ada beberapa bagian yang perlu kalian isikan:
Title: Kalian dapat mengisikan dengan nama tugas.
Instruction: Kalian dapat mengisikan dengan instruksi dari tugas yang kalian buat.
Add: Kalian dapat menambahkan file pendukung lain seperti file video youtube, file drive, file attachment, atau link.
Create: Kalian dapat menambahkan file pendukung seperti Google Forms, Google Sheets, Google Docs, dan lainya.
For: Ditujukan untuk kelas apa dan untuk siapa saja. Kalian bisa menyesuaikan untuk kelas yang kalian pilih dan semua siswa.
Points: Nilai maksimal yang dapat didapatkan siswa.
Due: Waktu terakhir pengumpulan tugas siswa.
Topic: Jika kalian ingin menambahkan post untuk pada topik terpilih.
Rubrik: Kalian dapat menambahkan bagaimana cara tugas kalian dinilai.
[SEMBILAN]: Jika kalian selesai membuat tugas maka pilih ‘Assign’. Jika kalian ingin tugas akan di post pada waktu tertentu maka kalian dapat memilih ‘Schedule’, atau memilih ‘Save Draft’ untuk menyimpan file tugas yang telah dibuat untuk diedit di lain waktu.
[SEPULUH]: Tugas kalian akan terposting pada halaman ‘Classwork’ dan akan memberi notifikasi kepada semua siswa.
Dari tugas yang sudah kalian buat nantinya akan dapat kalian nilai secara online juga, begitu juga rekap nilainya juga.
So, I really recommend you guys, teachers, mentors, trainers, facilitators to use this platform. I believe it will help you so much!
Jika kalian membutuhkan bantuan untuk pembuatan kelas virtual. Feel free untuk menghubungi saya di @nandamochammad
Halo teman-teman! Saya menulis artikel ini untuk membantu developer iOS lain yang pada artikel lalu sempat bertanya langsung ke saya cara membuat Generic Class untuk HTTP Request 😉.
Sedikit Disclaimer❗️, Generic Class bukan hanya ditujukan untuk membuat HTTP Request / Networking saja. Tapi bisa untuk semua fungsi dengan input yang generic/umum. Silakan baca dokumentasi lebih lengkap disini.
Networking sudah menjadi sesuatu yang paling sering dilakukan pada Mobile Apps, khususnya pada iOS Developement. Ya, you know right gimana Mobile Apps tanpa ada networking.
Menggunakan Generic Class ini gambaran umumnya adalah membuat box yang dapat menyimpan dan menjaga semua inputnya. Dengan batasan sesuai dengan ukuran box nya dan tidak merusak komposisi box. Bagaimana? Sedikit lebih jelas bukan.
So, Let’s see how the code works!
Untuk networking akan menggunakan Alamofire😁, untuk kalian pengguna Moya atau URLSession bisa menyesuaikan .
Pada dasarnya ini mirip class dengan function seperti biasa
Yang membuat berbeda adalah simbol <T>. simbol tersebut adalah simbol generic yang mengindikasikan bahwa fungsi tersebut merupakan fungsi generic.
Selanjutnya, tuliskan kode request seperti biasa
And yes! fungsi generic kita selesai! sangat mudah kan? Eits, jangan lupa untuk merubah fungsi menjadi static function agar fungsi dapat diakses tanpa pembuatan objek kelas terlebih dahulu.
Bagaimana cara menggunakan kelas ini? cara menggunakan nya cukup mudah
Yap! Hanya seperti itu cara menggunakan nya. Kalian tidak perlu baris kode untuk setiap kali request. Dengan menggunakan Generic Class untuk networking, dapat memangkas kode request hingga 30% . Tentunya sangat membantu untuk proses development kalian.
Tapi, jika kalian membutuhkan bantuan untuk pembuatan fungsinya. Feel free untuk menghubungi saya di @nandamochammad