Rabu, 03 Mei 2017

Published Mei 03, 2017 by with 16 comments

Cara Koneksi Database SQL Server (MSSQL) di Codeigniter 3


Macamateri kembali membahas mengenai database, kali ini berbagi pengalaman mengenai cara menghubungkan database Microsoft SQL Server di Codeigniter 3.x. Untuk kamu yang ingin tahu cara migrasi dari MySQL ke MSSQL, kamu bisa mengunjungi artikel sebelumnya di Cara Migrasi Database Dari MySQL ke Microsoft SQL Server .
Sebelumnya kamu harus tahu dahulu versi dari server yang digunakan. Berikut adalah konfigurasi server yang Macamateri gunakan dalam melakukan tes:

  1. Windows 10 64bit
  2. Xampp 3.2.1
  3. PHP versi 5.6.8
  4. Codeigniter 3.1.4
  5. SQL Server 2008 Express Edition

Karena itu, tutorial ini berlaku untuk kamu yang menggunakan sistem operasi Windows dan menjalankan web server serta SQL servernya di OS Windows.

Langkah-Langkah

Pertama, kamu lakukan cek versi dari PHP yang digunakan, pastikan webserver dalam keadaan Running. lalu buat file php (misal info.php) yang berisi:
<?php phpinfo(); ?>
taruh dalam htdocs / folder projek kamu.
PHP info
Setelah itu cari (CTRL+F pada browser) "Thread Safety" , ingat statusnya enabled atau disabled.
Thread Safety

Kedua, unduh tools pendukung, yaitu Microsoft Drivers for PHP for SQL Server, dan Microsoft ODBC Driver 11 for SQL Server. Bisa kamu unduh pada tautan berikut
Microsoft Drivers for PHP for SQL Server: 
Ketika "Download" pilih sesuai dengan versi PHP yang kamu gunakan (lihat PHP info pada langkah pertama).
Version 4.0 supports PHP 7.0+ on Windows and Linux
Version 3.2 supports PHP 5.6, 5.5, and 5.4 on Windows
Version 3.1 supports PHP 5.5 and 5.4 on Windows
Version 3.0 supports PHP 5.4 on Windows
Karena Macamateri menggunakan PHP versi 5.6.x maka pilih  SQLSRV32.EXE.
Setelah itu lakukan installasi / extract ke folder baru atau langsung ekstrak ke php extensions folder (misal) C:\Xampp\php\ext.
Disini yang kamu perhatikan adalah nama dari file-nya. Pada langkah pertama kita sudah mengetahui versi PHP yang digunakan dan status dari Thread Safety. Langsung dicontohkan, macamateri menggunakan PHP versi 5.6 dan status dari Thread Safety adalah Enabled, sehingga extension driver yang digunakan adalah php_sqlsrv_56_ts.dll. Copy file tersebut dalam folder C:\Xampp\php\ext atau sesuaikan dengan folder extension php yang ada di webserver kamu (googling ya).

Lalu buka file php.ini yang ada di C:\Xampp\php\php.ini. Lalu tambahkan baris teks ini:
extension=php_sqlsrv_56_ts.dll
Contoh Isi File php.ini
Kamu bisa tambahkan baris diatas setelah baris ini extension=php_mysqli.dll (ctrl+f untuk mencari)

Setelah itu download dan install Microsoft® ODBC Driver 11 for SQL Server® - Windows
https://www.microsoft.com/en-us/download/details.aspx?id=36434
Sesuaikan dengan OS yang kalian gunakan, jika mengunakan 32bit, install yang ENU\x86\msodbcsql.msi .

Ketiga, kamu buka SQL Server Configuration Management (bisa kamu temukan di Start > All Programs > Microsoft SQL Server 20XX > SQL Server Configuration Management) lalu buka SQL Server Network Configuration > Protocols for SQLEXPRESS > double click pada TCP/IP , Enabled pilih Yes.
SQL Server Configuration Manager
Setelah itu buka tab IP Addresses , pada bagian IPAll, TCP Dynamic Ports dikosongkan, dan pada TCP Port isikan 1433, Apply dan OK. dan Restart SQL Server.
Settings TCP Port
Restart SQL Server
Keempat, lakukan konfigurasi pada Codeigniter, dengan cara buka file database.php yang ada di application/config/database.php seperti berikut:
$active_group = 'dbsqlsrv';
$db['dbsqlsrv'] = array(
 'dsn' => '',
 'hostname' => '127.0.0.1',
 'port' => '1433',
 'username' => 'USERNAME SQLSERVER',
 'password' => 'PASSWORD SQLSERVER',
 'database' => 'NAMA DATABASE',
 'dbdriver' => 'sqlsrv',
 'dbprefix' => '',
 'pconnect' => FALSE,
 'db_debug' => (ENVIRONMENT !== 'production'),
 'cache_on' => FALSE,
 'cachedir' => '',
 'char_set' => 'utf8',
 'dbcollat' => 'utf8_general_ci',
 'swap_pre' => '',
 'encrypt' => FALSE,
 'compress' => FALSE,
 'stricton' => FALSE,
 'failover' => array(),
 'save_queries' => TRUE
);

Kelima, selamat... sekarang kamu bisa menggunakan SQL Server di Codeigniter.


Referensi : https://futbolsalas15.wordpress.com/2014/02/23/7-steps-to-make-sql-server-and-codeigniter-works/ dan Stackoverflow serta pengalaman pribadi
Read More
      edit

Jumat, 28 April 2017

Published April 28, 2017 by with 10 comments

Cara Migrasi Database Dari MySQL ke Microsoft SQL Server


Kali ini macamateri akan berbagi pengalaman mengenai tutorial / cara migrasi database dari MySQL ke SQL Server atau SQL Express. Pada tutorial ini SQL Server yang digunakan adalah SQL Server 2008 Express Edition (Gratis) . Jika kamu menggunakan SQL Server diatas 2008, masih bisa menggunakan tutorial ini, lain hal jika sql server yang kamu gunakan dibawah 2008.

Tools

Tools atau aplikasi yang diperlukan ialah diantaranya:
1. Microsoft SQL Management Studio (Ini untuk membuat database SQL Servernya)
2. SQL Server Migration Assistant for MySQL (Tools untuk migrasi dari MySQL ke SQL Server)

Macamateri asumsikan anda sudah menginstall dan menjalankan MySQL Server dan SQL Server versi kalian masing-masing. Disini Macamateri menggunakan MySQL Server versi 5.6.x dan SQL Server 2008 Express Edition.

Macamateri menggunakan SQL Server Migration Assistant for MySQL versi 7.3 (64bit) dan MySQL Connector ODBC 5.3.7 (64bit) yang dapat kamu unduh pada tautan berikut:

Pastikan sudah menginstall tools diatas, untuk Nomor 2 dan 3, pastikan arsitektur os nya sama, jika kamu menggunakan SQL Server Migration Assistant for MySQL 32bit, maka MySQL Connector ODBC nya pun harus 32bit, begitu juga yang menggunakan arsitektur 64bit.
MySQL Connector ODBC Download Page

Langkah-Langkah

  1. Buka SQL Server Management Studio untuk membuat database baru, macamateri asumsikan kamu sudah terbiasa menggunakan SQL Server Management Studio (seperti mengkoneksinya). 
    Buat Database Baru
    Lalu buat database baru dengan klik kanan pada Object Explorer > Database > New Database

    Window New Database

    Database Name masukkan sesuai yang diinginkan, pada kali ini disesuaikan dengan nama database yang ada di MySQL, lalu tekan OK.
  2. Buka SQL Server Migration Assistant Tools, pilih File > New Project, dan pilih Migrate To sesuai dengan SQL Server versi yang ada kamu install.
    New Project SSMA
  3. Sebelum ketahap ini, jika database MySQL yang akan anda migrasikan ada di Cpanel / Hosting seperti Niagahoster atau lainnya, masuk ke phpMyAdmin, silahkan baca Cara Masuk ke phpMyAdmin jika bingung cara untuk mengaksesnya. Setelah itu anda bisa mengeksport database tersebut dan import ke server local agar mempermudah anda. Pastikan MySQL Server kamu sudah running, pada contoh ini Macamateri menggunakan XAMPP untuk menjalankan MySQL Servernya. Lalu pilih menu Connect to MySQL (lihat gambar)
    Connect to MySQL


    Pilih Provider MySQL ODBC yang telah kamu install sebelumnya, pastikan arsitektur (bit) nya sama dengan SQL Migration Assistent yang kamu jalankan. Masukkan server name 127.0.0.1 atau localhost, server port default : 3306, user name dan password sesuaikan dengan settingan mysql server yang kamu gunakan.

  4. Koneksikan juga SQL Server dengan mengklik tombol Connect to SQL Server
    Connect to SQL Server


    Masukkan nama database yang telah dibuat pada langkah nomor 1, lalu klik tombol Connect.
  5. Jika langkah-langkah diatas berhasil, maka akan ada folder tree pada explorer, pada bagian MySQL Metadata Explorer pilih database yang akan di migrasi.
    Convert Schema


    a. Pilih Database yang ingin di migrasi
    b. Klik tombol Modify untuk mengubah Schema menjadi dbo
    c. Ikuti langkah-langkah yang ada pada gambar diatas
    d. Terakhir klik Convert Schema
  6. Lalu ke SQL Server Metadata Exploler dan klik kanan pada database yang ada di SQL Server, dan pilih Synchronize with Database
    Synchronize with Database


    Maka akan muncul jendela seperti dibawah, lalu pilih OK.
    Window Syncronize with Database


  7. Setelah itu kembali ke MySQL metadata explorer, pilih Database yang ingin di migrasi, lalu pilih Migrate Data pada toolbar.
    Migrate Data
  8. Jika langkah 7 berhasil, maka akan muncul jendela seperti ini:
    Data Migration Report
  9. Kembali ke SQL Server Management Studio, dan lakukan pengecekan pada database yang telah di migrasi, contohnya melakukan query SELECT:
    Select Query
  10. Selamat, kini database dari MySQL sudah migrasi ke SQL Server.
Sekian tutorial cara migrasi database dari MySQL ke Microsoft SQL Server (2008 Express Edition), jika ada yang kurang paham atau ada masalah, silahkan tanyakan dikolom komentar, atau diskusi di Fanspage Macamateri di Facebook.

Terima Kasih.
Read More
      edit

Sabtu, 25 Maret 2017

Published Maret 25, 2017 by with 3 comments

Memasang Syntax Highlighter Pada Blog atau Website


Pada text editor seperti Notepad++, Sublime atau Dreamweaver, sudah sering kita jumpai baris kode yang warna-warni, itu disebut Syntax Highligher.
Syntax highlighter bisa dibilang sebagai tempat atau wadah untuk menaruh kode (sintak) bahasa pemorgraman yang biasanya berisi fungsi, variabel, atau sintak lainnya yang dibedakan dengan warna-warna. Tujuannya agar mempermudah saat membaca baris kode dari bahasa pemrograman tersebut.

Lalu bagaimana jika kita ingin terapkan pada blog atau website?

Untuk menaruh kode program pada website/blog, kita bisa menggunakan tag <pre></pre> pada HTML, namun tidak memiliki warna seperti syntax highlighter sehingga cukup sulit untuk dibaca. Maka dari itu berikut adalah cara memasang atau membuat syntax highlighter pada blog atau website.
Pada kali ini, syntax highlighter yang digunakan adalah HighlightJs. Installasinya cukup mudah, hanya perlu memasukkan beberapa baris kode seperti untuk memanggil CSS dan JS. Dan untuk pemanggilannya, kita hanya perlu memasukkan kode program yang ingin ditampilkan dalam tag html <pre></pre>.

Langkah pertama:

Tambahkan kode untuk memanggil CSS highlightjs, anda bisa menaruhnya sebelum tag </head>:
<link href='//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.8.0/styles/atom-one-dark.min.css' rel='stylesheet'/>
Banyak pilihan style untuk warna dari highlighterjs, anda bisa mengunjungi https://highlightjs.org/static/demo/ untuk demonya, dan cari nama dari style yang dipilih pada link berikut https://cdnjs.com/libraries/highlight.js/ untuk mendapatkan css nya.

Langkah kedua:

Tambahkan kode untuk memanggil JS highlightjs, anda bisa menaruhnya sebelum tag </body>
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.9.0/highlight.min.js'/>

Langkah ketiga:

Lalu tambahkan kode berikut pada bagian bawahnya (langkah kedua) untuk mengaktifkan highlightjs
<script type='text/javascript'>
  //<![CDATA[
    $(document).ready(function() {
      $('pre').each(function(i, block) {
        hljs.highlightBlock(block);
      });
    });
  //]]>
</script>

Langkah keempat:

Silahkan coba dengan menggunakan tag PRE pada kode yang ingin ditampilkan dengan syntax highlighter
<pre>(kode dari bahasa pemograman atau lainnya)</pre>


Semoga tutorial kali ini membantu anda dalam memasang atau menerapkan syntax highlighter pada blog/website anda. Jika ada yang ingin ditanyakan, tinggalkan komentar dibawah.
Read More
      edit

Jumat, 17 Maret 2017

Published Maret 17, 2017 by with 7 comments

Menggunakan Fungsi MYSQL_CONNECT Di PHP 7


Mungkin saat anda pertama kali mempelajari bahasa pemrograman PHP dan MySQL, untuk dapat berkomunikasi antara PHP dengan MySQL kita mengenal fungsi-fungsi seperti mysql_connect(), mysql_query(), dan mysql_fetch_array(). Fungsi-fungsi ini tergabung ke dalam MySQL extension.
Namun pada PHP versi 5.5, PHP memutuskan untuk membuat MySQL extension berstatus deprecated. Yang artinya pengaksesan database MySQL menggunakan fungsi mysql extension sudah tidak disarankan lagi dan dihapus pada PHP versi 7 (PHP 7).

Sebagai pengganti mysql extension, PHP menyediakan mysqli extension (mysqli merupakan singkatan dari MySQL Improved). Mysqli extension ini pada dasarnya adalah perbaikan dari mysql extension dan dikembangkan untuk mendukung fitur-fitur terbaru untuk MySQL 4.1 keatas. [1]
Atau Menggunakan PDO (PHP Data Objects), adalah extension atau penambahan fitur dalam PHP yang dirancang sebagai interface universal untuk pengaksesan berbagai jenis database (tidak hanya MySQL). [1]

Namun bagaimana jika kita sudah terlanjur memiliki program yang sudah jadi, tapi memakai fungsi dari mysql extention? haruskah kita mengubah satu-satu fungsi yang tertulis menjadi mysqli ? jawabannya tidak perluHanya dengan mengunduh file mysql_mysqli.inc.php [2] (unduh pada tautan), dan sertakan pada file koneksi project anda, maka fungsi mysql_ akan terganti dengan mysqli_.
contoh penerapan pada file koneksi.php
<?php
//tambahkan require / include file yang telah diunduh
require "mysql_mysqli.inc.php";

$host="localhost";
$user="root"; 
$password=""; 
$database="db_macamateri"; 

//sambungkan ke database
$koneksi=mysql_connect($host,$user,$password);
//...........
?>

Jika tidak dapat mengunduh file mysql_mysqli.inc.php pada tautan diatas, berikut adalah syntax php dari mysql_mysqli.inc.php [2].
<?php
if(!is_callable('mysql_connect')) {
 
 
define('MYSQL_BOTH',MYSQLI_BOTH);
define('MYSQL_NUM',MYSQLI_NUM);
define('MYSQL_ASSOC',MYSQLI_ASSOC);
define('MYSQL_CLIENT_COMPRESS',MYSQLI_CLIENT_COMPRESS);
define('MYSQL_CLIENT_IGNORE_SPACE',MYSQLI_CLIENT_IGNORE_SPACE);
define('MYSQL_CLIENT_INTERACTIVE',MYSQLI_CLIENT_INTERACTIVE);
define('MYSQL_CLIENT_SSL',MYSQLI_CLIENT_SSL);


  /**
 * @param  resource  $identificativo_connessione
 * @return int
 **/
function mysql_affected_rows($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
  if(!is_object($identificativo_connessione)) return false;
 return $identificativo_connessione->affected_rows;
}

 /**
 * @param  resource  $identificativo_connessione
 * @return string
 **/
function mysql_client_encoding ($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_character_set_name($identificativo_connessione);
}

 /**
 * @param  resource  $identificativo_connessione
 * @return bool
 **/
function mysql_close ($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_close($identificativo_connessione);
}



/**
 * @param  string  $server
 * @param  string  $nome_utente
 * @param  string  $password
 * @param  int  $flag_client
 * @return resource
 **/
function mysql_pconnect ($server='' ,$nome_utente='' ,$password='' ,$flag_client=0){
 return mysql_connect($server,$nome_utente,$password,false,$flag_client,'p:');
}


 /**
 * @param  string  $server  es: 127.0.0.1 or 127.0.0.1:3306 or localhost:/var/run/mysqld/mysqld.sock or :/var/run/mysqld/mysqld.sock  
 * @param  string  $nome_utente
 * @param  string  $password
 * @param  bool  $nuova_connessione
 * @param  int  $client_flags
 * @return resource
 **/
function mysql_connect ($server='' ,$nome_utente='' ,$password='' ,$nuova_connessione=false ,$client_flags=0,$persistente=''){
 if(func_num_args()===0 && $_SERVER['MYSQL_CONN']) foreach ($_SERVER['MYSQL_CONN'] as $hash=>&$conns) return $conns;
       
 $hash=sha1(serialize(func_get_args()));
 if(!$nuova_connessione && $_SERVER['MYSQL_CONN'][$hash]) return $_SERVER['MYSQL_CONN'][$hash];
  
 if(!$server)   $server = ini_get("mysqli.default_host");
 $server=trim($server);
 if(!$nome_utente) $nome_utente = ini_get("mysqli.default_user");
 if(!$password)    $password= ini_get("mysqli.default_pw"); 
 
 $link = mysqli_init();
 
 $socket=null;
 if(strpos($server,':')!==false) list($server,$porta)=explode(':',$server,2);
                            else $porta=ini_get("mysqli.default_port"); 
    if(!$server) $server='localhost';     
    if(!is_numeric($porta)) {
                          $socket=$porta;
                          $porta=null;
                          }
  if(!$porta && $porta!==null) $porta=3306;
  $ok=@mysqli_real_connect($link,$persistente.$server,$nome_utente,$password,'',$porta,$socket,$client_flags);
  if(!$ok) return false;
 //print_r(mysqli_connect($persistente.$server,$nome_utente,$password,'',$porta,null,$flags));
 //print_r($link);
     $_SERVER['MYSQL_CONN'][$hash]=&$link;
 return $link;        
}

 /**
 * @param  string  $nome_database
 * @param  resource  $identificativo_connessione
 * @return bool
 **/
function mysql_create_db ($nome_database ,$identificativo_connessione=null){
  if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
  return !@mysqli_query($identificativo_connessione,"create database `$nome_database`"); 
}

 /**
 * @param  resource  $identificativo_risultato
 * @param  int  $numero_riga
 * @return bool
 **/
function mysql_data_seek ($identificativo_risultato ,$numero_riga){
   mysqli_store_result($identificativo_risultato);
   return @mysqli_data_seek( $identificativo_risultato , $numero_riga );
}

 /**
 * @param  resource  $risultato
 * @param  int  $riga
 * @param  mixed  $campo
 * @return string
 **/
function mysql_db_name ($risultato ,$riga ,$campo=null){
 if(!@mysqli_data_seek( $risultato , $riga )) return false;
 $riga = mysqli_fetch_assoc($risultato);
 if(!$campo) return $riga['Database'];
     else return $riga[$campo];
}

 /**
 * @param  string  $database
 * @param  string  $query
 * @param  resource  $identificativo_connessione
 * @return resource
 **/
function mysql_db_query ($database ,$query ,$identificativo_connessione=null){
  if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
     $rs=mysqli_query($identificativo_connessione,"select database()");
  $prec_db=@mysqli_fetch_row ($rs);
  @mysqli_query($identificativo_connessione,"use `$database`",MYSQLI_USE_RESULT);
   $rs=mysqli_query($identificativo_connessione,$query,MYSQLI_STORE_RESULT);
  if(strtolower($prec_db[0])!=strtolower($database)) @mysqli_query($identificativo_connessione,"use `{$prec_db[0]}`",MYSQLI_USE_RESULT);
  return $rs; 
}

 /**
 * @param  string  $nome_database
 * @param  resource  $identificativo_connessione
 * @return bool
 **/
function mysql_drop_db ($nome_database ,$identificativo_connessione=null){
    if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
   return !@mysqli_query($identificativo_connessione,"drop database `$nome_database`");
}

 /**
 * @param  resource  $identificativo_connessione
 * @return int
 **/
function mysql_errno ($identificativo_connessione=null){
  if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
  if(!is_object($identificativo_connessione)) return false;
  return $identificativo_connessione->errno;
}

 /**
 * @param  resource  $identificativo_connessione
 * @return string
 **/
function mysql_error ($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
  if(!is_object($identificativo_connessione)) return false;
  return $identificativo_connessione->error;
}

 /**
 * @param  string  $stringa_senza_escape
 * @return string
 **/
function mysql_escape_string ($stringa_senza_escape){
 return @mysql_real_escape_string($stringa_senza_escape);
}

 /**
 * @param  resource  $risultato
 * @param  int  $tipo_risultato
 * @return array
 **/
function mysql_fetch_array ($risultato ,$tipo_risultato=null){
 if($tipo_risultato===null) $tipo_risultato=MYSQL_BOTH;
 return @mysqli_fetch_array($risultato ,$tipo_risultato);
}

 /**
 * @param  resource  $risultato
 * @return array
 **/
function mysql_fetch_assoc ($risultato){
    return @mysqli_fetch_assoc($risultato);
}

 

 /**
 * @param  resource  $risultato
 * @return array
 **/
function mysql_fetch_lengths ($risultato){
   return @mysqli_fetch_lengths($risultato);
}

 /**
 * @param  resource  $risultato
 * @return object
 **/
function mysql_fetch_object ($risultato){
   return @mysqli_fetch_object($risultato);
}

 /**
 * @param  resource  $risultato
 * @return array
 **/
function mysql_fetch_row ($risultato){
 return @mysqli_fetch_row ($risultato);
}


 /**
 * @param  resource  $risultato
 * @param  int  $indice_campo
 * @return int
 **/
function mysql_field_seek ($risultato ,$indice_campo){
 return @mysqli_field_seek($risultato ,$indice_campo);
}


 /**
 * @param  resource  $risultato
 * @return bool
 **/
function mysql_free_result ($risultato){
 @mysqli_free_result ($risultato);
}

 /**
 * @return string
 **/
function mysql_get_client_info (){
     if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
   if(!is_object($identificativo_connessione)) return false;
  return $identificativo_connessione->client_info;
}

 /**
 * @param  resource  $identificativo_connessione
 * @return string
 **/
function mysql_get_host_info($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
  if(!is_object($identificativo_connessione)) return false;
 return $identificativo_connessione->host_info;
}

 /**
 * @param  resource  $identificativo_connessione
 * @return int
 **/
function mysql_get_proto_info($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 if(!is_object($identificativo_connessione)) return false;
 return $identificativo_connessione->protocol_version;
}

 /**
 * @param  resource  $identificativo_connessione
 * @return string
 **/
function mysql_get_server_info ($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 if(!is_object($identificativo_connessione)) return false;
 return $identificativo_connessione->server_info;
}

 /**
 * @param  resource  $identificativo_connessione
 * @return string
 **/
function mysql_info ($identificativo_connessione=null){
  if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
  if(!is_object($identificativo_connessione)) return false;
  return $identificativo_connessione->info;
}

 /**
 * @param  resource  $identificativo_connessione
 * @return int
 **/
function mysql_insert_id ($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 if(!is_object($identificativo_connessione)) return false;
 return $identificativo_connessione->insert_id;
}

 /**
 * @param  resource  $identificativo_connessione
 * @return resource
 **/
function mysql_list_dbs ($identificativo_connessione=null){
   if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
   $rs=@mysqli_query($identificativo_connessione,'SHOW DATABASES');
   @mysqli_store_result($rs);
   return $rs;
}

 
 /**
 * @param  resource  $risultato
 * @return int
 **/
function mysql_num_fields ($risultato){
 return @mysqli_num_fields ($risultato);
}

 /**
 * @param  resource  $risultato
 * @return int
 **/
function mysql_num_rows ($risultato){
 return @mysqli_num_rows($risultato);
}



 /**
 * @param  resource  $identificativo_connessione
 * @return bool
 **/
function mysql_ping ($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_ping($identificativo_connessione);
}



 /**
 * @param  string  $query
 * @param  resource  $identificativo_connessione
 * @return resource
 **/
function mysql_query ($query ,$identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_query($identificativo_connessione,$query );
}

 /**
 * @param  string  $stringa_seza_escape
 * @param  resource  $identificativo_connessione
 * @return string
 **/
function mysql_real_escape_string ($stringa_seza_escape ,$identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_real_escape_string($identificativo_connessione,$stringa_seza_escape);
}


 /**
 * @param  string  $nome_database
 * @param  resource  $identificativo_connessione
 * @return bool
 **/
function mysql_select_db ($nome_database ,$identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_select_db($identificativo_connessione,$nome_database);
}

 /**
 * @param  string  $charset
 * @param  resource  $identificativo_connessione
 * @return bool
 **/
function mysql_set_charset ($charset ,$identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_set_charset($identificativo_connessione,$charset);
}

 /**
 * @param  resource  $identificativo_connessione
 * @return string
 **/
function mysql_stat ($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 if(!is_object($identificativo_connessione)) return false;
 return $identificativo_connessione->stat;

}


 /**
 * @param  resource  $identificativo_connessione
 * @return int
 **/
function mysql_thread_id ($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
  if(!is_object($identificativo_connessione)) return false;
  return $identificativo_connessione->thread_id;
}

 /**
 * @param  string  $query
 * @param  resource  $identificativo_connessione
 * @return resource
 **/
function mysql_unbuffered_query($query ,$identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
    return @mysqli_query($identificativo_connessione,$query,0);
 }



/**
 * @param  string  $nome_database
 * @param  string  $nome_tabella
 * @param  resource  $identificativo_connessione
 * @return resource
 **/
function mysql_list_fields ($nome_database ,$nome_tabella ,$identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_query($identificativo_connessione,"select * FROM `$nome_database`.`$nome_tabella` limit 1");
}

/**
 * @param  resource  $risultato
 * @param  int  $indice_campo
 * @return string
 **/
function mysql_field_name ($risultato ,$indice_campo){
 $info=@mysqli_fetch_field_direct($risultato,$indice_campo);
 return $info->name;
}

/**
 * @param  resource  $risultato
 * @param  int  $indice_campo
 * @return string
 **/
function mysql_field_flags ($risultato ,$indice_campo){
 $info=@mysqli_fetch_field_direct($risultato,$indice_campo);
 return $info->flags;
}


/**
 * @param  resource  $risultato
 * @param  int  $indice_campo
 * @return int
 **/
function mysql_field_len($risultato ,$indice_campo){
 $info=@mysqli_fetch_field_direct($risultato,$indice_campo);
 return $info->length;
}

/**
 * @param  resource  $risultato
 * @param  int  $indice_campo
 * @return string
 **/
function mysql_field_type ($risultato ,$indice_campo){
 $info=@mysql_fetch_field($risultato,$indice_campo);//necessario perchè type in mysqli è numerico
 return $info->type;
}


/**
 * @param  resource  $risultato
 * @param  int  $indice_campo
 * @return string
 **/
function mysql_field_table ($risultato ,$indice_campo){
 $info=@mysqli_fetch_field_direct($risultato,$indice_campo);
 return $info->table;
}


/**
 * @param  resource  $identificativo_connessione
 * @return resource
 **/
function mysql_list_processes ($identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_query($identificativo_connessione,"show processlist",MYSQLI_STORE_RESULT);
}

/**     
 * @param  string  $database
 * @param  resource  $identificativoi_connessione
 * @return resource
 **/
function mysql_list_tables ($database ,$identificativo_connessione=null){
 if(!$identificativo_connessione) $identificativo_connessione=mysql_connect();
 return @mysqli_query($identificativo_connessione,"SHOW TABLES",MYSQLI_STORE_RESULT);

}


/**
 * @param  resource  $risultato
 * @param  int  $i
 * @return string
 **/
function mysql_tablename ($risultato ,$i){
 @mysqli_data_seek($risultato,$i);
 $row=@mysqli_fetch_row($risultato);
 return $row[0];
}



/**
 * @param  resource  $risultato
 * @param  int  $campo
 * @param  mixed  $campo
 * @return mixed
 **/
function mysql_result ($risultato ,$riga ,$colonna=null){
 $esito=@mysqli_data_seek($risultato,$riga);
 if(!$esito && $colonna!==null) return @mysqli_field_seek($risultato,$colonna);
 return $esito;
}

/**
 * @param  resource  $risultato
 * @param  int  $indice_campo
 * @return object
 **/
function mysql_fetch_field ($risultato ,$indice_campo=0){
 
 mysqli_field_seek($risultato, $indice_campo);
 $info=mysqli_fetch_field($risultato);
 
 $out=new stdclass();
 $out->name=$info->name;
 $out->table=$info->table;
 $out->def='';
 $out->max_length=$info->max_length;
 $infos=array();
 if($info->orgtable && $info->db && $info->orgname ) {
  $rs=mysqli_query(mysql_connect(),"select is_nullable,column_key,numeric_precision,column_type
                                         from `information_schema`.`COLUMNS` where
                                        table_schema='{$info->db}' and
                                        table_name='{$info->orgtable}' and
                                           column_name='{$info->orgname}' limit 1");
  $infos=mysqli_fetch_assoc($rs);
 } 
   
 $out->not_null=($infos['is_nullable']=='YES'?0:1);
 $out->primary_key=($infos['column_key']=='PRI'?1:0);
 $out->multiple_key=($infos['column_key']=='MUL'?1:0);
 $out->unique_key=($infos['column_key']=='UNI'?1:0);
 $out->numeric=($infos['numeric_precision']>0?1:0);
 $out->blob=intval(preg_match('/blob$/',$infos['column_type']));
 $out->type=$info->type;
 $out->unsigned=intval(stripos(" {$infos['column_type']} ",' unsigned ')!==false);
 $out->zerofill=intval(stripos(" {$infos['column_type']} ",' zerofill ')!==false);
 switch ($info->type){
    case 4:
    case 5:
    case 246:$out->type='real';break;
    case 7:$out->type='timestamp';
       $out->unsigned=1;
      $out->zerofill=1;
      break;
   case 10:$out->type='date';break;
   case 11:$out->type='time';break;
   case 12:$out->type='datetime';break;
   case 13:$out->type='year';
      $out->unsigned=1;
      $out->zerofill=1;
     break;
   case 16:$out->numeric=0;
      $out->unsigned=1;
      $out->zerofill=0;
      $out->type='int';
      break; 
   case 255:$out->type='geometry';
      $out->blob=1;
      break;
  case 252:$out->type='blob';
     $out->blob=1;
     break;
  case 253:
  case 254:$out->type='string';break;
 }
 return $out;
}


}
?>


Terimakasih, semoga bermanfaat.


Referensi : 

[1] http://www.duniailkom.com/tutorial-php-mysql-jenis-koneksi-php-mysql-pdo-mysqli-dan-mysql-extension/ (diakses 17 Mar 2017).
[2] https://sourceforge.net/projects/mysqlwithmysqli (diakses 17 Mar 2017).
Read More
      edit

Sabtu, 10 Desember 2016

Published Desember 10, 2016 by with 3 comments

Cara Mengarahkan Semua Pengunjung Website ke HTTPS/SSL Cloudflare


Untuk developer web yang sudah menggunakan Cloudflare pastinya sudah otomatis websitenya bisa diakses menggunakan HTTPS yang lebih aman (secure) dibanding protokol HTTP. Namun bagaimana caranya agar pengunjung website kita diarahkan ke HTTPS (Redirect all visitors to HTTPS/SSL) sedangkan pengunjung hanya mengetik nama domain kita di address bar. (misal www.macamateri.com)
Berikut ada 2 cara yang dapat dilakukan bagi pengguna Cloudflare agar websitenya yang dikunjungi selalu memakai protokol HTTPS/SSL.

1. Menggunakan Page Rules Cloudflare

Ini adalah cara yang paling mudah dan paling efektif untuk mengarahkan pengunjung ke HTTPS. Karena responnya ditangani oleh Cloudflare maka akan mengurangi beban request pada server kita.
Caranya tinggal masuk ke halaman Page Rules yang ada di Cloudflare, lalu klik Create Page Rules

Masukkan domain (tidak lupa menggunakan http) dan diberi tanda asterisk (*) agar semua halaman juga teralihkan ke https. Lalu pilih Always Use HTTPS pada rulesnya, Save and Deploy.

2. Menggunakan .htaccess

Cara ini tidak sulit namun tidak bisa digunakan jika anda menggunakan blogger, jadi jika anda menggunakan blogger atau tidak bisa membuat file .htaccess, maka cara pertama adalah cara yang paling tepat.
Caranya adalah buat file dengan ekstensi .htaccess (tanpa filename) jadi kalau buat filenya di notepad, pilih Save as type-nya all file, dan masukkan file name-nya .htaccess
isi file tersebut adalah sebagai berikut:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http 
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
lalu upload pada directory public_html atau root website anda.

Karena Cloudflare menggunakan Flexible SSL, maka htaccess yang mengalihkan dari port 80 ke port 443 tidak akan bekerja di flexible ssl. Sehingga pada script htaccess diatas bekerja jika protokol yang digunakan http maka dialihkan ke https dengan status kode 301 (redirect).

Kamu bisa terapkan cara kedua menggunakan htaccess di web hosting karena kebanyakan web hosting sebenarnya sudah mendukung SSL dan sudah aktif module mod_rewrite, salah satunya kamu bisa menemukannya di Web Hosting Terbaik.

Referensi : https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL-
Read More
      edit

Sabtu, 12 November 2016

Published November 12, 2016 by with 0 comment

Solusi Untuk Tombol Keyboard Laptop Yang Tidak Berfungsi

Mungkin anda sedang mengalami masalah yang cukup mengesalkan, yaitu beberapa tombol di keyboard laptop tidak berfungsi dengan semestinya, sedangkan tombol yang lainnya normal? Jangan buru-buru ganti keyboard laptop jika hanya 1-5 tombol yang tidak berfungsi.
Dengan bantuan software untuk remapping keys, keyboard anda dapat berfungsi kembali dengan normal. Bagaimana caranya?
  1. Cari tahu tombol apa saja yang tidak berfungsi
  2. Tentukan tombol yang jarang digunakan dan terdekat dengan tombol yang mati, ini digunakan untuk mengganti tombol yang mati / tidak berfungsi.
  3. Remapping Keys dengan software SharpKeys
Berikut adalah contoh cara penggunaanya:
  1. Keyboard Laptop saya tidak berfungsi beberapa tombol saja, seperti tombol Delete, F4, Arrow Keys left and right.
  2. Tombol yang jarang digunakan yaitu PgUp, F3, Shift Kanan, dan End
  3. Remapping keys sebagai berikut:

=>
=>
=>
=>
Download terlebih dahulu software untuk remapping keyboardnya yaitu SharpKeys di website resminya:
Download Disini atau di Codeplex

Untuk Sharp Keys versi 3.5 memerlukan net framework 4.0 dan versi sebelumnya 3.0 memerlukan netframework 2.0

Cara remappingnya cukup mudah, hanya perlu pilih tombol yang ingin diganti dengan tombol yang masih berfungsi, seperti gambar dibawah ini:


Setelah sudah dipilih tombol yang ingin di remapping, tekan tombol Write to Registry dan restart laptop/komputer anda.


Sekarang anda dapat menggunakan tombol-tombol yang penting pada keyboard anda. Namun yang perlu diketahui, ini hanya berjalan jika anda berada di sistem operasi Windows, jadi kalau di BIOS sangat disayangkan, tombol keyboard yang telah di remapping tidak berfungsi.

Tested : Laptop dengan sistem operasi Windows 10.

Referensi: http://www.randyrants.com/category/sharpkeys/
Read More
      edit

Minggu, 17 Januari 2016

Published Januari 17, 2016 by with 0 comment

Membuat Operasi Penangan File (File Handling) Java



Macamateri kali ini akan membahas pemrograman java mengenai penangan file atau biasa disebut File Handling.
Dalam class operasi penanganan file ini, terdapat beberapa fungsi yaitu :

  1. Membuat file
  2. Menulis teks kedalam file yang telah dibuat sebelumnya
  3. Membaca isi dari file yang telah dibuat sebelumnya
  4. Mengupdate atau mengubah isi dari file yang telah dibuat sebelumnya
  5. Menghapus file yang telah dibuat sebelumnya
  6. Menghitung jumlah kata dari isi file
  7. Menghitung jumlah huruf / karakter dari isi file
  8. Menyembunyikan file yang telah dibuat sebelumnya
  9. keluar dari program.

Demo Program

Untuk demo program dapat dilihat dalam video berikut :

Source Code 

Untuk nama class, pada source code kali ini menggunakan nama class : operasiPenangananFile , jadi pastikan nama class dan nama file .java sama.
file  : operasiPenangananFile.java

/**
 * @(#)operasiPenangananFile.java
 *
 * @description Program operasi penanganan file buat, tulis, baca, update, hapus, hitung kata, hitung huruf, sembunyikan file.
 * @author Rizal Loa Wanda (Macamateri)
 * @version 1.00 2015/10/18
 */

import java.io.*;
import java.util.*;
public class operasiPenangananFile {
 
 public static void main(String[] args) throws IOException {
        operasiPenangananFile menu = new operasiPenangananFile();
        menu.utama();
    }
    
    //0. Fungsi Menu Utama
    public static void utama() throws IOException {
     Scanner input = new Scanner(System.in);
        operasiPenangananFile menu = new operasiPenangananFile();
        
        System.out.println("Menu Pilihan Penanganan File :");
        System.out.println("==============================");
        System.out.println("1. Buat File         ");
        System.out.println("2. Tulis File        ");
        System.out.println("3. Baca File         ");
        System.out.println("4. Update Isi File   ");
        System.out.println("5. Hapus File        ");
        System.out.println("6. Hitung Kata       ");
        System.out.println("7. Hitung Huruf      ");
        System.out.println("8. Sembunyikan File  ");
        System.out.println("9. Keluar            ");
        System.out.print("Input Pilihan Anda [1-9] = ");
        String n = input.nextLine();
        
        switch (n) {
            case "1": {
                menu.buatFile();
                menu.utama();
                break;
            }
            case "2": {
                menu.tulisFile();
                menu.utama();
                break;
            }
            case "3": {
                menu.bacaFile();
                menu.utama();
                break;
            }
            case "4": {
                menu.updateIsiFile();
                menu.utama();
                break;
            }
            case "5": {
                menu.hapusFile();
                menu.utama();
                break;
            }
            case "6": {
                menu.hitungKata();
                menu.utama();
                break;
            }
            case "7": {
                menu.hitungHuruf();
                menu.utama();
                break;
            }
            case "8": {
                menu.sembunyikanFile();
                menu.utama();
                break;
            }
            case "9": {
                System.out.println("Anda Berhasil Keluar!");
                break;
            }
            default: {
                System.out.println("Pilihan tidak tersedia, silahkan pilih lagi [1 - 9]\n");
                menu.utama();
            }
        }
    }
    
    //1. fungsi membuat file
    public void buatFile() throws IOException {
        Scanner input = new Scanner(System.in);
        System.out.print("Input Nama File Baru dan Ekstensinya = ");
        String namaFile = input.nextLine();
        System.out.println();
        File file = new File(namaFile);
        if (!file.exists()) {
            try {
                Formatter formatter = new Formatter(namaFile);
                System.out.println("File " + namaFile + " Berhasil di Buat\n");
                formatter.close();
            }
            catch (Exception err) {
                System.out.println("Anda Gagal Membuat File " + namaFile + "\n");
                System.out.println("Error : " + err.getMessage() + "\n");
            }
        } else {
            System.out.println("File Sudah Terdapat! Silahkan melakukan Baca, Ganti atau Hapus pada File " + namaFile + ".\n");
        }
    }
    
    //2. fungsi Tulis File
    public void tulisFile() throws IOException {
        Scanner input = new Scanner(System.in);
        System.out.print("Input Nama File dan Ekstensinya = ");
        String namaFile = input.nextLine();
        File file = new File(namaFile);
        if (file.exists()) {
            try {
                FileWriter fileWriter = new FileWriter(namaFile);
                System.out.print("Tuliskan isi ke dalam File = ");
                String isiFile = input.nextLine();
                fileWriter.append((CharSequence)isiFile);
                fileWriter.append((CharSequence)"\n");
                System.out.println();
                System.out.println("File " + namaFile + " Berhasil di Tulis\n");
                fileWriter.close();
            }
            catch (Exception err) {
                System.out.println("Error Menulis File " + namaFile);
                System.out.println("Error : " + err.getMessage() + "\n");
            }
        } else {
            System.out.println("File " + namaFile + " Tidak di Temukan!\n");
        }
    }
    
    //3. fungsi Baca File
    public void bacaFile() throws IOException {
        Scanner input = new Scanner(System.in);
        System.out.print("Input Nama File dan Ekstensinya = ");
        String namaFile = input.nextLine();
        System.out.println();
        File file = new File(namaFile);
        if (file.exists()) {
            try {
                FileReader fr = new FileReader(namaFile);
                BufferedReader bufferedReader = new BufferedReader(fr);
                StringBuffer stringBuffer = new StringBuffer();
                String isiFile = bufferedReader.readLine();
                if (isiFile != null) {
                    System.out.println("Proses Baca Isi File " + namaFile + " =");
                } else if (isiFile == null) {
                    System.out.println("File " + namaFile + " Kosong. Silahkan isi di Pilihan 2.");
                }
                while (isiFile != null) {
                    stringBuffer.append(isiFile);
                    stringBuffer.append("\n");
                    isiFile = bufferedReader.readLine();
                }
                System.out.println(stringBuffer.toString());
                fr.close();
            }
            catch (Exception err) {
                System.out.println("Error Dalam Membaca File " + namaFile);
                System.out.println("Error : " + err.getMessage() + "\n");
            }
        } else {
            System.out.println("File " + namaFile + " Tidak Dapat di temukan!\n");
        }
    }
    
    //4. fungsi Update Isi File
    public void updateIsiFile() throws IOException {
        Scanner input = new Scanner(System.in);
        System.out.print("Input Nama File dan Ekstensi yang ingin di Update = ");
        String namaFile = input.nextLine();
        File file = new File(namaFile);
        if (file.exists()) {
            try {
                FileReader fr = new FileReader(namaFile);
                BufferedReader bufferedReader = new BufferedReader(fr);
                StringBuffer stringBuffer = new StringBuffer();
                String isiFile = bufferedReader.readLine();
                while (isiFile != null) {
                    stringBuffer.append(isiFile);
                    stringBuffer.append("\n");
                    isiFile = bufferedReader.readLine();
                }
                System.out.println("Isi File Sebelum Update  = ");
                System.out.println(stringBuffer.toString());
                fr.close();
                FileWriter fw = new FileWriter(namaFile, true);
                System.out.print("Isi File Tambahan (Update) = ");
                String isiTambahan = input.nextLine();
                fw.append((CharSequence)isiTambahan);
                fw.append((CharSequence)"\n");
                System.out.println();
                System.out.println("File " + namaFile + " Berhasil di Update!\n");
                fw.close();
            }
            catch (Exception err) {
                System.out.println("Error Mengupdate Isi File " + namaFile);
                System.out.println("Error : " + err.getMessage() + "\n");
            }
        } else {
            System.out.println("File " + namaFile + " Tidak Dapat di temukan!\n");
        }
    }
    
    //5. fungsi Hapus File
    public void hapusFile() throws IOException {
     Scanner input = new Scanner(System.in);
     System.out.print("Input Nama File yang ingin di Hapus = ");
     String namaFile = input.nextLine();
     System.out.println();
        File file = new File(namaFile);
        if (file.exists()) {
         try {
          System.out.print("Apakah Anda yakin ingin menghapus File " + namaFile + "? [Y/N] = ");
             String konfirmasi = input.nextLine();
             if (konfirmasi.equalsIgnoreCase("y")) {
              file.delete();
                 System.out.println("File " + namaFile + " Berhasil di Hapus!\n");
             }
             else if (konfirmasi.equalsIgnoreCase("n")) {
              System.out.println("File " + namaFile + " Batal di Hapus!\n");
             }
             else{
              System.out.println("Pilihan Salah. Silahkan coba lagi.\n");
             }
          }
          catch (Exception err) {
             System.out.println("Error menghapus file " + namaFile + "");
           System.out.println("Error : " + err.getMessage() + "\n");
             err.printStackTrace();
          }
        } else {
            System.out.println("File " + namaFile + " Tidak Dapat di temukan!\n");
        }
    }
    
    //6. fungsi hitung kata
    public void hitungKata() throws IOException {
        Scanner input = new Scanner(System.in);
        System.out.print("Input Nama File dan Ekstensi yang ingin di hitung katanya = ");
        String namaFile = input.nextLine();
        System.out.println();
        File file = new File(namaFile);
        if (file.exists()) {
            try {
                String isiFile;
                FileReader fr = new FileReader(namaFile);
                BufferedReader bufferedReader = new BufferedReader(fr);
                int baris = 0;
                int kata = 0;
                while ((isiFile = bufferedReader.readLine()) != null) {
                    String[] arrstring;
                    ++baris;
                    for (String isiFile2 : arrstring = isiFile.split(" ")) {
                        ++kata;
                    }
                }
                System.out.println("Jumlah Kata Pada Isi File " + namaFile + " Adalah  = " + kata + " Kata");
                System.out.println("Jumlah Baris Pada Isi File " + namaFile + " Adalah = " + baris + " Baris\n");
                
                fr.close();
            }
            catch (Exception err) {
                System.out.println("Error menghitung kata file " + namaFile);
                System.out.println("Error : " + err.getMessage() + "\n");
            }
        } else {
            System.out.println("File " + namaFile + " Tidak Dapat di temukan!\n");
        }
    }
    
    //7. fungsi Hitung Huruf

    public void hitungHuruf() throws IOException {
     int JUMLAH_KARAKTER = 256;
     int[] total_per_karakter = new int[JUMLAH_KARAKTER];
        Scanner input = new Scanner(System.in);
        System.out.print("Input Nama File dan Ekstensi yang ingin di hitung hurufnya = ");
        String namaFile = input.nextLine();
        File file = new File(namaFile);
        if (file.exists()) {
            try {
                String isiFile;
                String isiFile2 = "";
                FileReader fr = new FileReader(namaFile);
                BufferedReader bufferedReader = new BufferedReader(fr);
    
                while ((isiFile = bufferedReader.readLine()) != null) {
                    isiFile2 = isiFile2 + isiFile;
                }
                isiFile2 = isiFile2.toLowerCase();
                for (int i=0; i<JUMLAH_KARAKTER; i++) {
              total_per_karakter[i] = 0;
          }
          int isiFile2_len = isiFile2.length();
          for (int i=0; i<isiFile2_len; i++) {
              total_per_karakter[(int )isiFile2.charAt(i)]++;
          }
          
          System.out.println();
          for (int i=0; i<JUMLAH_KARAKTER; i++) {
              if (total_per_karakter[i] > 0) {
                  if (((char)i >= 'a' && (char)i <= 'z')) {
                      System.out.println("Jumlah huruf " + (char) i + " ada = " + total_per_karakter[i] + " buah");
                  } else if ((char)i >= '0' && (char)i <= '9') {
                      System.out.println("Jumlah angka " + (char) i + " ada = " + total_per_karakter[i] + " buah");
                  } else if ((char) i == ' ') {
                      System.out.println("Jumlah Spasi ada   = " + total_per_karakter[i] + " buah");
                  } else {
                      System.out.println("Jumlah karakter " + (char) i + " ada = " + total_per_karakter[i] + " buah");
                  }
              }
          }
                System.out.println();
                fr.close();
            }
            catch (Exception err) {
                System.out.println("Error menghitung huruf file " + namaFile);
                System.out.println("Error : " + err.getMessage() + "\n");
            }
        } else {
            System.out.println("File " + namaFile + " Tidak Dapat di temukan!\n");
        }
    }
    
    //8. fungsi menyembunyikan file (This Is MAGIC =D )
    public void sembunyikanFile() throws IOException {
     Scanner input = new Scanner(System.in);
     System.out.print("Input Nama File dan Ekstensinya yang ingin di Sembunyikan = ");
     String namaFile = input.nextLine();
     System.out.println();
        File file = new File(namaFile);
        if (file.exists()) {
         try {
          if(file.isHidden()){
           System.out.print("File "+namaFile+" sudah tersembunyi, Unhide? [Y/N] = ");
           String konfirmasi = input.nextLine();
           if(konfirmasi.equalsIgnoreCase("y")){
            if(System.getProperty("os.name").contains("Windows")){
             Process p = Runtime.getRuntime().exec("attrib -h "+namaFile);
             p.waitFor();
             System.out.println("Berhasil menampilkan (unhide) File " +namaFile);
         }
         else{
             System.out.println("Maaf untuk OS lain selain Windows belum support");
         }
           }
           else {
            System.out.println("Batal Menammpilkan (unhide) File " +namaFile);
           }
           
          }
          else {
           if(System.getProperty("os.name").contains("Windows")){
            Process p = Runtime.getRuntime().exec("attrib +h "+namaFile);
            p.waitFor();
            System.out.println("Berhasil Menyembunyikan File " +namaFile);
        }
        else{
         System.out.println("Maaf untuk OS lain selain Windows belum support");
        }
          }
          System.out.println();
          }
          catch (Exception err) {
             System.out.println("Error menyembunyikan file " + namaFile + "");
           System.out.println("Error : " + err.getMessage() + "\n");
             err.printStackTrace();
          }
        } else {
            System.out.println("File " + namaFile + " Tidak Dapat di temukan!\n");
        }
    }
}
Read More
      edit