Showing posts with label pemrograman. Show all posts
Showing posts with label pemrograman. Show all posts

Monday, 9 January 2017

Cara Mendaftar Google reCaptcha dan Contohnya


Captcha ini mulai banyak digunakan untuk mengantisapasi spaming dan bot yang dibuat untuk membuat website kita servernya down. Google sendiri sudah menyediakan api reCaptcha untuk para developer. Sebagai pengenalan disini saya akan share tentang cara mendapatkan api reCaptcha dari google.

Baca Juga: Cara menampilkan google map pada website

1. Masuk ke https://www.google.com/recaptcha/intro/
Google reCaptcha Website
Sumber : Screenshoot Google recaptcha
2. Selanjutnya pada halamat tersebut sobat klik Get reCaptcha. Sebelumnya pastika sobat sudah login ke akun gmail sobat.
Google reCaptcha
Sumber : Google reCaptcha Website
Silahkan isi labelnya sesuai keinginan sobat terus untuk domains bisa sobat daftarkan beberapa domain dan untuk kita yang sedang mendevelop silahkan tambahkan domainnya localhost.

3. Selanjutnya sobat akan diberi site key sama secret key yang fungsinya untuk mengaktifkan api pada captcha web sobat.
google captcha
Sumber : Google reCaptcha Website
Sampai disini sobat sudah berhasil mendapatkan akses Google reCaptcha untuk website yang sobat build

Selanjutnya saya akan coba menampilkan captcha tersebut pada form yang saya buat untuk mencobanya dahulu, nanti akan saya coba buat menggunakan codeigniter. Jadi bagi sobat yang sobat penasaran pantau terus blog ini untuk mendapatkan update.

Tampilannya seperti gambar di bawah ini:
contoh reCaptcha
Sintaks yang saya buat bisa sobat lihat dibawah ini:
<!DOCTYPE html>
<html>
<head>
<title>Captcha</title>
<!-- Compiled and minified CSS -->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/css/materialize.min.css">
  <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
  <!-- Compiled and minified JavaScript -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/js/materialize.min.js"></script>
  <script src="https://www.google.com/recaptcha/api.js"></script>
</head>
<body>
<div class="container">
<div class="card-panel">
<div class="card-content">
<div class="center">
<h5 class="blue-text">Register</h5>
</div>
<div class="row">
   <div class="input-field col s6 m6 offset-m3">
     <input id="username" type="text" class="validate" name="username">
     <label for="username">Username</label>
   </div>
</div>
<div class="row">
   <div class="input-field col s6 m6 offset-m3">
     <input id="email" type="email" class="validate" name="email">
     <label for="email">Email</label>
   </div>
</div>
<div class="row">
   <div class="input-field col s6 m6 offset-m3">
     <input id="password" type="email" class="validate" name="password">
     <label for="password">Password</label>
   </div>
</div>
<div class="row">
<div class="col s6 offset-s3">
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
</div>
</div>
<div class="row">
<div class="col s12">
<div class="center">
<button type="submit" class="btn">Submit</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

Kurang lebih seperti itu yah sobat kalau pakai HTML biasa, nantinya kalau memakai server side (PHP) beda lagi kasusnya, saat ini saya baru bisa bahas tentang cara mendaptkan api-nya.

Sekian sobat jika ada yang belum dimengerti silahkan tambahkan keluhan dikolom komentar atau mention langsung di twitter.

Thursday, 5 January 2017

CodeIgniter : XSS Clean dan Penerapannya

XSS merupakan kependekan dari cross site scripting.  XSS memiliki arti suatu jenis serangan yang memanfaatkan injeksi code (code injection attack). XSS ini dimanfaatkan oleh penyerang (attacker) dengan memasukkan kode HTML  atau script ke suatu situs. Akibat serangan ini si penyerang dapat mem-bypass keamanan dari sisi klien, mencuri data yang sensitif atau merusak sistem yang diserang.

XSS memiliki 2 tipe antara lain

  • Reflected atau nonpersistent merupakan tipe XSS yang paling umum dan yang paling mudah dilakukan oleh penyerang. Penyerang menggunakan social engineering agar tautan dengan kode berbahaya ini diklik oleh pengguna. Dengan cara ini penyerang bisa mendapatkan cookie pengguna yang bisa digunakan selanjutnya untuk membajak session pengguna. Mekanisme pertahanan menghadapi serangan ini adalah dengan melakukan validasi input sebelum menampilkan data apapun yang di-generate oleh pengguna. Jangan percayai apapun data yang dikirim oleh pengguna.
  • Stored atau persistent lebih jarang ditemui dan dampak serangannya lebih besar. Sebuah serangan stored XSS dapat berakibat pada seluruh pengguna. Stored XSS terjadi saat pengguna diizinkan untuk memasukkan data yang akan ditampilkan kembali. Contohnya adalah pada message board, buku tamu, dll. Penyerang memasukkan kode HTML atau client script code lainnya pada posting mereka.
Sumber Informsi : XSS Wikipedia

Ok, mungkin itu pengertian dari XSS yang perlu kita ketahui sebelum menerapkannya pada aplikasi yang kita buat. Pada kesempatan kali ini saya akan share penerapannya pada framework CodeIgniter. Untuk lebih jelas baca disini dokumentasi security codeigniter.

1. Sekarang kita coba terapkan, silahkan sobat siapkan file codeigniter dan buat controller dengan nama Form.php dan buat kodenya seperti di bawah ini:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Form extends CI_Controller {

public function __construct()
{
parent::__construct();
}

public function index()
{
$this->load->view('View');
}

public function form_submit(){
//data yang akan di kirim ke view tanpa xss
$data['tanpa_xss'] = array(
'username' =>$this->input->post('username'),
'email' =>$this->input->post('email')
);
//data yang dikirim dengan xss
$data['xss_data'] = $this->security->xss_clean($data['tanpa_xss']);

$this->load->view('View_result', $data);
}

}

/* End of file Form.php */
/* Location: ./application/controllers/Form.php */

Sebelum menggunakan security dari CodeIgniter ingat tambahkan library security di autoload['helper'].
Konfigurasi security di autoload CodeIgniter
Setting security CodeIgniter
2. Sekarang kita buat form dengan nama View.php codenya seperti di bawah ini:
<!DOCTYPE html>
<html>
<head>
<title>XSS Test</title>
<!-- Compiled and minified CSS -->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/css/materialize.min.css">
  <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
  <!-- Compiled and minified JavaScript -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/js/materialize.min.js"></script>

</head>
<body>
<div class="container">
<div class="card">
<div class="card-panel">
<center style="margin-top: 50px">
<h5 class="blue-text">XSS CodeIgniter</h5>
</center>
<?php echo form_open('Form/form_submit'); ?>
<div class="row">
   <div class="input-field col s6 m6 offset-m3 offset-s3">
   <input id="first_name2" type="text" class="validate" name="username">
   <label for="first_name2">Username</label>
   </div>
  </div>
  <div class="row">
   <div class="input-field col s6 m6 offset-m3 offset-s3">
   <input id="first_name2" type="email" class="validate" name="email">
   <label for="first_name2">Email</label>
   </div>
  </div>
  <div class="col s3 m12 center">
  <button type="submit" class="btn ">Submit</button>
  </div>
<?php echo form_close(); ?>
</div>
</div>
</div>
</body>
</html>

3. Setelah selesai buat form kita buat view lagi satu untuk menampilkan result dengan nama View_result.php codenya seperti dibawah ini.
<!DOCTYPE html>
<html>
<head>
<title>View Result</title>
<!-- Compiled and minified CSS -->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.8/css/materialize.min.css">
</head>
<body>
<div class="container">
<div class="card">
<div class="card-panel">
<center>
<h5 class="red-text">Tanpa XSS</h5>
Username : <?php echo $tanpa_xss['username'];?></br>
Email : <?php echo $tanpa_xss['email'];?>
</center>
</div>
</div>
<div class="card">
<div class="card-panel">
<center>
<h5 class="red-text">Dengan XSS</h5>
Username : <?php echo $xss_data['username'];?></br>
Email : <?php echo $xss_data['email'];?>
</center>
</div>
</div>
</div>
</body>
</html>

4. Sekarang kita uji coba formnya isi fieldnya dengan script.
Form uji coba XSS Clean
form test xss
 5. Result dari form yang telah di submit.
Result uji coba xss CodeIgniter
Result form dengan dan tanpa XSS
Bisa sobat lihat, tag script langsung dirumah menjadi removed. Itu menandakan XSS Clean CodeIgniter sudah jalan.

Selain dengan cara di atas, CodeIgniter sudah memiliki fitur auto untuk filtering XSS dengan cara menambahkan TRUE pada input postnya.
$this->input->post('username', TRUE);

Sekian mungkin yang bisa saya sharing, semoga bisa membantu untuk keperluan keamanan menggunakan framework CodeIgniter. Jika ada yang belum dimengerti silahkan tuliskan masalah di komentar atau langsung hubungi saya di social media. 

Baca artikel lainnya tentang CodeIgniter:



  1. CodeIgniter : Insert data dengan Ajax
  2. CodeIgniter : Menampilkan data dari database dan tutorialnya
  3. CodeIgniter : Tutorial Edit dan Hapus
  4. Thursday, 1 December 2016

    Android Studio: Cara Membuat Tabs


    Selamat pagi semua, pada kali ini balidev akan share tentang cara membuat tabs pada aplikasi android menggunakan Android Studio.
    Sebelum lebih lanjut mengenai pembuatan tabs, kalian sudah harus paham mengenai pembuatan fragment dan bagaimana fragment itu bekerja.
    1# Buka android studio dan buatlah Empty Activity.
    2# Buat 3 buah fragment masing-masing seperti di bawah ini:
    buat file baru pada res->layout->dengan nama tabmenu.xml
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    /**
    * Created by ManInBack on 11/30/2016.
    */
    public class tab1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.tabmenu,container,false);

    return v;

    }

    }
    Selanjutnya buat tab1.java yang akan memakai layout diatas
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    /**
    * Created by ManInBack on 11/30/2016.
    */

    public class tab1 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.tabmenu,container,false);

    return v;

    }

    }
    masuk lagi ke layout buat file baru dengan nama tabmenu2.xml
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
    android:text="Tab 2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:id="@+id/textView"
    android:textSize="24sp" />
    </RelativeLayout>
    Selanjutnya buat tab2.java yang akan menggunakan layout tabmenu2
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;

    /**
    * Created by ManInBack on 12/2/2016.
    */

    public class tab2 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.tabmenu2,container,false);

    return v;

    }
    }
    sekarang kita akan buat layout yang terakhir dengan nama tabmenu3.xml
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
    android:text="Tab 3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:id="@+id/textView2"
    android:textSize="24sp" />
    </RelativeLayout>
    Buat lagi tab3.java
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;

    /**
    * Created by ManInBack on 12/2/2016.
    */

    public class tab3 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.tabmenu3,container,false);

    return v;

    }

    }

    Kita sudah membuat 3 buah fragment, sebelum lanjut saya melakukan pemilihan warna terlebih dahulu agar kelihatan lebih bagus tabsnya. Kalian bisa mengikuti silahkan masuk ke res->values->colors
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <color name="colorPrimary">#3498db</color>
    <color name="colorPrimaryDark">#2980b9</color>
    <color name="colorAccent">#FF4081</color>
    <color name="backgroundTab">#ecf0f1</color>
    <color name="tabIndicators">#3498db</color>
    </resources>

    Selanjutnya kita akan buat PagerAdapter yang berfungsi mengatur fragment-fragment yang sudah kita buat diatas. Buatlah dengan nama PagerAdapter.java dan berikut sintaksnya.
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentStatePagerAdapter;

    /**
    * Created by ManInBack on 11/30/2016.
    */

    public class PagerAdapter extends FragmentStatePagerAdapter {
    int mNumOfTabs;

    public PagerAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
    }

    @Override
    public Fragment getItem(int position) {

    switch (position) {
    case 0:
    tab1 tab1 = new tab1();
    return tab1;
    case 1:
    tab2 tab2 = new tab2();
    return tab2;
    case 2:
    tab3 tab3 = new tab3();
    return tab3;
    default:
    return null;
    }
    }

    @Override
    public int getCount() {
    return mNumOfTabs;
    }
    }

    Sekarang kita akan masuk ke activity_main.xml untuk pembuatan tabsnya, pastikan kalian sudah menambahkan library android design. Caranya masuk ke build.gradle pada dependencies-nya tambahkan compile "com.android.support:design:23.4.0"

    Masuk ke activity_main.xml, kita akan buat layoutnya, untuk konfigurasi saya sintaksnya seperti dibawah ini, silahkan sesuaikan dengan punya kalian jangan di copas.
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.maninback.tab.MainActivity">

    <android.support.design.widget.TabLayout
    android:id="@+id/tablayout"
    android:clickable="true"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:background="@color/backgroundTab"
    app:tabIndicatorColor="@color/tabIndicators">

    <android.support.design.widget.TabItem
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="@string/tab1"/>
    <android.support.design.widget.TabItem
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="@string/tab2"/>
    <android.support.design.widget.TabItem
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="@string/tab3"/>

    </android.support.design.widget.TabLayout>
    <android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_below="@id/tablayout"/>

    </RelativeLayout>

    Selanjutnya pada MainActivity.java buat sintaksnya seperti di bawah ini:
    import android.support.design.widget.TabLayout;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;


    public class MainActivity extends AppCompatActivity {
    private TabLayout tabLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tabLayout = (TabLayout) findViewById(R.id.tablayout);
    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    final PagerAdapter adapter = new PagerAdapter
    (getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
    viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
    });
    }

    }

    Sampai disini coba kalian run projectnya semoga tidak ada error, di handphone saya bekerja dengan bagus di bawah ini Screenshootnya:
     Cara membuat tabs di android studioCara membuat tabs di android studio

    Sekian tutorialnya, bagi kalian yang ingin belajar yang dasar silahkan klik menu pemograman pada blog ini, sebelumnya saya sudah share yang dasar-dasar untuk pembuatan aplikasi android.

    Baca juga artikel lainnya:

    1. Android Studio : Menampilkan website atau blog kalian di aplikasi android buatan sendiri
    2. Android Studio : Membuat Navbar Drawer dan Fragment
    3. Android Studio: Membuat Form Login Sederhana dan Tutorialnya
    4. Androdi Studio : Cara Membuat Aplikasi SMS yang simple

    Monday, 28 November 2016

    CodeIgniter : Tutorial Edit dan Hapus

    Selamat pagi, karena masih banyak pertanyaan seputar codeigniter yaitu tentang pembuatan edit dan hapus record di database. Pada kesempatan kali ini saya akan share bagaimana cara membuatnya.
    Silahkan kalian siapkan file codeigniternya dan jangan lupa copykan ke folder htdocs. Pada tutorial ini, untuk tampilannya saya menggunkan framework material design, ini optional terserah kalian bisa juga menggunkan bootstrap atau buat sendiri.

    1# Langkah pertama buatlah sebuah database dengan nama yang bebas dan sebuah tabel bernama mahasiswa, strukturnya seperti gambar di bawah ini.
    Struktur Tabel Mahasiswa
    Struktur Tabel Mahasiswa
    2# Silahkan kalian konfigurasi CodeIgniternya, saya anggap kalian sudah bisa konfigurasi.
    3# Jika sudah selesai konfigurasi CodeIgniternya, pastikan sudah mau jalan dan sekarang buatlah Controller dengan nama mahasiswa.php, Model dengan nama model_mahasiswa.php dan view dengan nama view_mahasiswa.php

    4# Pada tahap ini, silahkan masukkan data dummy ke dalam tabel mahasiswa pada database. Silahkan masukkan 1 sampa 5 data yang akan kita tampilkan kedalam tabel di view.

    5# Pada function index di controller mahasiswa.php masukkan sintak seperti ini:
    public function index()
    {
    $data['daftar_mahasiswa'] = $this->model_mahasiswa->tampil_data();
    $this->load->view('view_mahasiswa', $data);
    }
    Variabel data berfungsi menampung nilai yang dikirim dari model, dengan begitu kita harus membuat function tampil_data() pada model.
    public function tampil_data(){
    $this->db->select('*');
    $this->db->from('mahasiswa');
    $query = $this->db->get();
    if($query->num_rows()>0){
    return $query->result();
    }
    }

    Langkah selanjutnya kalian buat table pada view_mahasiswa.php untuk menampilkan data tersebut.
    Sintaks saya seperti di bawah ini, perhatikan pada bagian foreachnya, karena jika kalian menggunakan css yang berbeda kalian hanya perlu meniru pada bagian foreach.

    <table>
    <thead>
    <tr>
    <th data-field="name">NIM</th>
    <th data-field="price">Nama </th>
    <th data-field="price">Kelas</th>
    <th data-field="price">Semester</th>
    <th data-field="price">Edit</th>
    <th data-field="price">Hapus</th>
    </tr>
    </thead>
    <tbody>
    <?php foreach ($daftar_mahasiswa as $mahasiswa){
    $nim = $mahasiswa->nim;
    $nama = $mahasiswa->nama;
    $kelas = $mahasiswa->kelas;
    $semester = $mahasiswa->semester;
    echo "<tr>";
    echo "<td>$nim</td>";
    echo "<td>$nama</td>";
    echo "<td>$kelas</td>";
    echo "<td>$semester</td>";?>
    <td><?php echo anchor('mahasiswa/edit_mahasiswa?id='.$nim, '<i class="small material-icons">edit</i>');?></td>
    <td> <?php echo anchor('mahasiswa/hapus_mahasiswa?id='.$nim, '<i class="small material-icons">delete</i>' );?></td>
    <?php
    echo "</tr>";
    }?>
    </tbody>
    </table>
    Sampai disini kalian sudah berhasil menampilkan data ke view, kalau tampilan punya saya jadi seperti ini:
    Tutorial membuat edit dan hapus
    view_mahasiswa.php

    6# Pada langkah ini saya akan tuliskan terlebih dahulu cara membuat hapus datanya, pada sintaks table diatas, kita sudah membuat 2 anchor yang berfungsi memparse nilai ke controller, untuk membuat hapus ini kita memerlukan function hapus_mahasiswa di controller mahasiswa.php dan hapus_mahasiswa di model_mahasiswa.php.
    function hapus_mahasiswa di mahasiswa.php
    public function hapus_mahasiswa(){
    $nim = $this->input->get('id');
    $result = $this->model_mahasiswa->hapus_mahasiswa($nim);
    if($result == true){
    echo '<script type="text/javascript">alert("Hapus Berhasil!!!")</script>';
    redirect(site_url(), 'refresh');
    }else{
    echo '<script type="text/javascript">alert("Hapus Gagal!!!")</script>';
    redirect(site_url(), 'refresh');
    }
    }
    function hapus_mahasiswa di model_mahasiswa.php.
    public function hapus_mahasiswa($nim){
    $data=array(
    'nim' => $nim
    );
    $this->db->delete('mahasiswa', $data);
    if($this->db->affected_rows()>0){
    return true;
    }
    else{
    return false;
    }
    }
    Sekarang kalian run codenya coba hapusnya berhasil atau tidak.
    Hapus Data Tutorial
    hapus codeigniter
    7# Karena hapusnya sudah berhasil sekarang kita akan membuat editnya, untuk membuat edit ini kalian memerlukan sebuah view yang berisi form. Pada tutorial ini saya ingin di form tersebut langsung berisi data yang akan di edit, maka dari itu buat terlebih dahulu function edit_mahasiswa() di controller mahasiswa.php sintaksnya seperti di bawah ini:

    public function edit_mahasiswa(){
    $nim = $this->input->get('id');
    $result ['data_edit']= $this->model_mahasiswa->get_data_edit($nim);
    $this->load->view('view_edit_form', $result);
    }
    Selanjutnya kita function get_data_edit buat di model_mahasiswa.php ini berfungsi mengambil data berdasarkan nimnya.
    public function get_data_edit($nim){
    $this->db->select('*');
    $this->db->from('mahasiswa');
      $this->db->where('nim', $nim);
    $query = $this->db->get();
    if($query->num_rows()>0){
    return $query->result();
    }
    }
    Sekarang buat view baru untuk formnya dengan nama view_edit_form.php sintaksnya seperti di bawah ini.
    <?php foreach($data_edit as $edit){
    $nim = $edit->nim;
    $nama = $edit->nama;
    $kelas = $edit->kelas;
    $semester = $edit->semester;
    }?>

    <div class="container">
    <div class="row">
    <div class="card teal-text">
    <?php echo form_open('mahasiswa/proses_edit_mahasiswa');?>
    <div class="card-content">
    <div class="row">
    <div class="col s6 offset-s3">
    <div class="row">
    <div class="input-field col s12">
    <input id="icon_prefix" type="text" class="validate" value="<?php echo $nim;?>" readonly name="nim">
    <label for="icon_prefix">NIM</label>
    </div>
    <div class="input-field col s12">
    <input id="icon_prefix" type="text" class="validate" value="<?php echo $nama;?>" name = "nama">
    <label for="icon_prefix">Nama</label>
    </div>
    <div class="input-field col s12">
    <input id="icon_prefix" type="text" class="validate" value="<?php echo $kelas;?>" name="kelas">
    <label for="icon_prefix">Kelas</label>
    </div>
    <div class="input-field col s12">
    <input id="icon_prefix" type="text" class="validate" value="<?php echo $semester;?>" name="semester">
    <label for="icon_prefix">Semester</label>
    </div>
    <div class="center">
    <button class="btn waves-effect waves-light" type="submit" name="action">Update
    </button>
    </div>
    </div>
    </div>
    </div>
    <?php echo form_close();?>
    </div>
    </div>
    </div>

    Jika di run, maka tampilannya akan seperti di bawah ini.
    Hapus codeigniter
    Hapus Codeigniter
    Sekarang, kita akan membuat funtion untuk menangkap nilai yang telah edit, kemudian akan kita update ke database.

    8# Buat function proses_edit_mahasiswa() pada controller mahasiswa.php sintaksnya mirip sama proses insert data.
    public function proses_edit_mahasiswa(){
    $nim = $this->input->post('nim');
    $data_edit= array(
    'nama' => $this->input->post('nama'),
    'kelas' => $this->input->post('kelas'),
    'semester' => $this->input->post('semester'));
    $result = $this->model_mahasiswa->proses_edit_mahasiswa($nim, $data_edit);
    if($result == true){
    echo '<script type="text/javascript">alert("Edit Berhasil!!!")</script>';
    redirect(site_url(), 'refresh');
    }
    else{
    echo '<script type="text/javascript">alert("Edit Gagal!!!")</script>';
    redirect(site_url(), 'refresh');
    }
    }
    Selanjutnya kita buat function di model untuk update data mahasiswa dengan nama function proses_edit_mahasiswa() sintaksnya:

    public function proses_edit_mahasiswa($nim, $data){
    $this->db->update('mahasiswa', $data, 'nim = '.$nim);
    if($this->db->affected_rows()==1){
    return true;
    }
    else{
    return false;
    }
    Sampai disini editnya sudah berhasil, silahkan kalian run programnya.

    Sekian tutorialnya semoga bermanfaat, jika ada kesalahan silahkan tinggalkan komentar di bawah karena tutorialnya terlalu panjang mungkin banyak ada kesalahan
    Ala Bisa Karena Biasa
    Baca juga artikel tentang codeigniter lainnya:

    1. CodeIgniter : Upload Image dan Cara membuatnya
    2. CodeIgniter: Session dan Auntentifikasi Login
    3. Codeigniter: Insert Data ke Database dan Tutorial untuk membuatnya
    4. Belajar CodeIgniter : Cara menghilangkan index.php pada url Framework CodeIgniter 

    Wednesday, 23 November 2016

    Android Studio: Membuat Aplikasi On Off Bluetooth dan cara membuatnya

    Selamat pagi semua, lama sudah tidak share tentang pemograman. Mohon maaf yang kirim pesan lewat facebook tidak bisa dibalas. Karena saya sibuk di dunia nyata, asli sibuk banget.

    Pada kali ini saya akan share tentang cara membuat aplikasi on off bluetooth menggunakan switch, silahkan perhatikan baik-baik tutorialnya. Sebelum tutorial ini dibuat, saya sudah mencobanya dan bekerja dengan baik.

    1# Langkah pertama, buka android studio dan buat empty project.
    2# Kita akan konfigurasi terlebih dahulu AndroidManifest, kenapa? agar aplikasi yang kita buat diberi permissions untuk mengakses modul bluetooth, tambahkan kode di bawah ini pada AndroidManifest project kalian.
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    3# Selanjutnya buat layoutnya, ini terserah kalian yang penting ada switch buttonnya.
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.maninback.bluetoothapp.MainActivity">

    <TextView
    android:text="Bluetooth"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true"
    android:layout_marginStart="12dp"
    android:layout_marginTop="14dp"
    android:id="@+id/textView"
    android:textSize="18sp" />

    <Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/btnSwitch"
    android:layout_marginEnd="16dp"
    android:layout_alignBottom="@+id/textView"
    android:layout_alignParentEnd="true" />
    </RelativeLayout>

    4# Selanjutnya, kalian reference bluetooth managernya.
    private BluetoothAdapter bluetoothAdapter;
    private Switch btnSwitch;

    5# Selanjutnya kita akan check saat aplikasi di buka bluetooth dalam keadaan on/off
    btnSwitch = (Switch)findViewById(R.id.btnSwitch);
    //reference bluetooth adapter
    bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    //check apakah bluetooth tersedia atau tidak
    if(bluetoothAdapter == null){
    Toast.makeText(this, "Device tidak suppor", Toast.LENGTH_SHORT).show();
    }
    else{
    //check jika bluetooth tersedia apakah dalam status hidup/mati saat aplikasi dibuka
    if(bluetoothAdapter.isEnabled()){
    btnSwitch.setChecked(true);
    Toast.makeText(this, "Bluetooth ON", Toast.LENGTH_SHORT).show();
    }else{
    btnSwitch.setChecked(false);
    Toast.makeText(this, "Bluetooth OFF", Toast.LENGTH_SHORT).show();
    }
    }
    6# Sekarang kita buat untuk switch listenernya, ini berfungsi mengaktifkan dan mengonaktifkan bluetooth.
    //switch listener
    btnSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(btnSwitch.isChecked()){
    //mengatur bluetooth ON
    bluetoothAdapter.enable();
    Toast.makeText(getApplicationContext(), "Bluetooth ON", Toast.LENGTH_SHORT).show();
    }else {
    //mengatur blutooth off
    bluetoothAdapter.disable();
    Toast.makeText(getApplicationContext(), "Bluetooth OFF", Toast.LENGTH_SHORT).show();
    }
    }
    });
    7# Lengkapnya pada MainActivity.java punya saya.
     import android.bluetooth.BluetoothAdapter;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.CompoundButton;
    import android.widget.Switch;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {

    private BluetoothAdapter bluetoothAdapter;
    private Switch btnSwitch;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnSwitch = (Switch)findViewById(R.id.btnSwitch);
    //reference bluetooth adapter
    bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    //check apakah bluetooth tersedia atau tidak
    if(bluetoothAdapter == null){
    Toast.makeText(this, "Device tidak suppor", Toast.LENGTH_SHORT).show();
    }
    else{
    //check jika bluetooth tersedia apakah dalam status hidup/mati saat aplikasi dibuka
    if(bluetoothAdapter.isEnabled()){
    btnSwitch.setChecked(true);
    Toast.makeText(this, "Bluetooth ON", Toast.LENGTH_SHORT).show();
    }else{
    btnSwitch.setChecked(false);
    Toast.makeText(this, "Bluetooth OFF", Toast.LENGTH_SHORT).show();
    }
    }
    //switch listener
    btnSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(btnSwitch.isChecked()){
    //mengatur bluetooth ON
    bluetoothAdapter.enable();
    Toast.makeText(getApplicationContext(), "Bluetooth ON", Toast.LENGTH_SHORT).show();
    }else {
    //mengatur blutooth off
    bluetoothAdapter.disable();
    Toast.makeText(getApplicationContext(), "Bluetooth OFF", Toast.LENGTH_SHORT).show();
    }
    }
    });
    }
    }
    Ini bukti kalau di HH saya sudah work aplikasinya yah.
    Cara membuat aplikasi bluetoothcara membuat aplikasi bluetooth



    Baca juga artikel lainnya:

    1. Androdi Studio : Cara Membuat Aplikasi SMS yang simple
    2. Android Studio : Cara Membuat Aplikasi Calling Sederhana
    3. Android Studio : Cara Membuat Custom Menu
    4. Android Studio : Firebase Notifikasi ke Aplikasi

    Wednesday, 16 November 2016

    Android Studio : Cara Membuat Custom Menu

    Selamat pagi semua, hari ini saya akan share tentang cara membuat custom menu pada aplikasi yang kita buat menggunakan android studio. Caranya mungkin agak panjang, karena susah juga menjelaskan lewat tulisan. Jadi, mohon diikuti dengan pelan-pelan saja.

    1# Silakan buat project baru pada android studio.
    2# Download icon yang akan kalian perlukan di sini, pada tutorial ini saya menggunakan icon add dan icon exit. Nantinya saat icon add di klik maka akan membuka activity baru dan saat menu exit di klik maka aplikasi akan keluar.
    3# Sekarang kita akan memasukkan icon tersebut pada project yang akan kita buat. Caranya, masuk ke res->mipmap->klik kanan show in explorer.
    penambahkan custom menu pada top bar

    4# Copy Pastekan icon ke masing-masing mipmap-hdpi, mipmap-mdpi, mipmap-xhdpi, mipmap-xxhdpi, dan mipmap-xxxhdpi.

    5# Masih di res->klik kanan pilih new-> directory buat directory baru dengan nama menu.
    6# Pada directory menu tersebut silahkan klik kanan->new->Menu resource file buat dengan nama main_menu.
    7# masuk ke mode text kita akan menambahkan icon-icon itu pada top bar. Sintaks saya seperti di bawah ini:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_add"
    android:icon="@mipmap/ic_add_white_24dp"
    android:title="Add"
    app:showAsAction="always"/>

    <item android:id="@+id/action_exit"
    android:icon="@mipmap/ic_exit_to_app_white_24dp"
    android:title="exit"
    app:showAsAction="always"/>

    <item android:id="@+id/action_settings"
    android:title="Settings"
    app:showAsAction="never"/>
    </menu>

    Penjelasnya kita menambahkan item dengan id dan iconnya berasal dari icon yang sudah kita tambahkan tadi. Ingat baik-baik id-nya karena akan kita tambahkan action nantinya.

    8# Sekarang masuk ke MainActivity.java kita akan menambahkan sintaks agar item-item itu tampil pada top bar. Silahkan tambahkan code di bawah ini pada MainActivity.java

    //menampilkan menu
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return super.onCreateOptionsMenu(menu);
    }

    Untuk melihat apakah menu yang kita buat sudah tampil atau tidak silahkan coba run projectnya di device atau di emulator
    .Membuat custom menu pada aplikasi android
    9# Langkah selanjutnya kita akan menambahkan action setiap icon di klik. Pada saat icon + di klik maka akan muncul activity baru dan icon exit maka aplikasi akan keluar. Buat empty activity dengan nama nambah.
    10# Tambahkan code dibawah ini untuk action setiap icon

    //menambahkan action pada menu item
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId() == R.id.action_add){
    Intent intent = new Intent(this, tambah.class);
    startActivity(intent);
    }
    if (item.getItemId() == R.id.action_exit){
    finish();
    }
    return super.onOptionsItemSelected(item);
    }

    Untuk full sintaks di MainActivy.java punya saya seperti di bawah ini silahkan kalian sesuaikan, hehehe

    package com.example.maninback.menuaction;

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;

    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }

    //menampilkan menu
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return super.onCreateOptionsMenu(menu);
    }
    //menambahkan action pada menu item
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId() == R.id.action_add){
    Intent intent = new Intent(this, tambah.class);
    startActivity(intent);
    }
    if (item.getItemId() == R.id.action_exit){
    finish();
    }
    return super.onOptionsItemSelected(item);
    }
    }

    Mungkin sekian tutorialnya, jika kalian merasa tutorial bermanfaat silahkan share dan like fanspage Balidev. Jika ada yang belum di mengerti silahkan tinggalkan pesan di komentar.

    Baca juga artikel lainnya:

    Tuesday, 15 November 2016

    Tipe-tipe Hash dan Enkripsi dalam pembuatan password

    Tipe-tipe enkripsi dan password
    Selamat pagi, apa kabar semua?
    Pada kesempatan ini saya akan share tentang tipe-tipe Hash dan Enkripsi dalam pembuatan sebuah password atau meta data. Dimana dalam hal ini, seorang programmer wajib mengetahui tipe-tipe hash dan enkripsi tersebut.

    ok, langsung saja kita mulai dari :
    1# MD4
    MD4 Message-Digest Algorithm merupakan sebuah kriftografik dari hasil enkripsi yang dikembangkan oleh Ronald Rivest pada tahun 1990.
    Panjang(length) yang dimuat dalam MD4 adalah 16 byte setara dengan 32 hexadecimal (karakter)
    Berikut contoh enkripsi yang dihasilkan jika kita menggunakan string yang kosong
    MD4("") = 31d6cfe0d16ae931b73c59d7e0c089c0

    2# MD5
    MD5 Messages-Disgest Algorithm 5 merupakan fungsi enkripsi kriftografik yang di disain oleh Ronald Rivest pada tahun 1991. Digunakan secara luas karena menghasilkan hash value 128bit. Selain itu, MD5 juga sering digunakan untuk menguji integritas seuatu berkas. Kalian pasti pernah kan download file yang besar terus dikasi MD5 kemudian saat download selesai disuruh mencocokkan MD5nya. Itu bertujuan agar file yang di download dipastikan tidak korup kalau MD5nya sama.
    Berikut contoh enkripsi yang dihasilkan jika kita menggunakan string yang kosong
    MD5("") = d41d8cd98f00b204e9800998ecf8427e

    3# MD5 ($pass, $salt)
    Masih sama dengan MD5 dimana hasil enkrpsi akan diturunkan lagi dan di acak oleh salt.  Metode ini merupakan lawan dari MD5($salt, $pass).

    4# MD5(MD5($pass).$salt)
    Yang ini terlihat agak sulit, iya memang begitu. Hasil enkripsi dari MD5 kemudian di salt lagi habis itu di MD5 lagi. Hasil enkripsi yang dihasilkanpun lebih konpleks dan sulit diterjemahkan oleh hacker.

    5# SHA-1
    Secure Hash Algorithm 1 merupakan enkripsi kriftografik yang di disain oleh United State National Security Agency dan U.S. Federal Information Processing Standard yang di publiskan oleh United States NIST. SHA-1 mengahsilkan hash value (nilai enkripsi) 160-bit (20byte). Khas dari nilai SHA-1 biasanya di render menjadi nilai hexadecimal, panjang mencapai 40 digits.
    SHA-1("") = da39a3ee5e6b4b0d3255bfef95601890afd80709

    Masih banyak lagi type enkripsi yang lain, namun hanya merupakan pengembangan dari semua yang di atas tersebut. Yang diatas merupakan enkripsi yang sering kita gunakan saat mengamankan file atau data saat membuat program. Jika kalian ingin baca lebih lengkap silakan search sendiri di Wikipedia.

    Jangan lupa, baca artikel lainnya:

    1. Tutorial Basic CRUD dengan Framework PHP CodeIgniter
    2. Tutorial Basic CRUD dengan Framework PHP CodeIgniter
    3. Android Studio : Mengganti Icon Menu item pada Navbar Drawer
    4. Android Studio : Menampilkan website atau blog kalian di aplikasi android buatan sendiri

    Sunday, 13 November 2016

    Android Studio : Firebase Notifikasi ke Aplikasi

    Selamat pagi semua, pada kali ini saya akan share tentang salah satu fitur firebase yaitu firebase notification. Bagi kalian yang belum tahu apa itu Firebase silakan baca disini. Fitur ini sangat berguna buat kita yang ingin memberi notikasi ke semua user aplikasi yang kita buat maupun aplikasi yang kita buat itu memerlukan notifikasi anta user.

    Pada tutorial ini, saya hanya share penggunaan firebase notification untuk first time atau hanya untuk perkenalan saja. Langkah-langkahnya sebagai berikut:

    Pada tutorial ini, saya menggunakan android studio v. 2.2.2 dimana tools firebasenya sudah include dalam aplikasi.
    1# Silakan buka android studio, pilih template empty/blank activity. Beri nama aplikasi karena ini akan menjadi nama project firebase nantinya. Pada tutorial ini saya menggunakan nama aplikasi "Firebase"

    2# Login akun gmail kalian di android studio agar bisa akses website firebase dengan akun yang di masukkan di android studio.

    3# Jika login sudah berhasil, pada menu android studio klik tools->firebase, tampilannya akan seperti ini.
    Langkah-langkah menggunakan fitur firebase notifications

    pada bagian samping sudah ditampilkan fitur-fitur apa saja yang disediakan oleh firebase. Silakan klik fitur Notifications. Maka akan muncul seperti di bawah ini
    Langkah-langkah menggunakan fitur firebase notifications

    ikuti step 1 sampai 3, pertama koneksikan firebase ke app kemudian klik Add Notifications to your app.

    4# sampai disini kalian sudah berhasil menambahkan firebase ke aplikasi kalian. Untuk memastikan lagi silakan cek AndroidManifest apakah sudah ada permissions internetnya. Jika sudah silakan kalian run aplikasinya di emulator atau di gadget langsung.

    5# Langkah selanjutnya kita akan kirim notifikasi ke aplikasi dari web firebase. Silakan masuk ke web console firebase bisa Klik disini, silakan login dengan akun gmail yang sama dengan yang di Android Studio.

    6# Jika berhasil login, maka nama project kalian akan tampil di web console firebase.
    Langkah-langkah menggunakan fitur firebase notifications

    7# silakan klik project yang di web console maka tampilannya akan seperti di bawah ini.
    Langkah-langkah menggunakan fitur firebase notifications

    8# Setelah itu, maka akan masuk ke panel notifikasi. Silakan kalian isi pesan, label kemudian target aplikasi yang akan kalian kirimkan notifikasi.

    Jika notifikasi tidak masuk, silakan kalian check kembali mungkin masih ada yang salah. Tutorial di atas saya buat berdasarkan apa yang sudah saya buat dan itu work 100%. Bagi kalian yang menggunakan Android Studio yang lama silakan tambahkan manual di build.gradle defendecies firebase notifications.

    Screenshoot work di HH ane.
    Langkah-langkah menggunakan fitur firebase notifications 

    Thanks sudah berkunjung di blog ini, semoga tutorialnya bermanfaat untuk kalian semua. Jangan lupa baca juga tutorial yang lainnya. Inget like, komen dan share jika kalian merasa tutorialnya bermanfaat.

    Baca juga artikel lainnya:

    Friday, 11 November 2016

    Firebase : Backend Service untuk lintas platform (Android, iOS dan WEB)

    source : https://firebase.googleblog.com/2016_08_01_archive.html
    Firebase merupakan program mobile dan web aplikasi yang berisi alat dan infrakstruktur yang di desain untuk membantu para developer membangun aplikasi yang memiliki kualitas dan nilai yang tinggi. Firebase dibangun untuk developer agar bisa membuat aplikasi yang bagus sesuai dengan kebutuhan developer itu sendiri. Firebase itu sendiri ditemukan atau mulai di kerjakan pada tahun 2011 oleh Andrew Lee dan James Tamplin. Team Firebase sekarang berada di San Francisco and Mountain View, California. Lebih akrabnya Firebase itu menyediakan backend service untuk aplikasi mobile dan web yang kita buat.

    Sejauh ini fitur apa saja yang disediakan developer untuk melengkapi kebutuhan para developer? Kita akan bahas bersama-sama disini:
    1# Fitur Firebase Cloaud Messaging (FCM)
    Dulunya diketahui sebagai Google Cloud Messaging (GCM), FCM merupakan solusi yang di bangun untuk realtime messages (Seperti BBM, LINE, WA dll.) dan notifikasi yang mendukung lintas platform seperti aplikasi Android, iOS dan aplikasi WEB, yang mana sekarang ini dapat di gunakan secara gratis. Fitur ini sangat cocok buat kita para developer yang ingin membangun sebuah aplikasi yang berisikan realtime messages.

    2# Fitur Firebase Auth
    Firebase auth merupakan yang dapat mengautentifikasi user hanya menggunakan client-side code, dalam artian developer tidak membuat code lagi di server untuk autentifikasi. Client-side hanya di eksekusi di dalam aplikasi tidak di server. Firbase auth juga mendukung untuk Facebook, Github, Twitter dan Google. Fitur tambahan lainnya Firebase auth sudah menyediakan user manajemen yang memudahkan para developer untuk memberi akses akun user dan password yang tersedia di database.

    3# Fitur Realtime Database
    Firebase menyediakan fitur realtime dan backend as a service. Layanan tersebut memberikan API untuk developer aplikasi agar diijinkan mensikronisasikan data user yang tersimpan dalam database dari berbagai platform (Android, iOS, WEB). Logikanya kita dapat menggunakan satu database untuk banyak aplikasi dimana dalam aplikasi tersebut kita hanya perlu mendapakan API yang sama.

    4# Fitur Firebase Storage
    Firebase Storage ini menyediakan fitur Ulpoad dan Download file, menjamin keamanan file dalam berbagai kualitas jaringan internet kalian.Terus ini bisa untuk file apa saja?. Para developer dapat menyimpan photo, audio, video dan konten lainya yang sudah dihasilkan dari aplikasi.

    5# Fitur Firebase Hosting
    Firebase Hosting merupakan web hosting service yang hanya mendukung web statis yang di luncurkan pada tanggal 13 Mei 2013. File statis yang di dukung seperti HTML, CSS, JavaScript dan file lainnya yang tidak bersifat dinamis.

    Tuesday, 8 November 2016

    Android Studio: Membuat tombol on off wifi

    Selamat pagi, pada kesempatan kali ini saya akan share tentang membuat tombol switch untuk menghidupkan atau mematikan wifi. Pada blog ini saya akan membuat semua tutorial untuk mengatur bluetooth, jaringan seluler, dan yang lain. Namun, kita akan bahas satu persatu.

    Sebelum memulai tutorial, silakan kalian siapkan terlebih dahulu android studionya dan pilih blank activity.

    1# Buat layout yang berisikan 1 switch dan textview. Ubah pada bagian activity_main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.maninback.onoffwifi.MainActivity">

    <Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/switch1"
    android:layout_alignParentEnd="true"
    android:id="@+id/switch2" />

    <TextView
    android:text="Wifi"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/switch2"
    android:layout_alignParentStart="true"
    android:id="@+id/txtWifi"
    android:textSize="18sp" />
    </RelativeLayout>

    Tampilan punya saya seperti di bawah ini:
    Tampilan UI Turn ON/Off wifi

    2# Sekarang kita akan mengedit MainActivity.java untuk mendetek wifi dalam posisi on/off pada saat aplikasi di buka dan menghidupkan atau mematikan wifi pada saat switch di geser/klik.
    Berikut kodenya silakan kalian pastekan di method OnCreate,
    Untuk mengetahui wifi dalam kondisi on/off saat apilkasi di buka:
    //check wifi on/off pada saat aplikasi di buka
    if (wifiManager.isWifiEnabled()) {
    btnSwitch.setChecked(true);

    } else {
    btnSwitch.setChecked(false);
    }
    Code yang mengatur saat switch di tekan maka wifi akan hidup atau mati:
    //on atau off wifi saat switch di klik
    btnSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(isChecked){
    wifiManager.setWifiEnabled(true);
    }
    else {
    wifiManager.setWifiEnabled(false);
    }
    }
    });

    3# Selanjutnya kita tambahkan permissions di AndroidManifest

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    full codingan saya pada MainActivity.java
    package com.example.maninback.onoffwifi;

    import android.content.Context;
    import android.net.wifi.WifiManager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.CompoundButton;
    import android.widget.Switch;

    public class MainActivity extends AppCompatActivity {
    private Switch btnSwitch;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnSwitch = (Switch) findViewById(R.id.switch2);
    final WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
    //check wifi on/off pada saat aplikasi di buka
    if (wifiManager.isWifiEnabled()) {
    btnSwitch.setChecked(true);

    } else {
    btnSwitch.setChecked(false);
    }
    //on atau off wifi saat switch di klik
    btnSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(isChecked){
    wifiManager.setWifiEnabled(true);
    }
    else {
    wifiManager.setWifiEnabled(false);
    }
    }
    });
    }
    }

    Screenshoot kalau di HH saya work gan:
    Android Studio Membuat aplikasi untuk handle wifiAndroid Studio Membuat aplikasi untuk handle wifi

    Sekian tutorialnya, semoga bermanfaat jika ada kesalahan silakan mention di komentar. Jangan lupa like fanspage dan share. Thanks

    Jangan lupa, baca juga artikel lainnya:

    Saturday, 5 November 2016

    Mesosfer : Mobile Backend as a Service

    Mobile Backend as a ServicePagi semua, dalam mengembangkan sebuah aplikasi mobile yang bersifat dinamis dalam artian kita memerlukan koneksi internet dan database untuk mengatur dan memanagemen aplikasi tersebut kita memerlukan sebuah layanan khusus. Seperti apa layanan khusus tersebut? kita akan bahas bersama-sama dalam artikel ini. Bagi kalian developer aplikasi wajib membaca ini.


    Dalam mengembangkan aplikasi kita membutuhkan server (backend service) yang bisa memanagemen aplikasi agar sesuai kebutuhan dan easy to use (mudah di gunakan). Dalam artikel ini, saya akan bahas seperti apa sih layanan backend yang mudah digunakan ?

    • Dokumentasi lengkap : dalam artian memudahkan kita untuk menggunakannya, cara dan panduannya lengkap sehingga saat ada trouble kita bisa cepat mengatasinya.
    • Dukungan Komunitas: Dalam mengatasi trouble, terkadang kita tidak bisa mengatasi hanya dengan mempelajari dokumentasi saja. Jika sudah stuck (mentok), dukungan komunitas sangatlah penting karena dalam komunitas tersebut kita bisa menanyakan apa kendala yang terjadi dalam aplikasi mobile kita.
    • Kemudahan akses : Sekarang sudah jamannya internet kan gan, kemudahan akses merupakan titik terpenting dalam layanan backend service ini, agar developer bisa bekerja dimana saja. 
    • Fitur yang useful (berguna) : Seiring dengan perkembangan teknologi, layanan backend service sudah seharusnya memiliki fitur yang useful bisa mengatasi multi platform (Android, iOS, Javascript dan PHP).
    • Support IoT : Bagi kalian yang update pasti sudah akrab dengan IoT (Internet of Things), sekarang ini masih sedikit layanan backend service yang menyediakan fitur untuk IoT. Lalu kalian yang ingin membuat mobile app yang support IoT bagaimana menemukan layanan backend service yang tepat? jawabannya adalah Mesosfer.
    Kenapa harus Mesosfer?
    1# Sudah mendukung dan menyediakan layanan yang saya sebutkan di atas, jika kalian ingin mencoba langsung silakan lihat-lihat dulu di websitenya : https://mesosfer.com/
    2# Tidak seperti layanan yang lain, kalian harus membayar sebelum mencoba fiturnya, Mesosfer memberikan layanan secara gratis bagi kalian yang mencoba silakan register di https://cloud.mesosfer.com/#/register
    Free to register

    3# Kemudahan setup dan sudah terbukti banyak yang memakai, lebih dari 1.500 developer yang memakai layanannya, jadi kalian tidak usah ragu lagi.
    Easy to setup

    4#Banyak sekali fiturnya yang tidak bisa saya sebutkan semuanya, kabar gembiranya bahwa Mesosfer sudah launching di negara kita tercinta. 

    Bagaimana caranya register dan mendapat layanan gratis dari Mesosfer?
    Sebelumnya saya kasi info terlebih dahulu, bahwa ada challenge dari Mesosfer yang bisa kalian ikuti dengan merujuk ke link berikut : Mesosfer 7 days Challenge
    Silakan ikuti syaratnya dan apa itu mesosfer silakan kalian baca di artikel ini. Bila kalian bingung bisa mention di komentar atau mention official lomba di Twitter, Instagram dan Facebook.
    1#  Masuk ke webiste Mesosfer
    2# Pilih free plan dan start building.
     
    3# isikan form registrasi dan check email kalian untuk verifikasi.
    Register akun baru di Mesosfer

    4# Register selesai, sekarang kalian bisa menggunakan Mesosfer secara gratis. di bawah ini saya sudah berhasil login dan akan membuat database untuk aplikasi login.
    Database by Balidev

    Mudah bukan untuk menggunakan Mesosfer?
    Buruan bangun aplikasi kalian dan gunakan Mesosfer sebagai backend service nya. Nanti saya juga akan share tentang cara membangun aplikasi android dengan Mesosfer.