Pada kali ini kita akan membuat halaman login. untuk apa halaman login? seperti kita ketahui bahwa halaman login berfungsi agar pengguna melakukan otentikasi akun untuk dapat mengakes fitur lainnya dalam aplikasi. Halaman login adalah sebuah formulir yang dimana pengguna harus mengisi formulir tersebut untuk melakukan otentikasi apakah nama pengguna dan password/kata kunci yang diinput sudah benar dan terdaftar, jika sudah benar dan terdaftar maka pengguna akan diarahkan pada halaman dashboard sehingga dapat mengakses fitur lainnya.

Pada pembahasan ini diharapkan kamu sudah memahami bahasa pemrograman Java. Agar lebih mudah memahaminya. Baik mari kita praktekan sambil nyalakan musik agar lebih enjoy.

1. Buka Android Studio Anda (Disini Saya menggunakan Android Studio versi 4.1.2)

2. Create New Project

Membuat Halaman Login Android

3. Pilih Tab Phone and Tablet > Pilih Empty Activity > Klik tombol Next

Membuat Halaman Login Android


4. Kita namakan project ini KelasDigital, Untuk packagenya silakan ganti nama "anang" menjadi nama Kamu, misal com.aden.kelasdigital > klik tombol "Finish" 
Note : tunggu loading hingga selesai maka pastikan laptop atau komputer Kamu terhubung ke Internet agar loading berjalan lancar

Membuat Halaman Login Android

Jika sukses maka akan tampil seperti ini.


5. Inject dependency Retrofit, OKHTTP, dan GSON pada gradle app


Copy script berikut ke dependency:
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.2.1'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.google.code.gson:gson:2.7'



Lalu klik "Sync Now". Tunggu hingga proses selesai ya



6. Klik Menu File > New > Activity > Pilih Empty Activity

Membuat halaman login Android

7. Activity Name diganti "LoginActivity" > Klik tombol "Finish"


8. Buka activity_login.xml > Pilih tab Code




9. Replace kode berikut ini ke activity_login.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"
tools:context=".LoginActivity"
android:orientation="vertical"
android:gravity="center_vertical"
android:padding="16dp">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama Pengguna"/>

<EditText
android:id="@+id/etUserName"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password"/>

<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>

<Button
android:id="@+id/btnLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Login"/>

<ProgressBar
android:id="@+id/pb"
android:visibility="gone"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</LinearLayout>
10. Buat package baru. namakan "entity" 



11. Buat Class Login pada package entity



* Jika ingin membuat Interface tinggal klik Interface

12. Isi dengan kode berikut ini :

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Login {
@SerializedName("status")
@Expose
private Integer status;
@SerializedName("message")
@Expose
private String message;
@SerializedName("token")
@Expose
private String token;

public Integer getStatus() {
return status;
}

public void setStatus(Integer status) {
this.status = status;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public String getToken() {
return token;
}

public void setToken(String token) {
this.token = token;
}
}

13. Buat Class "Constant". Berikut isi kodenya

public class Constant {
public static final String BASE_URL = "http://192.168.43.163:8081/";
}
Note : Silakan sesuaikan IP dan PORT php spark-nya

14. Buat Class "ApiClient". Berikut isi kodenya

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class ApiClient {
public static Retrofit getClient(){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.level(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();

return new Retrofit.Builder()
.baseUrl(Constant.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();

}
}
15. Buat Interface "LoginService" 







Berikut isi kodenya :

import com.anang.kelasdigital.entity.Login;

import java.util.HashMap;

import retrofit2.http.Body;
import retrofit2.http.POST;
import retrofit2.Call;

public interface LoginService {
@POST("api/user/login")
Call<Login> login(@Body HashMap<String,Object> request);
}

16. Buat Class "SessionManager". Berikut kodenya :

import android.content.Context;
import android.content.SharedPreferences;

public class SessionManager {
public static final String MYPREFERENCES = "MyPrefs" ;
public static final String TOKEN = "TokenKey";
public static final String UUID = "uuidKey";
private SharedPreferences sharedpreferences;
private Context context;

public SessionManager(Context context) {
this.context = context;
sharedpreferences = context.getSharedPreferences(MYPREFERENCES, Context.MODE_PRIVATE);;
}

public void store(String key, String val){
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(key, val);
editor.commit();
}

public void clear(){
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.clear();
editor.commit();
}

public String get(String key, String valDefault){
return sharedpreferences.getString(key, valDefault);
}
}

Okay, Jika dilihat strukturnya maka akan seharusnya package dan class yang Kamu buat saat ini akan terlihat seperti gambar berikut :


17. Baik, sekarang kita koding bagian LoginActivity. Double click saja lalu isi kode berikut :

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.anang.kelasdigital.entity.Login;

import java.util.HashMap;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class LoginActivity extends AppCompatActivity {

private LoginService loginService;

private EditText etUserName, etPassword;
private Button btnLogin;
private ProgressBar progressBar;

private SessionManager sessionManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

//init
loginService = ApiClient.getClient().create(LoginService.class);

etUserName = findViewById(R.id.etUserName);
etPassword = findViewById(R.id.etPassword);
btnLogin = findViewById(R.id.btnLogin);
progressBar = findViewById(R.id.pb);

sessionManager = new SessionManager(LoginActivity.this);

//listener
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
progressBar.setVisibility(View.VISIBLE);
actionLogin();
}
});
}

private void actionLogin(){
HashMap<String, Object> reqBodyMap = new HashMap<>();

reqBodyMap.put("uuid", sessionManager.get(SessionManager.UUID, null));
reqBodyMap.put("user_name", etUserName.getText().toString());
reqBodyMap.put("password", etPassword.getText().toString());

Call<Login> callLogin = loginService.login(reqBodyMap);
callLogin.enqueue(new Callback<Login>() {
@Override
public void onResponse(Call<Login> call, Response<Login> response) {
progressBar.setVisibility(View.GONE);
if(response.body().getStatus() == 200){
//set session
sessionManager.store(SessionManager.TOKEN, response.body().getToken());

// starting new activity.
Intent i = new Intent(LoginActivity.this, MainActivity.class);
startActivity(i);
finish();
}else{
Toast.makeText(getApplicationContext(),response.body().getMessage(), Toast.LENGTH_SHORT).show();
}
}

@Override
public void onFailure(Call<Login> call, Throwable t) {
progressBar.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(),t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
Note : Pada import bagian atas kode yang ada nama "anang" silakan diganti atau sesuaikan saja

Kali ini mari kita buat tombol logout Pada MainActivity. 

18. Buka activity_main.xml lalu isi kode berikut :
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
android:id="@+id/btnLogout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Logout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />

</androidx.constraintlayout.widget.ConstraintLayout>
19. Buka class "MainActivity" lalu isi kode berikut :



import androidx.appcompat.app.AppCompatActivity;

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

import java.util.UUID;

public class MainActivity extends AppCompatActivity {

private SessionManager sessionManager;

private Button btnLogout;

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

//init
sessionManager = new SessionManager(MainActivity.this);

btnLogout = findViewById(R.id.btnLogout);

if(sessionManager.get(SessionManager.TOKEN, null) == null){
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}

//uuid
if(sessionManager.get(SessionManager.UUID, null) == null){
String id = UUID.randomUUID().toString();
sessionManager.store(SessionManager.UUID, id);
}

//listener
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//clear data session
sessionManager.clear();
//go to LoginActivity
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
});
}
}
Oke saat ini Kamu sudah berhasil menyiapkan bagian front end atau Androidnya untuk uji coba nya silakan Sambungkan HP ke PC atau Laptop Kamu dengan USB dan jangan lupa aktifkan debug Androidnya agar terbaca oleh Android Studionya lalu Run dengan cara Pilih Menu Run > Run App atau tekan keyboard shift + F10. Jika berhasil maka Aplikasi akan terinstall di HP Kamu.




Disini penulis sudah menyiapkan Back End nya yang berupa API dan databasenya jadi kamu tinggal download DISINI



Lalu extract saja. Lalu import database-nya. Letak database ada pada folder "db"

Untuk running Back End nya buka command line > masuk ke folder dimana Kamu extract pakai perintah cd "path/kelasdigital" > lalu gunakan script berikut untuk run/start


> php spark serve --host 192.168.43.163

Note : untuk --host nya sesuaikan dengan IP Kamu saja ya

Jika berhasil di running maka akan tampil seperti ini :


Silakan buka aplikasi test login, 
username : anang
password : anang

jika ingin ubah password dan username silakan ke tabel t_user. 
Note : enkripsi password menggunakan sha256


Terima kasih, mohon maaf atas segala kekurangan konten ini. Silakan untuk kritik dan saran sangat diterima.






Apa itu CRUD Generator?

CRUD Generator adalah sebuah tools open source untuk membuat code Controller, Model, dan View Codeigniter dengan cepat. Cocok banget buat kamu yang baru belajar codeigniter dengan konsep MVC.

Fitur
Membuat kode : 
 - Controller
 - Model
 - View

Cara pakainya
2. Setting Database yang akan kita jadikan CRUD, letak file ini ada di crud-generator/setup.ini, contoh seperti ini

3. Coba jalankan pada browser ketik http://localhost/crud-generator 



Tampilan :
Pilih Tabel

Daftar Kolom


Hasil Kode
4. Gambar diatas kita jadikan contoh. Buat file php di  
- application\controllers\Detail_penjualan.php (copy dari textarea Controller)
- application\models\M_barang.php (copy dari textarea Model)
- application\views\v_barang.php (copy dari textarea View)
- application\views\v_barang_add.php (copy dari textarea View)
- application\views\v_barang.php_edit (copy dari textarea View)

Semoga bermanfaat :)




1. Download Oracle Database 12c in here 

2. Extract the file 

3. run command prompt

4. run script setup.exe -silent -responseFile "YOURPATHFILE .rsp" 
this is my rsp file : https://drive.google.com/file/d/1KiMgsAiVir1Gdv1MlccMZVHCIl1I5DrU/view?usp=sharing




Java adalah salah satu bahasa program berientasi objek. Java mendukung berbagai fitur. Konsep dasar fundamental pada java :
- Polymorphism
- Inheritance
- Encapsulation
- Abstraction
- Classes
- Objects
- Instance
- Method
- Message Passing

Pada bagian ini kita akan membahas Objek dan Class Java.
- Objek, Objek mempunyai perilaku dan sifat, contoh Objek Kucing berperilaku mencakar, mempunyai 2 mata, berwarna putih. Objek adalah turunan Class
- Class, Didefinisikan sebagai wadah yang didukung oleh Objek typenya

Objek pada perangkat lunak juga memiliki perikaku yang didalamnya terdapat Objek yang disimpan dalam field dan kita jalankan melalui metode java.

CLASS
berikut ini adalah contoh class

public class Ayam {
    String warna = "Hitam";
    int tinggi = 30;

    void lapar() {

    }

    void tidur() {

    }
}

- class diawali Modifier public dan class lalu dengan Nama classnya. lanjut dengan tanda buka kurawal { dan diakhiri tanda tutup kurawal }
- didalamnya terdapat sifat dan perilakunya seperti String warna = "Hitam"; dan int tinggi = 30; itu artinya ayam mempunyai warna Hitam dan tinggi 30 cm.
- class Ayam berperilaku seperti merasa lapar dan tidur

Class diatas merupakan contoh sederhana sebuah class. Kamu bisa membuat contoh class lainnya sendiri.





CONSTRUCTOR

ketika kita membuat sebuah class Ayam. kita ingin merubah warnanya menjadi putih. Contructor adalah salah satu cara untuk menginisialisasi sebuah variabel yang sudah ada.
berikut ini adalah contoh contructor pada class Ayam


public class Ayam{
    //variabel
    String warna = "Hitam";
    int tinggi = 30;
    
    //constructor
    public Ayam(){
        warna = "Putih";
    }
}

kita juga bisa membuat lebih dari satu constructor. tapi syaratnya harus ada parameternya ya, karena akan error jika class Ayam mempunyai constructor yang sama jumlah parameternya dan juga tipe datanya sama. lihat contoh yang benar berikut ini

public class Ayam {
    //variabel
    String warna = "Hitam";
    int tinggi = 30;
    
    //constructor 1
    public Ayam(){
        warna = "Putih";
    }
    
    //constructor 2  ini parameternya pakai String
    public Ayam(String parameterWarna){
        warna = parameterWarna;
    }
    
    //constructor 3 beda type data pada parameternya. 
    //ini parameternya pakai integer
    public Ayam(int parameterTinggi){
        tinggi = parameterTinggi;
    }
    
    //constructor 4  ini parameternya pakai String dan integer
    public Ayam(String parameterWarna, int parameterTinggi){
        warna = parameterWarna;
        tinggi = parameterTinggi;
    }

}


MEMANGGIL CLASS dan CONSTRUCTORNYA

cara memanggil class yaitu dengan format code berikut :

NAMACLASS namaVariabel = new NAMACLASS();

contoh implementasi  :

Ayam classAyam = new Ayam();

Perhatikan contoh kode berikut ini untuk memanggil class :
public class Ayam {
    //variabel
    String warna = "Hitam";
    int tinggi = 30;
    
    //constructor 1
    public Ayam(){
        warna = "Putih";
        System.out.println("Warna "+warna);
    }
    
    //constructor 2  ini parameternya pakai String
    public Ayam(String parameterWarna){
        warna = parameterWarna;
        System.out.println("Warna "+warna);
    }
    
    //constructor 3 beda type data pada parameternya. 
    //ini parameternya pakai integer
    public Ayam(int parameterTinggi){
        tinggi = parameterTinggi;
        System.out.println("Tinggi "+tinggi+" cm");
    }
    
    //constructor 4  ini parameternya pakai String dan integer
    public Ayam(String parameterWarna, int parameterTinggi){
        warna = parameterWarna;
        tinggi = parameterTinggi;
        
        System.out.println("Warna "+warna);
        System.out.println("Tinggi "+tinggi+" cm");
    }
    
    
    public static void main(String[] args){
        //memanggil constructor 1
        Ayam classAyam = new Ayam();
        System.out.println("---------------------------");
        //memanggil constructor 2
        classAyam = new Ayam("Ungu");
        System.out.println("---------------------------");
        //memanggil constructor 3
        classAyam = new Ayam(15);
        System.out.println("---------------------------");
        //memanggil constructor 4
        classAyam = new Ayam("Biru",20);
        System.out.println("---------------------------");
    }

}

Hasil Outputnya :




Semoga Bermanfaat :)


Source https://getcomposer.org/

Composer adalah Dependency manager untuk library PHP. Berikut ini adalah cara instalasinya.

1. Buka Terminal
2. jalankan script ini :



$ curl -sS https://getcomposer.org/installer | php

Instalasi composer berhasil


3. Pindah file composer.phar nya ke folder /user/local/lib

$ sudo mv composer.phar /usr/local/lib/


4. Buat Alias agar cukup dengan perintah "composer" kamu dapat memanggilnya
caranya jalankan script berikut :



$ nano ~/.base_profile

5. Paste script ini :

alias composer="php /usr/local/lib/composer.phar"
Gambar base_profile

6. Simpan dengan cara control+x lalu ketik y dan lalu Enter
7. Saatnya lakukan testing apakah berhasil atau tidak, coba kamu run script 


$ composer

Jika berhasil maka akan tampil seperti berikut
























Semoga bermanfaat :)
1. Download mavennya di sini .

2. Setelah didownload Extrak dengan script ini :

$ tar -xvf apache-maven-3.5.4-bin.tar.gz

3. $ pwd


untuk dapatkan pathnya untuk di copy pada step berikutnya

4. Lalu buat environment variable

$ nano ~ /.bash_profile


5. Lalu pathnya kamu copy dan paste seperti ini

6. Simpan  dengan control+X , input Y,  Enter

7. Tutup dan Buka lagi terminalnya lalu test dengan jalankan script ini
  

$ mvn -version



Semoga bermanfaat :)
1. download file cacert.pem.
2. Simpan file cacert.pem yang sudah didownload ke folder. misal di folder C:\xampp\cacert\
3. Copy path nya

Gambar letak cacert yang sudah didownload.
4. Buka php.ini yang ada di xampp/php/php.ini
Cari openssl.cafile
ganti jadi seperi ini openssl.cafile="C:\xampp\cacert\cacert.pem"

5. Simpan filenya.
6. Stop Start kembali Apache yang ada di XAMPP control pannel
Gambar Xampp Control Panel.

Semoga bermanfaat :)