-
Homebrew
Install command Line Tools.
xcode-select --install
Install homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Disabel homebrew analytics
brew analytics off
-
Install Maven Local Repository
Download Apache Maven disini.
Tambahkan maven ke path pada Environment Variables.
Jalankan command berikut ini:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
Jika file JAR di hasilkan oleh Apache Maven:
mvn install:install-file -Dfile=<path-to-file>
Jika menggunakan pom-file:
mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile>
Keterangan:
<path-to-file>
lokasi file jar<group-id>
nama group id (misal: org.akhal)<artifact-id>
nama library (misal: kbbi)<version>
versi library<packaging>
jenis packaging (misalkan: jar) -
Menjalankan Program Java sebagai Service pada Ubuntu
Buat sebuah Service
sudo nano /etc/systemd/system/myjava.service
Copy/paste kode berikut ini ke dalam file myjava.service
[Unit] Description=My Java Service [Service] User=ubuntu # The configuration file application.properties should be here: #change this to your workspace WorkingDirectory=/home/ubuntu/workspace #path to executable. #executable is a bash script which calls jar file ExecStart=/home/ubuntu/workspace/start SuccessExitStatus=143 TimeoutStopSec=10 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
Buat file Bash Script untuk memanggil Service
nano /home/ubuntu/workspace/start
Copy/paste kode berikut:
#!/bin/sh /usr/bin/java -jar myjava.jar
Start Service
sudo systemctl enable myjava.service sudo systemctl start myjava.service
-
Command SSH on CentOS
Install
sudo yum install openssh-server openssh-clients
Configuration
sudo nano /etc/ssh/sshd_config
Create ssh keygen
ssh-keygen -t rsa
Start
sudo systemctl start sshd.service
Stop
sudo systemctl stop sshd.service
Restart
sudo systemctl restart sshd.service
Enable auto start
sudo systemctl enable sshd.service
Disable auto start
sudo systemctl disable sshd.service
-
Install Apache, MySQL, PHP on macOS Mojave 10.14
Pada macOS Mojave, aplikasi
apache
sudah terinstall sebagai program bawaan. Yang perlu dilakukan hanya menjalankannya dengan command:sudo apachectl start
Command berikut untuk mematikan
apache
:sudo apachectl stop
Command berikut untuk me-restart
apache
:sudo apachectl restart
Jika ingin mengetahui versi
apache
yang terinstall dapat menggunakan command berikut:httpd -v
Secara default,
system document root
untuk web server dapat dilihat di:/Library/WebServer/Documents/
Selain menggunakan lokasi yang ada pada sistem, dapat juga menggunakan lokasi yang ada pada user (
User Level Root
) yang ada pada folderSites
. Tambahkanusername.conf
pada directory:/etc/apache2/users/
Buka terminal, kemudian ketikkan command berikut:
cd /etc/apache2/users sudo nano username.conf
nama file
username.conf
sesuaikan dengan namausername
yang digunakan. Kemudian tambahkan kode berikut:<Directory "/Users/username/Sites/"> AllowOverride All Options Indexes MultiViews FollowSymLinks Require all granted </Directory>
Dengan konfigurasi file permission:
-rw-r--r-- 1 root wheel 298 Jun 28 16:47 username.conf
Jika belum seperti di atas, file permission dapat diganti dengan menggunakan perintah:
sudo chmod 644 username.conf
Langkah selanjutnya, buka file
httpd.conf
, kemudian edit konfigurasi untuk beberapa module.sudo nano /etc/apache2/httpd.conf
Pastikan module berikut dalam kondisi uncomment.
LoadModule authz_core_module libexec/apache2/mod_authz_core.so LoadModule authz_host_module libexec/apache2/mod_authz_host.so LoadModule userdir_module libexec/apache2/mod_userdir.so LoadModule include_module libexec/apache2/mod_include.so LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Jika menggunakan php, uncomment module berikut:
LoadModule php7_module libexec/apache2/libphp7.so
Jika ingin menggunakan
user home directories
, uncomment baris berikut:Include /private/etc/apache2/extra/httpd-userdir.conf
Langkah berikutnya, buka config lain untuk
apache
:sudo nano /etc/apache2/extra/httpd-userdir.conf
Uncomment baris berikut:
Include /private/etc/apache2/users/*.conf
Kemudian restart
apache server
:sudo apachectl restart
Untuk level
system document root
, dapat dilihat di url:http://localhost/
Untuk level
user document root
, dapat dilihat di url:http://localhost/~username/
Jika ingin mengijinkan .htaccess untuk meng-override default setting, dapat menggunakan cara berikut:
sudo nano /etc/apache2/httpd.conf
Dan jangan lupa, uncomment
module mod_rewrite
.LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Untuk melihat konfigurasi dari
apache server
, dapat membuat filephpinfo.php
padadocument root
.<?php phpinfo(); ?>
Secara default, MySQL tidak ter-install sebagai aplikasi bawaan dari macOS Mojave, sehingga perlu di-install secara manual. Aplikasi MySQL dapat diunduh disini.
Setelah berhasil diunduh, install MySQL dan ikuti langkah-langkahnya sampai instalasi selesai.
Setelah instalasi MySQL selesai, langkah berikutnya mengganti password user
root
untuk MySQL.Stop MySQL
sudo /usr/local/mysql/support-files/mysql.server stop
Start MySQL dalam safe mode:
sudo mysqld_safe --skip-grant-tables
Buka tab terminal baru, kemudian login ke MySQL dengan user
root
, kemudian ganti password untukroot
.mysql -u root
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; \q
Start MySQL
sudo /usr/local/mysql/support-files/mysql.server start
Connect PHP and MySQL
mkdir /var/mysql ln -s /tmp/mysql.sock /var/mysql/mysql.sock sudo apachectl restart
-
Codeigniter untuk Pemula
Download versi terakhir dari framework Codeigniter. Frame work dapat di unduh disini.
Ektrak zip file, kemudian rename menjadi nama yang dikehendaki (misalken Codeigniter).
Upload file yang ada di folder Codeigniter ke server (misalkan localhost).
Buka url menggunakan browser pada url
http://localhost/codeigniter/
. Jika berhasil, maka akan nampak seperti gambar berikut ini:Buka file
application/config/config.php
kemudian edit pada bagian$config['base_url']
menjadi:$config[‘base_url’] = ‘http://localhost/codeigniter/’;
Jika membutuhkan koneksi database, edit file
application/config/database.php
hostname
– Database host name.username
– Database username.password
– Database password.database
– Database name.
Buka folder
application/controllers/
, kemudian buat file php dengan nama fileHome.php
.<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('v_home'); } }
Buka folder
application/views/
, kemuian buat file php dengan namav_home.php
.<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Welcome to Home</title> <style type="text/css"> ::selection { background-color: #E13300; color: white; } ::-moz-selection { background-color: #E13300; color: white; } body { background-color: #fff; margin: 40px; font: 13px/20px normal Helvetica, Arial, sans-serif; color: #4F5155; } a { color: #003399; background-color: transparent; font-weight: normal; } h1 { color: #444; background-color: transparent; border-bottom: 1px solid #D0D0D0; font-size: 19px; font-weight: normal; margin: 0 0 14px 0; padding: 14px 15px 10px 15px; } code { font-family: Consolas, Monaco, Courier New, Courier, monospace; font-size: 12px; background-color: #f9f9f9; border: 1px solid #D0D0D0; color: #002166; display: block; margin: 14px 0 14px 0; padding: 12px 10px 12px 10px; } #body { margin: 0 15px 0 15px; } p.footer { text-align: right; font-size: 11px; border-top: 1px solid #D0D0D0; line-height: 32px; padding: 0 10px 0 10px; margin: 20px 0 0 0; } #container { margin: 10px; border: 1px solid #D0D0D0; box-shadow: 0 0 8px #D0D0D0; } </style> </head> <body> <div id="container"> <h1>Welcome to Home</h1> <div id="body"> <p>Ini merupakan halaman contoh.</p> </div> <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds. <?php echo (ENVIRONMENT === 'development') ? 'CodeIgniter Version <strong>' . CI_VERSION . '</strong>' : '' ?></p> </div> </body> </html>
Untuk melihat hasilnya, buka url berikut:
http://localhost/codeigniter/index.php/home
Untuk menghilangkan
index.php
, dapat menggunakan cara ini. -
Android Bounce Animation
Buat android project.
Langkah selanjutnya adalah membuat layout dengan menggunakan ImageButton.
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.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"> <ImageButton android:id="@+id/ibtn_book" android:layout_width="180dp" android:layout_height="180dp" android:background="@null" android:scaleType="fitCenter" android:src="@drawable/img_book" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
Buat transisi untuk bounce.
- Klik kanan pada
res
, kemudian buat folder anim. - Untuk membuat animasi yang berjalan terus menerus, tambahkan atribut
android:repeatCount="infinite"
pada elemen<scale>
. - Buat file
bounce.xml
, kemudian tambahkan code berikut:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <scale android:duration="2000" android:fromXScale="0.4" android:toXScale="1.0" android:fromYScale="0.4" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" /> </set>
Buat class
QBounceInterpolator.java
sebagai interpolator pada animasi yang akan dibuat.package org.akhal.example.buttonanimation; import android.view.animation.Interpolator; public class QBounceInterpolator implements Interpolator { private double mAmplitude = 1; private double mFrequency = 10; public QBounceInterpolator(double amplitude, double frequency) { mAmplitude = amplitude; mFrequency = frequency; } public float getInterpolation(float time) { return (float) (-1 * Math.pow(Math.E, -time/ mAmplitude) * Math.cos(mFrequency * time) + 1); } }
Agar menjadi animasi, tambahkan code
AnimationUtils
padaMainActivity.java
sehingga menjadi superti berikut:package org.akhal.example.buttonanimation; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageButton; public class MainActivity extends AppCompatActivity { private Animation bounceAnimation; private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bounceAnimation = AnimationUtils.loadAnimation(this, R.anim.bounce); QBounceInterpolator interpolator = new QBounceInterpolator(0.2, 20); bounceAnimation.setInterpolator(interpolator); final ImageButton imageButton = findViewById(R.id.ibtn_book); imageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { imageButton.startAnimation(bounceAnimation); } }); imageButton.startAnimation(bounceAnimation); } }
Jalankan aplikasi, sehingga nampak seperti gambar berikut ini:
Untuk program lengkapnya, dapat diunduh di link di bawah ini:
- Klik kanan pada
-
Format Currency Rupiah pada Java
Import file:
import java.text.DecimalFormat; import java.text.DecimalFormatSymbols;
Format:
DecimalFormat id = (DecimalFormat) DecimalFormat.getCurrencyInstance(); DecimalFormatSymbols rp = new DecimalFormatSymbols(); rp.setCurrencySymbol("Rp"); rp.setMonetaryDecimalSeparator(','); rp.setGroupingSeparator('.'); id.setDecimalFormatSymbols(rp); Double harga = 1000,10; id.format(harga);
-
BottomAppBar
Salah satu komponen yang diperkenalkan pada acara Google I/O 2018 atalha BottomAppBar yang merupakan extension dari Toolbar yang peletakannya berada pada bagana bawah jendela aplikasi. Bersaam dengan BottomAppBar penempatan Floating Action Button (FAB) juga telah berubah. Dengan dessin baru, FAB data ditempatkan pada posisi yang bervariasi. Pada artikel kali ini, akan ditunjukkan bagaimana cara menggunakan material BottomAppBar pada sebuah layout.
Langkah pertama adalah buat project baru.
Tambahkan dependency pada file
build.gradle
.implementation 'com.android.support:design:28.0.0'
untuk AndroidX
implementation 'com.google.android.material:material:1.0.0'
Langkah selanjutnya adalah membuat layout.
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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"> <android.support.design.bottomappbar.BottomAppBar android:id="@+id/bottom_appbar" android:layout_gravity="bottom" android:layout_width="match_parent" android:layout_height="wrap_content" app:navigationIcon="@drawable/ic_menu_black" style="@style/Widget.MaterialComponents.BottomAppBar.Colored"> </android.support.design.bottomappbar.BottomAppBar> <android.support.design.widget.FloatingActionButton android:id="@+id/floating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_camera_alt_black" app:backgroundTint="@color/colorPrimary" app:fabSize="normal" app:layout_anchor="@id/bottom_appbar" /> </android.support.design.widget.CoordinatorLayout>
Langah berikutnya adalah membuat file menu dengan nama file
bottomappbar_menu.xml
.<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/app_bar_share"
android:icon="@drawable/ic_share_black"
android:title="Share"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/app_bar_favorite"
android:icon="@drawable/ic_favorite_black"
android:title="Favorite"
app:showAsAction="ifRoom"/>
</menu>Untuk menangani tombol ketika diklik, buat beberapa tambahan program pada file activity.
package org.akhal.example.bottomappbar; import android.content.Context; import android.os.Bundle; import android.support.design.bottomappbar.BottomAppBar; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private BottomAppBar bottomAppBar; private FloatingActionButton fab; private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = this; bottomAppBar = findViewById(R.id.bottom_appbar); bottomAppBar.replaceMenu(R.menu.bottomappbar_menu); bottomAppBar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "On click menu!", Toast.LENGTH_SHORT).show(); } }); fab = findViewById(R.id.floating); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "On click camera!", Toast.LENGTH_SHORT).show(); } }); bottomAppBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { int item = menuItem.getItemId(); switch (item) { case R.id.app_bar_share: Toast.makeText(context, "On click share!", Toast.LENGTH_SHORT).show(); break; case R.id.app_bar_favorite: Toast.makeText(context, "On click favorite!", Toast.LENGTH_SHORT).show(); break; } return false; } }); } }
-
Ubuntu 18.04 Setup SSH Public Key Authentication
Langkah pertama adalah membuat key pair pada computer.
ssh-keygen
Jika berhasil, akan dihasilkan dua file, yaitu file private key dan file public key. File public key biasanya diakhiri dengan extension .pub.
Langkah berikutnya adalah mengunggah file public key ke remote server.
ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<ip_remote_server>
Langkah terahir adalah tes login dengan menggunakan key yang telah dibuat.
ssh -i ~/.ssh/id_rsa <username>@<ip_remote_server>