Dokumentasi Project

Warning: sebagai catatan pribadi, berpedoman dari tulisan Pak Endy Muhardin

1. Fase Planning

  • scope pekerjaan
  • estimasi durasi
  • requirement khusus (misalnya performance requirement, integrasi dengan aplikasi lain, dsb)
  • nilai project
  • termin pembayaran

2. Fase Requirement

  • User Goal : tujuan yang ingin dicapai client dalam menggunakan fitur ini
  • Ijin Akses : security level untuk menjalankan fitur ini
  • Penjelasan : deskripsi naratif tentang fitur ini
  • Flow aplikasi : langkah-langkah untuk menjalankan fitur ini
  • Desain screen : screenshot prototype atau scan paper prototype
  • Rincian field : penjelasan masing-masing komponen dalam desain screen
  • Prasyarat : hal-hal yang harus terjadi/ada sebelum fitur ini bisa dijalankan
  • Kondisi awal : kondisi aplikasi (data, screen, dsb) sebelum fitur dijalankan
  • Kondisi akhir : kondisi aplikasi setelah fitur selesai dijalankan
  • Karakteristik khusus : kebutuhan khusus seperti response time, usability, dsb
  • Flow pengetesan : bagaimana cara mengetes fitur ini
  • Sign Off : persetujuan user bahwa deskripsi dalam fitur ini sudah sesuai keinginan

3. Fase Desain

  • skema database
  • interkoneksi antar modul
  • protokol komunikasi
  • format data

4. Fase Coding

Pada fase ini, kita menghasilkan source code dan user manual.

5. Fase UAT

Pada fase ini, kita membuat dua dokumen, yaitu hasil pengetesan sesuai skenario di User Story dan Berita Acara UAT. Biasanya (tapi tidak selalu), berita acara dan hasil pengetesan digunakan sebagai lampiran penagihan.

6. Fase Implementasi

Advertisements

Resize PDF File Ubuntu via terminal

Using a single line of GhostScript command on my Ubuntu’s terminal, I was able to reduce the size of a  PDF file from 6 MB to approximately 1 MB:

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -sOutputFile=output.pdf input.pdf

You can also use the following parameters for -dPDFSETTINGS instead of /screen:

  • /screen – Lowest quality, lowest size
  • /ebook – Moderate quality
  • /printer – Good quality
  • /prepress – Best quality, highest size

Access IOS Device with Ubuntu

As a workaround, you can mount your iOS device with ifuse.

sudo apt install ifuse

Now connect your device and make sure it is paired with your computer.

idevicepair validate

If you get a SUCCESS message, you are good, if not run idevicepair pair. Now you can use ifuse to mount your iOS images folder:

mkdir ~/pics && ifuse ~/pics

The images are now available in your $HOME folder under pics. Ready to be synced with Shotwell. To unmount the folder, use fusermount:

fusermount -u ~/pics && rmdir ~/pics

Note: in this example I create a pics folder and remove it afterwards. If you already have a folder named like this, choose a different name.

Using Docker Without Sudo

Create new group if it does not exist. This command will likely fail as group maybe already exist, but let’s run it anyways.

sudo groupadd docker

Next we need to add current user to the group.

sudo gpasswd -a $USER docker

If you don’t want to add currently logged in user, but instead some other, you change $USER for the username of that user. Note that user must be allowed to use sudo.

Lastly we need to reload shell in order to have new group settings applied. For this you can reboot or you can log out and log back in, but both are nuke approaches when you actually want something more subtle so lets instead do this command

newgrp docker

Now we are ready to run docker test program without sudo

docker run hello-world

Remote Connections Mysql Ubuntu

To expose MySQL to anything other than localhost you will have to have the following line

For mysql version 5.6 and below

uncommented in /etc/mysql/my.cnf and assigned to your computers IP address and not loopback

For mysql version 5.7 and above

uncommented in /etc/mysql/mysql.conf.d/mysqld.cnf and assigned to your computers IP address and not loopback

#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx

Or add a bind-address = 0.0.0.0 if you don’t want to specify the IP

Then stop and restart MySQL with the new my.cnf entry. Once running go to the terminal and enter the following command.

lsof -i -P | grep :3306

That should come back something like this with your actual IP in the xxx’s

mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)

If the above statement returns correctly you will then be able to accept remote users. However for a remote user to connect with the correct priveleges you need to have that user created in both the localhost and ‘%’ as in.

CREATE USER ‘myuser’@’localhost’ IDENTIFIED BY ‘mypass’;
CREATE USER ‘myuser’@’%’ IDENTIFIED BY ‘mypass’;

then,

GRANT ALL ON *.* TO ‘myuser’@’localhost’;
GRANT ALL ON *.* TO ‘myuser’@’%’;

and finally,

FLUSH PRIVILEGES;
EXIT;

Memahami Perintah-perintah Crontab Paling Lengkap

Apa Itu Crontab?

Cron daemon merupakan sebuah service yang berjalan di semua distribusi Unix dan Linux. Service ini didesain khususnya untuk mengeksekusi suatu perintah diwaktu-waktu tertentu yang telah ditentukan. Tugas yang dikenal dengan istilah cronjobs ini merupakan hal mendasar yang harus dipahami setiap System Administrator. Cronjobs sangat berguna untuk mengotomatiskan suatu script sehingga mereka dapat dijalankan diwaktu-waktu tertentu.
Membuat Crontab Baru

Crontab dapat dibuat dengan mudah menggunakan perintah crontab.

Untuk membuat atau mengubah isi crontab

user@machine:~$ crontab -e

Perintah Dasar Crontab

crontab -e Mengubah atau membuat file crontab jika belum ada.
crontab -l Menampilkan isi file crontab.
crontab -r Menghapus file crontab.
crontab -v Menampilkan waktu terakhir mengubah isi file crontab. (Hanya tersedia dibeberapa sistem).

Crontab Parameters

# m h dom mon dow command

Baris yang dikomentari di atas menampilkan parameter tentang bagaimana crontab mendefinisikan setiap cronjob.
Daftar Parameter Crontab

m – Minute (menit) – 0 to 59
h – Hour (jam) – 0 to 23
dom – Day of Month (tanggal) – 0 to 31
mon – Month (bulan) – 0 to 12
dow – Day of Week (nomor hari) – 0 to 7 (0 dan 7 adalah hari minggu)

Berikut ini grafik untuk mempermudah:

* * * * * perintah yang akan dieksekusi
– – – – –
| | | | |
| | | | +—– day of week (0 – 7) (Sunday=0)
| | | +——- month (1 – 12)
| | +——— day of month (1 – 31)
| +———– hour (0 – 23)
+————- min (0 – 59)

Parameter-parameter di atas memungkinkan kita untuk membuat suatu jobs yang berjalan pada waktu-waktu tertentu. Setiap parameter yang dipilih dapat mengatur details waktu eksekusi sampai ke menit. Ada karakter khusus yang dapat membuat crontab lebih fleksibel.
Karakter Khusus

Kita dapat menggunakan karakter khusus disebuah cron untuk memperbolehkan pengguna menentukan interval waktu bagi sebuah job untuk dieksekusi. Karakter khusus ini dipakai di crontab untuk mendeklarasi cronjob.

Karakter khusus: Asterisk (bintang)

Karakter Asterisk (bintang) merupakan karakter wild card yang dipakai untuk membuat sebuah job dijalankan setiap menit, setiap jam, setiap, hari, setiap bulan (tergantung posisi dimana ia ditulis, lihat grafik di atas).

Contoh:

* * * * * /home/user/script.sh

Karakter khusus: Koma

Karakter koma saat kita ingin mengeksekusi sebuah job di dua waktu atau lebih. Contoh di bawah ini misalnya, kita ingin mengeksekusi /home/user/script.sh setiap menit ke 0, 15, dan 25.

0,15,25 * * * * /home/user/script.sh

Karakter khusus: Hyphen (-)

Karakter – dipakai untuk memberikan jarak waktu antar eksekusi job.

0-59 0-23 * * * /home/user/script.sh

Karakter khusus: Forward Slash (/)

Karakter / dipakai jika kita ingin memberikan interval antar eksekusi job. Pada contoh di bawah ini kita ingin agar script.sh dieksekusi pada menit ke 0 lalu 20 kemudian 40 dan 60.

*/20 * * * * /home/user/script.sh

Contoh Crontab

Sebagian besar crontab dapat memiliki metode sendiri dalam pembuatannya dengan menggunakan wild card atau mendefinisikan sebuah jarak.

Setiap menit setiap hari

# m h dom mon dow command
* * * * * /home/user/script.sh

Atau

# m h dom mon dow command
0-59 0-23 0-31 0-12 0-7 /home/user/script.sh

Setiap 10 menit setiap hari

# m h dom mon dow command
*/10 * * * * /home/user/script.sh

Atau

# m h dom mon dow command
0-59/10 * * * * /home/user/script.sh

Atau

# m h dom mon dow command
0,10,20,30,40,50 * * * * /home/user/script.sh

Setiap 5 menit pada pukul 6 pagi dimulai pada 6:07

# m h dom mon dow command
07-59/5 06 * * * /home/user/script.sh
# Perintah ini akan berjalan pada 6:07, 6:012, 6:17, 6:22, 6:27, seterusnya sampai 6:57

Setiap hari tengah malam

# m h dom mon dow command
0 0 * * * /home/user/script.sh

Atau

# m h dom mon dow command
0 0 * * 0-7 /home/user/script.sh

Tiga kali sehari

# m h dom mon dow command
0 */8 * * * /home/user/script.sh

Atau

# m h dom mon dow command
0 0-23/8 * * * /home/user/script.sh

Atau

# m h dom mon dow command
0 0,8,16 * * * /home/user/script.sh

Setiap weekday (Senin – Jumat) jam 6 pagi

# m h dom mon dow command
0 06 * * 1-5 /home/user/script.sh

Setiap weekend (Sabtu – Minggu) jam 6 pagi

# m h dom mon dow command
0 06 * * 6,7 /home/user/script.sh

Atau

# m h dom mon dow command
0 06 * * 6-7 /home/user/script.sh

Sebulan sekali setiap tanggal 20 jam 6 pagi

# m h dom mon dow command
0 06 20 * * /home/user/script.sh

Setiap 4 hari sekali jam 6 pagi

# m h dom mon dow command
0 06 */4 * * /home/user/script.sh

Setiap 4 bulan sekali tanggal 10 jam 6 pagi

# m h dom mon dow command
0 06 10 */4 * /home/user/script.sh

Penggunaan String Khusus

Kita juga dapat menggunakan string khusus sebagai pengganti kelima parameter di atas untuk memudahkan pembacaan.

@reboot – Dijalankan sekali setiap kali sistem dihidupkan
@yearly – Dijalankan sekali setahun 0 0 1 1 *
@annually – Sama seperti @yearly
@monthly – Dijalankan sekali sebulan 0 0 1 * *
@weekly – Dijalankan sekali seminggu 0 0 * * 0
@daily – Dijalankan setiap hari 0 0 * * *
@midnight – Sama seperti @daily
@hourly – Dijalankan setiap jam 0 * * * *

Contoh Penggunaan String

Setiap jam

@hourly /home/user/script.sh

Setiap bulan

@monthly /home/user/script.sh

Membuat Log File

Untuk menyimpan output cron di sebuah file, gunakan tanda >:

10 * * * * /usr/bin/php /www/virtual/username/script.py > /var/log/cron.log

Perintah di atas akan menimpa output sebelumnya. Jika ingin menambahkan output dibaris terakhir tanpa menimpa output sebelumnya gunakan tanda >>:

10 * * * * /usr/bin/php /www/virtual/username/script.py >> /var/log/cron.log

Blok Output yang Terlalu Ramai

Terkadang kita memiliki script yang memiliki output sangat panjang setiap dieksekusi dan dapat memenuhi log. Kita dapat menyembunyikan pesan-pesan tersebut dengan mengirimkan output-nya ke “/dev/null”.

# MAILTO=””
MAILTO=email@example.com
30 11 * * * /your/directory/whatever.py >/dev/null 2>&1

Apa maksud 2>&1 ?

Disini, Descriptor 1 artinya standard output (stdout) dan descriptor 2 artinya standard error (stderr).

echo test > afile.txt

… akan me-redirect stdout ke sebuah file bernama afile.txt. Sama dengan:

echo test 1> afile.txt

Untuk me-redirect stderr kita akan menulis:

echo test 2> afile.txt

>& adalah sintaks yang dipakai untuk me-redirect suatu aliran data ke descriptor lain – 0 untuk stdin. 1 untuk stdout. 2 untuk stderr.

Kita dapat me-redirect stdout ke stderr dengan melakukan:

echo test 1>&2 # or echo test >&2

Atau sebaliknya:

echo test 2>&1

Jadi singkatnya, 2> artinya kita ingin mengalirkan suatu stream stderr ke stdout (&1).
Executable Script

10 * * * * /usr/bin/php /www/virtual/username/hello.php

Saat sebuah script perlu dijalankan menggunakan aplikasi khusus, kita dapat menentukan perintah yang mengeksekusinya di depan script. Cara lainnya ialah menggunakan shebang yaitu dengan menambah #!/usr/local/bin/php di bagian paling atas suatu file:

#!/usr/local/bin/php

Lalu pastikan script di atas memiliki ijin untuk dieksekusi (chmodnya 755).

chmod 755 hello.php
./hello.php

Crontab sebelumnya dapat lebih singkat:

10 * * * * /www/virtual/username/hello.php

Apa maksud tanda #!?

Setiap tanda shebang (#!) di script manampun memberikan kemampuaan script tersebut untuk dieksekusi layaknya aplikasi standalone tanpa perlu menuliskan python atau php di depannya seperti saat kita menuliskan di terminal. Contohnya adalah:

#!/usr/bin/env python

#!/usr/bin/env python biasanya mengarah ke Python 2.7.x, jika ingin menggunakan Python 3.x, atau yang terbaru, gunakan:

#!/usr/bin/env python3

Menjalankan beberapa script bersamaan

Kita dapat menggunakan tanda “&” untuk menjalankannya secara pararel (sekaligus) atau tanda “&&” untuk menjalankannya satu persatu.

# script.sh & script2.sh & script.sh

source : https://www.codepolitan.com/memahami-perintah-perintah-crontab-paling-lengkap-59f69445130a0