Sabtu, 31 Januari 2015

Transfer Data Via Text/String

Sebenernya ini cuma hal kecil yang kepikiran tahun 2010 kemarin dan sudah ku terapkan, sangat membantu dalam transfer data antar komputer. Kegunaannya bermacam ragam, bisa digunakan untuk mengirim data atau menyimpan data dalam teks atau registry.

Transfer Data Via Text/String di ilhami dari penggunaan push dan shift saja. Dalam pelaksanaanya ditambah dengan beberapa pembatas.

 

Push
Sekedar mengingatkan, push adalah meletakkan satu item dibelakang array. Berikut contoh push :

a = ['honda', 'yamaha', 'suzuki'];
array_push(a, 'cagiva');

hasilnya a = ['honda', 'yamaha', 'suzuki', 'cagiva']

lalu bijimana kalo digunakan sistem push pada string/text :  prinsipnya sama saja menambahkan karakter dibelakang. contoh :

a = 'akucinta';
string_push(a, 'kamu')

maka hal biasa ini menghasilkan : akucintakamu.

Shift
Kembali sekedar mengingatkan lagi, shift adalah mengambil, menghapus dan mengembalikan satu itu paling depan pada array. Berikut contoh shift:

b = ['canon', 'epson', 'hp', 'brother'];
c = array_shfit(&b);

hasilnya b = ['epson', 'hp', 'brother'], dan c memilik nilai 'canon' (perhatikan index 0 pada array b sebelum di shift).

jika bekerja di string? tentunya hal ini tidak akan bisa dilakukan, karena string bukanlah array. Ada yang komplain : "pak, string adalah array dari char atau karakter" <= ya benar.

String Sebagai Array dari Karakter
Sebuah string bisa dipenggal menjadi beberapa char. Contoh :

e = substr('epson', 0, 1);
o = substr('epson', 3, 1);

maka e bernilai 'e' dan o bernilai o. kuncinya adalah sebuah fungsi yang bernama substr (c#, php) atau mid (vb6) yang memilih karakter mana yang akan diambil berdasarkan posisi dan panjang 1 (untuk mengambil 1 karakter saja).

Pembatas
Bagaimanakah jika ingin string di shift? ini tidak bisa dilakukan kecuali ada pembatas. Pembatas berfungsi menentukan karakter mana sampai mana yang akan diambil. Menurutku ada 2 cara membatas karakter, dan dua-duanya pernah kugunakan dalam aplikasi yg pernah kubuat.

1. Pembatas dengan menggunakan karakter
Contoh jika menggunakan karakter '^' sebagai pembatas :

f = 'ini adalah teks yang dikirim oleh^nama pengguna^2015-30-01 22:48:00';
g = explode(f, '^');
dump(g);

hasil: g menjadi sebuah array dengan panjang 3, berisi :

g[0] = 'ini adalah teks yang dikirim oleh'
g[1] = 'nama pengguna'
g[2] = '2015-30-01 22:48:00'

kelemahan tipe pembatas ini, karakter '^' tidak bisa dikirim karena ia berfungsi sebagai pembatas.

2. Pembatas dengan menggunakan panjang string
Tipe pembatas ini harus menyertakan panjang item pada awal item yang akan dimasukkan pada array.

h = '5canon7brother2hp';

untuk menshift h , diperlukan fungsi tersendiri yang harus diulang hingga h bernilai kosong. Fungsi harus menggunakan parameter referensi string yang akan dibongkar. fungsi tersebut memiliki urutan sbb :

1. periksa apakah parameter referensi berisi nilai.

2. ambil 1 karakter pertama (index 0, 1) diawal masukkan ke variable => lenstring,

lenstring = substring(h, 0, 1);

3. crop string yang berada dari mulai 1 s/d panjang string (index 1, lenstring) => ini akan menjadi hasil.

hasil = substring(h, 1, lenstring);

4. pada bagian ini ada dua metode: 
a). menghapus (lenstring + 1) karakter dari awal h => h menjadi sisa string

h = h.removeFrom( 0, lenstring + 1 );

b). atau meng-crop string dari mulai index (1 + lenstring) sepanjang (len(h) - 1 - lenstring)
kedua metode itu menghasilkan string yang belum di shift.

h = substring(h, ( 1 + len(h), ( len(h) - 1 - lenstring ) )

5. kembalikan hasil dan variable parameter referensi yang baru.

untuk lebih jelasnya, perhatikan fungsi php yang sudah kubuat ini.

    // perhatikan, parameter bertipe reference
    function ShiftText(&$toShift)
    {

        // 1. periksa apakah parameter referensi berisi nilai.
        if (is_null($toShift)) return NULL;
        

        // 2. ambil 1 karakter pertama (index 0, 1) diawal masukkan ke variable 
        //    => lenstring,
        $lenstring = substr($toShift, 0, 1));
        

        // 3. crop string yang berada dari mulai 1 s/d panjang string (index 1, 
        //    lenstring) => ini akan menjadi hasil / result.
        $result  = substr($toShift, 1, $lenstring);


        // 4.b. atau meng-crop string dari mulai index (1 + lenstring) sepanjang 
        //      (len(h) - 1 - lenstring) 
        $toShift = substr($toShift, 1 + $lenstring, strlen($toShift) - 1 - $len);

        // 5. kembalikan hasil dan variable parameter referensi yang baru.
        return $result;
    }


untuk menggunakan fungsi ini adalah sbb :

h = '5canon7brother2hp';
$a = array();
while ($h != NULL) $a[] = ShiftText($a);
var_dump($a);

hasilnya :

$a[0] => 'canon', 
$a[1] => 'brother',
$a[2] => 'hp'

Penggabungan Push dan Shift Untuk Transfer Data via Text/String
Agar Push dan Shift bisa bekerja baik untuk transfer data, maka harus didefinisikan fungsi tersendiri untuk push string ke dalam string data dan shift string dari string data.

fungsi push string adalah sebuah fungsi penambahan string sederhana:

f(x, &y) = len(x) + x + y

dan shift string sudah dijabarkan diatas beserta contoh pada php.

Jika diasumsikan fungsi untuk push adalah PushText dan shift adalah ShiftText, lihat contoh berikut:

$a =['apel', 'melon', 'jeruk', 'durian'];
$h = '';
foreach ($a as $b) 
    PushText($b, $h);

sampai sini $h adalah variable bertipe string dengan nilai '4apel5melon5jeruk6durian'

$c = array();
while ($h != NULL) $c[] = ShiftText($h);

sampai sini $h bernilai NULL dan variabel $c bertipe array dengan nilai :

$c[0] => 'apel',
$c[1] => 'melon',
$c[2] => 'jeruk',
$c[3] => 'durian'


Demikian, semoga sampai disini dimengerti cara push dan shift string. Beberapa pertanyaan akan muncul, dan akan dijawab di judul lainnya. Selamat belajar.

Tidak ada komentar:

Posting Komentar

Jika ada kritik dan saran, komentari Artikel ini.