February 28, 2023
How to install VSCode on Cloud
How to create SWAP Space
Deploy Algorithmic Trading Strategy: SSH into VM Instance | Part 4
Algorithmic Trading - Create an VM Instance
Setup Always free VPS Server
Welcome back to our series on Setting up Your Live Algorithmic Trading Environment from Scratch! In this second video of the series, we'll be showing you how to set up an always free virtual private server (VPS) on your preferred cloud provider.
An always free VPS is an excellent option for anyone looking to set up a reliable, cost-effective trading environment. In this video, we'll cover the steps required to set up your always free VPS, including how to select your preferred operating system and configure your settings for optimal performance.
By the end of this video, you'll have a fully functional VPS server up and running, ready for use in your algorithmic trading environment. Be sure to watch the next video in our series, where we'll cover how to create and configure a virtual machine (VM) instance on your new VPS server.
Thanks for watching, and don't forget to like, comment, and subscribe to our channel for more algorithmic trading tutorials and tips!
Setting up Your Live Algorithmic Trading Environment from Scratch, p1: Why Cloud?
January 7, 2023
How to Deploy Django with Nginx Gunicorn and Supervisor on Ubuntu 22.04
Learn how to deploy a Django application with Nginx, Gunicorn, and Supervisor on Ubuntu 22.04. Get step-by-step instructions for setting up a secure, reliable web server using best practices that will help you keep your web application.
Create Separate User and Group
sudo groupadd --system project-group
Add New User
sudo useradd --system --gid project-group --shell /bin/bash --home/projectroot project-user
Create a Root Folder for the project
mkdir ~/projectroot
cd ~/projectroot
Then create a virtual environment for the Project
virtualenv app1
Go to the environment folder and activate the virtual environment
cd app1
source bin/activate
Create the requirements.txt file for the Django or flask project
sudo vi requirements.txt
Add the packages then save the file.
Create a log folder in the environment folder
mkdir logs
Now clone the Django or flask project from the GitHub repository
git clone url.git
change the ownership permission for the project and other files
sudo chown -R project-user:project-group .
Create a gunicorn script in bin folder
sudo vi bin/gunicorn_start
Paste the below script into the file
#!/bin/shNAME='Project Name'DJANGODIR=/projectroot/app1/django_projectSOCKFILE=/projectroot/app1/run/gunicorn.sockUSER=project-groupGROUP=project-userNUM_WORKERS=3DJANGO_SETTINGS_MODULE=django_project.settingsprodDJANGO_WSGI_MODULE=django_project.wsgiTIMEOUT=120cd $DJANGODIRsource ../bin/activateexport DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULEexport PYTHONPATH=$DJANGODIR:$PYTHONPATHRUNDIR=$(dirname $SOCKFILE)test -d $RUNDIR || mkdir -p $RUNDIRexec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \--name $NAME \--workers $NUM_WORKERS \--timeout $TIMEOUT \--user=$USER --group=$GROUP \--bind=unix:$SOCKFILE \--log-level=debug \--log-file=-
then make this file Executable
chmod +x bin/gunicorn_start
Now install the Supervisor
sudo apt install supervisor
Create a new config file in the supervisor
sudo vi /etc/supervisor/conf.d/django_project.conf
then add the below script and save
[program:django_project]command = /projectroot/app1/bin/gunicorn_startuser = project-userstdout_logfile = /projectroot/app1/logs/supervisor.logredirect_stderr = trueenvironment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8
supervisorctl rereadsupervisorctl updatesupervisorctl status
Now create the nginx configaration for the project
sudo vi /etc/nginx/sites-available/django_project.conf
paste the below configaration.
upstream django_project_app_server {server unix:/saulroot/saul_3_6_4/run/gunicorn.sock fail_timeout=0;}server {listen 80;server_name example.com;access_log /projectroot/app1/logs/nginx-access.log;error_log /projectroot/app1/logs/nginx-error.log;location /static/ {alias /projectroot/app1/django_project/static/;}location /media/ {alias /projectroot/app1/django_project/media/;}location / {proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_redirect off;if (!-f $request_filename) {proxy_pass http://django_project_app_server;}}}
Restart Nginx
sudo nginx -tsudo systemctl restart nginx
open the browser http://example.com
January 5, 2023
How to Install Arduino IDE 2.0(AppImage) on Ubuntu 22.04
In his article we will discuss how to install Arduino IDE 2.0 AppImage Ubuntu 22.04. The following has been performed with the following versions:
• Ubuntu 22.04 64bits
• Arduino IDE 2.0.3
Note that you can install the Arduino IDE from Ubuntu Software, but this is not the last version (1.8.19 while the last version is 2.0.3). Arduino IDE can also be installed with the AppImage, but its integration in Ubuntu is not nice. For example, adding the app in your launcher is not easy.
Download
First, download the AppImage file from the Arduino official website.
Install files
Open a terminal in the folder where the AppImage file has been download. change the file permission with following command:
cd Downloads
chmod +x arduino-ide_2.0.3_Linux_64bit.AppImage
Then Extract the file with the following command:
./arduino-ide_2.0.3_Linux_64bit.AppImage --appimage-extract
Create a folder in home
mkdir ~/arduino
copy and rename the extracted above AppImage files to arduino directory
cp -r squashfs-root/* ~/arduino/
Launch IDE
Go to the installation folder:
cd ~/arduino
Launch the Arduino IDE with the following command:
./arduino-ide
The IDE should open.
Create the app desktop shortcut
To add the Arduino IDE to the launcher, create a new file arduino.desktop in the folder ~/.local/share/applications.
cd ~/.local/share/applications
sudo vi arduino.desktop
Paste the following command and change Exec and Icon path according to your folder path structure.
[Desktop Entry]
Version=1.0
Type=Application
Name=Arduino IDE 2.0
Icon=/home/username/arduino/arduino-ide.png
Exec=/home/username/arduino/arduino-ide
Comment=The Arduino Software IDE
Categories=Development;IDE;
Terminal=false
Happy Coding :)
December 24, 2022
Introduction to MQTT Client Tools using CLI
MQTT (Message Queuing Telemetry Transport) is a machine to machine internet of things connectivity protocol. It is a Publish-Subscribe very lightweight transport protocol and it is a useful protocol where the bandwidth is a premium.
Installing Mosquitto:
To install Mosquitto in Ubuntu open terminal and type following command
> sudo apt install mosquitto
Mosquitto broker will install it on your system. You can check it in the cd /etc/mosquitto directory.
Now to install client tools type following command
> sudo apt install mosquitto-clients
Installation part is done now we will to look at some examples of using this mosquitto-client tools
for publishing and subscribing.
Now lets check that our mosquitto broker is installed properly or not for that type command
> sudo service mosquitto status
You will see mosquitto is active (running). If not then try typing ‘start’ instead of ‘status’ in the previous command.
Use of Mosquitto Client tools:
We will start with Subscriber first because MQTT Broker requires it to forward messages to the clients that are subscribed to a topic/topics.
Now type the following command to connect with the broker as a subscriber. (-d debug flag set ) and subscribe to topic ‘test/topic’
> mosquitto_sub -h localhost -t test/topic -d
Once entered, the client will always be in listening mode to exit press ctrl+c.
Useful Flag Options:
-p → set port number default is 1883-h → ip address or host name-t →Topic name-u →username-P →password-i →provide client id-r →sets retain flag-n →sends Null message useful for learning retain message-q →for Quality of service (0,1,2)-k →keep alive
For more info use > mosquitto_sub –help
Now using mosquitto_pub we will publish message to topic ‘test/topic’ .
> mosquitto_pub -h localhost -t test/topic -m "first message" -d
After publishing message publisher client will disconnect automatically.
Subscribers will receive message on topic ‘test/topic’.
Publishing using username and password
> mosquitto_pub -h localhost -t test/topic -u nimesh -P passwd -m "first message" -d
Remember that -P (capital P) is for password and -p is for port number.
Publish with Retain Flag and QoS Flag:
use of -r and -q flag
In PUBLISH packet you will notice that q1, r1 flag will be set.
Retain flag will help to inform the broker to keep the last message on that topic. This feature allows you to store a single message per MQTT topic on broker and send it to all current and future subscribers.
To save a retained message, simply set a retained flag when publishing it to the broker.
Publish with Client Name:
This option is useful when testing client restrictions using prefixes or client names with ACLs. Uses -i option. You could also use the -I option if you just needed prefixes.
> mosquitto_pub -h localhost -t test/topic -i client_01 -m "first message" -d
Publishing JSON Data:
Json data always has a key-value pair. When we want to publish data using mosquitto_pub always keep in mind one think that dont use quotes.
Eg. don’t use {“LED_Status”:”ON”} but instead use: {\”LED_Status\”:\”ON\”}.
If you are publishing multiple datas then you need to put the entire string in quotes:
Eg. "{\"temp1\":22,\"temp2\":45}"
Subscribe using -C flag:
A useful option is the -C flag which will disconnect after receiving a certain number of messages.
> mosquitto_sub -h localhost -t test/topic -C 3
While publishing with -l flag publisher will not disconnect and we can enter message on terminal.
Subscribe using -v flag :
-v means verbose. It will show the topic name as well as the message.
There are more options available that you can try. In the end let's conclude that mosquitto_sub and mosquitto_pub client utility is an excellent tool for troubleshooting and testing purposes for MQTT and Broker.