Friday 27 June 2014

Vim a beginning

 

Contents

  • Introduction
  • Mode of Operations
  • Commands for basic Operations
    • Opening a File
    • Inserting Text
    • Moving around
    • Copy & Paste
    • Undo & Redo
    • Search & Replace
    • Save & Quit
    • Splitting windows
    • Advance Options
  • Conclusion

 

Introduction

The VI editor is a one of the most powerful text editor which has a very extensive functionalities to allow developer enabling to edit files with a minimum of keystrokes. This power and functionality comes as a cost. This article I am going to explain basic command which helps you to put your hands on in VIM editor to write your program.

Mode of Operations

VIM has three modes of operation.

  1. Command Mode : This is the mode VIM starts in by default. In this mode, most keys on the keyboard are defined to specific command. At any time, pressing the ESC key and typing colon : returns the user to command mode.
  2. Insert Mode: This mode allows a user to start inputing data into file. To reach this mode, press i or o
  3. Visual Mode: This mode allows you to do the visual operation which is common in grapical editors like selecting punch of lines copy/pasting/deleting the text in the editor. Pressing v will enters you in visual mode.

Commands for basic Operations

  • Opening a File

 

 

Commands

Descriptions
vim This will start the empty vim editor
vim [File name] (eg. vim hello.c) This will start vim editing the specified file(or create a new file if no file specified
vim [File name] : [Line No] (eg. vim hello.c :5) This will open the specified file with the cursor point to the given line number.
vim [File name] / [expression] This will open the specified file with the place where the expression matches

 

  • Inserting Text


     

    Commands

    Descriptions
    i Insert a text in after the current cursor position
    I Insert a text before the cursor position
    o Insert a text one line below the cursor position
    O Insert a text one line above the cursor position
    a Append a text after the cursor
    A Append a text before the cursor

 

  • Moving around


     

    Commands

    Descriptions
    k Go up
    j Go down
    h Go left
    i Go right
    w Go write a word
    b Go left a word
    gg Go to the beginning of the file
    G Go to the end of the file
    22j Go to the line no 22
    1 Go to start of the line
    $ Go to end of the line

 

  • Copy & Paste


     

    Commands

    Descriptions
    v Press v to enter visual mode
    Use Arrow keys [k, j h, I ] To select the text to copy
    y To copy the selected text
    p To paste the text
    d To cut the text followed by y to paste
    d To delete the selected text
    yy To copy a Line
    yw To copy a word
    dd To delete/cut a Line
    dw To delete/cut a word
    x To delete a character
    r To replace a character
    cw To replace a word

 

  • Undo & Redo


     

    Commands

    Descriptions
    u Undo the changes
    Ctrl + R Redo the changes

 

  • Search & Replace


     

    Commands

    Descriptions
    /<keyword> after the slash put whatever you want to find and press the enter key)
    n Find next
    N Find previous
    * Pressing star on top of the word you want to search automatically show the search result
    :noh Turn off highlighting (after a search)
    :%s/search/replace/gc It will search and replace the text in the entire document [g mean global] [c mean confirm before replacing the text]
    :1,5s/search/replace/ci It will only replace the text in between line number 1 and 5. [I mean ignore case]

 

  • Save & Quit


     

    Commands [see colon is there before ]

    Descriptions
    :w Save the file
    :!w Save it forcefully to override the readonly files
    :q Close the file
    :q! Close the unsaved file forcefully :
    :wq save and close the file
    :wq! Save and Close the file forcefully
    :x Save and close the file

 

  • Splitting windows


     

    Commands

    Descriptions
    : sp Split the window into two buffer
    : sp filename open the new file in the window
    : vsp Vertically split the window
    : vsp filename Open the file in vertical window
    ctrl + w w Switch between windows

 

  • Advance Options


 

Commands

Descriptions
Indentation

Press v and then arrow keys (or h,j,k,l,w,$) to highlight lines of text.
Type > or < to indent right or left.

: set et Use space for indenting instead of tab
: set ai set auto-indenting
: set si set smart indenting context sensitive indentation
: set nu set numbering in the file
: set nonu Remove the numbering [add “no” to any command to remove it ]
: syntex on Based on the programming the syntex will be enabled.
: ! cmd (eg. :!e filename) opens new file in vim
: !sh Go to shell prompt
ctrl + G Tell the file name and current line number

 

Conclusion

This article provides a very basic command which is used in VIM for day to  day work. As I told VIM is so powerful text editor It has more than 150 commands which provides the different functionality. VIM can be configured as better than modern IDE. It has support of editing all the modern programming language. Please feel free to give your comments in the below section. If you have any query feel free to send a mail to sentenwin@gmail.com

Setup Your Github account


Hi Everyone,
In this post I am going to explain about how to setup your Github account and Show your code ability to the world.
What is GitHub?
Github is one of the most important developments in software over the past five year. The site began in 2008 as a simple frontend for the open-source GIT distributed version control tool. It was similar to code repositories like SourceForge, Google Code,  or Bitbucket But Github has transcended the category to become an institution in its own right. Features that is pioneered are now crucial tools for any group software engineering work. It is now the world’s largest and most dynamic repository of open-source code, and a strong Github account has become more important than your CV or formal education for the most cutting-edge technology companies.
Click here to open the github website.


Select Free Account:
  Select your account type as free. If you are corporate you can select the paid account service.


Create New Repository:



  • Click on the Plus symbol
  • Select new repository option
  • Give your repository name as Sample for test purpose
  • Add the description of your repository.
  • Select the public option as it is free and it will be visible to everyone
  • For private repository you have to select the paid service.
  • Click on the create repository button.
  • Your repository “Sample” is ready now

Setup the local repository on your machine.



Installing and setting up the GIT repo on your system

$> sudo apt-get install git-core –y [in ubuntu machine] windows [Download MiniLinux]
$> mkdir repo
$> cd repo
$> mkdir Sample
$> cd Sample
$> git config –global user.name “Senthilkumar M” << Use your name here >>
$> git config –global user.email sentenwin@gmail.com <<Use your email id here >>
$> git init
$> git add README.md
$> git status
$> git commit –m “Initial commit”
$> git status
$> git remote add origin https://github.com/USERNAME/Sample.git
$> git push –u origin master /*It doesn’t work */

Pushing the local code to Github.com
  • Executing git push –u origin master will through an error.
  • We need to generate ssh keys so that Github knows that we have access rights
  • Run the following commands to generate the SSH keys.
Generating SSH key

$> cd
$> ssh-keygen -t rsa –C “sentenwin.m@gmail.com”  << Your Github id here >>
Press enter two times until it generate the key fingerprint

$> cd .ssh
$> cat id_rsa.pub

Update the public key in github site

  • Copy the contents of the above file (id_rsa.pub) and paste it to github.com site
  • Goto Setting -> ssh keys -> Add new key-> paste the key
  • Now go to github.com/settings/ssh
Authenticate your local machine to push your code to  GitHub.com


$>  ssh –T git@github.com
$> git push –u origin master /* Now it will work and upload your code to Github.com */

That’s it Now you can also contribute your code to open source. Show your coding ability to the world through GitHub. Feel free to comment below. If you have any doubt in following these steps feel free to send a mail to sentenwin@gmail.com







Get Ready to be a Developer

  • Overview
  • Who is a Developer
  • Choose your platform
  • Setup your Linux Environment
  • Select your Editor
  • Write a hello world program
  • Share your program through GIT
  • Document your program

Overview

Hello all if you are heard the word developer and wonder what they are and what they will do, and want to become a developer. This is the place to get start to become a developer. In this article I am going to setup the environment to write your first “Hello world” program and share it to the world.

Who is a Developer

A lot of people think, if they can write some code, they qualify as a developer. But it is not like that, if you don’t take ownership and responsibility for solving the overall, real business/user problem you are not consider as a developer.A good developer should understand the overall problem and its context. He has good problem solving skills, take ownership by being a part of the team and having a sense.
Before starting you have to understand the below terminology which is always used while talking between developers.
Analysis Understand your requirement and analysis with existing system
Design Draw your understanding of the problem in visible manner
Coding Translate your design into any of the programming language
Testing Validate your program satisfies your requirements
Debugging Dig through the code to understand where your program fails to satisfies your requirement
Profiling Get the performance data of your program to make it faster and better

Choose your platform

Currently there are three major platform available for development.
  1. Windows
  2. Linux
  3. MAC
Among three platform Linux is a open Source. It mean using Linux based distribution you don’t need to pay any license. So it is the most used platform in the development world. Linux has many distribution like Ubuntu, Redhat, Open Suse, Cent OS, Mint and so. Ubuntu is the very popular Desktop version of Linux distribution. So I prefer you to have Ubuntu on your PC as a dual OS if you call it yourself us a developer.

Setup your Linux Environment

If you have Linux OS on your machine you can skip this section. Here I am going to explain you how to setup the Linux environment on your windows or MAC based platform. Before starting you need to download the Development tools from the given link
MiniLinux – It is a simple light weight Linux CLI Application which mimics the Linux Terminal.
MiniLinux was developed by me on top of mobaxterm with additional plugin support which allows you to get the entire Linux environment on one click.
Click here to download the MiniLinux.
There are other tools which provides the  Linux Environment on windows like Cygwin, Installing Linux on Virtual machine, Mobaxterm free version. But setting up these environment is very complex task for beginner. When I start try to setup the cygwin in my machine at first time I am literally pissed off and I went to install the Ubuntu as a dual OS in my machine. So To avoid all sort of juggling I have created a “MiniLinux” on top of free mobaxterm with additional plugins to get a real flavor of Linux.

Select your Editor

Choosing your editor is the import thing as developer you have to do before writing your code. If you are windows user after hearing the word editor obviously the name Notepad will come to your mind. But it is not really a editor, the name suggest it is simple note taking application. So always it is better to avoid using Notepad to write your program. You have to select the editor which will increase your productivity. If we talk about editor there are two famous editor in the open source world called “VIM” and “EMAC”. In open Source world we classify the developer into two category  one who uses VIM and other who uses EMACS. Both are best editor which allows you to write a code in fast phase and increase your productivity. But selecting the one completely depends on the individuals. Here I am VIM guy so I will go with VIM.
You don’t need to download anything to setup your VIM editor I already bundle it in MiniLinux application. So just click on the MiniLinux Application, It will open the application which looks similar like your command prompt in windows. In the terminal just type vim to get start the vim editor.
VIM editor has three modes.
  1. Command Mode [press ESC and colon  : to go to command mode]
  2. Insert mode [press “I” or “O” to go to insert mode]
  3. Visual Mode [ press “v” to go to visual mode]
By default VIM editor will start in command mode to go
$> vim Open the empty vim editor
$> vim filename Open the file in vim editor/create new file

Basic vim Commands

All the vim commands only work in command mode, so always press ESC + : to go to command mode and execute the below commands.
Command Usage
I or O Go to insert mode
w save the contents
wq save and quit the file
q! quit without saving the file
gg go to top of the file
G go to end of the file
1 go to start of the line
$ go to end of the line
:help to open the help menu
To understand the vim editor in detail you can refer my another blog “vim to begin”

Setup the Local GIT Account

GIT is a distributed revision control and Source code management system.When you are working in corporate world you may have to develop a program with multiple people, and all may use the same file to develop different functionality in it, So we need a tool which helps the team cope with the confusion that tends to happened when multiple people are editing the same files.
Here I am going to explain the steps required to setup a local GIT in your machine. As MiniLinux bundle with GIT so you don’t need to download any special program to setup GIT. Just open the MiniLinux Application, in terminal type the below command
$> git --help
Which shows the usage of git tools. Execute the below list of commands to setup your local GIT in your machine
$> mkdir myrepo
$> cd myrepo
$> git config –global user.name “Senthilkumar M” << Use your name here >>
$> git config –global user.email sentenwin.m@gmail.com << User your mail id here >>
$>git init

Write a hello world program

Now your Linux environment is ready and your editor also ready to accept your code then what let start writing a simple hello world program  in C. As a Developer you have to develop your code in different programming language but for beginning purpose I will start demonstration in C.
Open your vim editor and start typing/copy the below program.
$> vim hello.c
#include <stdio.h>
int main(){
    printf(“Hello world now I am a Developer \n”);
    return 0;
}
We are using gcc to compile your program. GCC is a open source compiler for C/C++ program. Execute the below command to compile your program.
$> gcc hello.c –o hello
If your program compiles successfully without any error you will see a file in your current directory called hello. Type the below command to run the program.


$> ./hello
Program Output
$> Hello world now I am a Developer

Share your program through GIT

Until you not share your code to the world no one know you are the good developer. Sharing your program to others makes a positive impact on you career development. Company who want to recruit you will see your code and understand your coding ability before calling you for interview. To share you code to other we have open source GIT web called github where you need to create your public repository to upload your code. You can refer my GIThub blog to setup your git hub account. Before doing that first commit your changes into local GIT.
Type the below commands to commit your changes.
“Words inside the quote are command explanation ”
$> git status  “ This command show you the files which not committed”
$> git add hello.c hello.exe “Add the files to git ”
$> git status “Now it will show the different result then previous”
$> git commit –m “initial commit” “This is the commit msg”
$> git status “It will show nothing to commit mean your changes committed”

$> git log “It will show your commit history author name and date/time press q to come out”

To share your code to the world please refer my GIT blog to create an account in GITHUB website. Thanks for spending your time reading my blog. Happy coding. Feel free to give comments here. If you struck anywhere in they above steps send a mail to me sentenwin@gmail.com

Thursday 26 June 2014

5G opportunity for innovation

5G Main Technical focus

  1. Ubiquitous and interoperability of the network
  2. Flat IP based network concept
  3. Cognitive radio technology
  4. Security related issues.
  5. Limited Frequency spectrum resource problems.

 

Introduction

The absence of official standards from 3GPP, ITU-R makes the 5G have limitless possibilities for innovation.It allows user able to access different Radio Access Technologies(RAT) using one mobile. It has been proposed to assemble the existing wireless and wired communication techniques into an all IP high performance world wide network. WWWW[World wide wireless web] which allows the subscriber quick access to the internet, dynamic movement, Favorable Bit Error Ratio(BER) and great security.It uses the resources other than frequency/time in order to increase a capacity of the system.

 

What is Flat IP based Network

  • 3G = Operator-centric Design
  • 4G = Service-centric Design
  • 5G = User centric Design

Network layer will be divided into three sub layers lower, middle and upper to provide All-IP connectivity. All-IP Network (AIPN) system developed in LTE. Flat IP based network will be used in 5G. It provides a way to identify each device using symbolic names.  IPv6 addressing scheme used in Flat IP network.  Each device have fixed IPv6 address and multiple Care of Address(CoA). The number of CoA for the device is according to the number of networks where devices is connect. lower network layer uses CoA, middle network layer translates the CoA to IPv6 address and upper network layer network uses IPv6 address.

What is Cognitive Radio

Interoperability was an important things in any wireless technology. It means any system with different technologies can work together and communicate with each other. 5G network architecture consists of a user terminal and no. of different radio technology. Cognitive radio is an intelligent communication system that is aware of its surrounding environment and choose the best wireless technology for communication.

Security related issues

Cognitive Radio has ability to scan the available spectrum, select from a wide range of operation frequency, there are challenges related to security, such as selfish misbehaviors, harmful interference and licensed user emulation. The proposed method to solve this problem is TRIESTE (Trusted Radio Infrastructure for Enforcing SpecTrum Etiquettes). It will able to ensure that radio devices are only able to access and use the spectrum in a manner that conforms to their privileges.

Limited frequency  Spectrum Resource

It is a major challenge for mobile and wireless technologies. To solve this problem currently we have different multiple access methods like Time Division Multiple Access(TDMA), Frequency Division Multiple Access(FDMA), Code Division Multiple Access(CDMA), OFDMA(Orthogonal Frequency division Multiple Access). But all these techniques are based on time and frequency. But in 5G technology we need to develop a multiple access system which is not dependent on time and frequency. So a new multiple access technology proposed called BDMA(Band/Beam Division Multiple Access)

For adapting the BDMA system in 5G, the development of the phase array antenna is required. The smart antenna with the ability to switch its beam is needed. Switched bean antennas support radio positioning via Angle of Arrival(AOA) information collected from base and mobile station.

Conclusion:

5G technology provides lots of opportunities for the researcher to come up with the solution to solve the above mentioned problems. This field has lots of potential for new ideas. I hope you all get some idea in this article let start contribute the world next fastest developing technology to touch the billions people.

Tuesday 17 June 2014

Completed my degree what next?

So you just graduated or even lost your job and you are looking for a new one. Everywhere you look, you see bad news. Everybody seems to be smarter than you, more experienced and yet willing to take less pay for the gig. You have spent so much money running around mailing your resume. It is a messy world you say.

 

The fact is, it doesn’t get any easier. What do we do now, you ask?. I am not an expert but I will give you my 2 cents. Here are some of my favorite tricks that could get you going. NOTE:  A previous study showed that only 2 percent of professionals actually use their degrees. This means that just because you have a degree in business doesn’t necessarily mean you must work in that field.

  1. NETWORKING - I list this as the first thing to do for a reason. You are more likely to get a job through referral than other means. If there is something students in college should be doing besides studying and partying, it is making connections. Save those contacts because you will need them later. If you didn’t do so, you can still catch up by using LinkedIn and other social networks. Attend local events where you will meet new people with similar interests. There is more to networking than this short description but you get the idea.
  2. VOLUNTEER - Volunteering is not easy especially when you have bills to pay. I say this because when I refer to being a volunteer, it simply means you are offering your services for FREE. The benefits sometimes outweigh the effort. How? One thing you can do while applying for a job is mention the fact that you volunteered at company A or B. Good Karma. It is better to volunteer than to sit on your couch watching reality television and eating chips. So, find a local charity or a company that could benefit from your skills. Heck, you might even get hired if they think you are worth it.
  3. JOB-SEARCH - Oh wait a minute, I am already doing this right? I totally agree with you here but I wanted to say something more specific. It is tempting to blame the economy for lack of jobs especially when you have no idea where to look. One advice I was given by someone was that when it comes to job hunting, you should make the search a full time job. The only difference is that you don’t get paid, in fact, you spend your own money running around from office to office. Warning: Do not do this: ‘You do so many interviews, when you reach your 40th interview, you ask your interviewer the name of his company! ‘ Got it? I must mention also that you can do networking and volunteering as you job search.
  4. START A BUSINESS - If you have been trying to find a job for too long without any luck, perhaps you can start your own business in your garage. Of course this move is tricky and sometimes expensive to take. Perhaps you have identified a market gab and you feel like you can help fill it. You might be a software developer and you have a great product that could revolutionize the way people do things. With today’s world, opportunities are vast but you have to work hard and smart for it. Depending on your area of expertise, I promise, there is something out there that you can do to make extra cash. Since starting a business requires some capital, you might consider looking for professional advice on how to get started.
  5. JOIN oDESK - This is just one place where you can keep your skills sharp by doing freelance work. There are thousands of people out there looking for people like you to help them get their jobs done. You might not be paid much but you will get to build connections that could lead to greater opportunities down the road. Did I mention creating a portfolio? That will come in handy when applying for a job. You want to have something to show when your interviewer asks “what projects have you worked on before?”
  6. JOIN QUORA - This is my favorite website. You might be wondering why I even listed it here. Let me cut it to the chase: if you want professional advice, links to the best resources that you would otherwise pay a lot of hard-earned money for, help others by answering questions in areas of your expertise, and most of all, meet awesome people – Quora is your friend. It is totally FREE of charge. Warning: You might get addicted to it and that could make your girlfriend, boyfriend or spouse really mad at you – in that situation, you can tell them to blame me for it.
  7. START A BLOG - This is obviously not for everyone. Most often, maintaining a blog is a challenging task especially if you don’t have a specific idea or subject to write about. From a horse’s mouth – before I started this blog four months ago, I tried blogging and failed several times. I thought people didn’t really like what I was posting. It is easy to talk about everything and end up talking about nothing. I advise you to find something specific that you are good at and get started. Set a schedule and you will be amazed by the experience. In fact, you might be surprised by your interviewer by asking you whether you have a blog or not!
  8. WRITE A BOOK - One amazing thing about life is that when one door closes, more than one door opens. In this case, ebook publishing is a door that leads to potential success. Let us be honest here, you have a story you would like to tell. There is a book in you. If I was able to write a book and self-publish it, reach more than eleven thousand (11,000) downloads on Amazon Kindle alone, then why can’t you do it? It is amazing how things work. Give it a shot, starting with a few hundred words every day or weekend. Talk to me if you need help.
  9. EXERCISE + FOOD - I am not a food and fitness expert but we all know that you are better equipped when you are eating healthy and exercising. Just because you don’t have a job doesn’t mean you should let your cholesterol get out of control. Take care of your body. It is easier to get tempted when you don’t have enough money to eat junk food and I totally understand it. That does not mean you should give up the fight. Just do your best to remain healthy.
  10. MORE - The list goes on and on. However, I am going to stop here because I know you have other things to do. Go out there, make a clear plan of what you really want to do. Hire a resume service and get down to work (job searching of course). Prepare to be turned down several times. Never give up. If you have other ideas, please share them through the comments section.

At the end of the day, if you are lucky to be interviewed, be honest because it is not morally upright to lie. It is easier to be caught lying. Do whatever it takes to be ready for that job because you never know when you will be meeting your next employer. With that in mind, happy April Fools Day! I am not fooling you at this point. Good luck and see you soon.