Saturday, November 23, 2013

Fixing : The Eclipse executable launcher was unable to locate its companion shared library

After upgrading from Ubuntu 12.10 to 13.04, I had this problem.

As it is usual case with eclipse "eclipse.ini" was the point of issue. 

This file can be found in /etc/eclipse.ini . 

Here are the contents my eclipse.ini file:

####################################################################
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.dist.jar

--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.100.dist

-showsplash
org.eclipse.platform

--launcher.XXMaxPermSize
256m

--launcher.defaultAction
openFile

-vmargs
-Xms1024m
-Xmx1600m
-XX:MaxPermSize=1024m
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/usr/share/eclipse/dropins 

####################################################################

So first test was to check existance of org.eclipse.equinox.launcher_1.2.0.dist.jar

and org.eclipse.equinox.launcher.gtk.linux.x86_1.1.100.dist on system. 

Upgrade replaced these files with newer versions. 
  
So fixing this issue was as simple as changing names of these files to match newer version. 

New contents my eclipse.ini file

####################################################################  

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.dist.jar

--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.dist

-showsplash
org.eclipse.platform

--launcher.XXMaxPermSize
256m

--launcher.defaultAction
openFile

-vmargs
-Xms1024m
-Xmx1600m
-XX:MaxPermSize=1024m
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/usr/share/eclipse/dropins 

######################################################################  

Wednesday, November 6, 2013

Configure apt-get to work from behind the proxy server

I have divided this tutorial in three parts.

In the first part we enable proxy authentication for all bash commands.
In the second part of this tutorial, I will describe the procedure for enabling proxy authentication for aptitude package manager or famously known as APT. 
The third part deals with bit of security and gives more insight of the chmod command. 

Part I: Edit bash.bashrc.

bash.bashrc is configuration file for the bash shell. There are lot of ways in which you can customize shell experience using this file. For editing bash.bashrc you need to be root. Run following command to open this file with root privileges

$ gksudo gedit
You will be asked to authenticate, enter password for the admin account. 
Now from gedit open /etc/bash.bashrc and add following lines at the end of this file

Export http_proxy = http://username:password@proxyserver:port/
Export https_proxy = http://username:password@proxyserver:port/
Export ftp_proxy = http://username:password@proxyserver:port/

where <username> is your username and <password> is your password. 
For example:

Export http_proxy = http://sumit:password@10.10.1.1:3128/
Export https_proxy = http://sumit:password@10.10.1.1:3128/
Export ftp_proxy = http://sumit:password@10.10.1.1:3128/
Save this file. 

Part II: Edit apt.conf 

As you might have guessed, apt.conf is configuration file for APT. Once again run gedit in root mode
using 

$ gksudo gedit

From /etc/apt/ open apt.conf file. 
[Depending on your Linux distribution this file may be absent in that directory, in which case you should create new file and save it as apt.conf in /etc/apt/ ].

Add following details to this file:

Acquire::http::proxy "http://username:password@proxyserver:port/";
Acquire::https::proxy "https://username:password@proxyserver:port/";
Acquire::socks::proxy "socks://username:password@proxyserver:port/";
This should get APT working on your system. But as you may have already noticed that these two files are stored as a plain text and anyone can open and read these files. To prevent this threat you can use chmod which stands for 'change mode'.

Friday, November 1, 2013

Repack packages [Generate installation files from installed applications]: Ubuntu [Debian]

There is a way to repack installed packages from Ubuntu, so that the same package can be used to install application on other systems as well. Packages are nothing but installation files. Usually we end up downloading these packages for every new installation, in this post we will discuss how to avoid that.  

1) First of all we need to install fakeroot.


"Fakeroot" simulates the root environment for execution of commands which require root privileges otherwise. 

2) Install dpkg. dpkg is a package manager for Debian.


3) Now next step is to repack the package.
This script requires 'package name' of application/library to repack. Usually name of packages and applications/libraries are same, but this is not true in every case. For example consider opencv which is collection of many libraries.

Package name can be confirmed using following command.


Having done that use following command to repack.



Entire Backup

The procedure explained above is good only if you need backup of select applications. To repack entire system you need better strategy since typing name of every single package is not that good idea. 

So to begin with, we first of all generate a list of installed packages and store that output to a text file.


The output file contains a list of packages. Every row begins with the name of package and the status of that package. We need to remove all the packages which are marked as deinstall from the list. For this you can use simple search and replace. 

Next step is to reformat this output file so that is can be as a bash script.  Delete all the occurrences of word "install" and remove all new-line characters from the file. Add "sudo fakeroot dpkg-repack " at the beginning of file and save this file as backup.sh . Change file permissions to make it executable and execute backup.sh from terminal. This will generate Debian packages for all the listed package names. 
The script should look like this,



Sunday, October 27, 2013

Backup your router settings: D-Link [ DSL-2730U] and Restore

BACKUP

1) Log In: [192.168.1.1] [DEFAULTS - username: admin , password: admin]

2) Click on the 'Management' tab:

3) Click on the backup settings and save this file. This config.xml file is snapshot of your current settings. You can use this snapshot to restore settings of your router.
Along with this config.xml file you should store your current admin password[192.168.1.1], current name of the wifi network and password for this wifi network.

To capture all this information you can use following template for naming backup-file.
<Name_of_wifi>_<password for admin>_<password for wifi>.xml
e.g. TC-45G_admin_default

So when you restore settings of router, you know that you should connect to network "TC-45G" using password as "default" and for configuration you should use [192.168.1.1] "admin" as a password.

I will suggest you to disable mac address filtering before taking backup.


    Disable Mac Address filtering:      1) Click on the advanced tab.

 
     2) Click on Mac Filtering, and disable Access Control Mode.

RESTORE 

1) Log in to 192.168.1.1 using current password.

2) Click on management.

3) In the section system update settings-> "choose file" and select you backup file.
    Say update settings.
    This will reboot you router, and restore settings from selected snapshot. Now you can use your old      password to connect to this router.  

Saturday, October 26, 2013

Image Filtering : Opencv Interface

In the previous post we have seen how to manually define custom filters.
We made use of filter2D function with Gaussian kernel and Blur operator to demonstrate working of this function.

Opencv provides predefined functions for most common operators like blur operator, Gaussian operator, in this post we are going to discuss how to make use of this interface.


  1. Blur operator
    We have already discussed this filter in this post.
  2. Gaussian Filter
    Gaussian filter is discussed here.
  3. Median Filter
    As the name suggests median operator takes median of all the elements covered by mask, and replaces center pixel with this median.
Code:
Results:

Sunday, October 20, 2013

Bash script: Volume and Brightness [Ubuntu 12.04]

1) Brightness.sh 

Allows you to set up brightness of your monitor using terminal.

Following command is used to set brightness level.

sudo sh -c 'echo <brightness> > /sys/class/backlight/<device>/brightness'

Here <brightness> is brightness level, and takes integer values starting from 0. Higher the value, higher the brightness.


2) Volume.sh 

Allows you to mute or unmute speakers.

Mute

pactl set-sink-mute 0 1

Enable speakers

pactl set-sink-mute 0 0

Here pactl stands for 'Pulse Audio Control'

3) Startup.sh

This script will run every bash script from given directory.

I use this script for switching profiles.

For example if I store brightness.sh and volume.sh in startup_scripts directory and run startup.sh then this startup.sh will run both brightness.sh and volume.sh for me.



Monday, October 14, 2013

Image Filtering : Gaussian Filter

First things first, what is Gaussian filter?

Gaussian filter is a kernel based on the values obtained by plotting Gaussian function.

In my previous post we have seen how to use filter2D function provided by opencv to perform correlation on the images with given kernel.

We also discussed an example of blur operator. This operator assigns equal weight to every element in the neighborhood. But it is quite natural to think that the pixels which are close to target pixel in image should have more weight assigned to them. This is exactly what we try to achieve using Gaussian filter.

Gaussian function is given by,

 The plot of this function looks like this,

Values of Gaussian function have been used to construct this kernel.
As you can see the center pixel has maximum weight of 0.159 and weight values decreases as the distance from center pixel increases. All the pixels which are at same distance from the center pixel have same weight value, are also known as contours.

Following image is formed using Gaussian kernel.

Lets compare results of blur operator in the previous post and


Original Image


Blur Operator


Gaussian Smoothing
As it is evident from the result that features of image are well preserved in case of Gaussian kernel than that of the blur operator.

Sample code for Gaussian Blurring: