środa, 12 stycznia 2011

Bieżąca odmiana pisma w LaTeX

Dokument zawierający masę skrótowców wygląda fatalnie. Wykombinowałem sobie zatem umieszczać je w poleceniu \acro:


\newcommand\acro[1]{\textsc{\lowercase{#1}}}

Problem jest jak \acro wystąpi we fragmencie składanym odmianą półgrubą (kursywą też, ale trudno--nie mam pochyłych kapitalików), bo zamiast kapitalików pojawiają się wprawdzie grube, ale małe litery. Szukałem jakiegoś pakietu na taką okoliczność -- nic mi nie wpadło w oko więc na szybko wymyśliłem coś takiego:


\def\BFseriesCode{bx}
\newcommand\acro[1]{\ifx \f@series \BFseriesCode #1\else\textsc{\lowercase{#1}}\fi}

Deklaracja \f@series zawiera kod bieżącej odmiany; dla odmiany grubej/półgrubej (pakiet polski) będzie to bx. Zatem \ifx \f@series \BFseriesCode to test czy \f@series jest równy bx (tak to trzeba dziwacznie w LaTeXu zapisywać). Jeżeli tak, to wstawiany jest ,,goły'' argument #1, a jeżeli nie, to \textsc{\lowercase{#1}}.

środa, 29 grudnia 2010

Wydatki na rowery

Koniec roku sprzyja publikowaniu różnych podsumowań. Ja też coś podsumuję -- moje wydatki rowerowe w latach 2001--2010, tj. ostatnie dziesięć lat (w PLN):


| 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 | Razem |
+----------------------------------------------------------------------------+----------+
| 2663.1 4132.2 9771.2 1036.8 690.0 3826.5 990.8 2084.1 2282.7 7067.7 | 34,545.0 |

W tym czasie kupiłem 2 rowery szosowe, 4 mtb i 3 dziecięce:-)

Dopisane 31 stycznia 2010: Mówiąc dokładnie 1,5 roweru szosowego, tj. dwie ramy (bo pierwsza pękła) i dwa widelce a reszta ta sama: Campagnolo Daytona (obecnie Centaur). Piasty, klamki, hamulce, przerzutki, środek, korba działają bez zarzutu po przejechaniu 46,475 km. Wymieniane tylko to co się zużywa: łańcuch, tryb i klocki...

Dopisane 31 stycznia 2010, po południu: A i jeszcze jedna ciekawostka 34,545 - 7,613 = 26,932 PLN. Te 7,613 to tyle co wydała reszta rodziny:-). W tym czasie przejechałem 74,730 km, co daje 26,932/74,730 = 0.36 PLN/km. Mimo wszystko znacząco taniej niż taksówką, ale już pociągiem niekoniecznie, bo przykładowo 60 km wycieczka to 21,50 PLN...

Oceniając z tej perspektywy wydatki rodziny -- niby znacząco mniejsze (trzy osoby wydały 28% tego co ja) -- i zakładając, że przejechali 7,5 tys (tj. przeciętnie 2,5 tys na łeb -- pewnie mniej ale niech im będzie) otrzymamy 7613/7,500 = 1.02 PLN/km... Nieefektywna alokacja zasobów, jednym słowem.

środa, 8 grudnia 2010

Picasa Linux signup problem

Nie mogę się zalogować w programie picasa (wersja dla linuksa, 3.0 beta). Wpisując Picasa Linux signup problem do Google znalazłem podpowiedź:


cp /usr/lib/wine/wininet.dll.so /opt/google/picasa/3.0/wine/lib/wine/

U mnie przynajmniej powyższe działa.

Się przy okazji okazało, że zdjęcia zawierające współrzędne geograficzne przesłane via formularz nie są traktowane jako geotagowane . Picasaweb rozpoznaje zdjęcia jako geotagowane jeżeli są ładowane programem picasa. Na flickr.com jest pod tym względem prościej, bo współrzędne geograficzne są pobierane ze zdjęcia po stronie serwera--wystarczy przesłać plik i nie jest istotne w jaki sposób...

niedziela, 28 listopada 2010

Zdjęcia z flickr.com na googlemaps

Flickr2Map to usługa, dzięki której użytkownicy flickr.com mogą wyświetlić geotagowane zdjęcia m.in. na google maps. Przykład:


http://www.robogeo.com/Flickr2Map?referer=http://www.flickr.com/photos/tprzechlewski/3087054865/&type=map&view=satellite

Żeby za dużo nie musieć wpisywać, zrobiłem skrót do usługi.

czwartek, 25 listopada 2010

Introduction to Data Technologies

Przypadkowo znalazłem całkiem grubą książkę nt. Introduction to Data Technologies. Na super rewelację toto nie wygląda, ale w wolnej chwili obejrzę dokładniej...

poniedziałek, 22 listopada 2010

Filmiki z przejażdżek rowerowych

IMHO śmieszna etiuda z niedzielnego rowerowania (oryginalna ścieżka dźwiękowa).

tutaj dłuższa forma z tego samego dnia...

sobota, 20 listopada 2010

Przykład wykorzystania pakietu keyval

LaTeXowe makro z dwoma opcjonalnymi i dwoma obowiązkowymi argumentami. Wartością domyślną opcjonalnych argumentów są argumenty wymagane. Można to zaimplementować następująco:


\documentclass{article}
\usepackage{keyval}
\makeatletter
%% ...
\define@key{hopla}{foo}{\def\HoplaArgFoo{#1}}
\define@key{hopla}{bar}{\def\HoplaArgBar{#1}}
\newcommand\HoplaCommand[3][]{%
%% `reset' wartości poleceń \HoplaArgFoo/\HoplaArgBar
\let\HoplaArgFoo \@empty \let\HoplaArgBar \@empty
\setkeys{hopla}{#1}%%
%% jeżeli \HoplaArgFoo jest empty, tj. nie podano argumentu foo:
\ifx\HoplaArgFoo \@empty \def\HoplaArgFoo{#2} \fi
%% to samo dla \HoplaArgBar:
\ifx\HoplaArgBar \@empty \def\HoplaArgBar{#3} \fi
%% demonstracja:
FooArg: \HoplaArgFoo. BarArg: \HoplaArgBar. [#2 #3]\par }
\makeatother
%% ...
\begin{document}

\HoplaCommand[foo=OA1,bar=OA2]{Arg1}{Arg2}

\HoplaCommand[bar=OA2]{Arg1}{Arg2}

\HoplaCommand{Arg1}{Arg2}
\end{document}

BTW: plik latex.ltx zawiera \def\@empty{} -- gdyby ktoś był ciekaw co to za tajemnicze \@empty.

piątek, 19 listopada 2010

Sprawdzanie poprawności dokumentów na pinkaccordions.homelinux.org

Sprawdziłem dziś http://pinkaccordions.homelinux.org/wblog za pomocą xmllinta i ponieważ się okazało, że są błędy postanowiłem skończyć z partyzantką. Od dziś kilka stron będę weryfikował automatem, np. w taki sposób:


SGML_CATALOG_FILES=~/etc/xml/catalog xmllint --catalogs --noout --valid http://pinkaccordions.homelinux.org/

Jeżeli korzystamy z domyślnego /etc/xml/catalog, to podanie SGML_CATALOG_FILES jest zbędne. W tymże pliku ~/etc/xml/catalog dodałem wpisy:


<uri name="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
uri="file:///home/tomek/etc/xml/dtd/xhtml/1.1/xhtml11.dtd" />
<uri name="http://www.w3.org/TR/ruby/xhtml-ruby-1.mod"
uri="file:///home/tomek/etc/xml/dtd/xhtml/1.1/xhtml-ruby-1.mod" />
<rewriteSystem systemIdStartString="http://www.w3.org/TR/xhtml-modularization/DTD/"
rewritePrefix="file:///home/tomek/etc/xml/dtd/xhtml/1.1/" />
<rewriteURI uriStartString="http://www.w3.org/TR/xhtml-modularization/DTD/"
rewritePrefix="file:///home/tomek/etc/xml/dtd/xhtml/1.1/" />

Uwaga: pierwsze dwa wiersze nie wystarczą, bo xhtml11.dtd dołącza całą chmarę innych plików -- konkretnie 35 plików .mod oraz 3 .ent. Wszystkie te pliki skopiowałem do /home/tomek/etc/xml/dtd/xhtml/1.1/

Teraz wywołuję xmllint za pomocą prostego skryptu:


#!/bin/bash
# Sprawdzanie poprawnosci wybranych stron na pinkaccordions.homelinux.org
LOGFILE=~/Logs/WWW/xhtml-errors.log
XMLCATALOG=~/etc/xml/catalog
LINT=/usr/bin/xmllint
TODAY=`date`

for url in 'http://pinkaccordions.homelinux.org/wblog' 'http://pinkaccordions.homelinux.org/' ...
do
SGML_CATALOG_FILES=$XMLCATALOG $LINT --catalogs --noout --valid $url

if [ "$?" -ne 0 ] ; then
echo "Error found in $url [$TODAY]" >> $LOGFILE
fi
done

Ewentualnie można też tak:


#!/usr/bin/perl
# Sprawdzanie poprawnosci za pomoca `W3C Markup Validation Service'
use LWP::Simple;
$LOGFILE='/home/tomek/Logs/WWW/xhtml-errors.log';
my $today = localtime;

open LOG, ">>$LOGFILE";

my @URLs = (
'http://validator.w3.org/check?uri=http%3A%2F%2Fpinkaccordions.homelinux.org%2Fwblog',
'http://validator.w3.org/check?uri=http%3A%2F%2Fpinkaccordions.homelinux.org',
... );

foreach $url (@URLs) { print STDERR "Sprawdzam: $url...\n";
$content = get("$url");
if ($content =~ /Information on validation.*Congratulations/m) { print STDERR "$url is OK\n" } else
{ print LOG "$today => errors found => $url\n" ; }
}

close (LOG);

W3C ma też API do serwisu walidacyjnego, ale skomplikowane to API jest...

piątek, 12 listopada 2010

Uruchomienie Smart PLS w Linuksie

Program smartpls, który służy do modelowania ścieżkowego cząstkową metodą najmniejszych kwadratów (PLS path modelling), jest typowym przykładem aplikacji napisanej przez amatora:-). Program jest za free, ale autor nie udostępnia kodu źródłowego (pewnie się wstydzi).

W systemie FC8 działał a w FC11 przestał działać, zgłaszając na starcie błąd:


lookup error: ~/spls/configuration/org.eclipse.osgi/bundles/58/1/.cp/libswt-mozilla-gtk-3232.so: \
undefined symbol: _ZN4nsID5ParseEPKc

Pomogło doinstalowanie starego Firefoxa (w wersji 2). Przykładowo jeżeli stary FF znajduje się w katalogu ~/bin/ff2, to program działa uruchomiony w następujący sposób:


MOZILLA_FIVE_HOME=~/bin/ff2 spls

Napisałem o ww. problemie na forum spls -- może autor się przejmie i skompiluje spls w wersji korzystającej z FF3; albo --co też jest bardzo prawdopodobne -- zmiany umożliwiające kompilację z FF3 są tak duże, że mu się nie będzie chciało...

czwartek, 4 listopada 2010

Sony Ericsson Elm J10i2

Nie to żebym się chwalił ale od pewnego czasu posiadam. Ten telefon ma GPS...

Jak się zdjęcia robi, to można ustawić aparat tak, żeby zdjęcia były geo-tagowane, tj. żeby były dodawane współrzędne geograficzne. Ale jest pewien myk. Mianowicie jeżeli GPS nie będzie włączony -- cokolwiek to znaczy -- to geo-pozycja zdjęcia będzie wyznaczona tylko w oparciu o numer komórki (cell). Wygląda to tak:

$ exiftool -X -xmp:all dsc00001.jpg

<rdf:Description rdf:about='dsc00001.jpg'
xmlns:et='http://ns.exiftool.ca/1.0/' et:toolkit='Image::ExifTool 8.06'
xmlns:XMP-rdf='http://ns.exiftool.ca/XMP/XMP-rdf/1.0/'
xmlns:XMP-cell='http://ns.exiftool.ca/XMP/XMP-cell/1.0/'>
<XMP-rdf:About> </XMP-rdf:About>
<XMP-cell:Mcc>260</XMP-cell:Mcc>
<XMP-cell:Mnc>3</XMP-cell:Mnc>
<XMP-cell:Lac>30203</XMP-cell:Lac>
<XMP-cell:Cellid>32930160</XMP-cell:Cellid>
<XMP-cell:TagR>5</XMP-cell:TagR>
<XMP-cell:Cgi>260-3-30203-32930160</XMP-cell:Cgi>
</rdf:Description>
</rdf:RDF>

Można powyższe zamienić na współrzędne wpisując:

http://www.opencellid.org/cell/get?mcc=260&mnc=3&cellid=32930160&lac=30203

Ale wyniki jest tylko przybliżony...

Teraz w instrukcji telefonu jest, że GPS sam się wyłącza jak nie jest potrzebny. A jak go włączyć na zicher? Zainstalowałem TrekBuddy i używam go jako loggera. Efekt uboczny jest taki, że GPS działa non-stop [zapewne da się to także osiągnąć inaczej].

Zdjęcia zrobione w takim trybie są już oznaczone precyzyjnie:

exiftool -X  j10i10_1103007.jpg | grep GPS
xmlns:GPS='http://ns.exiftool.ca/EXIF/GPS/1.0/'
<GPS:GPSVersionID>2.2.0.0</GPS:GPSVersionID>
<GPS:GPSLatitudeRef>North</GPS:GPSLatitudeRef>
<GPS:GPSLatitude>54 deg 26' 22.62"</GPS:GPSLatitude>
<GPS:GPSLongitudeRef>East</GPS:GPSLongitudeRef>
<GPS:GPSLongitude>18 deg 33' 2.50"</GPS:GPSLongitude>
<GPS:GPSAltitudeRef>Above Sea Level</GPS:GPSAltitudeRef>
<GPS:GPSAltitude>41 m</GPS:GPSAltitude>
<GPS:GPSMapDatum>WGS-84</GPS:GPSMapDatum>
<Composite:GPSAltitude>41 m Above Sea Level</Composite:GPSAltitude>
<Composite:GPSLatitude>54 deg 26' 22.62" N</Composite:GPSLatitude>
<Composite:GPSLongitude>18 deg 33' 2.50" E</Composite:GPSLongitude>
<Composite:GPSPosition>54 deg 26' 22.62" N, 18 deg 33' 2.50" E</Composite:GPSPosition>

Natomiast zapisywany przez TrekBuddy ślad w formacie NMEA jest do kitu. Na blogu blog.4zal.net znalazłem informację, że w istocie: ,,osoby chcące skorzystać z logowania, a posiadające GPS wbudowany w komórkę powinny uważać na logowanie w formacie NMEA. W przypadku niektórych telefonów (np. Sony Ericsson) tak wygenerowane dane będą niekompletne''.

Zatem przestawiłem format na GPX i dziś zrobiłem pierwszy test. Poszedłem do Oliwy [na wywiadówkę] i z powrotem z telefonem i Garminem w kieszeni.

Ślady są tutaj. Niebieski to Elm, czerwony -- Legend. Hmm....

Dopisane 11 stycznia 2011: Dłuższe hmmmmmm jest takie, że każde zdjęcie kosztuje 25 gr. Wybierając opcję geotagowania wyświetla się komunikat, że to może kosztować. No więc nie tylko może ale kosztuje (Orange). Zresztą jak ustaliliśmy wyżej pozycja ustalana domyślnie przez telefon jest taka sobie dokładna, a ponieważ Elm ma wbudowany odbiornik GPS, to przecież teoretycznie mógłby wstawiać współrzędne bez łączenia się z centralą... Ale nie ma tak, trzeba płacić nawet jak się nie korzysta -- jak się wyłączy opcję dodawania współrzędnych, to zdjęcia nie są geotagowane. Jednym słowem kolejna wielka lipa...

Nawet specjalnie tego nie żałuję, bo marny ten GPS -- jak startuje 5 minut to jest szybko.