wtorek, 17 lipca 2012

My sheevaplug seems to be broken

Żarło, żarło i zdechło -- odpowiedział chłop na pytanie czemu krowa nie żyje...

Sheevaplug mi padła znienacka doszedłszy do 240 dni uptime'u. Diody w większości się świecą, ale po podłączeniu kablem USB nic się nie dzieje (nie ma /dev/ttyUSB0 ani żadnego innego /dev/tty*) , wzw. z tym nie można się skomunikować z urządzeniem.

Kilka trików dotyczących LaTeXa

Parę trików LaTeXa, na które wpadłem w/z ze składanymi ostatnio dokumentami.

Szerokie tabele (lub rysunki) wystające na zewnętrzny margines:


\usepackage{ifoddpage}
%% Istotne są polecenia \unskip i \ignorespaces, inaczej zawartość nie jest
%% wyrównana do wewnętrznego marginesu:
\newenvironment{ShiftToOuterMargin}{\leavevmode
\noindent \hbox to\textwidth \bgroup\checkoddpage\unskip \ignorespaces
\ifoddpage \else\hss\fi}{\ifoddpage\hss\else\fi\unskip\egroup}
%% ... ... ...
\begin{ShiftToOuterMargin}
\begin{tabular}{|l|rrrr|rrrr|} ...
\end{tabular}
\end{ShiftToOuterMargin}

Do ustalenia, czy bieżąca strona jest parzysta czy nieparzysta używam pakietu ifoddpage (polecenia \checkoddpage oraz \ifoddpage). Zwykły zapis \ifodd\c@page nie zadziała z oczywistych względów. Więcej na ten temat znajduje się w TeX Frequently Asked Questions.

Zapamiętanie zawartości tekstu składanego literalnie (pakiet fancyvrb; otoczenie SaveVerbatim i polecenie \BUseVerbatim):


\usepackage{fancyvrb}
%% ... ... ...
\begin{SaveVerbatim}{VerbEnv}
... tekst literalny ...
\end{SaveVerbatim}
\begin{ShiftToOuterMargin}
\BUseVerbatim{VerbEnv}
\end{ShiftToOuterMargin}

Formatowanie przypisów w poprzek reguł LaTeXa: przypis ma być umieszczony w kolumnie tekstu wciętej o wielkość wcięcia akapitowego z lewej strony. Na marginesie (o wielkości wcięcia akapitowego) ma być umieszczony numer odsyłacza. Numer przypisu nie we być złożony we frakcji górnej ale stopniem podstawowym pisma.

Pomysł rozwiązania zgłoszony na GUST-l (autor anonimowy):


\makeatletter
\newdimen \@parindent \@parindent=\parindent
\renewcommand{\@makefntext}[1]{%
\everypar = {\hangindent = \@parindent \hangafter = 1}{\par}
\parindent 1.5\@parindent % wcięcie drugiego (i kolejnych) akapitu tego samego długiego przypisu
\noindent\hb@xt@ \@parindent % 0\@parindent
{\hss\@makefnmark \enspace}#1}
%{\hss{\@thefnmark} \enspace}#1} % do nautycznych
\makeatother

Polecenie \@makefnmark formatuje numer odsyłacza, domyślnie jest to:


\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}

Odsyłacz jest formatowany identycznie w tekście i w kolumnie przypisów. Zamiast tego trzeba zdefiniować formatowanie na dwa sposoby, przykładowo:


%% numer odsyłacza do kolumny tekstu:
\def\@makeTextfnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
%% numer odsyłacza do kolumny przypisów
\def\@makefnmark{\hbox{\normalfont\@thefnmark}}

oraz w definicji \@makefntext zamiast \@makefnmark wstawić \@makeTextfnmark.

niedziela, 8 lipca 2012

Sposoby redagowania odsyłaczy bibliograficznych w schemacie autor-rok

Sposoby redagowania odsyłaczy bibliograficznych w schemacie autor-rok przy pomocy LaTeX-owego pakietu natbib:

F1. Na końcu zdania (najczęściej) w nawiasie, \citep

Ekwiwalencja pomiaru jest ważnym kryterium oceny jakości projektowanych skal pomiarowych (Cheung i Rensvold, 1999; Steenkamp i Baumgartner, 1998).

Co wygląda ,,w źródle'' LaTeXowym następująco:


Ekwiwalencja pomiaru jest ważnym
kryterium oceny jakości projektowanych
skal pomiarowych~\citep{CheungRensvold1999,SteenkampBaumgartner1998}.

Uwaga: jeżeli podstawową formą odsyłacza jest autor (rok), to wydawać by się mogło, że powinno być:

Ekwiwalencja pomiaru jest ważnym kryterium oceny jakości projektowanych skal pomiarowych (Cheung i Rensvold (1999), Steenkamp i Baumgartner (1998)).

Ale to mi się wizualnie nie podoba, bo mnoży ponad potrzebę nawiasy, no i ten fatalnie wyglądający podwójny nawias na końcu.

F2. Inny wariant, wtrącenie z komentarzem \citealp

koncentruje się raczej na fenomenie jego tworzenia, motywacji twórców, koordynacji itd. (por. Al Marzouq, 2005; Niederman i inni, 2006a, Feller i Fitzgerald, 2002; Niederman i inni 2006a).


koncentruje się raczej na fenomenie jego
tworzenia, motywacji twórców,
koordynacji itd. (por.~\citealp{AlMarzouq05,Niederman2006a,FellerFitzgerald2002,Niederman2006b}).

Wreszcie podnoszone są zarzuty dotyczące zbytniej arbitralności proponowanej procedury (por. Straub i inni, 2004, s. 391 oraz Bollen, 1989, s. 192).


Wreszcie podnoszone są zarzuty
dotyczące zbytniej arbitralności proponowanej
procedury (por.~\citealp[s.~391]{StraubBoudreauGefen2004} oraz \citealp[s.~192]{Bollen89}).

Uwaga: jedna z dwóch form, tj. F1 i F2 wydaje się zbędna(?). Kowal (Metody Statystyczne w badaniach sondażowych rynku, PWN, Warszawa 1998) używa F2, co m.in. powoduje że słowo por. jest przypuszczalnie najczęściej używanym trzyliterowym wyrazem w książce:-)

F3. Wariant powyższego, \citet

Do zastosowania w sytuacji, kiedy nie można umieścić odsyłaczy en-block w nawiasach (czyli zastosować polecenie \citep).

W licznych przeglądach podjęto wiele prób krytyki i oceny stosowanych podejść badawczych, por. Orlikowski i Baroudi (1991), Galliers (1992), Benbasat i Zmud (1999), Vessey i inni (2002), Mingers (2003), Palvia i inni (2004).


W~licznych przeglądach podjęto wiele prób
krytyki i~oceny stosowanych podejść
badawczych,
por. \citet{OrlikowskiBaroudi91,Galliers1992,BenbasatZmud99,VesseyGlass2002,Mingers2003,PalviaEtAl2004}.

Uwaga: ta forma wydaje się zbędna(?). Zawsze można cytat umieścić w nawiasie czyli w formie F2).

F4. W tekście z odmianą nazwisk autorów, \citeyearpar

przez Ajzena i Fishbeina (1975) na gruncie psychologii społecznej teorii uzasadnionego...


przez Ajzena i~Fishbeina~\citeyearpar{FishbeinAjzen1975} na gruncie psychologii
społecznej teorii uzasadnionego

W przeglądach Schepersa i Wetzelsa (2007), Kinga i He (2006) oraz Yousafzai i~innych~(2007b) testowano


W~przeglądach Schepersa i~Wetzelsa~\citeyearpar{SchepersWetzels2007},
Kinga i~He~\citeyearpar{KingHe2006} oraz
Yousafzai i~innych~\citeyearpar{ShumailaetAl2007b}
testowano

Uwaga: Książka Chowa (Ekonometria, PWN, Warszawa 1995) tak została zredagowana, że stosowane są wyłącznie odsyłacze typu F4.

Formy nieregularne:-)

działania będą akceptowane na tak lub nie przez ważne dla tej jednostki osoby'' (por. Ajzen, 1991, s. 302 za Venkateshem i Davisem, 2000, s. 187).


działania będą akceptowane na tak lub nie przez ważne dla tej
jednostki osoby'' por.~\citealp[s.~302]{Ajzen1991}
za Venkateshem i~Davisem,~\citeyear[s.~187]{VenkateshDavis00}).

Aksjomat Przechlewskiego

Odsyłacze typu F1--F4 można zawsze zredukować do postaci F1 i F4. Tak zredagowane są przykładowo książki: Konarski, Modele równań strukturalnych, PWN, Warszawa 2009; Brzeziński, Metodologia badań psychologicznych, PWN, Warszawa 2004; Gatnar i Walesiak, Analiza danych jakościowych i symbolicznych z wykorzystaniem pakietu R, CH Beck, Warszawa 2011.

Przykłady odnośników autor-rok podane przez Osuchowską (Poradnik redaktora i autora, Wydawnictwo Polskiego Towarzystwa Wydawców Książek, Warszawa 1988, s. 174) także ograniczają się do postaci F1 i F4.

czwartek, 24 maja 2012

Wycieczka do Berlina

Wyjechaliśmy 1. maja a wróciliśmy 5. maja. Czerwoną kreską zaznaczona (była) granica między Berlinem Wschodnim a zachodnim. Jak widać zwiedzaliśmy głównie dawne DDR:


Pokaż Berlin2012 na większej mapie

Ślad w Berlinie jest poprzerywany bo korzystaliśmy często z S-bahna/U-bahna albo wchodziliśmy do budynków z naprawdę solidnym dachem (muzea, Deutscher Dom, itp.).

(Nb. Całodzienny grupowy bilet umożliwiający korzystanie z komunikacji publicznej w Berlinie to 15 EUR dla bodajże maksimum 5 osób.)

poniedziałek, 21 maja 2012

Wycieczka z Damnicy do Lęborka

W sobotę pojechałem SKMką do Damnicy (15 PLN) a stąd już rowerem przez Dębnicę Kaszubską i Czarną Dąbrówkę do Lęborka. Głównym celem (oprócz rowerowania) było odwiedzenie poniemieckich cmentarzy w Damnicy, Lubuniu, Dobieszewie, Dobrej, Gogolewie i Gogolewku.

Usiłując dostać się do Lubunia od strony Dębnicy ugrzęzłem beznadziejnie na piaszczystych drogach i zmarnowałem tutaj sporo czasu. Wracając z Lubunia -- w akcie desperacji -- usiłowałem poszukać innej drogi -- co nie było dobrym pomysłem i nie tylko skończyło się nadłożeniem kilku kilometrów ale nawet forsowaniem strumienia. Z Lubunia do Dębnicy chyba nie ma możliwości dojechania droga utwardzoną -- a jeżeli, to strasznie naokoło!

Cmentarzy w Dobrej i Gogolewku nie odszukałem, bo i tak wycieczka się przeciągnęła i obawiałem się czy zdążę na powrotny pociąg w Lęborku.

Na koniec został powrót SKMką w wagonie dla rowerów w nieprzyjemnym towarzystwie palących, pijących piwo, słuchających głośnej muzyki typu disco polo i przeklinających prostaków. Przypomiał mi się Al Sieber, Chief of Scouts (grany przez Roberta Duvalla) z filmu Geronimo: Amerykanska legenda: ,,Must be Texans... the lowest form of white man there is''1. Tylko zamiast Texans (Teksańczycy) podstawiłem Kaszub.

Ślad jest poniżej:


Pokaż Damnica-Lębort(trk) na większej mapie

1To muszą być Teksańczycy...najniższa forma białego człowieka

piątek, 18 maja 2012

Grube greckie litery nie są składane po dołączeniu qtxmath/pxtmath

Już wiem, że pakiety txfonts/pxfonts nie są najwyższej jakości. Teraz się okazało, że zalecane (zapomniałem tylko przez kogo:-) jako uzupełnienie pakiety qtxmath/pxtmath też zawierają błędy:


%& --translate-file=il2-pl
\documentclass{article}
\usepackage{amsmath,bm}
\usepackage[T1]{polski}
\usepackage{txfonts}
\usepackage{tgtermes,qtxmath}
\begin{document}
$\Omega \mathbf{\Omega} $
\end{document}

Gube greckie litery są zamieniane na litery łacińskie. Nawet nie chce mi się sprawdzać czemu bo pakiet qtxmath/pxtmath nie zawiera plików źródłówych, z których są generowane fonty tfm/vf. Nie idzie też tych źródłowych plików nigdzie znaleźć.

Po usunięciu qtxmath skład jest poprawny. Z tego co mi się obiło o uszy qtxmath/qpxmath miało poprawiać pakiety txfonts i pxfonts, ale jak widać nie do końca.

środa, 16 maja 2012

Sheevaplug half anniversary

My tiny server running on Debian/SDHC card/Sheevaplug has reached 183 days of uptime today.

Rzecz o propagandzie nie o ekonomii

W cenionym organie propagandowym pn. Głos Cadyka felieton uznanego propagandzisty J. Żakowskiego nt. długu, pn. Co się liczy. Tekst przeczytałem nie dlatego, że jest ciekawy merytorycznie (wręcz przeciwnie -- od strony merytorycznej jest to 100% bełkot -- jak to w Głosie Cadyka zwykle bywa), ale ponieważ jest to modelowy przykład prostych technik propagandowych.

Zastosowana manipulacja sprowadza się do 4 punktów:

  1. Ustawienie przeciwnika pod właściwym kątem. We wstępie Żakowski konsekwentnie używa nieokreślonego terminu dług zamiast dług publiczny pisząc nt. licznika długu publicznego L. Balcerowicza. Bynajmniej nie jest to przypadek albo niechlujstwo, ponieważ:

  2. Polemika z ustawionym pod właściwym kątem przeciwnikiem. Zamiana konkretnego pojęcia dług publiczny na bliżej nieokreślony dług jest wstępem do zasadniczej manipulacji, mianowicie: wprowadzenia zyliona różnych pojęć typu dług demograficzny, dług infrastrukturalny, itp. Oczywiście te ,,inne długi'' są dużo ważniejsze od ,,długu Balcerowicza''. [Nawiasem mówiąc: ,,Długi Żakowskiego'' nie są żadnym długiem ale (przyszłymi) korzyściami albo kosztami, czyli zupełnie innymi kategoriami ekonomicznymi.]

  3. Oczywista konkluzja. Ponieważ ,,dług Balcerowicza'' to mały pikuś wobec ,,długów Żakowskiego'' należy zapewne ,,stłuc termometr bo nie mierzy tego co trzeba.''

  4. Przypomnienie jednego z kanonów wiary (dla utrwalenia). Na koniec dowala komu trzeba czyli PiSowi pisząc że wtedy rządy były populistyczne a teraz nie są co jest jeszcze jednym powodem żeby stłuc termometr. [Za tych nie-populistycznych rządów dług znakomicie wzrósł nota bene, ale z aksjomatami się nie dyskutuje więc kto jest populistą a kto nie jest nie trzeba nawet podpierać żadnym wywodem -- nawet takim jak przeprowadzony wyżej w punktach 1--3].

sobota, 10 marca 2012

Czarny koń z Redmond

System Windows do 2015 r. zdobędzie 20% rynku smartfonów i ponad 10% tabletów -- prognozują analitycy z firm Gartner i IDC. Czarnym koniem w branży ma być nowa platforma Microsoftu. Windows 8 zmieni oblicze branży IT powiedział ,,Rz'' pan z MSC.

System MS w ciągu roku znajdzie się w pierwszej trójce[...] dodaje w rozmowie z ,,Rz'' pan z firmy sprzedającej oprogramowanie antywirusowe (czyli produkt komplementarny).

Dziś zaś w Rzeczpospolitej (,,Rz'') felieton też na ten temat. Równie merytoryczny i kończący się bezsensownym (z punktu widzenia teorii ekonomicznych i stanu faktycznego) apelem: Wypada kibicować Microsoftowi, bo choć ciąży na nim odium monopolisty na rynku oprogramowania dla komputerów osobistych, to jednak daje on szansę na przełamanie dominacji Google'a i Apple'a na rynku oprogramowania dla smartfonów i tabletów.

Zapewne dalszego tego typu dzieła w druku...

Wygląda to wszystko na teksty ordynarnie sponsorowane przez MSC (aka MałoMiękkiego). Będzie świetnie zapewniają ludzie z MSC albo firmy zależne (sprzedawca antywirusów). A będzie tak jak z Bingiem -- gównianą wyszukiwarką, którą MSC usiłował dogonić Google'a, tyle że jedyną strategią był marketing jaka to ona jest wyjątkowa.

BTW: Decydujący (bo jedyny) argument Windows 8 będzie wyglądał tak samo na PC i smartfonie więc użytkownicy zapewne chętniej....itd. No na pewno: rower, samochód i samolot powinien być obsługiwany identycznie. Taki dajmy na to kpt. Wrona z pewnością wolałby baranią kierownicę a'la Eddy Merckx albo odwrotnie Cancellara o niczym nie marzy tylko o autopilocie i wolancie.

No dobra pośmialiśmy się a teraz czemu kibicowanie MSC jest bezsensowne?

Tak jak wyżej wspomniano można to wiarygodnie objaśnić na gruncie elementarnych teorii ekonomicznych. Przyjrzyjmy się poniższemu diagramowi:

Commodity stack
Komodyzacja IT a strategia rynkowa wybranych producentów oprogramowania

Upraszczając w branży IT można zarabiać na sprzedaży sprzętu, oprogramowania infrastrukturalnego, oprogramowania middleware, aplikacji oraz usług. Google sprzedaje tylko usługi, resztę traktuje jako półprodukt, którego koszt winien być możliwie najniższy (warstwa utowarowiona na wykresie). MSC praktycznie nie sprzedaje usług: 100% przychodów firmy to sprzedaż systemu operacyjnego i oprogramowania biurowego. Samo kibicowanie nic nie da jeżeli życie delikwenta zależy od tego ile sprzeda kopii czegoś co tak w ogóle jest warte zero (linux/android).

Tu są szersze wyjaśnienia, ale w języku. O tym samym pisze Nicholas G. Carr w artykule IT Doesn't Matter. Jest to dużo bardziej znany tekst, bo opublikowany w Harvard Business Review, ale jednocześnie dzięki temu niedostępny bezpłatnie (można oczywiście zaleźć via Google, ale to będzie illegal kopia).

środa, 7 marca 2012

Import KML files to GoogleMaps

The nuisance of GoogleMaps is that it does not know GPX and only KML/GeoRSS files can be uploaded. Fortunately it is easy to convert GPX to KML with gpsbabel:


gpsbabel -i gpx -f file.gpx -x simplify,count=333 -o kml -F file.kml

If there are several files they have to be convert one-by-one and then upload to Google. It would be more comfortable to merge them first and upload it in one go rather than uploading each individually.

As I could not find how to merge serveral GPX files into one using gpsbabel (merge option in gpsbabel puts all track points from all tracks into a single track and sorts them by time stamp. Points with identical time stamps will be dropped) I worked out the following simple Perl script:


#!/usr/bin/perl
#
# Combine GPX files into one
# usage: gpxmerge file1 file2 file3 ....
#
use XML::DOM;
binmode(STDOUT, ":utf8");

my $parser = new XML::DOM::Parser;

for my $file2parse (@ARGV) {
my $doc = $parser->parsefile ($file2parse);

for my $w ( $doc->getElementsByTagName ("wpt") ) { $waypoints .= $w->toString() . "\n"; }
for my $r ( $doc->getElementsByTagName ("rte") ) { $routes .= $r->toString() . "\n"; }
for my $t ( $doc->getElementsByTagName ("trk") ) { $tracks .= $t->toString() . "\n"; }
}

print "<?xml version='1.0' encoding='UTF-8' ?>
<gpx version='1.1' creator='GPXmerger'
xmlns='http://www.topografix.com/GPX/1/1'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd'>\n
<author>tomasz przechlewski </author>
<email>tprzechlewski[at]acm.org</email>
<url>http://pinkaccordions.homelinux.org/Geo/gpx/</url>";

print "$waypoints\n$routes\n$tracks\n";

print "</gpx>\n";

The resulting file structure is as follows: first all waypoints, then all routes and finally all tracks. This is perfectly legal GPX file.

Now I convert GPX to KML using gpsbabel:


gpsbabel -i gpx -f file.gpx -x simplify,count=333 -o kml -F file.kml

Since gpsbabel generates pretty verbose KML files I simplify them using XSLT stylesheet (perhaps this step is superfluous):


xsltproc -o simplified.kml kml2kml.xsl file.kml

and the stylesheet looks like:



<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" indent='yes' />

<xsl:template match="/">

<!-- ;; http://www.jonmiles.co.uk/2007/07/using-xpaths-text-function/ ;; -->

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


<Folder>
<name>Waypoints</name>

<xsl:for-each select="//kml:Folder[kml:name/text()='Waypoints']/kml:Placemark//kml:Point">
<Placemark>
<!-- <name><xsl:value-of select='../kml:name'/></name> --><!-- niepotrzebne -->
<Point>
<coordinates>
<xsl:value-of select="kml:coordinates"/>
</coordinates>
</Point>
</Placemark>
</xsl:for-each>

</Folder>


<Folder>
<name>Tracks</name>

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

<Placemark>
<name>Path</name>

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

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

</coordinates>
</LineString>
</Placemark>

</xsl:for-each>

</Folder>

</Document>
</kml>

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

Now KML file is ready to be imported to Google maps via Maps → My Places → Create map.

The result of example conversion can be be found here.

Konfigurowanie TeXlive

Pliki systemu TeXLive są umieszczone nie w jednym a w kilku katalogach. Listę tych katalogów otrzymamy wykonując polecenie:

kpsewhich -expand-var '$TEXMF'

Mówiąc bardziej precyzyjnie: $TEXMFMAIN to katalog główny (korzeń główny instalacji), którego zawartość nie powinna być modyfikowana w inny sposób niż poprzez tlmgr; $TEXMFLOCAL -- tu można instalować coś prywatnego, co będzie dostępne dla wszystkich użytkowników systemu (system-wide); $TEXMFHOME -- prywatne pliki użytkownika.

kpsewhich --expand-var '$TEXMFMAIN' # korzeń główny = to co dała fabryka
kpsewhich --expand-var '$TEXMFLOCAL' # korzeń lokalnych zmian dla całej instalacji 
kpsewhich --expand-var '$TEXMFHOME' # lokalne nastawy użytkownika

Kolejność wyszukiwania plików jest taka, że najpierw jest przeszukiwane drzewo katalogów o korzeniu $TEXMFHOME a potem $TEXMFLOCAL a na końcu $TEXMFMAIN.

System TeX konfiguruje się edytując plik texmf.cnf. Plik ten można odszukać w następujący sposób:

kpsewhich texmf.cnf

/usr/local/texlive/2011/texmf.cnf

Po zainstalowaniu czegokolwiek w $TEXMFHOME należy wykonać texhash $HOME/texmf.
Po modyfikacji zawartości $TEXMFLOCAL też
należy wykonać texhash (jako root).