Friday, February 22, 2019

Industry Practices and Tools

Version controling system

•Version control software keeps track of every
modification to the source in a special kind of
database.

• If a mistake is made, compare earlier versions of the code to help fix the
mistake

Collaboration

With a VCS, everybody on the team is able to work absolutely
freely - on any file at any time. The VCS will later allow you to merge all the changes into a
common version.


Storing Versions

A version control system acknowledges that there is only one project.
Therefore, there's only the one version on your disk that you're currently working on.
Everything else are neatly packed up inside the VCS. When you need it, you can request
any version at any time and you'll have a snapshot of the complete project right at hand.


Restoring Previous Versions

If the changes you've made lately prove to be garbage,
 you can simply undo them in a few clicks.


Understanding What Happened

Every time you save a new version of your project,
your VCS requires you to provide a short description of what was changed.
This helps you understand how your project evolved between versions.


Backup

Using a distributed VCS like Git can act as a backup.
every team member has a full-blown version of the project on his disk
including the project's complete history.
all we need for recovery is one of our teammates' local Git repository.

_______________________________________________________________________________________________


Local version control systems

Everything is in our computer.

Cons
         so it cannot be used for collaborative software development.


Centralized version control systems

Everyone knows to a certain degree what others on the project are doing.
Administrators have finegrained control over who can do what.

Pros
Can be used for collaborative software development.

Cons
Most obvious is the single point of failure that the centralized server represents.


• Distributed Version Control Systems

Clients don’t just check out the latest snapshot of the files, they fully mirror the repository

Cons
* No single point of failure.
* If any server dies, and these systems were collaborating via it,
           any of the client repositories can be copied back.
* Can collaborate with different groups of people in different ways
           simultaneously within the same project.

_________________________________________________________________________________


Git

Git is a distributed version control system, a tool to manage our source code history.
We can commit, branch and tag all on our local machine without interacting with a server at all.


GitHub

Github is a social layer on top of Git.
It is a hosting service for Git repositories.

_________________________________________________________________________________


Git commands


commit

The action of storing a new snapshot of the project’s state in the
VCS history.

Command: git commit -m "Commit message"

This will commit changes to head (but not yet to the remote repository).


Command: git commit -a

This will commit any files you've added with git add, and also commit any files you've changed since then. 



Push

Send changes to the master branch of your remote repository.

Command: git push origin master


_________________________________________________________________________________


Git directory

The Git directory is where Git stores the metadata and object database for your project.
This is the most important part of Git, and it is what is copied when you clone a repository from another computer.

The working directory is a single checkout of one version of the project.
These files are pulled out of the compressed database in the Git directory and placed on disk for you to use or modify.



Staging area

The staging area is a simple file, generally contained in your Git directory,
that stores information about what will go into your next commit.
It’s sometimes referred to as the index, but it’s becoming standard to refer to it as the staging area.

_________________________________________________________________________________


Benefits of Content Distribution Network


Improving website load times

By distributing content closer to website visitors by using a nearby CDN server (among other
optimizations), visitors experience faster page loading times.
A CDN can reduce bounce rates and increase the amount of time that people spend
on the site.


Reducing bandwidth costs

Through caching and other optimizations, CDNs are able to reduce the amount of data an origin
server must provide, thus reducing hosting costs for website owners.


Increasing content availability and redundancy

Thanks to their distributed nature, a CDN can handle more traffic and withstand
hardware failure better than many origin servers.

Improving website security

A CDN may improve security by providing DDoS mitigation, improvements to security certificates, and other optimizations.

_________________________________________________________________________________


Differences between CDN and Web hosting

• Web Hosting is used to host your website on a server and let users access it over the internet.
  A content delivery network is about speeding up the access/delivery of your website’s assets to those users.

• raditional web hosting would deliver 100% of your content to the user. If they are located across the world,
  the user still must wait for the data to be retrieved from where your web server is located.
  A CDN takes a majority of your static and dynamic content and serves it from across the globe, decreasing download times.
  Most times, the closer the CDN server is to the web visitor, the faster assets will load for them.

• Web Hosting normally refers to one server.
  A content delivery network refers to a global network of edge servers which distributes your
  content from a multi-host environment.

_________________________________________________________________________________


Free CDNs

• CloudFlare
• Incapsula
• Photon
• Swarmify

Commercial CDNs

• AWS Cloudfront
• Google Cloud CDN
• Microsoft Azure CDN
• Cloudinary
• Imgur

_________________________________________________________________________________


Levels of Virtualization


Hardware level

Implement by Virtual Machines, Emulators
• VMware
• VirtualBOx


OS level


Application level 

implement by Runtimes , engines (games engines)
• JRE
• JVM
• .NET

Database virtualization


Network virtualization



_________________________________________________________________________________

Hypervisor

A hypervisor is a process that separates a computer’s operating system and applications from the underlying physical hardware.
Usually done as software although embedded hypervisors can be created for things like mobile devices.

The hypervisor drives the concept of virtualization by allowing the physical host machine to operate multiple virtual machines as guests to help maximize the effective use of computing resources such as memory, network bandwidth and CPU cycles.


_________________________________________________________________________________


Difference between Emulater and Virtual machine

The purpose of a virtual machine is to create an isolated environment.
Virtual machines make use of CPU self-virtualization, to whatever extent it exists, to provide a virtualized interface to the real hardware.

The purpose of an emulator is to accurately reproduce the behavior of some hardware.
Emulators emulate hardware without relying on the CPU being able to run code directly and redirect some operations to a hypervisor  controlling the virtual container.


_________________________________________________________________________________


No comments:

Post a Comment

Client - side Development II - RiWAs

Key features of RiWAs Direct interaction:  In RiWAs, users can interact directly with page elements through editing or drag-and-drop too...