Useful tech tutorials that I found this month (April/2022)

I decided to catalog nice tutorials and tools that I found out. This post is the first of the season. I’m not sure if I’ll do it every month, but I’ll try to keep it constant.

How to Auto Refresh Chrome Tabs Without an Extension

It’s a tutorial from Technipages that suggest creative ways to refresh a Chrome tab without a Chrome Extension. It’s quite useful and even have a bookmarklet sollution.

Injecting custom JS in any website

This one isn’t a tutorial, but a tool. It’s a extension for Google Chrome called Custom JavaScript for Websites 2 it has over 40,000 active users and it syncs your customs JS on every Chrome session that you are running.

It’s quite useful to create “micro extensions” for websites that you work everyday. I have to work with an online system at work on a web browser. I’m using the CJS Extension to inject JS to the page and highlight tasks that have been designated to my username. I’m also using it to alert me when the inbox is updated.

Run apps as a service on Ubuntu

If you have a script (jar, py, or whatever) or a software that you need to run as a service and also if you need it to start automatically if/when system restarts, you can follow the instructions bellow.

I’ll show 2 examples of my own: Tabula and Archivebox. They all run on my Ubuntu Server VM.

Step 1 – Create a service

Create a service at “/etc/systemd/system”. You name it and use the text editor of your preference.

I’m using “nano” and named them “tabula.service” and “archivebox.service“.

For Tabula

 sudo nano /etc/systemd/system/tabula.service

Edit your file. You can use my code bellow, changing as necessary.

Note that lines beginning with a # are comments and your computer won’t execute them. You can delete them if you like. I also kept how I used in my case.

[Unit]
# Add the description of your service
# Description=Tabula
Description=YOUR_DESCRIPTION

[Service]
# Change this to your workspace (where your script will run). I decided to keep my Tabula jar file on my home directory.
# WorkingDirectory=/home/fsugi/tabula
WorkingDirectory=PATH_TO_WORKING_DIRECTORY

# Path to executable. Executable is a bash script which calls jar file.
# NOTE: bash script usually ends with ".sh" but I didn't do that. That's why my script example is "tabula"
# ExecStart=/home/fsugi/tabula/tabula
ExecStart=PATH_TO_SCRIPT

# Other options that you can change, if necessary. I suggest you keep as it.
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.targetCode language: PHP (php)

For Archivebox

 sudo nano /etc/systemd/system/archivebox.service

Edit your file. You can use my code bellow, changing as necessary.

Note that lines beginning with a # are comments and your computer won’t execute them. You can delete them if you like. I also kept how I used in my case.

[Unit]
# Add the description of your service
# Description=Archivebox service
Description=YOUR_DESCRIPTION

[Service]
# If you need to run the service as a user, you must define them. If none is declared, root is the default.
# User=fsugi
# Group=fsugi
User=USER
Group=GROUP

# Change this to your workspace (where your script will run). I decided to keep my Tabula jar file on my home directory.
# WorkingDirectory=/home/fsugi/archivebox
WorkingDirectory=PATH_TO_WORKING_DIRECTORY

# Path to executable. Executable is a bash script which calls jar file.
# NOTE: bash script usually ends with ".sh" but I didn't do that. That's why my script example is "archivebox"
# ExecStart=/home/fsugi/archivebox/archivebox
ExecStart=PATH_TO_SCRIPT

# Other options that you can change, if necessary. I suggest you keep as it.
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.targetCode language: PHP (php)

Step 2 – Create bash script to call your service

You must create now a bash script.

I’m using again “nano” as a editor. Notice that I’m not using “sudo” and I’m creating the script where I defined on the “.service” above.

For Tabula

nano /home/fsugi/tabula/tabula

Edit your file. You can use my code bellow, changing as necessary.

Note that lines beginning with a # are comments and your computer won’t execute them. You can delete them if you like. I also kept how I used in my case.

#!/bin/sh

# This is the command that runs my jar file. Notice that I wrote the complete path to run "java" binary. The other atributes are parameters defined for running Tabula
/usr/bin/java -Dfile.encoding=utf-8 -Xms256M -Xmx1024M -Dwarbler.port=1111 -jar /home/fsugi/tabula/tabula.jarCode language: PHP (php)

For Archivebox

nano /home/fsugi/archivebox/archivebox

Edit your file. You can use my code bellow, changing as necessary.

Note that lines beginning with a # are comments and your computer won’t execute them. You can delete them if you like. I also kept how I used in my case.

#!/bin/sh

# Notice that I wrote the complete path to run the "archivebox" binary. The other atributes are parameters defined for running the Archivebox.
/usr/bin/archivebox server 0.0.0.0:7000Code language: PHP (php)

Step 3 – Start service

Every time that you change a service, you must first reload them.

sudo systemctl daemon-reload

To test (or start) your service (I’m using tabula as example):

sudo systemctl start tabula.serviceCode language: CSS (css)

To stop your service:

sudo systemctl stop tabula.serviceCode language: CSS (css)

To enable your service to automatically load on start-up:

sudo systemctl enable tabula.serviceCode language: CSS (css)

To disable your service to automatically load on start-up:

sudo systemctl disable tabula.serviceCode language: CSS (css)

To check the status of your service:

sudo systemctl status tabula.serviceCode language: CSS (css)

It’s always good to check the status of your service while setting it up to identify errors.

Additional – Logging

If you want to check all the log for your service (I’m using the tabula.service):

sudo journalctl --unit=tabula.service

You can tail the live log using the -f option:

sudo journalctl -f -u tabula.serviceCode language: CSS (css)

Use -n <# of lines> to view specified number of lines of log

sudo journalctl -f -n 1000 -u tabula.serviceCode language: CSS (css)