Blog posts from Q&A (qa)
Mengkritik pemerintah (khususnya Kominfo).
Tak sedikit warganet yang mengkritik pasal-pasal penghinaan pemerintah pada rancangan KUHP yang baru saja diresmikan. Banyak orang yang akhirnya menyerah, pasrah, dan memprediksikan kebebasan masyarakat Indonesia akan dikekang layaknya Republik Rakyat Cina. Saya percaya akan ada banyak kekecewaan demi kekecewaan yang akan muncul, dan KUHP tak hanya menjadi satu-satunya alasan. Demikian pula dengan Kementerian Komunikasi dan Informatika yang semakin membuat saya frustasi. Tak usah jauh-jauh ke masalah PSE dan proyek DNS Nasional, saya memutuskan untuk setop melaporkan website-website bermasalah ke dalam kanan Aduan Konten, karena para penyedia jasa web hosting lauh lebih cepat menonaktifkan website daripada tim Aduan Konten merubah status laporan saya dari laporan "baru" menjadi "sedang diproses". Di dalam era di mana mengkritik pemerintah sudah masuk ke dalam ranah pidana, saya percaya masyarakat tetap akan berkreasi dalam mengkritik pemerintah. Salah satu contoh yang bisa saya perankan adalah frasa "dengan terpaksa", misalnya "lagu wali kota ini bagus, karena kalau saya bilang ini jelek saya pasti digugat KUHP." Masih tidak ada ayat yang melarang masyarakat untuk mengkritik pemerintah dengan mengatakan hal-hal yang bagus dengan kata "terpaksa", apalagi kata-kata hujatan yang diekspektasikan pemerintah tidak terdapat dari tutur katanya. Dan saya, khususnya dalam masalah Kominfo ini, saya akan melawannya dengan membuktikannya. Sebagai contoh, mari kita mengkritik program Pandu Digital, karena mereka justru membuat masyarakat Indonesia semakin ketergantungan terhadap produk merek-merek dagang tertentu. Mereka akan terlatih untuk menggunakan Microsoft Powerpoint, misalnya, namun tidak terlatih untuk menggunakan piranti lunak apapun yang berhubungan dengan presentasi berbentuk slideshow, baik itu Google Slides, Keynote, Canva, LibreOffice Impress, Figma, dan bahkan software slideshow baru bikinan anak-anak bangsa. Dalam kasus-kasus ini saya percaya, peribahasa "tong kosong nyaring bunyinya" ini tetap akan berlaku baik di sisi pemerintah maupun pengkritik. Karena yang seharusnya dilakukan oleh pengkritik bukanlah dengan merekrut buzzer bayaran atau melakukan demo dari Senayan hingga Gambir. Yang seperlunya diperlukan adalah proses dan metode yang membuahkan hasil yang layak disebut sebagai alpha, alias keunggulan kompetitif dari solusi sang pengkritik. Dalam kasus ini, lebih baik saya membuat program pesaing Pandu Digital milik Kominfo yang diajarkan berdasarkan nilai-nilai yang dibuat secara solutif dari saya. Misalnya ujian-ujian khusus di mana para peserta dihadapkan dengan sistem komputer dengan konfigurasi yang berbeda-beda, seperti perangkat Linux dengan WPS Office dan web browser Falkon. Apapun konfigurasinya, mereka harus tetap dapat berurusan dan memanfaatkan komputer tersebut untuk menyelesaikan tugas-tugas yang diberikan untuk lulus ujian Cakap Bermedia Digital ala program saya. Alpha yang diperoleh di sini dapat diuji dengan penelitian akademis terhadap para peserta dari program Pandu Digital yang asli terhadap konfigurasi sistem komputer yang berbeda-beda. Akhir kata, cara-cara seperti inilah yang akan saya tempuh dalam mengkritik pemerintah dalam era seperti ini. Saya yakin cara-cara seperti ini lebih ampuh untuk memadamkan ego politik yang sering menjadi hambatan utama dalam memperbaiki bangsa. Toh Undang-Undang Perlindungan Data Pribadi tetap tidak bakal disahkan ketika Bjorka tidak beraksi di Indonesia...
Can I become a Christian VTuber?
Hey Shift, I recently saw some Christian people becoming VTubers, and there's some discussion over Reddit for the ethics of these. Since I've seen you and your friends are currently investing in VTubers, what are your stances about this? Answer Well, it's okay to be a VTuber, but remember that: You shall treat your virtual identity the same as your real self You shall not represent yourself as a son or daughter of animals, from the fierce ones like the dragons even to the cute ones like the cats You shall not bound your identity to the devil, death, hell, angels, forms of magic, myths, as well as the isekai you might have dreamt about You shall not bound your identity to anything deemed as occults and witchcraft in the real world, such as charms, potions, and amulets You shall not deceive every person by making them attracted to you because of your marked-up personality instead of your true one Your purpose is to be the true salt and light of the world, not ratifying yourself as a sensually attractive virtual person for the purpose of fanservice Because you are a child of God, not a child of Japanese idol culture. Many VTubers definitely fail the above criteria for obvious reasons. Some are daughters of foxes and cats, while some claim to be vampires. Many, many VTubers intentionally name themselves with Japanese names because they idolize the Japanese idol culture, and they just wanted to have fun in their version of Isekai. Well, if you wanted to have yourself a VTuber life, remember that you still should do this for God. There are still some valid reasons, though, like online privacy and stuff. The above guidelines should already enough to keep our VTuber life as holy and honest as possible.
Media queries not work in Firefox, when has animation
This question was originally asked on StackOverflow. Content licensed under CC BY-SA 4.0. View original question When the screen width is less than 640px, the background is covered, why is the height not covered? And, It's work in Chrome and Edge. .change{ background: #f00; height: 100px; animation: test1 1s linear forwards; } @keyframes test1 { 0% { height: 100px; } 100% { height: 400px; } } @media only screen and (max-width: 640px) { .change{ background: #0f0; } @keyframes test1 { 0% { height: 100px; } 100% { height: 200px; } } } Answer Looking at how the site behaves on Chrome, Firefox, and Safari, it seems that Chrome might be the only browser who deviate by attempting to reanimate the <div> after @media conditions are changed. Firefox and Safari thought that the animation is finished and no longer needed to reanimated. As a workaround, you can force all web browsers to reanimate this by re-setting the .change animation properties under the @media scope and changing their values by a bit, such as by animating for 1.000001 seconds instead of 1. .change{ background: #f00; align-items: center; font-family: sans-serif; color: #fff; height: 100px; display: flex; justify-content: center; animation: test1 1s linear forwards; } @keyframes test1 { 0% { height: 100px; } 100% { height: 400px; } } @media only screen and (max-width: 640px) { .change{ background: #0f0; color: #00f; animation: test1 1.000001s linear forwards; } @keyframes test1 { 0% { height: 100px; } 100% { height: 200px; } } } <!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, minimum-scale=1.0' name='viewport' /> <body> <div class="change">Some content</div> </body> </html> I've also opened a bug report related to this: webcompat.com/issues/108367
Error 404 when using GitHub when I reload the page
This question was originally asked on StackOverflow. View original question I am making an E-commerce website with react and I upload the website to Github pages the deployment works ok, but when I click the Nav buttons to go to different parts of the webpage and reload the page, an error 404 appears: Failed to load resource: the server responded with a status of 404 () In the local host it works totally fine. Should I need to deploy my website as a new project again? I have always upload the websites the same way and I did not have this problem. I actualized my google browser, can there can be a compatibility problem? Thanks a lot! Note: I assume that you are using create-react-app with JSX and react-router-dom like this: <BrowserRouter> <Routes> <Route exact path="/" element={<HomePage />} /> <Route path="cart" element={<CartPage />} /> <Route path="settings" element={<SettingsPage />} /> </Routes> </BrowserRouter> Well, HTTP routing in GitHub Pages works differently than using the npm start command in your local machine. And fortunately, the developers behind create-react-app have already explained the technical reasons behind this: If you use routers that use the HTML5 pushState history API under the hood (for example, React Router with browserHistory), many static file servers will fail. For example, if you used React Router with a route for /todos/42, the development server will respond to localhost:3000/todos/42 properly, but an Express serving a production build as above will not. This is because when there is a fresh page load for a /todos/42, the server looks for the file build/todos/42 and does not find it. The server needs to be configured to respond to a request to /todos/42 by serving index.html. And yes, GitHub Pages also counts as a static file server, and expects that those routes are available as individual static files (e.g. build/cart.html for the /cartroute), and the goal here is to trick GitHub Pages to serve index.html instead for all of these routes. However, it is currently notpossible to fix this issue on the GitHub Pages' side, e.g. by applying the .htaccessconfiguration file (since GitHub Pages doesn't use Apache Web Server) or going to the repository settings on GitHub. So, what can be done here? The above code snippet uses <BrowserRouter>, which is known to be incompatible for hosting with GitHub Pages. And good news, many recommend to replace the <BrowserRouter> into <HashRouter>,which should work in practically all static file servers (see technical reasons here). There's a dedicated FreeCodeCamp article on how to set up <HashRouter> for your React project and publishing it into GitHub Pages. Note: Once you have replaced it with <HashRouter>, you will need to take care of existing hardcoded paths in HTML/JSX tags as <HashRouter> uses good-old HTML anchor/ID tags (e.g. #menu). That means <a href="/cart"> in your React app must be replaced with <a href="#/cart"> (Note the additional hash/# character there) or else it will again return a 404.
Balasan Twitter #1455738207417470980
Belum lama masalah pedulilindungi, tadi abis baca twit orang marah2 sama developer plat merah soal e materai, sebetulnya akar problemnya gimana si? Dan knp kok kesannya plat merah jadi kayak kebanyakan isinya orang2 incompeten? Code;
Ilmu Matematika Diskrit dapat diimplementasikan dalam bidang apa saja?
Artikel ini merupakan jawaban saya terhadap salah satu pertanyaan pada situs Kotakode.com, sebuah forum dan komunitas para developer di Indonesia. Lihat pertanyaan asliSaya membeli buku Matematika Diskrit dan terdapat materi yang didalamnya meliputi:1. Logika2. Himpunan3. Matriks, relasi, dan fungsi4. Induksi Matematik5. Algoritma dan Bilangan Bulat6. Kombinatorial dan Peluang Diskrit7. Aljabar Boolean8. Graf9. Pohon10. Kompleksitas AlgoritmaNamun saya kurang mengerti dalam pengimplementasian-nya, Mohon penjelasannya 🙏 Matematika Diskrit adalah salah satu ilmu yang sebenarnya cukup berguna di dunia pemrograman, namun sayangnya banyak pengajar (termasuk dosen) menjelaskan ilmu ini dengan konvensi dan cara yang terlihat kurang relevan dengan dunia pemrograman saat ini, misalnya penggunaan simbol A ∪ B daripada A && B dan ¬S daripada !S. Tujuan untuk belajar soal Logika dan Aljabar Boolean ini sebenarnya cukup jelas: agar kamu dapat memahami cara menggunakan perintah IF-ELSE dan operator Boolean secara baik dan benar. Di sini saya bakal kasih contoh sebuah function untuk mengecek apakah bilangan a, b, dan c berurutan dari yang terkecil hinga teratas: // Bahasa C #include <stdio.h> int main(){ int a = 3, b = 4, c = 9; // Perhatikan penggalan berikut ini if (a <= b && b <= c){ puts("Berurutan!"); } else { puts("TIDAK berurutan!"); } return 0; } Pertanyaannya di sini adalah, apa yang harus diubah sehingga perintah puts("Berurutan!")lah yang ditaruh di dalam bagian else dan sebaliknya. Dari materi Logika inilah kita mengetahui bahwa negasi dari A ∩ B (A dan B), yakni ¬(A ∩ B), sebenarnya sama dengan (¬A) ∪ (¬B) (tidak A atau tidak B). Sehingga, penggalan IF-ELSE tersebut dapat ditulis ulang sebagai: if (!(a <= b) || !(b <= c)){ puts("TIDAK berurutan!"); } else { puts("Berurutan!"); } Dan karena penggalan !(a <= b) sebenarnya sama saja dengan a > b atau b < a, maka hal tersebut dapat dipersingkat lagi menjadi: if (a > b || b > c){ puts("TIDAK berurutan!"); } else { puts("Berurutan!"); } Kemudian, materi Pohon, Graph, dan Matriks juga sangat berguna untuk memahami berbagai jenis struktur data yang sering dipakai dalam dunia pemrograman sehari-hari. Jika kamu berminat untuk mengolah gambar menggunakan pustaka/library OpenCV, kamu nantinya akan sering bermain-main dengan transformasi Matriks yang mungkin kamu sudah kenal saat duduk di bangku SMA atau bahkan SD. Sedangkan, Pohon (khususnya Pohon Biner / Binary Tree) merupakan salah satu topik yang paling sering ditanya saat kamu melamar pekerjaan di dunia software engineer. Mengapa? Karena struktur data tersebut kini masih berguna untuk melakukan pengurutan/penyortiran dan pencarian kumpulan data yang jauh lebih efisien daripada menggunakan deretan Array maupun Linked List. Kalau kamu berminat dalam dunia keamanan siber (Cyber Security), kamu mau tidak mau harus memahami tentang Graph karena melalui Graph, kamu bisa memetakan relasi antara sebuah informasi dengan informasi lainnya untuk membantu kamu melancarkan proyek investigasi kamu. Oh iya, fitur navigasi dalam aplikasi peta seperti Google Maps juga tidak dapat dibuat secara efisien tanpa pemahaman soal Graph yang lebih kompleks dan mendalam. Saya sebenarnya belum bisa menjawab hubungan antara semua bab yang kamu sebutkan dengan dunia pemrograman sehari-hari. Tetapi, ada beberapa hal lagi yang cukup penting: Himpunan bakal sangat berguna bagi kamu baik dalam dunia pemrograman berbasis objek (OOP) serta Database, karena nantinya kamu harus mencari hubungan-hubungan antar sebuah objek dengan objek lain, sebuah tabel/entity di dalam database dengan tabel/entity lain, dan hubungan antara himpunan data dengan himpunan data lain. Dan tentunya, Kombinatorial, Peluang Diskrit, dan Kompleksitas Algoritma cukup penting juga untuk dipahami. Karena sebagai pemrogram/programmer yang baik kita tentunya tidak hanya membuat algoritma yang tepat, tetapi juga efisien baik dalam penggunaan memori maupun waktu. Dengan memahami ketiga hal tersebut, kamu dapat menentukan apakah algoritma yang kamu buat terasa berlebihan dalam menggunakan perintah-perintah pada komputer. Demikian jawaban saya. Terima kasih.
Menambahkan array baru pada object array
Artikel ini merupakan jawaban saya terhadap salah satu pertanyaan pada situs Kotakode.com, sebuah forum dan komunitas para developer di Indonesia. Lihat pertanyaan asli Pertanyaan Saya punya list data berdasarkan tahun, dimana list data tersebut dicek apakah list data tersebut setiap tahun ada datanya atau tidak… jika list data tersebut tidak ada data.nya, maka tambahkan object baru… ini codingannya saya : $data = [ [ 'hak' => '12', 'tambahan' => '6', 'sisa' => '12', 'tahun' => '2019' ], [ 'hak' => '12', 'tambahan' => '6', 'sisa' => '12', 'tahun' => '2021' ] ]; $tahun = [ '2019', '2020', '2021' ]; for($i=0;$i<count($tahun);$i++){ $tahun == $tahun[$i]; $filterData = array_filter($data, function($entry) { global $tahun; return $entry['tahun'] == $tahun; } ); $newdata = [ 'hak' => '12', 'tambahan' => '0', 'sisa' => '0', 'tahun' => $tahun ]; if(count($filterData)==0){ $data = array_push($newdata); } } return $data; Hasil yang diinginkan seperti ini: [ { hak: '12', tambahan: '6', sisa: '12', tahun: '2019' }, { hak: '12', tambahan: '0', sisa: '0', tahun: '2020' }, { hak: '12', tambahan: '6', sisa: '12', tahun: '2021' } ] Tetapi setelah saya jalankan codinganya, muncul error seperti ini : array_filter() expects parameter 1 to be array, null given Jawaban Halo, kalau saya lihat kamu salah menggunakan array_push(): $data = array_push($newdata); cara yang benar untuk memakainya adalah array_push($data, $newdata); karena fungsi array_push() akan mengembalikan return value berupa jumlah isi di dalam array yang sudah dimerge, bukan array yang sudah digabungkan tersebut. Makanya muncul error itu.
Poll: Apakah kita perlu buat HaveIBeenPwned.com versi Nomor Induk Kependudukan (NIK)?
Q&A: Sebutkan contoh dari application layer dalam OSI Model yang anda gunakan dalam kehidupan sehari-hari!
Sebenarnya, hampir semua aplikasi yang kita pakai hari-hari ini merupakan bagian dari application layer, setidaknya menurut OSI model. Anda sering menggunakan aplikasi pesan instan, dan aplikasi-aplikasi tersebut sering menggunakan protokol HTTP(S) untuk mengecek dan mengirimkan pesan-pesan baru. Adapun aplikasi email yang menggunakan HTTPS untuk melakukan autentikasi OAuth2 (biasanya untuk Yahoo! Mail, Gmail, Office 365, dan Outlook.com), menggunakan IMAP atau POP untuk menerima pesan, serta SMTP untuk mengirim surat baru. Jika kedua aplikasi ini masuk ke dalam application layer yang dimaksud, apalagi aplikasi video conference yang menggunakan protokol-protokol lainnya seperti QUIC (misal: di dalam aplikasi Google Duo) dan WebRTC, aplikasi ojek online yang ujung-ujungnya bergantung terhadap HTTPS, serta aplikasi SMS yang menggunakan salah satu jenis protokol Point-to-Point yang diadopsi untuk jaringan GSM dan CDMA. Dan ternyata, sebuah aplikasi media sosial yang menggunakan HTTPS dan RTMP pun juga tergolong ke dalam application layer, karena menurut definisi OSI sendiri application layer merupakan lapis terdekat jaringan komputer terhadap para end-user.