Dynamic Blinkie Text Generator at TextSpace.net

Feedburner

I heart FeedBurner

Sabtu, 31 Maret 2018

Error 5100 canon ip 2770

Masih mengenai printer, sesudah kita mengetahui Posisi Tempat Warna Pada Cartridge CL-811 PIXMA IP 2770 dan  Posisi Tempat Warna Pada Cartridge HP kita lanjut mengatasi masalah Error 5100 pada printer.

Error 5100 pada Printer Canon iP2770 ini bisa juga terjadi pada printer canon tipe lain seperti printer canon iP1200, printer canon iP1700, printer canon iP1200, printer canon iP1880, printer canon iP1980, juga printer canon seri MP yang ada scannernya seperti printer canon MP145, printer canon MP258, printer canon MP287, printer canon MP237, juga seri printer canon MX377 dan masih banyak lagi.
Indikasi Error 5100 pada printer canon iP2770 kerusakan ditandai dengan :
  • Printer pada layar monitor menunjukkan peringatan Error 5100.
  • Lampu resume dan lampu power blinking (berkedip-kedip) bergantian 1 kali
  • Penyebab Error 5100 pada printer canon iP2770 hampir sama penyebabnya pada printer Epson General Error.
  • Penyebab error 5100 pada printer canon tidak hanya 1 kemungkinan.
Permasalahan error 5100 pada printer canon iP2770 sering kali terjadi karena pergerakan mekanik printer terganggu, karena :
  1. Selang infus mengganggu pergerakan rumah cartridge, selang infus nyangkut terlalu pendek
  2. Gear box mekanik ada yang patah
  3. Kemungkinan ada benda yang masuk ke bagian mekanik yang mengganggu sistem kerja printer.
Solusi cara memperbaiki printer canon iP2770 Error 5100 :
  1. Jika permasalahan pada selang infus, maka rapikan selang infus sehingga tidak mengganggu pergerakan rumah cartridge printer.
  2. Jika ada bagian mekanik yang patah,  diperbaiki jika memungkinkan.
  3. Jika ada benda yang masuk ke dalam printer, printer perlu di bongkar cari benda yang menghalangi mengganggu pergerakan mekanik printer tersebut.
Bagi yang menemukan masalah baru tentang Error 5100 sudi kiranya menambahkannya pada kotak comment. Kalau masalah Error 5100 masih belum bisa teratasi sendiri silahkan dibawa ke workshop kami Dhicomp. Kami akan membantu menyelesaikannya.

Rabu, 28 Maret 2018

Dasar Dasar ERD

Di sini saya akan mencoba membahas tentang Entity Relationship Diagram atau dalam bahasa Indonesia Entitas Relation Diagram yang berkaitan erat dengan penganalisaan sebuah database.

  • Pemodelan sistem database dapat dilakukan melalui pendekatan perancangan secara konsepsual yaitu Entity Relationship Diagram (ERD atau ER Diagram).
  • ER Diagram menggambarkan tipe objek mengenai data itu di manajemen, serta relasi antara objek tersebut.
  • ER Diagram digunakan oleh seorang System Analist dalam merancang sebuah database.
  • ER Model dibuat berdasarkan persepsi atau pengamatan dunia nyata yang terdiri dari entitas dan relasi antar entitas-entitas tersebut.
  • Sebuah database dapat dimodelkan sebagai :
    • Kumpulan Entity/Entitas,
    • Relationship/Relasi di antara entitas.
  • Entitas adalah sebuah obyek yang ada (exist) dan dapat dibedakan dengan obyek yang lain.
  • Entitas ada yang bersifat konkrit, seperti : orang (pegawai, mahasiswa, dosen, dan lain-lain), buku, perusahaan, dan ada yang bersifat abstrak, seperti : kejadian, mata kuliah, pekerjaan, status dan sebagainya.
  • Setiap entitas memiliki atribut sebagai keterangan dari entitas, misal : entitas mahasiswa yang memiliki atribut NIM, nama dan alamat.
  • Setiap atribut pada entitas memiliki kunci atribut (key atribut) yang bersifat unik.
  • Beberapa atribut juga dapat ditetapkan sebagai calon kunci (candidate key). Misal :
    • Entitas Mahasiswa dengan atribut NIM sebagai key atribut.
    • Entitas Dosen dengan NID sebagai key atribut, dan sebagainya.
  • Beberapa entitas kemungkinan tidak memiliki atribut kunci sendiri, entitas demikian disebut Entitas Lemah (Weak Entity).
Jenis Atribut dan Notasi ER Diagram
  • Ada beberapa notasi yang digunakan untuk membuat ER Diagram. Misal, notasi Chen, Martin, El Masri dan Korth, akan tetapi pada umumnya, semua notasi itu sama.
  • Perbedaannya adalah pada pemilihan simbol-simbol yang digunakan.
  • Di sini, kita akan menggunakan notasi El Masri karena lebih umum dan mudah dibaca dan dimengerti.

ER Data Model
  • Entitas Lemah (Weak Entity) adalah entitas yang keberadaannya sangat bergantung dengan entitas lain.
    • Tidak memiliki Key Attribute sendiri.
    • Entitas tempat bergantung disebut Identifying Owner/Owner.
    • Entitas Lemah tidak memiliki identifiernya sendiri.
    • Atribut entitas lemah berperan sebagai Partial Identifier (identifier yang berfungsi secara sebagian).
    • Contoh :
  • Jenis-Jenis Atribut :
    • Simple/Atomic Attribute : adalah atribut yang tidak dapat dibagi-bagi lagi menjadi atribut yang lebih mendasar.
    • Composite Attribute : adalah atribut yang terdiri dari beberapa atribut yang lebih mendasar/lebih kecil lagi. Contoh :
      • Atribut ALAMAT, terdiri atas atribut JALAN, KOTA, KODE_POS.
      • Atribut NAME, terdiri atas atribut FNAME, MNAME dan LNAME pada suatu entitas (EMPLOYEE).
    • Single-Valued Attribute : adalah atribut yang hanya memiliki satu harga/nilai. Contoh :
      • Atribut UMUR pada entitas PEGAWAI.
      • Atribut LOCATIONS pada entitas DEPARTMENT.
    • Null-Values Attribute : adalah atribut dari entitas yang tidak memiliki nilai. Contoh :
      • Atribut PENDIDIKAN TINGGI untuk tamatan SMP.
    • Derived Attribute : adalah atribut yang nilainya dapat diisi atau diturunkan dari perhitungan atau algoritma tertentu. Contoh :
      • Atribut UMUR, dapat dihitung dari atribut TGL_LAHIR
      • Atribut INDEX_PRESTASI, dapat dihitung dari NILAI yang diperoleh MAHASISWA.

Cardinality Ration Constraint
Menjelaskan batasan jumlah keterhubungan satu entity dengan entity lainnya.
Jenis Cardinallity Ration :
  • 1 : 1 (One-to-One)
    Sebuah entity A diasosiasikan pada sebuah entity B, dan sebuah entity B diasosiasikan dengan paling banyak sebuah entity A.

  • 1 : N (One-to-Many)
    Sebuah entity A diasosiasikan dengan sejumlah entity B, tetapi entity B dapat diasosiasikan paling banyak satu entity A.
  • N : 1 (Many-to-One)
    Suatu entity A dapat diasosiasikan dengan paling banyak sebuah entity B, tetapi entity B dapat diasosiasikan dengan sejumlah entity di A.


  • M : N (Many-to-Many)
    Suatu entity A daat diasosiasikan dengan sejumlah entity B dan entity B dapat diasosiasikan dengan sejumlah entity di A.

Relasi dan Rasio kardinalitas
  • Relasi adalah hubungan antar entitas.
  • Relasi dapat memiliki atribut, dimana terjadi adanya transaksi yang menghasilkan suatu nilai tertentu.


  • Penjelasan :
    • Bentuk ER di atas antara Mahasiswa mengambil Mata_kuliah, ternyata ada Nilai yang dihasilkan.
    • Di mana atribut Nilai ditempatkan?

  • Penjelasan :
    • Jika atribut Nilai ditempatkan pada entitas Mahasiswa (dimana Nilai merupakan salah satu atribut dari entitas Mahasiswa), maka semua mata kuliah yang diambil oleh seorang mahasiswa menghasilkan nilai yang sama (tidak realistis).
    • Jika atribut Nilai ditempatkan pada entitas Mata_Kuliah (dimana Nilai merupakan salah satu atribut dari entitas Mata_Kuliah), maka semua mahasiswa yang mengambil mata kuliah tertentu akan memiliki nilai yang sama (tidak realistis).
    • Atribut Nilai harus ditempatkan pada relasi Mengambil, yang berarti seorang mahasiswa tertentu yang mengambil mata kuliah tertentu, akan mendapatkan nilai tertentu pula.
Derajad Relasi :
  • Derajad Relasi adalah jumlah entitas yang berpartisipasi dalam suatu relasi.
  • Derajad Relasi dapat berupa :
    • Unary Relationship (Relasi Berderajad 1).
    • Binary Relationship (Relasi Berderajad 2).
    • Ternary Relationship (Relasi Berderajad 3).
Unary Relationship (Relasi Berderajad 1)
  • adalah relasi di mana entitas yang terlibat hanya 1.
  • Sering disebut relasi rekursif (recursive relationship).
  • Contoh :

Binary Relationship (Relasi Berderajad 2)
  • atau relasi Biner adalah relasi yang melibatkan 2 entitas
  • Contoh :

Ternary Relationship (Relasi Berderajad 3)
  • adalah relasi tunggal yang menghubungkan 3 entitas yang berbeda.
  • Contoh :


Participation Constraint Dependencies
  • Menunjukkan apakah keberadaan suatu entitas bergantung penuh/tidak dengan entitas relasinya.
  • Batasan (constraint) adalah jumlah minimum relasi di mana tiap entitas dapat ikut berpartisipasi.
  • Ada 2 jenis Participation Constraint :
    • Partisipasi Total, adalah bentuk partisipasi yang menunjukkan ketergantungan penuh suatu entitas (semua dan harus).
    • Lambangnya :
    • Partisipasi Parsial, adalah bentuk partisipasi yang menunjukkan ketergantungan tidak penuh suatu entitas (beberapa, tidak harus semua).
    • Lambangnya :



Selasa, 27 Maret 2018

Membuat Ikon sendiri saat font awesome kurang lengkap

Mau membuat website, aplikasi mobile, maupun aplikasi desktop, ada beberapa hal yang tidak akan pernah bisa kita hindari. Penggunaan gambar dan ikon menjadi salah satunya. Penggunaan ikon yang menarik sama pentingnya seperti kerapihan teks atau kombinasi warna. Hal tersebut karena satu ikon bisa mewakili apa yang hendak disampaikan oleh seribu kata-kata.
Ada banyak cara untuk menambahkan ikon ke sebuah web, cara yang paling populer ialang menggunakan Font Awesome. Setelah mengimpor file-file yang diperlukan, menambah sebuah ikon semudah ini:
<i class="fa fa-bell"></i>
Meski begitu, ada situasi dimana ikon yang diberikan oleh Font Awesome tidak mencukupi. Misal, baru-baru ini penulis ingin menggunakan logo Facebook, Twitter, dan Airbnb di sebuah website. Facebook dan Twitter tersedia, tapi ikon Airbnb ternyata belum ada. Faktanya, komunitas sudah meminta agar ikon Airbnb ditambahkan sejak 3 tahun yang lalu.
Trik untuk menggunakan ikon yang tidak tersedia ialah dengan tag img. Tapi, cara ini memerlukan konfigurasi lebih banyak dibanding memakai Font Awesome. Disisi lain, Font Awesome tidak bisa memasukkan semua ikon yang diminta.
Untungnya ada cara untuk mendapatkan ikon-ikon yang kita butuhkan tanpa bergantung pada pihak ketiga. Ada sebuah tool bernama Calligraphr. Di artikel ini penulis akan menjelaskan bagaimana membuat kode seperti di bawah ini untuk menghasilkan gambar ikon seperti pada Font Awesome:
<i class="fa fa-troll"/>
<i class="fa fa-like-a-boss"/>
<i class="fa fa-lol"/>
img
Keren kan? Sekarang mari kita buat ikon tambahan versi kita sendiri.

Buat Sebuah Font

Pertama kita harus membuat font baru menggunakan Calligraphr mengikuti instruksi di website mereka. Unduh dulu templatenya. Berikut tampilan template Calligraphr:
img
Selanjutnya yang perlu kita lakukan adalah mengisi kotak-kotak tersebut dengan ikon yang diinginkan. Kita bisa mencetak template tersebut dan menggambar ikon secara manual atau memakai aplikasi Adobe Photoshop atau GIMP dengan gambar yang tersedia di internet.
Berikut gambar template setelah diisi:
img
Selanjutnya unggah template yang sudah diisi ke website calligraphr dan klik tombol "build font". Kita akan mendapatkan font baru berdasarkan template tadi. Mari kita ubah namanya menjadi FontMoreAwesome.otf.

Integrasi dengan Font Awesome

Selanjutnya kita perlu membuat file CSS baru. mari kita beri nama font-more-awesome.css
Baris pertama file ini mestilah deklarasi font-face. Berikut kodenya:
@font-face {
    font-family: 'FontMoreAwesome';
    src: url('../fonts/FontMoreAwesome.otf');
    font-weight: normal;
    font-style: normal;
}
Setelah itu kita bisa mendefinisikan ikon tambahan yang kita inginkan sebagai berikut:
.fa-troll:before {
    font-family: FontMoreAwesome;
    content: "A";
}

.fa-lol:before {
    font-family: FontMoreAwesome;
    content: "B";
}

.fa-like-a-boss:before {
    font-family: FontMoreAwesome;
    content: "C";
}
Perlu dicatat bahwa kita mendefinisikan gambar ikon sebagai pseudo-element dengan selector before. Dengan begitu, kita bisa meng-inject gambar yang ingin kita tampilkan ke sebuah elemen melalui kelas-kelas di atas.
Komponen "A", "B", dan "C" yang diisi sebagai value content merepresentasikan ikon Troll, Lol, dan Like-a-boss sesuai dengan font yang dibuat dengan Calligraphr.
Font Awesome menggunakan Unicode Private Use Area (PUA) untuk memastikan screen reader tidak membaca karakter yang merepresentasikan ikon tersebut. Tapi, dicontoh ini kita tetap menggunakan alfabet Bahasa Inggris untuk menyederhanakan prosesnya.

Menggunakan Font More Awesome

Langkah terkahir ialah memuat file CSS baru di file index.html kita seperti halnya memuat Font Awesome.
<link href="css/font-more-awesome.css" rel="stylesheet">
Ikon-ikon ini selanjutnya bisa dipakai seperti penggunaan ikon fa lainnya. Misalnya untuk membuat gambar ikon menjadi lebih besasr dan diputar kita tambahkan kelas fa-spin dan fa-lg:
<i class="fa fa-troll fa-spin fa-lg"/>
Perhatikan bahwa sebelum menuliskan fa-troll kita menuliskan fa terlebih dahulu untuk mendapatkan konfigurasi Font Awesome (agar tinggi, lebar, dan teknik renderingnya sama). Berikut isi konfigurasi asli dari Font Awesome:
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
} 
 
Sumber : https://www.codepolitan.com/trik-menggunakan-ikon-sendiri-saat-font-awesome-kurang-lengkap-5aa773430cc72 

Mempelajari UI Flutter

Membuat user interface mobile yang menarik dengan code terkadang sulit dilakukan, namun tidak demikian jika menggunakan Flutter SDK Framework. Meskipun masih beta, framework yang digadang untuk membuat aplikasi mobile multi platform ini bisa sangat membantu dalam membuat user interface yang menarik serta menjanjikan performa yang baik.
Sedikit informasi bagi yang masih ragu-ragu untuk mengadopsi Flutter
  1. Framework satu ini menjamin performa yang sangat mulus yaitu 60fps.
  2. Satu-satunya multi platform reactive SDK yang tidak menggunakan Javascript.
  3. Memiliki fitur Hot Reload yang sangat membantu dalam proses development.
  4. Tools hebat dengan Android Studio, Intellij Idea, ataupun VS Code.
  5. Kode di-compile ke native binary saat build untuk release.
  6. Dan masih banyak lagi fitur menarik lainnya.
Baiklah untuk memulai pengembangan aplikasi dengan Flutter, install perlengkapannya dengan mengikuti panduan pada halaman ini, install juga editor VS Code dan ekstensi Dart disini. Selanjutnya jika kamu lebih suka mengikuti tutorial ini dalam bentuk video dapat melihat pada video Youtube berikut ini.

Persiapan

Pertama-tama siapkan beberapa asset untuk gambar foto profil, logo, dan font khusus jika diinginkan.

Membuat Projek

Jalankan editor VS Code kemudian aktifkan fitur dart preview 2 dari menu File > Preferences > User Settings kemudian cari dart.previewDart2 dan atur nilainya menjadi true.
Selanjutnya buat projek baru dengan menekan kombinasi tombol CTRL+SHIFT+P dan tulis nama projeknya misalnya login_app. Untuk nama aplikasi harus huruf kecil semua dan tidak boleh mengandung spasi.
Selanjutnya buat assets folder pada direktori projek dan salin semua file persiapan (alucard.jpg, logo.png, nunito.ttf) ke dalam folder assets tersebut. File-file ini harus dijelaskan terlebih dahulu pada file pubspec.yaml agar dapat digunakan , tambahkan baris berikut ini tepat di bawah konfigurasi flutter seperti ini.
flutter:
  uses-material-design: true
  assets:
    - assets/logo.png
    - assets/alucard.jpg
  fonts:
      - family: Nunito
        fonts:
          - asset: assets/Nunito.ttf
Kemudian pada file main.dart hapus semua code hingga yang tersisa hanya class MyApp seperti ini:
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Kodeversitas',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.lightBlue,
        fontFamily: 'Nunito',
      ),
      home: null,
    );
  }
}

Halaman Login

Buat file baru dengan klik kanan pada folder lib selanjutnya beri nama login_page.dart. Pada halaman login ini kita membutuhkan beberapa widget yaitu widget gambar untuk logo, field untuk email, field untuk password, tombol login, dan terakhir adalah tombol flat untuk lupa password. Selengkapnya code untuk login_page.dart seperti ini:
import 'package:flutter/material.dart';
import 'package:login/home_page.dart';

class LoginPage extends StatefulWidget {
  static String tag = 'login-page';
  @override
  _LoginPageState createState() => new _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {
  @override
  Widget build(BuildContext context) {
    final logo = Hero(
      tag: 'hero',
      child: CircleAvatar(
        backgroundColor: Colors.transparent,
        radius: 48.0,
        child: Image.asset('assets/logo.png'),
      ),
    );

    final email = TextFormField(
      keyboardType: TextInputType.emailAddress,
      autofocus: false,
      initialValue: 'alucard@gmail.com',
      decoration: InputDecoration(
        hintText: 'Email',
        contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
        border: OutlineInputBorder(borderRadius: BorderRadius.circular(32.0)),
      ),
    );

    final password = TextFormField(
      autofocus: false,
      initialValue: 'some password',
      obscureText: true,
      decoration: InputDecoration(
        hintText: 'Password',
        contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
        border: OutlineInputBorder(borderRadius: BorderRadius.circular(32.0)),
      ),
    );

    final loginButton = Padding(
      padding: EdgeInsets.symmetric(vertical: 16.0),
      child: Material(
        borderRadius: BorderRadius.circular(30.0),
        shadowColor: Colors.lightBlueAccent.shade100,
        elevation: 5.0,
        child: MaterialButton(
          minWidth: 200.0,
          height: 42.0,
          onPressed: () {
            Navigator.of(context).pushNamed(HomePage.tag);
          },
          color: Colors.lightBlueAccent,
          child: Text('Log In', style: TextStyle(color: Colors.white)),
        ),
      ),
    );

    final forgotLabel = FlatButton(
      child: Text(
        'Forgot password?',
        style: TextStyle(color: Colors.black54),
      ),
      onPressed: () {},
    );

    return Scaffold(
      backgroundColor: Colors.white,
      body: Center(
        child: ListView(
          shrinkWrap: true,
          padding: EdgeInsets.only(left: 24.0, right: 24.0),
          children: <Widget>[
            logo,
            SizedBox(height: 48.0),
            email,
            SizedBox(height: 8.0),
            password,
            SizedBox(height: 24.0),
            loginButton,
            forgotLabel
          ],
        ),
      ),
    );
  }
}

Halaman Utama

Berikutnya buat file baru untuk halaman utama dengan nama home_page.dart. Pada halaman ini kita hanya akan menampikan widget foto profil dari aset alucard.jpg dan sebuah widget text untuk informasi tambahan. Widget foto profil tersebut akan dibungkus oleh widget Hero, dengan nama tag yang sama seperti tag hero logo pada login_page.dart. Tuliskan kodenya seperti ini:
import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {
  static String tag = 'home-page';

  @override
  Widget build(BuildContext context) {
    final alucard = Hero(
      tag: 'hero',
      child: Padding(
        padding: EdgeInsets.all(16.0),
        child: CircleAvatar(
          radius: 72.0,
          backgroundColor: Colors.transparent,
          backgroundImage: AssetImage('assets/alucard.jpg'),
        ),
      ),
    );

    final welcome = Padding(
      padding: EdgeInsets.all(8.0),
      child: Text(
        'Welcome Alucard',
        style: TextStyle(fontSize: 28.0, color: Colors.white),
      ),
    );

    final lorem = Padding(
      padding: EdgeInsets.all(8.0),
      child: Text(
        'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec hendrerit condimentum mauris id tempor. Praesent eu commodo lacus. Praesent eget mi sed libero eleifend tempor. Sed at fringilla ipsum. Duis malesuada feugiat urna vitae convallis. Aliquam eu libero arcu.',
        style: TextStyle(fontSize: 16.0, color: Colors.white),
      ),
    );

    final body = Container(
      width: MediaQuery.of(context).size.width,
      padding: EdgeInsets.all(28.0),
      decoration: BoxDecoration(
        gradient: LinearGradient(colors: [
          Colors.blue,
          Colors.lightBlueAccent,
        ]),
      ),
      child: Column(
        children: <Widget>[alucard, welcome, lorem],
      ),
    );

    return Scaffold(
      body: body,
    );
  }
}

Sentuhan Terakhir

Sekanjutnya kembali pada kembali pada main.dart dan tambahkan kode untuk navigasi router seperti ini:
  final routes = <String, WidgetBuilder>{
    LoginPage.tag: (context) => LoginPage(),
    HomePage.tag: (context) => HomePage(),
  };
Sekarang atur atribut routes widget MaterialApp dengan objek routes diatas. Atur juga untuk property home menjadi objek dari login_page seperti ini LoginPage(). Sehingga kode lengkap untuk main sebagai berikut:
import 'package:flutter/material.dart';
import 'login_page.dart';
import 'home_page.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  
  final routes = <String, WidgetBuilder>{
    LoginPage.tag: (context) => LoginPage(),
    HomePage.tag: (context) => HomePage(),
  };

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Kodeversitas',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.lightBlue,
        fontFamily: 'Nunito',
      ),
      home: LoginPage(),
      routes: routes,
    );
  }
}
Selesai. sekarang jalankan aplikasi Flutter dengan menekan tombol F5 namun sebelumnya jangan lupa start Android Emulator atau iOS Simulator. Hasilnya akan terlihat seperti berikut ini:
Sumber : https://www.codepolitan.com/mudahnya-membuat-antarmuka-login-cantik-dengan-flutter-5aa46d29e03d1

Senin, 26 Maret 2018

Fatal error: Call to a member function query() on null

Mengatasi error tersebut dengan mendefinisikan kembali variabel luar yang di panggil ke function tersebut ke dalam bentuk global variabel. Contoh : global $a;
Sumber :

Perbedaan Mysql dan Maria DB

MariaDB pada dasarnya merupakan fork atau versi pengembangan terbuka dan mandiri dari MySQL. Jadi MariaDB merupakan versi MySQL yang dikembangkan oleh komunitas dan bersifat terbuka, berbeda dengan MySQL yang saat ini dimiliki oleh perusahaan Oracle. MariaDB muncul sejak diakuisisinya MySQL oleh Oracle pada September 2010, Monty Program sebagai penulis awal kode sumber MySQL memisahkan diri dari pengembangan dan membuat versi yang lebih mandiri yang dikembangkan oleh komunitas yaitu MariaDB.
Jadi, pada awalnya Michael “Monty” Widenius (Pendiri MySQL AB) menbuat software manajemen database yang kita sebut sebagai MySQL sekarang ini, kemudian pada tahun 2009, MySQL diakuisisi oleh Sun Microsystem yang pada akhirnya Sun Microsystem diakuisisi oleh Oracle. Selanjutnya Michael “Monty” Widenius memilih untuk meninggalkan MySQL dan membuat proyek baru dari kode sumber yang sama denga MySQL, bernama MariaDB.
Kehadiran MariaDB sendiri bertujuan menghadirkan versi open source dari MySQL, karna pada kenyataannya sekalipu MySQL menggunakan lisensi GNU General Public License (GPL), tetapi Oracle juga menjual dibawah lisensi komersial untuk kasus-kasus di mana penggunaannya tidak cocok dengan penggunaan GPL.
Secara keseluruhan tidak ada perbedaan yang begitu signifikan antara MySQL dan MariaDB. File database dari MySQL dapat berjalan pada MariaDB, begitu juga sebaliknya karena MariaDB kompatibel dengan MySQL. Selain itu penomeran versi MariaDB mengikuti MySQL, hal ini sebagai indikasi bahwa versi MariaDB 5.x kompatibel dan bekerja selayaknya dengan MySQL 5.x.
Walaupun MariaDB kompatibel dengan MySQL, akan tetapi terdapat beberapa perbedaan fitur, dan juga permasalah kompatibilitas antara lain :
  • MariaDB menyertakan semua engine open source yang populer, tidak ada InnoDB, sebagai gantinya digunakan XtraDB.
  • MariaDB mengklaim memiliki peningkatan kinerja dan kecepatan dibandingkan dengan MySQL
  • Terdapat beberapa ekstensi open source baru yang dimiliki MariaDB, akan tetapi tidak dimiliki oleh MySQL.
MariaDB mengklaim telah memenuhi standar SQL99 Complete, sebagaiman halnya dengan MySQL. Sehingga tidak akan ada perbedaan dalam query pada MariaDB ataupun MySQL.
Sebagai info tambahan, nama MariaDB sendiri diambil dari nama putri Michael “Monty” Widenius, yaitu Maria.
Baiklah, itu dia sedikit informasi mengenai perbedaan MySQL dan MariaDB. Semoga dapat bermanfaat serta dapat menjadi referensi bagi kita semua untuk memilih software manajemen database yang terbaik untuk kita masing-masing. Apabila anda memiliki kritik, saran, atau pertanyaan, silakan sampaikan melalui kolom komentar di bawah.
 Sumber : http://tamatamvan.web.id/perbedaan-mysql-dan-mariadb/

Selasa, 20 Maret 2018

Metodology Scrum

Sejarah Scrum

Scrum pertama kali diperkenalkan dalam artikel Takeuchi and Nonaka yang berjudul “The New New Product Development Game”[1] dan dipublikasikan oleh Harvard Business Review (HBR) pada tahun 1986.
Pada artikel tersebut Takeuchi dan Nanaka melakukan survey pada beberapa perusahaan di Jepang, antara lain ; Fuji Xerox, Canon, 3M dan Honda. Survei tersebut dilakukan untuk melihat bagaimana perusahaan-perusahaan tersebut dapat membuat produk baru dengan kualitas produk yang sangat bagus, secara sukses.
Takeuchi dan Nanaka menemukan bahwa perusahaan-perusahaan tersebut menggunakan pendekatan yang sama dalam mengembangkan produknya. Metode Scrum digunakan pertama kali dalam pengembangan perangkat lunak dimulai oleh Jeff Sutherland, Easel Corporation pada tahun 1993.
Metode Scrum pertama kali diformulasikan dan dipresentasikan pada Object Management Group tahun 1995 dengan judul paper “Scrum Development Process” [2].

Apa itu Scrum ?

Scrum secara garis besar dapat diilustrasikan sebagai berikut [3],
Scrum building block disebut Sprint. Sprint adalah sebuah kotak-waktu (yang biasanya mempunyai durasi 1 hingga 4 minggu) dimana tim pengembang fokus dalam mencapai target yang jelas. Setiap Sprint selalu berakhir dengan diikuti Sprint Review, dimana hasil yang sudah dibuat dipresentasikan dan didemontrasikan didalam sebuah rapat tim.

Istilah-istilah dalam Scrum

Product Backlog
Pemilik Proyek menyusun dan mengumpulkan semua permintaan dan kebutuhan sistem, misalnya fitur-fitur yang dibutuhkan dan-atau kebutuhan non-fungsional sistem. Setelah tujuannya sudah ditetapkan, semua permintaan dan kebutuhan tersebut dibagi-bagi menjadi bagian-bagian kecil yang mana setiap bagian kecil tersebut harus mempunyai nilai dan layak untuk dikembangkan.
Pemilik Proyek juga menentukan skala prioritas dalam pengerjaan bagian-bagian kecil tersebut. Bagaimana dan seperti apa bagian-bagian kecil tersebut diimplementasikan dan di-deliver?
Pertanyaan tersebut akan menghasilkan sebuah to-do-list berdasarkan kebutuhan pasar dan kebutuhan pelanggan yang selalu berubah seiring dengan berjalannya waktu.
Backlog Refinement
Backlog harus di-maintain dengan baik dan tepat oleh Tim Scrum untuk dilakukan perencanaan, sehingga Sprint dapat berjalan dengan lancar. Hal-hal yang harus dilakukan dalam me-maintain backlog antara lain adalah melakukan proses estimasi dan breakdown kebutuhan, Hal tersebut dilakukan agar kondisi Sprint (1-4 minggu) terpenuhi.
Oleh karena itu, sangat membantu apabila tim mengalokasikan waktu khusus setiap minggu untuk melakukan Penghalusan Backlog (Backlog Refinement), dan disaat yang sama juga melakukan perencanaan.
Sprint
Sprint adalah kotak-waktu yang berisi periode kerja dimana pada sprint fokus terhadap delivery produk berdasarkan item-item yang dipilih dari Product Backlog.
Didalam Sprint selalu ditetapkan waktu pekerjaan secara konsisten dan Sprint yang baru dimulai sesegera mungkin setelah sprint yang ada telah selesai dikerjakan.
Daily Scrum
Setiap hari, Tim Scruam harus melakukan pertemuan (rapat) selama maksimal 15 menit. Hal ini dilakukan dengan tujuan untuk mensinkronkan progres, mengidentifikasi masalah dan menyelesaikan masalah yang ada dalam mengerjakan pekerjaannya.
Pertanyaan yang biasa ditanyakan adalah :
  • Apa yang anda lakukan sejak pertemuan terakhir ?
  • Apa rencana yang anda lakukan sampai pertemuan berikutnya ?
  • Apa ada suatu masalah yang membuat anda tidak dapat mengerjakan pekerjaan yang telah direncanakan sebelumnya ?
Fokuslah pada pertanyaan 1 dan 2, untuk melihat sejauh mana progress yang telah dibuat dan untuk menentukan siapa yang mengerjakan apa setiap harinya.
Pertanyaan ketiga digunakan untuk mencari solusi dari permasalahan yang muncul. Mulai dari pertanyaan yang bersifat teknis hingga non-teknis yang dinilai dapat mengacaukan pekerjaan.
Sprint Review
Setiap Sprint selalu berakhir dengan mendemontrasikan dan mempresentasikan fitur-fitur yang telah dikerjakan. Hal tersebut dilakukan untuk memastikan bahwa fitur-fitur tersebut dapat bekerja dengan baik.
Sebaiknya Sprint review dilakukan dalam team yang kecil, sebelum produk tersebut didemontrasikan dan dipresentasikan pada team yang besar (Pemilik Produk, pelanggan dan manajemen perusahaan).
Sprint Retrspective
Didalam Sprint Retrspective, Tim Scrum merefleksikan bagaimana pekerjaan-pekerjaan berjalan pada Sprint sebelumnya?
Harapan yang ingin dicapai pada Sprint Retrspective adalah adanya perbaikan tindakan sehingga Sprint berikutnya dapat dikerjakan dengan lebih baik lagi.
Perbaikan-perbaikan tersebut harus di-implementasi-kan pada Sprint berikutnya.

ROLES

Development Team
Development team atau tim pengembang adalah team yang mendesain dan melakukan proses problem-solvers. Biasanya team tersebut terdiri dari 3-9 orang.
3-9 orang adalah team yang paling optimal dalam menggunakan metode scrum berdasarkan beberapa penelitian yang ada.
Pembagian tugas dan distribusi informasi ditentukan diantara anggota tim itu sendiri. Setiap anggota tim bertanggungjawab atas keberhasilan keluaran sprint yang dilakukan.
Product Owner
Product Owner atau pemilik proyek harus memastikan bawha tim pengembang bekerja sesuai dengan target yang telah ditetapkan dilihat dari kacamata bisnis.
Pemilik proyek melakukan manajemen terhadap Product Backlog, yang dibreakdown menjadi to-do-list, sehingga semua keinginan dan kebutuhan sistem dapat terekam dengan baik berdasarkan keuntungan yang diterima dengan mempertimbangkan sisi bisnisnya.
Pemilik proyek fokus pada bagaimana produk dihasilkan nantinya. Selain itu pemilik proyek juga harus selalu melihat berapa banyak dana yang dikeluarkan dalam mengembangkan produk dan seberapa besar pendapatan yang dihasilkan oleh produk tersebut.
Scrum Master
Scrum master atau tenaga ahli Scrum adalah kombinasi dari pelatih, fixer dan penjaga gawang.
Hal yang paling penting dari Scrum Master adalah, Scrum Master harus dapat mengarahkan dan melatih Tim Pengembang dan Pemilik Proyek untuk memastikan bahwa mereka selalu berada dalam kondisi terbaiknya dalam meraih kesuksesan.
Scrum Master memimpin rapat setiap harinya - Daily Scrum. Scrum master harus memastikan bahwa tim pengembang tidak teralihkan fokusnya pada hal-hal diluar proyek/pekerjaan.
Scrum Team
Scrum Team atau Tim Scrum adalah gabungan dari Tim Pengembang, Pemilik Proyek dan Tenaga Ahli Scrum.
Semua entitas bertanggungjawab atas keberhasilan proyek tersebut, dilihat dari kualitas produknya maupun dari waktu dan biaya. Target yang paling utama adalah kepuasan pelanggan.                                                                                                                                                              

Sumber : https://www.dictio.id/t/apakah-yang-dimaksud-dengan-metode-scrum/302/2