niedziela, 8 stycznia 2012

Ćwiczenie z XSLT

Zadanie polega na wydłubaniu z pliku GPX pierwszego i ostatniego elementu <time>, który jest dzieckiem elementu <trkpt>. (Nie może być po prostu <time>, bo element ten występuje także w innym kontekście.)

Coś takiego wymyśliłem:


<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:template match="/" >

<xsl:for-each select='//gpx:trkpt'>

<xsl:if test="position()=1 and $Position='First'">
<xsl:value-of select='gpx:time'/>
<xsl:text>&#10;</xsl:text>
</xsl:if>

<xsl:if test="position()=last() and $Position='Last'">
<xsl:value-of select='gpx:time'/>
<xsl:text>&#10;</xsl:text>
</xsl:if>

</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

W praniu się okazało, że jest jeden drobny, komplikujący życie feler-nie-feler. Struktura plików GPX (w zależności od tego czym są one generowane) jest identyfikowana albo z przestrzenią nazw http://www.topografix.com/GPX/1/0 albo z http://www.topografix.com/GPX/1/1. Praktycznie żadna różnica, ale szablon przestaje działać. Aby uodpornić szablon na wersje formatu można zamienić:


<xsl:for-each select='//gpx:trkpt'>

na


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

Teraz szablon `reaguje' na element <trkpt> z dowolnej przestrzeni nazw. Oczywiście reguła wyboru węzłów stała się teraz `mniej specyficzna', co w przypadku bardziej skomplikowanych transformacji może nie być najlepszym pomysłem, ale w przypadku tak prostego schematu jak GPX i banalnej transformacji, jak powyższa nie powinno być problemów.

Podobnie można zamienić:


<xsl:value-of select='gpx:time'/>

na:


<xsl:value-of select='*[local-name()="time"]'/>

Teraz, przykładowo uruchomienie xsltproc (opisany wyżej szablon jest zawartością pliku gpxtimestamp.xsl):


xsltproc --param Position '"First"' gpxtimestamp.xsl 20120107.xml
xsltproc --param Position '"Last"' gpxtimestamp.xsl 20120107.xml

Wypisuje odpowiednio zawartość pierwszego i ostatniego elementu <time>.

wtorek, 20 grudnia 2011

Crime Story z polityką w tle w relacji z Głosu Cadyka

Historia faceta, który zrabował (bo nie ukradł) plecak + klapki wg relacji z Wybiórczej (zwanej także Głosem Cadyka):

1 sierpnia, godz. 17.45. Warszawa. 20-letni Damian K. ps. ''Koziołek'' idzie na trening. Przystaje na światłach koło przystanku tramwajowego ''Dzika''. Dostrzega trzech mężczyzn biegnących w jego kierunku.
[...]

Było tak: Damian K. kuli się na podłodze. Kopią go ''Staruch'' i ''Byku'' (tak, ze względu na posturę, określa go pokrzywdzony). Trzeci -- ''Mały'' -- nie może się dopchać.
[...]

Nie wiadomo też, dlaczego doszło do napadu. ''Koziołek'' uważa, że chcieli mu ukraść torbę, bo liczyli, że są w niej dokumenty i dowiedzą się, gdzie mieszka. To domniemania. Motyw znają jedynie oskarżeni. Jednak ''Staruch'' milczy. ''Byku'' i ''Młody'' też. Prokuratura, godząc się na dobrowolne poddanie się karze, mogłaby zażądać szczegółowych wyjaśnień od dwóch oskarżonych. Ale rezygnuje z okazji, by złamać zmowę milczenia panującą w środowisku kiboli.

Piotr Machajski/2011-12-19. Wytłuszczenia moje...

Ewidentnie zatem było ich czterech: ,,Staruch'', ,,Byku'', ,,Mały'' i ,,Młody''.

PS: mnie w tej historii najbardziej intryguje fakt że policja całego świata w sytuacji takiej jak domniemany rozbój p. Starucha przyszłaby po niego rano we trzech zamiast mobilizować batalion i zatrzymywać gościa w środku tłumu takich jak on na mieście. Czyżby zgadywali życzenia premiera? A może nie zgadywali?

PS2: przestaje też dziwić określanie GC terminem G#wno Prawda albo -- w wersji <18 lat -- Nowe Radio Erewań.

poniedziałek, 5 grudnia 2011

Kamień graniczny WMG w Matarni


#1: Selfportrait

#2: Janek H.

Za Wikipedią: Parafia św. Walentego w Gdańsku powstała na przełomie XIII/XIV wieku w kościele zbudowanym przez cystersów, do których należała aż do powstania listopadowego w 1830, po którym przeszła pod jurysdykcję diecezji chełmińskiej, a w 1993 po zmianach terytorialnych została włączona do diecezji gdańskiej. Obecny barokowo-rokokowy wystrój kościoła pochodzi z okresu po potopie szwedzkim w 1655, podczas którego kościół uległ znacznemu zniszczeniu.

Kościół jest mały i słabo widoczny od strony ulic Słowackiego/Budowlanych. Znajduje się obok niewielkiego cmentarza. Przy kościele jest kilka starych grobów. Na cmentarzu nie byłem...

Ciekawostką jest bocianie gniazdo znajdujące się na dachu kościoła.

Koło plebanii parafii św. Walentego jest wkopany słup graniczny Wolnego Miasta Gdańska. Dzisiaj tam byłem z kolegą Jankiem H. Kolega H. się wstydzi więc na zdjęciu #2 jest tylko jego ręka.

Po obejrzeniu słupa (długo nam to nie zajęło) wróciliśmy do Sopotu przez Dolinę Radości, po drodze oglądając jeszcze owocnik soplówki jeżowatej (Hericium erinaceus).

Nota bene trasa do Matarni doliną Radości jest do wykonania przez każdego, kto umie na rowerze jeździć. Można z Matarni wrócić tą samą drogą albo pojechać naokoło wzdłuż potoku Strzyży przez Matemblewo. Droga jest pokryta asfaltem za wyjątkiem fragmentu od kościoła św. Walentego do Matemblewa, przy czym w lesie wzdłuż Strzyży może być błoto i piach (ale to niewielki fragment). Poniżej plik GXP route z zaznaczonymi ciekawymi miejscami: pokaż.

sobota, 3 grudnia 2011

Ormo czuwa

Obrazek z dziś. Prawie pusta, prosta droga (konkretnie ulica Nowatorów w Gdańsku). Gość się uparł, że nauczy rowerzystów, iż powinni jechać ścieżką dla rowerów a nie jezdnią.

Na szczęście na tyle był kumaty, że nie usiłował nikogo łapać (za klapy albo coś w tym stylu), bo by jeszcze poprzewracał.

Takie rzeczy tylko w BudyńLandzie:-)

środa, 30 listopada 2011

Fedora 15 bugs

Fedora Desktop variant #1
XFce variant #1
Fedora Desktop variant #2
XFce variant #2

As I've found Gnome 3 unusable I've switch to Xfce which is much better than Gnome 3 but not perfect:

  • Freezes frequently if save session is active. This problem was solved by switching off save session feature.

  • Changes workspace layout from time to time. Most of time it displays variant #1 of the Desktop but sometimes the desktop switches to variant #2. Have no idea why. Unsolved.

  • Problems (fortunately very rarely) with The Workspace Switcher panel plugin (which allows one to switch between virtual desktops and/or display workspace layout in the panel)---number of displayed workspaces is suddenly reduced to 1 (or even 0). Unsolved as well.

Both unsolved `features' are annoying.

Finally I cannot update Fedora:


## LANG=C to switch to English
LANG=C yum update

Error: Package: ffmpeg-libs-0.6.90-0.2.rc0.fc15.i686 (@rpmfusion-free)
Requires: libx264.so.114
Removing: x264-libs-0.0.0-0.29.20110227.fc15.i686 (@rpmfusion-free)
libx264.so.114
Updated By: x264-libs-0.0.0-0.30.20110620.fc15.i686 (rpmfusion-free-updates)
Not found
You could try using --skip-broken to work around the problem

I have downgraded ffmpeg-libs (/etc/yum.conf contains exclude=ffmpeg-libs ffmpeg), otherwise I was unable to play AVI files. But sopcast insists on packages which are in conflict with my setup. In result I haven't sopcast installed.

I've been using Linux as my desktop operating system for about 12 years. I have started with Red Hat 4.0 (or 5.0) in 1989 or 1990 and since then I've stuck with Red Hat/Fedora. Actually I have never used MS Windows except version 95 (for starting DOS box) or when forced to do so. Looking back at all the Fedoras/RedHats I have used I am disappointed. Bugs were in every distributions, but with the help of Google I was able to cope with them. For the first time I cannot...

piątek, 18 listopada 2011

Problemy z updmap w TeXlive 2011

Powtórzyłem procedurę opisaną w Próbowanie fontów STIX, tj.:


otftotfm -a -e qx.enc STIXGeneral.otf STIXGeneral--qx

Powyższe generuje pliki vf/tfm/pfb w odpowiednie podkatalogi katalogu /home/tomek/.texlive2011. Uruchamia nawet program updmap, ale coś tam jest nie tak:


otftotfm -a -e qx.enc STIXGeneral.otf STIXGeneral--q
I had to round some heights by 18.0000000 units.
I had to round some depths by 3.0000000 units.
I had to round some heights by 18.0000000 units.
I had to round some depths by 3.0000000 units.
Config file: "/home/tomek/.texlive2011/texmf-config/web2c/updmap.cfg"
/home/tomek/.texlive2011/texmf-config/web2c/updmap.cfg unchanged. Map files not recreated.
/opt/tex/bin/updmap: Updating ls-R files.
otftotfm: warning: `updmap --nomkmap --enable Map \
/home/tomek/.texlive2011/texmf-var/fonts/map/dvips/lcdftools/lcdftools.map;
updmap >/dev/null 2>&1' exited with status 1;
otftotfm: warning: run it manually to check for errors

Powtarzam zatem:


$ updmap --nomkmap --enable Map /home/tomek/.texlive2011/texmf-var/fonts/map/dvips/lcdftools/lcdftools.map
updmap --nomkmap --enable Map /home/tomek/.texlive2011/texmf-var/fonts/map/dvips/lcdftools/lcdftools.map
Config file: "/home/tomek/.texlive2011/texmf-config/web2c/updmap.cfg"
/home/tomek/.texlive2011/texmf-config/web2c/updmap.cfg unchanged. Map files not recreated.
/opt/tex/bin/updmap: Updating ls-R files.
## nie wiem o co chodzi, ale jedziemy dalej
##
$ updmap
updmap
Config file: "/home/tomek/.texlive2011/texmf-config/web2c/updmap.cfg"
.. .. ..
ERROR: The following map file(s) couldn't be found:
/home/tomek/.texlive2011/texmf-var/fonts/map/dvips/lcdftools/lcdftools.map
Did you run mktexlsr?

updmap nie może zatem odszukać pliku lcdftools.map zadeklarowanego w pliku ~/.texlive2011/texmf-config/web2c/updmap.cfg

Próby ustalenia co jest nie tak zawiodły:


kpsewhich -expand-path '$TEXFONTMAPS'

Wydruk z powyższego zawiera ~/.texlive2011/texmf-var/fonts/map/dvips/lcdftools a wykonanie mktexlsr nie pomaga.

Skopiowałem zatem lcdftools.map do katalogu systemowego /usr/local/texlive/2011/texmf-var/fonts/map/dvips/updmap. Potem


## jako root
mktexlsr ;
## jako zwykły użytkownik, bo pliki tfm/vf/pfb są w moim katalogu domowym
updmap

Teraz działa. Wygląda na błąd w TL 2011. Znalazłem nawet w google radę zdesperowanego użytkownika, który radził wywalenie updmap.

Słuszną linię ma nasza partia

Podatki w górę, świadczenia budżetowe w dół, ,,bierzemy się do roboty'' z Nowakiem i Arłukowiczem, no i najważniejsze -- 300 PLN/łeb funkcjonariusza PP (Policji Państwowej) od lipca przyszłego roku.

Mam tylko jedno pytanie czy te 300 PLN to nie za mało i czy od lipca to nie za późno?

świnie
Snowball (pierwszy od prawej)

Dopisane 20 listopada 2011: Teraz jest moda na zwiększające klikalność zwykle kretyńskie mini-ankiety dodawane obok tekstu. To ja też dodam, tyle, że taką fake:

Dlatego ministrowie, niezależnie od dziedziny, jaką będą się zajmowali, będą musieli precyzyjnie planować i zdawać raporty...

Kto powiedział powyższe: 1. Premier Nikodem Dyzma w powieści Kariera Nikodema Dyzmy Tadeusza Dołęgi-Mostowicza; 2. Premier Donald Tusk w expose wygłoszonym 18. listopada 2011 r.; 3. Obaj wymienieni w pytaniach 1 i 2; 4. Świnia Snowball w powieści Animal Farm George'a Orwella.

wtorek, 8 listopada 2011

Data sets for statistical education

IMHO there is acute lack of interesting data sets for statistical education purposes, particularly cross-sectional in nature and not related to biology/medicine/astronomy. The domains I am looking for are management, demography and economics but sport is OK too as many students are interested in sport.

I agree there is a lot of data published (mainly) by various government agencies but its almost 100% time series data. There are many test datasets too (like UC Irvine Machine Learning Repository), but they are usually boring, often categorical and short:-)

To remedy a little the lack of good data I compiled myself a few databases and I intend to add more in the future. At present my repository consists of 4 datasets concerning: -- 1100 or so German WW2 U-boots; -- 2200 or so Titanic passangers/crew members -- 1200 or so Rugby Union players who took part in RWC 2011 and RWC 2007 tournaments.

The repository is available at my github account.

niedziela, 6 listopada 2011

Zmarł John McCarthy

Aż wstyd, że dopiero dziś się dowiedziałem.

24. października br. zmarł John McCarthy, twórca języka LISP (1958 r.), drugiego po Fortranie języka wysokiego poziomu powszechnie używanego do dziś. Ja też -- nie chwaląc się -- czasami go używam, choć go prawie nie znam:


(defun My-count-words (&optional begin end)
"count words between BEGIN and END (region); if no region defined,
count words in buffer"
(interactive "r")
(let ((b (if mark-active begin (point-min)))
(e (if mark-active end (point-max))))
(message "Word count: %s" (how-many "\\w+" b e))))

Nieoficjalna nazwa LISPa, to Lots of Irrelevant Silly Parentheses.

środa, 2 listopada 2011

Ostatnie prosta

Dziś przejeżdżając skromne 30 km, dociągnąłem do 149,925 km życiowego przebiegu... Zostało zatem zaledwie 80 km do okrągłej liczby 150 tys...