8 Tool Tailwindcss yang Membantu Kamu Mempercepat Pembuatan Interface


Halo, saya musliadi backend developer yang saat ini bekerja disalah satu perusahaan jogja.

Tulisan kali ini saya ingin berbagi seputar tool tailwindcss. Bagi backend developer yang kurang terbiasa dengan dunia frontend developer seperti saya, akan merasa kesulitan dalam membangun interface sendiri, apa lagi membuat dari awal, jujur bagi saya membuat interface tidaklah mudah dan memakan waktu.

Untungnya, tailwindcss dengan perkembangan ekosistem dan komunitas yang pesat banyak melahirkan tool tool yang bagus yang sangat memudahkan kita dalam mendesain interface, kini dalam sehari kita sudah bisa membuat interface. Berikut ini tool dan resources instan yang akan menghemat waktu proses pembuatan interface:

  1. https://tailblocks.cc/

2. https://devdojo.com/tails/

3. https://heroicons.com/

4. https://tailwindcomponents.com/

5. https://tailwinduikit.com/

6. https://www.gustui.com/

7. https://tailwindui.com/components

8. https://www.tailwind-kit.com/

sekian, semoga membantu terima kasih 

🙂

Deno! First Impression


Belakangan lagi heboh sejagad dunia developer, kita kedatangan teknologi baru yang bernama Deno. Deno A secure runtime for JavaScript and TypeScript. Deno dikembangkan oleh programmer berlakang belakang ilmu matematika bernama Ryan Dahl yang sebelumnya juga menelurkan NodeJs. Deno sendiri lahir atas keresahan Ryan Dahl pada design NodeJS.

Awalnya Ryan Dahl mengembangkan Deno berbasis Golang, tapi kemudian ditulis ulang berbasis Rust dengan memanfaatkan Tokio. untuk menghindari Garbage Collection pada golang. Rust sendiri merupakan bahasa yang dikembangkan oleh team Mozila. Disisi javascriptnya Deno menggunakan teknologi populer V8 yang dikembangkan google.

Dari pemaparan diatas, kita bisa menyimpulkan Deno merupakan teknologi yang dikembangkan dari beberapa teknologi yang dikembangkan perusahaan besar (Google, Mozila, Microsoft).

Setelah mencoba-coba, ada beberapa point saya menyukai deno.

  1. Deno secara default sudah support typescript (tanpa konfigurasi). Berbeda dengan nodejs,, kalau mau ingentegrasikan Typescript kita harus konfigurasi dulu.
  2. Deno gak ada file Packag.json, nggak ada folder node_modules. Node_modules ini yang paling aku gak suka di node js.
  3. Deno didesain lebih aman, gak bisa masuk ke environment system, network, akses file dll.
  4. Jika ingin menggunakan library, kita cukup include dengan cara mengimport, ketika dijalankan, deno langsung menginstal library yang kita import.
  5. Secara default deno di didesain berbasis promise (kita langsung bisa menggunakan await tanpa menulis async terlebih dahulu.)
  6. dll.

Kedepannya, Deno ini pasti memiliki masa depan yang cerah, diawal release saja developer sejagad pada heboh, blog-blog pada bahas deno, github di penuhi dengan projek-projek deno (rest api dengan deno, boirplate deno, framework deno, sampai coba-coba deno di serverless seperti aws), seperti ada semangat kolektif untuk secepat mungkin mematangkan deno. Selain itu, karena deno ini berbasis Javascript dan Typescript memberikan ruang para dev untuk bereksplor memadukan deno dengan teknologi javascript/typescript lainnya seperti reactjs dan kawan-kawannya.

Terakhir, bagi saya kemunculan teknologi baru itu sendiri justru yang membuat profesi developer memiliki nilai lebih. Kecepatan dalam adaptasi teknologi baru menjadi salah satu nilai lebih dari seorang developer. Profesi dev akan selalu keren karena akan terus ada teknologi baru.

contoh script deno

bacaan lebih lanjut : https://deno.land/

Membuat Custom Validation di Laravel


Halo teman-teman, kepiye kabare? semoga selalu sehat-sehat saja ya. Tetap jaga jarak supaya terhindar dari virus covid. Saya ucapkan selamat melaksanakan ibadah puasa bagi teman-teman yang melaksanakan.

Kali ini saya ingin menulis tentang bagaimana cara membuat custome validasi di laravel. Skenarionya, saya ingin memvalidasi inputan email apakah email tersebut terdaftar atau tidak. Untuk mengecek email tersebut, kita membutuhkan bantuan pihak ketiga, https://www.validator.pizza/. Validator Pizza adalah api untuk mengecek apakah sebuah domain, atau email terdaftar.

Selanjutanya kita juga membutuhkan package guzzlhttp, http client untuk melakukan request.

Langsung saja kita install :

composer require guzzlehttp/guzzle

Kemudian, jalankan perintah membuat rule validasi :

php artisan

php artisan make:rule MailValidation

Kemudian akan tercipta file di directory app\Rules\MailValidation.php :

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class MailValidation implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
       
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be required.';
    }
}

Secara default file validator memiliki dua method. Method passes berfungsi sebagai penerima value dari inputan user, method ini berisi logika untuk menentukan apakah value dari inputan dilewatkan atau digagalkan. Method ini memiliki nilai kembalian boolean true atau false. Jika statusnya true, data akan dilewatkan dan diizin untuk melakukan proses selanjutnya. Sedangkan jika false, validator akan menjalankan method message. Method message adalah method yang mengembalikan pesan jika passes mengembalikan nilai false.

Selanjutnya di file MailValidation.php, tambah method baru sebagai wrapper/pembungkus proses request api ke validator pizza.

/**
 * wrapper/pembungkus request ke validator.pizza
 *
 * @return bool
 */
public function validateMail($email)
{
    $req = (new Client()) >get('https://www.validator.pizza/email/'. $email);
            $body = json_decode($req->getBody()->getContents());
            switch ($body) {
                case $body->status == 400:
                    return false;
                case !$body->mx:
                    return false;
                case $body->disposable:
                    return false;
                default:
                    return true;
            }
}

Method diatas akan melakukan request, kemudian akan mengembalikan response.

Selanjutnya, karena validator pizza membatasi request hanya 120 request dalam satu jam, maka selebihnya kita akan anggap email tersebut valid. Untuk itu kita akan membuat method baru lagi yang berfungsi untuk mengkounter jumlah request, kita akan menyimpan data kounternya di dalam cache saja.

/**
 * Get the validation error message.
 *
 * @return string
 */
public function limitRequest()
{
    $range = Carbon::now()->addMinutes(60);
    Cache::put('remaining_requests', 
                Cache::increment('remaining_requests', 1), 
                $range);  

    return Cache::get('remaining_requests');  
}

Jangan lupa panggil package Carbon, dan Cache dibagian atas :

namespace App\Rules;
 
use Illuminate\Contracts\Validation\Rule;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Psr7\Request as GuzzleHttpRequest;
use Illuminate\Support\Facades\Cache;
use Carbon\Carbon;

Jika sudah, lengkapi methode passes menjadi seperti berikut :

  public function passes($attribute, $value)
    {
        if ( ! filter_var($value, FILTER_VALIDATE_EMAIL)) {
            return false;
        }
 
        if ($this->limitRequest() >= 120) {
            return true;
        }
 
        if (ValidateMail() !== true) {
            return false;
        }
 
        return true;
    }

Method diatas akan mengecek apakah request sama dengan, atau lebih dari besar dari 120, jika ia maka tidak perlu melakukan request ke validator email, langsung dianggap true.

Code full dari MailValidation.php :

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Psr7\Request as GuzzleHttpRequest;
use Illuminate\Support\Facades\Cache;
use Carbon\Carbon;

class MailValidation implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        if ( ! filter_var($value, FILTER_VALIDATE_EMAIL)) {
            return false;
        }
 
        if ($this->limitRequest() >= 120) {
            return true;
        }
 
        if (ValidateMail() !== true) {
            return false;
        }
 
        return true;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute tidak valid';
    }

/**
 * wrapper/pembungkus request ke validator.pizza
 *
 * @return bool
 */
public function validateMail($email)
{
    $req = (new Client()) >get('https://www.validator.pizza/email/'. $email);
    $body = json_decode($req->getBody()->getContents());
            switch ($body) {
                case $body->status == 400:
                    return false;
                case !$body->mx:
                    return false;
                case $body->disposable:
                    return false;
                default:
                    return true;
            }
}

/**
 * Get the validation error message.
 *
 * @return string
 */
public function limitRequest()
{
    $range = Carbon::now()->addMinutes(60);
    Cache::put('remaining_requests', 
                Cache::increment('remaining_requests', 1), 
                $range);  

    return Cache::get('remaining_requests');  
}

}

Okey, untuk script MailValidation.php telah selesai. sekarang kita akan menggunakan rule validasi tersebut. Caranya kita bisa mengextend ke validator laravel, melalui AppServiceProvider.php di method boot(), seperti berikut :

 public function boot()
    {
      Validator::extend('is_mail', 'MailValidation@passes');
    }

Lalu di controller gunakan rule yang barus saja kita buat dengan cara :

$request->validate([
    'email' => 'required|string|is_mail',
]);

Atau bisa juga dengan cara biasa seperti ini :

App\Rules\MailValidation

$request->validate([
    'email' => ['required', 'string', new MailValidation()],
]);

Okey sekian dulu tulisan kali ini, semoga bermanfaat. Nantikan tulisan tentang laravel lainnya disini.

Yogyakarta, 24 April 2020 ditulis disaat bulan puasa, saat virus corona melanda.

Pivot “Part 1 # Based On My Experience”


Gambar mungkin berisi: sepatu
sourec : google pencarian


Hari ini saya ingin berbagi cerita tentang pengalaman diri saya sendiri, sebenarnya agak ragu tapi semoga bisa jadi inspirasi, saya tahu saya bukanlah siapa-siapa anggap saja ini bagian dari intropeksi diri saya sendiri, sebagai pengingat dan sebagai motivasi. Seperti quote yang sampai saat ini saya ingat :
.
“kalau saya ajak kamu makan, bukan berarti saya mentraktir kamu, tapi karena saya juga lapar”.
.
Jadi ayok belajar tentang hidup bareng-bareng, karena hidup itu susah 😁
.
Salah satu alasan kenapa manusia bisa bertahan adalah karena mampu beradaptasi. istilah kerennya tahu kapan harus pivot.
.
Istilah ini pertama kali saya tahu dari buku yang membahas seputar ‘startup’. Pivot adalah sebuah aktivitas pengembangan bisnis dengan merubah Model Bisnis itu sendiri, namun tetap berpijak pada bisi bisnis itu sendiri. Istilah ini diambil dari gerakan basket yang merubah arah dengan tetap berbijak pada salah satu kaki.
.
Dari situ saya kemudian menganalogikan kehidupan itu sendiri.
.
Jadi kalau gak ada lagi yang mau nerima kita, lamaran kerja ditolak dimana-mana, sedangkan waktu terus berjalan, usia terus bertambah, udah saatnya berani pivot.
.
Mulailah lihat lahan lain, mulailah belajar skill lain, ntah itu keahlian memasak, keahlian digital, ntah itu berjualan atau lainnya.
.
Jangan malu bekerja dengan orang lain, karena disitulah kita belajar.
.
Gak usah pikirkan itu passion atau nggak karena sebagian dari kita bertahan itu lebih penting. Itu akan menjadi titik tolak menuju langkah apa yang ingin kita raih.
.
Terjun ke dunia pekerjaan atau wirausaha itu ibaratkan belajar renang. kita gak bisa berenang kalau gak terjun langsung ke airnya. kita harus basah dulu.
.
Ibaratkan berlayar kita baru tahu sedikit demi sedikit apa yang kita tuju melalui teropong kita. pun, dengan apa yang ingin kita raih, dengan terjun langsung sedikit demi sedikit apa yang ingin kita buat akan semakin jelas terlihat.
.
ditulisan kedua saya ingin berbagi cerita tentang lainnya, yaitu “Komunikasi”.
.
Umbulharjo – Jogjakarta, 6 April 2020 ditulis disaat dunia dilanda wadah covid.

Memasuki Bulan Ke 7 Dunia Kerja


Alhamdulillah, meski terbata-bata sejauh ini masih bisa bertahan didunia perkerjaan. Ada salah satu buku yang menjadi pegangan saya hingga akhirnya saya mampu bertahan sejauh ini, bukunya berjudul “Grid” inti dari buku itu bagaimana kita bisa tabah, bersabar, menahan dengan suatu hal yang baru.

Dihari pertama saya kerja, saya sudah menamkan dalam hati, untuk kali ini saya akan berusaha mencoba menerapkan apa yang ada didalam buku ‘grid’, saya akan sabar sampai akhir, apakah saya mampu bertahan sampai akhir? bagi saya ini juga bagian dari upaya mengukur diri sendiri apakah saya mampu mengendalikan diri saya sendiri.

Selama 7 bulan perjalanan banyak rasa, dan banyak pengalaman yang saya dapat. Sering terbesit ingin keluar, bukan karena suasana kantornya tapi lebih kepada diri sendiri, saya merasa saya tidak kompeten. Pekerjaan saya lambat, hingga bertanya dalam diri ‘apakah saya layak di dunia programmer?’.

Saya penasaran sayapun akhirnya membuat semacam pertanyaan di media sosial saya.

Untungya teman-teman memberi support, ada yang bilang ini hal biasa dialami setiap programmer, ada juga yang bilang persetan dengan bakat yang penting bisa bertahan (ini aku setuju banget, karena diawal aku apply pekerjaan ini memang nekat supaya dapat penghasilan).

Pada akhirnya saya mencoba berdamai dengan sendiri, saya positif thinking ini pasti karena saya kurang banyak pengalaman, kurang banyak belajar, kurang banyak menghadapi studi kasus, apa pun yang terjadi saya punya kekuatan sendiri. Pasti bisa melakukan sesuatu. Yang penting terus berusaha dan lakukan apa yang bisa dilakukan.

Saya bersyukur bertemu senior-senior saya yang dari nya saya banyak belajar, baik hard skill maupun soft skill. Kedua hal ini saya sangat bersyukur, dari segi skill saya menemukan sesuatu yang selama ini belum pernah saya temukan seperti antara lain :
1. bagaimana membuat code reusability,
2. bagaimana membuat code helper yang simple,
3. bagaimana melakukan refactory code,
4. bagimana menerapkan code style, standarisasi.
5. bagaimana membuat dokumentasi,
6. Mengembangkan produk dari awal dengan segala isinya (notifikasi, email, lang, olah data (pdf, excel, spreehset), cronjob, queue, API dll), mutasi bank, dll)
7. Mengembangkan aplikasi berbasis modular.
8. Mengembangkan aplikasi berbasis multi tenan
9. Mulai menemukan workflow bagaimana membangun aplikasi dengan baik (lebih teliti, tidak ada yang ketinggalan, membuat daftar ceklis, dll)
10. Bagaimana melakukan pengujian.
11. Paradigma dalam pemograman
12. Refactory query.

Dari segi soft skill saya belajar :
1. Cara berkomunikasi yang baik
2. Cara lebih peka,
3. Berani mengutarakan pendapat
4. Tidak malu untuk bertanya, lebih baik bertanya dari pada menghabiskan waktu mencari bug, karena waktu yang ada bisa untuk mengerjakan yang lainnya.
5. Jangan sungkan untuk mengekplorasi produk (misal ingin menambahkan fitur x)

Untuk tool dikantor saya mendalami :
1. PHP
2. CMS Kantor
3. Slim
4. Laravel
3. ReactJS
4. Vagrant
5. Elasticsearch
6. Redis
7. Nodejs
8. GIT
9. OS Mac, ITerm, Vim
10. dll.


Untuk selanjutnya saya berharap selalu lancar, saya harus belajar bagaimana supaya tetap santai, tidak khawatiran, dan tetap tenang., saya berterima kasih kepada senior saya dikantor udah banyak mendidik saya. Cukup sekian untuk cerita kali ini semoga tulisan ini bisa nambah semngat teman-teman yang mungkin juga baru masuk didunia profesional.

Jogjakarta, 27 Maret 2020 ditengah-tengah wabah virus corona melanda.

Small Bussiness


Suatu ketika saya mendaftar disalah satu platform internet, saya lupa platformnya apa yang aku ingat justru saat proses mendaftar (sign up) di platform tersebut.

Saat mengisi form pendaftarannya, disalah satu formnya mengharuskan mengisi tentang apa yang kita geluti sekarang, apakah seorang desainer, developer atau lainnya.

Nah yang membuat saya ingat adalah, fitur rekomendasi auto completnya menawarkan salah satu pilihan yaitu sebagai pemilik usaha kecil atau ‘small bussiness’. Kalimat ‘small bussiness’ ini rasanya seperti mengingatkan saya, harusnya saya punya usaha, tidak usah muluk-muluk sederhana tapi menghasilkan. Kecil tapi dijalankan dengan serius.

Karena Sudah Banyak, Jadi Tidak Perlu Melakukan Apapun ?


Dulu pernah di ingetin sama seseorang. “kenapa kamu gak buat sesuatu? nanti kamu menyesal lo karena gak membuat apapun. terus aku berkilah mau buat apa ? semuanya kan udah ada, gak bakalan bisa mengalahkan produk perusahaan raksasa.”.

Setelah dipikir-pikir semua argument yang aku utarakan hanyalah alasan dan pembenaran. apa untungnya alasan itu kalau justru menjadi penyebab kita tidak melakukan apa-apa? mending melakukan sesuatu tapi gagal dari pada gak melakukan apa-apa sama sekali.

Faktanya meskipun semuanya sudah ada, produk, model bisnis yang sama terus menerus muncul akan tetapi tetap mempunyai pasarnya masing-masing.

Sebagai contoh lihatlah berapa banyak bisnis bootcamp bermunculan? berapa banyak situs job seeker bermunculan, berapa banyak online shop bermunculan ? tetapi tetap punya pasar.

Pelajarannya adalah jangan biarkan kata ‘udah banyak’ menghentikan kita untuk membuat sebuah karya.

Antara Bottom-up dan Top-down.



1. Bottom-up, belajar dengan cara ini memang sangat melelahkan, tapi kita jadi benar-benar banyak tahu, pengetahuan kita luas, bahkan sampai ke hal yang mungkin kita gak memerlukannya atau gak pernah kita gunakan sama sekali.

2. Top-down, ini selaras dengan konsep ‘pelajari jika butuh saja’, atau istilah kerennya “Learning how (and how not) to learn”, atau seni menyingkirkan yang tidak penting. model ini biasanya orangnya santai saja. kalau didalam dunia coding misalnya, tipe ini hanya fokus yang memang bisa menghasilin profit secara real.

Mungkin yang paling penting adalah memahami kapan kedua metode ini digunakan. kembali ke contoh dunia IT, kuliah merupakan belajar metode bottom-up, kita belajar dari awal. Tapi ketika udah hal praktis kedunia kerja maka harus bisa belajar top-down..

Didunia IT, belajar reactjs, vuejs belum tentu itu yang menghasilkan profit. saya pernah belajar kedua hal tersebut, tapi nyatanya dikantor saya full gunain laravel.

Hal yang menarik dari metode top-down itu, kita justru dibatasi pada hal yang kita hadapi saja. sebagai contoh, ketika pertama kali kita berhadapan dengan reactjs, kita ketemu istilah component, disitu kita tinggal googling dan pahami defenisinya.

Belakangan dua metode diatas agak mempengaruhi cara saya belajar. justru sekarang jarang belajar, untuk sekarang saya fokuskan di domain/tech yang memang saya pakai di kerjaan saya, laravel. bukan berarti itu mengurangi kualitas, justru lebih memfokuskan pada satu domain kita akan benar-benar menguasai domain tersebut.

Kesimpulan : waktu kita bukan semua untuk belajar, apa lagi pada hal-hal yang belum tentu kita perlukan.

Membuat Global Helper di Laravel


Salah satu fitur dari laravel, kita bisa memasang helper buatan kita sendiri.

Pada tulisan ini kita akan membuat helper yang dapat diakses secara global alias dimana pun, baik di view, router atau controller.

1. Membuat Helper
Misalkan kita ingin membuat helper untuk me return nama project. Langkah pertama kita harus buat folder Helpers di dalam folder app, kemudian membuat sebuah file, misal ProjectName.php.

Kemudian isi file ProjectName.php dengan script :

Pada tahap ini kita baru saja membuat helper, kita membuat satu fungsi yang menerima satu paramater. Namun helper ini belum bisa kita gunakan karena belum kita daftarkan.

2. Mendaftarkan Helper di Service Provider
Selanjutnya, kita harus mendaftarkannya di service provider. Caranya kita buat file HelperServiceProvider.php didalam folder Providers.

Kemudian isi file tersebut dengan script berikut :

Kita mendaftarkannya pada fungsi register, script tersebut berfungsi membaca semua file yang ada di folder Helpers, kemudian meloadnya.

3. Medaftarkan Service Provider di Config Global
Belum sampai disitu, HelperServiceProver.php juga harus kita daftarkan di file app.php, berada di folder config/app.php. Cari array providers kemudian tambahkan potongan script.

4. Menggunakan Helper yang Telah di Buat
Selanjut kita akan menggunakan helper yang barus saja kita buat

Menggunakan di View
Kita tinggal memanggilnya didalam bracket directive blade. seperti berikut :

Menggunakan di Route
Kita cukup memanggil fungsi dengan mengirim value pada parameternya.

Tutorial ini ditulis dalam rangka memudahkan penulis agar gak lupa.
Yogyakarta, 17 Februari 2020.

Virus Corona


Kedua kalinya china menghadapi serangan virus. Dulu tahun 2003 China diserang virus SARS dan sekarang china diserang virus Corono. Ada persamaan diantara kedua virus ini, sama-sama berasal dari kelelawar. Yang beda adalah penyebarannya. Kalau virus SARS penyebarannya dari kelelawar -> luwak -> manusia. Sedangkan corono dari kelelawar -> ular -> manusia.

Bagaimana virus bisa berpindah ? saya membaca dari blog Pak Dahlan Iskan mengatakan virus corona bisa berpindah melalui dua cara.
1. Terkena cairan yang berasal dari organ pernapasan. Cairan itu memercik dan menempel ke orang lain. dari bersin atau batuk. Ketika bersin atau batuk itu ada percikan cairan yang mengenai orang lain. Asal percikan dari batuk atau bersin itu pasti dari rongga pernapasan.
2. Bersentuhan dengan anggota badan/pakaian penderita. Contoh kalau kita salaman atau cipika-cipiki dengan penderita. Atau bersenggolan. Atau kontak badan seperti apa pun

Artinya, virus itu tidak berterbangan ke sana ke mari lalu hinggap ke orang lain

Banyak pelajaran yang bisa dipetik dari kasus virus corona ini. Salah satunya adalah bagaimana memperlakukan binatang. Belakangan banyak video viral terjadi kekejaman terhadap binatang. Binatang seperti anjing dan kucing dimasak hidup-hidup ada juga dikuliti hidup-hidup. Ada juga video janin dikonsumsi (saya gak tahu apakah ini benar atau hoax, bisa di konfirmasi sendiri, yang jelas kontek saya adalah tentang video-video yang beredar pasca virus corona). Inilah yang kemudian disebut kuliner ekstrim. Ntah ekstrim binatangnya atau ekstrem cara memasaknya saya juga gak ngerti.

Dalam Islam walaupun ada binatang yang dilabeli haram tetapi kita dilarang untuk menyiksanya. Begitu juga dengan binatang yang halal dimakan kita dituntut untuk memiliki adab dalam proses penyembelihan, tidak boleh memperlama rasa sakitnya.

Kenapa sih ada binatang haram? tidak lain untuk memberikan pelajaran bagi manusia, juga untuk menguji manusia apakah manusia menerima ketetapan itu..Kita juga diingatkan supaya mengkonsumsi makanan yang halal tapi juga baik. Dalam islam mengkonsumsi janin itu udah pasti haram. Islam juga mengharamkan makanan seperti kelelawar, katak, kera dll.

Pelajaran lainnya yang tidak kalah penting dari kontek kenegaraan, bagaimana indonsia menghadapi situasi seperti ini ? China sendiri melakukan karantina dan membangun rumah sakit dalam waktu 7 hari spesial untuk menangangi pasien terjangkit virus corona.

Pertanyaan yang lain mungkin muncul adalah “lo sama aja toh mau islam mau yang lain kalau udah membunuh hewan untuk dikonsumsi sama aja bohong?”.Mau gmana lagi, kehidupan ini sudah didesain seperti itu, kalau pelajaran IPA SMP dulu ini disebut dengan istilah “Rantai Makanan”.

Boleh saja nggak mau makan daging alias vegetarian. Tapi bukannya tumbuhan itu juga makhlukkan. Kan gak mungkin makan tanah.

Jadi tulisan ini tidak memperdebatkan apakah boleh memakan binatang, tulisan ini tentang bagaimana memperlakukan binatang terlepas binatang itu halal, haram, boleh dikonsumsi atau tidak.

note : tulisan ini hasil renungan sendiri atas permasalahan yang terjadi.