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.


Sunday, February 26, 2017

Tutorial sederhana menggunakan HTM5 Canvas (untuk pemula)

Tutorial sederhana menggunakan HTM5 Canvas (untuk pemula)

Canvas adalah bagian dari HTML5 dan memungkinkan untuk melakukan render scriptable bentuk 2D dan gambar bitmap. Canvas awalnya diperkenalkan oleh Apple untuk digunakan di Mac OS komponen X WebKit sendiri pada tahun 2004, powering aplikasi seperti widget Dashboard dan browser Safari. Kemudian, pada tahun 2005 diadopsi dalam Gecko browser versi 1.8, dan Opera pada tahun 2006, dan distandarisasi oleh Web Hypertext Application Technology Working Group (WHATWG) dari spesifikasi yang diusulkan baru untuk teknologi web generasi berikutnya.

Contoh sederhana penggunaan html5 canvas, pada contoh di bawah ini saya membuat box 2D sederhana dengan menggunakan canvas.



HTML5 Canvas sendiri sudah di dukung oleh browser masa kini seperti :
  • Google chrome 4.0 (ke atas)
  • Microsoft edge 9.0 (ke atas)
  • Mozila firefox 2.0 (ke atas)
  • Safari 3.1 (ke atas)
  • Opera 9.0 (ke atas)
HTML5 Canvas memiliki beberapa kemampuan, sebagai berikut :

# Draw text
Untuk menggambar teks pada kanvas, kita dapat menggunakan fillText (string, x, y) bersama dengan properti font untuk mengatur font, ukuran, dan gaya teks (mirip dengan font yang ada di CSS).



#Draw Graphics
Pada kasus ini saya tidak akan membuat contoh yang rumit, saya hanya akan membuat garis sederhana dengan menggunakan canvas.

Untuk menggambar garis, saya menggunakan empat metode canvas API. Sita mulai dengan method beginPath() yang menginstruksikan browser untuk menggambar path baru. Selanjutnya, saya akan menggunakan moveTo(x, y), method ini berfungsi untuk mengatur titik awal garis. Lalu saya akan menggunakan method lineTo(x, y) menetapkan titik akhir dan menarik garis dengan menghubungkan dua titik.

Pada titik ini, garis tersebut akan ditarik, tapi masih bisa terlihat. Untuk membuatnya terlihat saya menggunakan method stroke() untuk menampilkan garis dengan warna hitam (default).



Diluar itu ada juga beberapa contoh pengunaan HTML5 Canvas yang sangat kompleks, kamu bisa melihatnya di :
Untuk pembelajaran lebih lanjut kamu bisa lihat di :
Satu lagi sebelum saya mengakhiri materi tentang html5 canvas ini, untuk mempermudah kamu dalam membuat canvas, di internet sudah terdapat beberapa source yang dapat kamu pakai, diataranya :
Mungkin pembahasan kali ini saya cukupkan sampai disini, mohon maaf bila ada salah-salah kata dan kekurangan. Semoga bermanfaat.

~ danke schön

Sumber : 

Monday, January 23, 2017

Cara register dan unregister package di bower

Cara register dan unregister package di bower

Pada pembahasan kali ini saya akan sedikit membahas tentang bower, di mana saya topik yang akan di bahas adalah cara register package, cara unregister package dan cara mengatasi error "Note that you can manually force an interactive shell with --config.interactive" pada bower.

Sebelum kepembahasan saya ingin membahas sedikit tentang bower itu sendiri. Jadi penjelasan singkatnya bower itu merupakan salah satu package manager untuk pengembangan front-end web. Bower ini berfungsi untuk memudahkan kita mengatur package atau library apa saja yang kita butuhkan saat membangun suatu aplikasi, dalam hal ini front-end (css/js). Jika sudah paham mari kita masuk ke pokok pembahasan.

*) Sebelum mempraktikan ini, pastikan kamu  sudah memasang git di laptop/PC kamu.

Cara registrasi
Untuk meregistrasi package ke bower sangatlah mudah.
Pertama buka git bash, command line, or terminal.
Kedua ketik perintah bower register example git://github.com/user/example.git

Keterangan :
  • bower register adalah perintah untuk mendaftarkan sebuah package
  • example adalah nama package yang akan kamu daftarkan
  • git://github.com/user/example.git adalah alamat git package yang akan kamu daftarkan
Ketiga, tunggu sampai proses selesai dan di akhir proses akan ada pesan successfully
Keempat, untuk memastikan bahwa package kamu sudah terdaftar, coba ketikan bower info nama_package. Jika sudah terregistrasi maka akan muncul detail dari package kamu. Selain cara itu kamu bisa melakukan pencarian di libraries.io lalu ketik nama package kamu di sana.

Cara unregister
Tidak susah untuk mengunregistrasi package di bower, berikut caranya.
Pertama, buka git bash, command line or terminal.
Kedua, ketik perintah bower login.
ketiga, masukan username (enter), masukan password (enter).
Keempat, lalu selanjutnya ketikan perintah bower unregister nama_package.

Keterangan :
Pada bagian username dan password di isi dengan username dan password akun github.

Untuk memastikan package sudah terunregister, kamu bisa mengecek dengan bower info atau searching di libraries.io.

Cara mengatasi error
Error yang pernah saya alami adalah pada saat mau menjalankan perintah bower login, dan pada saat itu saya memakai git bash. kurang lebih seperti ini errornya.

Cara register dan unregister package di bower

Cara menangani error ini cukup mudah, kamu cukup mengganti layar hitam kamu dengan menggunakan command line (untuk windows), dan masalah terselesaikan.

Mungkin cukup sekian tutorial kali ini, semoga bermanfaat.

Terima kasih


Thursday, January 12, 2017

Simple hacking dengan menggunakan chrome

Simple hacking dengan menggunakan chrome

Terakhir kali saya nulis itu sekitar dua bulan lalu. Dan kali ini saya tidak akan membahas seputar koding, agak melenceng cuma masih tetap berada di jalur (IT). "Simple hacking dengan menggunakan chrome", judulnya terdengar seperti sebuah tutorial jahat karena pada judul tersebut terdapat kata hacking.

Yang perlu anda ketahui, tujuan saya menulis tutorial ini bukanlah untuk mengajari anda berbuat jahat, melainkan hanya sebatas pengetahuan saja. Tidak ada salahnya toh memperluas pengetahuan. Karena ada pepatah mengatakan "baik buruknya ilmu kita punya itu tergantunng bagaimana kita menggunakannya". So ini hanya untuk pengetahuan saja yah.

Mari kita bahas

Simple hacking dengan menggunakan chrome

Perhatikan gambar diatas, pada gambar tersebut ada bagian yang saya tandai menggunakan kotak merah dan biru.

Bagian yang di tandai merah dan biru akan muncul pada saat  kita melakukan login (facebook, twitter dan lain-lain) menggunakan browser chrome. Pernahkah anda berpikir apa yang terjadi setelah anda menekan tombol "save" berwarna biru ? Ya benar sekali, username dan password yang anda gunakan akan tersimpan di browser. Lalu apa masalahnya kalau username dan password kita tersimpan di browser ? Letak masalah bukan ada pada saat username dan password itu tersimpan, tapi masalahnya password yang tersimpan di browser akan bisa dilihat bukan dalam bentuk bintang-bintang (******) , melainkan bentuk password aslinya.

Syarat untuk menampilkan password akun yang tersimpan di google chrome sangatlah mudah, yaitu anda hanya perlu tahu password laptop/PC nya saja (bagi laptop/PC yang menggunakan password). Jika tidak percaya lihat langkah-langkah dibawah ini.

1- Ketik chrome://settings/passwords pada address bar. Maka anda akan bertemu dengan tampilan seperti gambar di bawah ini.

Simple hacking dengan menggunakan chrome

2- Pada gambar di atas, anda bisa lihat beberapa contoh akun yang saya simpan seperti, instagram, tokopedia, dan twitter.

3- Lalu pada bagian passwod yang berbentuk bintang-bintang (*****) terdapat sebuah tombol "show", pada saat tombol "show" di tekan, anda akan di minta password laptop/PC, dan abrakadabra, password yang tadinya berbentuk bintang-bintang (****) akan bisa terlihat password aslinya. Tekan tombol "X" untuk menghapus username dan password akun yang tersimpan.

Selain cara di atas, ada satu lagi cara yang lebih epic, cara ini memungkinkan kita untuk mengexport semua daftar aku yang tersimpan di browser, file hasil export-nya sendiri berupa excel (.CSV).

1- Ketik chrome://flags/ pada address bar.
2- Cari bagian "Password import and export" dengan cara menekan CTRL+F, lalu ubah dari setelan "default" menjadi "enable". Jika sudah, relaunch browser kamu.
3- Ketik chrome://settings/passwords, untuk tampilan tidak ada yang berubah, cuma yang membedakan akan ada 2 tombol baru, yaitu tombol "export" dan "import". Seperti yang tadi saya bilang, tombol "export" ini memungkinkan kita mengeksport semua daftar akun yang kita simpan di browser.

Simple hacking dengan menggunakan chrome

Penerapan

Tadi di atas saya sudah membahas langkah-langkah bagaimana mengambil password dan cara melihat password yang tersimpan. Pada bagian ini saya akan memberikan contoh sederhana penerapan hack pakai cara ini. Caranya sangat sederhana, anda cukup pancing saja orang yang ingin anda hack akunnya login di laptop/PC anda, lalu selanjutnya anda diam-diam klik tombol "save" seperti yang sudah di jelaskan diatas. Jika sudah tersimpan, pasti anda tahu apa yang harus anda lakukan :).

Penangkal

Pada bagian ini saya ingin memberi tahu cara sederhana agar bisa terhindar dari jebakan hack ini. Sederhana, jika anda melakukan login di tempat lain, untuk mengetahui apakan di browser terdapat password yang disimpan, coba tekan CTRL+SHIFT+DEL , maka akan muncul tampilan seperti ini

Simple hacking dengan menggunakan chrome

  • Pada bagian "Obliterate the following items from" pilih "the beginning of time".
  • Lalu pada centang bagian "password", ini berfungsi menghapus password yang telah disimpan. (jika terdapat keterangan "none" maka itu artinya tidak ada password yang tersimpan)
  • Lalu centang bagian "autofill from data", ini berfungsi menghapus username yang telah disimpan. (jika terdapat keterangan "none" maka itu artinya tidak ada username yang tersimpan)
  • Selanjutnya klik tombol "clear browser data"
Selain cara di atas, kamu bisa juga masuk ke chrome://settings/passwords dan menghapus data akun yang tersimpan satu persatu.


Kesimpulan

Jangan pernah sekali-kali menyimpan username dan password akun di browser walau laptop/PC anda diproteksi menggunakan password, karena itu sangat beresiko.

Untuk kurangnya saya minta maaf, semoga pembahasan kali ini bisa menambah wawasan anda, tutorial saya cukupkan sampai disini.

Terima kasih :)


Sunday, November 27, 2016

Cara mudah install phpmyadmin pada apache2 di linux

Cara mudah install phpmyadmin pada apache2 di linux

Kali ini saya akan memabahas tentang bagaimana cara menginstall phpmyadmin pada apache2 di linux. Tutorial ini merupakan lanjutan dari artikel :
Pada praktiknya saya menggunakan linux distro zorin 10 (setara dengan ubuntu 14.04). Lebih lengkapnya kamu bisa membaca artikel yang sebelumnya agar tidak bingung.

Untuk langkah pertama lakukan update dengan cara menjalankan perintah berikut di terminal

sudo apt-get update

Kedua, jalan kan perintah berikut

sudo apt-get install phpmyadmin

Pada saat menjalankan pertintah yang kedua ada beberapa konfigurasi yang harus kamu atur, diantaranya :
  • Untuk konfig server silahkan pilih apache2, untuk aksi pemilihan kamu bisa menekan "TAB" , lalu ENTER
  • Pilih YES ketika ditanya "whether to use dbconfig-common to set up the database".
  • Nanti kamu akan diminta kata sandi admin database mysql yang sudah kamu set sebelumnya.
Ketiga, aktifkan ekstensi php5-mcrypt dengan cara :

sudo php5enmod mcrypt

Keempat, restart apache-nya

sudo service apache2 restart

Silahkan akses phpmyadmin kamu dengan cara mengakses "localhost/phpmyadmin" atau "127.0.0.1/phpmyadmin" di browser. Jika instalasi berhasi maka akan tampak seperti ini

Cara mudah install phpmyadmin pada apache2 di linux

Jika hasil tidak nampak seperti gambar di atas maka instalasi masih ada yang kurang.

Lalu bagaimana cara memperbaikinya ? Caranya mudah, ikuti step di bawah ini.

Konfigurasi tambahan

Sepengalaman saya menginstall phpmyadmin, kadang step ini sudah terkonfig otomatis saat instalasi dan kadang juga tidak. Kalau tidak berarti kamu harus mengikuti step ini.

Jalankkan perintah dibawah ini satu per satu

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo systemctl reload apache2.service

Jika sudah, jangan lupa restart apache-nya. Kemudian kamu coba akses kembali "localhost/phpmyadmin" atau "127.0.0.1/phpmyadmin" di browser.

--Finish--

Mungkin tutorial kali ini saya cukupkan sampai di sini, semoga bermanfaat.
Terima kasih.