Evan's Blog

???????

Jumat, 06 November 2015

Thread? Thread. THREAD! (FIXED)

Ya karena terjadi kesalahan teknis jadi saya salah membaca situasi dan mengira bahwa saya harus menjelaskan penggunaan tanda baca. Ternyata setelah memahami judul lebih dalam lagi saya mendapat kesimpulan bahwa yang seharusnya saya jelaskan itu tentang Thread nya, bukan tanda bacanya. Ok karena waktu saya sudah cukup banyak habis menulis blog tentang tanda baca (kalo mau baca di sini ni) jadi saya langsung masuk ke inti aja ya. Apa itu Thread ?
Thread, atau bisa juga disebut lightweight process, adalah unit dasar dari utilitas CPU yang di dalamnya terdapat ID thread, program counter, register, dan stack dan saling berbagi dengan thread lain dalam proses yang sama. Perbedaan nya apa sama process ? Thread dari suatu process yang sama akan berjalan di memory space yang sama (berbagi memory space), sedangkan process berjalan di memory space yang terpisah.
Nah yang mau saya bahas kali ini bukan tentang thread dan sejarahnya, tapi tentang Multithreading. Sesuai namanya, multithreading adalah kumpulan instruksi yang dijalankan secara bersamaan dalam sebuah program. Nah yang terpenting dari yang terpenting sekarang adalah..... CONTOH KODINGANNYAAAAA. ya seperti biasa saya kasi dulu nih kodingan fullnya baru kita kupas satu per satu.

Noh ngerti ? Ngerti. Ngerti! kalo udah ya close ae blog nya. nah bagi yang blom kita bahas 1 1 kodingannya. Keliatan rumit mungkin tapi lumayan simpel kok (kalo kalian sepintar saya). #BOOM #BURN
Yah untuk bagian atas nya ga perlu di kasi tau kali ya ? pasti uda tau semua kan ? itu library library yang perlu di buka agar command command nya bisa di baca komputer.
Sekarang kita mulai dari fungsi utama.
Untuk pengenalan variable kayaknya ga perlu diajarin lagi ya ? langsung masuk ke perulangan while. Kenapa "i < 2" ? karena kebetulan di contoh yang saya buat ini saya cuma mau buat 2 thread berjalan bersama. kalo pengen lebih ya tinggal naikin aja angkanya.
err=pthread_create(&(tid[i]), NULL, &THREADS, NULL);
Variable "err" ini nyatet hasil dari pengerjaan fungsi phread_create, kalo berhasil fungsi bakal me-return angka 0 (nol). Kalo dia ga nge-return 0 bakal ngeprint "can't create thread bla bla bla". strerror itu buat nyatet dia error nya apa.
Itu yang di dalam pthread_create apaan ? itu parameter parameternya. &tid[i] itu buat nunjukin lokasi dimana ID dari thread yang barusan dibuat akan di simpan. parameter kedua itu diisi attribute dari thread yang sedang dibuat, NULL disitu maksudnya thread dibuat dengan attribute default nya. &THREADS itu nunjukin fungsi yang berisi thread, artinya codingan thread yang mau dijalanin itu di tulis di fungsi sini. Parameter terakhir itu argument untuk mentrigger jalannya thread, dan kenapa NULL ? karena thread nya langsung di jalanin tanpa perlu ada kondisi khusus atau pengiriman argument.
Lanjut ke bagian ke fungsi threadnya nih
Baris paling atas itu variable untuk menyimpan ID dari thread yang dibuat, kenapa 2 ? seperti yang saya bilang di atas tadi, Karena di contoh ini saya cuma mau buat 2 threading.
Di dalam fungsi THREADS dikenalin lagi 1 variable baru namanya id yang gunanya untuk nyatet ID dari thread yang memanggil fungsi. Jika id nya sama denga tid yang pertama (tid[0]) maka dia akan jalanin Thread 1 dan kalo sama dengan tid yang kedua (tdi[1]) dia akan jalanin Thread 2. Thread 1 dan Thread 2 itu di isi kodingan dari program yang ingin kalian jalanin secara bersamaan.
Selesai ? Blom. Balik lagi ke fungsi utama 2 baris pthread_join.
pthread_join(tid[0],NULL);
pthread_join(tid[1],NULL);
 Apa gunanya ? gunanya adalah agar pthread_join yang memiliki thread id yang disebutkan menunggu sampai thread tersebut selesai sebelum mereturn nilai. kenapa kedua id dimasukkan ke fungsi pthread_join ? kedua thread tersebut di masukkan ke dalam fungsi pthread_join agar masing masing thread melakukan tugasnya sampai akhir sebelum mereturn nilai. Jika hanya salah 1 saja yang di masukkan ke fungsi pthread_join maka thread yang satu lagi akan ikut berhenti walaupun belum selesai melakukan tugasnya.
Nah gimana ? gimana ? udah mulai mengerti ? kalo belum silahkan coba coba sendiri dan lanjutkan mencari di blog lain (misalnya di blog ini).

Thread? Thread. THREAD!


Ya kembali bersama saya di pelajaran berikutnya. Dari judul nya kalian pasti tahu kita mau belajar apa kan ? ya tepat sekali, kita akan mempelajari cara penggunaan tanda baca yang baik dan benar. Dan dalam sesi ini saya akan membahas 3 tanda baca yang cukup sering di gunakan yaitu titik (.) , Seru (!), dan Tanya (?).
Kita mulai dari titik. Agar lebih mudah dibaca saya buat dalam bentuk poin poin saja ya :
1. Tanda titik dipakai pada akhir kalimat yang bukan pertanyaan atau seruan.
Apabila dilanjutkan dengan kalimat baru, harus diberi jarak satu ketukan.
2. Tanda titik dipakai pada akhir singkatan nama orang.
Apabila nama itu ditulis lengkap, tanda titik tidak dipergunakan.
Contoh: Dwiki Halla
3. Tanda titik dipakai pada akhir singkatan gelar, jabatan, pangkat, dan sapaan.
4. Tanda titik dipakai pada singkatan kata atau ungkapan yang sudah sangat umum. Pada singkatan yang terdiri atas tiga huruf atau lebih hanya dipakai satu tanda titik.
5. Tanda titik dipakai untuk memisahkan angka jam, menit, dan detik yang menunjukkan waktu atau jangka waktu.
6. Tanda titik dipakai untuk memisahkan bilangan ribuan atau kelipatannya.
7. Tanda titik tidak dipakai untuk memisahkan bilangan ribuan atau kelipatannya yang tidak menunjukkan jumlah.
8. Tanda titik tidak dipakai dalam singkatan nama resmi lembaga pemerintah dan ketatanegaraan, badan atau organisasi, serta nama dokumen resmi maupun di dalam akronim yang sudah diterima oleh masyarakat.
9. Tanda titik tidak dipakai dalam singkatan lambang kimia, satuan ukuran, takaran, timbangan, dan mata uang.
10. Tanda titik tidak dipakai pada akhir judul yang merupakan kepala karangan, atau kepala ilustrasi, tabel, dan sebagainya.
Lanjut tanda Seru !!!!! Ya saya mau menjelaskan pemakaian tanda seru tapi saya sendiri salah menggunakannya. Tanda seru dipakai sesudah ungkapan atau pernyataan yang berupa seruan atau perintah yang menggambarkan kesungguhan, ketidakpercayaan, ataupun rasa emosi yang kuat. Oleh karena itu, penggunaan tanda seru umumnya tidak digunakan di dalam tulisan ilmiah atau ensiklopedia. Hindari penggunaannya kecuali dalam kutipan atau transkripsi drama.
Dan yang terakhir tanda tanya. kembali saya jelaskan dalam bentuk poin poin.
1. Tanda tanya dipakai pada akhir tanya.
Penggunaan kalimat tanya tidak lazim dalam tulisan ilmiah.
2. Tanda tanya dipakai di dalam tanda kurung untuk menyatakan bagian kalimat yang disangsikan atau yang kurang dapat dibuktikan kebenarannya.
Nah sekian untuk sesi kali ini. jika kalian meng-copy tulisan ini dan mencari nya di google kalian pasti tahu bahwa ini saya dapat dari wikipedia.

Sabtu, 17 Oktober 2015

Penggunaan Daemon pada C

Karena saya juga ga terlalu ngerti mau nulis pembukaan gimana jadi kita masuk aja langsung ke topiknya. Post ini saya dedikasikan untuk orang orang yang ingin buat program daemon. Daemon itu sendiri apa ? Daemon itu adalah program yang berjalan di background , maksudnya proses kerja nya itu ga keliatan (ga ada interfacenya). Untuk penggunaanya nih kodingannya. Ntar dibahas kegunaannya.
Dari atas paling atas yang include include an itu. Maksudnya apa ? itu menandakan library apa aja yang perlu dibuka di program ini, dan untuk daemon ada 9 itu yang wajib supaya bisa jalan. untuk kegunaan dari masing masing library mohon google saja. untuk fungsi umask() itu gunanya supaya dalam setiap pembuatan file ga ada file file yang tidak aman dari user prioritas tinggi (super user).  ya untuk int main nya ya semua juga pasti uda ngerti buat apa kan ya ?
Lanjut ke berikutnya

Untuk pengaplikasian daemon itu dibutuhkan teknik namanya forking. apa itu forking ? forking itu mematikan parent process dan melanjutkan process itu di child process, gunanya adalah agar sistem operasi mengira process sudah berhenti (karena parent processnya udah "mati").
Selanjutnya
itu setsid() gunanya buat session ID baru. buat apa ? karena daemon itu proses independen jadi ga boleh bekerja di bawah proses lain (makanya tadi parentnya di "mati" in). Daemon kan selalu bekerja di balik layar jadi dia harus bekerja di direktori yang selalu hidup, maksudnya itu direktori tetap yang ga boleh ilang. di contoh ini direktorinya itu di root (paling aman karena ga bisa ilang).
Dan yang terakhir
itu tuh yang 3 close yang di atas itu gunanya supaya proses daemon yang jalan di background tadi ga di ganggu sama descriptor yang sengaja ataupun ga sengaja di lakukan user. STDIN untuk descriptor input, STDOUT untuk descriptor output, STDERR untuk desciptor output. nutup descriptor ini sebenarnya optional karena jika program yang ingin kamu daemon itu butuh input atau output descriptornya ga boleh di close. Nah yang paling penting dari yang terpenting itu while(1) dan isinya. itu infinite loop supaya program yang lu tulis di dalem sono itu jalan terus diulang ulang, dan hanya berhenti kalo di kill lewat terminal atau tombol dewa (Power).

Jumat, 25 September 2015

Cara Mengarsipkan File atau Folder ke Dalam Bentuk tar.gz Melalui Script Unix



Sebenarnya cara ngarsipin file atau folder paling gampang sih bukan gini caranya, tapi kan kalo ngetik ngetik di terminal kan keliatan agak keren keren gimana gitu kaya hacker hacker handal di mata orang orang yang ga ngerti awkawkwakwakwa.
Biar nih posting kaga kepanjangan langsung ke inti aja kali ya ? Noh gua kasi codingan nya dulu baru ntar kegunaannya kita kupas baris per baris.

Pertama-tama ya paling penting buat dulu file .sh buat ngetik ngetik codingannya. CAra buat nya tinggal buka text editor baru save dengan ekstensi .sh
Nah sekarang buat codingannya. Mulai dari baris pertama ok ? Nah itu kan ada tulisan tar ya ? Itu tuh yang paling penting dari semuanya. Itu command untuk nge arsip file atau folder yang kita mau. nah habis itu ada tulisan "-cvzf " kan ? itu kalo dijelasin satu satu kegunaanya adalah :
1. c (Create) -> ini untuk membuat arsip baru. kan sebelum semua folder nya di jadiin 1 arsip kan pasti harus sediain arsip nya dulu kan ?
2. z (gzip) -> ini fungsi buat nyatuin + nge-compress file atau folder yang mau di arsipin
3. f (file) -> ini untuk nentuin nama arsipnya kita. kalo di codingan atas sono itu yang tulisannya "A05.tar.gz" itu.
4. v (verbose) -> ini untuk nunjukin progress compressing kita biar keliatan di terminal sekarang lagi compress file atau folder yang mana.
Nah dari 4 itu yang wajib itu cuma 3 itu tuh kalo mau buat arsip baru. yang ga wajib itu option v (verbose) nya. Progress keliatan kaga keliatan juga kan terserah masing masing, itu cuma buat ngasi tau aja.
Lanjut ke tulisan terakhir di baris pertama "$1". Sebenarnya itu diisi dengan nama folder atau file yang akan di arsipin. Biar lebih ngerti nih contoh codingannya.






Nah jadi ntar kalo dibaca itu script "$1" jadi "Contoh_Folder" karena "$1" itu artinya ngambil inputan pertama.
evanbangun@ubuntu:~/Desktop$ -> itu nunjukin sekarang kita lagi di mana posisinya, di contoh ini kita lagi di Desktop. Oh iya supaya ini script bisa jalan script nya harus di direktori yang sama dengan folder yang akan di compress. Nomor4.sh itu nama script yang di awal tadi kalian simpan dengan ekstensi .sh, dan Contoh_Folder itu folder yang mau kalian arsipin. Nah coba jalanin.

Nah itu karena isi foldernya cuma 1 (Contoh_File) jadi dia progressnya cuma sedikit. Kalo di terminal kalian uda keluar mirip seperti itu berarti folder atau file nya berhasil di arsipin.
Nah bagian pentingnya udah lewat kan ? Ini bagian yang kurang pentingnya atau bisa di sebut tambahan aja. 2 baris sisanya itu buat nyatat tanggal dan jam berapa foldernya di arsipin. Di baris ke 2 ada command touch itu gunanya untuk membuat file dan "log_A05.txt" itu nama file yang kita buat beserta ekstensinya.
Lanjut ke baris 3. Disini agak rumit, soalnya banyak command. pertama mulai dari echo, gunanya buat nulis apa yang akan kita outputnya di dalam file "log_A05.txt" tadi. Nah sekarang buat yang di dalam " ". Ketemu lagi sama "$1", fungsinya sama yaitu buat manggil nama folder yang mau di arsipin tadi. Selanjutnya fungsi date ya. date itu punya banyak opsi kalo mau lebih jelasnya itu coba cek di sini. Gampangnya itu operator "+" digunakan buat nambahin opsi,  %d, %m , %Y adalah opsi buat nunjukin tanggal, bulan, tahun, sedangkan %H, %M, %S gunanya buat nunjukin jam, menit, detik. oh iya jangan lupa fungsi date itu di tulis di dalam petik(` `) tapi bukan petik biasa. petik yang dimaksud adalah petik yang, umumnya, di bawah tombol escape. Saya juga lupa itu nama petiknya apaan jadi di sebut petik bawah escape aja. itu gunanya agar program ngejalanin command itu dulu. nah sekarang coba jalanin lagi dan buka file yang .txt yang baru kebentuk.
udah keluar mirip gitu belum ? kalo udah ya selamat kalian telah berhasil mengarsipkan + mencatat log pengarsipan. Ya tapi sesuai dengan apa yang saya bilang sebelumnya yang penting itu cuma cara ngarsipinnya, ini mah cuma tambahan aja hahahahaha.