Butuh Script

BUTUH SCRIPT

[Solve] Src Refspec Master Does Not Match Any When Pushing Commits in Git

When we start using git, we never know how to upload our repository in Git.  I do like someone who never operates git before. Click  +  on the right corner beside profile picture, then choose  New repository and I got this page. 


I fill it like usual. Fill repository name, description, choose Public because I want to share my project, and I click  create repository. There's no problem I think. Then I got this page. 


At the first time, I see this page. I don't know what is it, but I remember that i ever using git when the collaborative program in bitbucket. So, I tried like when I using bitbucket and I open my Linux terminal. Then select the directory for my git and tried to follow the instruction there. 



I got error  Initialized empty Git repository in /home/chalidade/Document/go/.git/  when following the instruction without clone repository first. So, I clone repository in git by using git clone https://github.com/chalidade/Golang.git  , you can see there. After cloning process done, I got a directory Golang then I do like the instruction on git pages. 

echo "# Golang" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/chalidade/Golang.git
git push -u origin master

But something went wrong when I tried using git push -u origin master. I got error  Src Refspec Master Does Not Match Any...  like this. 


I'm really confused how to fix it. Till I search on google and I got this page on stackoverflow. To fix this, it is very easy by using git commit -m 'initial commit'  then git push origin master and it's done. 


Conclusion : 

Maybe you just need to commit. I ran into this when I did:
mkdir repo && cd repo
git remote add origin /path/to/origin.git
git add .
Oops! Never committed!
git push -u origin master
error: src refspec master does not match any.
All I had to do was:
git commit -m 'initial commit'
git push origin master
Success!

Thanks for: baisong Stackoverflow user

Go Language Chanel - Penghubung Antar Goroutine

Chanel adalah sebuah fasilitas yang tersedia pada GO lang yang berfungsi sebagai penghubung antar goroutine yang dibuat dengan menggunakan keyword  make  dan  chan  . Mekanisme pengiriman chanel adalah dengan mengirim dan menerima data melalui chanel tersebut.



Perlu digaris bawahi, Goroutine pengirim dan penerima harus berada pada chanel yang berbeda atau disebut buffered chanel. Pengiriman dan peneriman pada chanel ini bersifat blocking atau Synchronous. Ilustrasinya kurang lebih seperti berikut 

Penerapan Chanel

Dalam penerapannya, chanel merupakan sebuah variabel yang dibuat dengan menggunakan keyword  make  dan  chan . Variabel channel disini memiliki peran sebagai pengirim dan penerima data. 

Langsung saja, berikut adalah contoh program yang menggunakan chanel. 3 buah goroutine akan dieksekusi dengan proses pengiriman data melalui chanel. Data tersebut akan diterima 3 kali pada goroutine utama (  main  ). 

[code] package main

import "fmt"
import "runtime"

func main()  {
  runtime.GOMAXPROCS(2)

  var pesan = make(chan string)

  var sayHelloTo = func(who string)  {
    var data = fmt.Sprintf("hello %s", who)
    pesan <- data
  }

  go sayHelloTo("Chelud Wikanti Via")
  go sayHelloTo("Chalid Ade Rahman")
  go sayHelloTo("Chindy Via Roshita")

  var message1 = <- pesan
  fmt.Println(message1)

  var message2 = <- pesan
  fmt.Println(message2)

  var message3 = <- pesan
  fmt.Println(message3)
}
[/code]


Pada listing program diatas, variabel  message  dideklarasikan bertipe  chanel string . Pembuatan chanel yaitu dengan menuliskan keyword  make  dengan isi keyword  chan  diikuti dengan tipe data chanel yang diinginkan. Dalam listing program diatas dapat kita lihat pada sintaks berikut

var pesan = make(chan string)

Variabel  pesan  pada kode diatas akan menampung sebuah inputan string dengan isi "hello" yang disiapkan oleh sebuah closure dengan nama sayHelloTo. Tanda  <-  yang dituliskan di sebelah kiri nama variabel, menunjukan terjadi proses pengiriman data dari variabel yang berada di kanan menuju variabel yang berada pada sebelah kiri. Perhatikan baris berikut :


  var sayHelloTo = func(who string)  {
    var data = fmt.Sprintf("hello %s", who)
    pesan <- data
  }

Pada listing program diatas juga, Fungsi  sayHelloTo  dieksekusi sebanyak tiga kali sebagai goroutine berbeda. Menjadikan program ini berjalan secara asynnchronous atau tidak beraturan dan tidak saling tunggu. Dapat kita lihat pada baris berikut :


  go sayHelloTo("Chelud Wikanti Via")
  go sayHelloTo("Chalid Ade Rahman")


  go sayHelloTo("Chindy Via Roshita")

Seperti yang kita ketahui, perintah  go  menandakan perintah tersebut dijalankan sebagai goroutine. Dari ketiga fungsi tersebut, goroutine paling awal akan mengirim data dan diterimadatanya oleh variabel  message1 . Tanda  <-  menunjukan bahwa data dari sebelah kanan dikirim menuju variabel sebelah kiri dan disimpan. 

var message1 = <- pesan

fmt.Println(message1)

Penerimaan ini bersifat blocking, sehingga statement  var message1 = <- pesan  berarti data tidak akan diesekusi sebelum data dikirim lewat chanel. Ketiga goroutine tersebut akan menerima data secara berurutan oleh  message1 , message2  , message3  kemudian ditampilkan kurang lebih seperti berikut. 



Dari hasil output diatas, dapat Anda lihat bahwa eksekusi program tidak menghasilkan output yang sama. Hal ini dikarenakan, meski penerimaan data pada fungsi  sayHelloto  berurutan. Proses pengiriman data dari ketiga goroutine tersebut berbeda. Kita tidak tahu mana yang dieksekusi terlebih dahulu. Goroutine yang dieksekusi lebih awal, datanya akan diterima dan dimunculkan lebih awal. 

Namun dengan menggunakan chanel, proses blocking tidak perlu lagi menggunkaan  fmt.scanf(). seperti yang kita pelajari sebelumnya tentang goroutine. Chanel bersifat blocking sehingga dapat digunakan untuk mengantisipasi jika ada goroutine utama selesai lebih dahulu.   

Download Source File

Go Lang Scanln() - Cara Mudah Input Data ke Variabel Go Language

Fungsi Scanln() adalah sebuah fungsi yang digunakna untuk menginputkan data kedalam sebuah variabel yang telah di deklarasikan. Fungsi ini tentu sangat penting dan hampir selalu digunakan pada setiap program yang dibuat.


Tentu saja perintah  Scanln()  tidak asing lagi bagi para programer C, karna merupakan turunan dari perintah  Scanf()  yang memiliki fungsi sama yaitu input data ke dalam variabel. Sebenarnya pada golang fungsi  Scanf()  juga ada, perbedaannya akan dijelaskan pada postingan selanjutnya. 

Contoh : 

func Scanln(a ....interface{}) (n int, err error)

Kode di atas adalah skema fungsi menggunakan  fmt.Scanln() . Dari fungsi diatas, terlihat bahwa fungsi ini dapat menampung parameter yang bertipe  interface()  yang berjumlah tak terbatas. Dengan ketentuan, setiap parameter akan menampung karakter - karakter yang di pisah dengan tanda spasi. Untuk lebih jelasnya perhatikan listing program berikut : 

package main

import "fmt"

func main()  {
  var s1, s2, s3 string
  fmt.Scanln(&s1, &s2, &s3)

  //Inputan User "Chalid Ade Rahman"
  fmt.Printf("\nHasil Output : \n")

  fmt.Println(s1) //Chalid
  fmt.Println(s2) //Ade
  fmt.Println(s3) //Rahman

}

Dapat dilihat pada program diatas, Anda dapat menampung inputan text  Chalid Ade Rahman  kedalam 3 buah variabel yaitu s1, s2, dan s3. Apabila dijalankan maka tampilan program tersebut kurang lebih seperti berikut :




Go Lang Goroutine - Eksekusi Dua Thread Sekaligus

Golang adalah salah satu program yang dapat mengeksekusi dua Thread sekaligus. Artinya dalam satu file dapat menjalankan lebih dari satu Thread bersamaan. Berbeda dengan bahasa program pada umumnya yang hanya menjalankan satu Thread dalam satu file secara berurutan dari atas ke bawah.


Goroutine merupakan salah satu metode yang dipakai dalam go. Metode ini dapat dikatakan sebagai native thread yang berisikan sangat banyak goroutine. Goroutine pada go language sangat ringan, hanya dibutuhkan sekitar 2kB memori saja untuk satu goroutine. Tak hanya itu, Eksekusi goroutine pada go juga bersifat asychronous, yang menjadikan program tidak saling tunggu dengan goroutine lain.

Penerapan Goroutine

Dalam GO language, proses yang akan dieksekusi dengan goroutine harus dibungkus kedalam sebuah fungsi dan penambahan sintax  go  didepannya. Sintax tersebutlah yang menandakan bahwa fungsi tersebut dideteksi sebagai goroutin baru.

Berikut adalah contoh penerapan goroutine sederhana pada Go Lang. Program dibawah ini akan dieksekusi sebanyak 10 baris dimana 5 baris baris dieksekusi dengan cara biasa, dan 5 baris lainya dieksekusi dengan menggunakan goroutine.

package main

import "fmt"
import  "runtime"

func print(batas int, pesan string) {
  for i := 0; i < batas; i++ {
    fmt.Println((i+1), pesan)
  }
}

func main() {
  runtime.GOMAXPROCS(2)

  go print(5, "Halo Namaku Chalid")
  print(5, "Apa Kabar")

  var input string
  fmt.Scanln(&input)
}

Dalam kode tersebut,  runtime.GOMAXPROC(n)  digunakan untuk menentukan banyak prosesor yang diaktifkan. Prosesor disini artinya adalah thread yang aktif dalam listing program tersebut. Dalam program ini, ada dua prosessor yang dijalankan. Satu untuk menjalankan program seperti biasa dan satunya menjalankan program dalam goroutine. 


Pembuatan goroutine baru pada program diatas ditandai dengan sintax  go . Contohnya pada sintax berikut   go print(5, "Halo Namaku Chalid")  . Pada sintax tersebut fungsi  print()  dieksekusi sebagai goroutine baru. 


Fungsi  fmt.Scanln()  digunakan sebagai blocking, artinya program akan berhenti pada baris tersebut hingga user menekan tombol enter. Hal ini sangat perlu dilakukan karena adanya kemungkinan perbandingan waktu eksekusi antara goroutine  print()  dengan goroutine utama  main() . Jika hal tersebut terjadi, maka goroutine yang belum selesai secara paksa harus dihentikan karena goroutine utama telah selesai dijalankan. 

Hasil eksekusinya kurang lebih seperti berikut :



















Dapat dilihat, output pada tampilan diatas tidak selalu sama meski dalam satu listing program yang sama. Bisa jadi urut seperti tampilan pertama, bisa jadi selang seling atau tidak beraturan. Hal ini dikarenakan program dieksekusi 2 kali tanpa harus saling menunggu. Goroutinge mana yang dieksekusi terlebih dahulu bergantung dari kedua prosesor tersebut.

Ini Dia Alasan Mengapa Programer Wajib Belajar Go Language

Go Language (go lang) adalah sebuah bahasa pemrograman yang dikembangkan dari bahasa C  dengan mengkombinasikan bebearapa bahasa pemrograman lain seperti Pascal, Modula, Oberon, serta penambahan ide - ide bahasa pemrograman seperti Newsqueak dan Limdo.  



Menurut sejarahnya, Go Language pertama kali diumumkan pada tahun 2009. Bahasa pemrograman ini dikembangkan oleh tiga pekerja dari perusahaan besar Google. Ketiga pekerja tersebut yaitu Robert Griesemer, Ken Thompson, dan Rob Pike. Tujuan pengembangan Go Language adalah menciptakan sebuah bahasa pemrograman yang lebih efisien, ringan, sederhana, dan dapat diandalakan. Hal ini terbukti dari adanya perusahaan - perusahaan besar yang mengadopsi dan mengaplikasikan Go Lang pada aplikasi - aplikasinya seperti Dropbox, SoundCloud, CloudFlare, Docker, Cloud Foundry, dan Google sendiri. 

Go lang memiliki banyak sekali daya tarik dan kelebihan yang membuat para developer berlomba - lomba menguasai dan mengembangkan bahasa pemrograman ini.  Adapun Kelebihan Go lang diantaranya : 

Fast

Go lang terkenal sebagai bahasa pemrograman yang memiliki proses compiling yang cepat. Go lang terkenal sebagai compiled language yang tidak membiarkan seorang developer menghamburkan varibel dan data - data import. Semua variabel dan data import harus memiliki fungsi dan dijalankan, Sehingga tidak akan ada sintax baik variabel, fungsi, data - data import yang tidak terpakai ( hanya ditulis namun tidak digunakan / tak berfungsi). Dengan begitu tentu dapat dibanyangkan betapa efektif program go lang yang tentu juga berpengaruh terhadap kecepatan akses program go lang. 

Concurrent Programing

Salah satu kelebihan go lang adalah kemampuannya yang dapat menyelaraskan konsep rutinitas pekerjaan (goroutines), Konsep Channels singkornisasi komunikasi, serta pengelolaan banyak jalur bersamaan dengan lebih baik. Hal ini dikarenakna concurrency yang tertanam pada bahasa go lang itu sendiri. Sehingga seberapa banyakpun data yang masuk, akan di filter dan transmisikana dengan sangat baik. 

Clean Code

Go lang juga termasuk bahasa pemrograman yang bersih dan rapi. Para developer akan dipaksa menggunakan aturan penulisan serta methodologi yang sesuai dengan ketentuan go lang itu sendiri. Aturan - aturan ini, akan membuat para developer memahami tentang konsep clean code sesuangguhnya. Untuk apa clean code ? Bahasa pemrograman yang rapi, selain agar mudah dalam proses maintenance, juga berpengaruh terhadap kecepatan proses compileling.

Software Helper

Alat bantu program atau software helper adalah kelengkapan yang digunakan untuk membangun program, misal untuk membangun aplikasi java, Anda wajib menginstal Eclipse atau Netbeans. Alat bantu seperti ini tentu tidak efektif. Disamping sizenya yang besar, sumber daya untuk menjalankan program tersebut juga dapat dikatakan cukup besar. 

Namun tidak dengan go lang. Alat bantu untuk membuat aplikasi go lang mudah dan sangat bersahabat dengan sumber daya. tidak membutuhkan size yang besar dalam installasinya. Sehingga Anda tetap dapat membuat program yang sangat kompleks tanpa takut komputer kehabisan sumber daya. 

Community Helper

Dukungan komunitas pecinta go lang kini uga semakin banyak. Sehingga memudahkan para developer untuk terus berkembang. Meski go lang baru terkenal di tahun 2016, namun komunitas go lang sudah sangat banyak. Dukungan komunitas yang baik akan membuat programer go tidak kerepotan jika ada troble yang dihadapi. 

Mengatur Ukuran Table HTML dengan Attribut Width

Width adalah sebuah attribut yang kita gunakan untuk mengatur ukuran baik table, ataupun gambar. Hampir sama seperti align yang bila di letakkan di paragraf untuk mengatur posisi paragraf, bila diletakkan di image utnuk mengatur gambar, dan bila diletakkan di table untuk mengatur posisi table.

Attribut width  ini bila kita letakkan di table maka dia berfungsi untuk mengatur ukuran table. Bila kita letakkan di tag Image  maka fungsinya adalah mengatur ukuran image . Bagaimana Implementasinya ? Berikut akan kami bahas, cekidot

Implementasi Attribut Width untuk Table 

Attribut Width didalam Table HTML sama seperti Attribut Align di Table. Setiap Tag Table memiliki fungsi sendiri-sendiri, Bila attribut kita letakkan di tag <table> maka dia akan berfungsi untuk mengatur ukuran table. perhatikan gambar dibawah ini 

ATTRIBUT WIDTH YANG DILETAKKAN DI TAG TABLE 
Perahtikan tag diatas, Attribut Width yang saya letakkan tepat di tag <table> akan mengatur besar kecilnya table secara keseluruhan. 

ATTRIBUT WIDTH YANG DI SISIPKAN KEDALAM <TD>
Nah perhatikan contoh gambar diatas. Apabila attribut width kita masukkan kedalam tag <td> maka sama saja kita mengatur ukuran setiap kolom yang ada. Bila kita menggunakan persen maka usahakan total keseluruhan width yang kita masukkan adalah 100%  .

Semoga artikel diatas, membantu anda dalam Mengatur Ukuran Table HTML dengan Attribut Width, semoga bermanfaat. 

Next Chapter >> Mengenal Macam-macam Border Table

Menggunakan Fungsi Attribut Align untuk Table HTML (Di Baris dan Kolom)

Attribut Align di HTML selalu berhubungan dengan posisi. Ntah table, tulisan, gambar dan sebagainya tinggal dimana attribut align itu ditempatkan. Bila attribut align ini ditempatkan di <table>, maka berfungsi untuk mengatur posisi atau letak tabel. Bila anda meletakkan attribut align ini di <p> maka berfungsi untuk mengatur posisi paragraf anda, dan sebagainya. Nah disini kita akan belajar tetang Attribut Align yang diletakkan didalam baris dan kolom  atau tag <td> dan <tr> table. Cekidot !

Implementasi Attribut Align di Baris dan Kolom Table HTML

Ini tampilan jika kita menaruh align berada di dalam tag <table> perhatikan gambar dibawah ini 


Yang bergeser Posisi adalah Tablenya apabila kita menaruh Align di dalam Tag <table> , bagaimana bila kita menaruh tag align di dalam <tr>  atau baris table ? perhatikan gambar dibawah ini 


Gambar diatas menunjukkan gambar tag <tr>  yang diberi atributt Align (atas) . Dan gambar lainya menunjukkan hasil dari table tanpa attribut align di tag <tr>  nya. Jadi jika kita memasukkan attribut align kedalam tag <tr> maka isi (baik text atau gambar) yang berada di satu baris itu akan berpindah posisi seperti align yang telah ditentukan. contoh diatas menggunakan align center yang artinya semua isi dari baris dengan attribut Align akan berada di posisi tengah. 

Nah berbeda juga dengan attribut align yang ditaruh di tag <td> perhatikan gamabar dibawah ini . 

Berbeda dengan saat kita memasukkan align kedalam tag <tr> yang secara otomatis satu baris akan berada di posisi yang sama. Misal align yang digunakan adalah align="center" maka satu baris akan rata ke tengah semua. Apabila kita meletekkan attribut align di tag <td> atau kolom  maka hanya kolom yang kita beri attribut align  itu saja yang akan berpengaruh, yang tidak ada attribut align maka tidak akan berpengaruh apa-apa.

Semoga Artikel singkat ini bermanfaat, dan membantu anda dalam Menggunakan Fungsi Attribut Align untuk Table HTML (Di Baris dan Kolom)

Next Chapter >> Mengatur Ukuran Table HTML