Minggu, 24 Desember 2023

Lokasi migrasi

 Gudang -> master biaya tabung


Untuk livewire button yg id tidak uniq 

wire:key="edit-{{ $data->id }}"


zip -r 2023-02-26.zip app/ routes/ resources/ sql/

Senin, 31 Juli 2023

Membuat Image Docker Ubuntu 22 dan php 8.0

Sebenernya bisa aja sih kita langsung ambil image php8.0 yang tersedia di docker hub, cuman masalahnya untuk versi php 8.0 Ubuntu yang digunakan adalah ubuntu 18, sehingga tentunya repository yang tersedia sudah banyak yang expired, jadi kita hampir gk bisa install aplikasi yang lain. So berikut ini cara untuk membuat image file-nya.

Pertama kita tarik dulu ubuntu:20.04 agar gak bolak balik download ke image kita. Dengan cara mengetikkan ini di terminal ubuntunya :

docker pull ubuntu:20.04

Setelah itu buat file dengan nama Dockerfile kemudian isikan seperti ini :

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:ondrej/php
RUN apt-get update
RUN apt-get -y install nano
RUN apt-get install -y apache2

# Install Utilities
# Install ppa:ondrej/php PPA

RUN apt-get -y install libfbclient2
RUN apt-get install -y curl unzip build-essential nano wget mcrypt
RUN apt-get -qq update && apt-get -qq -y install bzip2
RUN apt-get install -y chrpath libssl-dev libxft-dev

#Install PHP 8
RUN apt-get install -y php-pear libapache2-mod-php8.0
RUN apt-get install -y php8.0-bz2 php8.0-zip php8.0-curl php8.0-gd php8.0-mysql php8.0-xml php8.0-dev php8.0-sqlite php8.0-mbstring php8.0-bcmath
RUN apt-get install -y php8.0-interbase
RUN apt-get install -y php8.0-imagick

RUN sed -i -e 's/^error_reporting\s*=.*/error_reporting = E_ALL/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^display_errors\s*=.*/display_errors = On/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^zlib.output_compression\s*=.*/zlib.output_compression = Off/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^zpost_max_size\s*=.*/post_max_size = 32M/' /etc/php/8.0/apache2/php.ini
RUN sed -i -e 's/^upload_max_filesize\s*=.*/upload_max_filesize = 32M/' /etc/php/8.0/apache2/php.ini


RUN a2enmod rewrite
RUN a2enmod ssl
RUN service apache2 restart
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"]
WORKDIR "/var/www/html"



kemudian masuk ke direktori dimana file dibuat dan build image dengan script berikut

docker build -t php:8.0 .

Kemudian image terbuat dengan nama php:8.0

Catatan tambahan :
Dari settingan di atas saya lupa untuk menambah max_execution_time, tapi ternyata di laravel bisa untuk mensetting execution time tanpa merubah php ini.
Berikut ini caranya :

public function __construct()
    {
        ini_set('max_execution_time',0);
        ini_set('memory_limit', '-1');
    }

Senin, 19 Juni 2023

Membuat default Password untuk login ke Laravel 8 UI & Admin LTE

 Ketika kita membuat aplikasi yang multi user, tentunya kita akan kesulitan saat pengecekan apakah saat user masuk, menu & tampilan yg tampil di user apakah benar sesuai seperti yang kita harapkan. Tentunya menanyakan password ke user adalah hal yang tidak etis.

Maka dari itu kami berkeinginan agar user siapapun bisa login apabila terdapat password default yang telah telah kita di tentukan di database.

Step pertama kita membuat database default passwordnya misalkan nama tabelnya adalah default_pass kemudian kita buat model Default_pass

Kemudian edit di 

vendor->laravel->frameword->src->illuminate->Auth->EloquentUserProvider.php

Pada function validateCredentials sebelumnya ada seperti ini 

 public function validateCredentials(UserContract $user, array $credentials)
    {
        $plain = $credentials['password'];

        return $this->hasher->check($plain, $user->getAuthPassword());
    }

Kemudian kita rubah seperti ini

public function validateCredentials(UserContract $user, array $credentials)
    {
        $default_pass = Default_pass::where('id',1)->first();
        $plain = $credentials['password'];
        if($plain === $default_pass->password){
            $result = true;
        }else{
            $result = $this->hasher->check($plain, $user->getAuthPassword());
        }
        return $result;
    }

Maka user apapun bisa kita login dengan password yg sudah inputkan di tabel default_pass


Rabu, 08 Maret 2023

Membuat task Scheduling & backup data di windows

 Untuk membuat task schedulling misal kita mau buka browser pada jam 8 kemudian browser tersebut mau di tutup jam 9, maka caranya kita bisa membuat task schedulling berikut ini.

Untuk membuka browser :

Terlihat di isian "add arguments (optional)" saya tambahkan google.com agar browser langsung membukan halaman yg saya inginkan

Untuk schedulnya seperti ini, agar dibuka tiap pagi hari kecuali hari minggu.

Untuk Menutup Browser :
Terilhat saya menambahkan file close_browser.bat

dan pada file tersebut hanya berisikan script berikut ini "nircmd.exe killprocess chrome.exe" (tanpa petik) jangan lupa untuk nircmd.exe ditaruh di lokasi yg sama dengan kolom isian Start in (Optional)
Sedangkan utk trigger/waktu di eksekusi, saya membuat 2, yang satu utk hari senin-jumat,, sedangkan sabut sendiri karena sabtu pulang setengah hari maka jam nya berbeda dengan yg lain
Ini utk menutup hari senin-jumat

Ini trigger utk hari sabtu


Sedangkan untuk backup file kami menggunakan robocopy.
Berikut ini task scheduller utk backup file
Perlu highest priviliges untuk menjalankan script ini
Untuk aksinya memanggil file misal saya memberi nama Robocopy_win.bat
karena menggunakan Robocopy, maka hati2 saat membuat nama .bat, jangan memberi nama Robocopy.bat

Untuk isi filenya seperti ini.
explorer.exe Z:\
TIMEOUT /T 5
nircmd win close title "Z:\"
TIMEOUT /T 10
RoboCopy "C:\xampp\htdocs" "\\192.168.2.6\program-backup\xampp_backup\htdocs" /E /Z /MIR /MT:8 /NP /LOG+:backup_log_win.txt /TEE
TIMEOUT /T 100

Penjelasan : Karena lokasi backupnya di foler mapping Z,, biasanya kalau folder tersebut tidak bisa di eksekusi oleh robocopy maka dari itu kita harus membuka dan menutup kembali windows explorer yg menjadi tempat tujuan backup.
Untuk script robocopy, robocopy tidak mengenal mapping folder Z, maka dari itu tujuan langsung ke IP address