Wednesday, 29 October 2014

How To Bypass SMS Verification On Websites

The SMS verification mechanism on various websites can be overridden. SMS verification is a method used by many websites, including Facebook, Google and Twitter, to verify the authenticity of users and to keep spammers out. In this, the website sends a unique code to your mobile number, which has to be entered on the website in order to verify yourself. The service provides extra security for the website and helps them in marketing purposes as well.
SMS Verification, Facebook, Google, Twitter, mobile spam, mobile verification, user verification on websites. SMS spam, bypassing SMS verification, how to bypass SMS verification

In order to bypass the SMS verification mechanism, the user first has to go to www.receive-sms-online.com. From here, users can choose a number that they will receive SMSs on. Once this is done, enter this number on whichever website is asking you for phone details, you will receive the SMS on this number. Now, on the other website click on the phone number that you chose and you will be redirected to the message inbox. You will find the code that you need to verify yourself here.

Just to warn you, don’t use these shared number to verify bank accounts or online wallets. Since many people are using them, your details can very easily be compromised. Other private accounts should also not be verified using this.

The SMS verification mechanism is a good way for websites to gain marketing angles. When the user enters their number, many websites start sending promotional messages to their mobiles regularly. You can use the shared numbers on such websites in order to avoid overloading your own inbox. 

8 Interesting Python Tricks

1. Emulating "?:"

Python doesn't know the trinary operator "?:" from C. However, it's pretty easy to emulate:

x ? y : z --> [z, y][bool(x)]

(If you're sure that x is already a boolean type (or an integer of value 0 or 1), you can omit the bool() function, of course.)

How does the trick work? Simply create a small list constant, containing the two values to choose from, and use the boolean as an index into the list. "False" is equivalent to 0 and will select the first element, while "True" is equivalent to 1 and will select the second one.

Note that always all three operands will be evaluated, unlike the "?:" operator in C. If you need shortcut evaluation, use an if-else statement.

Actually, there's another way to do it with shortcut evaluation, but it only works if y does not contain a boolean False equivalent:

x ? y : z --> bool(x) and y or z

2. Checking the Python version

You will often find yourself using features that are not available in older versions of Python. If someone happens to run your program with a too old version, an ugly exception traceback will be printed which is usually not very helpful to the user. Better use a snippet like this:

import sys
if not hasattr(sys, "hexversion") or sys.hexversion < 0x020300f0:
sys.stderr.write("Sorry, your Python is too old.\n")
sys.stderr.write("Please upgrade at least to 2.3.\n")
sys.exit(1)

Those lines should be at the very top of your program, even before any other import statements. The variable hexversion is only available since Python 1.5.2, so we first check if it is there, just in case someone has an even older version. The format of the variable is 0x (major, minor and revision number, and an indication of the release status, which is f0 for official final releases). Each of the four parts is two hexadecimal digits.

3. Debugging CGIs

The "cgitb" module (available since Python 2.2) is extremely helpful when debugging CGI programs. Whenever a run-time error (i.e. exception) occurs, a nicely formatted HTML fragment will be produced, containing the backtrace with source context, line numbers and even contents of the variables involved. To use this module, put this line somewhere at the top of your CGI program:

import cgitb; cgitb.enable()

4. Parallel sorting of lists

Sometimes you want to sort a list, and there's a second list (of the same length) which should be sorted along with it. Of course, you could have used a single list of 2-tuples in the first place, but sometimes a program requires a different structure. Anyway, it's easy. The following snippet works with two or more lists (the example shows only two).

data = zip(list1, list2)
data.sort()
list1, list2 = map(lambda t: list(t), zip(*data))

Note that zip() returns a list of tuples, so you have to convert the result of the last zip() back to lists. That's what the map() command along with the lambda function does. If you don't actually need lists, the last line could be simplified like this:

tuple1, tuple2 = zip(*data)

5. Normalizing a MAC address

If you want to convert MAC addresses (sometimes called ethernet address) to a Canonical format, i.e. each of the six parts with two digits, and having all lowercase hexadecimal digits. It's quite likely that there is an easier way, but this what you can do:

mac = ":".join([i.zfill(2) for i in mac.split(":")]).lower()

(The zfill method of string objects is available since Python 2.2.2.)

6. Sorting IP addresses

How to sort a list of strings that represent IP addresses? Of course, you could supply an appropriate comparison function to the sort() method of the list object, but that's very inefficient (read: slow).

It is better to first pre-process the list so it can be sorted with the efficient built-in comparison function (which simply compares strings character-by-character), and afterwards post-process the sorted list back to the normal format. That trick is applicable to a lot of sorting situations, not just IP addresses.

In the case of IP addresses, we re-format them so that each of the four octets is aligned inside a three-character field (preceded by spaces if necessary). Then all strings will be the same length and can be sorted using the fast built-in comparison function. Afterwards, we simply remove all spaces.

for i in range(len(ips)):
ips[i] = "%3s.%3s.%3s.%3s" % tuple(ips[i].split("."))
ips.sort()
for i in range(len(ips)):
ips[i] = ips[i].replace(" ", "")

7. Parsing command line options

This is a code snippet for parsing command line options (using the getopt module) in a sophisticated way. In this example, the program accepts three options (both as one-letter options and as long options) and requires at least two arguments.

import sys, getopt, os.path
me = os.path.basename(sys.argv[0])

debug = False
really = True
verbose = False

my_options = (
("d", "debug", "debug = True", "Enable debug mode."),
("n", "notreally", "really = False", "No action, display only."),
("v", "verbose", "verbose = True", "Increase verbosity.")
)

short_opts = reduce(lambda a, b: a + b[0], my_options, "")
long_opts = map(lambda x: x[1], my_options)

def usage ():
args = "[-%s] [...]" % short_opts
print >> sys.stderr, "Usage: ", me, args, "\nOptions:"
for opt in my_options:
print >> sys.stderr, "-" + opt[0], opt[3]
sys.exit(1)

try:
opts, args = getopt.getopt(sys.argv[1:], short_opts, long_opts)
except getopt.GetoptError:
usage()

for o, p in opts:
for shrt, lng, action in my_options:
if o[1:] in shrt or o[2:] == lng:
exec action
break
else:
usage()

if len(args) < 2:
usage()

8. Mixing Python and shell scripts

Sometimes it might be useful to write a script that can be used as a shell script or as a Python script at the same time. This is possible. The trick is that a sequence of four quote characters means an empty string to the shell, but in Python it starts a triple-quoted string that begins with a quote character. So you can embed shell commands within that triple-quoted string. Note that the first string in a module or script is simply stored as the doc string for that module, but other than that it is simply ignored by the Python interpreter.

The following example demonstrates that trick. It is started as a shell script (because of the #!/bin/sh line). The embedded shell commands check if Python is installed. If not, a useful error message is displayed and the script exits. Otherwise, if Python is found, the script is re-executed with it. Python ignores the triple-quoted doc string and executes the rest like a normal Python program.

If you want to have a a real doc string for your program, you will have to assign it afterwards. The script below shows how to do this, too.

#!/bin/sh

"""":
if which python >/dev/null; then
exec python "$0" "$@"
else
echo "${0##*/}: Python not found. Please install Python." >&2
exit 1
fi
"""

__doc__ = """
Demonstrate how to mix Python + shell script.
"""

import sys
print "Hello World!"
print "This is Python", sys.version
print "This is my argument vector:", sys.argv
print "This is my doc string:", __doc__
sys.exit (0)

Top 9 Free Hacking Tutorials

1. Hacking Tutorials for Beginners - By BreakTheSecurity.com 
The tutorial contains useful posts to help beginners understand the ethics of hacking. It also provides security tips on avoiding adware, windows firewall, online shopping, spyware prevention and so on.

2. How to learn Ethical hacking - By Astalavista.com 
The site provides useful information on your devices, websites and assets. The site shows whether or not you’re hack proof.

3. Backtrack Penetration Testing Tutorial 
Backtrack Penetration Testing Tutorial is probably the best penetration testing distribution that provides some penetration testing programs that are used in this Backtrack Penetration Testing Tutorial. 

4. Introduction to Penetration Testing 
The current tutorial teaches you penetration testing, different types of vulnerabilities, security research, payloads, and so on. A useful resource for beginners! 

5. Information Gathering with Nmap 
The first tutorial to give you a basic walkthrough of a penetration testing! It focuses on information gathering, finding live hosts on the network, port scanning and versions of software that is running on those ports.

6. Simple How To Articles By Open Web Application Security 
The tutorial contains numerous how to articles such as how to encrypt a properties file, how to meet verification reporting requirements, how to modify proxied conversations, how to perform a security architecture review at Level 1, how to perform a security architecture review at Level 2 and how to specify verification requirements in contracts, and so on.

7. The Six Dumbest Ideas in Computer Security 
The tutorial describes what it considers six dumbest ideas in computer security starting from default permit, Enumerating Badness, Penetrate and Patch, Hacking is Cool, Educating Users, Action is Better Than Inaction , and so on. 

8. Secure Design Principles 
Understanding the basic principles puts you in a better position to execute particular practices where needed in your own projects. The principle of least privilege specifies that a user or computer program must be granted the least amount of privileges required to achieve a task. The tutorial describes all these principles for the users. 

9. 10 steps to secure software The tutorial features some principles for developing secure software recommended by author and security analyst. 

10 Online Coding Contests For Programmers!

Topcoder

TopCoder is indeed the world’s largest competitive software development community where developers from all over the world take part in. The community offers timed programming competitions in various categories like algorithms, testing, design, assembly, SRM, marathon and many others. The competition is sponsored by big names like Microsoft and the NSA and they offer cash prizes for the winners. Solutions can be submitted in Java, C++, C#, or VB.

CodeChef

CodeChef is a non-commercial organization operated by DirectI, an Indian software company based in Mumbai, India. It is a global programming community which hosts online contests, trainings and events for programmers from around the world.

Sphere online judge (SPOJ)

Sphere online judge is one of the earliest competitions, with support for more than 40 programming languages and compilers. The SPOJ platform has been created around an online judge system, which serves for the automatic assessment of user-submitted programs.

CodingBat

CodingBat is a live coding site, which offers problems to build coding skills in Java and Python. The problems here provide instant feedback which also works as a brilliant platform for the coders to practice and grasp the basics of programming.

Google Code Jam

Google Code Jam is an annual programming competition sponsored and supported by Google itself. Here, professional and student programmers provided complex algorithmic challenges to solve using the programming language of their choice in a limited amount of time.

Dream in Code

Dream In Code (DIC) is a online community for programmers and web developers. Members have free access to thousands of programming tutorials, code snippets, forum topics and more.

Codeforces

Codeforces is an online programming platform where you can practice variety of problems and submit competitive ones and compete on problems submitted by other users.

UVa Online Judge

This online coding site is maintained by University of Valladolid, Spain. Here you can find problems from past programming contests such as the ACM International Programming Contest and also one can submit their own source codes in a variety of languages.

Python Challenge

Focused on the Python programming language, Python Challenge is a series of programming challenges. Although any language could be used to solve the puzzles, many of the clues are easier to decipher if you’re working in Python.

Facebook Puzzles

As the name suggests this small set of programming problems is conducted by Facebook to evaluate potential hires. One can submit their solutions in a variety of languages like C++, C, Haskell, Java, Perl, PHP, Python, or Ruby.

ACM-ICPC

ACM – ICPC is one of the world’s largest programming contest conducted annually. The contest is basically sponsored by IBM for teams of students. The contests majorly involves algorithmic programming problems. Regional contests lead to World level Finals. Supports only two languages i.e. C/C++ and Java.

Some other platforms worth a mention including IEEEXtremehackers.orgTimus Online JudgeDWITE

7 Websites That Offer Free Online Linux Courses

1. Building Dynamic Websites at Harvard University

This online OCW course covers the knowledge needed to build a website. Consisting of various video lectures, this tutorial instructs individuals on how to build a website using Linux, as well as various other frameworks. Students learn how to set up domains, design databases, program with Java and build web pages using CSS (cascading style sheets) and XHTML (extensible hypertext markup language). There are sample projects in PDF format.

3. Computational Physics at Universiti Teknologi Malaysia

The focus of this course is to teach students how to do physics calculations using a computer as a calculator. They also learn Java programming in a Linux environment. Through external website links, this online course teaches students about using algorithms and working within the Linux operating system.

4. The Embedded Linux Quick Start Guide through YouTube

The free tutorial, which lasts less than an hour, provides learners with an introduction to the Linux environment. Narrated by Chris Simmonds at a 2010 Embedded Linux Conference Europe, this video is the first in a 3-part series on Linux. Students learn the four basic elements of Linux: toolchain, boot loader, kernel and user space.

5.Introduction to Linux at the University of South Carolina

A simple introductory tutorial of slides in PDF format, this course material shares basic information about what Linux is, the different versions - or distributions - available, and how to use it. Files, folders, pages, commands and writing script are some of the topics and tools this course covers.

6. The Linux Effect: 20th Anniversary at The Open University

Offered as an online podcast training, the Linux Effect offers information on the Linux operating system and how it's advanced through the years. Students learn the origin of Linux, how Linux is used in our daily lives and the connection between Linux and cloud computing. Students need a PDF viewer, such as Adobe Reader, to complete this course.

7. LPI Exam 201 Prep: Linux Kernel at IBM

In this free tutorial series, users prepare for the Linux Professional Institute Intermediate Level Administration (LPIC-2) Exam 201. The first tutorial guides students through the components, compiling, patching and customizing of a Linux kernel. Other topics in the series include system maintenance, web services, hardware and troubleshooting.

Top 20 Linux Tips To Make Your Windows To Linux Transition Easy!

1. What's a distribution?
Linux isn't offered as a single package such as Windows or MacOS. There are numerous variations on the basic OS introduced by different people for different reasons. While some can be hardware specific, others are tailored for specific usage, such as general desktops, webservers or multimedia workstations. Each of these different bundles are known as a 'distribution'.

2. How they become different?
The most evident difference between distributions is the number and type of pre-installed applications. 

3. Which distribution is good for you?
Ubuntu is so far the most popular distro meant for beginners, but majority of big names including OpenSuse, Fedora and so on – also have their own strengths. Mandriva might be a preferred version if you are syncing with Windows Mobile.

4. Get an understanding of desktop environments
The well-known windowed desktop of any OS is merely a layer on top of the core code which makes it easier for the user to interact with his/her PC. As Linux is extremely modular, this desktop environment can be easily removed from the core OS, and you can opt for one from numerous available options.

5. Which is best for Windows' switchers?
Gnome and KDE are closer to Vista or OS X, and normally people find it easier to pick up Gnome. Others like XFCE or LXDE are meant for running low end systems quickly.

6. Live CDs
Once you've taken a decision about a particular distribution, you are required to download the installation file which is typically a .iso file) and burn it to CD or DVD. With several distributions, booting from that disc will provide you with an option to test a 'live version', which allows you to boot into a Linux desktop without making alteration in your current hard drive.

7. Look elsewhere
Always remember that the Live version has its own limitations. Majority of distributions are meant for maximum hardware compatibility. For example, your PC can roughly handle better desktop effects.

8. Putting Linux on your PC
It can be difficult to install an OS if you have not done it earlier. However, all well known distros have exceptional documentation for first timers.

9. Keep the Windows open
The simplest way to install a distro would be to clean your PC clean and start over. You may even want to keep using Windows to run various applications such as games that don't function well in Linux.

10. Getting to grips with the file system
It comes naturally to most users to navigate to the C: drive in Windows. And, displaying a file browser in Linux can also come as a shock as they might come across various vague files and folders with names such as "etc" and "opt" whose contents look the same. If you lack experience, you may find it tough and illogical. Get habitual gradually!

11. Stay in your Home
All crucial files, such as documents, music and video, are stored in a different partition known as the Home partition. Each username created by you will have its own password sheltered area within Home.

12. Understand the Root
Just like Windows, two types of user accounts - administrator and normal exist in Linux. The administrator is known as 'Root', while system files are protected for ordinary users to edit. If you ever fail to edit a document and save it, or copy a folder, it's most likely locked for Root access as well.

13. Become a superuser
Anyone can provisionally act as the Superuser, which allows them to perform various operations limited to root. This can be done by opening a terminal and initiating a command with the prefix "sudo" or "su", depending on your distribution. 

14. Don't be afraid of the terminal
Terminal is one word that frightens the non-geeks, but a terminal is just a program that enables you to enter commands as text and not as mouse clicks.

15. Installing new programs
Dissimilar to Windows or OS X, majority of Linux distributions are equipped with a pre-installed graphics editor, office suite, messenger software and, and it’s easier to get a new program.

In main menu, you have a "package manager", typically Synaptic or Yum, which displays all the files installed on your PC.

16. Avoid updates at times
You are not required to update programs when the update manager cautions you. You’re always in control with Linux.

17. Fix display problems
If you're getting funny screen artefacts, such as text and cursors disappearing in OpenOffice or your mail client, it's a wise option to go to the manufacturers' website and see whether recent Linux drivers are available.

18. Manually installing drivers
Unlike Windows, you don’t need to install a device driver. Majority of hardware is taken care of right from the kernel. It can be a daunting task to manually install drivers in Linux, though, even though the process is well documented. 

19. Recovery mode
Majority of distributions have a recovery mode available at the first menu screen to assist the users put problems related with an operating system in order that decline to boot. Ubuntu is a better choice in this regard, as it provides you with an option to reset the graphics system, often causing various problems.

20. Maintain notes
The Internet has really impressive Linux walkthroughs that can provide you with superpowers just by copying and pasting a few lines into a terminal. It's a wise option to track changes you've made in case you need to come back and fix it later.

6 Free Websites To Learn Android Developement

1. Android Tutorials By Core Servlets: As mentioned on the website, it “provides a series of tutorials on Android programming". Each section includes exercises and exercise solutions hence this can also be viewed as a self-paced Android training course.” Although the available tutorials are based on the assumption that you already have a moderate Java experience. Although for those who are not acquainted with Java, the website also carries Java tutorials.

2. HelloAndroid: The tutorial section of the website carries some high quality and interesting tutorials. One can also check out the tutorials forum if to discuss the problems or to make request. 

3. Java Code Geeks: As the website reads, “JCGs (Java Code Geeks) is an independent online community focused on creating the ultimate Java to Java developers resource center; targeted at the technical architect, technical team lead (senior developer), project manager and junior developers alike. JCGs serve the Java, SOA, Agile and Telecom communities with daily news written by domain experts, articles, tutorials, reviews, announcements, code snippets and open source projects.”

4. Learn Android: The website was put together by some Android developer learners. As the about page reads, “We’re just developers who are interested in learning Android. We thought maybe if we put up articles from our experience that we might learn together.” It carries tutorial for developers from beginner to intermediate levels.

5. Official Developer Tutorial: As the name suggests, it is basically the official Android page created by the android community and open source developers. This getting started tutorial is designed for beginner developers.

6. Script Tutorials: Script Tutorials is one of the web development communities, which provide quality articles and tutorials that web development technologies including HTML5, CSS3, Javascript and jQuery, PHP etc. 

12 Free Android SDK Tutorials

1. Creating Android Apps Using AIDE

The most common problem faced by people new to Android is setting up the Android environment. Still more difficult is the process of offline Android installation. For large applications, you still require setting up the Android environment on a PC along with the Eclipse IDE, but for smaller and simple applications you can use AIDE, which runs directly on your Android phone or tablet and allows you to compile your Android app without leaving your device. Also, AIDE is fully compatible with Eclipse. Click here for the tutorial..

2. Optimizing Battery Life

For your app to be a good citizen, it should seek to limit its impact on the battery life of its host device. After this class you will be able to build apps that monitor modify their functionality and behavior based on the state of the host device.

By taking steps such as disabling background service updates when you lose connectivity, or reducing the rate of such updates when the battery level is low, you can ensure that the impact of your app on battery life is minimized, without compromising the user experience. Click here for the tutorial..

3. Improving Layout Performance

Layouts are a key part of Android applications that directly affect the user experience. If implemented poorly, your layout can lead to a memory hungry application with slow UIs. The Android SDK includes tools to help you identify problems in your layout performance, which when combined the lessons here, you will be able to implement smooth scrolling interfaces with a minimum memory footprint. 

Click here for the tutorial..

4. Transferring Data Without Draining The Battery

Here you will learn to minimize the battery life impact of downloads and network connections, particularly in relation to the wireless radio.

This class demonstrates the best practices for scheduling and executing downloads using techniques such as caching, polling, and prefetching. You will learn how the power-use profile of the wireless radio can affect your choices on when, what, and how to transfer data in order to minimize impact on battery life. Click here for the tutorial..

5. Connecting Devices Wirelessly

Besides enabling communication with the cloud, Android's wireless APIs also enable communication with other devices on the same local network, and even devices which are not on a network, but are physically nearby. The addition of Network Service Discovery (NSD) takes this further by allowing an application to seek out a nearby device running services with which it can communicate. Integrating this functionality into your application helps you provide a wide range of features, such as playing games with users in the same room, pulling images from a networked NSD-enabled webcam, or remotely logging into other machines on the same network. Click here for the tutorial..

6. Creating Android Hello World Applications 

Recent changes to the Android SDK tools have made it possible to quickly create Android projects using various starting templates. Learn how to create several different “Hello World” apps for the Android platform in this tutorial. Click here for the tutorial..

7. Android UI Workshop: Build An Interactive Quiz App

Get a hands on, crash course in building an effective and attractive UI for your Android app, and design an interactive quiz app along the way! Click here for the tutorial..

8. Implementing Drag-And-Drop Functionality

The drag-and-drop facility on the Android SDK is an interaction feature many apps can benefit from and getting started is straightforward. In this tutorial, we will implement a basic drag-and-drop operation, making clear what additional options you have for your own projects! Click here for the tutorial..

9. Creating A Simple Property Animation

With Android you can include various types of animation in your apps. In this tutorial we will create a basic property animation using Android’s Object Animator and Value Animator classes. The result will be simple but the techniques involved will apply in more complex animated effects. We will create an animation in which a steering wheel turns and the background scene moves accordingly. Click here for the tutorial..

10. Android Animation Basics

Animations can be applied as Layout animations to ViewGroups, to be triggered when the ViewGroup is created/displayed or applied to any view and be triggered by us any time.

The animations can be definex in XMl or by code. Defining in xml is mutch more clear, but you can not set animation parameters dinamically. Click here for the tutorial..

11. Android Apps Porting To Blackberry Playbook

Android apps porting to BlackBerry PlayBook. It's easy. Click here for the tutorial..

12. Android Sliding Menu

In recent Android applications, the menu which slides in from the left of the screen has become increasingly popular. this article show one how to create a similar menu in a simple way using the TranslateAnimation class.

Click here for the tutorial.. 

10 Must-Read Books On NoSQL Architecture

1.Seven Databases in Seven Weeks

Data is getting bigger and more complex by the day, and so are the choices in handling that data. As a modern application developer you need to understand the emerging field of data management, both RDBMS and NoSQL. Seven Databases in Seven Weeks takes you on a tour of some of the hottest open source databases today. In the tradition of Bruce A. Tate's Seven Languages in Seven Weeks, this book goes beyond your basic tutorial to explore the essential concepts at the core each technology.

2.Professional NoSQL

This comprehensive hands-on guide presents fundamental concepts and practical solutions for getting you ready to use NoSQL databases. Expert author Shashank Tiwari begins with a helpful introduction on the subject of NoSQL, explains its characteristics and typical uses, and looks at where it fits in the application stack. 

3.MongoDB in Action

MongoDB in Action is a comprehensive guide to MongoDB for application developers. The book begins by explaining what makes MongoDB unique and describing its ideal use cases. A series of tutorials designed for MongoDB mastery then leads into detailed examples for leveraging MongoDB in e-commerce, social networking, analytics, and other common applications.

4.NoSQL Distilled

The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational NoSQL databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program. NoSQL Distilled is a concise but thorough introduction to this rapidly emerging technology. 

5.Data Access for Highly-Scalable Solutions

To help illustrate how to build a polyglot solution, this guide presents a case study of a fictitious company faced with building a highly scalable web application capable of supporting many thousands of concurrent users.

6.Getting Started with NoSQL

Getting Started with NoSQL is a from-the-ground up guide that takes you from the very first steps to a real-world NoSQL application. It provides you with a step-by-step approach to design and implement a NoSQL application that will help you make clear decisions on database choices and database model choices. The book is suited for a developer, an architect, as well as a CTO.

7.An Introduction to Database Systems

An Introduction to Database Systems provides a comprehensive introduction to the now very large field of database systems by providing a solid grounding in the foundations of database technology while shedding some light on how the field is likely to develop in the future. 

8.Making Sense of NoSQL

Making Sense of NoSQL clearly and concisely explains the concepts, features, benefits, potential, and limitations of NoSQL technologies. Using examples and use cases, illustrations, and plain, jargon-free writing, this guide shows how you can effectively assemble a NoSQL solution to replace or augment the traditional RDBMS you have now. 

9.Scaling MongoDB

Create a MongoDB cluster that will grow to meet the needs of your application. With this short and concise book, you'll get guidelines for setting up and using clusters to store a large volume of data, and learn how to access the data efficiently. In the process, you'll understand how to make your application work with a distributed database system. 

10.The Definitive Guide to MongoDB: The NOSQL Database for Cloud and Desktop Computing 

MongoDB, a cross-platform NoSQL database, is the fastest-growing new database in the world. MongoDB provides a rich document-oriented structure with dynamic queries that you'll recognize from RDBMS offerings such as MySQL. In other words, this is a book about a NoSQL database that does not require the SQL crowd to re-learn how the database world works.

10 Fun Things To Try Out On Linux!

1. Create your own rocket with OpenRocket 
Click here to visit

2. Create and edit your own movies using these Linux softwares:
Openshot: Click here to visit
Kdenlive: Click here to visit
LiVES: Click here to visit
Toon Loop: Click here to visit

3. Inventorise your collection in a database. To do this first run a database server with MySQL then connect it to Calligra to get a visual overview of this databases.
MySQL: Click here to visit
Calligra: Click here to visit

4. Have a look at the stars with Celestia, an astronomy and space simulation software.
Celestia: Click here to visit

5. Create PDFs directly from libreoffice. 

6. Create your own cloud server from Own Cloud. Click here to visit

7. Try you hands on DJing or remix your music with Mixxx. Click here to visit

8. Create a robot using Linux and an embedded board. Click here to visit

9. Organize, edit and share your photographs on the social networking sites with any of these softwares:
F-Spot: Click here to visit

Shotwell: Click here to visit
digiKam: Click here to visit
Fotoxx: Click here to visit

10. Create 3D models and renderings for movies, games or anything with Blender.
Click here to visit 

10 Advanced Linux Command Line Tools

10: watch
watch is an amazing program that implements a program periodically and outputs the contents on a full screen. On placing the command inside quotes, you can even run more than on commands:
watch -n 1 'ls -la ; echo ; vmstat ; echo ; df'

This command implements a file listing, outputs memory statistics and disk space, all differentiated by empty lines and duplicates it every second. 

9: curl
Majority of (PHP) developers must have used the cURL php extension, but this tool is also available on your command line. Rather than writing an additional php-program and doing some ‘curly-things’, you can use the command line tool. All needed options are available. Just release “man curl” and identify all the possibilities.

8: logsave
logsave is an effective tool that gets hold of the output of a program and transmits it to a log-file. It’s somewhat like what “tee” does, by adding a begin time stamp and an end time stamp:

jthijssen@guybrush$ logsave -a output.log echo "hello world"
hello world
jthijssen@guybrush$ cat output.log
Log of echo Hello world
Wed Nov 24 16:51:24 2010
Hello world
Wed Nov 24 16:51:24 2010
---------------
The -a parameter will allow you add on to the log-file.

7: lsof
lsof represents “list open files” and displays all the files that your system has opened. It’s quite helpful to decipher which processes use a specific file, or to display all the files for a single process:

lsof output
Sample output of "lsof" for a apache httpd process

6: strace
Strace is a favourite of many. It spots all system calls made by a program makes to the linux kernel. This means it allows you to actually “see” what a program opens, closes, reads, write, access files but certainly, there are several more calls that you can spot. It’s like running a program without its cover.

strace -ff -e trace=open /usr/sbin/apache2

This will strace the program “apache2″ and outputs all the open-calls. Another used version:
strace -ff -p 
traces the presently running process . This means you don’t need to restart a program to strace it, but it’s possible to hook into the presently running system.

One of the key reasons to strace a process is when something is not going right. Either it’s extremely slow, doesn’t do what it is expected to or similar. It’s a marvelous piece that can save you hours and hours of debugging.

5: z* tools
Often you need to grep, diff or cat files that are packed together. Instead of unpacked files, it’s possible to threat the files as if they were unpacked already by using “zgrep” rather than grep, “zdiff” rather than diff, “zcat” rather than cat etc..
[root@guybrush /]# echo "hello world" | gzip > test.zip
[root@guybrush /]# file test.zip
test.zip: gzip compressed data, from Unix, last modified: Wed Nov 24 17:02:18 2010
[root@guybrush /]# zcat test.zip
hello world

4: od
This tool allows you to dump a file into different types of formats.
[root@guybrush /]# echo "hello world" > test.txt
[root@guybrush /]# od test.txt
0000000 062550 066154 020157 067567 066162 005144
0000014
[root@guybrush /]# od -t xa test.txt
0000000 6c6c6568 6f77206f 0a646c72
h e l l o sp w o r l d nl
0000014
[root@guybrush /]# od -t x1u1a test.txt
0000000 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a
104 101 108 108 111 32 119 111 114 108 100 10
h e l l o sp w o r l d nl
0000014

3: iconv
iconv is a striking tool when you need to convert an encoded file into another format. For example, a latin-1 dump of a MySQL database is required to be imported into UTF-8 encoded database. In this case, Iconv can auto-detect the current format.

2: nc
netcat (nc) is the tcp/ip swish army knife. It can do anything including checking service requests (such as soap-clients) to identify if they actually release the correct headers.
setup a “listening server”:
nc -l 12345
point your soap-client to send data to http://127.0.0.1:12345 and check the data that is being send from your client.

1: whiptail
On installing ubuntu, centos, debian, or basically any linux flavor around that doesn’t generate a graphical shell, you finish up in a kind of textual interface.

Examples:
It’s quite easy to generate a little display box: You just need to add the text, the height and width and also a title..
whiptail --msgbox "Hello world" 5 60 --title "Test dialog" --backtitle "A simple sample.."
Ask a user any question and it will return the status code 1 for “no” and status code 0 for “yes”.
whiptail --yesno "Are you sure you want to continue with deployment?" \
10 60 --title "New deployment" --defaultno