Monday, November 14, 2011

org.eclipse.swt.SWTException: Invalid thread access

Recently, I've faced with SWTException error when was trying to insert a new TableItem into the SWT Table from another thread. Reading java doc about TableItem class I found out, that with creation a new instance of this class, SWTException may occurred:

Throws SWTException: if not called from the thread that created the parent

It means that I can't create a TableItem instance in the thread which is distinct from that one, in which Table was created.

I wrote a simple program to reproduce my problem: it's a window with one button and with a table which has a single column. When pressing the button a new thread is started. In this thread there's a cycle in which 5 table items are created with timed out = 1 sec.

Here's a code snippet, which represents a first attempt:

Saturday, November 12, 2011

Monitor configuration via xrandr

xrandr - primitive command line interface to RandR extension.

$ xrandr

Output:
=======================================================================
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 8192 x 8192
VGA-1 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024 60.0*+ 75.0
   1280x960 60.0
   1152x864 75.0
   1024x768 75.1 70.1 60.0
   832x624 74.6
   800x600 72.2 75.0 60.3 56.2
   640x480 72.8 75.0 66.7 60.0
   720x400 70.1
HDMI-1 disconnected (normal left inverted right x axis y axis)

=======================================================================

'+' - preferred mode;
'*' - current mode.

To change monitor resolution to 1280x1024 and refresh rate from 60 to 75 enter such command:

$ su -c "xrandr --output DVI-I-1 --mode 1280x1024 --rate 75"

xrandr wiki page: https://wiki.archlinux.org/index.php/Xrandr

Friday, November 11, 2011

Install Ant and Maven

Install Ant

Download ant from here: http://ant.apache.org/bindownload.cgi

$ tar -zxvf apache-ant-x.x.x-bin.tar.gz
$ su -c "mv apache-ant-x.x.x /opt/ant-x.x.x"


Open .bash_profile and add:

export ANT_HOME=/opt/ant-x.x.x
PATH=$PATH:$ANT_HOME/bin



Install Maven

Download maven from here: http://maven.apache.org/download.html

$ tar -zxvf apache-maven-x.x.x-bin.tar.gz
$ su -c "mv apache-maven-x.x.x /opt/maven-x.x.x"


Open .bash_profile and add:

export MAVEN_HOME=/opt/maven-x.x.x
PATH=$PATH:$MAVEN_HOME/bin


$ source ~/.bash_profile

Install Sun JDK6 on Fedora

Download Java JDK6 from here: http://www.oracle.com/technetwork/java/javase/downloads/index.html

Example: jdk-6u29-linux-i586-rpm.bin

1. $ chmod +x jdk-6u29-linux-i586-rpm.bin

2. $ su -c "sh jdk-6u29-linux-i586-rpm.bin"

3.1. $ su -c "alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_29/jre/bin/java 20000"

3.2. $ su -c "alternatives --install /usr/bin/javaws javaws /usr/java/jre1.6.0_29/bin/javaws 20000"

4. Check current java, javac versions:

$ java -version
$ javac -version


5. Now you can swap between OpenJDK and Sun/Oracle JDK versions

$ su -c "alternatives --config java"

6. $ nano ~/.bash_profile

Paste into this file the following strings:

export JAVA_HOME=/usr/java/jdk1.6.0_29
PATH=$PATH:$JAVA_HOME/bin


7. $ source ~/.bash_profile

Fedora 16/17: Installation notes (Part 3)

Enable 'Remove' function in Nautilus

By default you can't remove any file or folder by clicking 'Delete' button in Nautilus. To activate this function press Alt+F2 and enter 'dconf-editor'. In opened editor:

org > gnome > nautilus > preferences (enable_delete = true)


Now you can delete content from Nautilus pressing Ctrl+Delete.


Install Thunderbird

$ su -c "yum install thunderbird"


Install VirtualBox

0. $ su -

1. # cd /etc/yum.repos.d/

2. # wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo

3. # yum update

4. yum install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms

5. # yum install VirtualBox-4.*

6. # usermod -a -G vboxusers your_user_name

Fedora 16/17: Installation notes (Part 2)

Install rpmFusion repository

$ su -
# yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

# nano /etc/yum.repos.d/rpmfusion-nonfree.repo

gpgcheck=0


Install GParted (good application for formating and partition)

$ su -c "yum install gparted gpart"


Install djviewer

$ su -c "yum install djview4"

Fedora 16/17: Installation notes (Part 1)

Install Chrome last stable version

$ sudo nano /etc/yum.repos.d/google.repo

[google-chrome]
name=google-chrome - 64-bit
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

$ sudo yum install google-chrome-stable


Adding "Open Terminal" to Gnome Context Menu

$ su -c "yum install nautilus-open-terminal"

Fedora 16: BIOS Boot Partition problem

The problem that I encountered during Fedora 16 installation was that after rebooting, my computer was hovered on the state of initializing the hardware. I even couldn't enter the BIOS. I turned off the computer and disconnected  the hard disk on which new Fedora had been installed.

Now I was able to manipulate the BIOS settings. I set my flash with Fedora 16 as a first bootable device and started up the installation process again. I connected my hard disk and tried to re-install the system again. When I was creating new partitions I noticed the new one I had never seen before in previous versions of Fedora. It was BIOS Boot Partition.


Then I found out that my problem was that I hadn't created this partition which was required only 2 Mb of physical memory! I allocated the required memory for it and after installation, Fedora was successfully loaded.

Wednesday, November 2, 2011

Graph's visualization in Linux

A few days ago my friend show me a very simple and convenient program to visualize graphs - "graphviz". It's free and can be used in Linux, Solaris, Windows and Mac. For drawing graphs "graphviz" uses DOT language.

Let's create a simple graph. Open text editor and paste this code:

digraph SimpleGraph {
    rankdir=LR;
    node [shape=circle];
    ranksep=0.5;
    node [style=dashed];
    0 -> 1 [label="A"];
    node [style=solid];
    0 -> 2 [label="B"];
    1 -> 3 [label="C"];
    2 -> 1 [label="D", style=dotted];
    2 -> 3 [label="E", style=dotted];
    2 -> 4 [label="F"];
    3 -> 5 [label="G"];
    4 -> 5 [label="H"];
}