Knowledge7

The Linux and Mobile Solution Provider

  • About
  • Training
  • Services
  • Clients
  • In the news
  • Blog
  • Contact Us
You are here: Home / Archives for Avinash Meetoo

Top rated libraries for Android development

Software development is hard. Developing mobile apps is even harder as mobile devices have a lot of constraints (small screens, limited amount of resources, network connectivity drops, a high level of expectations from end-users, etc.)

That is why software engineers tend to depend a lot on existing libraries to simplify their lives. Here are some of the top-rated libraries on Github to make the development of Android apps easier. All of them are open-source software and are free to use. Some are easy to start with, some have a very steep learning curve, but all have the potential to allow developers to create better quality apps which are easier to maintain. Here they are:

ReactiveX/RxJava (22,523 stars on Github) & ReactiveX/RxAndroid (11,582 stars)

RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM & RxJava bindings for Android. (RxJava Website)

square/retrofit (19,823 stars)

Type-safe HTTP client for Android and Java by Square. (Website)

square/leakcanary (14,225 stars)

A memory leak detection library for Android and Java.

greenrobot/EventBus (13,807 stars)

Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality. (Website)

square/picasso (12,958 stars)

A powerful image downloading and caching library for Android. (Website)

greenrobot/greenDAO (7,127 stars)

greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases. (Website)

google/gson (8,116 stars)

A Java serialization/deserialization library that can convert Java Objects into JSON and back.

google/dagger (6,517 stars)

A fast dependency injector for Android and Java. (Website)

Before I forget, software development is not only a question of using the right libraries. It is first and foremost about identifying a real problem to solve (so, pay attention to what users really need) and choosing the best solution to solve the problem (where having a clean software architecture is paramount).

Our forthcoming training courses

  • No training courses are scheduled.

Graphical user interface

This topic is part of our Linux Network Services and Security training

The Linux Graphical interface

Typical Linux distributions use either Gnome or KDE as graphical interface. A competent Linux system administrator needs to be comfortable with both.

To be completed…

This topic is part of our Linux Network Services and Security training

Our forthcoming training courses

  • No training courses are scheduled.

Documentation in Linux

Linux is a very powerful operating system and, consequently, is sometimes complex to understand and configure properly.

Fortunately, all Linux installations give the system administrator access to a number of local document sources like manual pages, info pages and readme files for individual applications.

In addition to those resources, a lot of very relevant information can also be found online. For example,

  • The Linux Documentation Project
  • The CentOS forum and Redhat documentation
  • Freenode, which is an IRC network.

Naturally, a lot of system administrators also learn how to use Google properly in order to find the information they require out of the myriad of forums, blogs and websites that exist.

Finally, sometimes a system administrator needs to notify users of changes and disruptions of service.

Our forthcoming training courses

  • No training courses are scheduled.

Apache Web Server

The Apache HTTP (Web) Server is the most popular web server in the world. In July 2012, 61.45% of web servers on the Internet were running the Apache software (14.62% run IIS and 11.09% run nginx)

Red Hat Enterprise Linux and CentOS Linux provide Apache and it is important that a system administrator knows how to:

  • Optimise performance (section 14.1.5.3. Common Multi-Processing Module Directives)
  • Set up virtual hosts (pay attention to conf.d/welcome.conf as well as the semantics of the NameVirtualHost directive)
  • Set up SSL (mod_ssl needs to be installed as well as crypto-utils to generate self-signed certificates for testing purposes). Even though virtual hosting can be used on an SSL-enabled web server, in practice, SSL is used when the server is being used for one website (or web application) only. This is because a non self-signed SSL certificate is tied to both an IP and a FQDN.

Of course, Apache, using the appropriate modules, can run server-side scripts written in programming languages such as PHP and Python.

Our forthcoming training courses

  • No training courses are scheduled.

Data Management

This topic is part of our Linux Network Services and Security training

To be completed…

This topic is part of our Linux Network Services and Security training

Our forthcoming training courses

  • No training courses are scheduled.

Package installation from source

Sometimes we have to install open source software which are not part of official repositories and which cannot be downloaded in compiled form.

When this happens, the best bet is to install from source:

  • Download the source code of the open source software
  • Unpack the source code
  • ./configure
  • make
  • make install (as root)

./configure is a script which checks whether all dependencies that the software has are present (e.g. other programs, libraries, etc.) In case ./configure complains and stops, the appropriate remedial action must be taken before running ./configure again.

When ./configure finishes, the next step is to run the make command which builds the software from its source code. Naturally, this implies that the computer must have a fully functional compiler installed.

Work to do

Easy. Install Dr Geo 1.1.0, an interactive geometry software, written in C++. This version of DrGeo works well on CentOS Linux 5 and 6.

If you are running, CentOS Linux 7 and later, install the latest version of FreeCiv instead.

Our forthcoming training courses

  • No training courses are scheduled.

Automation

This topic is part of our Linux System Administration training

We will now learn how to use cron to automatically execute a set of commands at a specific date and time.

This topic is part of our Linux System Administration training

Our forthcoming training courses

  • No training courses are scheduled.

File Permissions

This topic is part of our Linux System Administration training

20160601-linux-file-permissions

File permissions and ownership

The sole reason for having multiple users is to be able to enforce access control i.e. allowing each user to only a subset of the files which exist on the system. A Linux system administrator should be able to:

  • Examine the permissions of an existing file
  • Changing permissions
  • Understand special permissions (e.g. suid, sticky bit)
  • Use extended file attributes (e.g. immutable)
  • Understand umask
  • Changing the owner and group of a file
  • Use Access Control Lists (ACLs) (sparingly…)
  • etc.

When allowing multiple users to share the same files, it is sometimes useful to be able to create either hard or symbolic links. This is important e.g. when trying to save space or to simplify paths. A Linux system administrator should be able to:

  • Create hard links
  • Create symbolic links
  • Identify broken symbolic links
  • Understand the importance of links e.g. in the lib directory
This topic is part of our Linux System Administration training

Our forthcoming training courses

  • No training courses are scheduled.

File management

This topic is part of our Linux System Administration training

20160601-file-management

File Management

When using an operating system, it is essential that File and Directory Management be properly done. This includes:

  • Listing directories
  • Copying, moving, and deleting files
  • Creating and removing directories
  • Using wildcards
  • Touching files
  • Finding files
  • Identifying files
  • Compressing files
  • Archiving files

The Filesystem Hierarchy Standard

Most Linux distributions (including Red Hat Enterprise Linux and, consequently, CentOS Linux) adhere to the Filesystem Hierarchy Standard.

A Linux system administrator should understand the rationale behind this standard to be able to:

  • Understand the role of the various directories in the filesystem
  • Find specific files quickly
  • Know where to place newly created files
This topic is part of our Linux System Administration training

Our forthcoming training courses

  • No training courses are scheduled.

Introduction to Linux

This topic is part of our Linux System Administration training

Here are a few online resources which are useful for understanding what Linux, Unix and Open Source Software really are.

  • History of Unix, Linux, and Open Source / Free Software. It is easy to think that Linux is the same thing as Unix but it’s not.
  • What is a Linux distribution?. Linux is a kernel. To be useful, it needs to be bundled with hundreds of system and user applications. The bundle is then called a distribution and myriads exist e.g. RedHat, CentOS, Debian and Ubuntu. Why?
  • Open Source Definition by the Open Source Initiative. It is equally easy to think that Open Source Software should always be free (for example). But things are much subtler than that. For example, Red Hat Linux needs to be bought but is still open source…
  • Finally, The Cathedral and the Bazaar by Eric Raymond. How can software which is developed by hundreds of developers distributed over the whole planet and who are doing it for free can possibly create Linux, an operating system which is arguably better than most commercial operating systems?

Using Linux

Linux is a powerful operating system which provides both text and graphical interfaces. A system administrator must be comfortable with both environments.

The Linux command line

Linux system administrators need to master the Linux command line as this is, arguably, the most efficient and powerful way to interact with the operating system.

In order to know how to use the command line correctly, we will learn a number of important aspects:

  • Shells and the Bash shell in particular
  • Commands and sequences of commands
  • Environment variables
  • Managing the command history
  • The system path
  • Manual and info pages

The Linux Graphical interface

Typical Linux distributions use either Gnome or KDE as graphical interface. A competent Linux system administrator needs to be comfortable with both.

This topic is part of our Linux System Administration training

Our forthcoming training courses

  • No training courses are scheduled.
Next Page »

Looking for something?

Want to know more?

Get our newsletter

Discover the latest news, tips and tricks on Linux, the Web and Mobile technologies every week for FREE

This work is licensed by Knowledge7 under an Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license.