Archives

Buat Yang Punya Printer Canon Pixma

Problem 1: The Ink Absorber is Full

Type : 1880 atau 1980

Solusi:

Waktu problem dan printer masih ON, tekan terus tombol power on/off sambil matikan dari power listriknya. hitung 5 detik terus hidupkan lagi power listriknya. Sampai saat ini kamu masih terus tekan tombol power on/off. Nah sekarang baru lepaskan. Dan nyalakan printer normal kembali.

Advertisements

SOFWARE ENGINEER SEBAGAI SEBUAH PROFESI

Oleh Julius Hermawan (dipindahkan dari http://www.geocitites.com/hermanjul)

Apa yang dimaksud dengan Profesi?

Profesi adalah suatu bentuk pekerjaan yang mengharuskan pelakunya memiliki pengetahuan tertentu yang diperoleh melalui pendidikan formal dan dan ketrampilan tertentu yang didapat melalui pengalaman kerja pada orang yang terlebih dahulu menguasai ketrampilan tersebut, dan terus memperbaharui ketrampilannya sesuai dengan perkembangan teknologi.

Tidak semua pekerjaan adalah profesi, contohnya pekerjaan staf administrasi tidak masuk dalam golongan profesi karena untuk bekerja sebagai staf administrasi seseorang bisa dari berbagai latar belakang pendidikan, pengetahuan dan pengalaman, sedangkan akuntan merupakan profesi karena seseorang yang bekerja sebagai akuntan haruslah berpendidikan akuntansi dan memiliki pengalaman kerja beberapa tahun di kantor akuntan.

Pada profesi yang melibatkan hajat hidup orang banyak, gelar keprofesionalan tersebut harus didapatkan melalui pengujian oleh organisasi profesional yang diakui secara nasional atau internasional, dan hanya kandidat yang lulus yang berhak menyandang gelar profesi ini dan melakukan pekerjaan untuk profesi ini. Contoh yang paling jelas adalah profesi dokter (kesehatan manusia) di Indonesia, hanya sarjana kedokteran yang menjadi anggota dari IDI boleh melakukan praktek kedokterannya.

Organisasi keprofesian ini mengatur keanggotaan, membuat kebijakan etika profesi yang harus diikuti oleh semua anggota, memberi sanksi bagi anggota yang melanggar etika profesi, dan membantu anggota untuk dapat terus memperbaharui pengetahuannya sesuai dengan perkembangan teknologi.

Apakah Software Engineer sebuah profesi?

Bila dimasukkan dalam definisi profesi di atas, Software Engineer bisa digolongkan sebagai sebuah profesi. Deskripsi kerja dari seorang Software Engineer adalah melakukan aktivitas engineering (analisa, rekayasa, spesifikasi, implementasi, dan validasi) untuk menghasilkan produk berupa perangkat lunak yang digunakan untuk memecahkan masalah pada berbagai bidang.

Untuk bisa melaksanakan tugas sebagai Software Engineer seseorang harus memiliki latar belakang pendidikan tertentu yang memberikan bekal untuk melakukan kerja dengan baik dan benar. Selain itu setelah lulus dari pendidikan, seorang Software Engineer juga dituntut untuk memiliki pengalaman cukup dalam pekerjaan ini melalui keikutsertaannya sebagai pekerja magang dalam proyek. Software Engineer juga harus terus memperbaharui pengetahuan dan ketrampilannya sesuai dengan perkembangan teknologi komputer yang cepat.

Profesi Software Engineer sejauh ini belum memiliki organisasi profesi. Organisasi profesi Software Engineer yang mungkin diperlukan adalah tidak diperlukan untuk menyeleksi keanggotaannya, namun yang penting adalah bisa memberikan kualifikasi yang jelas tentang apa Software Engineering itu, siapa Software Engineer itu, dan membantu anggotanya untuk memperbaharui pengetahuan dan ketrampilannya. Namun belakangan ini pengesahan profesi Software Engineer oleh organisasi profesi mulai dirasakan perlu karena banyak bidang kerja profesi ini yang bersinggungan dengan hajat hidup orang banyak.

Apa karakteristik yang dimiliki Software Engineer sebagai profesi?

• Kompetensi, yaitu suatu sifat yang selalu menuntut profesional Software Engineer untuk memperdalam dan memperbaharui pengetahuan dan ketrampilannya sesuai dengan tuntutan profesinya. Seorang Software Engineer tidak boleh berhenti belajar karena dunia software engineering terus berkembang dan berubah dengan cepat. Profesi Software Engineer tidak melekat seumur hidup, hanya sepanjang seseorang terus mengikuti tuntutan profesinya. Dan ini sesuai dengan etika profesi yang berlaku umum bahwa hanya profesional yang berkompeten yang berhak melakukan pekerjaan di bidangnya.
• Tanggung jawab pribadi: yaitu kesadaran untuk membebankan hasil pekerjaannya sebagai tanggung jawab pribadi. Seorang Software Engineer untuk itu harus mengenal kemampuan dirinya, sehingga bisa mempertanggungjawabkan semua pekerjaan yang dilakukannya secara moral: selalu merekomendasikan apa adanya, melakukan pekerjaan yang menjadi bidang kompetensinya, dan mendahulukan kepentingan umum.

Mengutip Tanri Abeng, untuk menjadi profesional harus memenuhi 3 syarat yaitu:
1. menguasai ilmu secara mendalam dalam bidangnya,
2. mampu mengkonversikan ilmu menjadi ketrampilan, dan
3. selalu berpikir positif dengan menjunjung tinggi etika dan integritas profesi.

Pendidikan formal apa yang diperlukan seorang Software Engineer?

Kemampuan yang perlu dimiliki seorang Software Engineer supaya dapat melaksanakan tugas dan tanggung jawabnya secara baik dan benar adalah:

• metodologi pengembangan perangkat lunak: analisa masalah, perancangan sistem yang ada dan yang akan dibangun, meng-kode-kan disain menjadi perangkat lunak.
• Mengelola kelompok kerja
• Mengelola sumber daya: merencanakan, mengadakan, mengawasi, dan mengoptimalkan pemanfaatannya
• Komunikasi

Untuk itu berarti seorang Software Engineer harus memiliki pendidikan formal tingkat sarjana yang merupakan gabungan dari bidang:

 Computer science: terutama dalam perangkat keras
 Engineering: terutama dalam pendekatan/metode analisa pemecahan masalah
 Industrial engineering: terutama dalam optimasi proses dan sumber daya
 Management: terutama dalam mengelola manusia dan kelompok kerja, manajemen proyek
 Social science: terutama dalam pendekatan manusia dan komunikasi

Dari uraian di atas jelas bahwa profesi Software Engineer tidak semata mengandalkan pengetahuan dalam ilmu komputer.

Rekomendasi untuk pengembangan profesi Software Engineer di Indonesia.

Di Indonesia profesi Software Engineer belum terdefinisikan, masih dicampur adukkan dengan profesi lainnya. Di dalam pengembangan perangkat lunak dikenal 2 aktor yang terlibat yaitu System Analyst dan Programmer. System Analyst melakukan analisa terhadap masalah dan kebutuhan organisasi dalam mengelola orang, metode, dan teknologi untuk mengatasi masalah tersebut. Programmer merencanakan keperluan penggunaan perangkat keras dan lunak yang sesuai dengan solusi yang direkomendasikan oleh System Analyst, dan memastikan kebenarannya sesuai dengan spesifikasi.

Tabel perbandingan System Analyst dan Programmer
Kriteria : System Analyst vs Programmer
Dominasi tugas : Analisa dan perancangan sistem vs Perencanaan dan pengkodean program
Partner Kerja : User, programmer vs System analyst

Bidang kerja Software Engineer meliputi bidang kerja System Analyst dan Programmer yaitu mencakup semua fase dalam software development life cycle: analisa sistem, analisa kebutuhan perangkat lunak, perancangan sistem, pembuatan dan perawatan perangkat lunak, ditambah dengan tugas dari manager proyek yaitu perencanaan dan pengelolaan proyek. Dari definisi ini jelas perbedaan antara ketiga pekerjaan di atas.

Infrastruktur yang perlu dipersiapkan untuk pengembangan profesi Software Engineer di Indonesia adalah:

• Lembaga pendidikan tinggi yang mengelola program studi Software Engineering: berarti perlu dibentuk badan khusus untuk merancang kurikulum program studi ini sesuai dengan definisi pekerjaan dan kebutuhan industri pemakai profesi ini. Oleh karena itu perlu dilibatkan para praktisi yang ada untuk memberi masukan yang pas.
• Industri yang mendukung pemakaian profesional Software Engineer: berarti pihak industri sudah harus bis membedakan antara berbagai profesi yang ada di area pengembangan perangkat lunak, sehingga bisa diketahui profesi mana yang sebetulnya dibutuhkan oleh pihak industri sendiri. Dengan demikian juga berarti bahwa profesi Software Engineer memang ‘exist’ sebagai profesi, bukan sebagai ciptaan pihak akademisi saja.
• Organisasi Profesi Software Engineer yang dikelola oleh para profesional: yang berperan untuk membantu para Software Engineer membuat definisi profesi, kebijakan etika profesi, dan sebagai komunitas yang mengkomunikasikan berbagai topik antar anggota.
• Tersedianya materi bacaan atau alat komunikasi yang membantu profesional Software Engineer memperbaharui pengetahuan dan ketrampilannya.

Keempat infrastruktur ini pembentukannya harus berjalan secara paralel, karena pengalaman di satu bagian akan bisa menjadi masukan perbaikan untuk bagian lainnya.

TELEKOMUNIKASI & TEKNOLOGI INFORMASI DALAM GENGGAMAN

dalam genggaman

dalam genggaman

Judul tulisan ini memang harus dibaca secara harafiah karena itu yang dimaksudkan oleh penulis. Beberapa fasilitas telekomunikasi dan plus teknologi informasi sekarang sudah bisa kita nikmati melalui alat/media yang ada di genggaman telapak tangan anda. Melalui telepon seluler (HP) yang awalnya hanya digunakan untuk berkomunikasi baik dengan lisan (percakapan), dengan pertukaran tulisan (SMS), dan pertukaran gambar (MMS), sekarang sudah bisa digunakan juga untuk mengakses informasi secara online dan real time. Dulu bila kita ingin memastikan suatu berita kita hanya dapat berdiskusi lewat telepon seluler kita dengan lawan bicara kita (orang per orang), tetapi sekarang kita bisa berdiskusi langsung dengan banyak orang di seluruh Indonesia dengan bertemu secara virtual di situs web melalui telepon seluler masa kini. Itulah yang dimaksudkan dengan judul di atas. Dan itulah yang dimungkinkan dengan kemajuan teknologi hasil penyatuan teknologi telekomunikasi dan teknologi informasi.

Unsur perangkat keras dalam teknologi informasi memang berkembang dengan pola wujud semakin kecil tapi dengan kapasitas dan kemampuan semakin besar. Kita bisa menelusuri contohnya dari variasi perangkat keras komputer yang ada di pasaran: PC desktop, notebook, mini notebook, handheld computer (komputer genggam), dan wearable computer (komputer yang dikenakan seperti bentuk kacamata, jam, gelang, dll.). Bentuk, dimensi dan penggunaan handheld computer yang mirip dengan telepon seluler kemungkinan yang mendorong industri dan peneliti menggarap proyek “kenapa tidak menjadikan telepon seluler sebagai komputer juga” sehingga terlahirlah telepon seluler yang memiliki kemampuan sebagai telepon sekaligus sebagai komputer seperti yang kita nikmati saat ini.

Demikian juga di arena telepon seluler, kemampuan telepon seluler sudah mirip dengan kemampuan komputer terutama pada pengiriman pesan dan gambar. Pengiriman pesan lewat SMS atau pengiriman gambar lewat MMS, di dunia teknologi informasi sejalan dengan pengiriman pesan lewat email. Namun pada saat itu kedua arena berjalan sendiri-sendiri, padahal akan lebih efisien bila sms bisa diakses lewat email dan email bisa diakses lewat sms. Kemungkinan inilah pula yang mendorong industri dan peneliti menggarap proyek “kenapa tidak menjadikan keduanya menjadi satu produk yang bisa keduanya” dan hasil akhirnya juga adalah lahirnya telepon seluler yang bisa keduanya itu seperti yang dibahas pada tulisan ini.

MANFAAT TELEPON SELULER DUO

Untuk pemakai perseorangan dan pemakai industri, ternyata telepon seluler yang DUO (bisa untuk telekomunikasi dan komputer/TI) bukan sekedar untuk mengikuti trend teknologi atau produk, tetapi juga bisa bermanfaat baik secara ekonomis maupun sosial. Lewat beberapa paragraf di bawah akan dijelajahi potensi manfaat dan keuntungan yang bisa didapat dengan adanya konvergensi telekomunikasi dan teknologi informasi ini.

Bagi perseorangan, dengan menggunakan telepon seluler yang DUO, secara tidak disadari kita dijadikan subyek yang aktif. Sebelumnya kita hanya menunggu mendapatkan informasi, tetapi dengan kemampuan yang ada di telepon seluler DUO kita lah yang mencari berita ke segala sumber informasi yang ada. Kita didorong untuk mandiri baik sebagai penerima informasi maupun sekaligus juga sebagai pemberi informasi yaitu seberapa banyak dan sumber darimana informasi yang mau kita ambil diserahkan kepada kita sebagai pelakunya. Secara tidak langsung, teknologi ini merubah perilaku obyek menjadi subyek. Kita dibuat hidup sebagai warga yang aktif sekaligus dalam 2 dunia yaitu dunia nyata dan dunia virtual.

Bagi perseorangan berbagai kemudahan bertransaksi juga dimungkinkan. Kemudahan dalam konteks bahwa transaksi bisa dilakukan di mana saja dan kapan saja tanpa kita perlu meninggalkan tempat kita saat itu. Misalnya memesan tiket bioskop untuk midnight secara online saat kita siang itu sedang makan siang di kantor (atau tiket lainnya: kereta api, pesawat, dan lain-lain atau berkunjung ke perpustakaan online). Segala kemudahan online yang selama ini hanya bisa dinikmati karena kita memiliki komputer dan laptop yang terkoneksi ke internet, sekarang sudah bisa dilakukan dengan lebih mobile, murah dan praktis melalui telepon seluler. Misalnya segala transaksi perbankan yang telah disediakan oleh bank sebagai internet banking (pembayaran tagihan air PAM, listrik PLN, telepon, kartu kredit, asuransi, kredit rumah, dan lain-lain) maka sekarang sudah bisa diakses dan dilakukan lewat telepon seluler.

Bagi pedagang dan pelaku bisnis yang sudah menawarkan dan mempromosikan produk atau usahanya lewat internet maka dengan dimungkinkannya akses internet lewat telepon seluler maka berarti jaringan pasar yang mungkin bisa diraih menjadi semakin luas. Luasnya pasar berpotensi meningkatkan jumlah pembeli nyata dari produk atau jasa yang ditawarkan, yang secara langsung berhubungan dengan pendapatan bagi usaha kita. Dan bagi pedagang dan pelaku bisnis yang belum terlibat dalam promosi lewat internet, maka teknologi “DUO” perlu dipertimbangkan sebagai salah satu media promosi baik lokal maupun internasional. Bayangkan bila saat masih menggunakan komputer dan laptop jumlah pengguna internet di Indonesia sudah mencapai puluhan juta orang, maka nanti bila telepon seluler dengan teknologi DUO sudah memasyarakat jumlah pengguna internet tentunya akan berlipat ganda. Inilah potensi pasar yang harus digaet oleh para pedagang dan industri.

Bagi perusahaan, dengan mempersenjatai karyawannya dengan teknologi DUO secara tidak langsung berarti meningkatkan produktivitas karyawan karena bisa online 24 jam dengan sistem yang ada di perusahaan. Sistem informasi dalam perusahaan bisa diprogram untuk memberi alert pada karyawan anywhere bila terjadi suatu gangguan pada suatu proses bisnis anytime. Secara tidak langsung teknologi DUO ini menjadi benang merah yang mengikat proses dalam perusahaan dan karyawan selama 24 jam x 7 hari dalam seminggu. Dengan demikian jam kerja karyawan ditingkatkan secara virtual dan proses bisnis perusahaan selalu terjaga pada kondisi yang diinginkan. Kehadiran karyawan secara virtual tidak dibatasi oleh cuti, sakit, maupun dinas luar karena karyawan yang cuti, sakit dan dinas luar secara virtual selalu terhubung dengan sistem informasi perusahaan.

Sebagai contohnya adalah bila tenaga marketing dari sebuah pengembang perumahan dilengkapi dengan telepon seluler DUO yang bisa mengakses aplikasi bisnis perusahaannya. Saat berhadapan dengan calon pembeli, sang tenaga marketing dengan mudah bisa menunjukkan rumah-rumah yang siap jual pada hari itu dan bahkan bisa menunjukkan lokasi, gambar dan spesifikasi dari tiap rumah secara detil dengan mengakses aplikasi bisnis perusahaan dan calon pembeli bisa langsung melihat lewat telepon seluler sang marketer. Bila calon pembeli ingin melakukan ‘deal’ saat itu juga bisa langsung ditransaksi lewat telepon seluler sang marketer. Dengan cara ini perusahaan bisa melayani calon pembeli dengan lebih memuaskan dan juga dapat menutup transaksi menjadi lebih cepat tanpa dibatasi waktu dan tempat.

Segala keuntungan di atas selain terwujud karena adanya telepon seluler yang DUO (bisa untuk telekomunikasi dan komputer/TI) juga karena dukungan provider telekomunikasi seperti XL yang menyediakan produk dan layanan yang DUO juga. Keduanya lah yang memungkinkan kita berkomunikasi dan ber-informasi secara online dan real-time with anyone everytime and anywhere.

pokoke NYAMBUNG TERUS … !
Sent from my BlackBerry® smartphone from Sinyal Bagus XL, Nyambung Teruuusss… !”

e-Batam: Sebuah Pemikiran (reload dari arsip th 2002)

Letak geografis Batam yang bertetangga dengan Singapura dan Malaysia seharusnya dapat mendorong pemikiran untuk menjadikan kota Batam sebagai e-Batam. Singapura telah membuktikan bagaimana mereka memanfaatkan teknologi informasi dan komunikasi secara efektif untuk meningkatkan kualitas hidup masyarakatnya. Kunjungi saja http://www.gov.sg, di dalamnya bisa kita rasakan bagaimana warganegara Singapura di’manja’kan dan dipermudah oleh pemerintahnya untuk mengurusi segala kepentingannya. Warga Singapura yang ingin membuat pasport, cukup akses ke situs tersebut dan masuk ke halaman Safety and Security, yang menjabarkan prosedur dan persyaratan yang diperlukan, dan kemudian bisa langsung mengajukan aplikasi on-line melalui system APPLES (Application for Passport On-line Electronic System). Di halaman yang sama juga mereka bisa melakukan transaksi perpanjangan SIM, atau bila ingin mengecek keaslian KTP seseorang juga bisa dilakukan secara on-line. Di halaman Family, keluarga dapat secara on-line mengurus surat perkawinan, dan akta kelahiran. Di halaman Education, diberikan informasi lengkap mengenai pendidikan dan daftar sekolah yang tersedia. Halaman-halaman lain yang ada termasuk halaman Kesehatan, Transportasi, Perumahan, dan penelusuran pekerjaan. Nilai-nilai positif dari pengalaman Singapura memanfaatkan TI ini menggelitik penulis untuk menerapkan hal serupa kepada kota Batam dan menuangkan pemikiran e-Batam dalam tulisan ini.

e-Batam atau electronic-Batam merupakan pemanfaatan teknologi informasi dan komunikasi secara efektif untuk mendukung kegiatan pemerintahan dan kemasyarakatan dengan tujuan meningkatkan kualitas hidup masyarakat Batam dan untuk memajukan eksistensi kota Batam dalam perekonomian dunia. Jelas disini basis sektornya adalah sektor pemerintahan, pelayanan masyarakat, dan ekonomi-industri.

TANTANGAN

Beberapa pertanyaan kritis pasti akan muncul dari berbagai pihak menanggapi pemikiran e-Batam ini, namun jangan membuat kita pesimis tetapi kita buat pertanyaan ini sebagai tantangan dari e-Batam.

Apakah tidak berlebihan bila Batam mencontoh Singapura yang notabene adalah negara maju sementara Batam (Indonesia) masih menjadi negara berkembang? Malah disinilah keuntungan Batam bila memanfaatkan TI. Banyak ahli menyatakan bahwa TI merupakan alat untuk melakukan loncatan katak ‘frog-leap’, yang bagi Batam merupakan ‘lompatan raksasa’ dari tahapan berkembang (Industrial Society) langsung ke tahapan informasi (Post-Industrial Society) tanpa perlu melalui tahapan negara maju (Developed Society).

Lalu darimana dana untuk membiayai program ini? Melihat kondisi Batam saat ini yang mampu mengeluarkan 28 milyar rupiah untuk pembangunan gedung DPRD-nya (Sijori Pos, 1 Juni 2002), penulis merasa dana bukan masalah. Yang diperlukan adalah mengkaji kembali skala prioritas dari beberapa proyek yang sudah disetujui untuk didanai, memilah secara obyektif: yang produktif dan menambah nilai harus diprioritaskan, sementara proyek yang non-produktif bisa ditunda dulu.

Apakah kita mempunyai sumber daya manusia yang cukup untuk membangun e-Batam? Penulis perkirakan tidak ada masalah untuk mendapatkan SDM yang diperlukan. Sekarang ini cukup banyak SDM TI Indonesia yang bekerja di Singapura, dan ini menunjukkan bahwa tingkat keilmuan dan ketrampilan SDM TI kita setaraf dengan SDM TI Singapura. Menurut penulis, langkah yang paling bijak dan aman adalah dengan melakukan kerjasama dengan perguruan tinggi yang benar-benar memiliki kemampuan TI dan yang professional. Tidak perlu terlalu ‘chauvinis’ harus perguruan tinggi lokal, namun gunakan seleksi yang obyektif dan transparan. Sementara untuk SDM pengguna e-Batam juga perlu dilakukan program pelatihan, terutama untuk para aparat pemerintah yang langsung berinteraksi dengan e-Batam sehingga bisa mengoperasikan e-Batam secara optimal dan efisien.

Bagaimana dengan infrastrukturnya? Untuk infrastruktur, pemerintah kota bisa bekerjasama dengan Telkom dan Indosat untuk menyesuaikan infrastruktur informasi (kapasitas dan distribusi) sehingga bisa menunjang operasional e-Batam.

KESEMPATAN

Di samping tantangan, e-Batam juga membuka kesempatan kepada masyarakat, pemerintah, dan kota Batam sendiri untuk berkembang dan memperbaiki diri. Beberapa kesempatan dijabarkan di bawah ini.

Kesatu, e-Batam menjamin terwujudnya ‘good-governance’. Akar masalah korupsi, penyuapan, dan in-efisiensi pemerintahan adalah ketertutupan dalam institusi. Ketertutupan ini menyembunyikan semua permasalahan hanya pada lingkup tertentu. Lihat saja di beberapa institusi yang namanya Standard Operating Procedure atau prosedur operasi sengaja dibuat tidak jelas kepada masyarakat sehingga masyarakat menjadi bingung: tidak tahu kepada siapa dia harus pergi untuk berurusan, dokumen apa saja yang harus dilengkapi, berapa biaya yang ditetapkan, aktivitas apa saja yang harus dia tempuh, berapa lama proses pengolahannya, dan lain sebagainya. Hal ini menyuburkan ‘jamur’ yang namanya ‘uang pelicin’. Demikian juga dengan tersumbatnya saluran pelaporan pada berbagai institusi. Laporan masyarakat yang diajukan hanya disimpan pada tingkat dan lingkup tertentu saja, tidak naik ke atas, sehingga tidak ada tindak-lanjutnya sama sekali. Contoh kasus yang mengenaskan karena kontradiktifnya adalah laporan masyarakat mengenai kebocoran pipa air yang sering diabaikan, padahal manajemen institusi air mengeluh rugi dan berniat menaikkan tarif. TI yang memiliki sifat ‘transparansi informasi yang terakses oleh semua’ bisa menguak sifat tertutup dari institusi menjadi keterbukaan yang memungkinkan pengontrolan oleh semua. Pada kasus di atas, TI bisa memperjelas SOP karena TI hanya bisa diimplementasikan bila SOP sudah terdefinisi secara jelas, detail dan benar. SOP ini bisa diinternalisasikan dalam sistem aplikasi berbasis TI. Seperti contoh kasus Singapura di atas semua prosedur tercatat di situs web yang bersangkutan dan yang setiap transaksi prosesnya bisa dicatat untuk kemudian bisa digunakan sebagai bahan audit-trail. Demikian juga dengan saluran pelaporan, bagaimana teknologi internet dan email memungkinkan pelaporan yang diajukan masyarakat bisa diterima, dibaca, dan diperhatikan oleh banyak pihak: aparat institusi, atasan aparat, pimpinan institusi, dan masyarakat lainnya.

Kedua, pelayanan terhadap masyarakat bisa dioptimalkan dari aspek kenyamanan, kecepatan, kemudahan, dan keamanan. Contohnya bisa kita lihat dari kasus Singapura di atas.

Ketiga, daya saing Batam dalam industri, perdagangan, dan perekonomian bisa ditingkatkan. Kawasan sijori (Singapura, Johor, Riau-Batam) merupakan kawasan industri yang berkembang pesat. Dibandingkan ketiganya maka Batam masih dalam tingkat bawah. Institusi perdagangan dan industri Batam bisa ikut memanfaatkan fasilitas e-Batam baik untuk pertukaran data perdagangan secara elektronik (contoh di pelabuhan) ataupun berinteraksi secara on-line dengan mitra bisnis di seluruh dunia. Kedekatan melalui TI menutupi keterpisahan secara geografis dan ini bisa menjadi salah satu keunggulan kompetitif dari industri yang ada di Batam.

Keempat, proses demokrasi dalam arti sebenarnya bisa dilaksanakan. TI memungkinkan partisipasi masyarakat dalam pemerintahan dan kemasyarakatan menjadi lebih intensif. Terbukanya saluran pengaduan dan komunikasi memungkinkan masyarakat untuk ikut serta secara aktif melakukan pengawasan terhadap jalannya roda pemerintahan dan mempermudah akses untuk mengemukakan pendapatnya hingga bisa didengar oleh aparat pemerintahan.

STRATEGI MENUJU e-BATAM

e-Batam tidak bisa diwujudkan dalam jangka waktu 1 tahun dan menurut perkiraan penulis diperlukan waktu minimal 5 tahun. Untuk itu diperlukan satu strategi implementasi yang solid dan detil, yang singkatnya berisi sebagai berikut:

Pertama, Tahap Perencanaan untuk membuat dokumen cetak biru yang menjabarkan secara detil dan matang akan seperti apa e-Batam pada akhirnya, aktivitas apa saja yang akan dilakukan dalam membangun e-Batam, siapa saja yang terlibat, dimana dikerjakannya, kapan aktivitas mulai dan selesai, dan ukuran-ukuran pencapaian targetnya. Yang tercantum dalam dokumen ini haruslah sesuatu yang siap untuk dijalankan.

Kedua, membangun sistem back-office di satu atau dua institusi sebagai pilot project. Sistem back-office ini merupakan komponen utama (core) yang memungkinkan dimulainya interkoneksi e-Batam. Sistem back-office yang dimaksud disini adalah piranti lunak (aplikasi) TI, piranti keras TI, jaringan komunikasi, sistem prosedur standar, dan sistem pelatihan dalam institusi itu sendiri. Misalnya di kantor kependudukan dibangun sistem pencatatan kependudukan yang terkomputerisasi untuk menyimpan dan mengolah data kependudukan (lahir, sekolah, menikah, meninggal, mutasi) kota Batam. Sistem back-office ini akan memproses permintaan secara on-line melalui internet (softcopy) dan permintaan yang diajukan masyarakat yang secara langsung datang ke institusi yang bersangkutan (hardcopy).

Ketiga, membangun sistem telekomunikasi dan infrastruktur informasi dalam lingkup kota Batam untuk mendukung program e-Batam, misalnya meningkatkan jumlah saluran telepon, meningkatkan bandwidh, dan lain-lain.

Langkah keempat adalah mensosialisasikan TI seperti internet ke masyarakat dan mengusahakan peningkatan tingkat kepemilikan komputer atau handphone oleh masyarakat. Misalnya dengan mengadakan program kredit murah terhadap komputer dan handphone, mempermudah ijin pendirian warung internet, dan mengadakan pelatihan penggunaan internet di sekolah-sekolah.

Kelima, setelah pilot project berjalan dengan baik maka dilakukan pembangunan sistem back-office di seluruh institusi yang terlibat dalam e-Batam seperti yang telah dirumuskan dalam dokumen cetak biru di langkah perencanaan.

Keenam adalah membangun sistem interkoneksi antar institusi yang merupakan milestone penting dalam e-Batam. Kegiatannya meliputi pemetaan data antar institusi, pemetaan pelayanan institusi terhadap keperluan masyarakat, pemetaan informasi yang terakses dan yang dibutuhkan, dan integrasi antar sistem yang ada. Setelah itu dibangun situs web e-Batam yang menjadi titik temu antara aplikasi back-office, sistem interkoneksi, dan pengguna (masyarakat dan aparat pemerintah); yang disebut juga sistem front-office.

Pada akhirnya struktur teknis seperti yang digambarkan dalam gambar Perspektif Teknis e-Batam akan terbentuk.

PENUTUP

Belajar dari pengalaman Singapura, teknologi informasi bisa menjadi satu alternatif bagi kita untuk memajukan kota, masyarakat, pemerintahan, dan industri Batam. Hal ini menjadi tantangan bagi aparat pemerintahan kota Batam, pelaku industri di Batam, dan masyarakat Batam untuk mempertimbangkan pemikiran e-Batam ini sebagai salah satu program pembangunan kota Batam dalam masa 5 tahun ke depan.

(tulisan ini di-reload dari arsip tahun 2002 http://www.geocities.com/hermanjul)

Menyimpan File dalam Database [C#.Net]

FILE DALAM DATABASE

Menuliskan file ke dalam database masih banyak diperdebatkan keuntungan dan kerugiannya. Ada yang beragumentasi bahwa dengan menyimpan file ke dalam database maka akan membuat ukuran database menjadi besar, dan akan sulit untuk memaintain isi file bila memerlukan perubahan atau bagaimana penanganannya bila file tersebut tidak lagi digunakan. Alternatif yang bisa dipilih adalah menggabungkan keduanya yaitu mengkopikan file ke file server dan menuliskan path dan nama file ke dalam database.

Namun di luar dari yang diperdebatkan di atas, menuliskan file ke dalam database secara teknis adalah dimungkinkan. Itulah yang akan dibahas di bawah ini.

5.1 CLASS YANG TERLIBAT

System.Net.FileStream

Class ini mengekspos Stream pada file agar bisa digunakan untuk sinkronos dan asinkronos penulisan dan pembacaan file. Properti dan metode yang akan digunakan ditampilkan di tabel berikut ini.

Nama Metode

Keterangan

FileStream

Menginisialisasi obyek WebRequest dengan memberikan path file yang dituju, mode membuat atau membuka, dan ijin yang diberikan.

Close

Menutup stream yang digunakan dan melepaskan sumber daya yang digunakan oleh stream tersebut.

Write

Menuliskan blok byte dari buffer ke dalam stream.

System.IO.BinaryReader

Class ini membaca tipe data primitif sebagai nilai binari. Properti dan metode yang akan digunakan ditampilkan di tabel berikut ini.

Nama Metode

Keterangan

BinaryReader

Menginisialisasi instance baru dari BinaryReader.

ReadBytes

Membaca bytes dari stream yang ada ke dalam array byte.

5.2 MASALAH

Dalam beberapa kondisi penyimpanan file dipilih juga ke dalam database bukan ke file server. Jadi disediakan satu field dalam tabel untuk menyimpan suatu file. Biasanya tipe data field untuk keperluan penyimpanan file adalah binary. Keuntungan dari penyimpanan di dalam database adalah pemaksaan pada adanya hanya satu sumber file yang dijadikan referensi.

Staf IT Joseph diminta untuk menyiapkan sistem dasar yang bisa digunakan untuk menyimpan file resep ke dalam database untuk nantinya sistem ini akan dipelajari kelebihan dan kekurangannya dibandingkan dengan yang sekarang dipakai yaitu sistem file. Ingin disimpan file resep dengan nama filenya.

5.3 DISAIN

Use Case Menyimpan Isi File Resep ke dalam Database

  1. Nama Use Case:

Menyimpan Isi File Resep ke dalam Database

  1. Deskripsi Singkat:

Use case ini menerangkan mekanisme penyimpanan isi file resep ke dalam database.

  1. Basic Flow:

a. Pengguna membuka aplikasi.

b. Sistem menampilkan form aplikasi.

c. Pengguna memasukkan nama file resep yang akan disimpan, dan menekan tombol Simpan File.

d. Sistem menyimpan isi file tersebut ke dalam database.

e. Sistem menampilkan pesan transaksi berhasil.

  1. Alternate Flow:

a. Bila file yang dimaksud tidak ada di folder tujuan maka ditampilkan pesan bila file tidak ada.

b. Bila nama resep yang sama telah ada di database maka ditampilkan pesan bahwa nama resep sudah ada di database, dan apakah akan diupdate atau tidak, bila pengguna setuju untuk diupdate maka lanjutkan dengan use case Merubah Isi File Resep.

  1. Special Requirement:
  2. Pre-Condition:
  3. Post-Condition:

Use Case Membuat File Resep dari Database

  1. Nama Use Case:

Membuat File Resep dari Database

  1. Deskripsi Singkat:

Use case ini menerangkan mekanisme penulisan kembali isi file dalam database ke dalam bentuk file.

  1. Basic Flow:

a. Pengguna membuka aplikasi.

b. Sistem menampilkan form aplikasi.

c. Pengguna memasukkan nama file resep yang akan diambil, dan menekan tombol Ambil File.

d. Sistem mengambil isi file dan menuliskannya ke dalam bentuk file.

e. Sistem menampilkan pesan transaksi berhasil.

  1. Alternate Flow:

a. Bila file yang dimaksud sudah ada di folder tujuan maka ditampilkan pesan bila file sudah ada.

b. Bila nama resep tidak ditemukan di dalam database maka ditampilkan pesan bila resep tidak ada di dalam database.

  1. Special Requirement:
  2. Pre-Condition:
  3. Post-Condition:

5.4 IMPLEMENTASI

Di database SQL Server kita buat sebuah tabel bernama FileRecipe yang strukturnya terdiri dari 2 field yaitu:

tabel file

tabel file

Nama resep akan berisi nama resep seperti RotiKeju, sementara FileResep akan berisi file RotiKeju.txt.

Kita buat satu form bernama frmFileDatabase berisi 1 label, 1 textbox dan 2 tombol yaitu tombol Simpan File untuk menuliskan nama dan file resep ke dalam database, dan tombol Ambil File untuk membaca tabel FileRecipe dan mengembalikan isi file yang terambil ke dalam bentuk file text.

Di referensi kita tambahkan class untuk mengakses file dan juga untuk mengakses database SQL Server.

using System.Data.SqlClient;

using System.IO;

kita tambahkan variabel untuk menyimpan path dari file resep.

private string pathLocalResep = @”C:\MyResep\”;

kita mulai untuk menuliskan kode untuk menyimpan file ke dalam database. Klik ganda di tombol Simpan File.

Pertama-tama dilakukan perubahan file menjadi stream dan memasukkannya ke dalam array byte.

string fileName = pathLocalResep + txtResep.Text + “.txt”;

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fs);

byte[] contents = br.ReadBytes(1000);

Isi file dalam variabel contents siap untuk dituliskan ke dalam database, kita buat dulu koneksi ke database SQL Server sebagai berikut:

SqlConnection con = new SqlConnection(“Data Source=DB-SQL;Initial Catalog=PabrikRoti;User ID=dbAdmin; Password=dbAdminPwd;”);

Nama database, nama user dan nama password bisa disesuaikan dengan nama lain yang dipergunakan di komputer anda.

Membuka database

con.Open();

Lalu persiapkan query yang akan dilakukan sebagai berikut:

SqlCommand insert = new SqlCommand(“insert into fileRecipe values(@resep,@contents)”, con);

SqlParameter conParameterResep = insert.Parameters.Add(“@resep”, SqlDbType.VarChar);

SqlParameter conParameterContent = insert.Parameters.Add(“@contents”, SqlDbType.Binary);

conParameterResep.Value = txtResep.Text;

conParameterContent.Value = contents;

conParameterContent.Size = contents.Length;

Dan siap dieksekusi.

insert.ExecuteNonQuery();

Jangan lupa untuk menutup koneksi ke database.

con.Close();

Kode untuk menuliskan file ke database lengkapnya sebagai berikut:

private void btnSimpan_Click(object sender, EventArgs e)

{

SqlConnection con = new SqlConnection(“Data Source=DB-SQL;Initial Catalog=PabrikRoti;User ID=dbAdmin; Password=dbAdminPwd;”);

try

{

string fileName = pathLocalResep + txtResep.Text + “.txt”;

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fs);

byte[] contents = br.ReadBytes(1000);

con.Open();

SqlCommand insert = new SqlCommand(“insert into fileRecipe values(@resep,@contents)”, con);

SqlParameter conParameterResep = insert.Parameters.Add(“@resep”, SqlDbType.VarChar);

SqlParameter conParameterContent = insert.Parameters.Add(“@contents”, SqlDbType.Binary);

conParameterResep.Value = txtResep.Text;

conParameterContent.Value = contents;

conParameterContent.Size = contents.Length;

insert.ExecuteNonQuery();

MessageBox.Show(“Berhasil menuliskan file ke database”);

}

catch (Exception exc)

{

MessageBox.Show(“Gagal: “ + exc.Message);

}

finally

{

con.Close();

}

}

Sekarang beranjak ke kode untuk menuliskan kembali isi file dalam database ke dalam file semula. Klik ganda tombol Ambil File.

Pertama-tama kita akan baca dulu isi file yang mau diambil dari database. Lakukan koneksi ke database, dan buka koneksi tersebut.

SqlConnection con = new SqlConnection(“Data Source=DB-SQL;Initial Catalog=PabrikRoti;User ID=dbAdmin; Password=dbAdminPwd;”);

con.Open();

Kita siapkan query untuk mengambil file sesuai dengan input yang masuk.

SqlCommand insert = new SqlCommand(

“select fileresep from filerecipe where namaresep = ‘” + txtResep.Text + “‘”, con);

Eksekusi query.

SqlDataReader dr = insert.ExecuteReader();

Hasil eksekusi dr kemudian dibaca dan dipindahkan ke dalam variabel content.

dr.Read();

byte[] content = (byte[])dr[0];

Kita buat file untuk menampung isi file content ini dan tuliskan variabel content ke dalamnya, dan terakhir tutup filestream yang dibuat.

FileStream fs = new FileStream(pathLocalResep + txtResep.Text + “.txt”,

FileMode.CreateNew);

fs.Write(content, 0, content.Length);

fs.Close();

Jangan lupa untuk menutup koneksi database.

con.Close();

Kode selengkapnya dari menulis kembali isi file ke dalam file dan kode lengkap dari keseluruhan program yang dibuat disajikan di bawah ini.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

using System.IO;

namespace winAplikasiResep

{

public partial class frmFileDatabase : Form

{

private string pathLocalResep = @”C:\MyResep\”;

public frmFileDatabase()

{

InitializeComponent();

}

private void btnSimpan_Click(object sender, EventArgs e)

{

SqlConnection con = new SqlConnection(“Data Source=DB-SQL;Initial Catalog=PabrikRoti;User ID=dbAdmin; Password=dbAdminPwd;”);

try

{

string fileName = pathLocalResep + txtResep.Text + “.txt”;

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fs);

byte[] contents = br.ReadBytes(1000);

con.Open();

SqlCommand insert = new SqlCommand(“insert into fileRecipe values(@resep,@contents)”, con);

SqlParameter conParameterResep = insert.Parameters.Add(“@resep”, SqlDbType.VarChar);

SqlParameter conParameterContent = insert.Parameters.Add(“@contents”, SqlDbType.Binary);

conParameterResep.Value = txtResep.Text;

conParameterContent.Value = contents;

conParameterContent.Size = contents.Length;

insert.ExecuteNonQuery();

MessageBox.Show(“Berhasil menuliskan file ke database”);

}

catch (Exception exc)

{

MessageBox.Show(“Gagal: “ + exc.Message);

}

finally

{

con.Close();

}

}

private void btnAmbil_Click(object sender, EventArgs e)

{

SqlConnection con = new SqlConnection(“Data Source=DB-SQL;Initial Catalog=PabrikRoti;User ID=dbAdmin; Password=dbAdminPwd;”);

con.Open();

try

{

SqlCommand insert = new SqlCommand(

“select fileresep from filerecipe where namaresep = ‘” + txtResep.Text + “‘”, con);

SqlDataReader dr = insert.ExecuteReader();

dr.Read();

byte[] content = (byte[])dr[0];

FileStream fs = new FileStream(pathLocalResep + txtResep.Text + “.txt”,

FileMode.CreateNew);

fs.Write(content, 0, content.Length);

fs.Close();

MessageBox.Show(“Berhasil membuat file dari database”);

}

catch (Exception exc)

{

MessageBox.Show(“Gagal: “ + exc.Message);

}

finally

{

con.Close();

}

}

}

}

Jalankan program dengan menggunakan tombol F5, tuliskan rotikeju di textbox Nama Resep, dan klik tombol Simpan File.

Akan ditampilkan message box berikut bila berhasil.

Cek ke dalam tabel FileRecipe dan lihat isinya, akan tampak seperti di bawah ini.

isi tabel

isi tabel

Sekarang giliran untuk mengembalikan apa yang ada di database ke dalam bentuk file semula. Tekan tombol Ambil File, dan bila berhasil maka akan ditampilkan message box seperti di bawah ini.

Cek ke dalam folder dimana file dibuat dan buka file tersebut untuk melihat apakah isinya sesuai dengan isi file semula atau tidak. Untuk mengecek apa yang terjadi bila error berlaku, coba klik lagi tombol Ambil File maka akan ditampilkan message box seperti ini.

Ayo nak: Bermain, Berkreativitas & Belajar dengan Komputer (part 2)

BAB I.  AYO BERMAIN

 

Bermain amatlah menyenangkan.  Kamu tentu punya banyak permainan di rumah yang bisa digunakan untuk bermain bersama teman-teman di seputar rumahmu. Atau di sekolah kamu bermain jungkat-jungkit, ayunan, atau petak umpet bersama teman sekolahmu.  Tapi pernahkah kamu sendirian saja?  Tentu pernah ya, misalnya sewaktu liburan sekolah.  Kebanyakan teman-teman mu pergi ke luar kota baik ke rumah kakek nenek mereka maupun dengan tujuan rekreasi saja, sementara kebetulan kamu tetap harus tinggal di rumah mungkin karena ayah ibu mu tetap harus bekerja.

 

Bete? Bosan di rumah?  Itu dulu.  Mulai sekarang tidak lagi karena kamu punya sudah punya teman yang bisa menemanimu kapan saja dan dimana saja.  Hm, siapa dia … kamu bisa tebak?  Ya tentu saja teman kita komputer.  Di bab ini kamu akan diperkenalkan dengan beberapa permainan yang bisa kamu mainkan di internet kapan pun kamu mau dan dimanapun kamu berada.

 

Susah? … jangan pernah berpikir susah karena kamu pasti bisa!  Ayo kita mulai perkenalan kita.

1.1.             AYO MENJELAJAH DUNIA MAYA

Untuk bisa berhubungan dengan internet kita memerlukan beberapa perangkat tambahan selain komputer yang kita punya.  Ayo ajak ayah ibu atau pembimbing mu untuk membaca bagian ini.

 

Kita memerlukan alat yang namanya modem.  Modem ini menghubungkan komputer kita dengan internet lewat sambungan telepon.  Komputer kita perlu menghubungkan diri ke pemberi jasa internet yang biasanya dilakukan seperti kita menelpon yaitu kita membuat panggilan telpon ke nomor telpon pemberi jasa internet tersebut.  Contohnya bila kita mau menghubungkan pemberi jasa internet Telkomnet Instan berikut konfigurasi informasi yang diperlukan.

 

 

 

Selain modem kita bisa juga menggunakan alat bernama Wireless Network.  Wireless network ini biasanya sudah ada bila kita menggunakan laptop atau notebook, atau bisa kita tambahkan ke komputer desktop.  Dengan wireless network ini kita bisa lebih mudah mendapatkan hubungan ke internet karena alat ini bisa memanfaatkan fasilitas hot-spot yang ada, kita tinggal menghubungkan diri saja dengan menekan tombol Connect di menu di bawah ini.

 

 

 

Anggap saja kita sudah berhasil menghubungkan diri dengan pemberi jasa internet.  Kita tinggal membuka program Internet Explorer yang tampilannya akan seperti di bawah ini.

 

 

 

HORE ! …  Kita sudah berhasil menghubungkan diri dengan internet, sekarang waktunya bermain.

1.2.             AYO BERPETUALANG BERSAMA DORA THE EXPLORER

 

Buat kamu yang belum kenal Dora the Explorer, dia adalah tokoh film kartun anak-anak yang disiarkan tv Indosiar dan sudah banyak beredar VCD nya yang sangat digemari oleh anak-anak.  Dora senang berpetualang membantu teman-temannya memecahkan masalah mereka.  Sekarang kita akan bermain bersama Dora, asik kan?

 

Kita ganti link di atas dari http://www.google.co.id menjadi http://www.nickjr.com/ sehingga tampilannya akan terlihat seperti di gambar bawah sebelah kiri atau bisa juga sedikit berbeda.  Kita klik tulisan Games seperti ditunjukkan gambar mouse tanda panah sehingga dimunculkan gambar di sebelah kanannya.

 

situs nickjr.com

situs nickjr.com

 
Klik di gambar Dora di bagian bawah sehingga menjadi membesar dan akan ditampilkan permainan Dora yang bisa kita pilih. Untuk kali ini kita pilih permainan Dora’s Mermaid Adventure, klik hingga gambarnya membesar. Kita sudah masuk ke permainan Dora’s Mermaid Adventure. Di permainan ini kita membantu Dora untuk membersihkan aneka sampah berupa kertas, kaleng, ban bekas, dan lain-lain yang ada di pantai dan dasar laut menggunakan vacuum cleaner. Yang perlu kamu lakukan adalah mengklik kiri mouse sambil mengarahkan vacuum cleaner ke sampah yang ada hingga sampah tersedot masuk ke vacuum cleaner.

 

 

 

 

 

Bila kamu bisa membantu Dora membersihkan semua sampah maka Dora akan mendapatkan mahkota permata.  Petualangan yang mengasikkan ya, dan setelah ini harus selalu ingat untuk membuang sampah di tempatnya dan ikut menjaga kebersihan lingkungan kita.

 

Kamu bisa melanjutkan bermain dengan Dora lewat game lainnya.  Selamat bermain.

1.3.             AYO MEMBANTU BOB THE BUILDER

 

Sekarang giliran kamu bermain dengan Bob the Builder.  Bob adalah tokoh film kartun yang bekerja sebagai pembangun rumah yang ulung.  Bob ditemani oleh temannya Wendy beserta mesin dan mobil yang membantunya.  Untuk bertemu dengan Bob arahkan link internet ke http://www.bbc.co.uk/cbeebies/bobthebuilder/, hingga internet explorer mu menampilkan gambar seperti di bawah ini.

 

 

bob the builder

bob the builder

 

 

 

 

 

 

 

 

 

 

 

 

Di bagian Fun and Games, klik More Fun and Games untuk melihat permainan apa saja yang bisa kita mainkan bersama Bob the Builder, hingga ditampilkan gambar seperti di bawah ini.

 

 

 

Kali ini kita pilih permainan Relay Race.

 

Untuk memulai permainan kita klik Play dan kita siap membantu Bob the Builder.  Pertama-tama kita diminta untuk membantu mencari perkakas spanner di rumah-rumah yang ada di Sunflower, caranya dengan mengklik kan mouse kita di tiap rumah yang ada.  Bila sudah ditemukan maka akan ditampilkan gambar di bagian kanan dan kita bisa melanjutkan ke permainan selanjutnya dengan mengklik tanda panah birunya.

 

game bob

game bob

 

 

 

 

 

 

 

Di permainan race ini kita berpacu dengan waktu untuk mengantarkan spanner ke garis finish.  Spanner ini akan berpindah-pindah tangan dari beberapa tokoh yang ada.  Yang perlu kita lakukan adalah menekan tombol Space Bar setiap kali di layar ditampilkan pesan “Press space now!” yang digunakan untuk membuat tokoh kita meloncat agar tidak jatuh ke lubang atau menabrak pohon seperti gambar di bawah ini, dan juga untuk memindahkan spanner dari satu tokoh ke tokoh lainnya.

 

 

 

 

Bila kita berhasil sampai Finish sebelum waktunya habis maka kita akan diminta untuk menuliskan nama kita dan setelah itu akan diberi penghargaan karena telah membantu Bob dan timnya menyelesaikan pekerjaannya.

 

 

 

Mengasikkan bukan bermain bersama tokoh-tokoh kartun kita lewat komputer dan internet.  Mulai hari ini kamu tidak akan pernah kesepian lagi di hari liburmu.  Semua ini berkat adanya komputer yang ternyata bisa juga menemani mu sepanjang waktu.

 

 (Julius Hermawan)

 

 

File Archival using C# .Net

 

Pengarsipan merupakan topik yang sudah ada sejak penanganan berkas secara manual, suatu topik yang mudah dibicarakan namun sulit dilaksanakan.  Untungnya dengan adanya komputerisasi adalah bahwa aktivitas pengarsipan yang memerlukan disiplin keras dari pelakunya bisa diotomatisasi proses pelaksanaannya sehingga bisa dilakukan secara rutin tepat waktu dengan hasil yang pasti tepat sasaran.  Pengarsipan di .Net dan C# bisa dilakukan dengan mudah karena sudah tersedia class yang mendukung fungsi pengarsipan.

4.1             CLASS YANG TERLIBAT

 

Kita menggunakan beberapa class yang sudah digunakan pada pembahasan bab sebelumnya yaitu class:

  • System.IO.StreamWriter
  • System.IO.File
  • System.IO.FileInfo
  • System.IO.Directory
  • System.IO.DirectoryInfo

Class baru yang digunakan adalah class Interaction yang berasal dari Microsoft.VisualBasic.  Class ini diperlukan terutama untuk keperluan menjalankan program exe dari dalam aplikasi kita.  Method yang kita gunakan adalah Interaction.Shell.  Kita akan lihat penggunaannya sewaktu kita menjalankan program WinZip.exe dari aplikasi yang kita buat.

 

4.2             MASALAH

 

Satu tipe mesin di pabrik roti selalu menghasilkan file output setiap kali selesai memproses produk.  Nama file output ini terdiri dari 6 karakter berasal dari nama produk dan 2 karakter di belakang merupakan nomor urut dari  01 sampai 99, contohnya seperti file output produk roti keju di bawah ini:

 

 

 

file output berversi

file output berversi

 

 

 

 

 

Karena pengulangan sampai 99 ini maka ada keperluan untuk melakukan pengarsipan file output ini agar file yang sudah ada tidak tertimpa oleh file baru yang bernama sama.  Staf IT Joseph ditugaskan untuk mempersiapkan aplikasi pengarsipan ini.

 

4.3             DISAIN

 

Proposal disain yang diajukan adalah akan ada aplikasi pengarsipan yang dijalankan setiap hari untuk mengambil file-file yang dibuat minus 7 hari dari hari aplikasi berjalan.  File-file ini kemudian dipindahkan ke folder baru dengan nama “outputxxxxxx” dimana xxxxxx ini adalah cap tanggal minus 7 hari tersebut.  Misalnya hari ini tanggal 10 Januari maka file yang diambil adalah file yang dibuat tanggal 3 Januari dan dipindahkan ke folder bernama output20080103.  Berikut use case diagramnya:

 

use case diagram

use case diagram

 

 

 

 

 

 

 

Dan berikut use case statement-nya.

 

Use Case Mengarsip File Output

 

  1. Nama Use Case:

Mengarsip File Output

  1. Deskripsi Singkat:

Use case ini menerangkan mekanisme pengarsipan file output dari mesin yang disimpan di server folder output ke folder harian yang dibuat tiap hari.

  1. Basic Flow:

a.      Sistem menghitung tanggal minus 7 dari hari ini

b.      Sistem mengecek isi folder yang dituju untuk mendapatkan file yang dibuat pada tanggal minus 7 dari tanggal hari ini

c.      Sistem membuat folder baru dengan nama “Output” plus tanggal minus 7 dari tanggal hari ini.

d.      Sistem memindahkan file yang didapat ke folder yang dibuat.

e.      Sistem mencatat nama file yang dipindahkan ke file log.

  1. Alternate Flow:

a.      Bila folder kosong maka dituliskan ke file log bahwa folder kosong.

b.      Bila tidak ditemukan file dengan tanggal yang dimaksud maka dituliskan ke file log bahwa tidak ditemukan file.

  1. Special Requirement:
  2. Pre-Condition:
  3. Post-Condition:

   

Use Case Menulis ke File Log

 

  1. Nama Use Case:

Menulis ke File Log

  1. Deskripsi Singkat:

Use case ini menerangkan mekanisme penulisan ke file log.

  1. Basic Flow:

a.      Sistem membuat file sesuai dengan nama yang diminta plus tanggal hari yang dimaksud

b.      Sistem membuka file log

c.      Sistem menuliskan informasi yang dimaksud sebagai baris dalam file log

d.      Sistem menutup file log.

  1. Alternate Flow:

a.      Bila file log dengan nama dan tanggal yang diminta sudah ada maka langsung ke aktivitas 3b..

  1. Special Requirement:
  2. Pre-Condition:
  3. Post-Condition:

 

2.4  IMPLEMENTASI

 

Kita buat form bernama frmArsip dan kita tambahkan satu tombol dan beri nama Mulai Arsip.  Klik ganda tombol ini untuk masuk ke View Code.  Pertama-tama kita tambahkan referensi ke class System.IO.

 

using System.IO;

 

lalu kita tentukan variabel untuk lokasi folder yang akan digunakan yaitu folder dimana file output disimpan, dan folder dimana file log akan disimpan.

 

        private string targetPath = @”D:\MyTulisan\Buku\output”;

        private string logPath = @”D:\MyTulisan\Buku\Log\FileArchiveLog”;

 

Kita mulai dulu untuk membuat metode penulisan ke log file, kita beri nama metodenya writeLog.  Kita menggunakan class StreamWriter dan File untuk membuat file dan menuliskan isi filenya.  Kode lengkapnya seperti di bawah ini.

 

        private void writeLog(String fileName, String processStatus)

        {

            string path = logPath + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + “.csv”;

 

            if (!File.Exists(path))

            {

                using (StreamWriter sw = File.CreateText(path))

                {

                    sw.WriteLine(“FileName, TransferTime, Success”);

                }

            }

            using (StreamWriter sw = File.AppendText(path))

            {

                sw.WriteLine(fileName + “, “ + System.DateTime.Now + “, “ + processStatus);

            }

 

        }

 

Kemudian di bawah metode btnArsip_Click kita lengkapi dengan kode untuk memenuhi use case statement-nya.  Untuk mendapatkan minus 7 hari dari tanggal hari ini kita gunakan pernyataan sebagai berikut:

 

        string today = DateTime.Today.Add(TimeSpan.FromDays(-7)).ToShortDateString();

 

Untuk merujuk ke folder yang dituju digunakan pernyataan sebagai berikut:

 

                DirectoryInfo di = new DirectoryInfo(targetPath);

 

Dan untuk mengambil file yang ada di folder tersebut digunakan pernyataan sebagai berikut:

 

                FileInfo[] files = di.GetFiles();

 

Melalui variabel files yang didapat ini kemudian kita cek dulu apakah memang ada file dalam folder tersebut :

 

files.Length > 0

 

dan melalukan looping untuk mengecek tanggal pembuatan file terhadap tanggal minus 7 dari hari ini

 

               foreach (FileInfo file in files)

               {

                   if (file.CreationTime.ToShortDateString() == today)

                   {

                   }

               }

 

Untuk membuat folder baru kita gunakan pernyataan sebagai berikut:

 

                Directory.CreateDirectory(targetPath + folder);

 

Untuk memindahkan file ke folder yang baru dibuat digunakan pernyataan sebagai berikut:

 

                file.MoveTo(targetPath + folder + “\\” + file.Name);

 

Dan kode lengkap dari metode ini adalah sebagai berikut:

 

        private void btnArsip_Click(object sender, EventArgs e)

        {

            try

            {

                bool findFile = false;

                string today = DateTime.Today.Add(TimeSpan.FromDays(-7)).ToShortDateString();

                string folder = DateTime.Today.Add(TimeSpan.FromDays(-7)).Year.ToString() +

                    DateTime.Today.Add(TimeSpan.FromDays(-7)).Month.ToString() +

                    DateTime.Today.Add(TimeSpan.FromDays(-7)).Day.ToString();

                DirectoryInfo di = new DirectoryInfo(targetPath);

                FileInfo[] files = di.GetFiles();

                if (files.Length > 0)

                {

                    foreach (FileInfo file in files)

                    {

                        if (file.CreationTime.ToShortDateString() == today)

                        {

                            if (!Directory.Exists(targetPath + folder))

                            {

                                Directory.CreateDirectory(targetPath + folder);

                            }

                            file.MoveTo(targetPath + folder + “\\” + file.Name);

                            writeLog(file.Name, “OK”);

                            findFile = true;

                        }

                    }

                    if (findFile == false)

                        writeLog(“Tidak ada file hari ini”, “OK”);

                }

                else

                {

                    writeLog(“Folder kosong”, “OK”);

                }

            }

            catch (Exception exc)

            {

                writeLog(“Fail”, exc.Message);

            }

            finally

            {

                Application.Exit();

            }

        }

 

Bila kita eksekusi program ini dengan menekan tombol F5 maka hasilnya akan sebagai berikut:

 

 

 

Kita tekan tombol Mulai Arsip maka dalam sekejap form di atas akan menghilang karena pada akhir program kita set dengan pernyataan

 

            finally

            {

                Application.Exit();

            }

 

Kita cek status program yang dijalankan sebelumnya melalui file log-nya.  Kita cek folder log tersebut:

 

arsip file

arsip file

 

 

 

 

 

Ada 2 file log sudah terbuat di folder log yang dimaksud, dan hari ini adalah tanggal 14 Januari, kita coba buka isi file log tertanggal tersebut dengan notepad

 

log file

log file

 

 

 

 

 

Masih tidak ada file bertanggal 7 Januari 2008 sehingga bila kita cek ke folder output juga belum dibuat folder arsip bertanggal 7 Januari 2008.

 

Bila kita jalankan kemudian pada tanggal 19 Januari 2008 maka akan dihasilkan folder baru bernama output2008112 yang berisi file-file yang berasal dari folder output, sementara folder output menjadi kosong.  Bila kita lihat log file yang dihasilkan akan tertulis seperti di bawah ini.

 

 

 

Setelah yakin bahwa aplikasi berjalan sesuai dengan yang diharapkan maka untuk membuat aplikasi bisa berjalan secara rutin pada waktu yang diinginkan kita tinggal mendaftarkan aplikasi ini ke scheduler, kita bisa gunakan Windows Scheduled Tasks.  Buka Control Panel dan pilih Scheduled Tasks.

 

 

30 Hari Kemudian ….

 

Setelah berjalan selama sebulan kemudian didapat bahwa jumlah folder yang terbentuk adalah tiap hari dan cukup banyak.  Dimajukan ide demi penghematan tempat penyimpanan dan kemudahan penanganan lebih lanjut maka baiknya folder arsip tersebut kemudian dipindahkan lagi menjadi zip file.  Zip file itu akan berisi file-file yang ada dalam folder hari tertentu.  IT Staf Joseph mendeskripsikan lebih lanjut proposal ini ke dalam Use Case Statement sebagai berikut.

 

Use Case Mengarsip File Output

 

  1. Nama Use Case:

Mengarsip File Output

  1. Deskripsi Singkat:

Use case ini menerangkan mekanisme pengarsipan file output dari mesin yang disimpan di server folder output ke folder harian yang dibuat tiap hari.

  1. Basic Flow:

a.      Sistem menghitung tanggal minus 7 dari hari ini

b.      Sistem mengecek isi folder yang dituju untuk mendapatkan file yang dibuat pada tanggal minus 7 dari tanggal hari ini

c.      Sistem membuat folder baru dengan nama “Output” plus tanggal minus 7 dari tanggal hari ini.

d.      Sistem memindahkan file yang didapat ke folder yang dibuat.

e.      Sistem mencatat nama file yang dipindahkan ke file log.

  1. Alternate Flow:

a.      Bila folder kosong maka dituliskan ke file log bahwa folder kosong.

b.      Bila tidak ditemukan file dengan tanggal yang dimaksud maka dituliskan ke file log bahwa tidak ditemukan file.

  1. Special Requirement:
  2. Pre-Condition:
  3. Post-Condition:

 

Berdasarkan use case di atas kemudian diimplementasikan ke dalam program sebagai berikut.  Di form yang sama kita tambahkan satu tombol lagi kita namakan Zip Arsip.  Lalu klik ganda pada tombol tersebut untuk masuk ke View Code.  Kita isikan kode berikut ke dalam prosedur btnZip_Click.

 

        private void btnZip_Click(object sender, EventArgs e)

        {

            string winZipDirectory = @”C:\Program Files\WinZip\”;

            string srcDirectory = targetPath + “\\” + DateTime.Today.Add(TimeSpan.FromDays(-7)).Year.ToString() +

                DateTime.Today.Add(TimeSpan.FromDays(-7)).Month.ToString() +

                DateTime.Today.Add(TimeSpan.FromDays(-7)).Day.ToString();

            string tgtFile = srcDirectory;

 

            Directory.SetCurrentDirectory(winZipDirectory);

            writeLog(“Start Proses”, “Mulai”);

 

            string[] dirs = Directory.GetFiles(srcDirectory);

            if (dirs.Length > 0)

            {

                Interaction.Shell(“winzip32 -m “ + tgtFile + ” “ + srcDirectory + “\\*.*”, AppWinStyle.NormalFocus, true, 10000);

                writeLog(srcDirectory, “success”);

            }

            else

            {

                writeLog(srcDirectory, “no file to zip”);

            }

        }

 

 

Kode ini akan memanggil file Winzip32.exe yang ada di folder C:\Program Files\WinZip\,  kemudian melalui method Shell dari Microsoft.VisualBasic.Interaction kita eksekusi command untuk mengeksekusi proses pengezipan.  Perlu dipastikan bahwa kita sudah menginstalasi aplikasi WinZip dan bila diletakkan di folder yang berbeda dari yang di atas maka kita bisa merubah path file dari WinZip tersebut mengikuti path yang ada di komputer kita.

 

            Interaction.Shell(“winzip32 -m “ + tgtFile + ” “ + srcDirectory + “\\*.*”, AppWinStyle.NormalFocus, true, 10000);

 

Hasilnya file akan terzip

 

zip file

zip file

 

 

 

 

Dan folder output2008112 akan terdelete.  Bila kita view isi dari file output2008112.zip, isinya benar seperti isi dari folder output2008112.

 

 

 

Sementara file log yang terbentuk dari transaksi di atas akan sebagai berikut: