Monday, December 13, 2010

Ubuntu 10.10: static and noise sound with HDA Intel SigmaTel STAC9221 A1

I have just installed Ubuntu 10.04 and I found that my sound card was not working. There was a lot of breaks, noise and freezes when I was playing any audio file.

This is what I have: aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: STAC92xx Analog [STAC92xx Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: STAC92xx Digital [STAC92xx Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.23.
cat /proc/asound/card0/codec#* | grep Codec
Codec: SigmaTel STAC9221 A1

I overcame this problem simply by adding the following line:options snd-hda-intel model=ref into the file /etc/modprobe.d/alsa-base.conf:sudo gedit /etc/modprobe.d/alsa-base.conf

Monday, June 21, 2010

"Remote desktop session has ended" error when connecting to a guest on VirtualBox

I had a problem connecting from Windows using build-in Remote Desktop Connection program to a a guest on a headless VirtualBox server. I found that the reason wast that I did not checked "Allow me to save credentials" option in a Remote Desktop Connection.
With this option, the client will ask for username/password before connecting to the VirtualBox. Thus it seems, that VirtualBox requires user credentials at the very beginning of the session. Without this option, connections will fail.

I was using VirtualBox 3.2.4 in a headless mode running on a CentOS 5.5 x86_64.

Saturday, May 29, 2010

Example of SSH tunneling

ssh -N -L 5904: username@remoteserverThe above command forwards everything on localhost port 5904 to the port 5901 on remoteserver. This is what I use to connect to a VNC service on port 5901 on a remoteserver at my job from my home computer. Thus, at home, after establishing the above tunnel I can use a vncviewer as follows:vncviewer :4

Friday, May 14, 2010

VirtualBox: start and stop a guest in a headless mode

Lets assume that we have a guest VirtualBox machine called "xp". To start it in a headless mode we can use VBoxHeadless --startvm "xp"To stop it we can use VBoxManage controlvm "xp" savestateSince it is in a headless state we have to access it using a RDP viewer, e.g. rdesktop command in Linux:desktop -u username -p password -a 16 serverIPOf course, before we can use it in this way, we have to enable remote destkop for the "xp" machine and define authentication method. In my case, I used External method, since it uses the linux user account under which my VirtualBox is running.

Sunday, April 25, 2010

bash: send a command to a screen session

"Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells." It is a very useful tool, that I often use, as it allows me to run "multiple terminals in one" even when I log out from the system.

So how to send command to screen session from other terminal. In other words how to remote-control a screen session from within a script. This post is useful for this.

In particular, I wanted to execute matlab scripts in screen windows. To do this I used the following:
1. Create screen sessionscreen -S matlab2. Create few windows in the screen session using Ctr-a c
3. Send matlab command to each as followsfor ((i=0;i<$NO_WINDOWS;i+=1)); do
echo $i
sleep 2
screen -S matlab -p $i -X exec matlab -nodesktop -r "bashCalculations('part',$i+1)"
where bashCalculations is my matlab script bashCalculations.m that takes part argument. So,, each screen window executes different part of my script.

Saturday, April 24, 2010

Ubuntu 10.04: How to remove chat and mail icons (indicators) from system tray

The 10.04 LTS release of Ubuntu seems to be very, very good. However, for some strange reason, creators of this release made some strange decisions about Ubuntu's look-and-feel. One of the things that annoyed me was the assumption that every Ubuntu user, uses Twitter, Facebook or other social network. Thus, they incorporated the tools for using social networking sites into the distibution. They did it by adding chat and status icons/notifiers into Gnome system try. However, what they did not do, was the ability to easily remove them. For example, when you remove massage notifier (mail icon) using "Remove From Panel" option, the volume control icon also disappears.
Thus you need to remove these icons some other way, which in this case, is to remove two packages: indicator-me and indicator-messages:sudo apt-get remove indicator-me indicator-messagesAfter that just log-out and log-into the gnome session and the icons should be gone:

It also should work for Ubuntu 11.04 (Natty Narwhal).

Monday, March 08, 2010

Matlab: Convert numerical array to cell with string representation of numbers

Short Matlab script that takes an array (i.e. vector) of numbers and returns cell with fileds that are string representation of the numbers in the array.For example: >> a=[1 2 3.24 -43 4.56];
>> numarray2cellstring(a)

ans =

'1' '2' '3.24' '-43' '4.56'

Wednesday, March 03, 2010

imagemagick: crop all images

Example:convert rose: -crop 40x30+10+10 +repage repage.gif

Friday, February 26, 2010

Change font and font size in Fluxbox

In Fluxbox 1.1 a font and a font size can be changed by editing a overlay file, usually located in ~/.fluxbox/. So just add the following lines to this file and restart fluxboxmenu.title.font: sans-12:bold
menu.frame.font: sans-12:bold
toolbar.clock.font: sans-10:bold
toolbar.workspace.font: sans-12:bold
*font: sans-12
Of course you have to select the font you like or the size.

Thursday, February 25, 2010

bash: split string to array

There are few possible ways of splitting a string with delimiter-separated values to an array in Bash. Here I present five of them.

1. Using tr command

Output:> [123]
> [456]
> [567]
> [5]
> [343]
This method will produce incorrect array due to space in "567 5", but it works fine if there are no spaces in the $STR variable.

2. Using IFS (Internal Field Separator) variable

Output:> [123]
> [456]
> [567 5]
> [343]
This method works fine even if there are spaces.

3. Using read command

Output:> [123]
> [456]
> [567 5]
> [343]
This method also works fine even though there are spaces in the $STR variable.

4. Using sed command

Output:> [123]
> [456]
> [567]
> [5]
> [343]
This method will also produce incorrect array due to space in "567 5", but it works fine if there are no spaces in the $STR variable.

5. Using set command

Output:> [123]
> [456]
> [567 5]
> [343]
This method also works fine.


This post was mainly inspired by this StackOverflow question and my need to perform string 2 array conversions in bash.

Wednesday, February 24, 2010

bash: read a specific line or/and a column from a file

If we have column-row wise txt files, we can use awk and sed programs to read the rows and columns of such files.

Read specific line

To read a specific line from a txt file, the following commands can be usedawk 'NR==12' file.txt sed -n '12p' file.txt In both cases, line 12 will be returned.

Read specific column

awk '{print $1, $2}' file The code will return first and second columns from file.txt

Read specific column and line

Additionally, using awk we can get a specific column(s) in of a given line as followsawk 'NR==12 {print $1, $2}' file.txtThe Code will return first and second columns form a line no. 12.

Sunday, February 21, 2010

xampp: Compiling mod_bw.c and getting the error about undefined symbol: apr_atomic_cas

When I was compiling mod_bw.c 0.7 (apxs -i -a -c mod_bw.c) for xampp 1.7.1 on Ubuntu 9.10 and restarting lampp I was getting the following error:httpd: Syntax error on line 129 of /opt/lampp/etc/httpd.conf: Cannot load /opt/lampp/modules/ into server: /opt/lampp/modules/ undefined symbol: apr_atomic_casThe solution was to edit the mod_bw.c and comment out or remove the following lines:#if (APR_MAJOR_VERSION < 1) #define apr_atomic_inc32 apr_atomic_inc #define apr_atomic_dec32 apr_atomic_dec #define apr_atomic_add32 apr_atomic_add #define apr_atomic_cas32 apr_atomic_cas #define apr_atomic_set32 apr_atomic_set #endifand to recompile the file.

Unfortunately, there was no difference in the file upload speed.

Saturday, February 20, 2010

ImageMagick: add text to many images

Lets assume that we have 800x600 pixels images and we want to add an authors name to the lower right corner. We can do this using the following command (the command overwrites the original files!)
mogrify -fill white -pointsize 16 -annotate +685+590 'Authors Name' *.JPG

Thursday, February 18, 2010

ImageMagick: split one image to smaller images

Lets assume that we have a 1024x1024 pixel image called test.tif and that we want to split this image into 64x64 non-overlapping images called test001.tif, test002.tif, test003.tiff,....
We can do this using this command from
convert -crop 64x64 +repage test.tif test%02d.tif

Wednesday, February 10, 2010

VirtualBox: Autostart guest in Windows XP host

Some time ago I was asked to quickly setup a temporary LAMP server. Since, the time was an issue and it was supposed to be only a short-term solution I decided to take a PC box with Windows XP, install a VirtualBox, and setup an Ubuntu server 8.04 LST as a guest operating system.

Unfortunately, it was over a 1.5 year ago and what was a short-term solution become now de-facto a long term one. However, recently we had some power shortages in our building, and the problem appeared with this PC box, i.e. after it went down due to power shortage it did not start VirtualBox automatically when being turned on. Thus, I was asked to make it start automatically, in such a way that after turning the PC on, everything VirtualBox and ubuntu-server start automatically. I did it in to steps:

1. Setup autologin in Windows XP.

To do this I followed instructions from here.

2. Make VirtualBox start automatically.
To do this I wrote very simple Windows batch script called startVB.bat that contained the following two lines:cd "C:\Program Files\Sun\xVM VirtualBox"
vboxmanage startvm "ubuntu-server"
where "ubuntu-server" is the name of virtual machine to be started. The script was located in Startup folder C:\Documents and Settings\MY_USER_NAME\Start Menu\Programs\Startup.

Friday, February 05, 2010

Anonymous Internet browsing using Ubuntu 9.10, Tor and Firefox

"Tor protects you by bouncing your communications around a distributed network of relays run by volunteers all around the world: it prevents somebody watching your Internet connection from learning what sites you visit, and it prevents the sites you visit from learning your physical location. Tor works with many of your existing applications, including web browsers, instant messaging clients, remote login, and other applications based on the TCP protocol." [taken from Tor website]

Basically we need to install three things:
  1. Polipo - a proxy server,
  2. Tor, the onion router, and 
  3. Torbutton -a Firefox add-on.
Bellow are steps to install these three things.

Install Polipo, a caching web proxy
sudo apt-get install polipoSetup polipo
Manually open /etc/polipo/config and copy-paste config details here or sudo sh -c "wget '' -O /etc/polipo/config"After this restart polipo sudo /etc/init.d/polipo restart Add Tor repository
sudo sh -c "echo 'deb karmic main' >> /etc/apt/sources.list" Add Tor repository GPG keygpg --keyserver --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
Update repositories and install Torsudo apt-get update
sudo apt-get install tor
Install Torbutton (an add-on to firefox)
Just go to website of Torbutton and install it.

Check if you are anonymous
Enable tor in Firefox using the Torbutton, and go to Are you using Tor?If everything is OK you should see the following:
Additionally, you can install vidalia, a GUI for Torsudo apt-get install vidalia
Now, using vidalia you can create a new identity (i.e. a new IP) whenever you want:

Monday, February 01, 2010

Javascript Prototype: En example of periodical event broadcaster with ajax

The class below executes script.php every 60 seconds. After successful execution, it throws an event "jobs:updated" with JSON data returned from script.php.

Saturday, January 09, 2010

Linux + VirtualBox with Windows – [my] ideal combination for web development

Currently, for the development purposes I use Ubuntu 9.10 and most web applications developed need be tested on IEs 6,7,8. The problem is that I need different versions of IEs to test my xhtml/css/JavaScript. Altough, my PC is a dual boot (Ubuntu and XP) I don't want constantly dual boot between Windows and Linux, as this is quite distracting and annoying. The solution that works best for me is to have Internet Explorer Collection installed in Windows XP that runs (in Seamless Mode) on VirtualBox. Thanks to this, I can do all the coding and testing without the need to leave Ubuntu.