Yukihiro "Matz" Matsumoto

Often people, especially computer engineers, focus on the machines. They think, "By doing this, the machine will run fast. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.
Yukihiro "Matz" Matsumoto, Creator of Ruby
Tampilkan postingan dengan label Ruby IO. Tampilkan semua postingan
Tampilkan postingan dengan label Ruby IO. Tampilkan semua postingan

Selasa, 14 Oktober 2014

Dasar Operasi Standar IO Melalui File

Melakukan operasi IO pada File sangatlah mudah didalam Ruby. Standard library yang ada didalam Ruby memudahkan setiap orang untuk membuat, memanipulasi sebuah file untuk dibaca maupun ditulis. Objek File merupakan objek utama yang dapat digunakan dalam melakukan standar operasi IO ke sebuah file yang kita berikan.

Dalam memanipulasi suatu file, kita perlu memberikan mode operasi apa yang akan kita berikan dalam memanipulasi, apakah kita akan hanya membacanya, menulis, menulis dan membaca. Berikut adalah daftar mode operasi yang dapat kita gunakan saat melakukan operasi pada suatu file.

  • r : Mode read-only (default), mode hanya untuk membaca file, pointer ditaruh pada bagian awal file
  • r+ : Mode ini dapat digunakan untuk membaca dan menulis ke dalam file, pointer ditaruh pada bagian awal file
  • w : Mode write-only, mode hanya untuk melakukan penulisan file. Akan dilakukan penulisan ulang dari awal bila file eksis, apabila file tidak eksis, maka file baru akan diciptakan, dan penulisan akan dimulai dari bagian awal file
  • w+ : Mode read-write, mode untuk membaca dan menulis file. Akan dilakukan penulisan ulang dari awal bila file eksis, apabila file tidak eksis, maka file baru akan diciptakan, dan penulisan akan dimulai dari bagian awal file
  • a : Mode append dan write-only, mode untuk menulis file. Apabila file eksis maka, penulisan akan dimulai dari bagian paling akhir file (append/penggabungan), sedangkan bila file tidak eksis, maka file baru akan diciptakan
  • a+ : Mode append, serta read-write. Mode ini dapat membaca dan melakukan penulisan kedalam file. Apabila file eksis maka, penulisan akan dimulai dari bagian paling akhir file (append/penggabungan), sedangkan bila file tidak eksis, maka file baru akan diciptakan

Menciptakan File

Cara paling dasar untuk membuat file dalam Ruby adalah menggunakan objek File diikuti dengan method new dengan memberikan argumen berupa nama file dan mode operasi penulisan yang akan digunakan (w).


Dari kode di atas, maka akan diciptakan file dengan nama x pada folder dimana irb sedang dijalankan.  Untuk melakukan penulisan kedalam file anda dapat menggunakan instance objek file yang anda telah ciptakan dan menggunakan method puts.


Setiap string yang ditaruh menggunakan method puts akan ditempatkan pada baris baru, dan untuk melakukan save dan membebaskan program dari segala resources anda dapat menggunakan method close pada instance objek file anda. Hasilnya penulisan dapat anda lihat di bawah ini.


Membaca File

Membaca file ke dalam objek dalam Ruby dapat dilakukan dengan menggunakan method open serta memberikan argumen berupa nama file dan mode operasi yang akan dilakukan.


Kode diatas akan mencari dan membuka file dengan nama x yang berada dalam folder dimana anda menjalankan irb, dan menempatkanya dalam variabel x.


Untuk membaca isi dari file dapat digunakan method gets pada instance variabel dari objek yang telah kita buat. Method gets ini akan membaca dari baris per baris, di saat anda menggunakan method ini maka pointer akan diarahkan pada baris berikutnya. Jangan lupa untuk melakukan close pada file objek yang anda telah buat setelah anda selesai memanipulasi file menggunakan method close.

Menggunakan Blok Dalam Operasi File

Menggunakan blok dalam operasi File pada Ruby sangatlah memudahkan dan mempersingkat waktu anda dalam melakukan manipulasi dan operasi pada file. 


Dengan menggunakan class method open pada File dan memberikan argumen berupa nama file dan mode operasi maka kita menggunakan blok dalan didalam blok kita dapat menerima variabel berupa instance objek file yang akan kita manipulasi. Anda dapat dengan cepat melakukan manipulasi berupa penulisan pada file dan pada saat blok selesai dijalankan maka file akan ditutup secara otomatis dan resourcenya akan dibersihkan.


Untuk membaca file dengan menggunakan method each_line pada objek file juga sangat memudahkan programmer dalam mengambil data pada tiap baris dalam file. Di dalam blok akan diberikan objek berupa line, yang dimana berisi isi dari iterasi tiap line yang ada didalam file tersebut untuk dibaca.

Untuk membaca lebih jauh lagi mengenai operasi IO pada Ruby, anda dapat membaca dokumentasi Ruby secara langsung. Semoga tips ini bermanfaat bagi anda semua.




Rabu, 08 Oktober 2014

Dasar Operasi Input Output File CSV Dalam Ruby

Apabila anda memiliki file yang memiliki format CSV(Comma Separated Value) dan anda ingin mengambil data dari file csv anda untuk digunakan dalam program anda, Standard Ruby Library memiliki kelas CSV untuk melalukan standar operasi IO untuk penulisan dan membaca. Dalam tips berikut, saya ingin memberikan tips untuk melakukan operasi membaca dan penulisan file sederhana terhadap file dengan format CSV.

Membaca File CSV Ke dalam objek di Ruby

Pada contoh ini saya akan menggunakan file CSV dengan format seperti ini:


Dalam file ini terdapat 3 kolom, yaitu nama produk, harga, dan kuantitas. Terdapat 3 baris data yang ada dalam file ini. Untuk memberikan enkapsulasi pada data, saya akan membuat custom class dengan nama Gadget sebagai objek yang akan digunakan dalam menampung tiap baris data dalam file.



Untuk menggunakan objek dengan kelas CSV, terlebih dahulu kita perlu memasukkan library csv dengan menggunakan syntax require diikuti nama library.

irb > require 'csv'
=> true

Kita akan menggunakan class method CSV, yaitu foreach untuk membaca data yang ada dalam file csv yang kita berikan. Method ini membutuhkan 1 argumen wajib, yaitu path dari lokasi file csv dalam komputer kita yang akan kita buka. Pada argumen opsional, saya akan memberikan hash dengan simbol key headers dan value true. Dengan headers ini, maka method ini akan membaca baris yang pertama dari file tersebut sebagai kunci yang akan digunakan untuk mendapatkan data dari tiap baris data yang akan diproses oleh blok. Saya akan menggunakan sebuah array kosong untuk memasukkan setiap objek gadget baru yang akan kita buat. Di dalam argumen yang digunakan dalam menginisialisasi objek gadget, kita akan menggunakan key berupa nama kolom untuk mendapatkan value dari hash row.

irb > gadgets = []


Dapat terlihat hasil dari file CSV yang berhasil dibaca dan digunakan sebagai argumen dalam membuat objek gadget, kemudian tiap baris dimasukkan dalam array gadgets.

Menulis File ke dalam format CSV dari objek Ruby

Sebelumnya saya akan membuat 3 obbjek gadget yang akan saya masukkan dalam sebuah array dengan nama variabel gadgets. Struktur data ini yang akan digunakan dalam memasukkan data objek dari Ruby ke dalam file CSV.


Untuk menulis file dalam format CSV dari objek yang ada dalam Ruby, kita dapat menggunakan method kelas CSV, yaitu open disertai dengan argumen pertama berupa path beserta filename yang akan kita buat, dan argumen kedua berupa jenis operasi pada file. Untuk jenis operasi saya akan menggunakan w+, dimana Ruby akan berusaha menulis file yang ada pada path tersebut, bila file belum ada, maka Ruby akan membuatnya dan trunkasi penulisan akan dimulai dari awal file.


Pada baris pertama yang ada dalam blok, csv digunakan sebagai variabel yang digunakan untuk memasukkan data yang ada pada tiap row dengan operator <<. Format row dari tiap data yaitu berupa array yang didalamya berisi jumlah kolum data yang kita inginkan. Pada baris pertama, saya memasukkan kolom untuk header yaitu produk, harga, dan jumlah. Berikutnya dengan method each maka dilakukan iterasi pada tiap objek yang ada dalam array gadgets. Dalam iterasi tiap objek maka akan data akan dimasukkan dengan menggunakan array yang didalamnya berisi informasi produk yang didapatkan melalui aksesor dari objek gadget. Setelah proses selesai maka file gadget2.csv akan dibuat dan dapat dilihat hasilnya di bawah ini.