Tech Junkie Blog - Real World Tutorials, Happy Coding!: 2021

Thursday, October 28, 2021

In JavaScript there are two ways to access an object, first by dot notation like this

product.name

or with array notation

product["name"]

They both get the job done.   However with the array syntax [""] you access the object as if it's an array but instead of accessing it by numbers or index you access it by the property names.  That's because JavaScript objects are associative arrays.  They look like other objects in other languages such as C, C++, and Java.  However they behave very differently.

In other languages objects are defined in advance, their properties are methods are fixed.  To add a property or method to the object you have to change the class the object instance is created from.

Wednesday, October 27, 2021

 In this post we are going to set up our website to serve up https traffic so that our traffic can be encrypted.  In this post the first part of the series we are going to request a certificate from the Certificate Manager in AWS.

1. The first thing we need to do is create a certificate, In the AWS search field search for Certificate Manager then click on the drop down auto complete choice.



2. Click on "Get started" under "Provision certificates"

Tuesday, October 26, 2021

In a typical git scenario you would have a new branch for developers to work on, the when he or she is done. You do your code reviews and what not.  After you are satisfied with the results you would want to merge the new branch into the master branch.

In this post I am going to show you how to merge an existing branch into a master branch

Here are the steps:

1. First you want to checkout the master branch to work on it with the command git checkout master












Monday, October 25, 2021

Now that we've learned to create objects in all sorts of ways it's time to set and get the object properties that we've created.  In this blog we will go over how to access the object properties either to set them or get them.

First let's create an object that we can work with:

Type in the following code in the between the <script type="text/javascript"></script> tag in an html page.


        var product = new Object();

        product.name = "Chai";
        product.category = "Tea";
        product.country = "India";
        product.supplier = {
            name: "ACME Tea Of India",
            location: "New Delhi"
        };

        console.log(product);
If you run the page with the code above you will see the following in the browser console:

Friday, October 22, 2021

When the browser window opens and navigates to a webpage with your JavaScript code. A global object is created for your JavaScript program.

If you type the following line as the first line of code in your JavaScript file

var globalObj = this;

What do you think will get?  In this case you are referencing the Window object, which is JavaScript's object for the browser window.  As you can see there's a whole bunch of global properties and methods already defined at the global level.

Thursday, October 21, 2021

There are times when you will get an error when you tried to access a property in an object, sometimes you think a property exists in the object but it does not.  Let's use the product object from the previous blog post as an example.


        var product = new Object();

        product.name = "Chai";
        product.category = "Tea";
        product.country = "India";
        product.supplier = {
            name: "ACME Tea Of India",
            location: "New Delhi"
        };

Let's say another developer works on the project and he assumes that since there's a "country" property that there should be a "city" property.  If he tries to access the access the "city" property in the product object he will get an undefined, because the property does not exist.   If he types the following he will get the undefined message.

Wednesday, October 20, 2021

 In this pose we are going to implement auto scaling on our instances.  Auto scaling is a feature on AWS that automatically scaled horizontally either based on metrics or the health of an instance. In this post we are going to setup auto scaling on an Application Load Balancer.  

1. The first thing we have to do is setup an Auto Scaling Group under "Auto Scaling" click on "Auto Scaling Groups"

2. Click on the "Create Auto Scaling group" button

3. Give your auto scaling group a name, then click on the "Create a launch template"


Tuesday, October 19, 2021

In previous posts we created a new git repository locally and on github and then sync them up.  In this post we are going to create a new branch in the local git repository and push it to the remote repository.


First let's create a new branch with the following command in the local git repository

git checkout -b "Hour2"








Now following the tutorials in this post Hour 2: Enable ASP.NET Core to Serve Static Files

After you are done open the command line in the folder and type git add .

Monday, October 18, 2021

In JavaScript you can delete an object's property with the delete operator.  Let's use the product object again as an example.

Let say you have the following JavaScript code to create a product object.


        var product = new Object();

        product.name = "Chai";
        product.category = "Tea";
        product.country = "India";
        product.badProperty = "Bad Property";
        product.badProperty2 = "Bad Property 2";
        product.supplier = {
            name: "ACME Tea Of India",
            location: "New Delhi"
        };

console.log(product);

Friday, October 15, 2021

One of the most common task you have to do as a Linux administrator is to add a new user.  Especially developers who always wants root access. Docker needs root access, however the person who is administering Docker is probably not the system administrator.  Most likely it will be the application developer. To accomplish this task you can use the useradd command in the Terminal session then add the new user to the Docker group.  Follow the steps below to add a new user to CentOS.

Thursday, October 14, 2021

Most people don't realize JavaScript has object property setters and getters or accessor methods.  When an object has a setter only it is a write only property, when it has a getter only method that it is a read only property.  If a property has both then it is a read/write property.  A perfect example is if you are working with a private property in JavaScript which has the $ prefix in front of it.

Let's say you have an object with a private property $n like the example below:


        var game = {

            $n: "Awesome Game!",

            get name() { return this.$n}
        };

The code above only has a getter name that exposes the private property $n when you console.log you should get value of the $n like the code snippet below

Wednesday, October 13, 2021

 In the previous post we went over how to create a Application Load Balancer, based on routes in the URL.  In this post we are going to change the rules so that it directs traffic based on host names.  For example we could have acmebanking.com route to target group 1 and accounts.acmebanking.com route to target group 2.  It's the same concept as the previous setup but instead of routes, we are using hostnames instead.

In order to implement this solution we need to setup a record in Route 53, which is AWS domain registration service.  You can follow along with the DNS names, but if you have a hostname registered with AWS that's even better.

1. So the first thing you want to do is go to Route 53 dashboard, go to Hosted Zones

2. Click on the hosted domain


Tuesday, October 12, 2021

In the previous post we created a local git repository, in this post we are going to create a remote repository in github and link it to the local repository that we created.

Here are the steps to create a new repository in github:

1.  Log into your github account and click on the "New" button next to the text "Repositories"










Monday, October 11, 2021

One of the main concept of working with Bootstrap is the Grid system.  It could be intimidating at first to work with the Grid system.  But the system is quite elegant and simple solution.

The most important thing you have to remember about the grid system is that it divides the page into 12 columns, and it is responsive meaning it will adjust to the size of the client's screen.

You can control the size of the column with the .col-sm, .col-md, .col-lg, .col-xl, which translates to small, medium, large, and extra large screens.  In addition to the screen size you can also control the with of the column with the -n at the end of class attribute.  For example if you want a column for a small screen to span three columns it would be .col-sm-3.

Here is the cheat sheet, I am going to use color coding for the different sizes.

Small - Green
Medium - Orange
Large - Red
Extra Large - Blue


Friday, October 8, 2021

In our previous blog posts we ran containers with the Fedora and CentOS images.  In this blog we are going to run a command to see which containers are running in our host system.  To get a list of all the containers running on our host Ubuntu system we type in the command docker ps -a command.

Thursday, October 7, 2021

The while loop statement in JavaScript simply executes a statement block until a condition is not true anymore the syntax for the while loop is as follow

while (expression is true)
{
     execute these statements
}

The while loop is an iterative loop if the condition is true and the statements are executed, it starts at the top of the loop again and executes until the expression is false.  Therefore, there's a potential for an infinite loop.

Wednesday, October 6, 2021

 In the previous post we went over how to create a Network Load Balancer, in this post we are going to create one of types of load balancer AWS offers.  We are going to create a Application Load Balancer, this balancer  is designed to work best with the typical line of business web applications.  It deals mostly with the requests/response scenarios on the web, therefore it supports the HTTP, and HTTPS protocols exclusively.  It can be setup to respond to the routes that configured or the hosts.  It all depends on how your web applications serves the client.  In a way it's the easiest load balancer type to understand because it deals with headers, URLs,  routes,  parameters, query strings and etc.

Before we create the load balancer we need to create more than one instances with a web server because we need to test that the load balancer is able to switch.

1. Create four instances with the user data to create Apache Web Servers with these commands in the User Data for instance, if you need the full instruction on how to create instances with User Data you can read this post . 

#cloud-boothook
#!/bin/bash
#Use this for your user data (script without newlines)
# install httpd (Linux 2 version)

yum update -y 
yum install -y httpd.x86_64 
systemctl start httpd.service 
systemctl enable httpd.service 
echo "Hello world from $(hostname -f)" > /var/www/html/index.html
cd /var/www/html/
cp index.html contacts.html

We just created an index.html file to write out the hostname for testing later on, we also created a new file called contacts.html so that we can have different routes.

To create more than one instance at a time, type in the number of instances in the "Number of Instances" field.  Select no preferences for the subnets






Tuesday, October 5, 2021

In this blog post we will create a Git & Github repository for the Northwind Cafe application that we've been working on.

First let's create a git local repository

1. Follow the steps on this blog post to create an empty NorthindCafe in git repository using Visual Studio Hour 1: Create ASP.NET Core Project From Scratch




























Monday, October 4, 2021

The do/while loop is similar to the while loop.  The difference is that the first the loop expression is tested after the do statement block is executed at least once.  For example let's use our countdown example again.

If we have the code below the countdown displays the same results as the output.  However, the first iteration is performed without a evaluation of the expression.  It's not until the countdown is 9 that the while part of the loop kicks in.

Friday, October 1, 2021

The beauty of Docker is that you can run a very lightweight image of another Linux distro on your host system.  In this post we will be pulling the latest image of CentOS into our docker container on our Ubuntu server.

Thursday, September 30, 2021

The for/in loop is a for loop that is used to iterate through the variables in an object. It can iterate to through that anything that can evaluated on the left side of the assignment expression call the LValues.  Let's use the for/in loop to iterate through an object "person".

Here we created an object called "person" with three properties we are going to use the for/in loop to display the property names as well as the values of those properties

var person = new Object();

person.name = "Tech Junkie";
person.occupation = "Blogger";
person.location = "Mars";

for(var p in person)
console.log(p + ": " + person[p]);

Wednesday, September 29, 2021

 In the previous post we went over how to create a Classic Load Balancer, in this post we are going to create one of types of load balancer AWS offers.  We are going to create a Network Load Balancer, this balancer  is for websites that require high performance and low latency websites, think of streaming data.  If your website needs real time streaming data, this is probably the load balancer for you. It supports layer 4 protocols such as UDP, TLS and TCP protocols. If you need a static IP or Elastic IP assigned to your load balancer this is your only choice because the other two load balancer does not give you the option to assign Elastic IPs.

Before we create the load balancer we need to create more than one instances with a web server because we need to test that the load balancer is able to switch.

1. Create two instances with the user data to create Apache Web Servers with these commands in the User Data for instance, if you need the full instruction on how to create instances with User Data you can read this post

#cloud-boothook
#!/bin/bash
#Use this for your user data (script without newlines)
# install httpd (Linux 2 version)

yum update -y 
yum install -y httpd.x86_64 
systemctl start httpd.service 
systemctl enable httpd.service 
echo "Hello world from $(hostname -f)" > /var/www/html/index.html

We just created an index.html file to write out the hostname for testing later on


Tuesday, September 28, 2021

In the previous post we installed Git on Windows.  On this post we are going to set up Git with our user name and assign Bracks as our Git editor so that we don't have to edit git through the command line console all the time.

Here are the steps to setup your user name and editor for git:

1. First let's set our user name, with the command git config --global user.name "Your name goes here"









Friday, September 24, 2021

The beauty of Docker is that you can run a very lightweight image of another Linux distro on your host system.  In this post we will be pulling the latest image of Fedora into our docker container on our Ubuntu server.

Thursday, September 23, 2021

Sometimes you don't want to do everything with the root account.  So there are some super users who you trust as administrators.  For those users you want them to be able to run the sudo command.  A sudo command allows a user to run commands with root privileges without logging in as root.
For example something like this sudo yum update unlike the su command which prompts you for the root password.  The sudo command prompts you for the password of the logged in user.

In order for the sudo to work we have to configure the /etc/sudoers file.  There is a special command for editing the sudoers file and it's the visudo command.  This command should be used at all times when editing the sudoers file instead of a text editor.

Wednesday, September 22, 2021

 If your website starts to become popular, especially if it's not static you might noticed that the performance is starting to degrade.  The most logical step is to scale your architecture with a load balancer.  AWS offers three types of load balancers, there are:

  • Application Load Balancer
    • Protocols (HTTP, HTTPS)
    • Specializes in web applications, deals with traffic at the request level (layer 7)
      • Supports query strings, path routing, parameter routing, IP routing
    • Supports IP addresses, Lamda Functions (serverless, microservices), and containers
  • Network Load Balancer
    • Protocols(TCP, TLS, UDP, TCP_UDP) - Layer 4
    • When high performance and low latency is required
    • TLS offloading
    • Elastic IPs can be assigned
  • Classic Load Balancer
    • Protocols (TCP, SSL, HTTP, HTTPS) - Layer 4, 7
      • Old generation, not recommended unless you are running EC2-Classic instance

    In a nutshell a load balancer distributes the client's traffic among the many instances that are available in your architecture to offload the traffic so that more than one instance can share the burden of the traffic.  A health check is setup so that only the health instances can serve up traffic.




    Tuesday, September 21, 2021

    If you are developing Java EE applications, then WildFly is an excellent web application that you can set up easily.  In this post we are going to setup WildFly on a Windows machine.  The instructions should be similar for a Linux machine, it's just that the files ends with the .sh extensions.

    Here are the steps to setup WildFly on your machine:

    1. Go the WildFly website and download the latest version, https://wildfly.org/downloads/


















    Monday, September 20, 2021

     In the last post we created a new partition for a new disk that we've just added, in this post we are going to mount the partition and create a filesystem for the partition so that we can use it.  First lets check to see that we have a new partition by running the fdisk -l command














    As you can see a new partition called /dev/sdb1 has been created with 8 GB of disk space.  Now we all good to go.

    Here are the steps to mount and create a file system in Linux:

    1. First we need to create a filesystem so that the Linux system can read and write to it.  Linux uses the xfs filesystem so that's what we are going to use.  To do that we have to run the mkfs command. To make an xfs filesystem you simply type mkfs.xfs /dev/sdb1







    2. Now that we have a filesystem that Linux could understand, it is time to mount the partition so that we could use in our server.  It's a two step process to accomplish that, first you have to create a directory, type mkdir /data to create /data directory.  Then you are going to mount the partition to that directory with this command mount /dev/sdb1 /data now if you run the command df -h you will see the partition has been mounted to the /data director








    3. We still have one more step before we are finished.  Everything will work like it should, but once you reboot the settings will not persist in it's current state.  To make the settings persist we have to edit the fstab file.  So type the command vi /etc/fstab make sure you have your system backed up and you can revert back because if you messed up you will not be able to log in. When you are in the fstab file type in the following line at the end of the file

    /dev/sdb1               /data                   xfs     defaults        0       0

    The spaces are tabs, the 0s are options for file system checks on boot.  You probably don't want that, so just type 0s to skip it. Press esc and :wq! to write to the file.














    4. Reboot and run the df -h command again and you should see that the changes persist and you can use the new partition


    Friday, September 17, 2021

    One of the most common task you have to do as a Linux administrator is to add a new user.  Especially developers who always wants root access. Docker needs root access, however the person who is administering Docker is probably not the system administrator.  Most likely it will be the application developer. To accomplish this task you can use the useradd command in the Terminal session then add the new user to the Docker group.  Follow the steps below to add a new user to Ubuntu.

    Thursday, September 16, 2021

    In the previous post we created a user called "John Wallace", in this post we are going to add John and Jason into the developers group.  In any system you want to group users into groups so that you can easily assign constraints and privileges to a group of user instead of doing it one at a time.

    Wednesday, September 15, 2021

     In the previous post we went over what a load balancer is, in this post we are going to create one of types of load balancer AWS offers.  We are going to create a Classic Load Balancer, this balancer is not recommended by Amazon, you should only create this if you have to support EC2-Classic instances.

    Before we create the load balancer we need to create more than one instances with a web server because we need to test that the load balancer is able to switch.

    1. Create two instances with the user data to create Apache Web Servers with these commands in the User Data for instance, if you need the full instruction on how to create instances with User Data you can read this post

    #cloud-boothook
    #!/bin/bash
    #Use this for your user data (script without newlines)
    # install httpd (Linux 2 version)

    yum update -y 
    yum install -y httpd.x86_64 
    systemctl start httpd.service 
    systemctl enable httpd.service 
    echo "Hello world from $(hostname -f)" > /var/www/html/index.html

    We just created an index.html file to write out the hostname for testing later on


    Tuesday, September 14, 2021

    In order to host websites in Tomcat we need to create a project to host servlets.  In this post we are going to create Dynamic Web project in Eclipse.

    Here are the steps to create a web project in Eclipse:

    1. Right-click on "Servers" → "New" → "Other"

    2. Expand the "Web" node then select "Dynamic Web Project", then click "Next"→



























    Monday, September 13, 2021

     In the previous post we used the df and fdisk commands to gather storage information about our Linux system.  In this post we are going to add a new disk and partition to our system.  I am using VBox and you can create a new storage by going to settings and adding a new disk, it will be just like adding a real physical disk on a physical machine except it's virtual.  You can go to this post if you want to know how to do it

    Here are the steps to adding a new disk and creating a partition for the disk:

    1. First we want to see what the new disk is identified as in our Linux system, we can do that by typing the command fdisk -l








    As you can see the new disk is identified as /dev/sdb and it has 8 GB which is correct

    2. We want to go into the fdisk utility to work with our new disk, to do that you type fdisk /dev/sdb then press enter





    3. Press m to see all the options that are available





















    From the help menu we know that we have to use the n option to add a new partition

    4. Type n and then press Enter to get into the create partition steps

    5. You will be given a choice of the partition being a primary or extended, since this is a new disk we want to make it a primary partition, so press p and ENTER






    6. For the partition number accept the default 1 by pressing ENTER, once again it's a new disk so it's going to be the first partition on the disk

    7. Accept the default again for the first sector by pressing ENTER





    8. Accept the default again by pressing ENTER, if you want to create more than one partition and not use the entire disk you enter the size so that there's disk space left like this +4G, and it would use only 4 GB for the partition, but since we want to use the entire disk we just going to press ENTER







    A new partition has been created for the new disk.  Or have you? A lot of beginners forget to do the next step and the partition is not created even though they went to through all the steps. The final step to the process is that you have to type w to write your changes else nothing will happen.  It's just a confirmation that fdisk needs, for you to confirm that the changes are correct in the final step.





     In the next post we are going to mount the partition and create a filesystem for the new partition.

    Friday, September 10, 2021

    In the previous post we installed Docker on our Ubuntu server.  Now we are going to add the Docker repository to our local server so that we can get the latest version of Docker.

    Thursday, September 9, 2021

    In our previous post we type in the yum command yum update to update the entire CentOS server.  But the most common operation that you will perform with yum that you will perform is to install, update, and remove an individual package.

    In this post we will install, update and remove the php package.

    Wednesday, September 8, 2021

     In the world of AWS you have to be familiar with the different features and what they are called.  Well two very important building blocks of all the services that AWS offers are the S3 and the IAM Role.  S3 is basically an object storage repository that are called buckets, but it is more than just a storage, you can turn to the storage into a static website. We'll get into that later. It's public facing, so you can access it over the internet. 

    IAM Role is an identity that you can assign policies to and that role assumes the permission.  Therefore only instances with a role that has a policy to access S3 can assume that role and have access to the S3.


    So let's start creating the assets on the diagram above:

    Tuesday, September 7, 2021

    In this post we are going to set Tomcat as a server in Eclipse so that we can interact with Tomcat through Eclipse.

    Here are the steps to configure Tomcat to work with Eclipse:

    You have to download the zip file version of the install to make Tomcat work with the Eclipse.  I had no luck with the Windows Installer

    So go to https://tomcat.apache.org/download-90.cgi

    Then click on the .zip version of the download, and then extract the files into the





















    Now extract the content of the zip file into the folder C:\apache-tomcat-9.0.24

    Monday, September 6, 2021

     To simulate a real world scenario often times you have to add components to your virtualize Linux operating system.  In this post we are going to add a new disk to our virtual machine in Oracle's VirtualBox.  

    Here are the steps to adding a new disk to a VM:

    1.  Right click on your virtual machine and select settings then select "Storage", the power must be off.  Click on the second icon next to the "Controller: SATA" section








    2. On the next dialog click on the "Create" icon









    3. Click "Next"














    4. Click "Next"














    5. Type in a name for the disk and then click "Create"














    6. Select the disk under "Not Attached" and then click on "Choose"














    7. Now your new disk is attached to the Virtual Machine, click "OK"






    Friday, September 3, 2021

    Docker is the hottest infrastructure technology to hit the tech world in a long time.  The appeal of Docker is that it allows the infrastructure team to utilize the capacity of the servers to near full capacity.  Docker is a container.  A container is like a micro virtualization minus the operating system.  It only contains enough infrastructure to host an app, without the fat.  Hence the term container is used to describe it.

    Thursday, September 2, 2021

    The MAX() function gets the highest value in the specified column, and the MIN() function gets the lowest value in the specified column

    SELECT MAX(UnitPrice) AS HighestPrice, MIN(UnitPrice) AS LowestPrice
    FROM Products
    

    The query above gets the highest and lowest prices for the Products table in the Northwind database


     


    Wednesday, September 1, 2021

     In the previous post  we created a public and private subnet in our VPC.  In this post we are going to create a NAT gateway so that our private instances can access the internet.  That's useful when there's a need to update the instance.  For example if we ping google.com right now there will be 100% package lost in our private instance because we cannot get to the internet.  After we attach the instance to the NAT gateway we will be able to ping google.

    It would go on for a while but eventually it would say the package is lost.

    Now let's create our NAT Gateway, it is important that we delete the NAT Gateway if it's not in use because you have to pay for it.

    Tuesday, August 31, 2021

    In this post we are going to install the Eclipse IDE for Java development.

    Here are the steps to install Eclipse:

    1. Go to https://eclipse.org/downloads click on the "Download 64-bit" button


    Monday, August 30, 2021

     As a Linux administrator there will be times when you go in blind and do not know why system you are logging into, one way to CSI your way through the system is with the fd and fdisk command.  Which will tell you who murdered Sideshow Bob.  Not really it will just tell you the systems disk information and the partition it has.  The first command you can run is the df command, if you run it by itself it would look a little cryptic.  So most of the time you will see people run it with the -h option








    The df command which is an abbreviation of the words disk free is a command used to display the amount of available disk space for file systems.  It gives you amount of disk space available for each mount points.

    The next command you can run is the fdisk command, as with df if you just type fdisk by itself, you won't get anything useful.  So you usually see it with the -l option

















    fdisk gives you the disk partition information as you can see we have two partitions and mount points, the first is a boot partition which does not have a lot of space which it does not need a lot of space.  The second partition has the bulk of space and is the system that we as users and administrators interact with.  It also tells you the swap size and mount points.  The home sector is also shown, you will often see the system administrator use this command when the system is running out of space.

    Friday, August 27, 2021


    SELECT UnitPrice, ProductName
    FROM Products
    ORDER BY UnitPrice DESC, ProductName
    


    The query above sorts the results based on the most expensive products, and then the product name. Useful if you want a secondary sort criteria. For example if there are multiple products that are $14.00 then those products will be sorted by their names after the price has been sorted.




    Thursday, August 26, 2021

    The DATEPART function extracts the date part of a date, for example using the 'yyyy' expression allows you to extract the year from a given date. The query below queries all the employees who were hired in the year 1994 in the Northwind Employees table.

    SELECT FirstName + ' ' + LastName  AS Employee, HireDate
    FROM Employees
    WHERE DATEPART(yyyy,HireDate) = 1994
    

    Wednesday, August 25, 2021

     In most scenarios you don't want to expose all of your servers to be public facing.  You probably want to configure your network so that only the server that is hosting your web application is public facing.  What you want to do is put your web application on the public subnet and your backend servers on the private subnet.  This private subnet can access the internet through a NAT gateway for software updates and other functions that require internet access.  However, the outside world cannot establish a connection to servers in the private subnet.  The NAT gateway resides in the public subnet, acting as a bridge between the public subnet and private subnet.


    Tuesday, August 24, 2021

    In this blog post we are going to install the tomcat servlet server on a Windows machine.

    Here are the steps to install tomcat:

    1. Go to the URL https://tomcat.apache.org , then in the download section click on Tomcat 9















    2. Under "Binary Distributions" select the last link




    Search This Blog