środa, 9 grudnia 2009

xmllint z opcją dtdvalid

Xmllint ma użyteczną opcję, która pozwala sprawdzić poprawność pliku .xml względem zewnętrznego pliku DTD, tj. plik nie musi zawierać deklaracji DOCTYPE. Wygląda jednak, że implementacja tegoż zawiera poważne błędy. O tyle sprawa jest dziwna, że w google na ten temat nic nie ma a błąd jest tak oczywisty, że powinno być. Przykładowe DTD (A.dtd):


<!ELEMENT a (#PCDATA) >
<!ATTLIST a b CDATA "Wartosc domyslna" >
<!ENTITY e "Tresc encji" >

Przykładowy plik (A.xml):


<?xml version="1.0" encoding='ISO-8859-2'?>
<!-- <!DOCTYPE a SYSTEM "A.dtd"> -->
<a>Przykład encji: &e;</a>

teraz uruchomienie xmllint z opcją dtdvalid:


$ xmllint --dtdvalid A.dtd A.xml
A.xml:3: parser error : Entity 'e' not defined

kończy się błędem...

wtorek, 1 grudnia 2009

Boczniak ostrygowaty 2009

Przytargałem dziś 2,6 kg. A pięć razy tyle zostało na drzewie... Do tej pory rok grzybowo słabiutki ale przecież się jeszcze nie skończył...

poniedziałek, 30 listopada 2009

SheevaPlug, parę ciekawych odsyłaczy

Różne informacje n/t SP: Instalowanie Slackware na SP + zdjęcia, jak toto wygląda od środka. |  Instalowanie Debiana (na USB i/lub karcie SD) |  Sheevaplug Fedora USB BootBooting entirely off an external USB device SheevaPlug Installer

Zmiana daty/czasu w polach Exif

Omyłkowo ustawiłem błędną datę w aparacie, ,,przesuniętą'' o dzień ,,do przodu''. Używając exiftool skorygowanie tego wymaga wykonania następującego polecenia:


# http://www.sno.phy.queensu.ca/~phil/exiftool/exiftool_pod.html
# przesun 24 godziny ,,do tyłu'':
exiftool -AllDates-=24:00 katalog-ze-zdjeciami

sobota, 28 listopada 2009

Lameria w mbanku

Niestety Mbank, który do niedawna uważałem za wzorowy przykład serwisu neutralnego technologicznie dołączył do grona lamerów. Mianowicie wydruk potwierdzenia operacji (w postaci pliku PDF) jest tworzony z wykorzystaniem fontów firmy Microsoft (Arial, Verdana, Tahoma). W rezultacie, przykładowo Acrobat tego nie wydrukuje, przynajmniej w systemie Linux. Jest pytanie po co do drukowania zwykłego potwierdzenia potrzebny jest MS Windows? Najwidoczniej jakiś odpowiedzialny ignorant z Mbanku na powyższe pytanie sobie nie odpowiedział... Albo inaczej: czy złożenie druczka za pomocą Times New Roman zamiast Tahomy i reszty cokolwiek by zmieniło?

Co więcej, mam podejrzenie graniczące z pewnością, że jakiś czas temu było inaczej, tj. dokumenty nie korzystały z fontów komercyjnych...

NB: evince drukuje dokument, podstawiając inny font (z błędnym kodowaniem)...

wtorek, 24 listopada 2009

Uruchomienie samby

Straciłem trochę czasu, ale głównie dlatego, że z Sambą do tej pory nie miałem przyjemności...

Samba dialog window
Mapowanie dysku
smbclient session
smbclient session

Zgodnie z powszechnie zalecaną procedurą:


adduser smbuser
groupadd smbuser
vim /etc/group
## dodaję smbuser do grupy smbuser (do /etc/group)

vim /etc/samba/smbusers
## dodaję wpis smbuser="smbuser" (do /etc/samba/smbusers)

mkdir /public/sheeva/winstuff
chown smbuser:smbuser /public/sheeva/winstuff

smbpasswd -a smbuser

No i klops, bo:


smbpasswd -a smbuser
> New SMB password:
> Retype new SMB password:
> ltdb: tdb(/var/lib/samba/group_mapping.ldb): tdb_mmap failed for size
> 77824 (Invalid argument)

Na forum plugcomputer.org/ dowiedziałem się, że: I have a vague memory of ubifs (or was it jffs2) not supporting mmap(), and the error message looks like it might be trying to use that.... Spróbowałem zatem dodać do /etc/samba/smb.conf:


## Por. http://lists.samba.org/archive/samba-technical/2004-July/036379.html
use mmap = no

Teraz smbpasswd -a smbuser kończy się bez błędu. Samba wprawdzie nie od razu działa, ale metodą kolejnych przybliżeń, tj. modyfikowania /etc/samba/smb.conf udaje się problem zwalczyć. Działający plik /etc/samba/smb.conf jest tutaj.

Test połączenia z innej maszyny linuksowej:


smbclient -U smbuser //jupiter/data

Mapowanie dysków sieciowych w Windows XP wygląda zaś następująco: Komputer→Moje miejsca sieciowe→Narzędzia→Mapuj dysk sieciowy. Wpisujemy w pole Folder //jupiter/data. Pojawi się okno autoryzacji, w którym, w stosowne pola należy wpisać ,,Nazwę użytkownika'' oraz ,,Hasło''. Klikamy w przycisk zakończ... Gotowe...

Konfigurowanie SheevaPlug cd.

Ponieważ główny system plików powinien być jak najmniejszy, z uwagi na szczupłość miejsca w pamięci FLASH przenoszę na kartę SD bazy mysql oraz główny katalog dokumentów Apacza.

Przeniesienie baz danych mysql

Procedura nie jest skomplikowana (por. How to change the MySQL data default directory):


service mysql stop
cp -R -p /var/lib/mysql /media/sd/data/
## zmiana pliku konfiguracyjnego:
vim /etc/mysql/my.cnf

W pliku zmieniam:


#datadir = /var/lib/mysql
datadir = /media/sd/data/mysql

Piszą, że trzeba dokonfigurować apparmor (niepotrzebne, bo w wersji Ubuntu na Sheevaplug, nie ma działającego apparmora, co można sprawdzić wpisując np. service apparmor restart):


## u mnie apparmor nie działa ale plik jest:
vim /etc/apparmor.d/usr.sbin.mysqld

Gdyby wszakże ktoś uruchomił apparmor, to należy zmienić var/lib/ na /media/sd/data. Podobne zmiany należy zaaplikować do zawartości pliku /etc/apparmor.d/abstractions/mysql

Zrestartować mysql.

Teraz dla sprawdzenia, że wsio działa uruchomiłem mysql:


mysql -u root -p

dodałem użytkownika tomek:


-- tomek ma status superużytkownika --
CREATE USER 'tomek'@'localhost' IDENTIFIED BY 'hasło';
GRANT ALL ON *.* TO 'tomek'@'localhost';
FLUSH PRIVILEGES;

Załadowałem przykładową bazę:


mysql -u <user> -p < r-sklep.sql

Działa...

Przeniesienie głównego katalogu dokumentów Apacza

Domyślnym katalogiem dla dokumentów WWW serwera Apache w Ubuntu jest /var/www/. Zaczynam od skopiowania tego katalogu w inne miejsce:


cp -R -p /var/www /media/sd/data/

Kopiuję także stosowny plik konfiguracyjny:


cp /etc/apache2/sites-available/default /etc/apache2/sites-available/jupiter

Teraz trzeba zmienić plik jupiter:


vim /etc/apache2/sites-available/jupiter

Należy zmienić (w dwóch miejscach) /var/www/ na /media/sd/data/wwww/. Teraz należy zmodyfikować ustawienia systemowe uruchamiając:


a2dissite default
a2ensite jupiter
## restart serwera
service apache2 restart

Działa...

wtorek, 17 listopada 2009

Przeniesienie repozytorium svn na kartę SD

Na kartę czy nie na kartę problem sprowadza się do przeniesienia repozytorium do innego katalogu, co okazuje się bardzo proste:


## http://www.petefreitag.com/item/665.cfm
## Backup your old Repository
svnadmin dump /path/to/repository > repo_name.svn_dump
## Create the new Repository
svnadmin create /path/to/repository
## Import your old repository into the new one
svnadmin load --force-uuid /path/to/repository < repo_name.svn_dump

Do zmiany położenia repozytorium w kopii roboczej służy zaś następujące polecenie:


# http://webkit.org/blog/97/svn-repository-location-change/
svn switch --relocate OLDURL NEWURL

Przykład:


svn switch --relocate svn+ssh://eros@jupiter/public/sheeva/svnrepo/er/ETC \
svn+ssh://eros@jupiter/media/sd/svnrepo/er/ETC

No i tyle...

poniedziałek, 16 listopada 2009

Konfigurowanie SheevaPlug

W tym urządzeniu jest fabrycznie zainstalowana wersja Ubuntu. Po włączeniu wtyczki działa w zasadzie out of the box. Podczas konfiguracji korzystałem z: Getting started with the SheevaPlug. Do połączenia się potrzebny jest kabel z wtyczkami USB/miniUSB. Po podłączeniu końcówek kabla uruchamiam skrypt:


#!/bin/sh
if [ -e /dev/ttyUSB1 ] ; then
cu -s 115200 -l /dev/ttyUSB1
elif [ -e /dev/ttyUSB2 ] ; then
cu -s 115200 -l /dev/ttyUSB2
else
echo "No usb tty found - exiting"
fi

Loguję się jako root. Fabryczne hasło to nosoup4u. Zmieniam hasło z domyślnego na własne.

Problem z siecią (więcej tutaj). Dopisuję do pliku /etc/dhcp3/dhclient.conf


prepend domain-name-servers 192.168.1.1;

Nie działa apt-get -- kończy pracę z błędem. Trzeba wykonać:


mkdir -p /var/cache/apt/archives/partial

Uwaga: ponieważ katalog var/cache/apt jest umieszczony w tymczasowym systemie plików (tmpfs), reboot spowoduje jego usunięcie. Poradnik Getting started with the SheevaPlug jest ,,w tym temacie'' mylący. Jak to poprawić prawidłowo jest wyjaśnione w New Plugger How To. Należy zmodyfikować /etc/rc.local w następujący sposób:


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
chmod 1777 /tmp /var/tmp
mkdir -p /var/cache/apt/archives/partial

# You might also want to add, after the mkdir, a line "/usr/sbin/ntpdate-debian"
# to automatically sync your clock over the network.
# ntpdate-debian

Inne polecenia należy usunąć lub ,,zakomentować''. Zamiast ntpdate-debian, który synchronizuje czas przy każdym restarcie, zdecydowałem się na uruchomienie demona ntpd:


apt-get install ntp

Ustawienie nazwy hosta. Nb. Nazwałem go jupiter.


vi /etc/hostname # dodanie co trzeba do pliku
/bin/hostname -F /etc/hostname

Poprawienie czasu:


Fix clock

Ustawienie lokali (więcej na ten temat tutaj). Do pliku:


/var/lib/locales/supported.d/local

Dopisujemy pl_PL ISO-8859-2 (ustawiając kodowanie na ISO-8859-2). Następnie wykonujemy:

   
dpkg-reconfigure locales

Zmiana strefy czasowej:


dpkg-reconfigure tzdata

Zamontowanie zewnętrznego dysku USB. Mój dysk będzie montowany w katalogu /public. Zatem mkdir /public a następnie do pliku /etc/fstab dopisuję:


## external usb drive:
/dev/sda1 /public ext3 auto,user,rw 0 0

teraz:


mount /public

Dopisane 3 lutego 2010: Po podłączeniu dysku przez USB huba, a nie bezpośrednio, coś się rozjeżdża. Dysk zamiast być /dev/sda1 pojawia się ni-stąd ni-z owąd jako urządzenie /dev/sdb1. Nie ustaliłem nawet przyczyn tego fenomenu: po prostu dwa razy tak się stało. Dysk był de facto odłączony a próba wykonania mount /public, kończyła się oczywiście niepowodzeniem. Spróbuję zmienić wpis w /etc/fstab na następujący:


/dev/disk/by-id/usb-WD_bla-bla-bla-part1 /public ext3 auto,user,rw 0 0

może będzie lepiej...

Instalowanie dodatkowych pakietów:


apt-cache search fuse
apt-get install fuse-utils
apt-get install libxml-dom-xpath-perl libxml-dom-perl \
libflickr-api-perl libflickr-upload-perl libxml-libxml-perl \
libxml-simple-perl

# Nie wiem po co ale zainstalowałem też (100mb)
apt-get install mysql-server

# instalowanie bittorrent (bittornado jest chyba niepotrzebne)
# http://jakilinux.org/aplikacje/p2p/rtorrent-p2p-w-konsoli/
apt-get install bittorrent bittornado rtorrent

# instaluje Konfigurowanie esniper (2.19.0-1) ; bieżąca wersja 2.21
# http://buechler.blogspot.com/2006/03/sniping-ebay-auctions-with-esniper-on.html
apt-get install esniper

# instalacja locate
apt-get install mlocate
vi /etc/updatedb.conf
# PRUNEPATHS to, które _nie będą_ indeksowane, dodaję /public żeby
# nie był indeksowany zewnętrzny dysk USB
# PRUNEPATHS="/tmp /var/spool /media /public"

Logowanie bez hasła za pomocą ssh (więcej tutaj):


ssh-copy-id -i ~/.ssh/id_rsa.pub jupiter

Uruchamianie crontaba przez zwykłego użytkownika (por. tutaj oraz tutaj):


chmod u+s /usr/bin/crontab

teraz działa.

Założenie repozytorium svn (ustaw uprzednio lokale)


mkdir /public/sheeva/svnrepo
svnadmin create /public/sheeva/svnrepo

Teraz do pliku /etc/init.d/svnserve wpisuję:


#!/bin/sh
#
# start/stop subversion daemon.
EXECUTABLE=/usr/bin/svnserve

# Test exist:ence of the executable
test -f $EXECUTABLE || exit 0

# Command line options for starting the service
# To increase security, you can pass the -r option to svnserve, which restricts it to exporting
# only repositories below that path, cf http://www.linxit.de/svnbook/en/1.0/ch06s03.html
OPTIONS='-d -r /public/sheeva/svnrepo'

case $1 in
start)
echo -n "Starting subversion daemon: $EXECUTABLE $OPTIONS\n"
start-stop-daemon -vo -x $EXECUTABLE -S -- $OPTIONS
echo -n "."
;;

wykonuję:


update-rc.d svnserve defaults
## na ekranie pojawiają się komunikaty, ale można je zignorować:
update-rc.d: warning: /etc/init.d/svnserve missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>

start usługi:


service svnserve start

Konfiguracja:


groupadd svn
vi /etc/group ## dodaję to grupy svn użytkowników tomek,eros
chgrp -R svn /public/sheeva/svnrepo/
chmod -R 770 /public/sheeva/svnrepo/

Teraz tomek i eros mogą czytać/pisać z repozytorium svn, np.:


## import projektu
svn import svn+ssh://tomek@jupiter/public/sheeva/svnrepo/repo1 -m import
## listowanie zawartości
svn list svn+ssh://tomek@jupiter/public/sheeva/svnrepo/repo1

Zob też tutaj

Aktualizacja systemu:

apt-get upgrade

Warto wykonać, m.in. pojawia się vim w wersji mini. Nie jest to aż takie ważne, ale ja osobiście jestem przyzwyczajony do vima.


ln -s /usr/bin/vim.tiny /usr/local/bin/vim

Gcc i kompilacja (najnowszej wersji programu esniper):


## por http://computingplugs.com/index.php/Compiling_Mythtv-0.21_on_the_Sheeva_Plug
apt-get install gcc make libcurl4-openssl-dev libcurl3 curl libwww-curl-perl gcc

Po doinstalowaniu powyższych pakietów skompilowałem esniper w najnowszej wersji 0.21.

Po tej operacji nie można się zalogować jako root. Problem jest podobno znany.

Reset hasła roota. Należy wyłączyć komputerek, połączyć się kablem USB/miniUSB i naciskając dowolny klawisz przerwać normalny proces bootowania. Gdy na ekranie pojawi się znak zachęty Marvell>, wpisujemy:


Marvell> printenv bootargs
## wyświetli się coś w stylu
bootargs=console=ttyS0,115200 mtdparts=nand_mtd:0x400000@0x100000(uImage),\
0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1\
rw ip=10.4.50.4:10.4.50.5:10.4.50.5:255.255.255.0:DB88FXX81:eth0:none

## teraz
Marvell> setenv bootargs console=ttyS0,115200 mtdparts=nand_mtd:0x400000@0x100000(uImage),\
0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1\
rw ip=10.4.50.4:10.4.50.5:10.4.50.5:255.255.255.0:DB88FXX81:eth0:none init=/bin/bash

Marvell> boot

A następnie:


passwd -d root
passwd root

Zmieniamy hasło. Restart i powinno już być OK.

Samba. Na razie (mam nadzieję) nie potrafię skonfigurować:-(

Po tych wszystkich ww. zabiegach mam ciągle ok. 260 Mb wolnej pamięci flash.

Inne strony z informacjami n/t SheevaPlug. Instalowanie Debiana na USB/karcie SD: 1 2 3 Instalowanie Fedory: 4 5

Dopisane 17 listopada 2009: Zamontowałem 16 Gb kartę SD (Patriot 6 Class, 130 PLN) -- sformatowaną jako ext2 -- dopisując do pliku /etc/fstab:


/dev/mmcblk0p1 /media/sd ext2 auto,user,rw 0 0

Teraz wiele rzeczy (np. dane z Internetu pobierane via cron albo pliki pobierane przez torrenta) zamiast być zapisywane od razu na dysk USB, będą zapisywane na kartę SD. Dzięki temu dysk będzie rzadziej używany... Mniej zużytego prądu i hałasu...

Dopisane 18 listopada 2009: Programik do pobierania filmów z YT:


apt-get install youtube-dl

Aktualizacja kopii roboczej po zalogowaniu się. Łączenie z siecią WiFi trwa około 30 sekund po zalogowaniu się użytkownika, więc proste wstawienie odpowiednich poleceń do .bash_profile nie wystarczy. Różne rozwiazanie proponowane są w: How to run a command after connecting to network?

Dopisane 20 listopada 2009: Nie można się zalogować jako root do bazy mysql. Pomogła procedura opisana tutaj: how to install mysql:


## Zatrzymać usługę:
service mysql stop
## Uruchomić mysqld w specjalnym trybie:
mysqld --skip-grant-tables
# Uruchomić klienta mysql:
mysql
# i wpisać poniższe:
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'hasło'\
WITH GRANT OPTION;

Na koniec dwa istotne adresy: PlugComputer Communityforum oraz Plug Wiki.

Dopisane 25 listopada 2009: doinstalowałem php (ciągle mam ponad 230Mb wolnego miejsca w głównym systemie plików).


apt-get install php5 php-pear php5-mysql php5-cli

środa, 11 listopada 2009

Ikony punktów nawigacyjnych w Garminie

W opisie tzw. waypointa (punkt nawigacyjny), w formacie GPX jest m.in. znacznik <sym>, którego zawartością jest napis określający symbol punktu. Do tej pory zawsze wstawiałem tam Flag, a Legend oznaczał taki punkt ikoną niebieskiej flagi. Wprawdzie teoretycznie to (chyba) może być dowolny napis, ale lepiej ograniczyć się do tych kilkanastu--kilkudziesięciu, które Garmin zna i ,,reaguje'' na nie podstawiając odpowiednią ikonę. Zestaw tychże znalazłem tutaj. Na stronach Garmina zaś trudno się doszukać stosownej informacji.

Przykładowo pierwszy z punktów (poniżej) to cmentarz a drugi Miejsce Polowania wybrany na oznaczanie ,,grzybowych miejscówek'' -- ponieważ w zestawie symboli nie ma takiego, który by się lepiej nadawał na oznaczenie miejsca ,,gdzie rosną grzyby''


<wpt lat="54.0704694444" lon="18.9803833333">
<name>Stogi k/M Cment</name>
<cmt>Stogi k/M Cment</cmt>
<desc>Stogi k/Malborka Cmentarz Mennonitów</desc>
<sym>Cemetery</sym>
</wpt>
<wpt lat='54.84425261' lon='18.000581109'>
<name>Boczniak1</name>
<cmt>Boczniak Ostrygowaty</cmt>
<desc>Boczniak Ostrygowaty na pniu buka</desc>
<sym>Hunting Area</sym>
</wpt>

Jak już opisałem kiedyś bazę moich punktów trzymam w pliku (konkretnie w ~/.gps/local.wpts) co ułatwia jej modyfikowanie. Jeżeli baza się zmieni, to przesyłam plik (synchronizuję) do urządzenia wykorzystując program gpsbabel.

Microsoft Academic Search

Szukając czegoś w Google często znajduje się coś innego. Dziś znalazłem siebie w bazie pn. Microsoft Academic Search. Nie wiem jak to działa -- podejrzane jest w szczególności, że w bazie są akurat wyłącznie te moje artykuły, które zostały już skatalogowane w znanej bazie bibliograficznej DBLP. Większy tekst na temat znalazłem tu. Na razie nie chce mi się go ani czytać, ani szukać innych materiałów nt. MAS.

Nb. klikając w stronę dowiedziałem się, że istnieje coś takiego jak SilverLight. Kolejna super technologia Małomiękkiego, na której się świat nie poznał?

wtorek, 3 listopada 2009

Mój nowy komputer

Mój nowy komputer (już szósty, a w dostawie siódmy) ma wielkość dużej mydelniczki:-) Teraz muszę się dokształcić jak go uruchomić.

A teoretycznie służy toto do (cf. SheevaPlug Development Kit): The SheevaPlug is a development platform, targeted for use as a plug computer, and designed to run network-based software services. It features a Kirkwood Series SoC with an embedded Marvell Sheeva CPU core running at 1.2 GHz. This device connects to the network using GbE, offers desktop class performance, and can be used to replace a PC-based home server for many applications. Peripherals connect using the included USB 2.0 port.

piątek, 16 października 2009

Naprawa garmina

W Garminie odlepiła się gumowa taśma ochronna -- częsty przypadek sądząc z tego co na ww. temat zawiera google. Naprawiłem w sposób szczegółowo opisany przez Mieszko Zagańczyka. W sumie sposób nie sprawdzony tak do końca, ale lepszego nie znalazłem.

Na wypadek gdyby wpis na ww. blogu zniknął podaję skrótowo co należy zrobić. Potrzebne są: silikon akwarystyczny (do akwariów) i benzyna ekstrakcyjna. Benzyną należy oczyścić gumę i odbiornik z resztek kleju. Posmarować silikonem (jedna tubka 8 ml, za 2 PLN) wystarczy. Nałożyć gumę. Owinąć bandażem elastycznym i zostawić owinięte na 24 godziny żeby silikon związał.

sobota, 10 października 2009

Frank Vandenbroucke

Frank Vandenbroucke znany kolarz Belgijski zmarł przedwczoraj (12 października 2009 r.) w wieku 34 lat. Matthew White, dyrektor sportowy Garmin-Slipstream: -- Ludzie nie byliby tak zaskoczeni, gdyby Frank popełnił samobójstwo...

poniedziałek, 28 września 2009

HP mini 2140 i kłopoty z instalacją Linuksa

HP mini 2140 with Fedora Core 11
HP mini 2140 with Fedora Core 11
HP Mini i Dell Vostro 1320
HP mini 2140 with Fedora Core 11
Emacs 23 w HP Mini

Kupiłem w Balcie wersję z Suse. Bo tańsza -- 1300 PLN a windows mi nie jest potrzebny (wersja z MS Windows XP, 220 PLN więcej). Chciałem z baterią 6 komorową ale w sklepie utrzymywali, że takowej konfiguracji nie ma -- można co najwyżej osobno dokupić (za ponad 500 PLN). Suse się ładnie zainstalowało, łącznie z WiFi ale, kurcze ostatnio jest zawsze jakieś ale. No więc to Suse jest w wersji 10.2, która jest ciut obsolete. Teraz spędziłem kilka godzin na kombinowaniu jak ten system dostroić do moim potrzeb. Np. nie ma w nim thunderbirda i Emacsa. W Fedorze wpisuję yum install thunderbird emacs emacs-el i ww programy się instalują bezproblemowo. A w Suse tak nie jest--jest program do zarządzania systemem -- yast2, który najpierw trzeba skonfigurować... Chcąc zainstalować cokolwiek najpierw należy podać repozytoria z jakich będą pobierane pakiety.

Pomysł taki sobie--nowy użytkownik musi zaczynać od ustalenia adresów repozytoriów... Do tego system jest lekko starawy, więc repozytoria download.opensuse.org są bezużyteczne bo zaczynają się od wersji 10.3. W sumie to lipa, że HP sprzedaje coś w ten sposób ewidentnie niedorobionego. Zwykłe robienie klienta w balona. No nic, ustaliłem URL repozytorium z wersją 10.2. Dodałem Emacsa i Thunderbirda... Thunderbird jest OK, ale Emacs jest w wersji to 21.3. Za stara... A jak zainstalować coś do oglądania filmów, muzyczki i acrobata... Nie chce mi się ustalać...

Wniosek: gdyby wszystko działało to bym się tej starej Suse (niem. die Alte Suse) trzymał, ale wobec powyższych problemów zacząłem kombinować jakby podmienić system na inny... Ten inny to albo Ubuntu albo Fedora...

W jaki sposób zainstalować system bez napędu CD

Nigdy tego nie robiłem ale okazało się to dość proste. Poprzez google można znaleźć kilka opisów jak przygotować bootowalny napęd USB (bootable USB stick). Sposób opisany w www.mach.x.pl nie działa -- zwis na etapie bootowania. Działa USB przygotowany programem unetbootin. System się uruchamia tyle, że nie działa WiFi. Gorzej -- klawiatura też nie działa. Skoro klawiatura nie działa to i instalacja się nie skończy, bo jak wpisać nazwę użytkownika i hasło? [Z podpiętej USB, kiedyś tak zrobiłem -- ale teraz mi się nie chce:-)] Problem z klawiaturą też miałem w przypadku Vostro 1320 i dotyczył on zarówno Ubuntu jak i Fedory. Jakaś globalna niekompatybilność z nowym laptopami?

Próbowałem -- uruchamiając z USB -- Ubuntu 9.10 (aka Karmic Koala) i to w dwóch wersjach: karmic-desktop-i386.iso oraz karmic-netbook-remix-i386.iso. Klawiatura działa ale obie się wysypują: pierwsza od razu, druga po pewnym -- zresztą krótkim -- czasie używania. Ostatnia nadzieja w Fedorze...

Za pomocą unetbootin przygotowałem pendrive zawierający Fedorę 11. Uruchomiłem i przetestowałem zgrubnie. Ponieważ wszystko w zasadzie działało; zdecydowałem się na zamianę starej Suse na nową Fedorę 11. No i się zaczęła jazda.... Uparłem się podzielić dysk na dwie partycje -- jedną na system a drugą na katalog /home. Przynajmniej w teorii ułatwi to aktualizację systemu w przyszłości. Zdefiniowałem zatem trzy partycje i tutaj pierwsza skucha: FedoraLive domaga się systemu plików ext4. OK, nie ma sprawy -- zmieniłem. Dalej źle -- tym razem coś, że /boot nie może być ext4. Straciłem godzinę, zanim znalazłem wyjaśnienie na stronach bugzilla.redhat.com. Konkretnie sprawa ma się następująco: ,,Yes, with Fedora 11 to install from the live image, you have to have two partitions. This is because we have switched to ext4 as the default filesystem and thus it is used for the rootfs. Unfortunately, the support for ext4 in grub was not ready in time and so you need to have a /boot that's of a filesystem type that grub can boot from (eg, ext3).'' No to żeście sobie koledzy z Fedory skomplikowali niepotrzebnie życie, ale teraz przynajmniej wiadomo co dalej: potrzebna jest ekstra partycja na katalog /boot. Ostatecznie zatem zdefiniowałem cztery partycje: 20 Gb na system, 1,5 Gb na swap, 0,5Gb na /boot oraz resztę na katalog /home.

Teraz z kolei instalator wysypał się przy partycjonowaniu dysku (uprzednio usuwając to co na nim było). Kolejny kłopot. Pierwszym podejrzanym jest unetbootin. Przeglądam zatem stronę How to create and use Live USB. Tam jest opisany sposób alternatywny, wykorzystujący narzędzia z pakietu livecd-tools albo liveusb-creator. Sposób postępowania jest następujący:


yum install livecd-tools liveusb-creator
yum update syslinux # na wszelki wypadek

teraz:


livecd-iso-to-disk ./Fedora-11-i686-Live.iso /dev/sdb1
## należy też wykonać poniższe bo inaczej pendrive nie jest bootowalny
cat /usr/share/syslinux/mbr.bin > /dev/sdb

Rezultat podobny do tego, który uzyskałem za pomocą wersji przygotowanej przez unetbootin. Próbowałem innych wariantów podziału dysku łącznie z tym, w którym system jest instalowanym na jednej partycji... Nic to nie dało -- zawsze kończyło się błędem. Straciłem czas ale przynajmniej teraz wiem że winna jest anakonda. Spróbuję zatem podzielić i sformatować dysk używając gparted w nadziej, że wtedy zainstaluję fedorę. Wersję na USB gparted też przygotowałem za pomocą unetbootina. Wprawdzie w liście wyboru różnych systemów w unetbootin nie ma gparted, ale nie ma to znaczenia wystarczy wybrać z dysku uprzednio ściągnięty plik ISO:


http://superb-west.dl.sourceforge.net/sourceforge/gparted/gparted-live-0.4.6-1.iso

W dwóch krokach udaje się wreszcie podzielić i sformatować dysk tak jak chciałem. W dwóch, bo usunięcie tego co było na dysku, wymagało restartu gparted przed założeniem nowych partycji. Próba wykonania tego ,,za jednym zamachem'' kończyła się błędem... Cud, że starczyło mi cierpliwości na czytanie komunikatów o błędach.

Teraz anakonda się nie wysypuje i cała instalacja kończy się sukcesem. Wreszcie!. Podsumowując: aby zainstalować F11 na HP Mini 2140 trzeba przygotować USB za pomocą unetbootin (bo tak jest najwygodniej) a dysk podzielić i sformatować uprzednio używając gparted. WiFi na starcie nie działa, ale jestem dobrej myśli...

Dostrajanie systemu:

Instalowanie nie każdej aplikacji ma sens na takim komputerze jak HP Mini. Poniższa lista jest w znacznej mierze oparta na poradniku Personal Fedora 11 Installation Guide. Na końcu są dodane moje aplikacje...

A więc rozpoczynam od skonfigurowania yuma; najistotniejsze jest dodanie repozytorium RPMfusion, zawierającego m.in. różne pakiety o statusie non-free:


## ze strony http://www.mjmwired.net/resources/mjm-fedora-f11.html
yum install yum-plugin-fastestmirror
yum install yum-presto
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

W szczególności RPMfusion zawiera pakiet kmod-wl, dzięki któremu mam nadzieję uruchomić sieć WiFi:


## WiFi:
yum install kmod-wl

Teraz restart i WiFi działa (dowód na rysunku obok).

W sposób opisany w poradniku Mauriata Mirandy instaluję: Adobe Flash i Adobe Acrobata, xine, xmms, amaroka i parę innych pakietów, głównie związanych z odtwarzaniem plików audio/wideo:


## 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

## Install Adobe Acrobat
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 AdobeReader_enu

##
yum install xine xine-lib-extras xine-lib-extras-freeworld
mkdir -p /usr/lib/codecs
wget http://www.mplayerhq.hu/MPlayer/releases/codecs/all-20071007.tar.bz2
tar -jxvf all-20071007.tar.bz2 --strip-components 1 -C /usr/lib/codecs/

## Install Microsoft Truetype Fonts
http://corefonts.sourceforge.net/
## wget http://www.mjmwired.net/resources/files/msttcore-fonts-2.0-3.noarch.rpm
rpm -ivh msttcore-fonts-2.0-3.noarch.rpm

## XMMS i Amarok
yum install xmms xmms-mp3 xmms-faad2 xmms-pulse xmms-skins
yum install amarok xine-lib-extras-freeworld

Na koniec aplikacje, których używam, a które nie sa instalowane przez instalator FedoraLive:


## Moje dodatki:
yum install wget mc ## mam słabość do MidnightCommandera
yum install wine dosbox R amule ktorrent xchm xpdf kchmviewer
yum install tidy mod_dav_svn gnutls-utils kile opensp gv gqview
yum install fuse-sshfs
## ew. można także zainstalować poniższe:
yum install skype JBidWatcher bt747 ydpdict
## co do GoogleEarth to mam wątpliwości czy ma to sens
## poniższe nie instaluję:
## scribus grip sopcast fontforge

Kilka drobiazgów. Zatrzymałem następujące usługi: mdmonitor, smolt, rpcbind, crond, cups. Aby przy starcie nie odgrywał sygnału powitalnego należy odhaczyć: System-Preferencje-Programy startowe-Gnome login sound. Terminal gnome uruchamiam z opcją --hide-menubar, dzięki temu nie jest wyświetlany (niepotrzebny) pasek menu.

Konfiguracja Jawy SDK. Po ściągnięciu ze strony http://java.sun.com stosownego pliku (w moim przypadku jdk-6u4-linux-i586.bin) zmieniam domyślne ustawienia za pomocą polecenia alternatives:


/usr/sbin/alternatives --config java ## # sprawdzam co jest zainstalowane <Enter>
/usr/sbin/alternatives --install /usr/bin/java java /opt/jdk1.6.0_04/bin/java 20000
/usr/sbin/alternatives --config java # wybieram 3<Enter>

Thunderbird3 beta. W fedorze 11 zdecydowano się na wersję beta Thunderbirda. Decyzja chyba nie do końca przemyślana -- można w google znaleźć narzekania, że to-czy-tamto nie działa. Dla mnie Thunderbird3 jest do kitu przede wszystkim z powodu niekompatybilności z jedyną z kilku używanych przeze mnie wtyczek, a mianowicie SyncKolab. [SyncKolab pozwala na synchronizację książek adresowych]. Problem rozwiązałem ściągając ,,ręcznie'' z repozytorium wersję Thunderbirda dla FC 10. Przykładowo z (znak \ poniżej na końcu wiersza oznacza kontynuację):


http://ftp.uni-erlangen.de/pub/Linux/MIRROR.fedora/core/updates/10/i386/\
thunderbird-2.0.0.23-1.fc10.i386.rpm

Teraz:


rpm -Uvh thunderbird-2.0.0.23-1.fc10.i386.rpm

Nikt nie protestuje -- wygląda, że wersje bibliotek się zgadzają. Na razie działa:-) Żeby przy aktualizacji nie usiłował jednak zainstalować TB3, dopisuję w pliku /etc/yum.conf:


exclude=thunderbird

Akumulator trzyma około 2 godziny 10 minut. Przy włączonym WiFi/Bluetooth; odtwarzanie filmu + kopiowanie kilkuset megabajtów plików z drugiego komputera.

Dopisane 29 września 2009: Wielkości fontu w Emacs określam dodając do pliku /etc/X11/Xresources wpis:


Emacs.font: Monospace-9

Zamiast /etc/X11/Xresources można wpisać do ~/.Xresources, po czym wykonać:


xrdb -merge ~/.Xresources

Dociągam też program do rozpakowywania plików .rar


yum install unrar

Kompilowanie ydpdict. Ydpdict służy do obsługi słowników firmy YDP. [YDP sprzedaje swoje słowniki wraz z aplikacją pozwalającą na ich przeglądania; aplikacja jest przeznaczona dla środowiska MS Windows]. Zatem ze strony toxygen.net ściągnąć należy pliki libydpdict-1.0.1.tar.gz oraz ydpdict-1.0.0.tar.gz. Uprzedzając wydarzenia potrzebne jest dociągnięcie dwóch pakietów:


yum install ncurses-devel libao-devel

Teraz rozpakowujemy oba archiwa .tar.gz. W każdym wykonujemy sekwencję (rozpoczynając do archiwum z biblioteką):


./configure && make && make install

Pliki słownika kopiuję do katalogu /usr/local/share/ydpdict. W pliku konfiguracyjnym ~/.ydpdictrc wpisuję:


Path /usr/local/share/ydpdict

Dla wygody można zdefiniować aktywator na panelu.

HP mini 2140 with 6-cell battery
Mini z baterią 6-komorową

HP mini 2140 with with 6-cell battery in case
Waga całości: około 1,5 kg

Dopisane 15 października 2009: Wielkości fontu w pasku menu i menach Emacsa określam dodając do pliku ~/.emacs.d/gtkrc:


http://www.gnu.org/software/emacs/manual/html_node/emacs/GTK-resources.html#GTK-resources
# Define the style 'menufont'.
style "menufont"
{
font_name = "Sans 8" # This is a Pango font name
}

# Specify that widget type '*emacs-menuitem*' uses 'menufont'.
widget "*emacs-menuitem*" style "menufont"

Aby okno Emacsa było maksymalnie duże dodaję do .emacs:


;; nie wyświetlaj paska narzędzi
(tool-bar-mode 0)

Zmieniam też kolor tła na lekko niebieskawy:


(set-background-color "skyblue")

Powyższe wstawiam na samym końcu pliku .emacs, bo inaczej jest ignorowane (pewnie gdzieś ,,po drodze'', w jakimś pakiecie jest ustawiany inny kolor tła). Nota bene: w ten sposób ustawiony kolor jest nadpisywany przez pakiety--muszę znaleźć cwańszy sposób.

Większa bateria i inne dodatki

W sklepie ultimate-netbook.co.uk kupiłem sześcio-komorową baterię oraz nie tyle pokrowiec co coś w rodzaju okładek do netbooka (wszystko kosztowało nieco mniej niż 300 PLN, łącznie z przesyłką). W pierwszych testach bateria trzyma ponad 4,5 godziny--satysfakcjonujący wynik. Ciekawostką jest, że bateria jest większa od standardowej trzy-komorowej i wystaje znacząco, tak że komputer nie leży już prosto na stole, tylko ma ,,zadarty ekran'' (bo podparty wystającą baterią -- por. rysunek obok)... Można się przyzwyczaić, aczkolwiek w pierwszej chwili są wątpliwości...

Ponadto zainstalowałem jednak GoogleEarth i działa toto zupełnie znośnie. W Fedorze 11 GoogleEarth nie działa ,,out-of-the-box'', bo jest jakiś problem z SELinux. Należy wykonać:


## https://bugzilla.redhat.com/show_bug.cgi?id=485886
restorecon -R -v /opt/google-earth/

Dopisane 20 października 2009 (Zainstalowanie programu gretl): Należy wybrać wersję dla older Linux -- wersja ,,modern'' (tj. gretl-1.8.5-1RHEL.i586.rpm) jest kompilowana z bibliotekami, których nie byłem w stanie zainstalować w F11. Przed zainstalowaniem gretla należy ,,dociągnąć'' wymagane biblioteki:


yum install blas lapack blas-devel lapack-devel gnuplot
## libreadline jest ale nie w tej wersji co trzeba:
ln -s /lib/libreadline.so.5 /lib/libreadline.so.4

teraz (opcja --nodeps jest potrzebna bo inaczej instalator będzie zgłaszał błąd -- brak biblioteki libreadline.so.4):


rpm -Uvh --nodeps gretl-1.8.5-1RHEL.i586.rpm

Doinstalowanie pakietów Perla niezbędnych do działania moich skryptów obsługujących flickr.com.


yum install perl-ExtUtils-MakeMaker perl-SOAP-Lite perl-Crypt-SSLeay \
perl-Test-Simple perl-XML-Simple perl-Text-Iconv \
perl-GDGraph perl-Image-ExifTool
## poniższe dwa pakiety trzeba doinstalować ,,ręcznie'':
XML-Parser-Lite-Tree-0.03 Geo-Coordinates-DecimalDegrees

Do oglądania i drukowania plików PDF/PS (zwłaszcza PS) w FC11 służy evince (instalowany domyślnie). Bardzo fajny program ale ja doinstalowuję jeszcze gv oraz xpdf. W pliku konfiguracyjnym /usr/share/gv/GV zmieniam:


# Odświeżaj zmodyfikowany plik automatycznie:
GV.watchFile: True
# Początkowe przeskalowanie
GV.scale: 1

Dopisane 22 października 2009: Spróbowałem aplikacji do obsługi telefonu komórkowego:


yum install gammu wammu kdebluetooth

Aplikacja kbluetooth4 nie działa; nie analizowałem dlaczego. W wammu udało się połączyć z telefonem (model SE K800i) ściągnąć wiadomości i kontakty. Nie działa niestety funkcja wysyłania SMSów, ale jeszcze powalczę może coś się da zrobić. Doczytam w szczególności tutaj.

Wreszcie, ponieważ okna dialogowe wammu nie mieściły się na ekranie zmniejszyłem font systemowy (System-Preferencje-Wygląd-Czcionki) do 9 punktów. Nota bene domyślne 10 punktów jest za duży. Dzięki temu zyskałem też całe cztery piksele ponieważ minimalna wysokość panela wynosi teraz 24 piksele (a było 26). Dolny panel zmieniłem na chowający się automatycznie (Automatyczne ukrywanie). Dzięki tym zabiegom zyskałem circa 20 pikseli więcej na okna aplikacji...

Ostatnia zmiana w konfiguracji, to wywalenie z górnego panelu apletu Aplikacji, Miejsca i System i zastąpienie go ikoną Menu Główne, dzięki czemu jest więcej miejsca na ikony aplikacji. Wszystkie ikony umieszczam w górnym panelu.

piątek, 25 września 2009

Skandia Maraton LangTeam

Ostatni wyścig z cyklu Skandia Maraton LangTeam będzie w Kwidzynie, w następną niedzielę 4. 10. 2009. Profil trasy i więcej informacji jest tutaj.

piątek, 18 września 2009

Manipulowanie plikami bibtexa

Konwencję sobie przyjąłem, że pole tp:keywords zawiera moje słowa kluczowe. Czemu tak? Ano temu, że moja baza bibtexa zawiera wpisy skopiowane z różnych repozytoriów; wpisy te zawierają pole keywords, tyle że nie ma żadnych reguł odnośnie tego co jest zawartością tego pola. Zawartość pola tp:keywords jest (przynajmniej w założeniu) słownikiem ustalonym (controlled vocabulary) pojęć. Podobnie pole tp:comment zawiera mój, krótki opis zawartości pozycji bibliograficznej. W szczególności pola te pomagają posortować/wyciągnąć pozycje bibliograficzne, relewantne z punktu widzenia określonej dziedziny zastosowań. Używam do tego narzędzia bibtool:


bibtool -- 'select {tp:keywords "OSS" }' tph.bib

Powyższe oznacza: wypisz wszystkie rekordy z pliku tph.bib, które zawierają napis OSS w polu tp:keywords. Napis "OSS" jest traktowany jako wyrażenie regularne (regex 0.12):


bibtool -- 'select {tp:keywords "OSS\|UTAUT" }' tph.bib

Powyższe oznacza: wypisz wszystkie rekordy z pliku tph.bib, które zawierają napis OSS lub napis UTAUT w polu tp:keywords. Wyrażenie regularne może zawierać inne metaznaki: ., +, *, itd. Jest znak sumy (a lub b) ale nie ma iloczynu (a i b). Jeżeli chcemy wyciągnąć rekordy zawierająca łącznie pewne napisy, to można wykorzystać mechanizm potoku:


bibtool -- 'select {tp:keywords "#Prio" }' tph.bib |\
bibtool -- 'select {tp:keywords "OSS" }' | \
bibtool -- 'select {tp:keywords "SEM" }'

Powyższe oznacza: wypisz wszystkie rekordy z pliku tph.bib, które zawierają napisy OSS, SEM oraz #Prio (w dowolnym porządku) w polu tp:keywords. Słowo kluczowe #Prio to moja konwencja na oznaczenie ważnych wpisów. Innymi słowy powyższe oznacza: wypisz ważne pozycje literatury dotyczące (łącznie) OSS i SEM.

Do zamiany plików bibtexa na xhtml używam narzędzia bib2xhtml. Ten pakiet jest niestandardowy -- z tego co pamiętam -- trzeba go ściągnąć i zainstalować samodzielnie...

Moja baza bibtexa zawiera kilkaset wpisów, dotyczących różnych dziedzin i o różnym stopniu ważności (od merytorycznie istotnych do słabych; słabe też trzeba gromadzić--np. jako przykłady). Stąd powyższe pomysły, żeby trochę nad tym wszystkim zapanować...

Modyfikując bib2xhtml, który jest programem napisanym w Perlu, zmarnowałem trochę czasu usiłując dodać konwersję (brakujących) polskich znaków diakrytycznych. Otóż bib2xhtml zakłada iż plik jest kodowany w notacji LaTeXa (7 bitowe ASCII), przy czym nie są zaimplementowane znaki zawierające ogonek. Proste wpisanie:


s/\\k\{a\}/ą/g;

Nie chciało zadziałać. Po bliższym obejrzeniu skryptu się okazało, że każdy wiersz pliku jest wstępnie zamieniany poprzez wykonanie następującego polecenia:


## fragment jest wykonywany wew. pętli, `iterującej' po wszystkich wierszach pliku:
{ local ($c, $l, $z) = (0, 0, ());
s/([\{\}])/join("","\001",($1 eq "\{" ? $z[$l++]=$c++ : $z[--$l]),$1)/ge;
## ge oznacza, globalnie+extended mode, dzięki czemu powyższe ma charakter pętli
## wykonywanej dla każdego znaku { oraz }
}

W rezultacie każda sekwencja {...} zostanie zamieniona na \nnn{...\nnn}, gdzie \nnn jest znakiem o kodzie nnn. Przykładowo jeżeli wiersz zawiera:


{abc} {def} {ghi} jkl... => \001{abc\001} \002{def\002} \003{ghi\003} jkl...

Dzięki czemu każda para { ... } jest teraz jednoznacznie identyfikowana. Dokładnie nie wiem po co jest taka sztuczka robiona. Ale teraz zamiana przykładowo \k{a}, tj.~polskiego ą w notacji LaTeXa, wymaga zapisu:


s/\\k(\001\d+)\{a\1\}/ą/g;

piątek, 11 września 2009

Dyskretyzacja w R

Jeżeli plik data1.dat zawiera liczby rzeczywiste, to poniższy skrypt wykona następujacą transformację:


# zamień macierz liczb rzeczywistych z pliku data1.dat na
# odpowiednie wartości na skali porządkowej...
categories <- 5;
df <- read.table("data1.dat", header=T);
dl <- lapply(df, function(x){ cut(x, breaks=categories, labels=FALSE)} );
write.table(data.frame(dl), "data1.txt", sep="\t", na="", row.names=F)

Dla każdej kolumny wyznaczy categories przedziałów o jednakowej szerokości, przyporządkuje każdą liczbę do określonego przedziału, przypisze tej liczbie numer tego przedziału. Polecenie write.table wypisze wyznaczone numery do pliku data1.txt.

niedziela, 6 września 2009

Wycieczka rowerowe do diabelskiego kamienia

Jedna z atrakcji doliny Radości w Gdańsku. Dojście/dojazd jest bardzo prosty -- asfaltem w górę aż do stawów rybnych, tutaj jest parking i szlaban. Za szlabanem to już blisko -- jedziemy dalej, a w momencie kiedy alfalt skręca w lewo (na zakręcie, po lewej znajdują się zabudowania leśniczówki), zjeżdżamy/schodzimy z asfaltu i dalej kawałek prosto. Po jakiś 50--100 metrach w prawo (a nie dalej prosto). Tą drogą lekko pod górę jakieś 500 metrów i dojeżdżamy/dochodzimy do kamienia, który znajduje się na wzgórzu, przy drodze. Dodatkowo jest tabliczka, więc trudno to miejsce przeoczyć... Trzeba podejść jakieś 100 metrów po zboczu. Współrzędne kamienia to 54.392956/18.510197. Wygląda zaś jak na rysunku obok.

Po obejrzeniu kamienia wróciliśmy na drogę asfaltową i pojechaliśmy dalej w górę... Ta droga prowadzi do ul. Słowackiego; można też nią dojechać do Matemblewa. My dojechaliśmy tylko do skrzyżowania (ca miejsca o współrzędnych 54.385589/18.532811) z drogą, którą można wrócić z powrotem do Oliwy. Droga jest praktycznie równoległa do alfaltowej którą przyjechaliśmy, tyle że w lesie. No i ciągle w dół, bo do tego miejsca było głównie pod górę... Wyjeżdżamy jakieś 500 metrów, przed Kuźnią Wodną, który to budynek znajduje się jak wiadomo na początku Doliny Radości.

Trasa w postaci śladu GPS jest tutaj. Albo w wersji kml (Googleearth). GPSowi ,,puściły zawory'' w okolicach zdjęcia dscf7124 (ca miejsca o współrzędnych 54.397747/18.545939). Odtąd trasa zupełnie odbiega od tej, którą jechaliśmy, aż do Spacerowej, na której urządzanie złapało z nowu poprawne namiary. Dodatkowo GPS pogubił na samym końcu, jak pojechałem -- już sam -- w okolice jez. Nowowiejskiego w Sopocie zrobić zdjęcia sromotnikom, których cała kolonia idąca w co najmniej kilkadziesiąt owocników właśnie tam się znajduje.

piątek, 28 sierpnia 2009

Nowy laptop: Dell Vostro 1320

Kupiłem nowego laptopa decydując się ostatecznie na Dell Vostro 1320, który bez systemu kosztował 2800 PLN. Matryca 13,3 cala, procesor Intel Core 2 Duo T6570, 4 Gb pamięci (z czego system widzi 3 Gb) Niestety od razy skucha -- komputer reklamowany jako ważący 1,9kg po zważeniu okazał się być cięższym -- 2,2 kg. Zresztą taka waga jest w papierach od Della, więc sprzedający zwyczajnie oszukują. Akurat zależało mi na czymś lżejszym więc jestem trochę zły...

Poza tym w porównaniu do poprzedniego HP NX9020 wiatrak się włącza często i komputer hałasuje ale to chyba jest nieuchronne biorąc pod uwagę że w środku jest całkiem szybki procesor. Zresztą nie szumi głośno, raczej byłem do tej pory przyzwyczajony, że nic nie szumi wcale.

Podzieliłem dysk na dwa kawałki ca 180 Gb + ca 50 Gb -- jeden na Fedorę, który używam na co dzień drugi na Ubuntu żeby się z Ubuntu oswoić. Fedora 11/Ubuntu zainstalowały się bez większych problemów nie licząc WiFi (w obu nie działa). Na tym froncie totalna porażka. Komputer ma kartę Broadcom 4312 i sądząc z tego co jest dostępne via google powinna działać, a nie działa... Nie używałem tego komputera za dużo do tej pory, ale dwie rzeczy już mi podpadły w Fedorze 11: -- Thunderbird w wersji 3 beta ileś tam (najnowszy), do którego nie działa wykorzystywany przeze mnie plugin synckolab; -- Googleearth w wersji 5, zawiesza komputer raz na kilka uruchomień i znika mapa w dużych zbliżeniach. Wersja GE 4.3 wydaje się działać poprawnie... Z plusów jest Emacs 23, tyle że bez ładnego i domyślnego ekranu startowego -- komu to przeszkadzało?

Stary NX 9020 dziś oddałem Miśkowi...

Dopisane 31 sierpnia 2009: Jest kilka teorii jak uruchomić WiFi, zacząłem od Broadcom wireless on Fedora 11 again. Jest pewien progress, bo się dioda Wireless świeci, ale tak poza tym to nie działa. Do tego nie podoba mi się to dłubanie w jądrze, bo tę kwestię winien załatwić pakiet bez potrzeby uruchamiania insmod czy czegoś podobnego. W innym poradniku z kolei Configuring Broadcom BCM4312 Wireless card in Fedora 10, gość twierdzi jakoby wystarczy samo yum install broadcom-wl. Odkręciłem to co sugerował gość z wpisu Broadcom wireless... ale to nic nie dało.

Dwa dni temu wszakże zaktualizowałem system, przy czym wydaje się kluczowa była aktualizacja paczki kmod-wl. Teraz jest prawie dobrze, tzn. NetworkManager nie działa ale mogę uruchomić połączenie ,,z palca'', w następujący sposób:


ifconfig eth1 up
wlist eth1 scan
iwconfig eth1 essid ESSID
dhclient eth1

Albo po prostu:


system-config-network

odhaczam zarządzanie siecią WiFi przez NetworkManagera, który i tak nie działa i Klikam w aktywuj. Firefox jest ,,na dzień dobry'' w trybie offline więc trzeba wykonać jeszcze jeden klik żeby działał...

Zatem NetworkManager ma problem. Zapewne jest to problem opisany m.in. tutaj.

Dopisane 4 października 2009: W tzw. międzyczasie zainstalowałem F10 w wersji 64 bitowej, ale to nie był dobry pomysł. Ostatecznie z powrotem jest F11. Thunderbird w wersji z F10 (działa i nie ma żadnych komunikatów o naruszeniu zależności). WiFi wreszcie uruchomiłem -- wystarczyło dodać do /etc/modprobe.d/blacklist.conf wpis:


blacklist dell_laptop

Zaczęło też działać googleearth w wersji 5. Jedyny większy problem jaki pozostał to ciut za niski poziom dźwięku.

Dopisane 21 listopada 2009: Bateria trzyma około 3 godzin 15 minut (uruchomiony xine -- wyświetlanie filmu).

Wypadek w Oliwie

Jechałem sobie dziś rowerem Czyżewskiego. Od połowy był korek ale primo to normalne bo skrzyżowanie Opacka/Spacerowa jest mało przepustowe, secundo na rowerze pomykam środkiem i korki mnie nie ruszają. Koniec Czyżewskiego i się okazało, że korek spowodowało zawalone drzewo w okolicach skrzyżowania Czyżewskiego/Opacka. Przelazłem przez gałęzie -- drzewo leżało od kraja do kraja blokując oba pasy i oba chodniki. Na prawym pasie była jedna gablota na zicher dociśnięta gałęziami, na lewym druga... Ten z tej drugiej chyba wjechał w gałęzie już po, ale zwątpił czy przejedzie i już tak został w gałęziach. Ja się przedarłem lewym chodnikiem i pojechałem dalej...

Mam nadzieję, że temu z prawego pasa też nic się poważnego nie stało (mam na myśli ludzi w środku). Anyway w mieście Budynia nawet w bezwietrzny dzień drzewa się przewracają.... Strach i przerażenie, co to będzie dalej:-)

czwartek, 20 sierpnia 2009

Dziadowski uchwyt do roweru

Lubię uchwyty, w których rower jest mocowany za widelec (po zdjęciu przedniego koła). Tak transportowany rower jest zamocowany ,,na mur''--nic się nie kiwa. 100% pewności, że nie spadnie więc Elka ma mniej stresów. Wadą jest koło w bagażniku....

Uchwyt
Opisywany uchwyt

Ponieważ w sklepie z bagażnikami nie mieli kupiłem przez internet. Konkretnie model pn. ,,Tour Professional -- uchwyt/bagażnik''. Fatalny i nie polecam (foto jak wygląda to cudo obok). Gdybym chwilę pomyślał to bym doszedł do wniosku, że sam pomysł tego uchwytu jest chybiony. Mianowicie zasada wykorzystania uchwytu tego typu jest taka, że rower jest mocowany za widelec oraz za tylne koło. ,,Normalny'' bagażnik wygląda w ten sposób, że składa się z szyny, z przodu której jest uchwyt na widelec. Z tyłu szyny jest z kolei rynienka, na której opiera się tylne koło (unieruchamiane paskiem). Rynienka jest regulowana -- może się ruszać w przód i w tył -- co pozwala dopasować odległość do długości roweru. Szyna jest mocowana na belkach bagażnika.

W tym konkretnym dziadowskim modelu, jakiś mundry zrezygnował z szyny. Uchwyt składa się z dwóch kawałków. Regulacja wymaga dopasowania odległości pomiędzy poprzecznymi belkami bagażnika -- przekichane. A jak rowery są dwa i różnią się wielkością? Ewidentnie ktoś nie pomyślał (oprócz mnie przed zakupem).

Po drugie, całość składa się z zyliona podkładek, blaszek, pokręteł, etc... Nie idzie tego skręcić tak, żeby rower nie kiwał się jak w pierwszym lepszym badziewnym uchwycie ,,za ramę''. Reasumując: stanowczo odradzam kupno. Lepiej wydać więcej i kupić normalny.

sobota, 15 sierpnia 2009

Patent #5787449, Word, Microsoft, i4i i XML

Smród pewien powstał wokół tzw. Giganta z Redmond a zwłaszcza jego sztandarowego produktu pn. Word. W skrócie ogromnym -- podobno -- sędzia Leonard Davis (Tyler/Texas) zakazał od 12. października 2009 sprzedaży ww. Worda, co jest efektem naruszenia patentu #5787449 firmy i4i.

Ustalić cóż takiego konkretnie wymyśliła ta firma i4i nie jest proste. Wniosek patentowy jest dość abstrakcyjny, no i na dokładkę trzeba wiedzieć co zaimplementowano w Wordzie, żeby ustalić na ile pozew i4i jest uzasadniony -- przynajmniej w aspekcie prawnym. Poszukując szczegółów via Google rozpocząłem od tekstu konsekwencje pozwu patentowego trolla, w którym twierdzi się, że patent sprowadza się do ,,możliwości definiowania danych w składni Schematu XML, a następnie wykorzystywania tych danych w dokumentach Office''. Dalej autor ocenia, że ,,trudno o coś równie ogólnego i trywialnego, a patent taki nigdy nie powinien zostać przyznany''.

Na moje wszak oko to nie jest podstawa pozwu i4i -- szczegóły wkrótce.

Dopisane 16 sierpnia 2009: przejrzałem patent i poniżej zamieszczam kluczowe fragmenty z komentarzem.

It is an object of the present invention to provide an improved method of encoding a document. [...] in sharp contrast to the prior art the present invention is based on the practice of separating encoding conventions from the content of a document [...] The invention does not use embedded metacoding to differentiate the content of the document, but rather, the metacodes of the document are separated from the content and held in distinct storage in a structure called a metacode map, whereas document content is held in a mapped content area.

Ostatnie zdanie wydaje się dotyczyć istoty patentu. Nie jest to wcale ,,możliwości definiowania danych w składni Schematu XML''. Bzdura. Chodzi o przetwarzanie dokumentu XML (i nie tylko XML -- przypuszczam, że każdego dokumentu elektronicznego przetwarzanego w sposób opisany we zastrzeżeniach wniosku patentowego) w taki sposób, że treść i formatowanie są zapisywane w oddzielnych miejscach (held in distinct storage). Jak to ma działać jest objaśnione dalej:

A metacode map is a multiplicity of metacodes and their addresses associated with mapped content. An address is the place in the content at which the metacode is to exert its effect.

Łopatologicznie można to przedstawić na przykładzie poniżej. Po lewej stronie dokument XML/SGML a po prawej ten sam dokument bez znaczników (nazwanych metacodes we wniosku patentowym) -- są one przechowywane w innym pliku/miejscu i wstawiane wtedy kiedy jest to potrzebne.


<p>Pod źdźbłem <strong>spał</strong> Pod źdźbłem spał żółw śnięty
żółw śnięty </p>

BTW w ten sposób dokument może być oznakowany za pomocą różnych systemów znaczników (przynajmniej teoretycznie, bo w praktyce jakoś trudno mi wyobrazić redagowanie takiego dokumentu), podczas gdy w ,,klasycznym'' XMLu treść+oznakowanie stanowi jak wiemy monolit.

Nie chce mi się dalej czytać, ale całe to invention sprowadza się zatem do ,,sprytnego'' redagowania dokumentów (w tym dokumentów XML/SGML), w którym znacznik nie jest wstawiany bezpośrednio do treści dokumentu ale jest umieszczany osobno wraz ze wskaźnikiem gdzie ma być wstawiony (the patent describes separating markup from the content stream by means of an map indexing the content).

Reasumując: 1) rzecz cała sprowadza się w dużym stopniu do interfejsu; 2) widocznie Word korzysta z takiego rozwiązania; 3) patent jest dobitnym przykładem czegoś co należało do stanu techniki (aka prior art) i jako takie nie powinno w ogóle być patentowalne, bo cóż jest bardziej trywialnego niż zbiór wskaźników do czegokolwiek.

PS: sugestie głoszone przez ignorantów na różnych forach jakoby W3C albo Apache Fundation są zagrożone patentem i4i nie są prawdziwe, bo patent dotyczy tylko pewnego sposobu manipulowania dokumentem strukturalnym a nie XMLa/SGMLa jako takiego.

Ciekawa wizualizacja danych na BBC Sport

Na stronie BBC intrygująca mapa. Robi wrażenie--przynajmniej na mnie (geokodowanie, integracja danych, wizualizacja).

poniedziałek, 10 sierpnia 2009

Emacs 23

Od 29 lipca 2009 najnowszą wersją Emacsa jest 23.1. Warto zmienić wersję 22 na 23, bo ta ostatnia potrafi m.in. korzystać z fontów TrueType.

wtorek, 28 lipca 2009

Najbardziej oblegane zdjecie na flickr.com

Moje najbardziej oblegane zdjęcie na flickr.com. niedługo będzie miało jubileusz 2000 oglądnięć (przeciętna dla całego mojego zbioru to ok. 10 odsłon). Ponad 50 użytkowników zaznaczyło je jako ulubione. Tylko hmm... upodobania tych użytkowników takie trochę...

sobota, 18 lipca 2009

Rysowanie diagramów ścieżkowych za pomocą MetaPosta

Diagram ścieżkowy (path diagram)-- popularna notacja służąca do graficznego definiowania równań strukturalnych -- to rodzaj grafu, w którym kółka i prostokąty oznaczają węzły a strzałki krawędzie. Do tego zarówno kółka/prostokąty jaki i strzałki mogą być oznaczone symbolami. No i tu pech, bo tradycyjnie używa się greckich liter, do tego z subskryptami.

Dia to fajny program, ale przy bardziej zaawansowanych diagramach wychodzą jego ograniczenia, jak przykładowo niemożność umieszczania formuł matematycznych. Wstawianie symboli greckich próbowałem obejść modyfikując LOCALE i klawiaturę (da się) ale subskrypty/superskrypty to już się okazały nie do przejścia. Kombinowałem zatem jakby tu łatwo i przyjemnie zrobić diagramy ścieżkowe w czymś innym. W szczególności książka Skrondala i Rabe-Hesketh (Generalized latent variable modeling: multilevel, longitudinal, and structural equation models, ISBN: 9781584880004) -- ewidentnie składania LaTeXem -- zawiera bardzo schludne diagramy ścieżkowe. Podobno też w R coś tam się samo składa... Nic wszakże konkretnego nie ustaliłem i stanęło jak zwykle na MetaPoście.

Tutaj umieszczone bardzo proste makra pozwalają na rysowania diagramów ścieżkowych. Przykładowo narysowanie jednoczynnikowego modelu pomiaru, zawierającego trzy miary refleksyjne będzie wyglądało jakoś tak:


z1 = (40mm,20mm); %% srodek koła
%% Rysowanie czynnika eta_1 z błędem delta_1
ErCircle(z1, "$\eta_1$", "$\delta_1$", "r");

%% miary (refleksyjne):
z15 = (10mm,0mm);
%% miara x_1 z błędem \epsilon_1
ErRectangle(z15, "$x_1$", "$\epsilon_1$", "l");
CircleToRectangle(z15,z1, "$\lambda_1$");

z10 = (10mm,10mm);
%% miara x_2 z błędem \epsilon_2
ErRectangle(z10, "$x_2$", "$\epsilon_2$", "l");
CircleToRectangle(z10,z1, "$\lambda_2$");

z11 = (10mm,20mm);
%% miara x_3 z błędem \epsilon_3
ErRectangle(z11, "$x_3$", "$\epsilon_3$", "l");
CircleToRectangle(z11,z1, "$\lambda_3$");

Bardziej zaawansowany model jest obok na rysunku. Może komuś się też się przyda...

piątek, 19 czerwca 2009

prelim2e

Przydatny pakiet do wstawianie identyfikatora wersji dokumentu. Do tej pory stosowałem do tego makra `generyczne', ewidentnie wymyślone w okolicach f-my BOP sc.:


\newdimen\hs\hs 210mm
\newdimen\vs\vs 297mm
\def\shipmarg{\kern15mm}
\newbox\shipbox

\let\oriship\shipout

\def\DOSHIP{%
\hoffset-1in \voffset-1in
\oriship\vbox to\vs{
\shipmarg\nointerlineskip
\nointerlineskip\vss
\hbox to\hs{\hss\box\shipbox\hss}%
\nointerlineskip\vss
\hbox to\hs{\shipmarg \DOCNOTE \hss}
\shipmarg
}}
\def\doship{\aftergroup\DOSHIP}
\def\shipout{\afterassignment\doship\setbox\shipbox}

(Zaznaczone przerażające polecenia \aftergroup/\afterassignment, których w życiu nie używałem i przyznam nawet, że nie znam ich znaczenia.) Po czymś takim, umieszczonym najlepiej w osobnym pliku, należy zdefiniować tekst umieszczany na każdej stronie:


\def\DOCNOTE{ .... }

Patent ten w zmodyfikowanej wersji był wykorzystywany m.in. w klasie wzmgr. Był ale ponieważ przestał działać wymieniłem go na pakiet prelim2e. Sądząc z zawartości google -- mniej znany. Używa się go zaś bardzo prosto:


\usepackage{prelim2e}
\renewcommand{\PrelimWords}{...} %% <-- opcjonalnie, jeżeli domyślny tekst się nie podoba

Pakiet draftcopy nie działa z pdftexem więc od razu został zdyskwalifikowany. (Poza tym nie podoba mi się zwyczaj wstawiania bombastycznego napisu w tle tekstu kolumny.)

Dodanie prelim2e do wzmgr zrobiłem warunkowo. Jak ktoś doda do dokumentu opcję brudnopis, to zamieni się to na poniższe:


\DeclareOption{brudnopis}{\AtEndOfClass{\input{prelim2e.sty}%
\renewcommand{\PrelimWords}{\ThisDocVersionId}\linespread{1.0}}}
\def\ThisDocVersionId{....} %% <-- trzeba zdefiniować --

Bez umieszczenia \input wewnątrz \AtEndOfClass, LaTeX zgłaszał błąd powtórnej definicji \PrelimWords. Mam nadzieję, że powyższe jest OK, ale tradycyjnie pewności nie ma:-)

czwartek, 4 czerwca 2009

LaTeX, tabele i \tabularnewline

Prosta tabela składająca się z dwóch kolumn, ale zawierająca wielowierszowe rubryki. Rubryki mają być składane ,,w chorągiewkę''. Zatem dodaję pakiet array i definiuję za pomocą \newcolumntype:


\usepackage{array}
\newcolumntype{L}{>{\raggedright\hspace{0pt}}p{.48\textwidth}}
\begin{document}

\begin{tabular*}{\textwidth}{@{\extracolsep{\stretch{1}}}LL}\hline
coś tam coś tam coś & coś tam coś tam coś \\
\end{tabular*}

Nie działa a przyczyna jest subtelna. Otóż \raggedright m.in. definiuje polecenie \\, które kończy wiersz. Wewnątrz tabular też jest zdefiniowane \\, które kończy wiersz tyle, że tabeli -- a to co innego. Na okoliczność tego konfliktu wymyślono polecenie \tabularnewline. Należy zamiast \\ na końcu wiersza tabeli wstawiać \tabularnewline i będzie git! Do dziś nie potrzebowałem \tabularnewline więc nawet nie wiedziałem, ze takie coś istnieje. Zamiast \tabularnewline można -- dołączając pakiet ragged2e -- wstawić ,,bezpieczną wersję'' \raggedright, czyli \RaggedRight.

piątek, 22 maja 2009

Drobny przykład w XSLT

Fragment pliku XML wygląda jakoś tak:


<month no="1">
<item data="2009/01/03" dist="20" exdist="18.60" />
<item data="2009/01/25" dist="50" exdist="49.10" />
<month no="2">
...
</month>

Wszystkie item pomiędzy month trzeba zsumować aż do zadanego numeru miesiąca (włącznie), który jest n.b. wartością atrybutu no. Poniższy szablon wykona ww. zadanie:


<xsl:template name='drukuj-do-mc'>
<xsl:param name='mc'/>
<xsl:text> [od początku roku: </xsl:text>
<xsl:value-of select="sum(//item[not(../@no &gt; $mc)]/@dist)"/>
<xsl:text> km] </xsl:text>
</xsl:template>

Wyróżniony wiersz zawiera kluczowe przekształcenie XPath: //item[not(../@no &gt; $mc)]/@dist, co można zinterpretować następująco: wszystkie atrybuty dist przyczepione do elementu item, z całego dokumentu, ale pod warunkiem, że wartość atrybutu no elementu nadrzędnego jest nie większa niż $mc.

czwartek, 7 maja 2009

Pakiet fancyvrb (LaTeX)

Pakiet pozwala na formatowanie otoczenia verbatim, przykładowo można dodać numerowanie wierszy, zmienić stopień pisma (przydatne jak zawartość się nie mieści). Można też zdefiniować znak, który będzie rozpoznawany jako polecenie wewnątrz verbatim. To ostatnie przydaje się do formatowania fragmentów tekstu, np. złożenia kursywą lub w innym kolorze (przykład niżej)


\documentclass{article}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{SVerbatim}{Verbatim}%
{commandchars=\+\[\],numbers=left,numbersep=5pt,fontsize=\footnotesize}
%%
\DefineVerbatimEnvironment{XVerbatim}%
{Verbatim}{numbers=left,numbersep=5pt,fontsize=\small}
\begin{document}

\begin{SVerbatim}
aa [ ] \[ \] %% <-- znaki [ ] znikają magicznie
bb [ ]
ccc +textit[cccc Hop siup!]
\end{SVerbatim}

\begin{Verbatim}[commandchars=\@\[\]]
aa [ ] \[ \]
bb [ ]
ccc @textit[cccc Hop siup!]
\end{Verbatim}

Magiczne commandchars definiujące znaki rozpoczynające
polecenie można definiować także `indywidualnie':

\begin{XVerbatim}[commandchars=\@\[\]]
aa [ ] \[ \]
bb [ ]
ccc @textit[cccc Hop siup!]
\end{XVerbatim}

\end{document}

Polecenie zatem zaczyna się znakiem `+' a argument jest zawarty wewnątrz `[' oraz `]'. Tych znaków nie można używać wewnątrz Verbatim (por. przykład pierwszy, powyżej). W tej sytuacji ich deklaracja ,,globalna'' jest ryzykowana, bo może się zdarzyć, że będzie potrzeba wstawić ,,magiczny'' znak literalnie.

poniedziałek, 4 maja 2009

Fälschungserschwerende Schrift (aka falsification-hindering script)

Ciekawostka, z wykładu w Bachotku. Krój, którym są -- nazwijmy to -- składanie tablice rejestracyjne w Niemczech jest dość specyficzny. Nie mając pojęcia do czego służy ww. font można by pomyśleć że to jakiś niedorobiony produkt amatora: litery ,,z różnych parafii'', jedna z szeryfami drugie nie, znaki w innych krojach optycznie podobne tutaj są specjalnie różne....

It was designed by Karlgeorg Hoefer for the German government in the late 1970s in the light of Red Army Faction terrorism when it was discovered that with the then-standard font for vehicle registration plates--the road sign font--it was particularly easy to modify letters by applying a small amount of black paint or tape. For example, it was easy to change a "P" to an "R" or "B", a "3" to an "8", or an "L" or "F" to an "E". Modifications to FE-font plates are somewhat more difficult, as they also require the use of white paint, which is easily distinguished at a distance from the retroreflective white background of the plate, in particular at night. Faked FE-Schrift letters (e.g., "P" to "R") appear conspicuously disproportionate.

Podrobić trójkę z ósemki, zamalowując kredą połowę znaku, jak to zrobił Hans Kloss w 17 odcinku SWNŻ (Akcja liść dębu) byłoby dużo trudniejsze. Dla porównania w większości fontów wygląda to tak: 88/33 (zakładam, że sz. czytelnik używa normalnego kroju w przeglądarce).

wtorek, 28 kwietnia 2009

Kamień Ernsta Becker-Lee

Skręt do kamienia
Tu skręcić do lasu
Kamień Ernsta Becker-Lee
Kamień Ernsta Becker-Lee

Mniej znana atrakcja Gdańska położona w dolinie Radości. Dojście wygląda następująco: Kierujemy się na hotel Oliwski Dwór. Jak już do tego hotelu dojdziemy to należy iść w górę, wzdłuż doliny ścieżką na skraju lasu (mając ogródki działkowe po lewej ręce). Mijamy małe jeziorko i wychodzimy na łąkę. Teraz trzeba zachować czujność i skręcić w prawo do lasu (miejsce skrętu ma współrzędne (54.399598/18.529976, cf. górne zdjęcie zamieszczone obok). Idziemy według znaków czarnego szlaku. Po przejściu 20--30 metrów droga się rozwidla. Idziemy w lewo (wzdłuż szlaku, tyle że niekoniecznie jest to oczywiste, bo znaczek może być słabo widoczny). Po 100--200 metrach będzie widać skocznię na lewym zboczu doliny (a raczej to co ze skoczni zostało). Dokładnie naprzeciwko skoczni znajduje się kamień--płyta pamiątkowa.

Płyty z dołu nie widać. Trzeba wejść na prawe zbocze--dokładnie naprzeciw zeskoku skoczni (współrzędne 54.40047/18.52563). Informacje nt. płyty są także tutaj oraz tutaj.

Przy okazji jak załadować plik GPX do Garmina (za wiki.gpsbabel.org):


gpsbabel -w -i gpx -f ~/.gps/local.wpts -o garmin -F /dev/ttyUSB0

Nota bene stojąc na rozbiegu skoczni płytę widać doskonale.... Dziwny pomysł na zmotywowanie zawodników:-)

Dopisane 6 maja 2009: Informacja z Panoramy Gdańskiej zamieszczona na youtube.com

TV w Linuksie

W uzupełnieniu do wpisu: TV w Internecie oglądam więcej niż sporadycznie ale dziś chciałem pooglądać mecz Barcelona vs Chelsea i nie potrafiłem uruchomić sopcasta. Ostatecznie zadziałał sposób podany na blogu Mateusza Wójcika, tj. poprzez uruchomienie skryptu (lekko zmieniony przez dodanie if-then-else-fi):


#!/bin/bash
if [ $1 ]
then
sp-sc $1 3908 8908 > /dev/null &
echo "Poczekaj 20 sekund na scachowanie danych i otworzenie odtwarzacza..."
sleep 20
mplayer http://localhost:8908/tv.asf
echo "Zamykanie polaczenia..."
killall sp-sc
else
echo "Podaj kanał..."
fi

Adres kanału znalazłem na stronie http://www.soccer-live.pl/.

niedziela, 26 kwietnia 2009

Drukowanie arkusza Google docs

W przykładzie poniżej Perl pobiera dane z arkusza Google Docs, i zapisuje je do pliku tymczasowego. Następnie TeX -- uruchomiony ,,z wnętrza'' skryptu -- formatuje ww. dane (układ graficzny jest zdefiniowany w stylach (por. \input brasskoncert.sty):


use Net::Google::Spreadsheets;
use Getopt::Long;
use Encode qw(encode);

my $STitle = 'Konkurs_Brass'; # nazwa arkusza do pobrania
my $pdftexprogname = 'pdfmex'; # nazwa programu uruchamiającego TeXa
my $outputname = "tmp__.tex"; # nazwa pliku tmp

my $pdfintermode = "-interaction=nonstopmode"; # lepsze niż "-interaction=batchmode";

GetOptions( 't=s' => \$title,);

## nazwy kolumn w arkuszu:
my @Cols = ('nazwisko', 'kraj', 'instrument', 'srednia');

my $service = Net::Google::Spreadsheets->new(
username => '???', password => '???' );

my @spreadsheets = $service->spreadsheets();

my $spr_title = $service->spreadsheet( { title => "$STitle" });
my $worksheet = $spr_title->worksheet( { title => 'sheet1' });
my @rows = $worksheet->rows;

open (OUT, ">$outputname") || die "Nie mogę otworzyć $outputname.tex!\n\n";
print OUT "\\input brasskoncert.sty\n\\HEAD{$title}\n";

for $r (@rows ) { $rc = $r->content; print OUT "\\Row";
for $t (@Cols ) {
print OUT "{", encode("iso-8859-2", ${$rc}{$t}), "}";
}
print OUT "\n";
}

print OUT "\\TAIL \\bye\n";

close (OUT);

my @run_pdftex = ($pdftexprogname, $pdfintermode, $outputname);
system ( @run_pdftex ) == 0 || die "Cuś nie tak\n" ;
##

Być może da się prościej, bez Net::Google::Spreadsheets a poprzez LWP...

piątek, 24 kwietnia 2009

Elka w wikicommons

Skrypt Erika Möllera , którego używałem do ładowania zdjęć na WikiCommons przestał działać. Konsultacja na stronie wykazała, że jest outdated and should be considered deprecated and useless. Program proponowany w zamian nie podoba mi się. Może i jest dobry, ale zbytnio się różni od poprzedniego a ja nie mam czasu go rozgryzać. Znalazłem za to poprawioną wersję skryptu Möllera, która działa, tutaj (lub tutaj).

Jest ciągle problem z kodowaniem (używam domyślnie ISO-8859-2), bo po przesłaniu na WC tekst jest niepoprawnie zakodowany. Metodą prób i błędów ustaliłem, że działa dopisanie na początku skryptu czegoś takiego:


binmode( STDOUT, ':utf8' );
use open IN => ':encoding(iso-8859-2)'; ## I am using legacy encoding, ha!
use open OUT => ':utf8'; ## write utf8

Opis zdjęcia w pliku tekstowym jest w ISO, po przesłaniu na WC kodowanie jest OK. Próbowałem wysyłać pliki kodowane jako UTF-8, ale to też nie działało (mój perl jest w wersji v5.8.8).

Rysunek obok znalazłem przypadkiem. Ktoś skopiował moje zdjęcie z flickr.com na WC dodając zabawny opis...

Przy okazji ustaliłem jak przejść do ,,trybu UTF'' otwierając nowy plik w Emacs: C-x C-m f utf-8

Jak przekazać liczbę do AWK

Z tej racji, że na mojej stronie jest trochę informcji nt. AWK spory odsetek ją odwiedzających szuka informacji właśnie nt. tego języka. Z wpisów w logu serwera WWW dotyczących pola REFERER wynikałoby m.in., że nie jest oczywiste -- dla niektórych -- w jaki sposób można przekazać wartość zmiennej do skryptu AWK (Jak przekazać liczbę do AWK). Jest o tym napisane w Opisie... -- a konkretnie tutaj Argumenty wywołania programu -- może zbyt szczegółowo. Poniżej zatem bardziej łopatologiczny przykład:


gawk -v qq="A ku ku" 'BEGIN { print qq }'

Albo via skrypt shella:


#!/bin/bash
ARG1="$1"
ARG2="$2"
gawk -v A1="ARG1" -v A2=ARG2 'BEGIN { print A1, A2 }'

poniedziałek, 6 kwietnia 2009

Write only publications

Bynajmniej nie chodzi o nieprawomyślną (dla wyznawców Lecha W.) książkę mgr. Zyzaka (żart -- sarkastyczny do tego). O co chodzi można poczytać tutaj: Write-only publications. A tutaj jest to samo z grubsza, ale trochę inaczej opisane: IGI Global and Other Vampire Presses...

Vampire Press -- celne porównanie, trzeba to przyznać.

piątek, 27 marca 2009

Wyścig po bruku: Paryż (Compiégne) -- Roubaix

Żeby nie przeoczyć jak w zeszłym roku zamieszczam informację: 107 wyścig Paryż (Compiégne) -- Roubaix, odbędzie się 12 kwietnia 2009 r. Wyścig ma 259 km długości w tym 52.6 km ,,odcinki specjalne'' (trzy nowe w porównianiu do 2008 r.: Vertain -- Saint-Martin-sur-Ecaillon (przedłużony do 2,4 km), Wallers -- Helesmes (1,6 km) Auchy-les-Orchies -- Bersée (przedłużony z 1,2 km do 2,5 km). Trasa biegnie jakoś tak: Compiégne (start), Noyon, Ham, Saint-Quentin-en-Vermandois Bohain, Troisville (początek bruku aka pavé), Solesmes, Denain, trouée d'Arenberg, Orchies, Templeuve Cysoing, Velodrome in Roubaix (meta).

Wyżej wymienione ,,odcinki specjalne'' to główne bruk, i to jaki. Jeden z bardziej legendarnych odcinków to lasek Arenberg (hiszp. El bosque de Arenberg). Tu jest opis i więcej zdjęć, a tu film (Galopująca Walkiria Wagnera jako podkład muzyczny.)

Niestety z bliska nie zawsze jest fajnie i kolorowo. Upadek na bruk przy tej prędkości boli nawet zawodowca...

sobota, 28 lutego 2009

Poetyka zapytań do Google

Zabawne jest co ludzie wypisuję w google szukając tego czy tamtego. Zestawienie tego co wpisują (kompletne zapytania) lądując na stronie http://pinkaccordions.homelinux.org/ jest tutaj.

piątek, 27 lutego 2009

Cytowanie według schematu autor-rok z użyciem Bibtexa i pakietu natbib

Przywołania bibliograficzne to odsyłacze do wykazu literatury [w odróżnieniu od przypisów bibliograficznych, czyli przypisów zawierających podstawowe elementy identyfikujące przywoływany dokument. Przypisy są ,,modne'' w tekstach humanistycznych i prawnych oraz wśród ,,akademickich moherów'' z innych branż]. W LaTeXu standardowym sposobem cytowania jest ,,poprzez numer'', pod którym dana pozycja jest umieszczona w zestawieniu literatury.

W wielu dziedzinach nauk obowiązującym zwyczajem jest oznaczanie przywołań przy pomocy umieszczonego w nawiasach okrągłych lub kwadratowych nazwiska autora/autorów oraz roku wydania, np. (Knuth 1985). Aby przestawić LaTeXa na taki sposób tworzenia przywołań bibliograficznych należy:

  • dołączyć pakiet natbib,
  • dołączyć pakiet hyperref z opcją breaklinks, oraz
  • Dołączyć odpowiednie polecenie \bibliographystyle.

\usepackage{natbib}
\usepackage[breaklinks]{hyperref}
\bibliographystyle{papalike} %% spolonizywany style apalika.bst
\begin{document} %% albo standardowy \bibliographystyle{plainnat}

Bez breaklinks LaTeX nie złamie wiersza w obrębie przywołania, co w przypadku dużej ich liczby będzie skutkować dużą liczbą sterczących na prawym marginesie fragmentów nieprzeniesionego prawidłowo tekstu.

Polecenie \bibliographystyle{papalike} określa styl bibliograficzny. Tu jest problem, bo większość stylów nie jest spolonizowana. Wyżej podany papalike, to ,,na szybko'' spolszczony plik apalike (Dostępny tutaj). Teraz należy uruchomić poniższy wiersz (dla pewności dwa razy:-):


pdflatex plik.tex && bibtex plik

Z rozpędu dodałem opcję definiowania przywołań bibliograficznych do wzmgr.

A jeżeli publikacja nie ma daty wydania, np. strona WWW bez daty publikacji, to zgodnie z zaleceniami APA: The initials n.d. should be listed if there is no date. Po polsku zamiast n.d. wstawiam bdw (brak daty wydania), np. (Ajzen, bdw).

Dopisane 28 Lutego 2009: Pakiet hyperref można wywołać z opcją backref, albo pagebackref co skutkuje tym, iż w spisie literatury pojawią się przy każdej tzw. pozycji literaturowej numery stron, na których owa pozycja jest przywoływana (przydatne na etapie pisania pracy oraz w przypadku dokumentu w wersji elektronicznej (przykład -- zobacz spis literatury w pliku mgr-main.pdf)).

Teraz uwaga: powyższe nastawy nie zawsze działają. Nie rozgryzłem tematu do końca ale: klasy Marcina Wolińskiego wydają się nie być kompatybilne z natbib. Kompilacja kończy się błędami `\inaccessible' na etapie przetwarzania spisu literatury. W google jest coś na rzeczy tutaj. Wprawdzie większość wątku jest mało konkretna, ale sugestia J. Kew wydaje się prawdopodobna: I think there's an incompatibility between your use of \leftmark in the header, and whatever (the bibliography style?) is supposed to be producing the \mark's.

Pakiet natbib testowany z innym tekstem spowodował też inny błąd: w przypadku podzielenia przywołania pomiędzy stronami link z strony poprzedniej nie kończy się na brzegu ostatniego wiersza ale obejmuje także ewentualne przypisy, ew. paginę dolną oraz paginę górną następnej strony (Oczywiście usunięcie breaklinks z listy opcji pakietu hyperref usunęłoby problem ale wprowadziło inny jednocześnie.)

Najśmieszniejsze, że mam dwa wydaje się identyczne dokumenty, w których w jednym taki błąd występuje a w drugim jest OK. Już nie jest śmiesznie -- dodałem więcej tekstu do dokumentu, który był OK i stał się KO (por. strona 17 w pliku mgr-main.pdf). Coś mi dzwoni, że tego typu efekt może wynikać z ograniczeń TeXa, który najpierw składa akapity a potem łamie strony. Skąd biedak ma wiedzieć, że akurat w tym wierszu skończy mu się strona... Anyway -- zadałem pytanie na GUST-l bo może się mylę.

Dopisane 2 Marca 2009: Limitation of pdfTeX napisał Heiko Oberdiek w odpowiedzi na moje pytanie na comp.text.tex. Niestety to potwierdza, że mi dobrze dzwoniło...

Dopisane 6 Kwietnia 2010: O jednej rzeczy w tym wszystkim zapomniałem. Mianowicie polecenie składające zawartość \cite{...} wygląda następująco (plik latex.ltx):


\def\@citex[#1]#2{\leavevmode
\let\@citea\@empty
\@cite{\@for\@citeb:=#2\do
{\@citea\def\@citea{,\penalty\@m\ }%
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
\if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
\@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries ?}%
\G@refundefinedtrue
\@latex@warning
{Citation `\@citeb' on page \thepage \space undefined}}%
{\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}

Ostatni wiersz jest istotny. Magiczne \@cite@ofmt jest zdefiniowane trochę dalej jako:


\let\@cite@ofmt\hbox

Co oznacza, że każde odesłanie bibliograficzne ,,jest brane'' w pudełko i nie ma szans, żeby się odsyłacz przełamał nawet z aktywną opcją breaklinks. Wystarcz jednak wpisać:


\let\@cite@ofmt\relax

Żeby odsyłacz nie był składany w pudełku (ze wszystkimi tego konsekwencjami, negatywnymi też). Albo mam za starego/błędnego hyperrefa, albo jest jakaś opcja, której nie znam albo jeszcze coś innego. U mnie samo wywołanie pakietu hyperref z opcją breaklinks nie przełamuje odsyłaczy, z wyżej opisanego powodu.

niedziela, 15 lutego 2009

Wyświetlanie zdjęć zrobionych w pobliżu innego zdjęcia

Wyświetlanie zdjęć zrobionych w pobliżu innego zdjęcia na flickr.com jest łatwe, ale ta funkcja jakoś mi umknęła do tej pory a jest przydatna. Na przykład żeby się nie `zapętlić' i robić zdjęcie tego co już było sfotografowane. Otóż przykładowo:


http://www.flickr.com/photos/tprzechlewski/3087051333/

Pokazuje stronę ze zdjęciem. Natomiast


http://www.flickr.com/photos/tprzechlewski/3087051333/nearby

Ze zdjęciami zrobionymi obok tego zdjęcia. Oczywiście zdjęcie musi być geotagowane żeby powyższe zadziałało.