Koniec romansu ( polish only )

Parę lat temu, gdy kupowałem swój pierwszy samochód, poszukałem i znalazłem Mitsubishi Space Star. Fajne autko, niedrogie, wygodne.

Kupiłem. I byłem zadowolony. Potem Space Star poszedł do ludzi a ja kupiłem Lancera Kombi. Potem dokupiłem sobie zabawkę – Colta CZC.

I byłem cały czas zadowolony. Mitsubishi jeździły dobrze, miały genialny Assisstance, a drobne problemy w rodzaju ludzi w serwisie którzy koniecznie chcą bym kombinował i wymianę blachy załatwiał “pokątnie, bez faktury" traktowałem jako folklor.

Polecałem znajomym Mitsubishi, i ogólnie byłem fanem.

Natomiast ostatnio stosunki się pogorszyły. Nie z samochodami – nadal są fajne. Z firmą (czy raczej firmami).

Zaczęło się od drobiazgów. Ot, strona autogt.pl nie działa pod Linuksem. Bo nie. Napisałem, powiedzieli, że się zajmą. Skontaktował się ze mną jakiś ichniejszy webmaster, powiedziałem w czym rzecz, i kontakt się urwał. Samochodu u nich nie wybiorę bo nie jestem w stanie się przeklikać przez pierwszą stronę. No cóż – pechowców nam nie trzeba.

Ja kupowałem Colta to chciałem kupić w Mitcarze. Napisałem do nich maila z pytaniem czy mi go sprzedadzą, czy jest itd, po czym nastąpiła cisza. Brak odzewu. Kupiłem więc właśnie wtedy w AutoGT, a jak o sprawie dowiedział się kierownik salonu Mitcaru to obiecał sprawą się zająć – w końcu przeszła mu transakcja koło nosa.

Teraz, ponieważ niedługo znowu pora wymienić samochód, a AutoGT nadal nie chce bym u nich kupował, skierowałem sie do Mitcaru. Przyszedłem jak mieli “drzwi otwarte", sprzedawcy byli zajęci, więc zostawiłem recepcjonistce numer telefonu, powiedziała że jeszcze dziś oddzwonią. To było jakieś 2 tygodnie temu. Telefonu brak.

Do tego dochodzi kwestia wyboru – i tu już wjeżdżam na MMC Car Poland. Kiedyś w Mitsubishi można było wybierać. Były samochody małe (Colt), były średnie (Carisma) i były duże (Pajero). Plus jakieś między nimi – jak Space Star.

Teraz? Colt? Żal gadać. Z fajnego małego hatchbaka zrobili pokrakę która wygląda tragicznie. CZC kupiłem tylko dlatego, że chciałem mieć zabawkę-kabrio, a to było akurat najtańsze.

Poza Coltem mam Lancera. Powyżej? Ohydny Outlander. I krowiaste Pajero. Nie ma już Grandisa, nie ma Space Stara. Nie ma nadal samochodów typu Galant czy Eclipse.

Napisałem do MMC. I dostałem odpowiedź, że:

1. Galanta już nie produkują
2. Eclipse jest tylko na rynek amerykański
3. Mogę sobie sprowadzić, ale gwarancja wtedy nie obowiązuje.

Stwierdzenie #1 jest oczywistą nieprawdą (w następnym mailu konsultant się przyznał do pomyłki). Co do Eclipse'a – pewnie prawda, bo nie widzę go ani w .de ani .uk – ale czemu?!

W dużym skrócie – wygląda na to, że czas mojego użytkowania Miśków się kończy. Smutno trochę. Chciałbym móc kupić Grandisa czy Galanta – Grandis bo spory i pakowny, a Galant mi się podoba, ale jak widać nie jestem wystarczająco “trendy" skoro nie chcę jeździć brzydkim SUVem ani olbrzymią terenówką.

Finalnie – czemu o tym piszę? Ot, taki wentyl. Jako 8 letni użytkownik Miśków głupio mi się czuć zniechęcanym do dalszych zakupów. No ale chyba przyjdzie pora na Mazdę. CX7 jest całkiem fajna…

Post scriptum – oczywiście to nie wpływa na kupienie EVO – od daaaaawno chciałem mieć i będę miał, ale to taki samochód jak Colt CZC – zabawka. Fajna, miła, można się pobawić, ale to nie jest samochód którym będę jechał gdzieś dalej czy “do pracy".

Waiting for 8.5 – changes in hstore

Andrew Gierth (RhodiumToad on irc) wrote, and Tom Lane committed:

Assorted improvements in contrib/hstore.
 
Remove the 64K limit on the lengths of keys and values within an hstore.
(This changes the on-disk format, but the old format can still be read.)
Add support for btree/hash opclasses for hstore --- this is not so much
for actual indexing purposes as to allow use of GROUP BY, DISTINCT, etc.
Add various other new functions and operators.
 
Andrew Gierth

Continue reading Waiting for 8.5 – changes in hstore

Waiting for 8.5 – MOVE {FORWARD,BACKWARD} X

On 29th of September (I know, there is a backlog – I'll work on it, I promise), Tom Lane committed another patch from Pavel Stehule:

Allow MOVE FORWARD n, MOVE BACKWARD n, MOVE FORWARD ALL, MOVE BACKWARD ALL
in plpgsql.  Clean up a couple of corner cases in the MOVE/FETCH syntax.
 
Pavel Stehule

Continue reading Waiting for 8.5 – MOVE {FORWARD,BACKWARD} X

Speeding up dump/restore process

As some of you know, I've been working lately for OmniTI company. When doing things for them (PostgreSQL related of course :), I stumbled on very interesting problem.

One of our clients is working on PostgreSQL 8.2, and wants to upgrade to 8.3. This is generally trivial – pg_dump, pg_restore/psql, and you're done.

But, this situation was with a twist – we had only very limited time-frame to do the migration. To be exact – we had 4 hours that we can bring the website down for.

So, we had to dump database, transfer it to new server, and load. All within 4 hours. Simple? Sure. Database was ~ 200GB (after restore – around 130GB). How to do it?

Continue reading Speeding up dump/restore process

[polish only] Historia ku pamięci … – aktualizacja

W piątek, 14 sierpnia, jakoś tak wieczorkiem dostałem maila od bliżej mi nie znanej osoby z firmy Luxmed.

Osoba ta, poprosiła o “pilny kontakt (niezależnie od godziny)", w sprawie “optymalizacji baz PostgreSQL".

Zadzwoniłem.

Okazało się, że potrzebują pomocy, i uważają, że dam radę jakoś “stuningować" Postgresa tak by działał szybciej. I że chodzi o pomoc w dniu jutrzejszym (tzn, w sobotę, 15 sierpnia).

Zapytał się mnie ten pan o oczekiwane wynagrodzenie, powiedział, że się skonsultuje i oddzwoni.

I faktycznie – oddzwonił jeszcze z 20 minut później, z pytaniem czy nie dałoby się taniej. Stwierdziłem, że skoro chcą bym pomógł w sobotę, i mam nie być jednym pracującym, to znaczy, że mają jakieś problemy – i to pewnie istotne. Może deadline na poniedziałek? Może jakaś większa awaria. Trzeba pomóc – nigdy nie wiadomo co i kiedy się komu przydarzy.

Zgodziłem się na zaproponowaną stawkę (około 70% tego co ja powiedziałem). Po czym okazało się, że mam przyjechać do nich do biura następnego dnia na 8. Powiem szczerze – w tym momencie sobie już “plułem w brodę" – praca z dojazdem? do tuningu Postgresa? za 70% standardowej stawki? No ale cóż. Już powiedziałem, że się zgadzam, firma spora, więc może to u nich standard, że trzeba przyjechać, bo np. dostęp z zewnątrz niemożliwy.

OK. Pojechałem. Pracowałem w ustalonym wymiarze, po czym zostałem poproszony czy mógłbym jeszcze zostać dłużej – nie mogłem.

I tu by zasadniczo się sprawa skończyła, gdyby nie prosty fakt.

17 sierpnia (w poniedziałek po tej sobocie) wystawiłem im fakturę i wysłałem. Na ustaloną wcześniej i potwierdzoną kwotę.

Ponieważ płatności mogą być np. robione hurtem na początku miesiąca, nie sprawdzałem czy przyszły za często, ale 4 września (prawie 3 tygodnie później), napisałem z pytaniem kiedy mogę się spodziewać przelewu.

Dostałem odpowiedź:

Spodziewałem się, że już ma Pan odpowiednią kwotę na koncie.
W poniedziałek sprawdzę w księgowości (dzisiaj przeprowadza się biuro).

I od tej pory cisza.

Od tamtej pory napisałem jeszcze dwukrotnie (9 i 12) września, i cisza. brak odpowiedzi, brak “już płacimy" czy “zapłacimy za miesiąc" czy “mamy cię w …, odwal się".

Czemu o tym piszę? Jako przestrogę dla innych. Z tego co się dowiedziałem tą bazą zajmuje się dalej znajoma firma – mam nadzieję, że im zapłacą. A jak nie – to pewnie będą szukać kolejnego “łosia".

AKTUALIZACJA

Przelew wpłynął. 22 września. wystarczyło 5 tygodni. i post na blogu 😉

Getting random interfacelift wallpaper

Just thought I'll share it – maybe somebody else will use it.

I'm using KDE 3.5, so the final “dcop …" command, simply sets the file as current wallpaper.

I also use 1680×1050 resolution – which you can probably guess from the code 🙂

#!/usr/bin/perl -w
use strict;
use English qw( -no_match_vars );
use WWW::Mechanize;
 
my $agent = WWW::Mechanize->new();
 
$agent->get("http://interfacelift.com/wallpaper_beta/downloads/random/widescreen/1680x1050/");
exit unless 200 == $agent->res->code;
 
my @links = $agent->find_all_links(
    'url_regex' => qr{1680x1050.jpg},
);
exit if 0 == scalar @links;
 
$agent->get( $links[ rand @links ] );
exit unless 200 == $agent->res->code;
 
my $username = getpwuid( $REAL_USER_ID );
my $filename = '/tmp/interfacelift.' . $username . '.jpg';
 
open my $fh, '>', $filename or exit;
binmode $fh;
print $fh $agent->res->decoded_content;
close $fh;
 
$ENV{"DISPLAY"} = ':0';
system( qw( /usr/bin/dcop kdesktop KBackgroundIface setWallpaper ), $filename, 4 );
 
exit;

Pretty simplistic, but it does the job. Now, I add this line to my crontab:

*/5  * * * * /home/depesz/bin/interfacelift.pl

And enjoy new, nice wallpaper every 5 minutes 🙂

Waiting for 8.5 – Machine readable EXPLAIN

After very long discussions, on 10th of August, Tom Lane committed patch by Robert Haas:

Log Message:
-----------
Extend EXPLAIN to support output in XML or JSON format.
 
There are probably still some adjustments to be made in the details
of the output, but this gets the basic structure in place.
 
Robert Haas

Continue reading Waiting for 8.5 – Machine readable EXPLAIN

Waiting for 8.5 – Multi-threaded pgbench

On 3rd of August, Tatsuo Ishii committed patch by ITAGAKI Takahiro:

Log Message:
-----------
Multi-threaded version of pgbench contributed by ITAGAKI Takahiro,
reviewed by Greg Smith and Josh Williams.
 
Following is the proposal from ITAGAKI Takahiro:
 
Pgbench is a famous tool to measure postgres performance, but nowadays
it does not work well because it cannot use multiple CPUs. On the other
hand, postgres server can use CPUs very well, so the bottle-neck of
workload is *in pgbench*.
 
Multi-threading would be a solution. The attached patch adds -j
(number of jobs) option to pgbench. If the value N is greater than 1,
pgbench runs with N threads. Connections are equally-divided into
them (ex. -c64 -j4 => 4 threads with 16 connections each). It can
run on POSIX platforms with pthread and on Windows with win32 threads.
 
Here are results of multi-threaded pgbench runs on Fedora 11 with intel
core i7 (8 logical cores = 4 physical cores * HT). -j8 (8 threads) was
the best and the tps is 4.5 times of -j1, that is a traditional result.
 
$ pgbench -i -s10
$ pgbench -n -S -c64 -j1   =>  tps = 11600.158593
$ pgbench -n -S -c64 -j2   =>  tps = 17947.100954
$ pgbench -n -S -c64 -j4   =>  tps = 26571.124001
$ pgbench -n -S -c64 -j8   =>  tps = 52725.470403
$ pgbench -n -S -c64 -j16  =>  tps = 38976.675319
$ pgbench -n -S -c64 -j32  =>  tps = 28998.499601
$ pgbench -n -S -c64 -j64  =>  tps = 26701.877815
 
Is it acceptable to use pthread in contrib module?
If ok, I will add the patch to the next commitfest.

Continue reading Waiting for 8.5 – Multi-threaded pgbench