<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dean Jones</title>
    <description>The latest articles on DEV Community by Dean Jones (@deanjones).</description>
    <link>https://dev.to/deanjones</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F771226%2Fbb8411a2-93d0-43b9-8c6b-a3c813c053d2.jpg</url>
      <title>DEV Community: Dean Jones</title>
      <link>https://dev.to/deanjones</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/deanjones"/>
    <language>en</language>
    <item>
      <title>While Linux is running other processes in the background</title>
      <dc:creator>Dean Jones</dc:creator>
      <pubDate>Thu, 27 Oct 2022 18:42:12 +0000</pubDate>
      <link>https://dev.to/jamaicahomes/while-linux-is-running-other-processes-in-the-background-145g</link>
      <guid>https://dev.to/jamaicahomes/while-linux-is-running-other-processes-in-the-background-145g</guid>
      <description>&lt;p&gt;When working in the Linux family of operating systems, there are times when you need to start a long process, such as searching for a file, and at the same time return to working in the console. It's perfectly reasonable to open multiple terminals and do each task individually, but what if we're not looking for the easy way out? In this case, it would make sense to run the process in the background. Let's see how to do it in two ways.&lt;/p&gt;

&lt;p&gt;First you need to understand the syntax of the command line. Running one program/script, etc. execute explicitly, for example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ping 10.10.0.1&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
or&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./script.sh&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
or&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/home/admin/scripts/script.sh&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
To start one program at the end of another, use the &amp;amp;&amp;amp; (double ampersand) logical operator, for example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mysqldump mybase -u user1 &amp;gt; db.sql &amp;amp;&amp;amp; tar zcvf db.tar db.sql&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Not a very good example, since you could use the redirect “|”, approximately it would look like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mysqldump mybase -u user1 | tar -cvf db.tar -&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
All of these examples are great for scripting, but running "long" processes will make the terminal inaccessible, as noted above. In this case, the following example will help:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find / -iname “*.txt” &amp;gt; abc.list &amp;amp;&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
It is the single &amp;amp; at the end of the line, separated by a space.&lt;/p&gt;

&lt;p&gt;As you can see, the first line starts the process, but since there are few txt files in the system, the process ends. A subsequent press of Enter in the terminal reports that the process has completed successfully.&lt;/p&gt;

&lt;p&gt;Let's consider another option. Let's use the ping utility, we will write the results to a file.&lt;/p&gt;

&lt;p&gt;Due to the lack of restrictive parameters for this command, its execution will be interrupted when the hard disk space runs out.&lt;/p&gt;

&lt;p&gt;Terminating the process with killall will show that the process did not end on its own, but was “killed”.&lt;/p&gt;

&lt;p&gt;You can control background processes, in this case, with the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;jobs&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The jobs command itself will show how many processes are running and what exactly is running, but the different keys help display more information. The -l switch will also show the system process ID (PID). The -p switch will display only PIDs, without a description.&lt;/p&gt;

&lt;p&gt;You can use the fg 1 or %1 command to enter foreground mode.&lt;/p&gt;

&lt;p&gt;Alternative way.&lt;/p&gt;

&lt;p&gt;Use the screen multiplexer utility. Some distributions require installation.&lt;/p&gt;

&lt;p&gt;CentOS:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yum install screen&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Ubuntu:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt-get install screen&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Running the command is simple:&lt;/p&gt;

&lt;p&gt;screen&lt;/p&gt;

&lt;p&gt;&lt;code&gt;After execution, a window with introductory text will appear.&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Press Enter.&lt;/p&gt;

&lt;p&gt;The contents of the terminal will be updated. We can execute a command, for example, the same ping. To return to the main terminal, press ctrl + a, and then the d key.&lt;/p&gt;

&lt;p&gt;A message will appear in the terminal that the process has been detached.&lt;/p&gt;

&lt;p&gt;You can view the running screens with the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;screen -list&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Return to the process can be done with the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;screen -r&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
or&lt;/p&gt;

&lt;p&gt;&lt;code&gt;screen -r&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
In our case:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;screen -r 2636.pts-0.ubuntu&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the process was running in the background.&lt;/p&gt;

&lt;p&gt;Sometimes you need a script that would run a process in the background when the system boots. In this case, you should use the following example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;screen -d -m -S SCREEN_NAME program_1&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
-d -m Runs the screen process in detached mode. A new session will be created, but it will not be shown.&lt;/p&gt;

&lt;p&gt;-S - will set the name for the process. Useful when multiple screen processes are running.&lt;/p&gt;

&lt;p&gt;You can open the process window with the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;screen -r my_ping&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For more information visit &lt;a href="https://dev.tourl"&gt;hostrooster.com&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to set up NGINX with Node.js on Debian using HostRooster</title>
      <dc:creator>Dean Jones</dc:creator>
      <pubDate>Tue, 25 Oct 2022 14:22:26 +0000</pubDate>
      <link>https://dev.to/jamaicahomes/how-to-set-up-nginx-with-nodejs-on-debian-using-netooze-55l6</link>
      <guid>https://dev.to/jamaicahomes/how-to-set-up-nginx-with-nodejs-on-debian-using-netooze-55l6</guid>
      <description>&lt;p&gt;This post explains how to set up the Debian operating system-powered virtual server where node.js and the NGINX web server will be installed.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;What is Node.js and NGINX?&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
A JavaScript framework called Node.js is capable of serving responsive and dynamic content. Like HTML or CSS, JavaScript is often a built-in browser language. Additionally, Node.js is a JavaScript server-side platform similar to PHP. Node.js frequently integrates with other well-liked server programs like NGINX or Apache. In this article, we'll look at setting up NGINX to handle requests from the outside world and Node.js to handle requests from the inside.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Initial requirements&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The majority of the commands in this manual call for superuser rights. Install the sudo command, enable superuser mode, and add your user to the sudo group if you encounter the following bash error while using the sudo command: sudo: command not found:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;su -&lt;br&gt;
apt-get install sudo -y&lt;br&gt;
usermod -aG sudo yourusername&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Update local repositories and packages:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Installing and configuring NGINX&lt;/p&gt;

&lt;p&gt;Install NGINX as well as the screen module, which will be used later:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt-get install nginx screen&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Start nginx:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;service nginx start&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Use the cd command to change to the following directory:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd /etc/nginx/sites-available/&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Create a new file, replacing example.com with your domain name or IP address:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;touch example.com&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Paste the following lines into the generated file, replacing example.com with your domain name or IP address:&lt;/p&gt;

&lt;p&gt;`#Names a server and declares the listening port&lt;br&gt;
server {&lt;br&gt;
listen 80;&lt;br&gt;
server_name example.com &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt;;&lt;/p&gt;
&lt;h1&gt;
  
  
  Configures the publicly served root directory
&lt;/h1&gt;
&lt;h1&gt;
  
  
  Configures the index file to be served
&lt;/h1&gt;

&lt;p&gt;root /var/www/example.com;&lt;br&gt;
index index.html index.htm;&lt;/p&gt;
&lt;h1&gt;
  
  
  These lines create a bypass for certain pathnames
&lt;/h1&gt;
&lt;h1&gt;
  
  
  &lt;a href="http://www.example.com/test.js"&gt;www.example.com/test.js&lt;/a&gt; is now routed to port 3000
&lt;/h1&gt;
&lt;h1&gt;
  
  
  instead of port 80
&lt;/h1&gt;

&lt;p&gt;location /test.js {&lt;br&gt;
proxy_pass &lt;a href="http://example.com:3000"&gt;http://example.com:3000&lt;/a&gt;;&lt;br&gt;
proxy_set_header Host $host;&lt;br&gt;
}&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;Save changes and change directory:&lt;br&gt;
&lt;code&gt;cd /etc/nginx/sites-enabled/&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Create a symbolic link to the created file:&lt;br&gt;
&lt;code&gt;ln -s /etc/nginx/sites-available/example.com&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Remove the default symbolic link:&lt;br&gt;
&lt;code&gt;rm default&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Restart NGINX to apply the new configuration:&lt;br&gt;
&lt;code&gt;service nginx reload&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Creating directories and HTML files&lt;/p&gt;

&lt;p&gt;Create the following directory hierarchy, replacing example.com:&lt;br&gt;
&lt;code&gt;mkdir -p /var/www/example.com&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Change to the created directory:&lt;br&gt;
&lt;code&gt;cd /var/www/example.com&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Create an index file:&lt;br&gt;
&lt;code&gt;touch index.html&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Insert the following lines:&lt;br&gt;
`&amp;lt;!DOCTYPE html&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;



&lt;center&gt;
&lt;p&gt;
&lt;b&gt;`
If you have not finished the guide, the button below will not `work.
&lt;/b&gt;
&lt;/p&gt;


&lt;/center&gt;

&lt;center&gt;
&lt;p&gt;`
The button links to test.js. The test.js request is passed through NGINX and then handled by the Node.js server.
`&lt;/p&gt;
&lt;/center&gt;

&lt;center&gt;
&lt;a href="test.js"&gt;
Go to test.js
&lt;/a&gt;
&lt;/center&gt;



&lt;p&gt;Installing Node.js`&lt;/p&gt;

&lt;p&gt;At this point, NGINX is listening on port 80 and serving the content. It is also configured to forward requests to the &lt;code&gt;/test.js application on port 3000.&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Install the Node Version Manager:&lt;br&gt;
&lt;code&gt;wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Close and reopen your terminal.&lt;br&gt;
&lt;code&gt;&lt;br&gt;
Install Node.js with the following command:&lt;br&gt;
nvm install 0.10&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create the following file:&lt;br&gt;
&lt;code&gt;touch /var/www/example.com/server.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Paste the following content into it:&lt;br&gt;
`&lt;code&gt;//nodejs.org/api for API docs&lt;br&gt;
//Node.js web server&lt;br&gt;
var http = require("http"), //Import Node.js modules&lt;br&gt;
url = require("url"),&lt;br&gt;
path = require("path"),&lt;br&gt;
fs = require("fs");&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;http.createServer(function(request, response) { //Create server&lt;br&gt;
var name = url.parse(request.url).pathname; //Parse URL&lt;br&gt;
var filename = path.join(process.cwd(), name); //Create filename&lt;br&gt;
fs.readFile(filename, "binary", function(err, file) { //Read file&lt;br&gt;
if(err) { //Tracking Errors&lt;br&gt;
response.writeHead(500, {"Content-Type": "text/plain"});&lt;br&gt;
response.write(err + "n");&lt;br&gt;
response.end();&lt;br&gt;
return;&lt;br&gt;
}&lt;br&gt;
response.writeHead(200); //Header request response&lt;br&gt;
response.write(file, "binary"); //Sends body response&lt;br&gt;
response.end(); //Signals to server that&lt;br&gt;
}); //header and body sent&lt;br&gt;
}).listen(3000); //Listening port&lt;br&gt;
console.log("Server is listening on port 3000.") //Terminal output&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Start a new screen session:&lt;br&gt;
`screen&lt;/p&gt;

&lt;p&gt;Next, press Enter and start the Node.js server:&lt;br&gt;
node server.js`&lt;/p&gt;

&lt;p&gt;Press the key combination Ctrl+A, then D .&lt;/p&gt;

&lt;p&gt;Create a test application&lt;/p&gt;

&lt;p&gt;Create a file with test data:&lt;br&gt;
`touch /var/www/example.com/test.js&lt;/p&gt;

&lt;p&gt;And paste the following data into it:&lt;br&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;center&gt;
&lt;h2&gt;
Your Node.JS server is working.
&lt;/h2&gt;
&lt;/center&gt;

&lt;center&gt;
&lt;p&gt;`
The below button is technically dynamic. You are now using Javascript on both the client-side and the server-side.
`&lt;/p&gt;
&lt;/center&gt;



&lt;center&gt;

Display the date and time.


&lt;/center&gt;

&lt;p&gt;&lt;br&gt;
&lt;br&gt;
&lt;code&gt;&lt;br&gt;
Open port 80 for http connection:&lt;br&gt;
&lt;/code&gt;iptables -A INPUT -p tcp --dport 80 -j ACCEPT&lt;br&gt;
``&lt;br&gt;
Navigate in your browser to your domain or ip address. The next page will be displayed. Click the Go to the test.js button :&lt;/p&gt;

&lt;p&gt;If everything is configured correctly, using the Display the date and time button on a new page, you can display the current time and date:&lt;/p&gt;

&lt;p&gt;Node.js and [NGINX] &lt;/p&gt;

</description>
      <category>node</category>
      <category>nginx</category>
      <category>debian</category>
    </item>
    <item>
      <title>CLI vs API: What's the Difference?</title>
      <dc:creator>Dean Jones</dc:creator>
      <pubDate>Tue, 13 Sep 2022 16:49:05 +0000</pubDate>
      <link>https://dev.to/jamaicahomes/cli-vs-api-whats-the-difference-39a</link>
      <guid>https://dev.to/jamaicahomes/cli-vs-api-whats-the-difference-39a</guid>
      <description>&lt;p&gt;****In this article, we will discuss why API and CLI automation tools are required, as well as how to use them using &lt;a href="https://hostrooster.com"&gt;HostRooster&lt;/a&gt; as an example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Command Line Interface (CLI)?&lt;/strong&gt;&lt;br&gt;
API (Application Programming Interface) is a method for one program to interact with another when elements from one application are used within another.&lt;/p&gt;

&lt;p&gt;It's difficult to know what to do next with these tools based on their definitions, so let's take a closer look at each one in a detail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Command Lind Interface&lt;/strong&gt;&lt;br&gt;
Before graphical user interfaces we're created, the only way to interact with a computer was via command language which was second nature to most people at that point. How many of you remember using ms-dos. Does not seem that long ago at all, but that was more than 20 years ago and despite the advent of graphical interfaces over the last couple of decades, the command line still remains an important tool today. But why? Well, i believe it is because it provides quick and direct access to the necessary functions of a computer and or server over and above the new graphical interfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. How the Command Lind Interface CLI's Operates&lt;/strong&gt;&lt;br&gt;
A users first needs to enter text commands into the interface command  line and then sit and wait for the computer to respond. The tool then translates user requests into operating-system-friendly functions and responds to the user. Proving you have entered something the the computer can understand. You'll get back a positive response or command line error. The Command Line displays errors for incorrect command syntax, commands that are not valid for the active window, or commands that are lacking required parameter or have incorrect parameters. Commands in the CLI can be either one word or multiple lines, known as scripts. &lt;/p&gt;

&lt;p&gt;For example, you can determine the volume of the created disk using the hostrooster command line interface as follows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;gt;s2ctl server get-volume l1s12345 --volume-id 20210 &lt;br&gt;
&lt;/code&gt;&lt;br&gt;
hostrooster tool *s2ctl allows you to control your infrastructure from the terminal.&lt;/p&gt;

&lt;p&gt;As a result, you will receive detailed server information as foolows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;id: 20210 &lt;br&gt;
  name: boot &lt;br&gt;
  server_id: l1s12345 &lt;br&gt;
  size_mb:  25600 &lt;br&gt;
  created: '1970-01-01T0:00:00.0000000Z'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The Command Line Inferface tool can be used to automate routine tasks. You or your programming team can create a set of commands that the computer will execute at a specific time or when a specific situation occurs.&lt;/p&gt;

&lt;p&gt;With quick commands and the input line, you can do everything that is available in the hostrooster control panel GUI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is API?&lt;/strong&gt;&lt;br&gt;
Well the wikipedia definition is a programming interface that allows two or more computer programs to communicate with one another. It is a type of software interface that provides a service to other programs. An API specification is a document or standard that describes how to build or use such a connection or interface. &lt;/p&gt;

&lt;p&gt;The API essentially acts as a bridge between two programs, allowing them to communicate with each another via a set of protocols. Most developers do not need to understand how a third-party API work; but instead use the interface to communicate with other products and services.&lt;/p&gt;

&lt;p&gt;An API can also be viewed as standing contract between two services that defines how the services interact with one another. The contract is written documentation that describes how developers should structure requests and responses. You can, for example, read the hostrooster API documentation, which includes a description of the API, request and response structures, error codes, and operation examples.&lt;/p&gt;

&lt;p&gt;To begin, you must use authorization data to gain access to the &lt;a href="https://hostrooster.com/"&gt;API&lt;/a&gt; (API key, password, Secret key). To use the hostrooster API, for example, the user must first generate an API key for the project, which must then be passed with each request in the X-API-KEY header (exmaple):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-H "X-API-KEY: lmGwbvllpIqIrKROOCefefefeffKP5EYf...gfXUTpuYRefefefefShmm6r"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The operating principle&lt;/strong&gt;&lt;br&gt;
Mulesoft experts provide a good example of how the API works by comparing this tool to a restaurant. Consider sitting at a restaurant table and selecting a dish. The restaurant kitchen is a component of the "system" that will prepare the dishes you requested. However, there is insufficient link to send your order to the kitchen and deliver the food to your table. This is where the waiter (in our case, the API) comes in, taking your request or order and informing the kitchen (i.e. the system) of what to do. Then he provides you with the answer in the form of delectable food (example).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl -X GET \&lt;br&gt;
 https://api.hostrooster/api/v1/servers/{server_id} \&lt;br&gt;
  -H 'content-type: application/json' \&lt;br&gt;
  -H 'x-api-key: lmGwbvllpIqIrKROOCLgE5ZefefeefYf...gfXUTpuYRpNQkCqShmm6r'&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The hostrooster API accepts this request, sends it to the "kitchen" (the system), and returns a response in the form of server information.&lt;br&gt;
&lt;code&gt;&lt;br&gt;
 {&lt;br&gt;
  "servers": [&lt;br&gt;
    {&lt;br&gt;
      "id":  "l1s2400",&lt;br&gt;
      "location_id": "am2" ,&lt;br&gt;
     "cpu": 1 ,&lt;br&gt;
      "ram_mb": 1024 ,&lt;br&gt;
      "volumes": [&lt;br&gt;
        {&lt;br&gt;
          "id": 2977 ,&lt;br&gt;
          "name": "boot",&lt;br&gt;
          "size_mb": 25600,&lt;br&gt;
          "created": "2020-11-12T09:09:30.46252"&lt;br&gt;
        },&lt;br&gt;
        {&lt;br&gt;
          "id": 2978,&lt;br&gt;
          "name": "additional",&lt;br&gt;
          "size_mb": 30720,&lt;br&gt;
          "created": "2020-11-12T09:36:34.376165"&lt;br&gt;
        }&lt;br&gt;
      ],&lt;br&gt;
      "nics": [&lt;br&gt;
        {&lt;br&gt;
          "id": 3024,&lt;br&gt;
          "network_id": "l1n1",&lt;br&gt;
          "mac": "ca:05:27:ff:56:89",&lt;br&gt;
          "ip_address": "45.14.48.218",&lt;br&gt;
          "mask": 28,&lt;br&gt;
          "bandwidth_mbps": 50&lt;br&gt;
        },&lt;br&gt;
        {&lt;br&gt;
          "id": 3025,&lt;br&gt;
          "network_id": "l1n368",&lt;br&gt;
          "mac": "ca:05:1a:50:f6:07",&lt;br&gt;
          "ip_address": "10.0.0.1",&lt;br&gt;
          "mask": 24,&lt;br&gt;
          "bandwidth_mbps": 1024&lt;br&gt;
        }&lt;br&gt;
      ],&lt;br&gt;
      "image_id": "CentOS-7.7-X64",&lt;br&gt;
      "is_power_on": true,&lt;br&gt;
      "name": "public-api",&lt;br&gt;
      "login": "root",&lt;br&gt;
      "password": "EuvzlqK6pv",&lt;br&gt;
      "ssh_key_ids": [&lt;br&gt;
        223,&lt;br&gt;
        224&lt;br&gt;
      ],&lt;br&gt;
      "state":"Active",&lt;br&gt;
      "created": "2020-11-12T09:09:54.6478655Z",&lt;br&gt;
      "tags": [&lt;br&gt;
        "production",&lt;br&gt;
        "elastic"&lt;br&gt;
      ]&lt;br&gt;
    },&lt;br&gt;
    {&lt;br&gt;
      "id": "l1s2401",&lt;br&gt;
      "location_id": "am2",&lt;br&gt;
      "cpu": 2,&lt;br&gt;
      "ram_mb": 3072,&lt;br&gt;
      "volumes": [&lt;br&gt;
        {&lt;br&gt;
          "id": 2979,&lt;br&gt;
          "name": "boot",&lt;br&gt;
          "size_mb": 25600,&lt;br&gt;
          "created": "2020-11-12T09:43:43.257493"&lt;br&gt;
        }&lt;br&gt;
      ],&lt;br&gt;
      "nics": [&lt;br&gt;
        {&lt;br&gt;
          "id": 3026,&lt;br&gt;
          "network_id": "l1n1",&lt;br&gt;
          "mac": "ca:05:5e:6e:4d:36",&lt;br&gt;
          "ip_address": "45.14.48.219",&lt;br&gt;
          "mask": 28,&lt;br&gt;
          "bandwidth_mbps": 100&lt;br&gt;
        }&lt;br&gt;
      ],&lt;br&gt;
      "image_id": "CentOS-7.7-X64",&lt;br&gt;
      "is_power_on": false,&lt;br&gt;
      "name": "example",&lt;br&gt;
      "login": "root",&lt;br&gt;
      "password": "TzJYPpAV9P9",&lt;br&gt;
      "ssh_key_ids": [],&lt;br&gt;
      "state": "Active",&lt;br&gt;
      "created": "2020-11-12T09:44:05.0545552Z",&lt;br&gt;
      "tags": [&lt;br&gt;
        "production",&lt;br&gt;
        "gitlab"&lt;br&gt;
      ],&lt;br&gt;
      "application_ids": [&lt;br&gt;
        "nginx",&lt;br&gt;
        "gitlab",&lt;br&gt;
        "wordpress"&lt;br&gt;
      ]&lt;br&gt;
    }&lt;br&gt;
  ]&lt;br&gt;
}&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
As a result, the task ID is returned, allowing you to track the process of changing the VPS settings as well as its ID.&lt;/p&gt;

&lt;p&gt;You can automate application interaction by using the APIs of various services, sending requests and parsing responses. The use of APIs can be automated to make software development processes more flexible, allowing programmers to concentrate on more important tasks.&lt;/p&gt;

&lt;p&gt;Today, mosts applications makes use of the API. Web applications use APIs to connect user-facing front ends with all-important back end functionality and data. Streaming services like Spotify and Netflix use APIs to distribute content. Automotive companies like Tesla send software updates via APIs. Others use APIs to unlock car data for third-parties. An interesting fact is that if all APIs in the world were to be removed one day, almost all services and most applications would cease to function!&lt;/p&gt;

&lt;p&gt;Both tools (CLI and API) enable you to automate the process of working with hostrooster virtual machines and receive quick responses to requests without having to navigate to the control panel. What you can do with these tools is as follows and more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;control virtual machines&lt;/li&gt;
&lt;li&gt;scale virtual machine configuration&lt;/li&gt;
&lt;li&gt;domain name creation and deletion&lt;/li&gt;
&lt;li&gt;connect networks&lt;/li&gt;
&lt;li&gt;configure NAT and Firewall rules, and create and delete border gateways&lt;/li&gt;
&lt;li&gt;view project details in the control panel&lt;/li&gt;
&lt;li&gt;view server information and control server power&lt;/li&gt;
&lt;li&gt;manage SSH keys&lt;/li&gt;
&lt;li&gt;control snapshots&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>cloud</category>
      <category>programming</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
