after install

Det händer att man möter en ren (Ubuntu-)maskin emellanåt. Och det saknas alltid en hel del, som behöver installeras. Följande postinstall-steg brukar jag lägga på.

apt-get install aptitude vim openssh-server screen curl nmap openjdk-7-jdk munin-plugins-extra munin-plugins-java meld netcat git mercurial python-concurrent.futures python-setuptools

aptitude install gnome-shell gnome-tweak-tool dconf-tools gnome-color-chooser compizconfig-settings-manager msttcorefonts
apt-get remove overlay-scrollbar liboverlay-scrollbar-0.2-0 liboverlay-scrollbar3-0.2-0
gsettings set org.gnome.desktop.wm.preferences focus-mode 'sloppy' && gsettings set org.gnome.desktop.wm.preferences auto-raise false

aptitude remove appmenu-* packages

aptitude install gimp gtk-recordmydesktop

aptitude install gadmin-openvpn-client

aptitude install pidgin-sipe

aptitude install chromium-browser

aptitude install mdadm gsmartcontrol

aptitude install python-software-properties
add-apt-repository ppa:zfs-native/stable
aptitude update
aptitude install ubuntu-zfs

Gnome Shell

gsettings set org.gnome.shell.overrides workspaces-only-on-primary false
gsettings set org.gnome.shell.overrides attach-modal-dialogs false

Eclipse

Problemet med svart bakgrundsfärg i popuper/hoverboxes väljer jag att lösa systembrett.

install the package “gnome-color-chooser”. In “specific” tab, you can choose the foreground and background color for tooltips.

Git GUI

aptitude install tk8.5
update-alternatives --config wish #make sure 8.5 is used

Alt-Tab Unity FUBAR

aptitude install compiz-plugins-extra
ccsm och inaktivera key bindings i Ubuntu Unity Plugin, aktivera t ex Static Application Switcher

More stuff

Start “ccsm“, find the Desktop section and untick “Widget Layer“. Done.

Mera Munin

Pillade med en maskin idag på EC2 där en del saknades i munin-väg. För att se vilka plugins som vill, kan eller inte vill vara med i matchen körs munin-node-configure --suggest som ger en fin lista, t ex

Plugin                     | Used | Suggestions                            
------                     | ---- | -----------
ntp_offset                 | no   | no [no ntpq program]                   
nvidia_                    | no   | no [no nvclock executable at /usr/bin/nvclock, please configure]
open_files                 | yes  | yes                                    
open_inodes                | yes  | yes                                    
postfix_mailqueue          | no   | no                                     
postfix_mailvolume         | no   | no [postfix not found]                 
postgres_bgwriter          | no   | yes

För att få med JMX (mot en miljö) så behövs paketet (under Ubuntu) munin-java-plugins, Postgres-prylarna var fortfarande inte på banan och ett litet test med perl -MDBD::Pg -e 1 säger just

Can’t locate DBD/Pg.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .).

För detta behövdes libdbd-pg-perl.

När väl allt verkar OK, kör munin-node-configure --shell | sh för att konfigurera in modulerna.

Om SSH och nycklar

Det händer att man får förklara konceptet med nyckelbaserad autentisering emellanåt. Jag sprang idag över en kort koncis sammanfattning på OpenWRT-wikin:

You generate a key pair, consisting of a public key (which everybody is allowed to know) and a private key (which you keep secret and do not give to anybody). The private key is able to generate signatures. A signature created with your private key […] cannot be forged using some other key; but anybody who has your public key can verify that a particular signature is genuine.

With the program of your choice, you generate a key pair on your own computer (which should not already be hacked…), and copy the public key to the server, in our case running OpenWrt. Then, when the server asks you to prove who you are, PuTTY can generate a signature using your private key. The server can verify that signature (since it has your public key) and allow you to log in.

Jag tänkte också att det var dags att kika på detta med att posta kod – det är ett härke med WordPress och TinyMCE (den grafiska redigeringsverktyget) som “förstör” koden varje gång man försöker göra något. Har nu installerat SyntaxHighlight Evolved (samt SH TinyMCE Buttons) som förhoppningsvis skall lösa problemet. Vi gör ett försök:

[java]public class Test <T1, T2> {
private T1 t1;
private T2 t2;
public T1 getFirst() {
return t1;
}
public T2 getSecond() {
return t2;
}
public <X, Y> Test(T1 a, T2 b) {
this.t1 = a;
this.t2 = b;
}
}[/java]

Det räcker inte med vanliga <pre>-taggar, utan det som verkar fungera är att skriva just klamrar [ sedan språk ] i ett “pre”-block.

[java]
package net.freelancer.dyu168.util;

public class Nullable<T> {

private T t;

private Nullable(T t) {
this.t = t;
}

public boolean hasValue() {
return t != null;
}

public T get() {
if (!hasValue()) {
throw new IllegalStateException("This Nullable has no value");
}
return t;
}

public static <X> Nullable<X> none() {
return new Nullable<X>(null);
}

public static <X> Nullable<X> with(X x) {
return new Nullable<X>(x);
}
}
[/java]

Det ser OK ut båda editorerna, även i preview.

Minimal munin-plugin

På jobbet används en npa201e från Ping Communications till att svara på anrop från porttelefoni, dvs någon som vill in.

Dessvärre har denna inte varit helt tillförlitlig. Den första analoga telefon vi använde drog lite ström från linan för att kunna visa en display. Detta orsakade en hel del huvudbry och bara första samtalet gick fram. För att göra en lång historia kort – nu ligger den och övervakas och en av formerna för detta är med hjälp av munin. Eftersom det är trivialt att skriva enkla munin-pluginner så dokumenterar jag här minimi med ett fungerande exempel:

#!/bin/sh

if test "x$1" = "xconfig" ; then
	echo "graph_title Ping Com IP-dosa
graph_category network
graph_info Network status on npa201e
graph_vlabel On / Off
status.label Status"
	exit 0;
fi

EXPECTED=/opt/pingcom-watch/expected-output.txt
TEMP=/tmp/pingcom-test

echo -n "" | netcat 10.20.10.11 9699 > $TEMP
diff -q $TEMP $EXPECTED > /dev/null
D=$?

echo -n "status.value "
echo $D

Spela in skrivbordet

Jag har tidigare använt XVidCap för att spela in (delar av) det som syns på min skärm. Det har alltid fungerat fint men idag ville det inte fungera som det skulle och jag tvingades testa något nytt. Tur var det för “Desktop Recorder” (aka recordMyDesktop) är ett kanonverktyg. Kommer garanterat användas flera gånger (vid inspelning av buggar t ex). Finns även panoreringsstöd, dvs att inspelade ytan följer med musen.

Screenshot of Record My Desktop
Desktop Recorder

Vettig Maven JSLint-plugin

Äntligen en ordentlig maven-plugin som kör jslint på javascript-koden. Version 2.0.2 har bättre dokumentation än 2.0.1. Här är en snippet från en pom:


	
		
			
				com.googlecode.jslint4java
				jslint4java-maven-plugin
				2.0.2
				
					
						lint
						compile
						
							lint
						
						
							
								${basedir}/src/main/webapp/js
							
							true
							
								true
								true
								true
								true
								true
								true
								Ext,jQuery
								true
								true
								true
							
						
					
				
			

Eclipse popups and focus issue

I’ve made the switch and try to live with Unity. One of the issues I’ve had is that fact that hitting Ctrl+T or Ctrl+F8 goes away if the mouse pointer is positioned where the popup window will appear. Terribly annoying.

Today I found out that it’s related to a setting in CompizConfig Settings Manager called Focus Prevention Level which is a feature intended to prevent you from continue type or click in windows that just popped up without you discovering it. Setting this to Off removes the problem with Eclipse popup focus.

Screenshot of CompizConfig Settings Manager
Changing Focus Prevention Level using CompizConfig Settings Manager

Eclipse Application & Ubuntu/Gnome

Jag har blivit vän med Unity (när det inte krashar) genom att Compiz Config (ccsm) fortfarande tillåter mig göra allt jag vill. Efter ett par månaders användande av så skall det sägas att Gnome 3 känns som en mer slimmad och snyggare upplevelse än Unity (notifications fungerar riktigt bra, gillart skarpt), men också mer låst för tweakande.

Hur som helst, efter att man dragit in sina egna versioner av saker så ser det lite roligare ut att få upp fina ikoner för programmen man kör. Jag glömmer dock alltid var man gör detta och detta är min minnesanteckning för detta. :)

fredrik@wendt-machine:~$ cat >> .local/share/applications/eclipse-jee.desktop
[Desktop Entry]
Name=Eclipse JEE
Exec=/opt/eclipse-jee/eclipse
Icon=/opt/eclipse-rcp/icon.xpm
Type=Application
Screenshot showing Eclipse Icon in application launcher
Eclipse-ikon i programstartaren

Cake Sharing Public License

Jag stötte på en ny licens idag på jobbet – den används för ett internt verktyg. Klockren! :)

CAKE SHARING PUBLIC LICENSE
---------------------------
By using and installing this tool (hereby referred to as TOOL)
the USER (i.e a user of this TOOL) acknowledges:
- to always offer the CONTRIBUTORS (see list below) of TOOL cake/ice
cream/sweets (hereby referred to as SWEETS) whenever USER offer
someone else SWEETS in work-related environments (hereby referred
to as WORK SWEETS)
- to remind other USERs who are serving WORK SWEETS about this
agreement if they are not aware of it or have forgotten.
Redistribution of TOOL requires this license to be included.
In the case of redistribution, the effective CONTRIBUTORS is
the union of all CONRTIBUTORS from dependant software.
Contributing to TOOL requires the contributor to name herself/himself
in contribution list.

CONTRIBUTORS (so far):
...

Boxee, gdm, Ubuntu 9.04

SD-kortet som /home låg på har gett upp och vips så slutade massa saker att fungera. Vägen tillbaka var hård:

  • unclutter – plockar bort musmarkören
  • Gnome Display Manager (gdm) – behöver startas med Custom session (för xsession)
  • Sätta upp ny .xsession (se nedan)
  • Få boxee att använda rätt lircd-enhet: ta enhet från /etc/lirc/lircd.conf och peta in namnet i /opt/boxee/system/Lircmap.xml
  • echo “” > /usr/share/sounds/*-login.ogg

.xsession:

#!/usr/bin/env bash
xhost + &
xset -dpms s off &
xrandr --output VGA --mode 1360x768 &
xrandr --output LVDS --off &
unclutter &
/opt/boxee/Boxee
logout

Lircmap.xml:
<lircmap>
<remote device="iMON-PAD">
<pause>Pause</pause>
<stop>Stop</stop>
<forward>FastForward</forward>
<reverse>Rewind</reverse>
<left>Left</left>
<right>Right</right>
<up>Up</up>
<down>Down</down>
<select>Enter</select>
<pageplus>Chan+</pageplus>
<pageminus>Chan-</pageminus>
<back>Backspace</back>
<menu>WindowsKey</menu>
<title>MouseMenu</title>
<info>More</info>
<skipplus>NextChapter</skipplus>
<skipminus>PrevChapter</skipminus>
<display>AspectRatio</display>
<start>MultiMon</start>
<record>Record</record>
<volumeplus>Vol+</volumeplus>
<volumeminus>Vol-</volumeminus>
<mute>Mute</mute>
<power>Power</power>
<myvideo>Red</myvideo>
<mymusic>Green</mymusic>
<mypictures>Blue</mypictures>
<mytv>Yellow</mytv>
<one>1</one>
<two>2</two>
<three>3</three>
<four>4</four>
<five>5</five>
<six>6</six>
<seven>7</seven>
<eight>8</eight>
<nine>9</nine>
<zero>0</zero>
</remote>
</lircmap>