Upload Project Local ke Repo gitlab

1. pada git lab: create repo

2. pada project:

- git init

- git remote add origin master <url> --> contoh git remote add origin https://gitlab.com/ezufatrin/namaproject

- git add .

- git commit -m "buat project baru"

- git push origin master

=========

ini dari git lab:

Git global setup
git config --global user.name "ezu"
git config --global user.email "ezu.marzuki@gmail.com"
Create a new repository
git clone git@gitlab.com:ezufatrin/dibajolbae_konsumen_ios.git
cd dibajolbae_konsumen_ios
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Push an existing folder
cd existing_folder
git init
git remote add origin git@gitlab.com:ezufatrin/dibajolbae_konsumen_ios.git
git add .
git commit -m "Initial commit"
git push -u origin master
Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:ezufatrin/dibajolbae_konsumen_ios.git
git push -u origin --all
git push -u origin --tags

groupBy pada query builder laravel atau lumen tidak jalan atau error

buka file:

nama_projek\vendor\laravel\lumen-framework\config\database.php 


pastikan strict nya jadi FALSE kalo sebelumnya TRUE ubah jadi FALSE.

'strict' => env('DB_STRICT_MODE'false),




Join tabel ke diri sendiri dengan child parent bertingkat

 https://dba.stackexchange.com/questions/27775/loop-through-self-join-on-table-until-the-operand-column-is-null-completely

Catatan Flutter

../../development/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/src/browser_client.dart:6:8: Error: Not found: 'dart:html'
import 'dart:html'; 


pub cache repair

flutter clean 

Flutter_Bloc

CARA MENYEDIAKAN BLOC UNTUK CHILD YANG MAU PAKE


home: BlocProvider<WarnaBloc>(
          create: (_) => WarnaBloc(),
          child: MyHomePage(title: 'Flutter Demo Home Page')),


==========================

CARA MENAMPILKAN PERUBAHAN STATE BLOC

 Container(
            child: BlocBuilder<WarnaBlocWarnaState>(builder: (_, state) {
              if (state is WarnaLoaded) {
                print(state.warna);
                return FloatingActionButton(
                  onPressed: _incrementCounter,
                  backgroundColor: state.warna,
                  tooltip: 'Increment',
                  child: Icon(Icons.ac_unit),
                );
              } else
                return Container();
            }),
          ),


===========================

CARA SET EVENT BLOC

studi kasus WarnaBloc

1. Inisialisasi dulu di dalam widget build

  Widget build(BuildContext context) {
    WarnaBloc _bloc = BlocProvider.of<WarnaBloc>(context);

selanjutnya cara menggunakannya

  _bloc.add(LoadWarna('1'));


2. Langsung dengan bloc provider

BlocProvider.of<WarnaBloc>(context).add(LoadWarna("1"));

3. pake context

context.bloc<WarnaBloc>().add(LoadWarna('1'));







Android Emulator pada hp kita via koneksi wifi

 adb tcpip 5555

adb connect <your-phone-ip>:5555

  1. stay connect via USB to yours computer

  2. connect to your WIFI network (computer and mobile device both) ->same network

  3. ping DeviceIP (must be have ping to your device)

  4. adb kill-server

  5. adb usb

  6. adb tcpip 5555

    1. unplug usb cable (as per @captain_majid 's comment)
  7. adb connect yourDeviceIP

  8. adb devices (must be see two device names , one of them is by deviceIP)

  9. unplug USB cable

Simple BottomBar Flutter

pada contoh ini ada 4 file yg dibuat: main, homepage, settingpage, contactpage

1. main.dart

import 'package:bottombar/contactPage.dart';
import 'package:bottombar/homePage.dart';
import 'package:bottombar/settingPage.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyBottomBar(),
    );
  }
}

class MyBottomBar extends StatefulWidget {
  @override
  _MyBottomBarState createState() => _MyBottomBarState();
}

class _MyBottomBarState extends State<MyBottomBar> {
  int _currentIndex = 0;
  final List<Widget> _children = [
    HomePage(),
    SettingPage(),
    ContactPage(),
  ];

  void onTappedBar(int index) {
    setState(() {
      _currentIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _children[_currentIndex],
      bottomNavigationBar: BottomNavigationBar(
        onTap: onTappedBar,
        currentIndex: _currentIndex,
        items: [
          BottomNavigationBarItem(
            icon: new Icon(Icons.home),
            title: Text('Home'),
          ),
          BottomNavigationBarItem(
            icon: new Icon(Icons.settings),
            title: Text('Setting'),
          ),
          BottomNavigationBarItem(
            icon: new Icon(Icons.contacts),
            title: Text('Contact'),
          ),
        ],
      ),
    );
  }
}


2. homePage.dart


import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home'),
      ),
      body: Center(
        child: Text('Home Page'),
      ),
    );
  }
}

3. settingPage.dart

import 'package:flutter/material.dart';

class SettingPage extends StatefulWidget {
  @override
  _SettingPageState createState() => _SettingPageState();
}

class _SettingPageState extends State<SettingPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Setting'),
      ),
      body: Center(
        child: Text('Setting Page'),
      ),
    );
  }
}

4. contactPage.dart

import 'package:flutter/material.dart';

class ContactPage extends StatefulWidget {
  @override
  _ContactPageState createState() => _ContactPageState();
}

class _ContactPageState extends State<ContactPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Contact'),
      ),
      body: Center(
        child: Text('Contact Page'),
      ),
    );
  }
}





Method Setter dan getter pada OOP DART

method set and getter pada  dart sedikit beda dengan yang ada pada java

pada dart menggunakan property

buat di file terpisah:

class PersegiPanjang{
    double _panjang;
    double _lebar;

// method set selain dart
    void setPanjang(double value){
        _panjang = value;
    }
// method set pada dart
    void set lebar(double value){
        _lebar = value;
    }
// method get selain dart
    double getPanjang(){
        return _panjang;
    }
// method get pada dart
    double get lebar(){
        return _lebar;
    }    
// method mengembalikan
    double get luas => _panjang * _lebar;    
}


Pada file view nya


main(List<String> arguments){
  PersegiPanjang kotak1, kotak2;

  kotak1 = new PersegiPanjang();
  kotak1.setPanjang(2);  //cara set selain dart
  kotak1.lebar = 2;  //cara set pada dart

  kotak1.getPanjang(); //get selain dart
  kotak1.lebar; //get pada dart

  kotak1.luas;  //untuk nampilin luas
}

Force http ke https

Tambah kode berikut pada root .htaccess

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://namadomain.com/$1 [R,L]

note: namadomain isi dengan nama domain anda

Export Import Database SQL mengunakan Terminal


export
mysqldump -u root -p namadatabase > D:namabaru.sql
import
mysql -u root -p namadatabase < D:namabaru.sql

Cara Menambah Filed Table Log Dengan Cepat

ALTER TABLE `log_table_name`
ADD COLUMN log_id  int auto_increment  PRIMARY KEY first,
ADD COLUMN log_action  VARCHAR(20) AFTER log_id,
ADD COLUMN log_ref  INT(20) AFTER log_action,
ADD COLUMN log_ip  VARCHAR(15) AFTER log_ref,
ADD COLUMN log_by  int(11)AFTER log_ip,
ADD COLUMN log_datetime timestamp AFTER log_by;

Menghapus data table Database Yang masih ada Foreign_key nya

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `table_name`;
SET FOREIGN_KEY_CHECKS = 1;

PENJELASAN

SET FOREIGN_KEY_CHECKS = 0;  untuk set agar tidak dicek foreign_key nya

TRUNCANTE TABLE  untuk menghapus dan mereset id autoincrement jadi 1 lagi

SET FOREIGN_KEY_CHECKS = 1; untuk set ferign_key lagi


NOTE:
jika menggunakan phpmyadmin saat running code nya harus dipastikan uncek pilihan Enable foreign key checks

Cart Pada Codeigniter tidak Berjalan

Pada codeiginter terdapat fitur mengelola cart, namun bagi mereka yang pertamakali menggunakan fitur ini terkadang menemui bebarapa kendala, berikut beberapa tahapan debug nya:

1. Cek apakah data ada semua

Sturktur data yang harus di insert wajib menyertakan paling tidak sebagai berikut:

   $data = array(
            'id'    => $this->input->post('kode_barang'),
            'qty'   => $this->input->post('jumlah'),
            'price'   => $this->input->post('harga'),
            'name'  => $this->input->post('nabar')
        );
        $this->cart->insert($data);


wajib ada id, qty, price, dan name. jika ada tambahan maka dimasukan dalam option, seperti contoh berikut:

   $data = array(
            'id'    => $this->input->post('kode_barang'),
            'qty'   => $this->input->post('jumlah'),
            'price'   => $this->input->post('harga'),
            'options' => array('warna' => 'hitam')
        );
        $this->cart->insert($data);

2. Pastikan Cart sudah di autoload pada applicatio/config/autoload.php

$autoload['libraries'] = array('database','cart','session');

3. Jika semua tahapan diatas tidak bermasalah coba cek data yang akan di insert sudah lengkap dan sesuai standar belum, misal nama barang tidak boleh ada special karakter seperti [] dll. tapi hal ini bisa diakali dengan cara menambakan file MY_Cart.php pada application/libraries, adapaun isi filenya isi dengan code berikut:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class MY_Cart extends CI_Cart
{

    var $product_name_rules = '[:print:]';
}

Cara Penulisan Componen untuk export import Pada React JS

Cara menuliskan component pada react

1. Penulisan component pada class


import React, {Componentfrom 'react';
class NamaClass extends Component{
    render(){
        return(
            <div>
               //konten
            </div>
        );
    }
}
export default NamaClass ;

jika dengan cara diatas maka saat import nya harus ditulis seperti ini

import NamaClass from 'lokasi file';

selain cara diatas bisa juga ditulis dengan cara berikut:

import React, {Componentfrom 'react';

export class NamaClass extends Component{
    render(){
        return(
            <div>
               //konten
            </div>
        );
    }
}




2. penulisan componen pada funcion

import React, {Componentfrom 'react';

const NamaKomponen = () => {
    return(
        <div>
            //isi komponen
        </div>
    )
}

export default NamaKomponen ;

atau dengan cara

import React, {Componentfrom 'react';
export default() => {
    return(
        <div>
            //isi komponen
        </div>
    )
}


atau dengan cara

import React, {Componentfrom 'react';
export default function Footer(){
    return(
        <div>
            //isi komponen
        </div>
    )
}
 untuk yang ini, juga bisa dihapus defaultnya tapi harus di bungkus dengan bracket saat import.

Memulai Reactjs

Cara memulai reactjs dilocal windows

1. instal nodejs -> https://nodejs.org/en/download/ pilih yang LTS
2. cek keberhasilan instalasi dengan melihat versi terinstal melalui cmd
npx -v
node -v
3. buat projek pertama
npx create-react-app cobareact --> cobareact adalah nama folder/projek yang mau kita buat
4. arahakan cmd ke projek/folder yang sudah dibuat sblmnya
cd cobareact
5. jalankan server react
npm start
6. akan otomatis memuka brouser anda ngeload projek yang tadi kita buat di http://localhost:3000/
7. jika tampil logo reactjs berarti anda telah berhasil membuat projek react

Menyambungkan gitlab lewat SSH pada windows

tutorialnya ada di https://www.petanikode.com/gitlab-ssh/ tapi ada yang kurang saat add ssh-add ~/.ssh/dian karena saat saya ikuti tetap gagal, yang kurang adalah lakukan eval $(ssh-agent) sebalum ssh-add ~/.ssh/dian