<?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: Victor Okafor</title>
    <description>The latest articles on DEV Community by Victor Okafor (@victorok).</description>
    <link>https://dev.to/victorok</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%2F686937%2F89b4221e-dbeb-40dd-bbcd-c911caf7b9a0.png</url>
      <title>DEV Community: Victor Okafor</title>
      <link>https://dev.to/victorok</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/victorok"/>
    <language>en</language>
    <item>
      <title>My HNG 12 Debut: Re(learning) Nginx Through a Custom HTML Challenge</title>
      <dc:creator>Victor Okafor</dc:creator>
      <pubDate>Thu, 30 Jan 2025 13:24:29 +0000</pubDate>
      <link>https://dev.to/victorok/my-hng-12-debut-relearning-nginx-through-a-custom-html-challenge-38bn</link>
      <guid>https://dev.to/victorok/my-hng-12-debut-relearning-nginx-through-a-custom-html-challenge-38bn</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;HNG 12's DevOps track is officially ON! Stage 0 kicked off with a seemingly simple task: configuring Nginx to serve a custom HTML page. But don't let its simplicity fool you—this challenge solidified my understanding of web server configurations, particularly Nginx.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Setting up the web server:
My site needed a public face, so I spun up an Ubuntu server in Azure – my cloud of choice. Armed with the Azure CLI, I quickly provisioned the virtual machine.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;az vm create --name nginx-serve --resource-group nginx-resource_group --size Standard_B1ls --image Ubuntu22.04 --nsg-rule SSH --admin-username &amp;lt;your_username&amp;gt; --admin-password &amp;lt;your_password&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can now connect securely to your provisioned resource.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Nginx:
Update package manager and install Nginx:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install -y nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Confirm that Nginx is running:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl status nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Alter Firewall:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw allow 'Nginx Full'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Configure custom HTML page:
I navigated to the default web directory and edited the default webpage file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; cd /var/www/html/*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Restart Nginx service:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl restart nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As for challenges, I faced no challenges as I went through the task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection:
&lt;/h2&gt;

&lt;p&gt;This task wasn't just about Nginx; it was a deep dive into web server mastery. I leveled up my configuration skills, troubleshooting prowess, and problem-solving mindset.&lt;br&gt;&lt;br&gt;
This HNG 12 experience is fueling my DevOps ambitions, solidifying my foundation in server administration and automation.&lt;br&gt;&lt;br&gt;
Ready to hire top-tier DevOps talent? Look no further than HNG alumni – we thrive under pressure, deliver quality, and bring practical skills to the table. Explore the elite HNG talent pool here: &lt;br&gt;
&lt;a href="https://hng.tech/hire/devops-engineers" rel="noopener noreferrer"&gt;DevOps Engineers&lt;/a&gt;&lt;br&gt;
&lt;a href="https://hng.tech/hire/cloud-engineers" rel="noopener noreferrer"&gt;Cloud Engineers&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>First Postmortem at ALX Software Engineering Program</title>
      <dc:creator>Victor Okafor</dc:creator>
      <pubDate>Sun, 14 Apr 2024 20:45:49 +0000</pubDate>
      <link>https://dev.to/victorok/first-postmortem-at-alx-software-engineering-program-2loh</link>
      <guid>https://dev.to/victorok/first-postmortem-at-alx-software-engineering-program-2loh</guid>
      <description>&lt;p&gt;What is Postmortem you ask?&lt;/p&gt;

&lt;p&gt;In software engineering, a postmortem, also known as a post-incident review or retrospective, is a structured process conducted after an incident or outage to analyze what happened, why it happened, and how to prevent similar incidents in the future. It involves gathering key stakeholders, including engineers, developers, and other relevant parties, to review the incident in detail, identify root causes, and determine corrective actions.&lt;/p&gt;

&lt;p&gt;Here is my Postmortem report:&lt;/p&gt;

&lt;p&gt;Issue Summary:&lt;/p&gt;

&lt;p&gt;Duration: The outage spanned from April 15, 2024, starting at 3:45 PM UTC and lasting for about 2 hours until 5:45 PM UTC.&lt;/p&gt;

&lt;p&gt;Impact: The web application's login and authentication service were impacted, causing users to face intermittent login failures and slow response times. Roughly 30% of users encountered difficulties accessing the platform during this period, resulting in a significant disruption.&lt;/p&gt;

&lt;p&gt;Root Cause: A misconfiguration in the database connection pool settings caused a database connection issue, leading to the outage.&lt;/p&gt;

&lt;p&gt;Timeline:&lt;/p&gt;

&lt;p&gt;3:45 PM UTC: The issue was flagged by monitoring alerts, indicating a sudden surge in login failures and database connection errors.&lt;/p&gt;

&lt;p&gt;3:50 PM UTC: Engineers initiated an investigation, initially suspecting a possible database server malfunction due to the increased errors.&lt;/p&gt;

&lt;p&gt;4:15 PM UTC: Attention shifted towards scrutinizing the application server configurations, particularly focusing on the database connection pool settings.&lt;/p&gt;

&lt;p&gt;4:45 PM UTC: The root cause was identified as misconfigured database connection pool settings, resulting in excessive open connections and connection timeouts.&lt;/p&gt;

&lt;p&gt;5:00 PM UTC: The incident was escalated to the DevOps team to assist in resolving the misconfiguration.&lt;/p&gt;

&lt;p&gt;5:30 PM UTC: Corrective measures were applied to adjust the database connection pool settings, optimizing pool size and timeout parameters.&lt;/p&gt;

&lt;p&gt;5:45 PM UTC: With the adjustments made, normal service resumed, and the issue was resolved.&lt;/p&gt;

&lt;p&gt;Root Cause and Resolution:&lt;/p&gt;

&lt;p&gt;Root Cause Explanation: The misconfiguration of database connection pool settings caused an overflow of open connections, leading to connection timeouts and service disruptions.&lt;/p&gt;

&lt;p&gt;Resolution: The issue was rectified by fine-tuning the database connection pool settings to optimize connection pool size and timeout parameters, ensuring efficient management of database connections.&lt;/p&gt;

&lt;p&gt;Corrective and Preventative Measures:&lt;/p&gt;

&lt;p&gt;Improvements/Fixes:&lt;/p&gt;

&lt;p&gt;Deploy automated monitoring for database connection pool health and performance metrics.&lt;br&gt;
Conduct routine reviews of database connection pool configurations to maintain optimal settings.&lt;br&gt;
Establish a process for testing and validating changes to database connection pool settings before deployment.&lt;br&gt;
Tasks to Address the Issue:&lt;/p&gt;

&lt;p&gt;Adjust database connection pool settings to optimize pool size and timeout parameters.&lt;br&gt;
Implement automated monitoring for database connection pool health and performance.&lt;br&gt;
Perform a comprehensive review of application server configurations to identify and rectify any misconfigurations.&lt;br&gt;
Enhance incident response protocols to include specific steps for troubleshooting database connection issues.&lt;br&gt;
By implementing these corrective and preventative measures, our aim is to minimize the occurrence of similar outages in the future, ensuring improved stability and reliability of our web application services.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Solving The Web Infrastructure Question: What Happens When You Type [www.google.com] Into a Browser and Hit Enter?</title>
      <dc:creator>Victor Okafor</dc:creator>
      <pubDate>Sun, 17 Mar 2024 18:14:34 +0000</pubDate>
      <link>https://dev.to/victorok/solving-the-web-infrastructure-question-what-happens-when-you-type-wwwgooglecom-into-a-browser-and-hit-enter-46ll</link>
      <guid>https://dev.to/victorok/solving-the-web-infrastructure-question-what-happens-when-you-type-wwwgooglecom-into-a-browser-and-hit-enter-46ll</guid>
      <description>&lt;p&gt;You have probably been typing a web address e.g. ‘www.google.com’ in a web browser before now and just waited for the page to load its contents before you begin to use the website. I would like to give you a high-level breakdown of what happens when you type in a web address and hit enter on your computer. We would walk through the various points of action needed to pass through to render the page result of the web address you entered.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 0 - URL PARSING:
&lt;/h2&gt;

&lt;p&gt;This is the first call to action and it is straightforward as you only need to input a string content(web address) and wait till the browser returns the page that matches the web address entered. Web browsers work on Internet Protocol (IP) addresses. It is possible to pass the IP address of a website and get the same results as when you parse the full string address but remembering ‘www.facebook.com’ is much easier than remembering ‘157.240.192.0/24’ and this is just one of the many websites we frequent every day. Thus, we map IP addresses with names called Domain Name which makes web browsing very convenient.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 1 - DNS LOOKUP:
&lt;/h2&gt;

&lt;p&gt;At this point, we assume that our web browser has failed to match the given web address(URL) from action 0 in either its own or the operating system’s cache,  our web browser sends this request off to the closet resolver server which is usually your ISP(Internet Service Provider) to be resolved into its IP through the Doman Name System.&lt;/p&gt;

&lt;p&gt;The resolver contacts both the top-level domain server(.com) and domain registrar before effectively resolver the hostname into its corresponding IP address. When this is all said and done, our web browser now knows that the IP address corresponding to ‘www.goggle.com’ is ‘8.8.8.8’. Now our web browser is prepared to take the next action.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 2 - TCP/IP:
&lt;/h2&gt;

&lt;p&gt;Having settled the IP address with the corresponding hostname, our web browser establishes a connection with the host server of the IP address entered. This communication between the browser and server happens over what is referred to as Transmission Control Protocol/Internet Protocol (TCP/IP). This particular communication protocol is not mandatory, any working protocol goes but this is a standard when it comes to web infrastructure and the OSI model.&lt;/p&gt;

&lt;p&gt;TCP, the transport-layer protocol, is responsible for establishing the connection between the client which in this case is our web browser and server. TCP is defined by its reliability and packet (ie. request/response data) delivery in TCP is guaranteed, even if it takes more time. An alternative transport-layer protocol which is the User Datagram Package (UDP) is faster, but less reliable as packet delivery is not double-checked. UDP is typical of streaming services where instant content takes priority; TCP is used almost everywhere else.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 3 — SSL
&lt;/h2&gt;

&lt;p&gt;Our browser now knows the IP address of the server it needs to communicate with and the protocol to follow while communication is ongoing, but first it undergoes a security check. The first thing the web browser sends to the resolved IP address of is a message containing its Transport Layer Security (TLS) version along with a list of supported cipher algorithms and compression methods. TLS is a symmetric cryptography encryption method used to keep communicated data private, authenticated, and reliable. The method is an improved version of what was originally the Secure Sockets Layer (SSL). While TLS is the standard web cryptography protocol today, SSL remains the representative of the “S” in HTTPS, despite its deprecation in 2015.&lt;/p&gt;

&lt;p&gt;Upon receiving this initial communication, the server chooses its preferred TLS algorithm and method and responds with a certificate and a security approval including the server’s TLS public key. Back at the client side which is the browser it uses this public key to encrypt a pre-master key that is sent back to the server.&lt;/p&gt;

&lt;p&gt;If the public key sent to our browser is authentic, then the server can decrypt the pre-master key with its TLS private key. Upon proof of successful decryption, the browser and server have effectively established a trusted connection and symmetric method of sending messages back and forth.&lt;/p&gt;

&lt;p&gt;This entire security process is referred to as the TLS handshake and is responsible for that cool green lock displayed in your browser whenever you connect to a website through HTTPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 4 — HTTPS
&lt;/h2&gt;

&lt;p&gt;HTTP stands for HyperText Transfer Protocol, a stateless, asymmetric request-response client-server protocol that overarches TCP/IP. Where TCP/IP defines the method of communication, HTTP defines how computers interact with each other. For instance, after completing the TLS handshake, our web browser sends an HTTP request message to the server. There are many types of request methods which are POST, GET, PUT, PATCH, and DELETE and these methods correspond to create, read, update, and delete (or CRUD) operations, respectively. &lt;/p&gt;

&lt;p&gt;For our entry of ‘&lt;a href="https://www.google.com%E2%80%99"&gt;https://www.google.com’&lt;/a&gt; qualifies as a GET request method which renders a web page for a web client from a server so our web browser has sent a TLS-encrypted HTTP GET requested to the resolved IP address of the URL to receive the corresponding web page as a result.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 5 - LOAD BALANCER:
&lt;/h2&gt;

&lt;p&gt;A load balancer is an intermediary server responsible for handling this traffic-splitting work. A load balancer is software that can be configured either on the same server as that hosting web content or on a server all its own. One such common and free load balancer software is HAProxy.&lt;/p&gt;

&lt;p&gt;HTTP request traffic is split up by a program such as HAProxy according to a load-balancing algorithm put in place. There are various types of load-balancing algorithms, each with its own advantages and disadvantages. &lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 6 - FIREWALL:
&lt;/h2&gt;

&lt;p&gt;Firewalls are hardware, software, or a combination of both that filter all traffic coming in and out of a server. TLS is effective for preventing data from being intercepted mid-transmission. Yet, it assumes that the received data is coming from a trusted source. Firewalls are put in place to make no such assumptions and utilize a combination of packet filters, application gateways, circuit-level gateways, and proxy servers to make certain that a packet does not contain viruses or malicious hardware.&lt;br&gt;
After the successful TLS handshake, our browser came to an agreement with the load balancer server as to how to encrypt messages as they are passed back and forth. TLS achieves three crucial security purposes which are privacy, integrity, and identification but yet it fails to account for a fourth purpose which is honesty and this is where the firewall service comes into play.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 7 - HOST SERVER:
&lt;/h2&gt;

&lt;p&gt;Alas, our web browser has passed through the various steps above and has hit the web server hosting the desired web URL we plan to visit and the delivery of the web contents are as follow:&lt;br&gt;
A GET request is received by the web server and the server pulls up the file configured at the given location (in our example, the HTML file configured at the root (/) of the machine).&lt;br&gt;
If the file to be rendered contains dynamic content, the application server is run. The result of these scripts is inserted into the web page.&lt;br&gt;
If the dynamic content involves stored data, the application server queries from the database server.&lt;br&gt;
The web server delivers the web page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xer8yct6i24diu7n2vh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xer8yct6i24diu7n2vh.png" alt="Image description" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Solving The Web Infrastructure Question: What Happens When You Type [www.google.com] Into a Browser and Hit Enter?</title>
      <dc:creator>Victor Okafor</dc:creator>
      <pubDate>Sun, 17 Mar 2024 18:14:34 +0000</pubDate>
      <link>https://dev.to/victorok/solving-the-web-infrastructure-question-what-happens-when-you-type-wwwgooglecom-into-a-browser-and-hit-enter-3df6</link>
      <guid>https://dev.to/victorok/solving-the-web-infrastructure-question-what-happens-when-you-type-wwwgooglecom-into-a-browser-and-hit-enter-3df6</guid>
      <description>&lt;p&gt;You have probably been typing a web address e.g. ‘www.google.com’ in a web browser before now and just waited for the page to load its contents before you begin to use the website. I would like to give you a high-level breakdown of what happens when you type in a web address and hit enter on your computer. We would walk through the various points of action needed to pass through to render the page result of the web address you entered.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 0 - URL PARSING:
&lt;/h2&gt;

&lt;p&gt;This is the first call to action and it is straightforward as you only need to input a string content(web address) and wait till the browser returns the page that matches the web address entered. Web browsers work on Internet Protocol (IP) addresses. It is possible to pass the IP address of a website and get the same results as when you parse the full string address but remembering ‘www.facebook.com’ is much easier than remembering ‘157.240.192.0/24’ and this is just one of the many websites we frequent every day. Thus, we map IP addresses with names called Domain Name which makes web browsing very convenient.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 1 - DNS LOOKUP:
&lt;/h2&gt;

&lt;p&gt;At this point, we assume that our web browser has failed to match the given web address(URL) from action 0 in either its own or the operating system’s cache,  our web browser sends this request off to the closet resolver server which is usually your ISP(Internet Service Provider) to be resolved into its IP through the Doman Name System.&lt;/p&gt;

&lt;p&gt;The resolver contacts both the top-level domain server(.com) and domain registrar before effectively resolver the hostname into its corresponding IP address. When this is all said and done, our web browser now knows that the IP address corresponding to ‘www.goggle.com’ is ‘8.8.8.8’. Now our web browser is prepared to take the next action.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 2 - TCP/IP:
&lt;/h2&gt;

&lt;p&gt;Having settled the IP address with the corresponding hostname, our web browser establishes a connection with the host server of the IP address entered. This communication between the browser and server happens over what is referred to as Transmission Control Protocol/Internet Protocol (TCP/IP). This particular communication protocol is not mandatory, any working protocol goes but this is a standard when it comes to web infrastructure and the OSI model.&lt;/p&gt;

&lt;p&gt;TCP, the transport-layer protocol, is responsible for establishing the connection between the client which in this case is our web browser and server. TCP is defined by its reliability and packet (ie. request/response data) delivery in TCP is guaranteed, even if it takes more time. An alternative transport-layer protocol which is the User Datagram Package (UDP) is faster, but less reliable as packet delivery is not double-checked. UDP is typical of streaming services where instant content takes priority; TCP is used almost everywhere else.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 3 — SSL
&lt;/h2&gt;

&lt;p&gt;Our browser now knows the IP address of the server it needs to communicate with and the protocol to follow while communication is ongoing, but first it undergoes a security check. The first thing the web browser sends to the resolved IP address of is a message containing its Transport Layer Security (TLS) version along with a list of supported cipher algorithms and compression methods. TLS is a symmetric cryptography encryption method used to keep communicated data private, authenticated, and reliable. The method is an improved version of what was originally the Secure Sockets Layer (SSL). While TLS is the standard web cryptography protocol today, SSL remains the representative of the “S” in HTTPS, despite its deprecation in 2015.&lt;/p&gt;

&lt;p&gt;Upon receiving this initial communication, the server chooses its preferred TLS algorithm and method and responds with a certificate and a security approval including the server’s TLS public key. Back at the client side which is the browser it uses this public key to encrypt a pre-master key that is sent back to the server.&lt;/p&gt;

&lt;p&gt;If the public key sent to our browser is authentic, then the server can decrypt the pre-master key with its TLS private key. Upon proof of successful decryption, the browser and server have effectively established a trusted connection and symmetric method of sending messages back and forth.&lt;/p&gt;

&lt;p&gt;This entire security process is referred to as the TLS handshake and is responsible for that cool green lock displayed in your browser whenever you connect to a website through HTTPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 4 — HTTPS
&lt;/h2&gt;

&lt;p&gt;HTTP stands for HyperText Transfer Protocol, a stateless, asymmetric request-response client-server protocol that overarches TCP/IP. Where TCP/IP defines the method of communication, HTTP defines how computers interact with each other. For instance, after completing the TLS handshake, our web browser sends an HTTP request message to the server. There are many types of request methods which are POST, GET, PUT, PATCH, and DELETE and these methods correspond to create, read, update, and delete (or CRUD) operations, respectively. &lt;/p&gt;

&lt;p&gt;For our entry of ‘&lt;a href="https://www.google.com%E2%80%99"&gt;https://www.google.com’&lt;/a&gt; qualifies as a GET request method which renders a web page for a web client from a server so our web browser has sent a TLS-encrypted HTTP GET requested to the resolved IP address of the URL to receive the corresponding web page as a result.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 5 - LOAD BALANCER:
&lt;/h2&gt;

&lt;p&gt;A load balancer is an intermediary server responsible for handling this traffic-splitting work. A load balancer is software that can be configured either on the same server as that hosting web content or on a server all its own. One such common and free load balancer software is HAProxy.&lt;/p&gt;

&lt;p&gt;HTTP request traffic is split up by a program such as HAProxy according to a load-balancing algorithm put in place. There are various types of load-balancing algorithms, each with its own advantages and disadvantages. &lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 6 - FIREWALL:
&lt;/h2&gt;

&lt;p&gt;Firewalls are hardware, software, or a combination of both that filter all traffic coming in and out of a server. TLS is effective for preventing data from being intercepted mid-transmission. Yet, it assumes that the received data is coming from a trusted source. Firewalls are put in place to make no such assumptions and utilize a combination of packet filters, application gateways, circuit-level gateways, and proxy servers to make certain that a packet does not contain viruses or malicious hardware.&lt;br&gt;
After the successful TLS handshake, our browser came to an agreement with the load balancer server as to how to encrypt messages as they are passed back and forth. TLS achieves three crucial security purposes which are privacy, integrity, and identification but yet it fails to account for a fourth purpose which is honesty and this is where the firewall service comes into play.&lt;/p&gt;

&lt;h2&gt;
  
  
  STEP 7 - HOST SERVER:
&lt;/h2&gt;

&lt;p&gt;Alas, our web browser has passed through the various steps above and has hit the web server hosting the desired web URL we plan to visit and the delivery of the web contents are as follow:&lt;br&gt;
A GET request is received by the web server and the server pulls up the file configured at the given location (in our example, the HTML file configured at the root (/) of the machine).&lt;br&gt;
If the file to be rendered contains dynamic content, the application server is run. The result of these scripts is inserted into the web page.&lt;br&gt;
If the dynamic content involves stored data, the application server queries from the database server.&lt;br&gt;
The web server delivers the web page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xer8yct6i24diu7n2vh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xer8yct6i24diu7n2vh.png" alt="Image description" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Git Untouched</title>
      <dc:creator>Victor Okafor</dc:creator>
      <pubDate>Sat, 04 Feb 2023 09:19:14 +0000</pubDate>
      <link>https://dev.to/victorok/git-untouched-12n8</link>
      <guid>https://dev.to/victorok/git-untouched-12n8</guid>
      <description>&lt;p&gt;As writing tradition entails, I have to Introduce Git and explain what it generally means but this is beyond just git, this article is more about git, as I believe you already have ground knowledge about git and you are looking to get in-depths this article is centered around "Git Revert", "Git Rebase" and "Git cherry-pick".&lt;/p&gt;

&lt;h2&gt;
  
  
  We start off with the git revert:
&lt;/h2&gt;

&lt;p&gt;The two commands needed to perform a revert are the git log/git reflog and git revert&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git reflog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The git reflog command is used to record updates made to the tip of branches. It allows to return to commits even to the ones that are not referenced by any branch or any tag also the git log while  git log  shows commits in descending order based on commit datetime.&lt;/p&gt;

&lt;p&gt;This two commands were mentioned first because it is needed to perform a git revert command. The git revert would most likely be used when you realize that there was a bug in your last commit and you need to rectify to continue working on new tasks. &lt;/p&gt;

&lt;p&gt;The git revert command will undo changes in a project commit history without tampering with it. This is why you have to run the &lt;code&gt;git log&lt;/code&gt; or &lt;code&gt;git reflog&lt;/code&gt; command to target the specific commit you might want to revert to.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git revert &amp;lt;commit hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Git Rebase
&lt;/h2&gt;

&lt;p&gt;The Git rebase command literally combines two source code branches into one. This command takes all of the commits from the branch you’re going to rebase(eg dev-branch) and replays them onto the end of the branch you’re rebasing(eg main branch) to and after it is successful, the dev-branch will be removed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps to take while you want to Git Rebase&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;First, confirm that the head branch has no outstanding changes.&lt;br&gt;
&lt;code&gt;git status&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You checkout the new-feature branch.&lt;br&gt;
&lt;code&gt;git checkout new-feature&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We tell Git to rebase the current branch onto the main branch.&lt;br&gt;
&lt;code&gt;git rebase main&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We swap back to the main branch&lt;br&gt;
&lt;code&gt;git checkout main&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We merge the new-feature branch into the current branch, which in our case is the main branch.&lt;br&gt;
&lt;code&gt;git merge new-feature&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Git Cherry-pick
&lt;/h2&gt;

&lt;p&gt;Generally, the git cherry-pick command enables you to copy a commit from anywhere in your repository and append it to the HEAD of the current branch. &lt;/p&gt;

&lt;p&gt;One downside to using this command is that it creates duplicate commits which creates a foggy git history. To use git cherry-pick you need to find the commit reference you are interested in and the use &lt;code&gt;git cherry-pick &amp;lt;commit_reference&amp;gt;&lt;/code&gt; after you have checked out the branch you want to bring in the particular functionality referenced in the 'commit_reference' into.&lt;/p&gt;

</description>
      <category>devto</category>
      <category>announcement</category>
      <category>community</category>
      <category>devrel</category>
    </item>
    <item>
      <title>HNGi8 Is Finally Here</title>
      <dc:creator>Victor Okafor</dc:creator>
      <pubDate>Sun, 15 Aug 2021 21:22:31 +0000</pubDate>
      <link>https://dev.to/victorok/hngi8-is-finally-here-p19</link>
      <guid>https://dev.to/victorok/hngi8-is-finally-here-p19</guid>
      <description>&lt;p&gt;It has been a long time coming and I am glad I am enrolled for the 8th edition of this internship after over 2 years of self learning Backend Software Development(laravel, Node).&lt;/p&gt;

&lt;p&gt;The initiative behind the internship is the best there might ever be for junior/newbie engineers looking to break the tutorial loop and finally develop live projects and to also secure a position in tech. &lt;/p&gt;

&lt;p&gt;I want to believe that during the course of 8weeks, HNG is going to mould it's interns to be job worthy and after completion, make them market fit for the tech world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://internship.zuri.team"&gt;HNG internship in details&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I suggest you try out your hands on resources and get yourself familiar with web development before applying for any &lt;a href="https://training.zuri.team"&gt;internship&lt;/a&gt; at all.&lt;/p&gt;

&lt;p&gt;I suggest you try these out but feel free to surf the web for more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Gu1so3pz4bA"&gt;Figma&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=RGOj5yH7evk"&gt;Git&amp;amp; Github&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=2eebptXfEvw"&gt;PHP&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
