Godong Gedang, the hive, cawang

19 Apr

Kebetulan ada kegiatan ‘ngamen’ di jakarta dan diberi jatah bermalam di park hotel cawang. Setelah masuk kamar, sholat, basuh badan, lapar. Jadilah jalan-jalan keluar hotel. Kebetulan di sebelah hotel ada gedung the hive, di dalamnya ada beberapa restoran dan ada food court juga di lantai 2. Pilihan saya jatuh ke godong gedang, belum pernah mampir, tapi sepertinya enak. Jadilah saya mampir.

Tempatnya nyaman, bernuansa warung desa, dengan warna dasar merah, kuning, hijau. Mejanya pun sederhana dengan alas kain batik dengan motif desa.

Setelah melihat menu, saya memilih soto sapi dan teh hangat. Tidak lama kemudian pesanan saya datang.

Penyajian nuansa desa, piring seng dan mangkok ukuran medium. Rasa soto mantap, daging empuk.

Makanan selesai, ditutup dengan minuman teh hangat yang juga mantap pakai gelas model desa juga.

Harga standar restoran jakarta, 48rb. So, bagi yang nginap atau berada di lokasi cawang, mungkin tertarik untuk mencoba. Restoran nuansa desa dengan harga kota.

Advertisements

soto Madura Tropicana Sidoarjo

14 Apr

Pagi ini setelah mengantar anak ke 2 ujian, saya dan istri beserta anak ke 3 cari sarapan pagi. Pilihan kami jatuh ke soto Daging Madura Tropicana. Kedai soto ini langganan kami, rasanya mantap, khas kecut jeruk nipis dan gurih khas soto Daging Madura. jam 7 soto sudah ready.

Kedai soto ini berlokasi di jalan sultan agung Sidoarjo, lokasi di sebrang TK dharmawanita.

Masuk warung, langsung kami pesan soto 2 porsi. Sesuai menu yang terpampang di dinding, ada beberapa variasi pilihan daging soto.

Saya pesan soto daging campur telor dan istri pesan soto Daging saja. Proses penyiapan soto kami cukup cepat.

Tidak lama kemudian pesanan kami datang.

Khas di kedai ini, soto dan nasi di pisah. Potongan daging besar dan empuk. Rasanya gurih mantap, di tutup dengan minuman teh hangat.

Untuk harga, sesuai standar soto daging memang agak mahal ya, makan berdua + anak kecil, 70rb (sudah termasuk minum 2 gelas dan krupuk).

Bagi penggemar soto madura asli (peracik dan yang melayani asli madura), bisa mampir di kedai ini.

Java Class : File text

11 Apr

Contoh berikut adalah program java untuk menulis ke dalam file.

Kita membuat class ReadFile. Di dalamnya kita definisikan static method saveFile untuk menyimpan data array ke file text.

import java.util.Scanner;
import java.io.*;

public class ReadFile
{
  static void saveFile()
  {
    FileOutputStream out; 
    PrintStream ps; // declare a print stream object
 
    //array yang akan di tulis ke file
    String[] a = new String[10];
    for(int i=0;i<10;i++)
    {
      a[i] = "data ke-" + Integer.toString(i);
    }
 
    try {
          // Create a new file output stream
          out = new FileOutputStream("myfile.txt");

          // Connect print stream to the output stream
          ps = new PrintStream(out);
          for(int i=0;i<10;i++)
          {
            ps.println (a[i]);
          }
 
          System.out.println ("Write successfully");
          ps.close();
     }
     catch (Exception e){
     System.err.println ("Error in writing to file");
   }
 }
}

pada listing di atas, kita menggunakan library Scanner dan io, karena itu kita import 2 library tersebut. Pada bagian awal, kita deklarasikan array a sebanyak 10 elemen.

Kita menggunakan try catch untuk menangani jika ada kesalahan ketika menulis file text. Awalnya, kita mencoba membuat file text dengan FileOutputStream. Selanjutnya, kita menulis ke file text tersebut per baris. Setelah selesai, file text di tutup.

Selanjutnya, class kita tambahi method untuk membaca dari file text, dengan listing berikut

static void readFile()
 {
   try {
        Scanner scan = new Scanner(new File("myfile.txt"));
        System.out.println("hasil read.. ");
        while(scan.hasNextLine()){
          String line = scan.nextLine();
          System.out.println(line);
        }

       System.out.println ("Read successfully");
      }
   catch (Exception e){
        System.err.println ("Error in reading from file");
   }
 }

Pada listing diatas, kita menggunakan Scanner untuk membuka file. Selanjutnya, kita membaca isi file perbaris dengan menggunakan perintah scan.nextline(). Hasil pembacaan file ditampung di variabel line.

contoh hasil running dengan menggunakan blueJ tampak pada gambar berikut

 

Java Class : Example

11 Apr

Contoh kasus pemrograman, sebuah perguruan tinggi memiliki beberapa prodi. Simulasikan kasus ini dalam class dan object.

Ada 2 Class, yaitu Perguruan Tinggi dan Prodi.

Kita bisa membuat class perguruan tinggi, dengan listing berikut

public class PerguruanTinggi
 {
    private String namaPT;
    String a;

   void set_nama(String nama)
    {
       namaPT = nama;
    }

   String get_namaPT()
    {
       return namaPT;
    }
 }

Bisa kita lihat, ada variabel privat namaPT, kemudian ada method untuk set_nama dan method untuk get_nama.

Selanjutnya kita membuat class prodi, dengan listing berikut

public class Prodi
{
  private String namaProdi = "";
  private int jmlMaba = 0;
 
  void set_nama(String nama)
  {
    namaProdi = nama;
  }
 
  String get_nama()
  {
    return namaProdi;
  }
 
  void tambah_maba(int jml)
  {
     jmlMaba = jmlMaba + jml;
  }
 
  int jml_maba()
  {
    return jmlMaba;
  }
}

 

Pada class prodi diatas, ada variabel private namaProdi dan jmlMaba. Ada juga method untuk set_nama, get_nama, tambah_maba dan jml_maba.

Selanjutkan, dalam PerguruanTinggi, ada beberapa prodi. Kita bisa menggunakan array, atau variabel biasa. Dalam contoh ini, kita menyiapkan tiga instance variabel untuk prodi. Jadi, di class PerguruanTinggi kita tambahkan deklarasi prodinya yang mengacu dari class Prodi. Listing lengkap class PerguruanTinggi berubah menjadi berikut

public class PerguruanTinggi
{
  private String namaPT;
  String a;
 
  //asumsi ada 3 prodi
  Prodi p1 = new Prodi();
  Prodi p2 = new Prodi();
  Prodi p3 = new Prodi();
 
  void set_nama(String nama)
  {
    namaPT = nama;
  }
 
  String get_namaPT()
  {
    return namaPT;
  }
}

Di listing diatas, ada tambahan instance variabel p1, p2, p3.

Selanjutnya kita membuat class baru untuk melakukan pengujian. Class baru ini kita beri nama class Test. Dalam class baru, kita buatkan 1 method static. Berikut listing dari class Test

public class Test
{
  static void main()
  {
    PerguruanTinggi pt = new PerguruanTinggi();
 
    pt.set_nama("UTM");
    pt.p1.set_nama("Informatika");
    System.out.println("Prodi "+ pt.p1.get_nama() + ". JmlMaba:" + pt.p1.jml_maba());
    pt.p1.tambah_maba(12);
    System.out.println("Prodi "+ pt.p1.get_nama() + ". JmlMaba:" + pt.p1.jml_maba());
 
    pt.p2.set_nama("Hukum");
    System.out.println("Prodi "+ pt.p2.get_nama() + ". JmlMaba:" + pt.p2.jml_maba());
 
    pt.p3.set_nama("Akuntansi");
    System.out.println("Prodi "+ pt.p3.get_nama() + ". JmlMaba:" + pt.p3.jml_maba());
  }
}

Didalam static method diatas, kita deklarasi instance variabel pt yang mengacu dari class PerguruanTinggi. Kemudian kita bisa akses variabel p1, p2, p3, sesuai kebutuhan, dan bisa memanggi method dari class prodi melalui 3 variabel tersebut.

Diagram keterkaitan antar class tampak pada gambar berikut

contoh hasil running tampak pada gambar berikut

semoga bisa menambah pemahaman terhadap konsep class dan object di java.

 

mySQL Trigger

5 Apr

Berikut contoh penerapan trigger di database mysql. Dalam contoh ini, ada 2 tabel, tabel barang dan tabel barang_keluar. Tabel barang terdiri dari kolom kode_barang, nama_barang, stock. Tabel barang_keluar terdiri dari kolom id1, kode_barang, jml.

Relationship antar 2 tabel tampak pada gambar berikut

Dalam kasus ini, kita ingin membuat trigger agar memberikan batasan

  1. sebelum barang_keluar insert, cek dulu, jika stock kurang, maka batalkan insert
  2. setelah barang_keluar insert, lakukan pengurangan stock.

barang_keluar_after_insert

Kita berikan trigger dengan listing

BEGIN
update barang
set barang.stock = barang.stock – new.jml
where barang.kode_barang = new.kode_barang;
END

dari trigger di atas, setelah proses insert data selesai, kita melakukan update tabel barang, kita update stocknya menjadi stock – jml barang keluar.

Tampilan implementasi dengan menggunakan heidiSQL tampak pada gambar berikut

barang_keluar_before_insert

untuk pengecekan stock sebelum insert data, listing berikut

BEGIN
DECLARE dummy, jmlstock INT;
SELECT barang.stock INTO jmlstock FROM barang
WHERE barang.kode_barang = NEW.kode_barang;

if new.jml > jmlstock then
SIGNAL SQLSTATE ‘01000’ SET MESSAGE_TEXT = ‘Jumlah stock kurang’, MYSQL_ERRNO = 1000;
signal sqlstate ‘45000’;
end if;
END

Pada bagian awal, kita declare variabel jmlstock untuk menyimpan data jumlah stock. Data jumlah stock kita dapatkan melalui query select barang.stock sesuai dengan kode barang (New.kode_barang) yang akan diinsert. Kemudian dicek, jika jml stock lebih kecil dari jml barang yang akan keluar, kita munculkan sqlstate error untuk membatalkan insert data.

Hasil implementasi di heidiSQL tampak pada gambar berikut