Thursday, August 1, 2019

Debian Stretch: Distribution Upgrade to Debian Buster (10)

Prepare apt /etc/apt/sources.list, change stretch to buster
my apt source list:

# Debian 10

# SECURITY
deb http://security.debian.org/ buster/updates main

# Main
deb http://kartolo.sby.datautama.net.id/debian/ buster main

# NON FREE
deb http://httpredir.debian.org/debian buster main contrib non-free

# BACKPORT
deb http://ftp.debian.org/debian buster-backports main

Note on error when running apt-get update:
E: Release file for http://kambing.ui.ac.id/debian/dists/buster/InRelease is expired (invalid since 265d 4h 18min 17s). Updates for this repository will not be applied.
use other sources e.q change "deb http://kambing.ui.ac.id/debian/ buster main contrib
" to "deb http://mirrors.kernel.org/debian buster main contrib"
If you used oracle mysql or oracle virtualbox, you need to modify to "buster" these files:
/etc/apt/sources.list.d/mysql.list
/etc/apt/sources.list.d/virtualbox.list

Running upgrade process
# apt-get update

# apt-get upgrade
...
Fetched 238 MB in 14min 50s (268 kB/s)   
...

#  apt-get dist-upgrade
...
Fetched 969 MB in 45min 30s (355 kB/s)
...

Restart your computer

# cat /etc/debian_version
10.0
# uname -an
Linux fujitsu01 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64 GNU/Linux

You can clean and remove unused temporary to make your system "tidy"
# apt-get autoclean && apt-get autoremove

By default, Debian 10 use kernel 4.19, you mau remove your old kernel.
# apt-get remove linux-image-4.9.0-9-amd64

Note:
DO NOT DELETE linux-image-4.19!

Reference:
https://www.debian.org/releases/stable/amd64/release-notes/ch-upgrading.en.html
https://garasiku.web.id/web/joomla/index.php/tips/debian/14-debian-jessie-upgrade-to-debian-9-codename-stretch

Intel(R) Atom(TM) CPU N455   @ 1.66GHz (Fujitsu) takes 3 hours to completed. Don't worry, It's much faster then windows 10 update or windows update clean up LOL.

Tuesday, June 11, 2019

android studio 3.4.1 and google admob change

In build.gradle (Module:app) change
...
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
...
dependencies {
   implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.android.gms:play-services-ads:17.2.1'

In AndroidManifest.xml add
<manifest>
    <application>
        ...
        <meta-data
            android:name="com.google.android.gms.ads.AD_MANAGER_APP"
            android:value="true"/>
    </application>
</manifest>

Thursday, June 6, 2019

defender locking bignox virtual disk

windows defender sometimes open file in background process, to scan for malicious code. If defender (or other antivirus) open bignox virtual disk it will lock it and cause your emulator crash. You need to exclude virtual disk that used by bignox. Here are the steps you need to do:
  1. Open your windows defender (or your antivirus)
  2. Go to setting "Virus & thread protection settings"
  3. in "Exclusions" click "Add or remove exclusions"
  4. Click "Add an exclusion" and choose "File type"
  5. in "Enter extension" box type "vmdk"
  6. repeat step 4 for file type "vbox" and "vdi"
You may want to increase your emulator by excluding these files:
  1. C:\Program Files (x86)\Bignox\BigNoxVM\RT\NoxVMSVC.exe
  2. C:\Program Files (x86)\Nox\bin\Nox.exe

Thursday, April 25, 2019

Codeigniter: query builder select, insert, update and delete

Query table:
        $this->result = $this->db->get('ca_brand',$mmax, 0);
        if ($this->result) {
            return true;
        } else {
            return false;
        }
Query table with like filter:
        $this->db->like('name', $keyword); // buildin mysql escape
        $this->result = $this->db->get('ca_brand',0, $mmax);
        if ($this->result) {
            return true;
        } else {
            return false;
        }
 Insert row in table:
        // buildin mysql escape character
        $data = array('name' => $name);
        $this->db->insert('ca_brand', $data); // return true on success
        $insert_id = $this->db->insert_id(); // get id

Update row in table for spesific id
        // buildin mysql escape character
        $id = intval($id);
        $data = array ('name' => $name);
        $this->db->where('id', $id);
        //$this->db->update('ca_brand',$data, "id = "$id ); // option 1
        $this->db->update('ca_brand',$data); // // option 2
        $numaffectedrow = $this->db->affected_rows(); // to get nummber affected row
 Delete row:
        $id = intval($id);
        $this->db->where('id', $id);
        $this->db->delete('ca_brand');
        $numaffectedrow = $this->db->affected_rows(); // to get nummber affected row

Php 7.2 and Codeigniter 3.1.10

Codeigniter: check mysql connection

To check error in mysql connection, we need to change ENVIRONMENT to Production. Here is the example:
    //define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
    //define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'testing');
    define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production');
There are two ways to catch error in our controller:
1. Using dblib
        $this->load->dbutil();
        if ($this->dbutil->database_exists('myca')) {
            // Connection ok
        } else {
            // Connection fail
        }
2. Checking error in db
        $this->load->database();
        $errhandle = $this->db->error();
        if ($errhandle['code']==0) {
            // Connection ok
        } else {
            // Connection fail
            // to dump error code var_dump( $this->db->error());
        }
Tested on PHP 7.2 and Codigniter 3.1.10