Friday, September 5, 2014

Non printable characters

Some tips to get rid of non printable characters  as often seen in text file created on Microsoft platforms.

 To see those characters you can use something like:

$ sed -n 'l' Genesis.txt 
[...]
6 \266 And God said, Let there be a firmament in the midst of the wat\
ers, and let it divide the waters from the waters.$
[...]

or using standard commands (depending on which one, the output may differ):

$ grep "Let the waters under "  Genesis.txt 
9 � And God said, Let the waters under the heaven be gathered together [...]
$ cat -v Genesis.txt   | grep "Let the waters"
9 M-6 And God said, Let the waters under the heaven be gathered together unto one place, and let the dry [land] appear: and it was so.^M

that \266 is the octal code for it. To list all special characters in the Latin-1 set see

$ man iso_8859-1

(Note that 'man ascii' will only display/list the original 7bit character set).

You can remove that using its octal code via sed (making a backup of the original file as well)

$ sed -i.bak 's/\o266//g' Genesis.txt

To remove the ^M there are other methods:

$ dos2unix Genesis.txt  Genesis_fixed.txt
$ strings Genesis.txt > Genesis_fixed.txt
$ tr -d $'\r'  <  Genesis.txt > Genesis_fixed.txt

or just use sed (note that you need to type Ctrl+V then Ctrl+M to get the right symbol)

$ sed -i.bak 's/\^M//g' Genesis.txt 

a more general approach found on the internet is to get rid of all but the ASCII octal values quoted in the command:

$ tr -cd '\11\12\15\40-\176' Genesis.txt > Genesis_fixed.txt

EOF




Thursday, December 12, 2013

Vim indentation tips


Some Vim indentation tips to collect here mainly as a reminder. Note that the amount of spaces used for indentation is mainly governed by the variable shiftwidth.


  • Moving around (aka, prelude to action): 
    • H to top of screen, L to bottom, M to middle. Then use nG to go to line n, G alone to bottom of file, gg to top of file.
    • Go visual pressing v then move around to selct text. Once happy, you can copy (yy) or delete (dd) the selected text. 
  • Indent text (visual mode):
    • in command mode, press v then move cursor around (text will be highlighted), then press > to indent the highlighted text.
  • Indent text (markers):
    • position yourself then place a marker with ma, then move down to your block end and type >'a (a can be replaced with another valid character)
  • Indent text (fixed):
    • to indent current line type >>
    • to de-indent current line type <<
    • to indent 10 lines from the current one use 10>>
    • ... you get the gist ...
    • to indent lines from 10 to 20 type :10,20>
Some variables you can add to your .vimrc:

set shiftwidth=5    #Indent by 5 spaces when using >>, <<, etc.
set softtabstop=5   #Indent by 5 spaces when pressing
set autoindent      "Keep indentation from previous line

All of this is tested/verified for vim, not sure about vi.



Wednesday, September 11, 2013

D-Bus library appears to be incorrectly set up

Recently I add to install firefox on top of a bare bones SL6 VM (e.g. installed with the minimal package set) and upon launching the browser I got this error:

$ firefox 
process 12606: D-Bus library appears to be incorrectly set up; failed to read machine uuid: Failed to open "/var/lib/dbus/machine-id": No such file or directory
See the manual page for dbus-uuidgen to correct this issue.
  D-Bus not built with -rdynamic so unable to print a backtrace
Aborted

turns out that the culprit is dbus which needs the service messagebus running but it has not been started by default, so issuing this makes the error go away:

# /etc/init.d/messagebus start

now Firefox will start as expectd.

Wednesday, January 2, 2013

Mobile browser user agents

Had a quick go at seeing what user agent is reported from different mobile devices and browser combinations:

Android (Gingerbread) stock browser:


134.171.xxx.xxx - - [02/Jan/2013:17:22:53 +0100] "GET /wdb/html/status_btn.gif HTTP/1.1" 200 1588 "http://archive.eso.org/wdb/wdb/eso/fors2/form" "Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; GT-I9100 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"

Android Opera Mobile:

134.171.xxx.xxx - - [02/Jan/2013:17:21:38 +0100] "GET /wdb/wdb/eso/fors2/form HTTP/1.1" 200 28130 "-" "Opera/9.80 (X11; Linux zbov) Presto/2.11.355 Version/12.10"

Android Firefox:

134.171.xxx.xxx - - [02/Jan/2013:17:22:17 +0100] "GET /wdb/wdb/eso/fors2/form HTTP/1.1" 200 28130 "http://archive.eso.org/cms/eso-data/instrument-specific-query-forms.html" "Mozilla/5.0 (Android; Mobile; rv:17.0) Gecko/17.0 Firefox/17.0"

and for comparison, this is the stock iPhone4 browser:

134.171.xxx.xxx - - [02/Jan/2013:17:25:15 +0100] "GET /wdb/wdb/eso/fors2/form HTTP/1.1" 200 28130 "http://archive.eso.org/cms/eso-data/instrument-specific-query-forms.html" "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A523"

Friday, December 14, 2012

Getting a shell on Galaxy SII

First enable the USB debugging in (under Gingerbread, ICS or later may differ)

> Settings > Application > Development >

Then create this if using OpenSuSE (not required for Ubuntu 12.04)


# cat /etc/udev/rules.d/53-android.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"

note the vendor id is the one from Samsung (see http://developer.android.com/tools/device.html#VendorIds).

Now under OpenSuSE 11.x restart udev


# /etc/init.d/boot.udev restart

then plug the usb cable in the phone and as regular user you should see the device now



~/android-sdk-linux/platform-tools> adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
304D19AFD0235C8E device

and start the sehll

~/android-sdk-linux/platform-tools> adb -d shell
$ pwd
/

Wednesday, April 11, 2012

Middle Road Lodge

Hello

today I am adding a new feature to this blog: bookings overview for rooms in the Middle Road Lodge! You can see it on the right pane of this blog.

If you read this you probably know what this is about, else you don't need to know :-)

So, for those who are in the know, I hope you find it useful to plan/request a suitable lodging. Red events indicate bookings for the double guestroom, orange for the single one. You can click on any booking to see further details (press the escape key to undo), and also check out on the top right arrow: there is a drop down menu from which you can select separate calendar/booking for the two different available rooms, e.g. double (red) and single (orange).

I will keep these calendars updated from now on.

The Lodge Keeper





Thursday, January 5, 2012

Setting up Android development environment

So here are my notes on the subject (using a Linux platfrom).

First install the JDK from Oracle (I had to remove previous rpm from SUN RIP to achieve this):

# rpm -e jdk-1.6.0_30-fcs.i586
# rpm -ivh jdk-6u30-linux-i586.rpm

and make it default system wide:


# update-alternatives --config java

There are 2 alternatives which provide `java'.

  Selection    Alternative
-----------------------------------------------
          1    /usr/lib/jvm/jre-1.6.0-sun/bin/java
*+        2    /usr/lib/jvm/jre-1.6.0-openjdk/bin/java

Press enter to keep the default[*], or type selection number: 1
Using '/usr/lib/jvm/jre-1.6.0-sun/bin/java' to provide 'java'.
$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)

Then install the current Android SDK, so that it ends up in  ~/android-sdk-linux and launch it with

$ ./android-sdk-linux/tools/android

Then check on all boxes from the API 14 (ICS) bundle and Tools folder, it will download a bunch of stuff.

Then from the Tools -> Manage AVD menu create a virtual device.

Now we need the Eclipse IDE, I downloaded eclipse-java-indigo-SR1-linux-gtk.tar.gz, just extract it to suitable location and run

$ ./eclipse/eclipse

then install the Google ADT plugin as per official docs.