Showing posts with label General. Show all posts
Showing posts with label General. Show all posts

Sunday, January 6, 2013

A New Year Special Thought


First of all, I would like to wish a very happy new year to all the readers. As the New Year comes, many new hopes and thoughts are growing inside my mind. I just want to share it with you people.


2012 was a year of smart phone battle. We saw gadgets like Samsung galaxy s3, IPhone 5, Nokia Lumia etc were the best of 2012. And 2013 will be the year of 1080p screen resolutions and 3 GB RAM. As 2K and 4K resolutions are there beyond 1080p, we can expect any magic this year. Galaxy S IV is rumored to be launched in May 2013 with 2 GHz quad core. They are also about to bring first bendable touch screen. And HTC, Nokia, Sony and other companies are about to release their beasts at CES 2013(Consumer Electronics Show). Also Huawei, Karbonn, Micromax etc are releasing excellent smart phones in range of 10K rupees. 

Actually I am lucky to see this smart phone revolution, as first phone is released at my teenage. From black & White screen to 1080p resolution! From ignorable RAM to 2 GB RAM! From 64 MB to 64 GB SD cards! From keypad to touch screen! From a basic processor to quad core processors!

Major companies are about to release OLED televisions with 4K resolutions. 3D printers are engaged in revolutionary experiments. Laptops are getting touch screens. Exynos and Snapdragon are releasing their lightening chips. Android's next version Key Lime Pie is expected to launch this year. Hitman Absolution and FarCry are heating the mind of gamers. Every devices are getting smarter with dual and quad core processors. The world is now experiencing a revolutionary change.

I got a new project on this New Year day.  It’s again an embedded one. It’s very interesting to do firmware coding, testing our code on latest devices, learning new technologies and experiencing future gadgets. Android comes in cameras and other usual devices with their powerful operating capabilities. So every small device is getting smarter. So working in firmware of embedded systems and other middleware works, keeps me smarter as well. This year is very important to me, as I am turning to an experienced engineer from a fresher. Responsibilities are getting higher. Last year I was not able to contribute many articles to TaLenCia. Almost all posts were links to some video lessons and eBooks. This year I am looking forward to write at least one article per month regarding any techie thing around me. I have also started a facebook page that regularly updates about latest techie things around you. Here is the link www.facebook.com/talenciablog

Last year I had a nice experience with the coming os, Tizen, and I was able to write an article about it. This year, I expect more such experiences will lead me to write useful articles. Now I have some interests in HTML5 and Windows mobile applications as they are getting hot this year. I think Nokia will return to the smart phone battle with their Windows 8 phones. If I get enough time to learn those technologies, I will surely share my experiences through this blog.

Once again New Year wishes to everyone and keep looking TaLenCia J

Thanks

AJAY

Friday, August 3, 2012

Aptitude Tutorials - Logical and Verbal


For the students and professionals who are trying to get placed in companies, i am giving you a bunch of helpful tutorials. I think these are the top in Aptitude references. These tutorials will improve your logical and verbal abilities.
  1. Barrons GRE
  2. Challenging Logic and Reasoning Problem
  3. Puzzle to Puzzle You
  4. R S Aggarwal Quantitative Numerical Aptitude
  5. R S Aggarwal Verbal Reasoning

Thanks

AJAY

Saturday, October 1, 2011

Google App Engine – An introduction


Many of us already handled a web application for our academic projects. But only a few of them are dare to buy a domain name and host it, so that anybody can access the application through Internet. I have completed my master of computer application project last week. It is a git based wiki implementation, and I will post some posts about that project soon. I also thought about buying a domain name, so that I can put it in my resume and the companies can view it online at the time of interview. I thought it will help me getting better jobs.

Then I come to know about the Google’s App Engine service. Like blogger, orkut, gmail, docs etc Google is also availing better services for students like Google Code, App Engine.

What is a Google App Engine? It is a service of Google where programmers can host their web applications at no cost. This free service gives us a domain name and we can host the code so that everyone can see your application by typing that url. Now Google App Engine supports only Python and Java. It gives a version control for every version of our code that are deployed. It gives many information like CPU time used, No. of requests, memory used etc.

How App Engine works? Google gives this service using a cloud computing technology. Google has server farms where thousands of server machines are working 24x7. When we are hosting an application, it is stored somewhere in these servers. Our application gets some amount of RAM and it is processed by some CPU.

Is it completely free? It is free to common applications. But there is a daily quota for each measures like average CPU time. I think normal applications will not reach that quota easily. If your application is viewed by a million people per day, then the quota may be crossed.

I think many of us are not aware of App Engine service of Google. If you have knowledge in Python or Java, try for an app engine project. I completed an app engine project and I will post about it soon. I think that will be helpful to the beginners.

Thanks

AJAY

Friday, August 12, 2011

Setting background in Terminal


I have showed you hoe to change the default start up of terminal by customizing the .bashrc file. In this post I want to show you how to change the font,background etc of the terminal.
We can set them without the use of Linux commands. Open your terminal and select Edit->Profiles. There you have an option to set the new profile name. After giving a proper name you can edit the profile as you want.

You can change the font under General tab. You can also edit the cursor type. In Title and Command tab, you can edit the default title name 'Terminal' to whatever you like. On the Colors tab you can edit the foreground and background colors.

Now click on the Background tab. Here you can set an image in your system as your terminal background. Also set the transparency level. Select your customized profile by selecting Terminal->Change Profile in the menu bar. Now your terminal have entirely different look!!! Look at my customized terminal.


Thanks

AJAY

Wednesday, July 20, 2011

Git - An introduction

Before going to Git, I want you to familiar with the versions or revisions. What is a version? In our concern, versions have definition like : a version is any change in form.

Suppose we are working in a project for developing a computer game. Suppose the game have a size of 1GB. If we want to make a change in the code, first we take a copy of the game in order to rollback in the future. So we need another 1GB in the hard disk. Imagine if hundreds of software engineers are updating the game, how much memory will be consumed by them? Is it a efficient way?

Here comes the advantage of a version control system. The version control system keeps various versions of the updates, not the entire software. It keeps the snapshots or current stage of the software and saves them as versions. So when programmers make changes and commit the changes, a new version is saved. We can rollback to any version at any time.

Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software. A revision control is often used for keeping track of incrementally different versions of electronic information, whether or not this information is actually computer software. A Revision is the state at a point in time of the entire tree in the repository. The repository is where files' current and historical data are stored, often on a server.

The major DVCS(Distributed Version Control Systems) are Git, Mercurial, Bazaar, Fossil, Codeville, SVK etc. These all are open source DVCS tools. TeamWare and BitKeeper are the examples of proprietary DVCS tools.

In my main project I’m using the powerful DVCS – Git – to keep track of the versions of wiki articles. Git is developed by the famous Linus Torvalds. He was the developer of Linux also. Its initial release was on April 2005 and it is written in C, Bourne Shell and Perl. Git is primarily developed on Linux, but can be used on other Unix-like operating systems including BSD, Solaris and Darwin. Git is extremely fast on POSIX-based systems such as Linux. It can be also used in Windows systems.

The following websites provide free source code hosting for Git repositories:

You can create a free account in GitHub and I will post soon about how we can create and configure a repository in the GitHub.
 
Thanks

AJAY

Friday, July 15, 2011

SQLite - An introduction

I have introduced a powerful open source web server – nginx – in my last posts. Here I want to introduce an open source database. Now you may guess that I’m going to talk about MYSQL, but definitely not. MYSQL is also an open source database, but here I’m talking about a light weight database which can even used on mobile phones.

It is SQLite. It’s an embedded relational database management system which is developed by D. Richard Hipp. It’s completely written in C language and first released on August 2000. About two weeks ago, on 28th June 2011 they released its stable version. It has a size of 275KB only.

SQLite implements most of the SQL-92 standard for SQL. A standalone program called sqlite3 is provided that can be used to create a database, define tables within it, insert and change rows, run queries and manage a SQLite database file. This program is a single executable file on the host machine.

SQLite is a popular choice for local/client SQL storage within a web browser and within a rich internet application framework; most notably the leaders in this area (Google Gears, Adobe AIR, and Firefox) embed SQLite. SQLite full Unicode support is optional.

SQLite also has bindings for a large number of programming languages, including BASIC, C, C++, Clipper, Common Lisp, C#, Curl, D, Delphi, Haskell, Java, Lua, newLisp, Objective-C (on Mac OS X and iOS), OCaml, Perl, PHP, Pike, Python, REBOL, R, REALbasic, Ruby, Scheme, Smalltalk, Tcl and Visual Basic. There is also a COM (ActiveX) wrapper making SQLite accessible on Windows to scripted languages such as JScript and VBScript. This adds database capabilities to HTML Applications.

Due to its small size, SQLite is well suited to embedded systems, and is also included in :
  • Apple's iOS (where it is used for the SMS/MMS, Calendar, Call history and Contacts storage)
  • Symbian OS
  • Nokia's Maemo
  • Google's Android
  • RIM's BlackBerry
  • Linux Foundation's MeeGo
  • Palm's webOS.

However, it is also suitable for desktop operating systems; Apple adopted it as an option in Mac OS X's Core Data API from the original implementation in Mac OS X 10.4 onwards, and also for administration of videos and songs on the iPhone.

In my next post I will show you some example programs using python to access SQLite.

Thanks

AJAY

Sunday, July 10, 2011

Nginx vs Apache

In this post I want to explain how Nginx overcomes Apache.

Even Apache is the most popular and widely used web server in the world; Nginx is the main challenger to Apache. Apache can only process 100 http requests per second and is not efficient in websites that face heavy traffic. Nginx can process thousands of http requests per second and can easily handle more than 500 million requests per day.

Here I want to show you some statistics which are shared by Joe Williams, an open source supporter.

The image given shows the reply rate of both servers. The reply rate is the rate at which the servers reply to the http requests.


 It is clear that Nginx takes less reply time than Apache that makes the nginx server a fast one. Another statistics is about the network I/O overhead. Apache uses more bandwidth to handle the same number of requests that are handled by the nginx.


 Another interesting statistics is on the response time. Look at the image given below.


Apache has higher response time and it varies upon the increase of number of http requests. But nginx shows a constant 0.4ms response time throughout the varying number of http requests.

Nginx also overcomes Apache in the case of load on the CPU.

In my next post I will explain how to install this powerful web server in the ubuntu systems.

Thanks

AJAY

Nginx - An Introduction

We all know, to run a web application we need a server. The web application must be processed on a powerful system. The users access the application through the browsers. Browsers send http requests to the port of the web application. The web server receives and processes the request and sends the response.

The most popular web server software is Apache server which is a open source project. Websites like Wikipedia, Google, Facebook etc handles huge amount of traffic. So they need powerful web servers. Apache can handle around 100 http requests per second only. I introduce you another powerful web server, nginx, also an open source project. It can handle thousands of http requests per second.

It runs on Unix, Linux, BSD variants, Mac OS X, Solaris, and Microsoft Windows. nginx is a lightweight, high-performance Web server/reverse proxy and e-mail (IMAP/POP3) proxy. It is licensed under a BSD-like license. BSD licenses allow the open source tools to edit the source code and gives authority to hide the modifications in the source code.

It is written in C and first released on 4th October 2004. It’s developed by Igor Sysoev. According to Netcraft's May 2011 Web Server Survey, nginx was found to be the third most widely used web server across all domains (7.50% of surveyed sites) and the fourth most widely used web server for all “active” sites (8.23% of surveyed sites).

Originally, nginx was developed to fill the needs of various websites run by Rambler, for which it was serving 500 million requests per day as of September 2008!! Nginx uses an asynchronous event-driven approach to handling requests which provides more predictable performance under load, in contrast to the Apache HTTP server model that uses a threaded or process-oriented approach to handling requests.

I will post more about nginx soon

Thanks

AJAY

Thursday, July 7, 2011

Heap Sort mechanism

Heap, Quick and Merge sort has the time complexity O(n log n). In these 3 efficient sorting mechanisms heap is a special kind of tree based data structure. There are many kinds of heap algorithms like binary heap, binomial heap, pairing heap etc.

Here we experiment with the binary heap tree mechanism.

Binary heap is a heap created using binary tree. Binary heap has some additional property than binary tree. All levels of the tree is fully filled. Incase if the last level is not complete, the nodes of that level are filled from left to right. Each node should be greater than or equal to each of its children.

Heapsort primarily competes with quicksort, another very efficient general purpose nearly-in-place comparison-based sort algorithm. Quicksort is typically somewhat faster, due to better cache behavior and other factors, but the worst-case running time for quicksort is O(n2), which is unacceptable for large data sets.

Other than sorting two main operations performed on the heap are insertion and removal of elements. It must strictly follow the above rules even we add/remove any kind of values.

During insertion we add the new value as the child of the bottom most completed node. If there is an uncompleted bottom node, then we add the new value as the right node of that and complete the node. If the new element is higher value than its parent, the rules of binary heap are violated. Then we must check the new element with its parent and switches if parent is smaller. This process continues till the new element gets right placement. This is called siftUp.

During deletion also it must carefully done in order to maintain the tree structure. The procedure for deleting the root from the heap and restoring the properties is called down-heap. First, replace the root of the heap with the last element on the last level. Then compare the new root with its children. If they are not in correct order, swap the element with one of its children and return to the previous step.

The "siftUp" version given below has O(n log n) time complexity due to its equivalence with inserting each element, one at a time, into an empty heap. The number of swaps that may occur during any one siftUp call increases with the depth of the node on which the call is made.  The crux is that there are many (exponentially many) more "deep" nodes than there are "shallow" nodes in a heap, so that siftUp may have its full logarithmic running-time on the approximately linear number of calls made on the nodes at or near the "bottom" of the heap.

So this type of heap is more efficient and its time complexity is O(n log n).

Click here  to view the animated image of heap sort.

Thanks

AJAY

Thursday, May 19, 2011

Python - The Origin

My instructor Pramode.C.E has sent me the links of a text about the Python programming language – “Think Python by Allen B. Downey”. Before I’m going to think Python, I want to introduce this programming language to you.

Guido van Rossum
The implementation of Python was started in December 1989 by Guido van Rossum. Python 2.0 was released on 16 October 2000, with many major new features including a full garbage collector and support for Unicode. Python 3.0 (also known as Python 3000 or py3k), a major, backwards-incompatible release, was released on 3 December 2008 after a long period of testing. I’m proud to inform you that Python has twice been awarded as TIOBE Programming Language of the Year (2007, 2010), which is given to the language with the greatest growth in popularity over the course of the year (as measured by the TIOBE index).

Python is a multi-paradigm programming language. Rather than forcing programmers to adopt a particular style of programming, it permits several styles: object-oriented programming and structured programming are fully supported, and there are a number of language features which support functional programming and aspect-oriented programming (including by metaprogramming and by magic methods). Many other paradigms are supported using extensions, such as pyDBC and Contracts for Python. Python uses dynamic typing and a combination of reference counting and a cycle-detecting garbage collector for memory management. An important feature of Python is dynamic name resolution (late binding), which binds method and variable names during program execution. Python is often used as a scripting language for web applications, e.g. via mod_wsgi for the Apache web server.

Python Logo
For many operating systems, Python is a standard component. A number of Linux distributions use installers written in Python: Ubuntu uses the Ubiquity installer, while Red Hat Linux and Fedora use the Anaconda installer. YouTube and the original BitTorrent client are the popular users of Python. Large organizations that make use of Python include Google, Yahoo!, CERN, NASA, ILM, and ITA. Most of the Sugar software, which is an open source desktop environment designed with the goal of being used by children for learning as a part of  One Laptop per Child is written in Python.

Users and admirers of Python—most especially those considered knowledgeable or experienced—are often referred to as PythonistsPythonistas, and Pythoneers. I’m going to be a Pythonist by its true sense and you can expect posts regarding Python on the coming days.

Thanks

AJAY

Wednesday, May 18, 2011

Hackers - The real meaning

Who is a hacker? If you think a hacker is someone who is breaking into systems to stole,destroy or modify something, then you must read this post.

Unfortunately, many people have been fooled into using the word 'hacker' instead of crackers. Crackers are the people who breaks into computers with malicious or criminal intentions or recovers encrypted passwords from data that has been stored in or transmitted by a computer system or associated to accounts.

Hackers are entirely opposite to crackers in terms of their intention. A community of enthusiast computer programmers and systems designers, originated in the 1960s around the Massachusetts Institute of Technology's (MIT's) Tech Model Railroad Club (TMRC) and MIT Artificial Intelligence Laboratory. The members of this culture originated the term hacker. This community is notable for launching the free software movement. The World Wide Web and the Internet itself are also hacker artifacts.

The basic difference is: hackers build things, crackers break them. Hackers solve problems and build things, and they believe in freedom and voluntary mutual help. 

Thanks

AJAY

Monday, May 16, 2011

Why Open Source?

You may have questions regarding why I selected open source technologies for my project. As a student and a growing developer I can justify it. We know, all software has source code. Open source software grants every user access to that code. Freedom means choice. Choice means power. That's why I believe open source is inevitable. It returns control to the customer. You can see the code, change it and learn from it. Bugs are found and fixed quickly. When customers are unhappy with one vendor, they can choose another without overhauling their entire infrastructure. No more technology lock-in. No more monopolies. We believe open source simply creates better software. Everyone collaborates, the best technology wins. Not just within one company, but among an Internet-connected, worldwide community.

In the proprietary model, development occurs within one company. Programmers write code, hide it behind binaries, and charge customers to use the software--then charge them more to fix it when it breaks. The problem worsens when you become tied to a company's architecture, protocols, and file formats.

Free and open source software (FOSS) is at the root of the most innovative products, technologies and services of our time. Today’s top entrepreneurs are using FOSS as the building blocks for innovation. Instead of writing an entire solution from scratch, developers can assemble large parts of their solutions from liberally licensed FOSS projects, and focus their creative energies. FOSS also serves as a training ground for new developers. Good developers have always known that the way to improve is by reading well-written programs. Good FOSS projects in dynamic communities provide a wealth of examples for students to read, understand, and work on. There’s the real-world experience of participating in a distributed team.


Open source is not nameless, faceless, and it's not charity. Nor it is solely a community effort. What you see today is a technology revolution driven by market demand.

Thanks

AJAY

Monday, May 9, 2011

Linux - The new era begins

Linux is an operating system based on the free software concept. The thoughts on creation of the Linux was developing since the success of UNIX. The UNIX operating system released in 1970 became influential to other system authors because of its availability and portability. From that time many developers are investing their time on projects regarding the creation of a UNIX-like system. The GNU Project, started in 1983 by Richard Stallman, had the goal of creating a "complete Unix-compatible software system" composed entirely of free software.

Richard Stallman
In 1991, in Helsinki, Linus Torvalds began a project that later became the Linux kernel. Linus Torvalds had wanted to call his invention Freax, a blend of "freak", "free", and "x" (as an allusion to Unix). He wrote the program specifically for the hardware he was using and independent of an operating system because he wanted to use the functions of his new PC with an 80386 processor. Development was done on MINIX using the GNU C compiler, which is still the main choice for compiling Linux today. Ari Lemmke, Torvald's coworker at the University of Helsinki who was one of the volunteer administrators for the FTP server at the time, did not think that "Freax" was a good name. So, he named the project "Linux" on the server without consulting Torvalds. Later, Torvalds consented to "Linux".

Linus Torvalds
Torvalds first published the Linux kernel under its own licence, which had a restriction on commercial activity. In 1992, he suggested releasing the kernel under the GNU General Public License. Linux and GNU developers worked to integrate GNU components with Linux to make a fully-functional and free operating system.

Torvalds announced in 1996 that there would be a mascot for Linux, a penguin. The name Tux was suggested by James Hughes as derivative of Torvalds' UniX. Some Tux graphics are shown below.


The largest part of the work on Linux is performed by the community: the thousands of programmers around the world that use Linux and send their suggested improvements to the maintainers. Various companies have also helped not only with the development of the Kernels, but also with the writing of the body of auxiliary software, which is distributed with Linux.


I have installed Ubuntu 10.04 and I feel good with this open source OS. If you want to download Ubuntu for your system click here.

Thanks

AJAY