Tentang shareilmu2ilmu.blogspot.com

http://shareilmu2ilmu.blogspot.com/ adalah blog tentang komputer yang di buat untuk Pembelajaran, tugas-tugas,aplikasi komputer,Coding,pemograman visual, sistem manajemen basis data

Showing posts with label tutorial. Show all posts
Showing posts with label tutorial. Show all posts

Sunday, 24 January 2016

Membuat Game Fighting 2D dalam berbagai platform dengan construct 2

Hai sobat shareilmu2ilmu, disini saya akan membuat sebuah game 2D yang tentunya sangat menarik dengan menggunakan engine yang dinamakan construct 2, pada tulisann ini tidak di tulis secara detail cara membuatnya,namun saya akan sharing tentang game ini.

1). Dikarenakan sangat lama membuatnya dan banyak cara-cara maupun langkah2 yang memakai gambar oleh sebab itu saya mempersingkatnya, silahkan buka tutorial yang ada pada link berikut : klik disini
2). Ikuti step by step yang ada pada video tutorial tersebut, kira-kira ada 6 atau 7 video, itu sudah lengkap, dan jika di ikuti dijamin aplikasi dapat berjalan dengan baik dan berfungsi secara normal.
3). No pict = HOAX, maka oleh sebab itu saya akan tampilkan bukti bahwa saya telah berhasil membuat aplikasi tersebut dan hasilnya lumayan, dan saya menambahkan beberapa efek jurus,sound,dan perubahan sedikit bahasa dan latar belakang(stage).

HALAMAN DEPAN


HALAMAN MENU PILIH CHARACTER


HALAMAN STAGE 


SKILL ( JURUS)


VERSI MOBILE (ANDROID,IOS,WINDOWS PHONE,BB OS DLL)

(NB:GUNAKAN PHONEGAP MILIK ADOBE UNTUK CONVERSI) 

Untuk versi mobile ini saya kembangkan sendiri, jadi ini bentuknya touch screen tombol arah panah untuk jalan, dan tombol yang tengah untuk menyerang.


sekian dan terimakasih sudah berkunjung :)

Monday, 29 June 2015

Membuat Domain & Hosting Wordpress offline menjadi online Part 3

Dikarenakan banyaknya pertanyaan yang mungkin tidak bisa saya balas satu persatu maka saya akan memberikan suatu postingan baru yang berkaitan dengan seputar pertanyaan dan kendala masalah teman teman dalam melakukan sebuah koneksi local menjadi online.

1)Database Tidak Konek

Banyak diantara teman teman yang mungkin mengalami masalah ini,seperti misal "Ini kok database gk konek ya?""badahal database udah di Import?" dan lain lain..gimaanaaaa nih???? :(
gni cara ceknya
  • Cek apakah database sudah di import menjadi online atau belum? dengan cara buka databasenya buka php my admin
  
 Jika database sudah di import seperti berikut tapi tetap saja muncul tulisan

Error establishing a database connection

  • langkah berikutnya yaitu cek pada wp-confignya yaitu dengan cara masuk pada file manager dan ubah wp-confignya. 
  •  Cari File wp-config.php klik kanan dan pilih edit file
  •  Sesuaikan isi wp-config.php sesuai dengan username password nama hostingan domain dll yang ada pada hostinger.
  •  Setelah itu pilih save dan anda sudah dapat online

2)Linknya kok masih ke localhost ya mas?

Ini biasanya disebabkan oleh tidak tersinkronisasinya antara database dengan web local yang kita buat dan saya akan berikan contoh pada sebelumnya di part 2. tapi untuk mempercepat maka saya akan menuliskan langkah by langkah agar lebih dapat dimengerti lagi dengan cara :
  • Masuk pada Phpmyadmin pada database anda lalu pilih wp_Options dan ganti tulisan localhost dengan web anda seperti contoh di bawah ini

  • Dengan langkah ini teman teman sudah tidak mendapatkan gambar yang tidak terupload ataupun file-file yang tidak terupload.
  • Untuk mengatasi localhost link-linknya silahkan utak-atik sendiri bagian database dan script pada phpnya.cari nama "localhost" dan ganti dengan hosting domain web anda. 

3) Bagaimana Mengedit barang yang ada?

  • Dikarenakan saya pemula dan belajar autodidak seperti ini sendiri saya hanya bisa memberikan saran editlah pada localhost dan uploadlah file dan database yang ada pada localhost
  • Gunakan searchreplacedb2.php bisa donlot disini Klik disini 
  • Masukan searchreplacedb2.php pada folder public di web domain anda.
  • buka searchreplacedb2.php dengan web anda contoh bukubarupurwokerto.zz.mu/searchreplacedb2.php
  • Tinggal Klik next sampai pada tahap ini dan isikan localhost dan website anda seperti contoh dibawah ini

  • Setelah itu klik submit dan pilih Ok. 
  • Jangan lupa hapus file seacrhreplacedb2.php


Oke sekian saja tutorial hari ini...

Wednesday, 24 June 2015

Membuat Domain & Hosting Wordpress offline menjadi online Part 2

Setelah database dibuat maka selanjutnya adalah mengupload semua file ke publik.
dengan cara dan langkah langkah seperti berikut

1)pilih menu website pilih menu import website format yang digunakan .zip atau .tar. atau .tar.gz Klik
2)Setelah semua file berhasil di uplod di publik maka langkah selanjutnya yaitu mengedit bagian wp-config.php dengan cara masuk pada file manager buka folder publik.html.
3)edit wp-config.php sesuaikan dengan yang ada pada hostingan anda mulai dari database name,username,password,dan server. yang sesuai dengan hostingan anda.
4) Setelah selesai settingan pada wp-config pilih menu Database >phpmyadmin.masuk pada phpmyadmin.
5)pilih tabel wp-options ganti siteurl ganti option value dengan website milik kita
6)Edit semua Localhost pada tabel database dan localhost pada semua php.
7)Hasil akhir.






Sunday, 12 January 2014

TUTORIAL PEMBUATAN WebKit Sederhana Pada ADT BUNDLE Android Aplikasi

1.      Buat Project baru dengan nama webkit.

2.      Pada layout main_activity desain layout seperti berikut:
3.      Tuliskan source code pada ActivityMain.java:
package com.example.webkit;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebView;

public class MainActivity extends Activity {
            WebView browser;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
       
        browser =(WebView) findViewById(R.id.webkit);
        browser.loadData("<html><body>Tulisan Pertama yang ditampilkan di web browser</body><html>","text/html","UTF-8");
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
   
}
4.      Output:


Sunday, 5 January 2014

PRAKTIKUM X:TUTORIAL PEMBUATAN Database (Part 2). PADA ADT BUNDLE APLIKASI ANDROID

1.    Buat Project Baru
2.    Desain interface baru untuk tampilan awal program
3.    Buat Layout baru dengan nama dialogview dengan tampilan seperti berikut :
4.    Buat Layout baru dengan nama editdata:
 
5.    Buat Layout baru dengan nama menu:
 6.    Buat Layout baru dengan nama viewdata:

7.    Buat class baru dengan nama Barang.java dengan sourcode:
public class Barang {
   
    private long id;
    private String nama_barang;
    private String merk_barang;
    private String harga_barang;

   
    public Barang()
    {   
       
    }
   
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
   
    public String getNama_barang() {
        return nama_barang;
    }

    public void setNama_barang(String nama_barang) {
        this.nama_barang = nama_barang;
    }
   
    public String getMerk_barang() {
        return merk_barang;
    }

    public void setMerk_barang(String merk_barang) {
        this.merk_barang = merk_barang;
    }
   
    public String getHarga_barang() {
    return harga_barang;
    }

    public void setHarga_barang(String harga_barang) {
        this.harga_barang = harga_barang;
    }

     @Override
        public String toString()
        {
            return "Barang "+ nama_barang +" "+ merk_barang + " "+harga_barang;
        }

   
}
8.    Buat class baru dengan nama CreateData.java :
package amikom.si12a.databasesi12a;

import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.os.Bundle;
import android.widget.Toast;


public class CreateData extends Activity implements OnClickListener {

    //inisilisasi elemen-elemen pada layout
    private Button buttonSubmit;
    private EditText edNama;
    private EditText edMerk;
    private EditText edHarga;
    //inisialisasi kontroller/Data Source
    private DBDataSource dataSource;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create_data);

        buttonSubmit = (Button) findViewById(R.id.buttom_submit);
        buttonSubmit.setOnClickListener(this);
        edNama = (EditText) findViewById(R.id.nama_barang);
        edHarga = (EditText) findViewById(R.id.harga_barang);
        edMerk = (EditText) findViewById(R.id.merk_barang);

        // instanstiasi kelas DBDataSource
        dataSource = new DBDataSource(this);

        //membuat sambungan baru ke database
        dataSource.open();
    }
   
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        // Inisialisasi data barang
        String nama = null;
        String merk = null;
        String harga = null;
        @SuppressWarnings("unused")

        //inisialisasi barang baru (masih kosong)
        Barang barang = null;
        if(edNama.getText()!=null && edMerk.getText()!=null && edHarga.getText()!=null)
        {
            /* jika field nama, merk, dan harga tidak kosong
             * maka masukkan ke dalam data barang*/
            nama = edNama.getText().toString();
            merk = edMerk.getText().toString();
            harga = edHarga.getText().toString();
        }

        switch(v.getId())
        {
            case R.id.buttom_submit:
                // insert data barang baru
                barang = dataSource.createBarang(nama, merk, harga);

                //konfirmasi kesuksesan
                Toast.makeText(this, "masuk Barang\n" +
                        "nama" + barang.getNama_barang() +
                        "merk" + barang.getMerk_barang() +
                        "harga" + barang.getHarga_barang(), Toast.LENGTH_LONG).show();
                break;
        }

       
    }

}
9.    Buat class baru dengan nama EditData.java:
package amikom.si12a.databasesi12a;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class EditData extends Activity implements OnClickListener {

     private DBDataSource dataSource;
   
         private long id;
         private String harga;
         private String merk;
         private String nama;

         private EditText edNama;
         private EditText edHarga;
         private EditText edMerk;

         private TextView txId;

         private Button btnSave;
         private Button btnCancel;

         private Barang barang;

         @Override
         public void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.editdata);
                   //inisialisasi variabel
               edNama = (EditText) findViewById(R.id.editText_nama);
               edHarga = (EditText) findViewById(R.id.editText_harga);
               edMerk = (EditText) findViewById(R.id.editText_merk);
               txId = (TextView) findViewById(R.id.text_id_barang);
               //buat sambungan baru ke database
               dataSource = new DBDataSource(this);
               dataSource.open();
               // ambil data barang dari extras
               Bundle bun = this.getIntent().getExtras();
               id = bun.getLong("id");
               harga = bun.getString("harga");
               merk = bun.getString("merk");
               nama = bun.getString("nama");
               //masukkan data-data barang tersebut ke field editor
               txId.append(String.valueOf(id));
               edNama.setText(nama);
               edHarga.setText(harga);
               edMerk.setText(merk);

               //set listener pada tombol
               btnSave = (Button) findViewById(R.id.button_save_update);
               btnSave.setOnClickListener(this);
               btnCancel = (Button) findViewById(R.id.button_cancel_update);
               btnCancel.setOnClickListener(this);
         }

         @Override
         public void onClick(View v) {
             // TODO Auto-generated method stub
             switch(v.getId())
             {
                             // apabila tombol save diklik (update barang)
                 case R.id.button_save_update :
                     barang = new Barang();
                     barang.setHarga_barang(edHarga.getText().toString());
                     barang.setNama_barang(edNama.getText().toString());
                     barang.setMerk_barang(edMerk.getText().toString());
                     barang.setId(id);
                     dataSource.updateBarang(barang);
                     Intent i = new Intent(this, ViewData.class);
                     startActivity(i);
                     EditData.this.finish();
                     dataSource.close();
                     break;
                             // apabila tombol cancel diklik, finish activity
                 case R.id.button_cancel_update :
                     finish();
                     dataSource.close();
                     break;
             }
         }
     }
10.    Buat class baru dengan nama Menu.java dengan source code:
package amikom.si12a.databasesi12a;

import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;

public class Menu extends Activity implements OnClickListener {

    private Button bTambah;
    private Button bLihat;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.menu);

          bTambah = (Button) findViewById(R.id.button_tambah);
          bTambah.setOnClickListener(this);
          bLihat = (Button) findViewById(R.id.button_view);
          bLihat.setOnClickListener(this);

    }
   
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId())
        {
            case R.id.button_tambah :
                Intent i = new Intent(this, CreateData.class);
                startActivity(i);
                break;
            case R.id.button_view :
                Intent i2 = new Intent(this, ViewData.class);
                startActivity(i2);
                break;

        }
       
    }

}

11.    Buat class dengan nama ViewData.java dengan source code:
package amikom.si12a.databasesi12a;

import java.util.ArrayList;

import android.app.Dialog;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class ViewData extends ListActivity implements OnItemLongClickListener {
   
    //inisialisasi kontroller
    private DBDataSource dataSource;

    //inisialisasi arraylist
    private ArrayList<Barang> values;
    private Button editBarang,deleteBarang;
   
  //menampilkan data
    @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
          setContentView(R.layout.viewdata);

          dataSource = new DBDataSource(this);
          // buka kontroller
          dataSource.open();

          // ambil semua data barang
          values = dataSource.getAllBarang();

          // masukkan data barang ke array adapter
          ArrayAdapter<Barang> adapter = new ArrayAdapter<Barang>(this,
                    android.R.layout.simple_list_item_1, values);

          // set adapter pada list
          setListAdapter(adapter);
          ListView lv = (ListView)findViewById(android.R.id.list);
          lv.setOnItemLongClickListener(this);
         
    }

    @Override
    public boolean onItemLongClick(final AdapterView<?> adapter, View v, int pos,
        final long id) {
        // TODO Auto-generated method stub
        final Dialog dialog=new Dialog(this);
        dialog.setContentView(R.layout.dialogview);
        dialog.setTitle("PIlih Aksi");
        dialog.show();
        final Barang b=(Barang) getListAdapter().getItem(pos);
        editBarang=(Button)findViewById(R.id.BTNEDIT);
        deleteBarang=(Button)findViewById(R.id.BTNHAPUS);
       
        editBarang.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                switchToEdit(b.getId());
                dialog.dismiss();
            }
        });
       
        deleteBarang.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                dataSource.deleteBarang(b.getId());
                dialog.dismiss();
                finish();
                startActivity(getIntent());
            }
        });
        return true;
    }
   
    public void switchToEdit(long id){
        Barang b=dataSource.getBarang(id);
        Intent i =new Intent(this,EditData.class);
        Bundle bun=new Bundle();
        bun.putLong("id",b.getId());
        bun.putString("nama",b.getNama_barang());
        bun.putString("harga",b.getHarga_barang());
        i.putExtras(bun);
        finale();
        startActivity(i);
    }
   
    public void finale(){
        ViewData.this.finish();
        dataSource.close();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
    }

}
12.    Edit source code pada Android manifest :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="amikom.si12a.databasesi12a"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

  <application
         android:allowBackup="true"
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
             android:name="dbandroid.Menu"
             android:label="@string/app_name" >
         </activity>
         <activity
             android:name="com.example.dbandroid.CreateData"
             android:label="@string/app_name" >
         </activity>
         <activity
             android:name="com.example.dbandroid.Menu"
             android:label="@string/app_name" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />

                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
         <activity
             android:name="com.example.dbandroid.ViewData"
             android:label="@string/app_name" >
         </activity>
      
         <activity
             android:name="com.example.dbandroid.EditData"
             android:label="@string/app_name" >
         </activity>
     </application>

</manifest>


Sunday, 29 December 2013

TUTORIAL PEMBUATAN Database(Part 1). PADA ADT BUNDLE ANDROID



  1. Buat Project Baru
  2. Desain interface baru untuk tampilan awal program
  3. Buat Layout baru dengan nama create data dengan tampilan seperti berikut :
    4.Buat Class baru pada folder src dengan nama createData,tuliskan coding seperti di bawah ini:
    package com.example.dbandroid;


    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;


    public class createData extends Activity implements OnClickListener {
    private Button Submit;
    private EditText nama,merk,harga;
    private DBDataSource datasource;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.createdata);

    Submit=(Button) findViewById(R.id.btnSubmit);
    Submit.setOnClickListener(this);
    nama=(EditText) findViewById(R.id.txtnama);
    merk=(EditText) findViewById(R.id.txtmerk);
    harga=(EditText) findViewById(R.id.txtharga);

    datasource=new DBDataSource(this);
    datasource.open();
    }
    public void onClick(View arg0){
    String nm=null;
    String mk=null;
    String hrg=null;

    Barang barang=null;

    if(nama.getText()!=null&&merk.getText()!=null && harga.getText()!=null){
    nm=nama.getText().toString();
    mk=merk.getText().toString();
    hrg=harga.getText().toString();
    }
    switch(arg0.getId())
    {
    case R.id.btnSubmit:
    barang=datasource.createBarang(nm,mk,hrg);
    Toast.makeText(this, "masuk Barang\n"+
    "nama"+barang.getNama_barang()+
    "merk"+barang.getMerk_barang()+
    "harga"+barang.getHarga_barang(),
    Toast.LENGTH_LONG).show();
    break;
    }

    }

    }
    5.Buat class baru dengan nama dbHelper,dan tuliskan coding berikut :
    package com.example.dbandroid;


    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;


    public class dbHelper extends SQLiteOpenHelper {
    public static final String TABLE_NAME="data_inventory";
    public static final String COLOUMN_ID="_id";
    public static final String COLOUMN_NAME="nama_barang";
    public static final String COLOUMN_MERK="merk_barang";
    public static final String COLOUMN_HARGA="harga_barang";
    private static final String db_name="inventory.db";
    private static final Integer db_version=1;

    private static final String db_create="create table"
    +TABLE_NAME+"("
    +COLOUMN_ID+"integer primary key autoincrement,"
    +COLOUMN_NAME+"varchar(50) not null,"
    +COLOUMN_MERK+"varchar(50) not null,"
    +COLOUMN_HARGA+"varchar(50) not null);";

    public dbHelper(Context sia){
    super(sia,db_name,null,db_version);
    }
    public void onCreate(SQLiteDatabase db){
    db.execSQL(db_create);
    }
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
    Log.w(dbHelper.class.getName(),"Upgrading database from"+
    oldVersion+"to"+newVersion+"which will destroy all old data");
    db.execSQL("Drop Table If Exists"+TABLE_NAME);
    onCreate(db);
    }
    }
    6.Buat Class baru dengan namaDBDataSource dengan coding seperti berikut:
    package com.example.dbandroid;


    import android.content.ContentValues;
    import android.content.Context;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;


    public class DBDataSource {
    private SQLiteDatabase database;
    private dbHelper dbHelper;

    private String[] allcolomns={
    dbHelper.COLOUMN_ID,
    dbHelper.COLOUMN_NAME,
    dbHelper.COLOUMN_MERK,
    dbHelper.COLOUMN_HARGA
    };

    public DBDataSource(Context c){
    dbHelper=new dbHelper(c);
    }
    public void open()throws SQLException{
    database=dbHelper.getWritableDatabase();
    }
    public void close(){
    dbHelper.close();
    }
    public Barang createBarang(String nm,String mk,String hrg){
    ContentValues values=new ContentValues();
    values.put(dbHelper.COLOUMN_NAME, nm);
    values.put(dbHelper.COLOUMN_MERK, mk);
    values.put(dbHelper.COLOUMN_HARGA, hrg);

    long insertId=database.insert(dbHelper.TABLE_NAME,null, values);
    Cursor cursor=database.query(distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit, cancellationSignal)
    }
    }



Saturday, 19 October 2013

TUTORIAL MEMBUAT TULISAN BERWARNA PADA ADT ANDROIDS APPS



1.Buat new android app,tuliskan app name

2.Pilih tempat penyimpanan untuk android app yang akan anda buat.

3.Pilih warna untuk logo dan gambar untuk logo.

4.Pada activity pilih fullscreen activity agar desain lebih menarik.

5.Pada activity name isikan project yang akan anda buat.

6.Drag And Drop Tulisan di textfield menu untuk menambah text baru pada form.dan Klik pada kotak tersebut untuk mengedit text

7.Untuk Mengubah warna masuk ke layout pada bagian activity, edit:

"Background Color #?????","??????" adalah coding untuk warna pada xml.
"Text Color #???????" untuk mengubah warna text.
Beberapa contoh warna:
#FOF8FF
Aliceblue
#FAEBD7
Antiquewhite
#00FFFF
Aqua
#7FFFD4
Aquamarine
#F0FFFF
Azure
#F5F5DC
Beige
#FFE4C4
Bisque
#000000
Black
#FFEBCD
Blanchedalmond
#0000FF
Blue
#8A2BE2
Blueviolet
#A52A2A
Brown
#DEB887
Burlywood
#5F9EAD
Cadetblue
#7FFF00
Chartreuse
#D2691E
Chocolate
#FF7F50
 Atau dapat menggunakan menu res pilih values,pilih string xml,pilih add,pilih new elemen isikan nama dan valuesnya


8.Dan tahap akhir adalah jalankan Virtual emulator yang ada pada ADT tersebut,dan ini hasilnya.