Renew ssl certificate let’s encrypt with nginx

When you hate to see your website has ssl invalid certificate and it crossed out like this:

That means you need to update ssl certificate, in this case I use let’s encrypt. I just want to get rid of the invalid ssl certificate logo that make your website looks very unprofessional 🙂

Navigate to path where you place let’s encrypt directory:

$ cd ~/letsencrypt
~/letsencrypt$ sudo ./certbot-auto renew

Finally, restart the nginx, This is using centos, so it’s gonna be like this:

$ sudo /etc/init.d/nginx restart


Minify html output with simple php function

It’s always a pleasure to have html tags tidy and attached to one another. especially if these html tags are yours in your website. To have this we can do with a simple php function. Place the code below at the top of header php page or index page.

function sanitize_output($buffer) {
$search = array(
'/\>[^\S ]+/s',
'/[^\S ]+\</s',
$replace = array(
$buffer = preg_replace($search, $replace, $buffer);
return $buffer;

How to download and convert video from youtube to MP3 in terminal

So, I needed to download songs from youtube but not as a video but only audio. Then I went to this website to convert these video as usual. The website that I used to convert video from youtube was popped out ads that I didn’t like. I started to thinking why the hell that I need those websites anyway? just use the terminal instead.

$ youtube-dl --extract-audio --audio-format mp3 <youtube-url>

Setup uWSGI and Emperor on Centos 6.xx

uWSGI is driving me crazy when install it, every single time. I’m using Centos 6.9 to setup my python app.

This one is for setup uWSGI and make sure you already installed Python2.7 on your machine:

$ wget
$ which python2.7
$ sudo /usr/local/bin/python2.7
$ which pip2.7
$ sudo /usr/local/bin/pip2.7 install uWSGI
$ which uwsgi
$ uwsgi --version

Test your app with uWSGI manually:

$ sudo /usr/local/bin/uwsgi --ini /dir/to/app/uwsgi.ini

Setup vassels from uwsgi ini file

$ sudo mkdir -p /etc/uwsgi/vassels
$ sudo ln -s /dir/to/app/uwsgi.ini /etc/uwsgi/vassels/appname.ini

Create emperor to make uWSGI as a service:

$ sudo vim /etc/init.d/emperor
# chkconfig: 2345 99 10
# Description: Starts and stops the emperor-uwsgi
# See how we were called.
RUNEMPEROR="/usr/local/bin/uwsgi --emperor=/etc/uwsgi/vassels"
start() {
if [ -f /var/run/$PIDNAME ] && kill -0 $(cat /var/run/$PIDNAME); then
echo 'Service emperor-uwsgi already running' >&2
return 1
echo 'Starting Emperor...' >&2
local CMD="$RUNEMPEROR &> \"$LOGFILE\" & echo \$!"
su -c "$CMD" > "$PIDFILE"
echo 'Service started' >&2
stop() {
if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then
echo 'Service emperor-uwsgi not running' >&2
return 1
echo 'Stopping emperor-uwsgi' >&2
kill -7 $(cat "$PIDFILE") && rm -f "$PIDFILE"
echo 'Service stopped' >&2
status() {
if [ ! -f "$PIDFILE" ]; then
echo "Emperor is not running." >&2
return 1
echo "Emperor (pid  `cat ${PIDFILE}`) is running..."
ps -ef |grep `cat $PIDFILE`| grep -v grep
case "$1" in
echo "Usage: emperor {start|stop|restart}"
exit 1
$ sudo chmod +x /etc/init.d/emperor
$ sudo /etc/init.d/emperor start
$ sudo chkconfig emperor on

Check your app if it’s already running:

$ sudo ps -ef | grep uwsgi

Arcanist cheatsheet

$ arc patch D123
$ git add .
$ git commit -am "update"
$ arc diff --update D123
$ arc land --revision D123

Update diff to master

$ git checkout master
$ git merge arcpatch-D123
$ git push

Make a diff from current working branch

$ git add.
$ git commit -am "update"
$ arc diff --update D123

Push to working branch without land

$ git add .
$ git commit -am "update"
$ git push origin lol-branch

Make a diff from working branch from the first update

$ git checkout lol-branch
$ git add.
$ git commit -am "update"
$ arc diff master

SSH tunneling to your secured database/RDS through bastion/jump server with forwarded port

$ ssh -f -N -v -t -L 5433:target_host:5432 user@jump_server
  • target_host is the host/database_server/RDS that you want to access that only can be accessed from jump _server or bastion if you’re using AWS
  • jump_server is the host that accessible from you and the only host that can access target_host
  • 5432 is local port (postgresql default)
  • 5433 is the forwarded host/database_server/RDS port that you can access through localhost
    What’s next?

    Afterwards, you should be able to get postgresql open with forwarded port through localhost (5433).

    Test the forwarded port using telnet:

    $ telnet localhost 5433

    or using netcat:

    $ nc -vz localhost 5433

Create partition in Linux that size larger than 2TB

Install parted:

sudo apt-get install parted

Use parted to create partition:

parted /dev/sdb

Inside parted cli, follow these steps:

(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted) unit GB
(parted) mkpart primary 0.0GB 3000GB
(parted) print

Format the filesystem we created, using mkfs and try to mount it to mount point:

mkfs.ext4 /dev/sdb1
mkdir /tes
mount /dev/sdb1 /tes