Rabu, 24 November 2021

Mengenal Penggunaan Perintah $ bash –init-file

Mungkin pembaca pernah (penasaran) melakukan perintah $ bash –help, dan belum tahu kegunaanya


user@localhost ~ $ bash --help
GNU bash, version 4.3.42(1)-release-(i686-redhat-linux-gnu)
Usage:	bash [GNU long option] [option] ...
		bash [GNU long option] [option] script-file ...
GNU long options:
	--debug
	--debugger
	--dump-po-strings
	--dump-strings
	--help
	--init-file
	--login
	--noediting
	--noprofile
	--norc
	--posix
	--rcfile
	--rpm-requires
	--restricted
	--verbose
	--version
Shell options:
	-ilrsD or -c command or -O shopt_option		(invocation only)
	-abefhkmnptuvxBCHP or -o option
Type `bash -c "help set"' for more information about shell options.
Type `bash -c help' for more information about shell builtin commands.


Adapun kegunaan pilihan –init-file adalah membuat interaktif baru disertai (membuat) pengaturan-pengaturan sebagai default untuk interaktif baru tersebut.


Jika pembaca masih belum paham/yakin betul apa itu interaktif (pada terminal Linux), bahwa (secara sederha) interaktif adalah penggunaan terminal yang sifatnya digunakan untuk melakukan/memasukkan perintah untuk berkomunikasi dengan sistem komputer, istilah lainnya adalah (program) interpreter.

Untuk lebih jelasnya, pelajari contoh berikut dalam membuat interaksi baru menggunakan pilihan –init-file.

Buat file untuk init:


#nama file: tes-init.sh

echo -e "\n\n[[ Selamat datang di interaksi baru... ]]\n\n"
PS1="Masukkan Perintah >> "
TES_VARIABEL="Ok.. anda memanggil saya"

# Pada interaksi ini anda tidak diizinkan atau tidak bisa menginput-
# angka 3, 5, 7
bind '"3":""'
bind '"5":""'
bind '"7":""'

kemudian jalankan/eksekusi file-init.sh tersebut dengan perintah:


user@localhost ~ $ bash –init-file tes-init.sh 
 


 

Ya, itu adalah (shell) interaktif di dalam interaktif, dimana intraksi pertama (pada dasarnya) tidak mempunyai hubungan pemberian nilai ke interaksi kedua, misalnya nilai variabel pada shell interaksi pertama, tidak bisa diambil di interaksi kedua, begitu juga sebaliknya. Interaksi pertama dengan kedua seperti ruang berbeda, meski dalam satu tampilan jendela terminal, sebagaimana pada contoh gambar diatas. Semacam menjalankan interaksi python d terminal.

Semoga bermanfaat


Minggu, 14 November 2021

Cara Menemukan Posisi Huruf/Karakter Dan Mengambil (beberapa) Karakter/Huruf Berdasarkan Posisi Pada Pemrogaman Bash

 Pembahasan mengenai mendapatkan posisi huruf (atau karakter) maupun mendapatkan (satu atau sekumpulan) karakter (atau huruf) dalam pembelajaran berbahasa inggris istilahnya “Substring Extraction”, secara bahasa (yang mungkin bisa dipahami secara awam) adalah menggali atau mengeluarkan apa yang didalam substring (sebuah atau serangkaian huruf/karakter yang merupakan sebuah nilai).

Rumus:
${string:position}
Contoh 1 :

user@localhost ~ $ string=abcABC123ABCabc
user@localhost ~ $ echo ${string:0}
abcABC123ABCabc
user@localhost ~ $ echo ${string:1}
bcABC123ABCabc
user@localhost ~ $ echo ${string:7}
23ABCabc
user@localhost ~ $ echo ${string:7:3}
23A
user@localhost ~ $ echo ${string:-4}
abcABC123ABCabc
user@localhost ~ $ echo ${string:(-4)}
Cabc
user@localhost ~ $ echo ${string: -4}
Cabc

Uraian:

Saat mengekstrak substring dengan cara diatas, maka perlu diketahui bahwa tiap karakter/huruf pada subtring mempunyai index, dan index pertama dimulai dari 0

a --> index ke 0
b --> index ke 1
c --> index ke 2
A --> index ke 3
B --> index ke 4
C --> index ke 5
1 --> index ke 6
…
…
…
c --> index ke 14
Jadi jumlah karakter ada 15 (14+1).
${string:0} menampilkan karakter dari index 0 (“a” awal) sampai index akhir (“c” akhir)
${string:1} menampilkan karakter dari index 1 (“b” awal) sampai index akhir (“c” akhir)
${string:7:3} menampilkan 3 karakter dari index 7, jadi berakhir di index 9
${string:-4} akan terbaca secara default (terambil semua nilai string)
${string:(-4)} menampilkan 4 karakter dari belakang (index terakhir)

${string: -4} sama dengan “(-4)” diatas, dan teliti lagi bahwa tidak sama dengan yang tanpa tanda kurung diatas. Disini antara “:” dan “-” terdapat spasi, sedangkan yang diatas tanpa spasi.

Cara ini juga bisa digunakan pada parameter $* atau $@, seperti:
echo ${*:2}
echo ${@:2}
echo ${*:2:3}

Selain cara diatas, terdapat cara lain dengan menggunakan “expr”. Penggunaan expr untuk mengekstrak bisa lebih luas lagi.

Rumus: expr substr $string $position $length
Contoh 2 :

user@localhost ~ $ string=abcABC123ABCabc
user@localhost ~ $ echo `expr substr $string 1 2`
ab
user@localhost ~ $ echo `expr substr $string 4 3`
ABC

Uraian:

Perhatikan perbedaan pengindexan dengan Contoh 1, jika pada Conroh 1 index pertama dimulai dari 0, sedangkan disini dimulai dari 1. Dengan expr bisa juga mengunakan regular expression untuk mencocokkan karakter dalam string.

Rumus:
expr match "$string" '\($substring\)' atau expr match "$string" '.*\($substring\)'
expr "$string" : '\($substring\)' atau expr "$string" : '.*\($substring\)'

Contoh 3 :

user@localhost ~ $ string=abcABC123ABCabc
user@localhost ~ $ echo `expr match "$string" '\(.[b-c]*[A-Z]..[0-9]\)'`
abcABC1
user@localhost ~ $ echo `expr "$string" : '\(.[b-c]*[A-Z]..[0-9]\)'`
abcABC1
user@localhost ~ $ echo `expr "$string" : '\(.......\)'`
abcABC1
user@localhost ~ $ echo `expr match "$string" '.*\([A-C][A-C][A-C][a-c]*\)'`
ABCabc
user@localhost ~ $ echo `expr "$string" : '.*\(......\)'`
ABCabc 


Semoga bermanfaat

Sabtu, 11 September 2021

Mengenal Penggunaan Property Children Pada Gambas

Children yang secara bahasa artinya “Anak”, merupakan Object Class Control yang menjadi properti dari Class Object induknya (Parent). Sedangkan Object induk/parent merupakan Class Object Container yang bisa berupa Form, HBox, Vbox, Panel, GridView, dll yang dapat menampung object-object lain yang menjadi anaknya/children seperti Label, TextBox, GridView, DirBox, bahkan object container itu sendiri.



Bisa dibilang bahwa property Children merupakan sebuah Class Object yang merujuk ke Class Object lain, artinya bekerja sebagai pointer yang menunjuk ke lokasi suatu object. Properti Children digunakan untuk mengambil dan memanipulasi nilai dari suatu Object dari “Anak” Parent/Induk. Contoh:  

' Gambas class file  

Public Sub Form_Open()  

Print VBox1.Children.Count  

Print VBox1.Children[2].Name  

Print Object.GetProperty(VBox1.Children[0], "Text")  

Print Object.GetProperty(VBox1.Children[2], "Text")  

If Object.GetProperty(VBox1.Children[1], "Text") = "Sawot" Then

'Merubah yang awalnya Text Children[0]/RadioButton1 = 

'"Jemblem" menjadi "Onde-Onde"  

Object.SetProperty(VBox1.Children[0], "Text", "Onde-Onde")  

Endif  

End 

Hasil: 

3 

TextBox1 

Jemblem 

Lupis Semoga dapat dipahami


 

Kamis, 19 Agustus 2021

Mengenal Collection, Objek Serupa Array Dengan Kata Kunci (Key/Index?) Bebas/Fleksibel ~Tutorial Gambas

Objek Class Collection bisa menjadi alternatif penampung data yang cara kerjanya mirip dengan Array yang nilai-nilai/data-data (yang ditampung) bisa dipanggil menggunakan Loop seperti For, While, Repeat, dll berdasarkan kata kunci (key) tiap-tiap data (tergantung karakter kata kunci yang digunakan). 
Dua perbadaan mendasar antara Array dan Collection
Array:
- Bisa 3 dimensi
- Index (yang menjadi kata kunci) berupa urutan angka (terurut) dengan tipe data Short atau Integer
Collection:
- Hanya satu dimensi
- Tidak mengunakan index (urutan) angka integrer atau short, melainkan berdasar kata kunci dengan tipe data string

Contoh:
 ' Gambas module file

Public Dino As Collection = ["sn": "senen", "sl": "seloso", "rb": "rebo"]
Private Ongko As New Collection


Public Sub Main()

Dim Datae As String
Dim No As Short
Dim Panganan As New Collection

Print "---- Contoh Pertama"
Print Dino["rb"]
For Each Datae In Dino
Print Dino.Key & " --> " & Datae
Next
Print Dino.Length & " (Jumlah data pertama Dino)" 'Ada 3
Dino.Add("Jumat", "jm") 'Menambah data
For Each Datae In Dino
Print Dino.Key & " --> " & Datae
Next
Print Dino.Length & " (Jumlah data kedua Dino)" 'Ada 4
Dino.Remove("sn") 'Menghapus
For Each Datae In Dino
Print Dino.Key & " --> " & Datae
Next
Print Dino.Length & " (Jumlah data ketiga Dino)" 'Ada 3
'Cek apakah ada data koleksi dengan Datae tersebut
If Dino.Exist("sb") Then
Print "Ada"
Else
Print "tidak Ada"
Endif
Print "\n"

Print "------ Contoh kedua"
Print Ongko.Length & " (Jumlah data pertama Ongko)" 'ada 0
Ongko = ["1": "siji", "2": "loro", "3": "telu"]
For No = 3 DownTo 1
Print Ongko[No] & " --> " & No
Next
Print Ongko.Length & "(Jumlah data kedua Ongko)"
Print Ongko.Count
Ongko.Clear 'mebersihkan/menghapus semua data
Print Ongko.Length & "(Jumlah data ketiga Ongko)\n\n"

Print "------ Contoh kedua"
Panganan.Add("sego pecel", "sg")
Print Panganan.Count
Print Panganan["sg"]
Panganan = ["gd": "gado-gado", "r": "rawon"]
'Data sego pecel hilang ditimpa 2 data baru diatas
For Each Datae In Panganan
Print Panganan.Key & " --> " & Datae
Next
Print Panganan.Length

End
Catatan: 
Perhatikan saat pendeklarasian variabel/objek “Dino”, “Ongko” dan “Panganan”, yang Ongko dan Panganan menggunakan “As New” sedangkan yang Dino tidak. Namun Dino diberi data secara langsung saat pendeklarasian maka sudah dianggap membuat objek baru, sehingga tidak perlu menulis “New” saat pendeklarasian.As New” peruntukkan (variabel) objek baru yang merujuk pada Class seperti Collection, TextBox, ValueBox, dkk, sedangkan yang tanpa “New” untuk membuat variabel biasa dg type data String, Integer, Short, Float, Variant, dkk.