Friday, September 22, 2017

Cara mudah mendaftarkan variabel di linux agar tidak melulu export

Cara mudah mendaftarkan variabel di linux agar tidak melulu export

Saat ini saya memakai Linux:ubuntu 16.04, kasus ini saya alami pada saat ingin menjalankan aplikasi android saya yang bebasis cordova, pada saat itu saya harus terus-terusan melakukan export variabel ANDROID_HOME sebelum saya melakukan cordova run android.

Walau cuma satu itu saja, tapi agak ribet saja kalau tiap kali mau menjalankan aplikasi cordova, saya harus mengekport variabel ANDROID_HOME. Karena di windows sendiri itu tak selalu terus-terusan diketik, cukup didaftarkan di environment variabel sekali udah beres.

Nah disini saya ingin berbagi bagaimana caranya agar tidak melulu export variabel seperti yang sudah dijelaskan di atas. Caranya adalah sebegai berikut :

Pertama
Buka terminal

Kedua
Jalankan perintah berikut pada terminal :

sudo gedit ~/.bashrc

Disini saya mengedit file .bashrc dengan menggunakan gedit, diluar itu kamu bebas menggunakan apa saja, bisa itu nano, vim atau apalah.

Ketiga
Masukan variabel kamu tepat dibaris paling bawah, jangan lupa kasih komentar sebagai penanda, contohnya seperti ini :

# export-path-android-sdk
export ANDROID_HOME=/home/kang/Android/Sdk
# end-export-path-android-sdk

Pada contoh diatas saya mengekport variabel ANDROID_HOME, lalu untuk penulisan komentar diawali dengan simbol hashtag (#). (jangan lupa disave setelah itu)

Keempat
Jika sudah, sekarang kita bisa langsung menjalankan perintah (cordova misalnya), tanpa harus melakukan export variabel dahulu.

Mungkin tulisan ini saya cukupkan sampai disini, semoga bermanfaat yah. Jika ada kurang tak perlu sungkan untuk mengoreksi, karena disini saya pun masih sama-sama sedang belajar :)

Tschüß, vielen dank.

Menangani Error: spawn EACCES di nativescript

Menangani Error: spawn EACCES di nativescript

Dipembahasan kali ini saya tidak akan terlalu panjang lebar karena ini adalah sebuah catatan kecil pribadi saja.

Kemarin pas hari kamis saya sempat mengalami masalah pada saat akan melakukan run aplikasi android dengan nativescript, kurang lebh seperti ini pesan errornya Error: spawn EACCE.

Setelah saya telusuri, saya coba mengambil kesimpulan kalau masalah ini muncul diakibatkan oleh bedanya environment yang dipakai saat proses development. Karena saat itu, projek mobile dengan nativescript tersebut di kerjakan oleh teman saya yang memakai MAC OS, kemudian dilanjutkan oleh saya dimana disini saya memakai Linux:Ubuntu.

Lalu untuk solusi mengatasi masalah ini cukuplah sederhana, kamu hanya perlu menghapus platform yang sedang kamu bangun (misal android) dengan cara :

tns platform remove android

Kemudian menambahkan kembali platformnya dengan cara :

tns platform add android

Jika sudah, selanjutnya coba jalankan kembali aplikasi kamu dengan cara :

tns run android

Mungkin tulisan ini saya cukupkan sampai disini, semoga bermanfaat yah. Jika ada kurang tak perlu sungkan untuk mengoreksi, karena disini saya pun masih sama-sama sedang belajar :)

Tschüß, vielen dank.

Friday, September 8, 2017

Adb tools untuk debug saat develop aplikasi android hybrid

Adb tools untuk debug saat develop aplikasi android hybrid

Android Debug Bridge (adb) adalah alat baris perintah serbaguna yang memungkinkan kamu berkomunikasi dengan sebuah instance emulator atau perangkat Android yang terhubung.

Jadi intinya adb ini bisa membantu kita dalam melakukan debuging saat kita sedang membuat aplikasi android. Bisa diibaratkan adb ini adalah inspect elementnya browser walau performencenya tidaklah se-powerfull inspect element, tapi dengan ini kita bisa melihat data yang kita console.log, atau error sebuah aplikasi dari adb.

Untuk menggunakan adb sendiri ada dua, yang pertama kita memasang android studio pada alat tempur kita, atau yang kedua kita hanya memasang adbnya saja.

Bagi saya pribadi lebih sekarang saya lebih suka menggunakan cara yang kedua. Untuk cara pertama agak banyak memakan tenaga, karena ketika android studio dan genymotion jalan berbarengan itu akan memakan ram yang banyak, apalagi ketika ditambah chrome hahaha

Pas dulu saya memakai adb di android studio saya sering banget ngecek status ram, soalnya kalau kebablasan alat tempur saya suka tiba-tiba beku alias hank wkakakak. Nah pada artikel ini saya ingin membahas cara memasang adb tanpa harus memasang android studio. Dan cara ini akan menghemat banyak ram di alat tempur kamu.

Bagi kamu yang sudah terlanjur memasang android studio, kamu tidak perlu memasang adb-nya lagi, kamu tinggal pakai yang sudah ada di dalam folder instalasi android studio-nya, biasanya letaknya ada di Android/Sdk/platform-tools/ , nah disana ada file .exe (jika di widows) atau file .sh (jika di linux).

Yang Sudah Terlanjur Memasang Android Studio

CARA MENGGUNAKAN ADB DIWINDOWS :
- Silahkan masuk ke path Android/Sdk/platform-tools/
- Tekan tombol shift lalu klik kanan (sembarang), kemudian pilih "open command windows here"

Adb tools untuk debug saat develop aplikasi android hybrid
 - Kemudian ketikan "adb devices" untuk melihat apakah ada emulator atau device yang sudah running.

Adb tools untuk debug saat develop aplikasi android hybrid
- Jika sudah maka kamu tinggal menjalankan perintah ini

adb logcat chromium:D SystemWebViewClient:D *:S

- Jika sudah, langkah selanjutnya kamu tinggal menjalankan aplikasi yang akan kamu debug pada device atau emulator kamu, maka nanti akan otomatis tampil semua log error atau apa lah pada adb di command line kamu.

CARA MENGGUNAKAN ADB DILINUX :
- Buka terminal
- Masuk ke direktori "Android/Sdk/platform-tools/" , karena folder instalasi android studio saya terletak di root jadi untuk masuk kesana saya cukup mengetikan perintah "cd ~/Android/Sdk/platform-tools/" . Pada bagian ini di sesuaikan saja, tergantung dimana kamu meletakan instalasi android studionya.
- Langkah selanjutnya tidaklah berbeda jauh dengan diwindows, bedanya kamu perlu menggunakan dot slash (./) untuk mengeksekusi file .sh-nya. Ketik "./adb devices" untuk melihat apakah ada emulator atau device yang sudah running.
- Lalu ketikan perintah berikut untuk menjalankan abd-nya :

./adb logcat chromium:D SystemWebViewClient:D *:S


Yang Belum Terlanjut Memasang Android Studio

Untuk kamu yang belum memasang android studio tidak perlu repot memasanynya, kenapa ? karena kamu bisa memasang adb-nya saja tanpa harus memasang android studio, caranya bagaimana ?
Untuk pengguna windows mungkin bisa browsing sendiri bagaimana cara memasang adb-nya, jujur saja, saya sendiri tidak menggunakan windows, jadi saya kurang tahu gambaran nyata untuk pemasangannya, disini saya hanya akan membahas cara pemasangan utnuk pengguna linux ubuntu saja, maaf yah hehehe.
INSTALASI

- Buka terminal
- Lalu ketikan perintah berikut satu per satu

sudo apt update
sudo apt install android-tools-adb android-tools-fastboot

- Untuk mengetahui versi adb-nya, kamu bisa mengetikan perintah "./adb version"
- Untuk cara menjalankan adb-nya kamu bisa membaca paparan yang ada di atas.

Mungkin tulisan ini saya cukupkan sampai disini, jika ada yang kurang dan dirasa ada yang perlu ditambahkan dalam postingan, kritik saran bisa kamu tulis langsung di form komentar. Terima kasih, semoga tulisan ini bermanfaat untuk kamu :)

Monday, August 28, 2017

Trik sederhana render new line(\n) atau enter pada html


Kasusnya disini adalah pada saat, misalkan kita punya sebuah form disitu terdapat textarea, dan pada text area tersebut kita memasukan isian yang dimana kita menggunakan "enter" atau "baris baru" untuk merapihkan tulisan kita, cuma pada saat kita tampilkan, data yang harusnya ada "enter" didalamnya tapi malah tampil tanpa ada "enter" jadi tampilnya memanjang menjadi satu baris.

Apa kamu pernah mengalami hal tersebut ? kalau saya pernah.

Nah di pembahasan kali ini saya ingin berbagi trik untuk menyelesaikan masalah tersebut, caranya bagaimana ? cukup sederhana, kita bisa menggunakan tag <pre></pre> . Tapi untuk melakukan itu kita tidak bisa hanya menggunakan tag tersebut secara mentah, ada properti tambahan yang harus kamu tambahkan di CSS.

Silahkan tambahkan properti css berikut sebelum kita menggunakan tag <pre></pre> :

pre {
    white-space: pre-wrap; 
    word-wrap: break-word;
    font-family: inherit;
}

Keterangan :
white-space berfungsi untuk tidak mengabaikan spasi, jadi maksudnya ketika dalam sebuah text ada spasi maka spasi tersebut akan tampil apa adanya. Contohnya pada saat kita menggunakan text yag menjorok kedalam, sebenarnya di bagian tersebut terdapat banyak spasi yang membuat text bisa menjorok kedalam, nah dengan ini maka si spasi tersebut akan di tampilkan sesuai spasi yang sudah kita diawal, jadi gak bakal kena trim intinya.
word-wrap sama seperti white-space cuma bedanya ini untuk "enter" atau "baris baru".
font-family berfungsi untuk merubah tipe font style saja.

Nah jika propertinya sudah ditambahkan di css, barulah kamu bisa menggunakan tag <pre></pre>. Penggunaannya sederhana, mungkin kamu pun sudah tahu :)

<pre>...letakan text-nya disini...</pre>

Mungkin saya cukupkan sampai disini dulu untuk postingan kali ini, semoga bermanfaat, terima kasih :)


Monday, August 7, 2017

Cara mendapatkan index array berdasarkan value di javascript

Cara mendapatkan index array berdasarkan value di javascript


Pada pembahasan kali ini saya akan membahas tentang bagaimana mendapatkan index array berdasarkan value.

Untuk melakukan ini sangatlah mudah karena javascript sendiri sudah menyediakan fungsi untuk mengetahui index array berdasarkan valuenya. Kita bisa menggunakan indexOf().

Misalkan, kita punya variable array bernama fruit dimana yang didalamnya berisi data buah-buahan.


let fruit = ['banana', 'apple', 'watermelon', 'wine', 'orange', 'melon', 'pineapple'];

Kemudian untuk implementasi fungsi indexOf, kita cukup menuliskannya seperti ini, (misal kita ingin mencari index array dari value apple) :


let appleIndex = fruit.indexOf("apple");

Untuk menentukan value mana yang akan kita cari indexnya, kita cukup menuliskannya didalam fungsi indexOf(), seperti apple diatas. Lalu untuk melihat indexnya kita bisa menggunakan alert() , console.log() atau apalah bebas :)

Untuk lebih jelasnya, bisa dilihat pada demo yang sudah saya buat dibawah ini :



Untuk pembahasan kali ini mungkin saya cukupkan sampai disini saja, semoga bermanfaat, terima kasih :)

Monday, July 10, 2017

How to fix an error occurred please run package manager ubuntu

How to fix an error occurred please run package manager ubuntu


an error occurred please run package manager from the right-click menu or apt-get interminal to see what is wrong. The error message was: 'Error: BrokenCount > 0'. This usually means that your installed package have unmet dependencies"

Kurang lebih seperti diataslah pesan errornya, kali ini saya ingin membahas tentang bagaimana cara menangani error diatas. Sebelum itu saya ingin memberitahu dulu apa yang menyebabkan munculnya error itu.

Error tersebut di akibatkan oleh package yang tidak cocok (compatible) dengan OS kita, tapi kita memaksa untuk memasangnya di-OS kita, dan hasilnya program itu nyangkut berubah menjadi semacam bugs, atau apalah itu, yang membuat kita sedikit resah (begitulah yang aku rasakan wkwkwk).

Salasatu solusinya adalah kita harus membersihkan program yang tidak compatible itu, caranya sebagai berikut :

Buka terminal, tekan untuk jalan pintas CTRL+ALT+T
Kemudian Jalankan perintah ini satu per satu :

sudo apt-get update
sudo apt-get clean
sudo apt-get autoremove
sudo dpkg --configure -a
sudo apt-get install -f

Terhakhir, restart.

Jika perintah di atas belum berhasil, coba jalankan perintah ini :

sudo apt-get update && sudo apt-get upgrade

Mungkin cukup sekian pembahasan kali ini, semoga bermanfaat, terima kasih.

#source

Wednesday, June 7, 2017

Cara mengatasi error "Only variable references should be returned by reference" di codeigniter 2.x.x

Cara mengatasi error "Only variable references should be returned by reference" di codeigniter 2.x.x

Pada pembahasan kali ini saya akan membahas seputar error yang saya pernah alami ketika saya menggunaka codeigniter versi 2 dan php 5.6 atau php portable. Error ini bukanlah error yang terlalu rumit. Masalahnya berasal dari sebuah return yang terdapat pada file core codeigniter itu sendiri yaitu common.php.

A PHP Error was encountered

Severity: Notice

Message: Only variable references should be returned by reference

Filename: core/Common.php

Line Number: 257

Saya membahas topik ini karena saya banyak sekali menerima keluhan tentang error ini, terutama pada projek buku yang saya garap tahun 2014. Buku itu bertemakan seputar programming dengan judul cara membuat shopping cart sederhana, kurang lebih itu judunya. Disana, untuk source nya sendiri saya masih memakai PHP 5.4 dan Codeigniter 2.2.x yang dikala itu merupakan source terbaru. Tapi banyak orang yang mempraktekan buku terebut di versi PHP yang lebih tinggi, sepertinya. Akibatnya terjadilah error seperti yang ada di atas.

Nah untuk mencerahkannya, disini saya akan membahas cara menanggulanginya, atau bahasa kerennya yaitu "Trouble Solving" :D

Jika membaca pesan error diatas, error itu sendiri di akibatkan karena hasil return data bukanlah berupa variabel, jadi solusinya ialah hasil return datanya harus berupa variabel.

Jika kamu kurang yakin mari kita buktikan, cobalah buka file system/core/common.php lalu lihat pada baris 257.

return $_config[0] =& $config;

Dan terbukti benar, nilai yang di returnnya bukanlah berupa variabel. Nah untuk masalah ini cukuplah mudah untuk membetulkannya. Silahkan ubah kode di atas menjadi seperti ini

$_config[0] =& $config;
return $_config[0]; 

Dan dengan ini kelar masalahnya.

Mungkin pembahasan kali ini saya cukupkan sampai disini, semonga bermanfaat, terima kasih.

Bagaimana cara mengekstrak file .rar di ubuntu terminal ?

Bagaimana cara mengekstrak file .rar di ubuntu terminal ?

Untuk melakukan ekstrak file .rar di linux tidaklah sulit, berikut adalah langkah-langkahnya.

Pertama-tama jika dalam perangkat kamu belum terpasang aplikasi unrar, silahkan pasang terlebih dahulu dengan mengetikan perintah ini di terminal (shortcut : ctrl+alt+T)

sudo apt-get install unrar

Lalu jika aplikasi unrar sudah terpasang selanjutnya ketikan perintah berikut untuk mengekstrak file .rar nya

unrar e -r /direktori-nya/nama-filenya.rar

Misal saya punya file .rar yang ingin saya ekstrak (namanya naruto.rar), dan file tersebut terletak di folder home/kang/Download, berikut perintahnya

unrar e -r /home/kang/Download/naruto.rar

Keterangan :
File hasil ekstrak akan tampil sejajar dengan file rar-nya, jika mengacu pada contoh diatas, maka file hasil ekstrak berada pada folder /home/kang/Download

Mungkin artikel singat ini saya cukupkan sampai disini, semoga bermanfaat, terima kasih :)

Saturday, June 3, 2017

Cara mengatasi error apt-get update fails to fetch files, “Temporary failure resolving …"

Cara mengatasi error apt-get update fails to fetch files, “Temporary failure resolving …"

Err:1 https://deb.nodesource.com/node_6.x xenial InRelease
  Could not resolve host: deb.nodesource.com
Err:2 https://deb.opera.com/opera-developer stable InRelease                   
  Could not resolve host: deb.opera.com
Err:3 http://security.ubuntu.com/ubuntu xenial-security InRelease              
  Temporary failure resolving 'security.ubuntu.com'
Err:4 http://dl.google.com/linux/chrome/deb stable InRelease                   
  Temporary failure resolving 'dl.google.com'
Err:5 http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease              
  Temporary failure resolving 'ppa.launchpad.net'
Err:6 http://packages.microsoft.com/repos/vscode stable InRelease              
  Temporary failure resolving 'packages.microsoft.com'
Err:7 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
  Temporary failure resolving 'ppa.launchpad.net'
Hit:8 http://id.archive.ubuntu.com/ubuntu xenial InRelease
Get:9 http://id.archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]
Get:10 http://id.archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB]
Get:11 http://id.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [544 kB]
Get:12 http://id.archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages [528 kB]
Get:13 http://id.archive.ubuntu.com/ubuntu xenial-updates/main amd64 DEP-11 Metadata [298 kB]
Get:14 http://id.archive.ubuntu.com/ubuntu xenial-updates/main DEP-11 64x64 Icons [195 kB]
Get:15 http://id.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [471 kB]
Get:16 http://id.archive.ubuntu.com/ubuntu xenial-updates/universe i386 Packages [456 kB]
Get:17 http://id.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 DEP-11 Metadata [159 kB]
Get:18 http://id.archive.ubuntu.com/ubuntu xenial-updates/universe DEP-11 64x64 Icons [188 kB]
Get:19 http://id.archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 DEP-11 Metadata [2.520 B]
Get:20 http://id.archive.ubuntu.com/ubuntu xenial-backports/main amd64 DEP-11 Metadata [3.328 B]
Get:21 http://id.archive.ubuntu.com/ubuntu xenial-backports/universe amd64 DEP-11 Metadata [3.976 B]
Fetched 3.055 kB in 12s (249 kB/s)                                             
Reading package lists... Done
Building dependency tree       
Reading state information... Done
98 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease  Temporary failure resolving 'security.ubuntu.com'
W: Failed to fetch http://dl.google.com/linux/chrome/deb/dists/stable/InRelease  Temporary failure resolving 'dl.google.com'
W: Failed to fetch https://deb.nodesource.com/node_6.x/dists/xenial/InRelease  Could not resolve host: deb.nodesource.com
W: Failed to fetch http://ppa.launchpad.net/ondrej/php/ubuntu/dists/xenial/InRelease  Temporary failure resolving 'ppa.launchpad.net'
W: Failed to fetch https://deb.opera.com/opera-developer/dists/stable/InRelease  Could not resolve host: deb.opera.com
W: Failed to fetch http://packages.microsoft.com/repos/vscode/dists/stable/InRelease  Temporary failure resolving 'packages.microsoft.com'
W: Failed to fetch http://ppa.launchpad.net/webupd8team/java/ubuntu/dists/xenial/InRelease  Temporary failure resolving 'ppa.launchpad.net'
W: Some index files failed to download. They have been ignored, or old ones used instead.

Error tersebut muncul pada saat saya akan menjalankan perintah sudo apt-get update. Entah apa penyebabnya bisa tiba-tiba begitu padahal sebelumnya semua repository baik-baik saja ketika akan menjalankan perintah sudo apt-get update. Dan setelah saya telusuri ternyata...

Temporary relolving
Ada dua kemungkinan untuk masalah ini :
  • Penyedia layanan internet kamu tidak bisa memforward DNS name dengan benar ke server DNS eksternal, atau
  • Dikarenakan perubahan pada jaringan kamu juga memblokir penamaan ini - misalnya, router / modem baru, mengkonfigurasi ulang sebuah saklar dengan konfigurasi baru.
Untuk mengatasi masalah ini silahkan ikuti langkah -langkah berikut :

Pertama, coba untuk menambahkan server DNS yang dapat di kenali oleh sistem kamu, caranya, monggo jalankan peritah berikut.

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null

Kemudian jalankan sudo apt-get update.

Mungkin cukup sekian untuk pembahasan kali ini, semoga bermanfaat :)

Tuesday, May 16, 2017

Membuat multi crud dengan codeigniter

Untuk pembahasan ini saya ingin membahas tentang cara membuat crud dengan codeigniter, sebenarnya sudah pernah saya bahas sebelumnya, namun pembahasan yang dulu bukan lah sebuah artikel, tapi hanya sebuah catatan yang saya simpan di blog saya ini, berikut postingannya :
Pada pembahasan kali ini saya ingin membahas seluruhnya, mulai dari :
  • multi add data
  • multi edit data, dan
  • multi delete data
Pada praktik untuk membuat ini saya sendiri menggunakan :
  • PHP 5.6
  • Mysql 5.7
  • Codeigniter 3.1.4
Untuk design saya sengaja buat sederhana karena agar tidak banyak memakan baris, dan kamu pun mudah untuk membaca kodingannya. Agar dapat memberi sedikit gambaran berikut screenshot dari aplikasi multi crud.

Membuat multi crud dengan codeigniter

Tanpa banyak basa basi mari kita mulai.

STEP BY STEP

CONFIGURASI
Sebelum memula, pertama-tama kita harus melakukan konfigurasi codeigniternya dulu, dianaranya :

autoload.php
dibagian ini cukup load library session dan database saja.

$autoload['libraries'] = array('database','session'); 

config.php
Dibagian ini, replace kode base_url pada baris 26 dengan kode di bawah ini.

$http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 's' : '') . '://';
$newurl = str_replace("index.php","", $_SERVER['SCRIPT_NAME']);
$config['base_url']    = "$http" . $_SERVER['SERVER_NAME'] . "" . $newurl;

Kode di atas berfungsi untuk membuat URL yang dinamis.

database.php
Pada bagian ini pertama kamu harus membuat databasenya terlebih dahulu (namanya bebas), kemudian eksekusi query sql berikut :

-- phpMyAdmin SQL Dump
-- version 4.6.5.2
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Erstellungszeit: 15. Mai 2017 um 11:54
-- Server-Version: 10.1.21-MariaDB
-- PHP-Version: 5.6.30

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Datenbank: `data_tutorial`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `murid`
--

CREATE TABLE `murid` (
  `id` int(11) NOT NULL,
  `nama` varchar(30) NOT NULL,
  `umur` char(3) NOT NULL,
  `kelas` char(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `murid`
--

INSERT INTO `murid` (`id`, `nama`, `umur`, `kelas`) VALUES
(1, 'Sisca', '21', '12'),
(2, 'Jojo', '20', '12'),
(3, 'Joni', '21', '11');

--
-- Indizes der exportierten Tabellen
--

--
-- Indizes für die Tabelle `murid`
--
ALTER TABLE `murid`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT für exportierte Tabellen
--

--
-- AUTO_INCREMENT für Tabelle `murid`
--
ALTER TABLE `murid`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Jika sudah, silahkan atur koneksi databasenya sesuai settingan web server di lokal kamu.

routes.php
Dibagian ini cukup konfigurasi default controllernya saya, seperti ini :

$route['default_controller'] = 'multi_crud';

CONTROLLERS
Buat controller baru dengan nama Multi_crud.php lalu salin kode di bawah ini :

<?php
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Multi_crud extends CI_Controller 
    {
        function __construct()
        {
            parent::__construct();
            $this->load->model("multi_crud_model","get_db");
        }

        function index()
        {
            $q["data"] = $this->get_db->get_list()->result();
            $q["data_cout"] = $this->get_db->get_list()->num_rows();
            $this->load->view("daftar", $q);
        }

        function tambah()
        {
            $get = $this->input->get();
            $q['total_form'] = $get['total_form'];
            $this->load->view('tambah', $q);
        }

        function tambah_proses()
        {
            $post = $this->input->post();
            $result = array();
            $total_post = count($post['nama']);

            foreach($post['nama'] AS $key => $val)
            {
                $result[] = array(
                    "nama"  => $post['nama'][$key],
                    "umur"  => $post['umur'][$key],
                    "kelas"  => $post['kelas'][$key]
                );
            }
            $this->get_db->post_add($result);
            
            $this->session->set_flashdata('notif', '<p style="color:green;font-weight:bold;">'.$total_post.' data berhasil di simpan!</p>');
            redirect('multi_crud');
        }

        function sunting_hapus()
        {
            $post = $this->input->post();
            $check = $post['check'];

            if(isset($check))
            {
                if(isset($post['sunting']))
                {
                    $q['data'] = $this->get_db->get_edit($post)->result();
                    $q['data_count'] = $this->get_db->get_edit($post)->num_rows();

                    $this->load->view('sunting', $q);
                }
                elseif(isset($post['hapus']))
                {
                    $this->get_db->post_delete($post);

                    $this->session->set_flashdata('notif', '<p style="color:green;font-weight:bold;">'.count($check).' data berhasil dihapus!</p>');
                    redirect('multi_crud');
                }
            }
            else
            {
                $this->session->set_flashdata('notif', '<p style="color:red;font-weight:bold;">Harap centang dulu datanya!</p>');
                redirect('multi_crud');
            }
        }

        function sunting_proses()
        {
            $post = $this->input->post();
            $result = array();
            $total_post = count($post['id']);

            foreach($post['id'] AS $key => $val)
            {
                $result[] = array(
                    "id"  => $post['id'][$key],
                    "nama"  => $post['nama'][$key],
                    "umur"  => $post['umur'][$key],
                    "kelas"  => $post['kelas'][$key]
                );
            }
            $this->get_db->post_edit($result);
            
            $this->session->set_flashdata('notif', '<p style="color:green;font-weight:bold;">'.$total_post.' data berhasil di sunting!</p>');
            redirect('multi_crud');
        }
    }

MODELS
Buat models dengan nama Multi_crud_model.php

<?php
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Multi_crud_model extends CI_Model 
    {

        function get_list()
        {
            $this->db->select("id, nama, umur, kelas");
            $this->db->from("murid");
            $this->db->order_by('id', 'DESC');
            $q = $this->db->get();

            return $q;
        }

        function get_edit($post)
        {
            $this->db->select("id, nama, umur, kelas");
            $this->db->from("murid");
            $this->db->where_in('id', $post['check']);
            $this->db->order_by('id', 'DESC');
            $q = $this->db->get();

            return $q;
        }

        function post_add($result = array())
        {
            $total_array = count($result);

            if($total_array != 0)
            {
                $this->db->insert_batch('murid', $result);
            }
        }

        function post_edit($result = array())
        {
            $total_array = count($result);

            if($total_array != 0)
            {
                $this->db->update_batch('murid', $result, 'id');
            }
        }

        function post_delete($post = array())
        {
            $total_array = count($post);

            if($total_array != 0)
            {
                $this->db->where_in('id', $post['check']);
                $this->db->delete('murid');
            }
        }
    }

VIEWS
Lalu yang terakhir buat viewnya, pertama buat view dengan nama daftar.php

<html>
<head>
    <title>Multi CRUD by k4ng</title>    
</head>
<body>
    <h1>Multi CRUD by k4ng</h1>
    <?=form_open("multi_crud/tambah", array("method" => "GET"));?>
        <fieldset>
            <legend><b>Tambah data</b></legend>
            <p>Silahkan ubah angka pada form di bawah dengan angka yang kamu inginkan.</p>
            <label>Buat</label>
            <input type="number" name="total_form" value="1" style="width:50px;">
            <label> form</label>
            <input type="submit" name="submit" value="ok">
        </fieldset>
    <?=form_close();?>
    <?=$this->session->flashdata('notif');?>
    <fieldset>
        <legend><b>Daftar Murid</b></legend>
        <p style="color:red;font-weight:bold;">*) Centang terlebih dahulu jika ingin mengubah atau menghapus data!</p>
        <?=form_open("multi_crud/sunting_hapus");?>
            <table cellpadding="5" cellspacing="5">
                <tr>
                    <td>#</td>
                    <td>Nama</td>
                    <td>Umur</td>
                    <td>Kelas</td>
                </tr>
                <?php
                    if($data_cout == 0)
                    {
                        echo "
                            <tr>
                                <td colspan='4' align='center' style='color:#B0BEC5;'>Tidak ada data murid!</td>
                            </tr>
                        ";
                    }
                    else
                    {
                        foreach ($data as $v) {
                            echo "
                                <tr>
                                    <td><input type='checkbox' name='check[]' value='{$v->id}'></td>
                                    <td>".$v->nama."</td>
                                    <td>".$v->umur."</td>
                                    <td>".$v->kelas."</td>
                                </tr>
                            ";
                        }
                    }
                ?>
            </table>
            <input type="submit" name="sunting" value="Sunting">
            <input type="submit" name="hapus" value="Hapus">
        <?=form_close();?>
    </fieldset>
</body>
</html>

Lalu yang kedua sunting.php

<html>
<head>
    <title>Sunting Data ~ Multi CRUD by k4ng</title>    
</head>
<body>
    <h1>Multi CRUD by k4ng</h1>
    <?=form_open("multi_crud/sunting_proses");?>
        <fieldset>
            <legend><b>Sunting data</b></legend>
            <table cellpadding="5" cellspacing="5">
                <?php
                    foreach ($data as $key => $v) 
                    {
                        echo "
                            <tr>
                                <td><input type='hidden' name='id[]' value='{$v->id}'></td>
                                <td><input type='text' name='nama[]' placeholder='nama' value='{$v->nama}'></td>
                                <td><input type='number' name='umur[]' placeholder='umur' value='{$v->umur}' style='width:60px;'></td>
                                <td><input type='number' name='kelas[]' placeholder='kelas' value='{$v->kelas}' style='width:60px;'></td>
                            </tr>
                        ";
                    }
                ?>
            </table>
            <input type="submit" name="sunting" value="Simpan perubahan">
            <input type="reset" value="Reset">
        </fieldset>
    <?=form_close();?>
</body>
</html>

Dan yang terakhir tambah.php

<html>
<head>
    <title>Tambah Data ~ Multi CRUD by k4ng</title>    
</head>
<body>
    <h1>Multi CRUD by k4ng</h1>
    <?=form_open("multi_crud/tambah_proses");?>
        <fieldset>
            <legend><b>Tambah data</b></legend>
            <table cellpadding="5" cellspacing="5">
                <?php
                    for ($i=0; $i < $total_form; $i++) 
                    {
                        echo "
                            <tr>
                                <td><input type='text' name='nama[]' placeholder='nama'></td>
                                <td><input type='number' name='umur[]' placeholder='umur' style='width:60px;'></td>
                                <td><input type='number' name='kelas[]' placeholder='kelas' style='width:60px;'></td>
                            </tr>
                        ";
                    }
                ?>
            </table>
            <input type="submit" name="simpan" value="Simpan">
            <input type="reset" value="Reset">
        </fieldset>
    <?=form_close();?>
</body>
</html>

Untuk tampilan aplikasi bisa di lihat pada gambar di atas, jika kamu ingin mendapatkan kode lengkapnya, kamu bisa unduh disini : unduh sekarang

Mungkin artikel saya cukupkan sampai disini, semoga bermanfaat, terima kasih.

Friday, May 12, 2017

Cara membuat shortcut desktop di ubuntu

Pada pembahasan kali ini saya ingin sedikit membahas seputar bagaimana cara membuat shortcut di desktop. Pada pembahasan ini saya sendiri mempraktikannya pada Zorin OS 12.1 . Zorin sendiri sebenarnya masih turunan dengan ubuntu, karena distro ini lahir dari ubuntu, bisa dibilang ini adalah cucunya debian, Jadi semua yang support di ubuntu kemungkinan besar support di zorin, jadi intinya sama saja hehehe.

Jika di konversi ke ubuntu, Zorin OS 12 sama dengan atau setara dengan Ubuntu 16.04. Tanpa banyak basa-basi mari kita langsung masuk ke pembahasan.

Pertama-tama pasang terlebih dahulu tool gnome-panel dengan cara menjalankan perintah berikut :

sudo apt-get install --no-install-recommends gnome-panel

Jika sudah, selanjutnya jalankan perintah ini :

gnome-desktop-item-edit --create-new ~/Desktop

Lalu buzz akan muncul tampilan seperti ini :

Cara membuat shortcut desktop di ubuntu

Keterangan :
  • pada nomor satu kamu bisa mengganti icon shortcut sesuai keinginan kamu, untuk icon hampir semua format gambar umum sudah di dukung.
  • pada nomor dua kamu bisa memilih type shortcutnya, ada 3 type shorcut :
    1. application berfungsi untuk aplikasi biasa.
    2. aplication in terminal berfungsi untuk aplikasi yang biasa di jalankan di terminal.
    3. location berfungsi untuk membuat shorcut lokasi direktori.
  • pada nomor tiga kamu bisa memberi nama shortcut yang kamu buat.
  • pada nomor empat berisi file .sh kalau di widows .exe namanya. Pada bagian ini tinggal browse aja, terus cari file .sh terkait.
  • pada nomor lima berfungsi untuk keterangan doank, atau istilah lainnya comment
Jika suda klik OK.

Mungkin cukup sekian dulu, semoga bermanfaat yah, terima kasih.

Lihat tutorial videonya [disini]


Wednesday, May 10, 2017

Cara mudah membuat dan mengeksekusi script bash shell di linux

Cara mudah membuat dan mengeksekusi script bash shell di linux


Bash merupakan comand language interpreter untuk sistem operasi linux. Bash meruapkan kepanjangan dari Bourne-Again SHell yang diambil dari nama Stephen Bourne sang pembuat dan penggagas Unix Shell sh.

Di pembahasan kali ini saya ingin sedikit membahas bagaimana cara membuat sebuah script bash sederhana sampai bagaimana kita mengeksekusinya.

Penulisan script bash di awali dengan kode :

#!/bin/bash

Pada artikel ini saya akan coba menampilkan teks di terminal melalui script bash yang akan kita buat nanti.

Membuat
Untuk membuat script bash, seperti yang sudah di jelaskan di atas penulisan di awali dengan menulis kode #!/bin/bash, lalu selanjutnya di ikuti dengan menulis logika atau alur yang akan di buat.

#!/bin/bash

echo "Hi kang-cahya.com"

Salin kode di atas, lalu simpan di Documents dengan nama file latihan.sh .

Mengeksekusi
Jika langkah di atas sudah di lakukan, selanjutnya kita akan coba mengeksekusi script bash tadi, caranya sebagai berikut :

Pertama
Buka terminal, lalu ketik cd Documents untuk masuk ke folder dokuments.

Kedua
Ketik chmod +x latihan.sh , kode ini berfungsi untuk mengubah permission file agar dapat di eksekusi.

Ketiga
Ketik sudo ./latihan.sh , lalu masukan kata sandi, dan berikutlah hasilnya

Cara mudah membuat dan mengeksekusi script bash shell di linux

Pembahasan kali ini mungkin dicukupkan sampai disini, semoga bermanfaat yah, terima kasih :)

#source

Membuat fungsi sederhana untuk menghandle backbutton di cordova

Membuat fungsi sederhana untuk menghandle backbutton di cordova

Akhir-akhir ini saya tertarik dengan hybrid programming yang salah satu source-nya adalah cordova, di pembahasan kali ini saya akan membahas cara sederhana membuat fungsi untuk menghandle backbutton di cordova.

Kasus
Kasus yang ingin di pecahkan oleh artikel ini adalah "pada saat aplikasi android pertama kali dibuka, lalu pengguna menekan tombol back, maka buzz aplikasi langsung ke close".

Saya pikir pun awalnya tombol backbutton itu akan ter-set otomatis untuk melakukan back halaman, tapi kenyataannya kita harus menghandlenya secara manual.

Dukungan
Fungsi ini hanya mendukung beberapa device saja, diantaranya :
  • Amazon Fire OS
  • Android
  • BlackBerry 10
  • Windows Phone 8

Struktur kode
Struktur dasar kode untuk menghandle backbutton-nya begini :

document.addEventListener("backbutton", myCallbackFunction, false);

function myCallbackFunction() {
    // Handle the back button
}

Pertama kita membuat sebuah listener dengan nama "backbutton", lalu kemudian untuk aksinya sendiri kita buat di dalam fungsi callback. Sederhana kan :) , kalau begitu mari lihat contuh sederhana fungsi untuk memecahkan kasus yang sudah di sebutkan di atas.

document.addEventListener('backbutton', handleCloseBackbutton, false);

function handleCloseBackbutton(e){
    e.preventDefault();
}

Fungsi di atas berfungsi untuk menghandle backbutton agar pada saat aplikasi di buka tidak langsung ke close pas si pengguna menekan tombol back, Kunci kode pada kasus ini terdapat pada method preventDefault() , simpel kan hehehe

Gaya penulisan
Sebenarnya ini tidaklah penting untuk di bahas, tapi bagian ini hanya sebagai info tambahan aja, dan agar artikel ini terlihat panjang wkwkwkwk. Ada beberapa gaya penulisan fungsi yang ada pada listener diataranya :

var handleCloseBackbutton = function(e){
     e.preventDefault();
};

document.addEventListener('backbutton', handleCloseBackbutton, false);


document.addEventListener('backbutton', function(e){
    e.preventDefault();
}, false);


document.addEventListener('backbutton', handleCloseBackbutton, false);

function handleCloseBackbutton(e){
    e.preventDefault();
}

Mungkin saya cukupkan sekian saya untuk materi kali ini, semoga bermanfaat yah, amiiin :)

Tuesday, April 4, 2017

Cara memperbaiki Error : Could not find gradle wrapper within Android SDK. Might need to update your Android SDK di cordova

Cara memperbaiki Error : Could not find gradle wrapper within Android SDK. Might need to update your Android SDK di cordova

Kurang lebih error nya seperti gambar di atas.
Error ini muncul pada saat mengkombinasikan cordova dengan sdk dari android studio yang baru, yaitu versi 2.3 .

Solusi untuk masalah ini ada beberapa tahapan :

#PERTAMA
Jika android studio sudah selesai di install, coba daftarkan SDK ke environment variable, caranya :
- masuk ke explorer, klik kanan pada "my computer" (pada win 10 namanya This PC), pilih properties
- selanjutnya klik menu "advanced system setting" yang ada di sidebar left.
- lalu akan munctul jendela baru kecil, pada tab "advanced" di bagian bawah ada tombol "environment variables...", klik, maka akan muncul window baru lagi.
- buat variable baru, pada variable name isikan ANROID_HOME, pada variable value isikan path SDK berdasarkan yang ada di komputer kamu.

Cara memperbaiki Error : Could not find gradle wrapper within Android SDK. Might need to update your Android SDK di cordova

- jika sudah maka selanjutnya, pada system variable cari variable benama "path" lalu klik edit dan tambahkan value baru ini %ANDROID_HOME%\platform-tools\ , lihat gambar di bawah.

Cara memperbaiki Error : Could not find gradle wrapper within Android SDK. Might need to update your Android SDK di cordova

#KEDUA
Unduh "the Command Line Tools" yang ada di https://developer.android.com/studio/index.html (scroll ke bawah, ada di bagian bawah), pilih sesuai environment yang kamu pakai.

Alternative bisa di unduh disini : http://www.techspot.com/downloads/5425-android-sdk.html

Cara memperbaiki Error : Could not find gradle wrapper within Android SDK. Might need to update your Android SDK di cordova

#KETIGA
Jika sudah selesai di unduh, extrak file .ZIP / .RAR kemudian salin semua isinya ke :
C:\Users\<username>\AppData\Local\Android\sdk\tools

 #KEEMPAT
Monggo di coba cordovanya :)

Cara memperbaiki Error : Could not find gradle wrapper within Android SDK. Might need to update your Android SDK di cordova


Note : Untuk kasus di environment yang lain (mac, linux) cara memperbaikinya hampir sama dengan yang saya di tulis disini. Cuma yang membedakan hanya letak SDK-nya saja.

Mungkin pembahasan kali ini saya cukupkan sampai disini, semoga bermanfaat.

Terima kasih


Thursday, March 2, 2017

Bagaimana memperbaiki Fatal error _ci_object_to_array() hmvc di codeingiter ?

Bagaimana memperbaiki Fatal error _ci_object_to_array() hmvc di codeingiter ?

Saya akan sedikit membahas tentang error yang pernah saya alami ketika membuat hmvc di codeigniter dengan menggunakan core dari wiredesignz. Kurang lebih errornya seperti ini Fatal error: Call to undefined method MY_Loader::_ci_object_to_array(), Lengkapnya bisa di lihat pada gambar di atas.

Error ini terjadi ketika saya menggunakan core hmvc update-an terbaru tanggal 23-02-2017. Jika melihat pesan error di atas, itu di akibatkan karena sebuah fungsi yang di panggil tidak ada atau tidak terdefinisi.

Lalu bagaimana cara memperbaikinya ?

Jika melihat diskusi yang ada disini https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/pull-requests/17/fix-loaderphp-for-ci-313/diff, maka solusinya kita harus menambahkan fungsi yang hilangnya sendiri.

Pertama, buka file Loader.php yang ada di application/third_party/MX.
Kedua, tambahkan kode ini seperti yang ada pada gambar dibawah ini.

protected function _ci_object_to_array($object) {
    return is_object($object) ? get_object_vars($object) : $object;
}

Bagaimana memperbaiki Fatal error _ci_object_to_array() hmvc di codeingiter ?

Ketiga, monggo di run :)

Mungkin cukup sekian, maafkan jika ada salah dan banyak kekurangannya, semoga bermanfaat yah.