Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
novalagung committed May 17, 2020
1 parent 045d7d1 commit bb19b37
Show file tree
Hide file tree
Showing 15 changed files with 533 additions and 67 deletions.
2 changes: 1 addition & 1 deletion 5-go-command.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,4 @@ Command `go get` **harus dijalankan dalam folder project**. Jika dijalankan di-l

## A.5.6. Command `go mod vendor`

Command ini digunakan untuk vendoring. Lebih detailnya akan dibahas di akhir serial chapter A, pada bab [A.58. Go Vendoring](A-58-go-vendoring.md).
Command ini digunakan untuk vendoring. Lebih detailnya akan dibahas di akhir serial chapter A, pada bab [A.58. Go Vendoring](A-go-vendoring.md).
2 changes: 2 additions & 0 deletions 56-waitgroup.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ Output program di atas.

![Contoh penerapan `sync.WaitGroup`](images/A.56_1_waitgroup.png)

> `sync.WaitGroup` merupakan salah satu tipe yang *thread safe*. Kita tidak perlu khawatir terhadap potensi *race condition* karena variabel bertipe ini aman untuk digunakan di banyak goroutine secara paralel.
## A.56.2. Perbedaan WaitGroup Dengan Channel

Bukan sebuah perbandingan yang valid, tapi jika dibandingkan maka perbedaan antara channel dan `sync.WaitGroup` kurang lebih sebagai berikut:
Expand Down
2 changes: 2 additions & 0 deletions 57-mutex.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,8 @@ func main() {
}
```

> `sync.Mutex` merupakan salah satu tipe yang *thread safe*. Kita tidak perlu khawatir terhadap potensi *race condition* karena variabel bertipe ini aman untuk digunakan di banyak goroutine secara paralel.
---

<div class="source-code-link">
Expand Down
3 changes: 0 additions & 3 deletions A-61-pipeline-context-cancellation.md

This file was deleted.

8 changes: 4 additions & 4 deletions A-59-concurrency-pipeline.md → A-concurrency-pipeline.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ O iya untuk logging pembuatan file saya tampilkan setiap 100 file di-generate, a

Oke, generator sudah siap, jalankan.

![Generate dummy files](images/A.59_1_generate_dummy_files.png)
![Generate dummy files](images/A_concurrency_pipeline_1_generate_dummy_files.png)

Bisa dilihat sebanyak 3000 dummy file di-generate pada folder temporary os, di sub folder `chapter-A.59-pipeline-temp`.

Expand Down Expand Up @@ -246,7 +246,7 @@ Cukup panjang isi fungsi ini, tapi isinya cukup *straightforward* kok.

Semoga cukup jelas. Kalo iya, jalankan programnya.

![Generate dummy files](images/A.59_2_rename_sequentially.png)
![Generate dummy files](images/A_concurrency_pipeline_2_rename_sequentially.png)

Selesai dalam waktu **1,17 detik**, lumayan untuk eksekusi proses sekuensial.

Expand Down Expand Up @@ -525,7 +525,7 @@ Kita lakukan perulangan terhadap channel tersebut, lalu hitung jumlah file yang

Ok, sekarang program sudah siap. Mari kita jalankan untuk melihat hasilnya.

![Rename file concurrently](images/A.59_3_rename_concurrently.png)
![Rename file concurrently](images/A_concurrency_pipeline_3_rename_concurrently.png)

Bisa dilihat bedanya, untuk rename 3000 file menggunakan cara sekuensial membutuhkan waktu `1.17` detik, sedangkan dengan metode pipeline butuh hanya `0.72` detik. Bedanya hampir **40%**! dan ini hanya 3000 file saja, bayangkan kalau jutaan file, mungkin lebih kerasa perbandingan performnya.

Expand All @@ -541,5 +541,5 @@ Ok sekian untuk chapter panjang ini.

<div class="source-code-link">
<div class="source-code-link-message">Source code praktek pada bab ini tersedia di Github</div>
<a href="https://github.com/novalagung/dasarpemrogramangolang-example/tree/master/chapter-A.59-pipeline">https://github.com/novalagung/dasarpemrogramangolang-example/.../chapter-A.59...</a>
<a href="https://github.com/novalagung/dasarpemrogramangolang-example/tree/master/chapter-A-concurrency-pipeline">https://github.com/novalagung/dasarpemrogramangolang-example/...</a>
</div>
4 changes: 2 additions & 2 deletions A-58-go-vendoring.md → A-go-vendoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func main() {

Setelah itu jalankan command `go mod vendor` untuk vendoring *3rd party library* yang dipergunakan, dalam contoh ini adlah gubrak.

![Vendoring](images/A.58_1_vendor.png)
![Vendoring](images/A_go_vendoring_1_vendor.png)

Bisa dilihat, sekarang library gubrak *source code*-nya disimpan dalam folder `vendor`. Nah ini juga akan berlaku untuk semua *library* lainnya yg digunakan jika ada.

Expand Down Expand Up @@ -72,5 +72,5 @@ Untuk penggunaan vendor apakah wajib? menurut saya tidak. Sesuaikan kebutuhan sa

<div class="source-code-link">
<div class="source-code-link-message">Source code praktek pada bab ini tersedia di Github</div>
<a href="https://github.com/novalagung/dasarpemrogramangolang-example/tree/master/chapter-A.58-vendoring">https://github.com/novalagung/dasarpemrogramangolang-example/.../chapter-A.58...</a>
<a href="https://github.com/novalagung/dasarpemrogramangolang-example/tree/master/chapter-A-go-vendoring">https://github.com/novalagung/dasarpemrogramangolang-example/...</a>
</div>
Loading

0 comments on commit bb19b37

Please sign in to comment.