Sep 8, 2008
Aug 28, 2008
Osmarender Tweaks
I have made a couple of simple tweaks to the Osmarender rules and styles: Red Arrows for Oneway Streets, Residential Buildings, Hiking Trails. Images included!
TODO: make it easy to render it yourself.
Aug 25, 2008
OpenStreetMap Diaries via a GeoRSS Box Filter
Fortunately (and unsurprisingly) the feed is GeoRSS so we can filter its contents based on the coordinates supplied with most diary entries. I did not find such service on the Web so I wrote it myself: a GeoRSS Box Filter. You say
geofilter.php?url=...&minlat=...&maxlat=...&minlong=...&maxlong=... and it filters the given feed according to the given bounding box. If you omit the url, it defaults to the above mentioned OSM diary feed, and the bounding box defaults to Czechoslovakia.More examples? How about the United Kingdom? or Georgia? (The Export tab is handy to get the numbers, BTW) To watch for uploaded GPS traces, use geofilter.php?url=http://openstreetmap.org/traces/rss. I wonder what other interesting feeds you can find to experiment with (but I did not try anything else than RSS 2.0).
Oh, and I worked on this all on the company time because it's Hack Week3 now, yay!
Jul 14, 2008
cnetworkmanager 0.7.1
- it does not need a configuration file anymore:
cnetworkmanager -C publicnetcnetworkmanager -C myessid --wep-hex 112234445566778899aabbccddcnetworkmanager -C another --wpa-psk-hex \
112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00 - it works with NM 0.6 (tested on Ubuntu 8.04 Hardy and a pre-release OLPC) in addition to the older support for NM 0.7pre (tested on openSUSE 11.0)
- sooner:
- specifying the key as a non-hex passphrase
- reading the configuration stored by the GNOME nm-applet
- possibility to quit after a connection is established
- later:
- more encryption schemes (WPA2?)
- more connection types (dial-up, VPN)
Jul 8, 2008
Cultural Exchange 4: First YaST
Fresh libzypp needs cmake 2.6 but there is only 2.4 in .debs. Fortunately the cmake authors provide a binary tarball with 2.6, only one has to know where to put the contained directories.
Notes for clean-up: Libzypp should say it needs hal-storage and boost-filesystem too. Python-bindings should check for python-dev, should use python-config. Perl does not seem to respect vendor_arch for ycp.pm?
Jul 7, 2008
Cultural Exchange 3: First .deb
Tried to print and failed miserably. The setup tool would not work with a remote CUPS printer, kept asking for my password. Switching AppArmor from enforcement to complain mode did not help, nor did disabling it.
The development package for openssl is libssl-dev (openSUSE: libopenssl-devel). http://packages.debian.org/ helps with that.
Perl packages, named perl-Foo-Bar on openSUSE, are usually named libfoo-bar-perl on Debian.
Packaging system started to complain that packages cannot be verified.
(Cultural Exchange is my long term project of working with Ubuntu instead of openSUSE. TODO: make a permanent index page.)
YaST Workshop 2008
Jun 27, 2008
Cultural Exchange 2
command-not-found is enabled out of the box and it rules. openSUSE should have it by default too.
dpkg phrasebook:
rpm -ql foodpkg -L foorpm -qa "foo*bar"dpkg -l "foo*bar"(and it also shows packages that are not installed)
Jun 25, 2008
Cultural Exchange: First Blood
mutt somehow stopped tracking new mails. Fortunately
:set check_mbox_size on works around that.My subversion working copy from openSUSE was created with svn 1.5 but Hardy has only 1.4. So I manually got debs from the coming Intrepid release, and luckily 3 of them were enough:
dpkg -i {subversion,libsvn1,libneon27-gnutls}*.deb from here and here.
Jun 17, 2008
Addressing Lines in Plain Text Files
This points to line 13, with the prototype of main:
http://svn.opensuse.org/svn/yast/trunk/libyui/examples/HelloWorld.cc#line=,13
Jun 11, 2008
Medoosa in OBS
I wrote it for my master's thesis at the Charles University back in 2001 and it has been since then quietly sitting at SourceForge. Today I have rebuilt it in the openSUSE Build Service: Medoosa, CcDoc-0.7a (required).
Jun 10, 2008
cnetworkmanager 0.4
- New: changed license to GPLv2 or later, to match other parts of NM
- New: distinguish WEP, WPA, WPA2 for -n.
- New: -o, -w control online and WiFi status.
- New: basic device info for NM 0.6
- Fix: recognize Notification Messages in knetwormanagerrc.
- Fix: -u: better error message when applet not running.
- Fix: standardized option parsing, both -Cfoo and -C foo work.
Jun 8, 2008
KNotify Client
emerge -uND --world && knotify "Done!". I thougt it would be a piece of cake, but apparently not.The short answer,
zypper in libnotify; notify-send Done, has a disadvantage of requiring a fair amount of GNOME software. But it does use a proposed freedesktop.org standard.Then I find the method org.kde.KNotify.event, but its nice signature (ssavsayasx) means dbus-send (dbus-1-1.2.1-12) cannot invoke it (it cannot pass empty arrays, and it cannot wrap variants in arrays). No problem, let's use Python. But then we are blocked by knotify4 (kdebase4-runtime-4.0.4-19) reporting a wrong signature via the introspection interface.
# killall knotify4; cp /usr/bin/knotify4{,.bak}
# sed 's/type="a(ss)"/ type = "av"/g' /usr/bin/knotify4.bak > /usr/bin/knotify4Now which event should we use so that the user actually sees the message? There are many of them, with user configurable actions. warning/kde seems to work out of the box.#! /usr/bin/python
import sys
import dbus
m = sys.argv[1]
kn = dbus.SessionBus().get_object("org.kde.knotify", "/Notify")
i = kn.event("warning", "kde", [], m, [0,0,0,0], [], 0,
dbus_interface="org.kde.KNotify")
That did it. But I still hope that there is a simple solution for KDE4 that I have missed.
Jun 3, 2008
D-Bus Spy
Like dbus-monitor, it monitors the system or session bus. Additionally, it can write the traffic to a file and read it later (-w, -r). It can dump all the gory details (-d) or pretty print all the gory details (-p). Like DBusMessageBox which inspired it, it can make message sequence charts (-c). It has some simple filtering abilities (-f, -F).
Try 0.1 if that sounds interesting.
May 30, 2008
try cnetworkmanager 0.3
cnetworkmanager is a command line interface for Network Manager. It is still lacking many features but I decided to announce it now, when it can:
- connect to WiFi networks
- read the configuration file of KNetworkManager
It is working for me on RC1 of openSUSE-11.0, which has NetworkManager-0.7.0.r3685-3. It is my first project in Python, so the code is somewhat cumbersome. Thanks to Mišo for getting me started (idea.o.o, abclinuxu.cz), and Bille for the API docs.
Regarding related projects, I have seen network-manager-cli, but it is for 0.6 only and the developers were only active last August, so I decided that I should first write some working code for 0.7.
I am interested in comments, bugs, feature requests, patches, any feedback.
Here are some screenshots ;-)
$ cnetworkmanager -h
cnetworkmanager 0.3 - Command Line Interface for NetworkManager
Options:
-d, --dev list devices
-c, --actcon list active connections
-s, --syscon list system connection settings
-u, --usrcon list user connection settings (can CRASH nm-applet)
-a, --ap list found access points
-n, --nets list found wireless networks
-C<net>, --connect=<net> connect to a wireless network (using knetworkmanagerrc)
-m, --monitor loop to show dbus signals
Listing the networks:
$ cnetworkmanager -n
cnetworkmanager 0.3 - Command Line Interface for NetworkManager
Wifi Networks:
49: onenet (54Mb, protected)
46: IT (54Mb, protected)
48: TiborBrunclik (11Mb, protected)
46: linksys (54Mb)
46: IT (54Mb, protected)
46: 23 (54Mb)
Testing Scribefire
Let's try a command:
$ zypper moo
\\\\\
\\\\\\\__o
__\\\\\\\'/_
May 26, 2008
Installation without YaST
The target machine has dual boot and I am logged on the other system via the network, so I could paste this all in. Fasten your hats...
Update: Planet SUSE is eating the dollar variables :-( See the original post at Blogspot for the real thing.
Target partition:
# mkfs.ext3 /dev/hda1
# mount /dev/hda1 /mnt
A flash drive with images and kernel:
# mount /dev/sda1 /media
# cd /media/misc
Note I used unlzma beforehand because the target machine is way slow for that
# du -m *
5 base-i386.tar
12 base-meta-i386.tar
527 common-base-i386.tar
22 kernel-default-2.6.25.4-8.i586.rpm
Unpack!
# for i in *.tar; do dd if=$i bs=1M | tar -C /mnt -xf -; done &
While it is running, watch the progress:
# pkill -USR1 -x dd
...
552202240 bytes (552 MB) copied, 709,291 s, 779 kB/s
# cp kernel-default-*.i586.rpm /mnt/tmp
Before installing the kernel, we must do some setup so that the post-install script works.
# for i in dev proc sys; do mount --bind /$i /mnt/$i; done
# chroot /mnt
Now I use ## to mark that we are chrooted in the target system.
Modify partitions as needed.
Also see ls -l /dev/disk/by-id
## ROOT=/dev/hda1
## SWAP=/dev/hda4
## cat <<EOF > /etc/fstab
$ROOT / ext3 acl,user_xattr 1 1
$SWAP swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
EOF
You probably don't need to set this one and the others starting with FIX_
## FIX_BOOT=acpi=force
## GROOT="(hd0,0)"
## cat <<EOF > /boot/grub/menu.lst
default 0
timeout 60
gfxmenu $GROOT/boot/message
title openSUSE 11.0
root $GROOT
kernel /boot/vmlinuz root=$ROOT resume=$SWAP vga=787 $FIX_BOOT
initrd /boot/initrd
title Failsafe -- openSUSE 11.0
root $GROOT
kernel /boot/vmlinuz root=$ROOT ide=nodma apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off x11failsafe vga=787
initrd /boot/initrd
EOF
Put GRUB to MBR
## GDEST="(hd0)"
## cat <<EOF > /boot/grub/device.map
$GDEST /dev/hda
EOF
## cat <<EOF > /etc/grub.conf
setup --stage2=/boot/grub/stage2 $GDEST $GROOT
quit
EOF
## sysconfig() { sed -i -s "/^$2=/s/=\"/=\"$3/" /etc/sysconfig/$1; }
I also need this. You probably don't
## FIX_MODS="ide-generic ide-core"
## sysconfig kernel INITRD_MODULES "$FIX_MODS"
I don't know whether these 2 are strictly necessary
## sysconfig bootloader LOADER_TYPE grub
## sysconfig bootloader LOADER_LOCATION boot
## rpm -Uhv /tmp/kernel-default-*.rpm
It will get the resume device wrong (according to *current* swap partition), but it seems harmless.
## grub-install
## passwd
## chkconfig SuSEfirewall2_init on
## chkconfig SuSEfirewall2_setup on
## exit
# reboot
BTW, I am fed up with the Blogger editor. Can I use an offline one so that I don't have to change blog hosting?
May 19, 2008
Easier Bugzilla search
I realized that I dislike beta bug reporting because it is so painful to search for duplicates before I report a problem. The search form is so ****ing painful to use!
So I wrote a replacement. Enjoy, view source, share, improve.
May 6, 2008
YaST from the Command Line
Here's a one-liner to do it using YaST:
Try also:# yast2 firewall services add zone=EXT service=service:sshd
(Saying "yast" instead of "yast2" should work too, but there is bug 374259.)# yast2 firewall help
# yast2 firewall longhelp
# yast2 firewall summary
# yast2 firewall services list
# yast2 -l
# yast2 FOO help