Sunday 16 June 2019

Cara Mudah Mendaftar Grab Melalui Aplikasi Driver

Mungkin ini adalah salah satu dari sekian banyak cara termudah untuk mendaftar menjadi mitra grab

Thursday 13 June 2019

Tutorial Belajar Kotlin Android : Pengenalan Kotlin





Apa itu Kotlin ?

Kotlin merupakan bahasa pemrograman yang lahir pada tahun 2011, Kotlin dikembangkan dari sebuah perusahaan bernama JetBrains. Pada acara Google I/O 2017 yang berlangsung pada bulan Mei 2017 yang lalu, Google resmi mendeklarasikan Kotlin menjadi bahasa resmi selain Java dan C++ untuk mengembangkan aplikasi android pada android studio. Kotlin di buat dengan tujuan untuk meningkatkan produktivitas sebuah perusahaan terutama buat perusahaan yang pernah menggunakan java.

Beberapa kelebihan kotlin yaitu :

1. Mudah untuk di Pelajari
Mempelajari bahasa Kotlin tidak memerlukan learning curve yang lama. Dengan kotlin sebuah project yang awalnya di tulis dengan java menjadi lebih simple.

2. Aman dari Error Null
Tidak perlu lagi frustasi dengan kemungkinan munculnya Null Pointer Exception. Compiler secara sistematis akan mendeteksi pointer yang berpotensi null.

3. Interoperable
Kotlin memiliki interoperability 100% dengan Java, jadi apapun yang bisa menggunakan Java bisa juga menggunakan Kotlin.

4. Mudah digunakan
Kotlin memiliki struktur yang ringkas dan mudah di gunakan dengan syntax autocomplite, yang membuat para developer tidak perlu menghafal semua syntax tersebut. 

Tutorial Belajar Codeigniter : Pengenalan Framework Codeigniter

Apa itu Codeigniter ?

Codeigniter adalah framework PHP dengan konsep design pattern MVC (Model View Controller). Codeigniter pertama kali dikembangkan oleh Rick Ellis. Seorang programmer yang  menjadi penemu framework CodeIgniter, beliau juga menjadi penemu dari Expression Engine (EE) yang digunakan untuk membangun CMS.
CodeIgniter menjadi sebuah framework PHP dengan model MVC (Model, View, Controller) untuk membangun website dinamis dengan menggunakan PHP yang dapat mempercepat pengembang untuk membuat sebuah aplikasi web. Selain ringan dan cepat, Keunggulan dari framework codeigniter ini ada di dukumentasi nya yang lengkap dan juga memiliki komunitas developer yang sangat banyak.
Kenapa sih kita harus memilih framework yang memiliki komunitas developer yang besar .... ? jawaban nya adalah karena itu akan membuat kita lebih mudah untuk menyelesaikan pekerjaan bila saat kita melakukan project terdapat bugs atau adanya masalah yang kita anggap sulit untuk di selesaikan dari project aplikasi yang kita buat nantinya.


Struktur Folder Codeigniter ?



Saat kita ekstrak framework codeigniter maka akan di dapat susunan folder seperti gambar di atas.

Application,
Folder inilah kita akan membangun aplikasi kita nantinya dan juga kita akan meng-custom atau untuk membuat sendiri beberapa library dan helper didalamnya beberapa file yang dibutuhkan


Application/Cache
Folder yang digunakan untuk menyimpan cache  yang mana cache ini bertujuan untuk meningkatkan kecepatan akses halaman.

Application/Config
Folder yang digunakan untuk menyimpan semua file konfigurasi. Seperti koneksi database, penggunaan library dan helper, bahkan sampai routing dari aplikasi yang digunakan.

Application/Controllers
Folder yang berfungsi untuk menyimpan file Controller yang bertujuan untuk mengatur alur proses aliran data atau fungsi yang telah dibuat didalamnya.

Application/core
Terkadang dalam beberapa kasus saat melakukan develop harus  sampai  merubah / memodifikasi class inti dari codeigniter, maka folder core inilah di fungsikan agar developer tidak sampai merubah / memodifikasi class inti dari codeigniter. Inilah salah satu fitur luar biasa yang dimiliki codeigniter.

Application/helpers
Folder yang berfungsi untuk menyimpan file helper, dimana file tersebut berisi beberapa fungsi yang dapat membantu controller.

Application/hooks
Folder ini tempat menyimpan file hook yang berguna untuk  mengubah alur dari inti atau core di CI

 Application/language
Folder ini tempat menyimpan file bahasa yang akan digunakan. Saat ingin membuat fitur multi bahasa

Application/libraries
Folder ini  tempat menyimpan file custom library, yang berguna agar developer memungkinkan untuk menggunakan kembali baris programnya tanpa harus mengetikan ulang.

 Application/logs
Folder ini tempat menyimpan file log.

Application/models
Folder ini berisi file yang berfungsi untuk menangani semua fungsi yang berhubungan dengan manipulasi database

Application/third_party
Folder ini berisi folder atau file yang berasal dari pihak ketiga, yang berfungsi untuk menambah fungsionalitas yang lebih besar pada sistem.

 Application/views
Berisi folder atau file yang berhubungan dengan tampilan website yang akan ditujukan kepada user.

System
Folder system merupakan bawaan dari codeigniter yang dimana secara default tidak dapat dirubah karena di folder system ini berisi beberapa folder dan file yang bersifat inti.

Wednesday 12 June 2019

Tutorial Belajar Android : Cara Membuat Login dan Register dengan Database SQLite di Android Studio


SQLite adalah database SQL opensource yang menyimpan data berupa file teks pada sebuah device. SQLite telah tersedia dari bawaan Sistem Operasi Android dan package utama nya adalah android.database.sqlite yang memuat class-class untuk mengelola database tersebut.

Seperti biasa langkah pertama yang kita lakukan adalah :
1. Buat project baru dengan meng klik Start a new Android Studio project.


2.  Pilih Empty Activity dan Next.


3.  Pada kolom Name isi dengan Register & Login SQLite atau boleh apa saja berdasarkan keinginan pembuat aplikasi. Pada bagian Minimum API level adalah sebagai batasan aplikasi yang akan dibuat nantinya akan berjalan dengan minimum level API (versi android) berapa. Dan setelah itu klik Finish.


4.  Buat file Class baru pada current package aplikasi kita dan pada kolom name berinama DatabaseHelper.


5.  Buat New Empty Activity pada current package aplikasi kita dan pada kolom Activity Name berinama RegisterActivity.


6.  Tambahkan Vector Asset dengan cara klik kanan drawable – New – Vector Asset


Setelah terbuka jendela Asset Studio klik icon Clip Art. Tuliskan account_circle pada kolom search dan click OK.


Pada kolom name ubah nama nya menjadi ic_account_circle dan ubah Color menjadi FFFFFF. Click Next dan Finish.


Setelah selesai, tambahkan lagi image vector dengan nama lock open di kolom search seperti langkah di atas. Jika dilihat maka susunan file xml pada drawable menjadi seperti ini.



7. Code DatabaseHelper.java

package com.example.registerloginsqlite;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME="corporate.db";
    public static final String TABLE_NAME="users";
    public static final String COL_1="id";
    public static final String COL_2="username";
    public static final String COL_3="password";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    public long addUser(String user, String password){

        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("username", user);
        contentValues.put("password", password);
        long res = db.insert(TABLE_NAME,null, contentValues);
        db.close();
        return res;
    }


    public boolean checkUser(String username, String password){

        String[] columns = { COL_1 };
        SQLiteDatabase db = getReadableDatabase();
        String selection = COL_2 + "=?" + " and " + COL_3 + "=?";
        String[] selectionArgs = { username, password};
        Cursor cursor = db.query(TABLE_NAME, columns, selection, selectionArgs,null,null,null);
        int count = cursor.getCount();
        cursor.close();
        db.close();

        if(count>0)
            return true;
        else
            return false;

    }

}

8.  Code MainActivity.java

package com.example.registerloginsqlite;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    //LOGIN ACTIVITY
    EditText mTextUsername;
    EditText mTextPassword;
    Button mButtonLogin;
    TextView mTextViewRegister;
    DatabaseHelper db;

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

        db = new DatabaseHelper(this);
        mTextUsername = (EditText)findViewById(R.id.edit_textusername);
        mTextPassword= (EditText)findViewById(R.id.edit_textpassword);
        mButtonLogin = (Button) findViewById(R.id.button_login);
        mTextViewRegister = (TextView) findViewById(R.id.text_viewregister);

        mTextViewRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent registerIntent = new Intent(MainActivity.this, RegisterActivity.class);
                startActivity(registerIntent);

            }
        });

        mButtonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String user = mTextUsername.getText().toString().trim();
                String pass = mTextPassword.getText().toString().trim();
                Boolean res = db.checkUser(user, pass);
                if(res == true){
                    Toast.makeText(MainActivity.this, "Successfully Logged in", Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(MainActivity.this, "Login Error", Toast.LENGTH_SHORT).show();
                }
            }
        });

    }
}

9. Code RegisterActivity.java

package com.example.registerloginsqlite;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class RegisterActivity extends AppCompatActivity {

    //REGISTER ACTIVITY
    DatabaseHelper db;
    EditText mTextUsername;
    EditText mTextPassword;
    EditText mTextCnfPassword;
    Button mButtonRegister;
    TextView mTextViewLogin;

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

        db = new DatabaseHelper(this);
        mTextUsername = (EditText)findViewById(R.id.edit_textusername);
        mTextPassword= (EditText)findViewById(R.id.edit_textpassword);
        mTextCnfPassword= (EditText)findViewById(R.id.edit_textcnfpassword);
        mButtonRegister = (Button) findViewById(R.id.button_register);
        mTextViewLogin= (TextView) findViewById(R.id.text_viewlogin);

        mTextViewLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent LoginIntent = new Intent(RegisterActivity.this, MainActivity.class);
                startActivity(LoginIntent);
            }
        });

        mButtonRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String user = mTextUsername.getText().toString().trim();
                String pass = mTextPassword.getText().toString().trim();
                String cnf_pass = mTextCnfPassword.getText().toString().trim();

                if(pass.equals(cnf_pass)){
                    long val = db.addUser(user, pass);

                    if(val > 0){
                        Toast.makeText(RegisterActivity.this, "You have register", Toast.LENGTH_SHORT).show();
                        Intent moveToLogin = new Intent(RegisterActivity.this, MainActivity.class);
                        startActivity(moveToLogin);
                    }else{
                        Toast.makeText(RegisterActivity.this, "Registration Error", Toast.LENGTH_SHORT).show();
                    }


                }else{
                    Toast.makeText(RegisterActivity.this, "Password is not match", Toast.LENGTH_SHORT).show();
                }

            }
        });


    }
}

10.  Selanjut nya pada bagian res – layout – activity_main.xml , tuliskan code seperti ini

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:background="#E71B62"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="50dp"
        android:layout_marginBottom="50dp"
        app:srcCompat="@drawable/ic_account_circle"/>

    <LinearLayout
        android:id="@+id/layoutInput"
        android:layout_marginTop="5dp"
        android:layout_marginRight="20dp"
        android:layout_marginLeft="20dp"
        android:orientation="vertical"
        android:layout_centerVertical="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/edit_textusername"
            android:hint="Username"
            android:singleLine="true"
            android:maxLines="1"
            android:textColorHint="@color/colorWhite"
            android:textColor="@color/colorWhite"
            android:drawableLeft="@drawable/ic_account_circle"
            android:drawablePadding="10dp"
            android:paddingBottom="20dp"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <EditText
            android:id="@+id/edit_textpassword"
            android:hint="Password"
            android:inputType="textPassword"
            android:singleLine="true"
            android:maxLines="1"
            android:textColorHint="@color/colorWhite"
            android:textColor="@color/colorWhite"
            android:drawableLeft="@drawable/ic_lock_open"
            android:drawablePadding="10dp"
            android:paddingBottom="20dp"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <Button
            android:id="@+id/button_login"
            android:text="Sign In"
            android:layout_marginTop="30dp"
            android:textAllCaps="false"
            android:textStyle="bold"
            android:textColor="@color/colorWhite"
            android:background="#B90424"
            android:layout_marginRight="20dp"
            android:layout_marginLeft="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <Button
            android:id="@+id/text_viewregister"
            android:layout_marginRight="20dp"
            android:layout_marginLeft="20dp"
            android:background="@color/colorTrans"
            android:textAllCaps="false"
            android:textColor="@color/colorWhite"
            android:layout_alignParentBottom="true"
            android:text="Register Your Account"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </RelativeLayout>

</LinearLayout>


11.  Code activity_register.xml.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#5C40EC"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".RegisterActivity">


    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="50dp"
        app:srcCompat="@drawable/ic_account_circle" />

    <LinearLayout
        android:id="@+id/layoutInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="5dp"
        android:layout_marginRight="20dp"
        android:orientation="vertical">

        <EditText
            android:id="@+id/edit_textusername"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:drawableLeft="@drawable/ic_account_circle"
            android:drawablePadding="10dp"
            android:hint="Username"
            android:maxLines="1"
            android:paddingBottom="20dp"
            android:singleLine="true"
            android:textColor="@color/colorWhite"
            android:textColorHint="@color/colorWhite" />

        <EditText
            android:id="@+id/edit_textpassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:drawableLeft="@drawable/ic_lock_open"
            android:drawablePadding="10dp"
            android:hint="New Password"
            android:inputType="textPassword"
            android:maxLines="1"
            android:paddingBottom="20dp"
            android:singleLine="true"
            android:textColor="@color/colorWhite"
            android:textColorHint="@color/colorWhite" />

        <EditText
            android:id="@+id/edit_textcnfpassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:backgroundTint="@color/colorWhite"
            android:drawableLeft="@drawable/ic_lock_open"
            android:drawablePadding="10dp"
            android:hint="Retype Password"
            android:inputType="textPassword"
            android:maxLines="1"
            android:paddingBottom="20dp"
            android:singleLine="true"
            android:textColor="@color/colorWhite"
            android:textColorHint="@color/colorWhite" />
    </LinearLayout>

    <Button
        android:id="@+id/button_register"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/layoutInput"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="20dp"
        android:background="#B90424"
        android:baselineAligned="false"
        android:text="Register"
        android:textAllCaps="false"
        android:textColor="@color/colorWhite"
        android:textStyle="bold" />


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="35dp"
            android:text="Already Registered"
            android:textColor="#eeeeee" />

        <TextView
            android:id="@+id/text_viewlogin"
            android:layout_width="wrap_content"
            android:layout_height="35dp"
            android:paddingLeft="10dp"
            android:text="LOGIN"
            android:textColor="#9E0505"
            android:textStyle="bold" />

    </LinearLayout>

</LinearLayout>

12.  Pada file colors.xml tambahkan code berikut
  <color name="colorWhite">#FFF</color>
    <color name="colorTrans">#00ffffff</color>

13.  Pada file style.xml tambahkan code berikut
 <style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    </style>

14.  Pada file androidManifest.xml  dibagian tag application , ubah android:theme menjadi
android:theme="@style/AppTheme.NoActionBar"