Mengenal Komputasi Awan / Cloud Computing Secara Sederhana ☁

Coba deh kamu nge-tweet ? pakai app Twitter di smartphone ?, lalu buka komputer desktop / laptop ?, pasti tweet-an yang sama akan muncul baik di smartphone atau komputer desktop. Kenapa itu bisa terjadi? Karena tweet-an kamu tersimpan di Awan / Cloud ☁.

tweet-smartphone

Selain terjadi proses komputasi di smartphone, selama proses penyimpanan tersebut, terjadi pula komputasi melalui Internet, dalam contoh ini proses tersebut dilakukan oleh layanan Twitter.

tweet-desktop

Lalu Kenapa Disebut “Awan / Cloud”?

Continue reading “Mengenal Komputasi Awan / Cloud Computing Secara Sederhana ☁”

Membuat Data Dummy di Laravel dengan Seeder

UPDATE 12 Maret 2019: Tulisan ini diupdate menggunakan Laravel 5.8

Ketika mengembangkan aplikasi, kita butuh data dummy di masukkan ke database untuk melakukan pengujian bahwa proses aplikasi yang sedang dibangun telah berjalan dengan baik. Laravel menyertakan metode sederhana dalam melakukan hal tersebut dengan fitur Database Seeding.

Kita ambil contoh dari skema database yang telah dibuat pada tulisan sebelumnya, kita akan memasukkan data kota pada tabel cities.

Menulis Seeder

Untuk menghasilkan sebuah seeder, gunakan perintah Artisan make:seeder berikut:

php artisan make:seeder CityTableSeeder

Kelas seeder CityTableSeeder yang dihasilkan akan disimpan di direktori database/seeds. Di dalam kelas seeder terdapat metode run() yang di dalamnya dapat dimasukkan proses menambahkan data ke tabel. Buka file database/seeds/CityTableSeeder dan masukkan proses menambahkan data berikut:

public function run() {
    $cities = [
        ['name' => 'Jakarta', 'map' => 'https://goo.gl/maps/ugdFU'],
        ['name' => 'Bogor', 'map' => 'https://goo.gl/maps/ExzYT'],
        ['name' => 'Depok', 'map' => 'https://goo.gl/maps/30JxC'],
        ['name' => 'Tangerang', 'map' => 'https://goo.gl/maps/Yn0yZ'],
        ['name' => 'Bekasi', 'map' => 'https://goo.gl/maps/T17QQ']
    ];

    DB::table('cities')->insert($cities);
}

Proses penambahan data di atas menggunakan query builder yang disediakan Laravel.

Menjalankan Seeder

Laravel menyertakan kelas DatabaseSeeder yang dijalankan dengan perintah Artisan db:seed. Masukkan Kelas seeder yang ingin dijalankan dengan memanggil metode call(). Berikut isi metode run() yang berisikan kelas-kelas seeder yang dipanggil:

public function run()
{
    $this->call(CityTableSeeder::class);
}

Berikut perintah untuk menjalankan seeder:

php artisan db:seed

Selain menjalan seed yang dipanggil dari kelas DatabaseSeeder, kelas seeder tersendiri dapat dipanggil langsung dari perintah Artisan db:seed dengan menyertakan opsi –class:

php artisan db:seed --class=CityTableSeeder

Kode Github

Menggunakan Fungsi di PHP, Buat Format Tanggal dalam Bahasa Indonesia

Dalam satu kasus, kamu punya data dalam bentuk tanggal, tertulis '2015-07-11', dan kamu ingin menulisnya dalam Bahasa Indonesia menjadi '11 Juli 2015'. Data tanggal sering disimpan dengan format 'yyyy-mm-dd', dan tugas kamu adalah merubahnya menjadi format di atas. Mari kita tulis proses tersebut:

$months = [
 'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 
 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'
 ];
$date = '2015-07-11';
$dates = explode('-', $date);
echo $dates[2] . ' ' . $months[intval($dates[1]) - 1] . ' ' . $dates[0];

Kasus lain, kamu punya tabel data yang di dalamnya terdapat satu kolom dengan format tanggal sebagai berikut:

Nama Tanggal Lahir Jenis Kelamin
Andi 1990-09-12 Laki-laki
Budi 1991-12-20 Laki-laki
Rani 1989-10-07 Perempuan

Kamu tidak mungkin melakukan proses perubahan format tanggal pada setiap baris di kolom Tanggal Lahir, karena ada kemungkinan baris tersebut akan bertambah dan bertambah. Cara terbaik adalah dengan menyimpan proses tersebut ke dalam fungsi dan memanggilnya ketika dibutuhkan.

Katakanlah fungsi yang akan kita buat bernama indonesiaDate. Fungsi itu dipanggil dengan menyertakan satu parameter berisikan tanggal yang ingin diubah bentuk. Mari kita buat fungsi tersebut:

function indonesiaDate($date) {
 $months = [
 'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 
 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'
 ];
 $dates = explode('-', $date);
 return $dates[2] . ' ' . $months[intval($dates[1]) - 1] . ' ' . $dates[0];
}

Fungsi tersebut dapat dipanggil berkali kali dan di mana pun fungsi tersebut dibutuhkan.

echo indonesiaDate('1990-09-12');

Dalam pemprograman, selain fungsi dikenal pula prosedur. Hampir sama, hanya saja jika fungsi mengembalikan suatu nilai, sedangkan prosedur tidak mengembalikan nilai. Di PHP, mendefinisikan prosedur sama saja dengan mendefinisikan fungsi:

function showToday() {
 echo indonesiaDate(date('Y-m-d')); 
}

showToday();

Database Migration pada Laravel, Version Control untuk Database

UPDATE 7 Maret 2019: Tulisan ini diupdate menggunakan Laravel 5.8

Kamu bekerja dalam tim pengembangan dan menginginkan skema database tetap terbaru meskipun teman satu tim lain melakukan perubahan? Ya, kamu bisa menggunakan fitur Database Migration pada Laravel untuk meyakinkan bahwa tim pengembang mempunyai skema database terbaru. Fitur ini mirip dengan version control untuk database.

Pada tulisan kali ini, kita akan membuat sebuah migration database dengan nama skema cities (bentuk data mirip dengan tutorial sebelumnya: Memulai Laravel PHP, Membuat Aplikasi Daftar Kota). Migration biasanya dipasangkan dengan fitur schema builder Laravel, sehingga di dalam menulis migration menggunakan schema builder yang digunakan untuk membangun skema database aplikasi.

Menghasilkan Kelas Migration

Untuk menghasilkan kode migrasi, kamu dapat menggunakan perintah Artisan make:migration. Berikut adalah contoh perintah membuat tabel cities:

php artisan make:migration create_cities_table

Setelah perintah tersebut dijalankan, output yang dihasilkan sebagai berikut:

Created Migration: 2019_03_07_040935_create_cities_table

Laravel menyimpan kode migration pada direktori database/migrations dan secara otomatis diberikan timestamp pada nama file yang memungkinkan Laravel untuk menentukan urutan migration. Lokasi migration dari contoh di atas adalah database/migrations/2019_03_07_040935_create_cities_table.

Berikut kode yang dihasilkan dari membuat migration yang telah dilakukan:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCitiesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('cities', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('cities');
    }
}

Struktur Migration

Kelas migration berisikan dua metode yaitu up() dan down(). Metode up() digunakan untuk menambahkan tabel baru, kolom dan indeks ke dalam database. Sedangkan metode down() mengembalikan operasi (rollback) yang telah dijalankan oleh method up().

Kita masukkan kode schema builder untuk membuat tabel cities di metode up():

public function up()
{
    Schema::create('cities', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('map');
        $table->timestamps();
    });
}

Sedangkan metode down() berisikan kode schema builder untuk menghapus tabel cities:

public function down()
{
    Schema::dropIfExists('cities');
}

Menjalankan Migration

Untuk menjalankan semua migration yang belum dijalankan menggunakan perintah berikut:

php artisan migrate

Sebelum menjalankan migrasi, pastikan koneksi database telah diatur melalui file .env:

...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=password
...

Ketika perintah Artisan di atas dijalankan, skrip yang berada di dalam metode run() yang akan dijalankan. Perlu diperhatikan bahwa jika mendapatkan error “class not found”, coba jalankan perintah:

composer dump-autoload

Mengembalikan Migration

Untuk mengembalikan operasi migration terakhir dapat menggunakan perintah Artisan migrate:rollback.

php artisan migrate:rollback

Perlu dicatat bahwa semua file migration (batch) terakhir yang telah dijalankan akan dikembalikan, metode down() yang dijalankan. Untuk mengembalikan (rolling back) semua migration pada aplikasi, menggunakan perintah Artisan migrate:reset.

php artisan migrate:reset

Kode Github

Membuat Laman Statis (Static Pages) pada CodeIgniter 3

Panduan ini sangat mendasar untuk kamu yang baru memulai membuat aplikasi web atau website dengan CodeIgneter 3. Kamu akan dipandu membuat laman statis (static pages) dengan menggunakan dasar dari routing, controller dan view.

Instalasi CodeIgniter

Silahkan download melalui http://www.codeigniter.com/download, jangan lupa untuk memilih CodeIgniter 3. Kemudian ekstrak file zip tersebut. Letakkan direktori-direktori dan file-file CodeIgniter tersebut pada web server yang telah terinstal, baik local ataupun production server. Untuk kebutuhan development di local, kamu bisa menjalankan CodeIgniter menggunakan PHP built-in web server

php -S localhost:8000 index.php

codeigniter-wellcome

Buka alamat http://localhost:8000 di browser dan ketika tidak ada masalah, Codeigneter sudah berjalan. Perintah PHP di atas menggunakan index.php sebagai skrip route. CodeIgniter menyertakan direktori “user_guide” dan file-file statis seperti JPG/PNG, CSS, JS dan lain sebagainya, masukkan skrip berikut di file index.php agar mereka bisa diakses menggunakan PHP built-in web server, letakkan di baris paling atas.

$filename = __DIR__ . preg_replace('#(?.*)$#', '', filter_input(INPUT_SERVER, 'REQUEST_URI'));
if (php_sapi_name() === 'cli-server' && (is_file($filename) || filter_input(INPUT_SERVER, 'REQUEST_URI') === '/user_guide/'))
    return false;

Routing

Biasanya segmen URL CodeIgniter adalah domain.com/class/function/ID. Pada aplikasi ini kita menginginkan URL domain.com/page, di mana page adalah laman statis yang akan dipanggil. File routing CodeIgniter disimpan di /application/config/routes.php, buka file tersebut dan masukkan kode routing sebagai berikut:

$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';

Controller

Controller yang dipakai untuk menangani file statis adalah Pages. Buat Class Pages di file controller /application/controllers/Pages.php

class Pages extends CI_Controller {
    public function view($page = 'home')
    {
        if ( ! file_exists(APPPATH.'/views/pages/'.$page.'.php'))
            show_404();

        $data['title'] = ucfirst($page);

        $this->load->view('layouts/header', $data);
        $this->load->view('pages/'.$page, $data);
        $this->load->view('layouts/footer', $data);
    }
}

Sesuai dengan route yang didefinisikan sebelumnya, kita menggunakan method view() dengan satu argumen $page. Di dalam method ini terdapat instruksi untuk memanggil file-file view.

View

Dari controller yang sudah didefinisikan, ada dua file view yang harus disediakan, yaitu layout/header dan layout/footer. File view tersebut kita gunakan berfungsi sebagai layout halaman web yaitu header dan footer, artinya bisa digunakan di manapun pada semua view yang membutuhkan header dan footer.

CodeIgneter menyimpan file view di direktori /application/views/ dan dipanggil menggunakan method $this->load->view(). Berikut file view layout/header yang disimpan di /application/views/layouts/header.php:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Static Page</title>
    <link href="/assets/bootstrap.min.css" rel="stylesheet">
    <link href="/assets/main.css" rel="stylesheet">
</head>
<body>
<div class="container">

Sedangkan file view layout/footer yang disimpan di /application/views/layouts/footer.php:

</div>
<footer class="footer">
    <div class="container">
        <p class="text-muted">&copy; <?=date('Y')?> My Website</p>
    </div>
</footer>
</body>
</html>

Terakhir adalah membuat isi dari laman statis yang dipanggil melalui $this->load->view('pages/'.$page, $data). Variabel $page mengindikasikan bahwa file view tersebut berdasarkan request URL yang dipanggil, misalkan domain.com/about, maka file view yang dipanggil pages/about. File view pages/home adalah default laman statis (ketika memanggil URL domain.com/), buat file /application/views/pages/home.php:

<div class="page-header">
    <h1><?=$title?></h1>
</div>
<p class="lead">
    Selamat datang di Home
</p>
<p>Silahkan klik <a href="about">Laman Tentang</a> untuk melihat profil perusahaan kami.</p>

Buat contoh laman statis lain misalkan About yang disimpan di /application/views/pages/about.php:

<div class="page-header">
    <h1><?=$title?></h1>
</div>
<p>
    Perusahaan kami bergerak dalam jasa pembuatan website.
    Silahkan kontak ke alamat email <a href="mailto:[email protected]">[email protected]</a>
    untuk menanyakan lebih detil.
</p>

Aplikasi membutuhkan file-file asset CSS yang dapat di download dari http://static.dtkode.ninja/downloads/codeigniter-static-pages-assets.zip, ekstrak dan letakkan di direktori root.

Konsumerisme dan Permasalahan Orangtua di “Era Instan”

Sehabis bangun tidur, smartphone yang pertama kali dilihat anak. Di meja makan, jemari anak masih saja asyik memainkan gadget. Berangkat sekolah atau sambil menunggu angkutan umum, mata anak tidak lepas dari layar smartphone, bahkan sampai menjelang tidur. Tidak sadarkah bahwa itu adalah prilaku konsumtif?

“Mengapa anak-anak zaman dulu, ketika diberi tahu orangtua lebih menurut dari pada anak zaman sekarang?”

Begitulah pertanyaan yang diajukan pembicara kepada peserta Smart Parents Class yang diadakan oleh Smart Parents Titian Insan Cemerlang pada hari minggu kemarin.

Sekarang adalah “Era Instan”, semua serba instan. Ketika dahulu orangtua harus berusaha keras dalam melakukan sesuatu; katakanlah bersekolah dengan jarak tempuh sangat jauh dan harus berjalan kaki, kini semua dilakukan dengan mudahnya dengan kendaraan. Tidak menghargai proses, itulah yang kebanyakan terjadi pada anak zaman sekarang.

Kembali ke belakang, saya pertama kali mencoba melakukan pengaplikasian teknologi 4G pada tahun 2005 di perusahaan lama, dan sekarang-sekarang inilah teknologi itu banyak dipakai (secara massive –red). Sekarang Jepang dan negara-negara maju sudah mulai melakukan uji coba teknologi 5G.

Aku mencoba menjabarkan pengalamanku selama bekerja di bidang IT ketika ditanya teknologi apa yang akan terjadi 20 tahun ke depan. Semua ada proses, teknologi yang terjadi sekarang adalah proses pengembangan yang telah dilakukan jauh-jauh hari.

Ketika dikaitkan dengan prilaku anak dengan kemajuan teknologi informasi saat ini, mereka sebenarnya melakukan konsumsi produk teknologi. Chatting, update status di sosial media, streaming video dan aktifitas lainnya, ke semua itu adalah prilaku mengkonsumsi produk-produk teknologi. Bayangkan jika prilaku tersebut dilakukan secara berlebihan, konsumerisme menjangkit anak-anak di negeri ini.

smart-parents-class

Ketika anak dilahirkan untuk zamannya, pentingnya orangtua memiliki visi yang jelas dalam membesarkan dan mendidik anak-anaknya, sehingga tidak terjebak pada pesatnya kemajuan teknologi.

Dari semua materi yang disampaikan pada Acara Smart Parents Class kemarin, penekanan utama terletak pada pentingnya menjadi orangtua visioner. “Anak-anak visioner terbentuk dari orangtua-orangtua visioner”.

Pictures from:

Mem-Program dengan Python Menggunakan Enthought Canopy

Untuk menulis program, kamu butuh lingkungan pemprograman untuk meningkatkan produktifitas. Begitu juga Python, Enthought Canopy membawa paket terintegrasi distribusi berbagai tool Python. Enthought Canopy menyediakan one-click Python installation, user-friendly Package Manager, integrated analysis environment yang menyediakan 100+ paket Python termasuk di dalamnya paket utama scientific dan analytic seperti NumPy, SciPy, Pandas, Matplotlib, IPython dan lain sebagainya.

instalasi-enthought-canopy

Unduh  dari link https://store.enthought.com/downloads/. Pilih paket instalasi sesuai dengan Sistem Operasi yang terinstal di komputer.  Enthought Canopy mendukung Windows, Mac dan Linux, baik 32-bit maupun 64-bit. Tulisan ini menggunakan Windows sebagai Sistem Operasi.

Python Environment

python-environment-enthought-canopy

Setelah instalasi selesai, langkah terakhir adalah mengatur lingkungan Python (Python Environment) di sistem yang berjalan. Kamu dapat mengubah direktori lingkungan Python sesuai dengan kubutuhan.

Selanjutnya, Canopy akan menanyakan apakah distribusi Python dari Canopy sebagai lingkungan default. Pilih “Yes” jika menginginkan, atau pilih “No” jika kamu sudah memiliki lingkungan Python dari distribusi lain.

python-environment-enthought-canopy-default

Aplikasi Canopy

Selain menyertakan distribusi Python 2.7 dan berbagai paket scientific, disertakan pula aplikasi yang dinamakan Canopy. Aplikasi ini terdiri dari Advance Text Editor dengan syntax highlighting, Python code auto-completion, dan error checking, Paket Manager Grafis, Dokumentasi Online, dan On demand Training yang terintegrasi.

Jika kamu belum memiliki akun Enthought, silahkan daftar melalui aplikasi Canopy. Atau silahkan login jika sudah mendaftar sebelumnya. Dengan akun tersebut, kamu dapat menikmati fitur-fitur gratis dari Enthought.

aplikasi-canopy-python

Kode Editor

enthought-canopy-code-editor-python

Pada aplikasi Canopy, pilih “Editor”. Kode Editor Canopy terdiri dari 3 bagian, yaitu File Browser, Kode Editor dan Python pane yang terintegrasi dengan IPython.

Untuk mencoba, silahkan ketikkan contoh ekspresi di bawah ini dengan IPython dan lihat hasilnya:

4+6
'hallo'

Buatlah satu file Python dan coba ketikkan kode berikut, kemudian klik icon Run.

pi = 3.14159
radius = 11.2
print pi * radius

Memulai Laravel PHP, Membuat Aplikasi Daftar Kota

UPDATE 6 Maret 2019: Tulisan ini diupdate menggunakan Laravel 5.8. Klik di sini untuk mengetahui sistem yang dibutuhkan oleh Laravel 5.8.

Aplikasi akan memunculkan halaman web yang berisikan daftar kota sekitar Jakarta yang dikenal dengan Jabodetabek. Setiap item kota terdapat link yang mengarah ke lokasi peta kota tersebut. Langkah pembuatan aplikasi mulai dari instalasi Laravel, membuat routing dan view, sampai dengan hasil akhir dijalankan di web browser.

Instalasi Laravel

Laravel (http://laravel.com) menggunakan Composer (https://getcomposer.org) untuk instalasi dan pengelolaan dependency, pastikan Composer telah terinstal di komputer. Jika belum, instalasi dapat dilakukan melalui terminal (pada sistem operasi berbasis *nix):

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

Jika kamu menggunakan Windows, installer Composer dapat diunduh melalui https://getcomposer.org/Composer-Setup.exe. Informasi unduh Composer dapat dilihat langsung dari https://getcomposer.org/download/.

Continue reading “Memulai Laravel PHP, Membuat Aplikasi Daftar Kota”

Built-in Web Server untuk Development PHP

Sebelum aplikasi PHP kamu berjalan di server dan diakses secara publik, ada fase di mana kamu harus mencoba kode-kode yang telah dibuat pada saat pengembangan (development) aplikasi. Sejak rilis PHP 5.4, PHP menyediakan fitur Built-in Web Server. Dengan fitur ini memungkinan pemprogram mencoba kode-kode tanpa harus memasang full-featured web server seperti Apache pada saat fase pengembangan sedang berlangsung.

Continue reading “Built-in Web Server untuk Development PHP”

Rilis LibreOffice 4.1

Screen LibreOffice
Screen LibreOffice

The Document Foundation sebagai tim pengembang LibreOffice mengumumkan rilis terbaru LibreOffice 4.1. Sebagai mana tertulis dalam blognya “a landmark for interoperability”, LibreOffice menunjukkan berbagai kemajuan, di mana di dalamnya membawa peningkatan kompatibilitas format-format file proprietary dan file legacy (file format lama). Dengan begitu, baik pengguna aplikasi perkantoran proprietary (seperti Microsoft Office) maupun pengguna LibreOffice dapat membuka dokumen tanpa harus kehilangan bentuk layout maupun isinya.

Interoperabilitas yang ditingkatkan antara lain ekspor dan impor untuk Microsoft OOXML begitu pula untuk format file lama Micosoft Office dan filter file RTF.

Peningkatan dan perbaikan yang ada di LibreOffice secara lengkap dapat dilihat dari http://www.libreoffice.org/download/4-1-new-features-and-fixes