Cicak Bin Kadal
Top 10 List of Week 03
Steven --- North Jakarta

Top 10 List of Week 03

  1. Why You Can’t Name A File CON In Windows
    Apabila anda sekarang membaca ini menggunakan komputer dengan OS windows, silahkan coba langsung membuat folder atau file (ekstensi apapun) dengan nama con. Saya yakin juga tidak bisa, namun mengapa? Ternyata setelah saya lihat alasan utamanya adalah “Backwards Compatibility”, sebenarnya sudah dari MS-DOS yang dirilis tahun 1981 hingga sekarang Windows 10 yang dirilis 2015 juga sifat tersebut tetap diturunkan!. Namun apa alasan kita tidak boleh menggunakan nama Con? Hal tersebut disebabkan Con termasuk ke reserved file names di windows yaitu CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9 . Sejarah mengapa direserved adalah untuk menyediakan sistem write / read yang konsisten dimana setiap programmer tidak perlu peduli terhadap semua jenis mesin eksternal anggap saja printer, namun si pembuat printer yang harus peduli terhadap data yang di write / read, dari situ muncul bahwa “akses ke pintu read/write harus terbuka dari directory manapun” yang contoh tadi adalah CON yang berarti console. Masih ingat dengan command echo "hello world" > hello.txt ? Apabila anda menggangi hello.txt dengan con maka output "hello world" akan muncul di console anda, karena memang Con itu berarti Console.

  2. Linux Directories Explained in 100 Seconds
    Video singkat ini (sebenarnya tidak 100 detik sih) menjelaskan cukup lengkap tentang apa yang ada dan sebaiknya kita ketahui tentang directory yang sudah ada di dalam Linux. Secara pendek ada /bin berisi program yang kita bisa gunakan di CLI seperti vim cat dan ls, /lib yang berisi libraries untuk mendukung program di /bin dan /sbin (semacam bin namun untuk root user), /usr yang juga memiliki /bin yang ditujukan untuk program milik user, juga ada /local/bin di /usr untuk program yang dibuat oleh user untuk menghindari collision pada nama. /etc untuk menampung file config (etc = editable text config). Masih banyak lagi juga folder lainnya, saya sangat sarankan anda untuk menontonnya secara seksama.

  3. Mount and unmount USB devices in the linux terminal! || mount, umount commands Linux!
    Bila kita gunakan komputer sehari-hari, untuk menggunakan drive external seperti Harddisk external, USB Flashdisk, dkk kita cukup mencolokkannya ke dalam port mesin. Namun bagaimana cara komputer bisa melakukannya bila kita lihat lebih detail? Ternyata menggunakan sistem mounting, dimana kita “arahkan” folder yang sudah ada untuk melakukan read / write ke disk external tersebut, bila kita jalankan df -h berarti tunjukkan disk filesystem dalam format human readable. Maka kita bisa lihat ada disk yaitu sda1 atau sdb1, sdc1 (sd berarti Small Computer System Interface Disk) dst. apabila anda telah mencolokkan disk ke komputer anda. Namun mereka bukan merupakan directory yang kita bisa cd ke dalam, mereka seakan file .iso yang kita harus mount dengan command mount ke suatu folder yang ada dan saat melepaskannya gunakan umount (memang umount tanpa n!, ini bukan typo)

  4. File System Mounting - Linux
    Di link sebelumnya kita sudah mempelajari konsep linux menyambungkan disk external, namun bagaimana dengan detil-detilnya? Apakah mounting sifatnya permanen hingga di umount? Apakah ada settings lainnya untuk memperkuat security dan keamanan saat read / write file ke / dari external disk tersebut? Ternyata ada tambahan, mounting disk itu TIDAK permanen hingga umount melainkan akan lepas apabila kita melakukan reboot system, untuk membuatnya auto mount di saat startup maka kita bisa menambahkannya di /etc/fstab (ingat kalau /etc itu berisi configuration files?). Juga ada mount options seperti ro hanya untuk melakukan read jadi tidak boleh write ke disk, sync untuk read / write secara langsung TANPA ada delay yang biasanya digunakan untuk disk yang sifatnya removable seperti external harddrive (bayangkan apabila anda copy file ke harddrive dan ternyata sistem bilang sudah selesai, namun selesainya secara async, pastinya file akan corrupt.) dan ada banyak lagi settingsnya.

  5. Fake Sony 1000 GB USB flash drive
    Pembuat video (di tahun 2015) mencoba membeli sebuah USB Flashdrive 1TB seharga 50 USD (~700 Ribu rupiah) yang di saat itu masih mahal bisa jutaan harganya. Di video ini, pembuat video mengecek apakah USB tersebut benar-benar 1TB dengan menggunakan program untuk menulis data sebesar yang diinginkan lalu mengecek integritasnya lagi setelah menulis data. Setelah dicheck ternyata flashdrive tersebut palsu, dan hanya memiliki 8GB sebenarnya!, mengapa hal ini bisa terjadi? Ternyata salah satu caranya adalah dengan memodifikasi “Flash memory controller” yang bertugas menjadi manager untuk file-file yang akan disimpan. Karena menjadi manager juga, maka flash memory controller juga bertugas memberitahukan berapa besar juga storage yang tersimpan, dan di bagian situlah kita “ditipu” oleh modifikasi penipu. Bukannya data baru disimpan melainkan data baru menimpa data lama kita.

  6. Reading and Writing Files in C, two ways (fopen vs. open)
    Sebelumnya, saya saran anda membaca demo W03 dahulu tentang files, di file yang telah disediakan saya lihat menggunakan function open() yang membuat saya bingung mengapa menggunakan open() sedangkan yang digunakan di video tutorial lain adalah fopen() ? Oleh karena itu saya cari tahu apasih perbedaan kedua function tersebut? Ternyata secara pendek open() itu lebih primitif dan fopen() itu lebih untuk kenyamanan programmer karena sintaks yang lebih human-readable. Di link yang saya berikan si pembuat video menjelaskan secara detil dan berfokus ke perbedaan daripada sintaks kodenya. Dari analisis fopen() itu jauh lebih cepat daripada open() yang sifatnya primitif, namun mengapa demikian padahal open() itu lebih dekat dengan mesin? Hal itu disebabkan oleh teknik buffering yang digunakan oleh fopen() daripada open() yang membaca byte per byte. Salah satu perbedaan yang cukup perlu diketahui adalah di open() itu menggunakan semacam bit encoding untuk mengatur read / write / append mode dan juga permission-permissionnya, oleh karena itu akan banyak sekali penggunaan bitwise OR operator atau | seperti di demo W03.

  7. What’s a File descriptor?
    Saat melihat Demo untuk Files W03 saya melihat bahwa open() itu mengembalikan sebuah int dan bukan pointer ke file (FILE*) seperto fopen(). Mengapa sebuah angka? apakah angka itu representasi pointer dalam basis desimal? Ternyata sebagian benar, bukan pointer namun sebuah konsep baru yaitu File descriptor yang merupakan positive integer yang pertama kali digunakan di UNIX. Sebagai contoh stdin atau data stream untuk mengambil input program (seperti input() di Python) itu memiliki nilai file descriptor 0. Sedangkan untuk file-file lainnya file descriptor akan diberikan oleh kernel yang ditunjuk ke global file table, dimana global file table akan berisi access permissionnya seperti read-only? write-only? (Ada visualisasi yang cukup baik di artikel, saya sarankan anda lihat sendiri :D)

  8. The many kinds of print functions in C
    Lagi-lagi Demo Files di W03 membuat saya bingung mengapa tiba-tiba ada print function yang sangat banyak? Bukankah print seharusnya cukup print sebuah string kedalam terminal saja? Ternyata pemikiran saya yang sempit, kalau “print” itu bukan hanya ke terminal saja. Untuk rekap, print ke terminal itu sebenarnya print ke stdout sedangkan untuk print itu istilahnya mengambil data dan menuliskannyahasilnya ke tempat yang diinginkan. Salah satu contoh yang diberikan di Demo Files W03 adalah fprintf yang berarti tuliskan hasil ke dalam sebuah stream atau file output yang ditujukan. Juga ada sprintf untuk menulis ke String buffer (semacam array of characters, buffer memiliki arti memory tempat menyimpan data sebelum digunakan.)

  9. Makefile definition and tutorial
    Bila anda sudah mengambil mata kuliah DDP2 maka anda ingat ada namanya Gradle untuk Java yang gunanya sebagai wrapper untuk project kita, dan juga bila anda lihat di beberapa demo untuk mata kuliah Sistem Operasi juga menggunakan Makefile. Namun di C dan C++ bagaimana wrappernya? ternyata untuk bahasa tersebut menggunakan Makefile. Namun sebenarnya Makefile itu tidak exclusively ditujukan ke C / C++ saja, karena Makefile itu sifatnya shell based, tapi tetap saja alat yang berbeda berguna untuk jenis pekerjaan yang berbeda. Sebenarnya Makefile itu mirip dengan shell script .sh yang sudah kita pelajari, namun mengapa pakai Makefile dan mempelajarinya lagi? Jawabannya karena Makefile hanya akan menjalankan “build” hanya jika terjadi perubahan file. Bayangkan apabila kita mau menggunakan shell script pasti semuanya dijalankan (dan tentunya akan terlalu lama bila project kita terlalu besar)

  10. Tar Vs Zip Vs Gz : Difference And Efficiency
    Apabila anda disuruh mengumpulkan tugas di SceLe, ada beberapa saat dimana anda disuruh mengumpulkan dalam format .zip namun di mata kuliah OS kita malah diberikan compressed files dalam format .tar, apa perbedaanya? Secara pendek .tar tidak dicompress sedangkan .zip itu biasanya dicompress. .tar dan konsep archiving files muncul lebih dulu daripada .zip, namun setelah itu muncul konsep compression untuk menyimpan storage data lebih efisien dengan algoritma LZ77. Di artikel ini juga diberikan sampel-sampel compression data dengan .tar, .zip, dan juga .gz dan terlihat bahwa .zip dengan mode deflate atau compression enabled bisa menyimpan storage data!


© 2021-2021 --- Steven --- File Revision: 0027---27-Feb-2021.