Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | alsamixer | amazon | anniversary | antypis | apache | api | applebaum | arm | armenia | astronomy | asus | atom.xml | awk | aws | bachotek | bakłażan | balcerowicz | balta | bash | berlin | bibtex | bieszczady | biznes | blogger | blogging | blosxom | bono | borne-sulinowo | breugel | bt747 | budapeszt | bursztyn | canon | cedewu | chello | chiller | chillerpl | chown | chujowetaśmy | ciasto | cmentarz | contour | cron | css | csv | curl | cycling | d54250wykh | dbi | debian | dejavu | dhcp | dht22 | dia | docbook | dom | ds18b20 | dyndns | dynia | ebay | economy | ekonomia | elka | elm | emacs | emacs23 | english | ess | eu | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc29 | fc5 | fc8 | fedora | fedora21 | fenix | ffmpeg | finepix | firefox | flickr | folau | fontforge | fontspec | fonty | food | fop | foto | france | francja | fripp | fuczki | fuji | fuse | gammu | garmin | gawk | gazwyb | gdańsk | gdynia | gender | geo | geocoding | georgia | gft | git | github | gmail | gmaps | gnokii | gnus | google | googlecl | googleearth | googlemaps | gotowanie | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | haldaemon | handbrake | historia | history | hitler | holocaust | holokaust | hpmini | humour | iblue747 | ical | iiyama | ikea | imap | inkscape | inne | internet | j10i2 | javascript | jhead | k800i | kajak | kamera | kleinertest | kml | kmobiletools | knuth | kociewie kołem | kod | kolibki | komorowski | konwersja | krutynia | kuchnia | kurski | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | lgbt-folly | liberation | linksys | linux | lisp | lisrel | litwa | lizbona | logika | ltr | lubowla | lwp | lwów | m2wś | malta | mapquest | mapsource | marchew | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mevo | mh17 | michalak | michlmayr | microsoft | monitor | mp4box | mplayer | ms | msc | mssql | msw | mswindows | mtkbabel | museum | muzyka | mymaps | mysql | nanopi | natbib | navin | nekrolog | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nmea | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | okular | olympus | ooffice | ooxml | opera | osm | otf | otftotfm | other | overclocking | ozbekiston | panoramio | pdf | pdfpages | pdftex | pdftk | perl | photo | photography | picasa | picasaweb | pim | pine | pis | pit | plotly | pls | plugin | po | podróże | politics | polityka | polsat | portugalia | postęp | powerpoint | prelink | problem | propaganda | pstoedit | putin | python | r | radio | random | raspberry pi | refugees | relaxng | ridley | router | rower | rowery | rpi | rsync | rtf | ruby | rugby | russia | rwc | rwc2007 | rwc2011 | rzym | samba | sem | sernik | sheevaplug | sienkiewicz | signature | sks | skype | skytraq | smoleńsk | sqlite | srtm | sshfs | ssl | staszek wawrykiewicz | statistics | stats | statystyka | stix | stretch | suwałki | svg | svn | swanetia | swornegacie | szwajcaria | słowacja | tbilisi | terrorism | tex | texgyre | texlive | thunderbird | tomato | totalnaopozycja | tourism | tramp | trang | truetype | ttf | turkey | turystyka | tusk | tv | tv5monde | twitter | typetools | ubuntu | uchodźcy | udev | ue | ukraina | umap | unix | upc | updmap | ups | utf8 | uzbekistan | varia | video | vienna | virb edit | vostro | wammu | wdc | wdfs | webcam | webdav | wh2080 | wiedeń | wikicommons | wilno | win10 | windows | windows8 | wine | wioślarstwo | word | wordpress | wrt54gl | ws1080 | wtyczka | ww2 | www | wybory | wybory2015 | włochy | węgry | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zakopane | zakupy | zdf | zdrowie | łeba | świdnica | żywność
Archiwum
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
Bidirectional synchronisation with rsync

I would like to copy Elka's home directory (/home/eros/) from the laptop (asteroid) to the server (jupiter) and back from jupiter to asteroid as well as from/to jupiter to/from PC machine (darkstar). So the problem is to sync bidirectionally /home/eros/ on three machines.

On darkstar I run the following script (and similar one on asteroid):

#!/bin/bash
# http://wiki.archlinux.org/index.php/Full_System_Backup_with_rsync
#
SOURCEDIR=/home/eros/
DESTDIR=root@jupiter:/public/DELL/backup/rootfs/home/eros

INCLUDED=' --include="/.emacs-local/" --include="/.ssh/" --include="/.emacs" --include="/.bash_profile" --include="/.bashrc" '
EXCLUDED=' --exclude="/.*"'

rsync -av -e ssh $INCLUDED $EXCLUDED ${SOURCEDIR} ${DESTDIR}

# the other way round now
# Cf. http://faculty.wiu.edu/CB-Dilger/s07/rsync-howto.shtml
# Extra slash appended to ${DESTDIR}/ is of uttermost importance!

rsync -av -e ssh $INCLUDED $EXCLUDED ${DESTDIR}/ ${SOURCEDIR}

Adding an exclude switch, --exclude="/.*" excludes all top-level hidden files/directories. Those few which should not be excluded are specified with series of --include switches. Order is important---first --include switches then --exclude switches.

url | Mon, 23/01/2012 21:47 | tagi: , ,
Making Fedora 15 installation work

Due to disc failure I had to install Fedora for the second time. As a third attempt is very likely in the near future, below short recipe (in the form of bash script with manual interventions included as comments), how to fix fresh installed Fedora 15.

#!/bin/bash
#
# ** Manual fix (see other manual fixes below) **
#  /etc/profile.d/local_profile.sh
#  /etc/hosts
# Fix udev rules to allow non-root access to GPS device for GPSbabel
#  /etc/udev/rules.d/51-garmin.rules
#
yum install yum-plugin-fastestmirror
rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
#
# Update the whole system
yum update
# 
yum install wget fuse-sshfs system-config-printer curl fdupes rtorrent wammu svn git 
yum install xmms xmms-mp3 xmms-faad2 xmms-pulse xmms-skins
yum install audacious audacious-plugins-freeworld*
yum install rhythmbox gstreamer-plugins-ugly gstreamer-plugins-bad gstreamer-ffmpeg
yum install mplayer mplayer-gui gecko-mediaplayer mencoder
yum install xine xine-lib-extras xine-lib-extras-freeworld
yum install vlc
yum install gphoto2 gvfs-gphoto2 gtkam digikam gthumb geeqie gpsbabel cheese

# ** Manual fix **
# MS Fonts (personally don't use them / perhaps needed by some appilations)
# Cf. http://www.mjmwired.net/resources/files/msttcore-fonts-2.0-3.noarch.rpm
# wget http://www.mjmwired.net/resources/files/msttcore-fonts-2.0-3.noarch.rpm
# rpm -ivh msttcore-fonts-2.0-3.noarch.rpm

# 32bits Adobe Flash plugin 
rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
yum install flash-plugin

#
yum install rubygems rubygem-rake
yum install firefox thunderbird mozilla-adblockplus
yum install emacs  emacs-git emacs-git-el emacs-magit emacs-magit-el emacs-common-ess emacs-ess* emacs-auctex*
yum install gimp inkscape sane dia k3b grip xpdf
yum install googlecl html2ps xhtml2ps
yum install ImageMagick
yum install gnuplot graphviz*
yum install gretl R weka 
# Stix package provides Times New Roman like fonts
yum install stix-*
yum install soprano
yum install ffmpeg

# Gnome3 is unusable for me:
yum -y groupinstall XFCE

# groupinstall "Office/Productivity" is a shortcut to install LibreOffice (former OpenOffice)
yum groupinstall "Office/Productivity"
# Small utilities to process jpeg files:
yum install jhead
# Epub reader:
yum install fbreader

# Install TeXlive just to fulfill dependencies (I install recent TeXlive for everday use)
yum install texlive* 
# XML related tools (fop installs xercesa/xalan as dependent packages)
yum fop trang jing

# Perl related stuff
# Warning: perl-Test*  returns error...
yum install perl-Authen-* perl-Crypt* perl-DBD* perl-Data* perl-DateTime* perl-Digest* \
  perl-File* perl-Flickr* perl-GD* perl-GDGraph* perl-Geo* perl-HTML* perl-IO* \
  perl-Net* perl-PerlIO* perl-String* \
  perl-Text* perl-XML* perl-YAML* \
  perl-libwww*

# Private scripts (details omitted for obvious reason)
SOURCE_DIR="/backup/system_kopia"
cp -R $SOURCE_DIR/usr/local/share/emacs  /usr/local/share
## etc ...

# gpsd interferes with GPSbabel
yum erase gpsd
## the above removes following dependencies (strange, but unharmful):
# kdeutils-libs-4.6.5-2.fc15.i686 kdeutils-4.6.5-2.fc15.i686
# kde-settings-kdm-4.6-10.fc15.noarch kdm-4.6.5-2.fc15.i686
# digikam-1.9.0-2.fc15.i686 digikam-libs-1.9.0-2.fc15.i686
# kdeedu-marble-4.6.5-1.fc15.i686 kdeedu-marble-libs-4.6.5-1.fc15.i686
# kdeplasma-addons-4.6.5-1.fc15.i686
# kdeplasma-addons-libs-4.6.5-1.fc15.i686 ktorrent-4.1.1-1.fc15.i686
# ktorrent-libs-4.1.1-1.fc15.i686 kpackagekit-0.6.3.3-2.fc15.i686
# kde-plasma-networkmanagement-vpnc-0.9-0.53.20110616git.nm09.fc15.i686
# kde-plasma-networkmanagement-openvpn-0.9-0.53.20110616git.nm09.fc15.i686
# plasma-scriptengine-python-4.6.5-2.fc15.i686
# kdenetwork-4.6.5-1.fc15.i686 kdenetwork-libs-4.6.5-1.fc15.i686
# kde-plasma-networkmanagement-pptp-0.9-0.53.20110616git.nm09.fc15.i686
# kde-plasma-networkmanagement-0.9-0.53.20110616git.nm09.fc15.i686
# kde-plasma-networkmanagement-libs-0.9-0.53.20110616git.nm09.fc15.i686
# kdebase-workspace-4.6.5-2.fc15.i686
# kdebase-workspace-libs-4.6.5-2.fc15.i686 gpsd-2.95-6.fc15.i686
## and disables the following udev rules:
# ostrzezenie: /etc/udev/rules.d/99-gpsd.rules zapisano jako
# /etc/udev/rules.d/99-gpsd.rules.rpmsave

# ** Manual fix **
# ** Perl
# perl -MCPAN -e shell
# install Geo::Distance
# install Geo::Coordinates::DecimalDegrees 
#
# ** Google Earth
yum install redhat-lsb redhat-lsb-graphics
# download  google-earth-stable_current_i386.rpm from Google
# rpm -Uvf google-earth-stable_current_i386.rpm
#
# ** Printer (HP6P):
# ./system-config-printer
# set driver for HP LaserJet 6P = Foomatic/ljet4 (recommended one do not work)
# 
# ** Vim configuration:
# ~/.vimrc
# syntax off
#
# ** Turn on sound
# Programy->Multimedia->Mikser dzwieku
# Playback: wewnetrzny dzwiek analogowe stereo (PulseAudio Mixer)
#
# ** Thunderbird
# Compose mails in plain text (completely plain emails) 
# Edit -> Preferences -> Advance-> Config Editor
# mail.html_compose = false
# mail.identity.default.compose_html = false
#
# Plugins to install: Easy YouTube Video Downloader 
#
# ** TeX
# Install from http://www.tug.org/texlive/
# ln -s /usr/local/texlive/2011/bin/i386-linux/ /opt/tex/bin
# add  /opt/tex/bin to /etc/profile.d/local_profile.sh
#
# ** Firefox
# Plugins to install: https://addons.mozilla.org/en-US/firefox/addon/addthis/
# 
# ** Xine
# Set default window size
# ~/.xine/xinerc
# -G990x650
#

A few more strictly personal adjustments were omitted.

url | Sun, 22/01/2012 21:30 | tagi: , ,
Pierwsze próby z Google Fusion Tables

Pod tym adresem umieściłem moje ślady GPS (głównie rowerowe) z lat 2010--2012. W formacie KML bo to jedyny -- z tego co mi się wydaje -- obsługiwany przez Google Fusion Tables (GFT).

Moja procedura skopiowania danych z urządzenia GPS (zwykle jest to Garmin Legend) do GFT jest następująca:

  1. Skryptem obsługującym program gpsbabel pobieram dane z urządzenia GPS do pliku w formacie GPX.

  2. Skryptem kml2kml.sh zamieniam plik GPX otrzymany w pierwszym kroku na plik w formacie KML. Ponieważ plik ten jest ogromy (przykładowo z 60 kilowego pliku GPX gpsbabel wygenerował plik o wielkości ponad 500 kb) zostaje on za pomocą trywialnego arkusza XSLT zamieniony na znacznie mniejszą wersję uproszczoną:

    #!/bin/bash
    #
    KMLSTYLE=~/share/xml/kml2kml.xsl
    #
    # Domyslna liczba punktow na sladzie
    COUNT=99
    ## Domyslna nazwa Placemarka
    NAME=`date +%Y%m%d_%H`;
    
    while test $# -gt 0; do
      case "$1" in
    
        -name)  shift; NAME="$1";;
        -name*) NAME="`echo :$1 | sed 's/^:-name//'`";;
    
        -max)  shift; COUNT="$1";;
        -max*) COUNT="`echo :$1 | sed 's/^:-max//'`";;
        *)   FILE="$1";;
      esac
      shift
    done
    
    ## Usun rozszerzenie z nazwy pliku wejsciowego
    OUT_FILE="${FILE%.*}"
    
    TMP_FILE=/tmp/${OUT_FILE}.kml.tmp
    
    echo "Converting $FILE to ${TMP_FILE}..."
    
    if [ -f $FILE ] ; then
      ## Konwersja GPX->KML
      gpsbabel -i gpx -f $FILE -x simplify,count=$COUNT  -o kml -F $TMP_FILE
    else
      echo "*** ERROR *** File $FILE not found.... ***" ; exit 
    fi
    
    ## Konwersja do uproszczonego KMLa (KML->KML)
    echo "Converting $TMP_FILE to ${OUT_FILE}.kml with maximum $COUNT points..."
     
    echo "KML' Placemark name is: $NAME..."
    xsltproc --stringparam FileName "$NAME" -o ${OUT_FILE}.kml $KMLSTYLE $TMP_FILE
    
    echo "Done..."
    

    Zawartość arkusza XSLT zamieszczono na końcu tej notki.

  3. Do interakcji z Fusion Tables wykorzystam zmodyfikowany skrypt (nazwany ftquery.sh) znaleziony na stronach code.google.com:

    #!/bin/bash
    #
    # Copyright 2011 Google Inc. All Rights Reserved.
    # Author: arl@google.com (Anno Langen)
    # http://code.google.com/intl/pl/apis/fusiontables/docs/samples/curl.html
    # -- Modified by TP --
    MY_QUERY=$*
    
    function ClientLogin() {
      password='?1234567890?'
      email='looseheadprop1@gmail.com'
      local service=$1
      curl -s -d Email=$email -d Passwd=$password -d \
        service=$service https://www.google.com/accounts/ClientLogin | tr ' ' \n | grep Auth= | sed -e 's/Auth=//'
    }
    
    function FusionTableQuery() {
      local sql=$1
      curl -L -s -H "Authorization: GoogleLogin auth=$(ClientLogin fusiontables)" \
       --data-urlencode sql="$sql" https://www.google.com/fusiontables/api/query
    }
    
    FusionTableQuery "$MY_QUERY"
    
  4. Teraz tworzę nową tabelę (wyklikowując co trzeba w przeglądarce) MyTracks o następującej strukturze:

    ## Korzystamy z skryptu ftquery.sh
    ./ftquery.sh SHOW TABLES
    table id,name
    2590817,MyTracks
    ## Tabela MyTracks ma zatem id=2590817
    ./ftquery.sh DESCRIBE 2590817
    column id,name,type
    col4,Date,string
    col0,Start,string
    col1,Stop,string
    col2,Location,location
    col3,Description,string
    

    Kolumny zawierają odpowiednio: datę (Date), czas pierwszego wpisu na śladzie GPX (Start), czas ostatniego wpisu na śladzie GPX (Stop), ślad (Location) oraz opis (Description).

    Kolumny Tabeli w Google Fusin Tables mogą być albo napisami (STRING), liczbami (NUMBER), zawierać dane przestrzenne (LOCATION) albo czas (DATETIME). Wstępne eksperymenty z typem DATETIME wskazują, że jest z nim jakiś problem. Primo format czasu jest dość dziwaczny (np. gpsbabelowy zapis: 2012-01-07T09:19:47Z nie jest rozpoznawany). Także późniejsze filtrowanie w oparciu o kolumnę DATETIME też jakoś nie wychodzi, nawet jak zapisałem datę w formacie YYY.MM.DD, który wg. dokumentacji powinien być rozpoznawany. Nie badając sprawy dogłębnie, zmieniłem po prostu typ kolumn Date, Start, Stop na STRING.

  5. Cytując za dokumentacją GFT: In a column of type LOCATION, the value can be a string containing an address, city name, country name, or latitude/longitude pair. The string can also use KML code to specify a point, line, or polygon... (cf. SQL API: Reference ). Zatem żeby wstawić linię śladu wystarczy przesłać napis zawierający współrzędne opakowane w następujący sposób:

    <lineString><coordinates>lng,lat[,alt] lng,lat[,alt]...<coordinates></lineString>
    

    Do tego służy następujący skrypt:

    #!/bin/bash
    #
    STYLE=~/share/xml/gpxtimestamp.xsl
    MYTRACKS_TABLE_ID="2590817"
    GPX_FILE=$1
    KML_FILE="${GPX_FILE%.*}".kml
    
    ## Ustal czas od--do sladu 
    STARTTIME=`xsltproc --param Position '"First"' $STYLE $GPX_FILE`
    STOPTIME=`xsltproc --param Position '"Last"' $STYLE $GPX_FILE`
    DATE=`xsltproc --param Position '"First"' --param Mode '"Date"' $STYLE $GPX_FILE`
    
    if [ ! -f $GPX_FILE ] ; then echo "*** Error *** No GPX file: $GPX_FILE" ; exit ; fi
    if [ ! -f $KML_FILE ] ; then echo "*** Error *** No KML file: $KML_FILE" ; exit ; fi
    
    ## ## Wycinamy nastepujacym skryptem z uproszczonego pliku KML:
    TRACK=`perl -e 'undef $/; $t = <>; $t =~ m/(<coordinates>.*<\/coordinates>)/s; \
        $t = $1; $t =~ s/[ \t\n]+/ /gm; print $t;' $KML_FILE`
    TRACK="<LineString>$TRACK</LineString>"
    
    ftquery.sh "INSERT INTO $MYTRACKS_TABLE_ID (Date, Start, Stop, Location, Description) 
      VALUES ('$DATE', '$STARTTIME', '$STOPTIME', '$TRACK', '') "
    

    I działa, tj. przesyła co trzeba na moje konto Google.

Google Fusion Table map view in Chrome
GFT map view in Chrome

Google się chwali, że GFT radzi sobie z ogromnymi zbiorami danych. Mój ma -- na tem chwilem -- ponad 150 wierszy, a w każdym 99 punktów na śladzie, co daje łącznie approx 15,000 punktów do wykreślenia. Firefox/Opera coś tam wyświetla ale niewiele widać. Chrome radzi sobie najlepiej -- faktycznie da się to obejrzeć, przesuwać, powiększać... Wprawdzie nic z tych danych nie wynika, ale to już nie jest pytanie do Google.

Także filtr w połączeniu z mapą działa w Firefoksie i Operze tak sobie. Wybieram zbiór tras, np. za pomocą warunku Date < 20100901 (na tem chwilem jest to 7 wierszy) następnie klikam Visualise Map i guzik -- nic nie widać. Ale znowu w Chrome jest znacznie lepiej. Dowód w postaci zrzutu ekranu obok. Także wklejony poniżej link do mapy (pobrany przez kliknięcie w guzik Get embeddable link) daje pozytywny wynik:

Przynajmniej w mojej wersji FF (8.0).

Arkusze XSLT wykorzystane w skryptach

Zamiana pliku KML na uproszczony plik KML:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:kml="http://www.opengis.net/kml/2.2" >

<xsl:output method="xml"/>
<xsl:param name='FileName' select="'??????'"/>

<xsl:template match="/">

<kml xmlns="http://www.opengis.net/kml/2.2"
	xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document>
<Placemark>

<name><xsl:value-of select="$FileName"/></name>

<MultiGeometry><LineString>
<tessellate>1</tessellate>
<coordinates>

<xsl:for-each select="//kml:Placemark//kml:LineString">

<xsl:value-of select="kml:coordinates"/>

</xsl:for-each>

</coordinates></LineString></MultiGeometry></Placemark>
</Document></kml>

</xsl:template>
</xsl:stylesheet>

Wydrukowanie daty/czasu z pliku w formacie GPX:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:gpx="http://www.topografix.com/GPX/1/0">

<xsl:output method="text"/>
<xsl:param name='Position' select="'First'"/>
<xsl:param name='Mode' select="'Time'"/>

<xsl:template match="/" >

<xsl:for-each select='//*[local-name()="trkpt"]'> 

  <xsl:choose>
    <xsl:when test="position()=1 and $Position='First' and $Mode='Time'">
      <xsl:value-of select='substring(*[local-name()="time"], 12, 8)'/> 
      <xsl:text>
</xsl:text>
    </xsl:when>
    <xsl:when test="position()=1 and $Position='First' and $Mode='Date'">
      <xsl:value-of select='translate(substring(*[local-name()="time"], 1, 10), "-", "")'/>
      <xsl:text>
</xsl:text>
    </xsl:when>
    <xsl:when test="position()=last() and $Position='Last'">
      <xsl:value-of select='substring(*[local-name()="time"], 12, 8)'/>
      <xsl:text>
</xsl:text>
    </xsl:when>
  </xsl:choose>  

</xsl:for-each>
  
</xsl:template>
</xsl:stylesheet>

Dokumentacja

  1. SQL API: Developer's Guide.

  2. SQL API: Reference .

  3. Google fusion tables cheat sheet.

url | Mon, 09/01/2012 11:51 | tagi: , , , , ,
SELinux clashes with Google Chrome

Cannot start Google Chrome:

$ google-chrome 
/opt/google/chrome/chrome: error while loading shared libraries: cannot restore segment prot after reloc: Permission denied

SE Linux is supposed to cause the problem. The following solution is suggested here and works:

# ## execute as root the following two magic commands:
semanage fcontext -a  -s system_u  -t usr_t /opt/google/chrome/chrome-sandbox
restorecon -v /opt/google/chrome/chrome-sandbox

url | Mon, 09/01/2012 09:50 | tagi: , ,