środa, 19 października 2011

Completely plain emails in Thunderbird

To switch Thunderbird (version 7.*) to compose mails in plain text (completely plain emails) go to Edit → Preferences → Advanced → Config Editor (in Polish: Edycja → Preferencje → Zaawansowane → Edytor Ustawień) and set both mail.html_compose and mail.identity.default.compose_html to false.

BTW according to the Thunderbird documentation: When you write a message in Thunderbird, you use either an HTML editor or a plain text editor. If you use an HTML editor, then you can send the message in HTML, plain text, or both. If you use a plain text editor, then you can only send the message in plain text. You usually specify which type of editor to use by identity. In your account settings, on the Composition and Addressing page, either check or clear the checkbox: "Compose messages in HTML format". Unfortunately there is no such a checkbox in version 7 of TB, or it is hidden perfectly...

In order to temporarily shift between plain-text and HTML editors hold the SHIFT key while clicking the Compose (or Replay) buttons.

wtorek, 18 października 2011

Fragment ścieżki dźwiękowej filmiku z YT

Poniższe operacje miały na celu wykonanie (oryginalnego) dzwonka do telefonu.

Po pierwsze, zamieniłem plik z YToube na mp3 korzystając z serwisu www.flv2mp3.com. Rezultat konwersji ściągnąłem ,,do siebie''.

Po drugie, za pomocą ffmpeg wyciąłem pierwsze 8 sekund zaczynając od 2 sekundy:


ffmpeg -ss 00:00:02 -t 8 -i plik.mp3 -acodec copy -vcodec copy plik-8s.mp3

koniec

piątek, 14 października 2011

Zmarł Dennis Ritchie

Umarł Dennis Ritchie (9 października). Współtwórca systemu Unix i języka C. Parę dni wcześniej, jak umarł Steve Jobs, który na dobrą sprawę nic nie wymyślił -- był zdolnym managerem w stylu Gatesa czy Forda (tego antysemity od samochodów), to cały świat płakał...1

W takiej sytuacji przypomniała mi się historia Biblii Gutenberga, która powinna się nazywać Gutenberga-Fusta, a nawet Fusta, bo przecież wykolegował on był Gutenberga. A jednak nie, wielcy sprzedawcy nie przechodzą do historii...

1No prawie cały... RMS nie płakał.

czwartek, 13 października 2011

Wycieczka z Tczewa do Kwidzyna przez Gniew

Z Tczewa do Kwidzyna przez Walichnowy i Gniew. W Gniewie promem na drugi brzeg Wisły. Asfalt kiepski (ale nie bardzo kiepski), do tego kawałek drogi szutrowej ale takiej, że na upartego to nawet na oponach 23mm dałoby się jechać. Bardzo mały ruch samochodowy... Ogólnie mogę polecić. Zamiast do Kwidzyna można wykręcić zurik na Tczew przez Piekło-Białą Górę.

Ślad jest tutaj.

Dictionary-style headers in LaTeX

It is pretty simple to define dictionary-style headers in LaTeX. Look at the example below:


\documentclass[twoside]{report}
\usepackage{multicol}

%%% \leftmark/\rightmark inserts appropriate \mark{...}
\usepackage{fancyhdr}
\pagestyle{fancyplain}
\fancyhead{}
\fancyhead[LE]{\normalfont \small\itshape \rightmark }
\fancyhead[RE]{\normalfont \small\itshape \leftmark }
\fancyhead[RO]{\normalfont \small\itshape \leftmark }
\fancyhead[LO]{\normalfont \small\itshape \rightmark }
\fancyfoot[CO,CE]{\thepage}

\title{Vocabulary layout -- example}

\newcommand{\Entry}[2]{\par \leavevmode
\ignorespaces\markboth{#1}{#1} #1 #2}

\begin{document}
\maketitle

\begin{multicols}{2}

\Entry{AA BB CC DD00001}{aa bb cc dd ee ff gg hh ii jj mm nn oo pp qq rr ss tt uu vx 00001 zz.}
\Entry{AA BB CC DD00002}{aa bb cc dd ee ff gg hh ii jj mm nn oo pp qq rr ss tt uu vx 00002 zz.}
\Entry{AA BB CC DD00003}{aa bb cc dd ee ff gg hh ii jj mm nn oo pp qq rr ss tt uu vx 00003 zz.}

... ... ...

\Entry{AA BB CC DD00299}{aa bb cc dd ee ff gg hh ii jj mm nn oo pp qq rr ss tt uu vx 00299 zz.}
\Entry{AA BB CC DD00300}{aa bb cc dd ee ff gg hh ii jj mm nn oo pp qq rr ss tt uu vx 00300 zz.}


\end{multicols}

\end{document}

Crucial commands are \markboth, \leftmark and \rightmark. See also Typesetting a Dictionary with LaTeX.

piątek, 7 października 2011

How to Delete Duplicate Files in Linux

There is a dedicated tool in Linux to finds duplicate files in a given set of directories.


yum install fdupes

Now, if---for example---one wants to find duplicates in the /cmn and /home/tomek directories, one have to enter the following command:


fdupes -r /cmn /home/tomek
## or prompt the user for files to preserve, deleting all others:
fdupes -r -d /cmn /home/tomek
## or preserve the first file in each set of duplicates and delete
## the others without prompting the user (terrifying dangerous:-):
fdupes -r -d -N /cmn /home/tomek

Note -r for recursive. Without -r subdirectories are not scanned. One have to remember not to remove duplicates one needs.

Fdupes searches the given paths for duplicate files. Such files are found by comparing file sizes and MD5 signatures, followed by a byte-by-byte comparison.

środa, 28 września 2011

Perl, MySQL i UTF-8

Strasznie dużo czasu zmarnowałem usiłując zmienić kodowanie w bazie MySQL na UTF i dopasować skrypty Perla do tej zmiany.

Przestawienie MySQLa na UTF-8 jest proste:


mysql -u www -p --default-character-set=utf8
CREATE database kpma CHARACTER SET utf8 COLLATE utf8_bin;

Baza kpma (użytkownika www) będzie kodowana w UTF-8. Można też określić domyślne kodowanie wszystkich baz w pliku konfiguracji MySQLa, tj. w pliku /etc/mysql/my.cnf (Debian):


[mysqld]
...
default-character-set = utf8

Trochę diagnostyki:


use kpma;
show variables like 'char%';
show table status;

select tytul from Utwor;
## jest OK -- na konsoli widać poprawne różne znaki diakrytyczne

Prawdziwa męka to było zmuszenie Perla do poprawnego traktowania danych UTF.

Trzy kluczowe dla poprawnego przetwarzania UTF sprawy to: 1) klauzula binmod (patrz poniżej); 2) klauzula use utf8 (jeżeli skrypt zawiera napisy kodowane w UTF); 3) wpisy mysql_enable_utf8/SET NAMES utf8 dotyczące MySQLa.

Szkielet skryptu Perla wygląda następująco:


#!/usr/bin/perl -w
# -*- coding: utf-8 -*- --
#
use strict;
use utf8; ## skrypt zawiera napisy kodowane UTF
use CGI qw(:standard);
use DBI;
binmode(STDOUT, ":utf8"); ## bez tego problemy z UTF

my $dbname = 'kpma'; ## Nazwa bazy
my $dbuser = 'www'; ## Nazwa użytkownika MySQL
my $dbpasswd = '??????'; ## Hasło dla $dbuser

my $dsn = "dbi:mysql:$dbname:localhost:3306";

my $dbh = DBI->connect($dsn, "$dbuser", "$dbpasswd", { ChopBlanks => 1 });
$dbh->{'mysql_enable_utf8'} = 1;
$dbh->do('SET NAMES utf8');

my $SQL = "SELECT tytul FROM Utwor WHERE id_kompozytor1 = 59 ORDER BY rok ";
##my $SQL = "SELECT nazwisko FROM Kompozytor ";

my $sth = $dbh->prepare($SQL);

$sth ->execute();

while ( my @piece = $sth->fetchrow_array() ) { print ">> @piece\n"; }

$dbh->disconnect || warn "Nie mogę zamknąć bazy $dbname\n";

Jeżeli skrypt korzysta (pobiera dane) z param() to koniecznie należy zastosować funkcję decode_utf8:


use Encode; ## param() trzeba dekodować

if (param()) {# -- Wypełniono formularz --
## http://ahinea.com/en/tech/perl-unicode-struggle.html
my $who = Encode::decode_utf8(param("kto"));

Działa nawet z dość starym Perlem:


$perl --version

This is perl, v5.10.0 built for arm-linux-gnueabi-thread-multi

Copyright 1987-2007, Larry Wall

środa, 14 września 2011

Wycieczka rowerowa do Brodnicy

W poprzednią sobotę/niedzielę (2/3 09. br.) pojechałem z Miśkiem na rowerach do Brodnicy (za Kartuzami) i z powrotem. Ślady są tutaj i tutaj.

Wojna za progiem...

10 maja 1941 roku Rudolf Hoess (formalnie zastępca Adolfa Hitlera, tj. człowiek który zostałby fuererem gdyby, przykładowo wodzowi coś zaszkodziło) wystartował z Augsburga a następnie wyskoczył ze spadochronem niedaleko Eaglesham w Szkocji. Został aresztowany i resztę wojny spędził w więzieniu.

Propaganda 3Rz tłumaczyła prostemu ludowi powyższy -- przyznajmy szokujący incydent (wiceprezydent Biden wyskakuje na spadochronie z F16 pod Teheranem) -- iż towarzysz partyjny Hoess zwariował (Goebbels uważał takie tłumaczenie za prostackie i niewiarygodne).

Minister finansów RP 14. 09 br (albo dzień wcześniej) palnął publicznie, ich zitiere: Rostowski przywołał na koniec swą niedawną prywatną rozmowę z ,,prezesem wielkiego polskiego banku'', pracującym w ministerstwie za czasów transformacji w Polsce. Miał on mu powiedzieć, że po takich wstrząsach gospodarczych i politycznych, jakie teraz dotykają Europę, ,,rzadko się zdarza, by po 10 latach nie było także katastrofy wojennej''. I -- jak mówił minister -- ten prezes banku dodał, że ,,poważnie się zastanawia nad tym, by uzyskać dla dzieci zieloną kartę w USA''.

I co teraz na to Ministerstwo Propagandy, Oświecenia publicznego i Informacji?

Założenie repozytorium na github

Konfiguracja Gita

  1. Konfigurowanie kluczy SSH.

    Połącz się z https://github.com/<username>. Kliknij w Account Settings → SSH Public Keys → Add another public key. Skopiuj zawartość pliku id_rsa.pub do odpowiedniego pola tekstowego.

    (Uwaga: w dokumencie Set Up Git jest opisane dokładniej jak wygenerować id_rsa.pub.)

  2. Określenie użytkownika oraz jego adresu email.


    $ git config --global user.name "Firstname Lastname"
    $ git config --global user.email "your_email@youremail.com"

  3. Konfigurowanie GitHub token.

    Pobierz token z Account Settings → Account Admin. Wykonaj poniższe:


    $ git config --global github.user username
    $ git config --global github.token 0123456789yourf0123456789token

    Uwaga: zmiana hasła wymaga aktualizacji tokena.

Utworzenie repozytorium

Kliknij w https://github.com/repositories/new (poprzez Dashboard → New Repository).

Stwórz plik README (zalecane)


$ mkdir ~/Hello-World
$ cd ~/Hello-World
$ git init
$ touch README

## przeslanie do lokalnego repo
$ git add README
$ git commit -m 'first commit'

## przeslanie na github
$ git remote add origin git@github.com:<username>/Hello-World.git
$ git push origin master

Przykład

Repozytorium zawierające przykłady z książki Praca magisterska ...


$ git init
Initialized empty Git repository in /home/tomek/Projekty/LaTeX/text/book-examples-git/.git/
$ git add *
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
...

$ git commit -m 'first commit'
$ git remote add origin git@github.com:hrpunio/pmdzpl.git
$ git push -u origin master

Repozytorium zawierające przykłady dot. akceptacji Oprogramowania Open Source


$ git init
Initialized empty Git repository in /home/tomek/Projekty/HP/hbook/aoos-data-git/.git/
$ git add *
$ git commit -m 'first commit'
$ git remote add origin git@github.com:hrpunio/aoos.git
$ git push -u origin master
$ git status

poniedziałek, 12 września 2011

Fixing /dev/ttyUSB0 permissions for GPSBabel in fedora 15 (revisited)

Having fixed Garmin-babel communication some time ago I have encountered similar problem with another GPSdevice, namely MTK's BT747 logger. This time fixing the problem was simple.

I added the following to the /etc/udev/rules.d/51-garmin.rules:


SYSFS{idVendor}=="10c4", SYSFS{idProduct}=="ea60", MODE="0666"

Vendor ID and product ID can be figured out inspecting dmesg log:


# connect the device first
dmesg | less

So my /etc/udev/rules.d/51-garmin.rules file looks like in the following listing:


SYSFS{idVendor}=="091e", SYSFS{idProduct}=="0003", MODE="0666"
SYSFS{idVendor}=="10c4", SYSFS{idProduct}=="ea60", MODE="0666"

One has to remember to stop/remove gps demon (gpsd).