Tuesday, 18 June 2013
LibreOffice Hamburg Hackfest 2013
(Comments)
This year, LibreOffice’s Hamburg hackfest happened last weekend, with more than 20 attendees. Thanks to the sponsors, we had free drink and food during the whole hackfest. ;-)
My original plan was to add support for tables inside text frames in Writer, when importing from RTF. At the end I managed to do that, though not the way I originally wanted to implement that feature. :-)
Here is how this looked with the RTF importer we inherited from OpenOffice.org (LO 3.4), and then with the new RTF import filter (LO 3.6):
Here is how this looks like in latest master, and how it should look like:
Other than that, there were a few other topics I hacked on:
various additional fixes for fdo#58819, so watermark is exported (with correct size, position, rotation, opacity, etc.), and reasonably imported
the last character of the git hash is no longer missing from the about dialog (commit)
number of leaking files when running the writer filter tests is now down to 2 from 527 (commit)
RTF import of text frame’s AutoSize property (commit)
File → Properties → Security → Record Changes is now imported and exported in the RTF filter (commit)
finally added UI for fine dashing — so not only existing documents are rendered correctly, but you can create such documents as well (commit)
You can see some photos here.
Last, but not at least, thank you Eike and Bjoern for organizing this event! :-)
Sunday, 09 June 2013
Free Software Conference and Exhibition 2013
(Comments)
The Free Software Conference and Exhibition 2013 — organized by FSF.hu — was held yesterday @ Budapest. I gave a talk about hacking on Writer file format problems (slides), this time in Hungarian.
After the talk I also held a one-hour workshop, showing how to start hacking on LO in practice:
first we did a build (using package manager to install dependencies, git clone, autogen, make, make dev-install)
then we did the vcl Menu::SetItemText() hack — actually using comphelper::string::reverseString()
finally I spent some time explaining a few bugfixes from the recent past: I explained a VML import problem, an RTF import problem, a WW8 export mismerge, finally a WW8 import issue
We (with Andras Timar and Tamas Zolnai) also ran the LibreOffice booth. This year speakers got a free t-shirt and lunch, thanks for the organizers! :)
Monday, 03 June 2013
Balaton Maraton 2013
(Comments)
Idén is volt Balaton Maraton (a tizenhatodik, nekem a negyedik), sikerült idén is teljesíteni a szintidőt, sőt… de ne szaladjunk ennyire előre.
Idén igyekeztem a korábbi évek gyakorlatával ellentétben egy kicsit tudatosabban készülni. Így került sor a következő túrákra:
április 7: Pilis, 126 km (erről már írtam)
április 14: Gödöllő K30, 102 km (GPS track, a kmóra ezeket mérte: idő 4h27m11s, átlag 22.8 km/h, max 45.7 km/h)
április 27: Dunakanyar, 125 km (GPS track, a kmóra ezeket mérte: idő 5h33m29s, átlag 22.4 km/h, max 37.0 km/h)
május 4: Ráckeve, 105 km (GPS track, a kmóra ezeket mérte: idő 4h31m31s, átlag 23.1 km/h, max 31.8 km/h)
május 27: Gödöllő K100, 168 km (GPS track, a kmóra ezeket mérte: idő 7h35m3s, átlag 22.0 km/h, max 51.4 km/h)
Ez utóbbi 4 túra valahogy majdnem mindig az utolsó pillanatban dőlt el, így végül egyedül mentem. A K30/K100 útvonalakon szoktak szervezett versenyt is csapni, korábban így jártam ezeken a helyeken, de most nem akartam alkalmazkodni az általuk kitalált időpontokhoz. Sőt, a K100 útvonalán jól látható, hogy Vácduka és Rád között van egy gyalog (meg persze MTB-vel :-) ) járható út, amit ki is használtam, egy felesleges kerülőt így megspórolva.
Lényeg a lényeg, abban a reményben indultam el az idei maratonra, hogy reméltem, sikerül javítani a korábbi időkön.
Innentől felpörögtek az események: szokás szerint a rajtnál a depóból nem indulhattunk el pontban 9:00-kor, mivel akkor még csak a verseny indul. Valahogy így festett:
Aztán 9:15-kor lassan elindult a maraton eleje is, az a rész ahol én álltam a kmóra szerint 9:22-kor. Mint mindig, most is lassú rajt kellett volna legyen Zamárdiig (tilos előzni), de azért ezt nem sokan tartották be. Ugyanezen a szakaszon szoktak jönni a sajtófotósok és végigvillantanak sok-sok embert; LGee ki is keresett engem:
Idén 5 frissítőpont volt:
Fonyód
Keszthely
Badacsony
Balatonfüred
Balatonalmádi
Nagyjából Balatonfürednél (160. km környéke) kezdett el jobban esni az eső, és ennek hatására konzekvensen le is állt a kmóra. ;-) Aztán már újra a hetesen karikázva a cél előtt kb. 8 km-rel újra bekapcsolt. Így a következőket mérte: idő 6h24m42s, táv 168 km, átlag 26.1 km/h, max 49.8 km/h.
Szervezett versenyről lévén szó, a tényleges táv változatlanul 209 km volt, és a célba 18h előtt sikerült beérni, ami azt jelenti, hogy sikerült megjárni az egészet 8h29m alatt! :-) Összehasonlításképpen, a korábbi években az idők így alakultak: 2012-ben 9h45m, 2011-ben 9h51m, 2010 9h29m.
Hivatalos eredmények erre.
Sunday, 26 May 2013
DOC support in mso-dumper
(Comments)
mso-dumper is a project that creates some — more or less human-readable — dump from binary files. Initially Kohei Yoshida developed it to dump XLS, then Thorsten Behrens added support for PPT files, finally during last November I started to add DOC support.
You may ask: why that is useful? My answer is that I spend quite some time on the import/export filters of LibreOffice Writer, and to be able to improve or fix such filters, some knowledge of the file format in question and Writer internals is needed. Regarding the file format knowledge, I find it much easier to read the specification once and implement some simple dumper based on that — than reading the specification again and again, and just trying to understand what’s going on inside a binary file using a hex editor.
To my knowledge, such a dumper for the DOC format (in particular the WW8 version of it) did not exist previously. WW8Dumper was the closest match, but that was far from complete and I found extending mso-dumper easier.
To stress-test the parser, I used get-bugzilla-attachments-by-mimetype to get all DOC attachements from the Freedesktop bugzilla, and during the last days I fixed the remaining crashes (actually this is why I write this post now ;-) ). If you want to try it out you can do so by:
git clone git://anongit.freedesktop.org/libreoffice/contrib/mso-dumper
cd mso-dumper
./doc-dump.py /path/to/doc/file.doc
The idea is that on any input the dumper should not crash: instead either it
should give you usable result, or in case some unhandled structure is reached,
it should print a <todo> XML tag. Other than that, of course patches welcome — that said, Maxime de Roucy already contributed a patch to the DOC part of
mso-dumper, thanks! :-)
Wednesday, 22 May 2013
Pécs
(Comments)
A hétvégen Pécsett jártunk. Javában zajlott a Zsolnay Fesztivál, így talán az átlagosnál több ember hemzsegett az utcákon, de nem volt nyomasztó tömeg így sem. A következő helyeket érintettük:
Szombat:
Dómmúzeum (kőtár): itt amúgy majdnem belesétáltunk egy pánsípos koncertbe, de aztán csak nem akarta elkezdeni az ürge, úgyhogy továbbálltunk
Vasárnap:
Zsolnay család- és gyártörténeti kiállítás: itt rengeteg időt töltöttünk azzal, hogy megpróbáljuk a családfát rekonstruálni, a sok ismétlődő Zsolnay <keresztév> miatt, persze nem tudtuk, hogy a legutolsó teremben lesz egy kiosk ahol végig lehet követni interaktívan mindazt amit magunk próbáltunk összerakni ;-) (TL;DR: a család nagyrésze külföldön él, aki itt, az is inkább Budapesten — a gyárhoz pedig végképp nincs sok közük, mivel még '89 előtt gyakorlatilag mindegyiküket kirakta állambácsi a saját gyárukból)
Trio Á fellépés: szegények kellemes háttérzenét játszottak a tűző napon, a közönség a közelben lévő árnyékot adó fák alatt helyezkedett el, és kellemesen diskurált, mivel ugye annyira nem volt izgalmas, hogy csak a zenére figyeljenek :-)
Széllel szembe - poénok és poémák - Jordán Tamás stand up estje: talán ez volt a legtartalmasabb programpont; ezt persze biztos itthon is meghallgathattuk volna, de itt "ingyen" volt, és kifejezetten tetszett
Hétfő:
Szállásunk a Corso Hotel volt, akik egyből adtak egy Irány Pécs! kártyát, valamint náluk vettük meg a fenti fesztiválra is a napi belépőt, ezek után már a legtöbb helyre ingyenesen bejuthattunk.
Képek erre.
Monday, 22 April 2013
Az elveszett boldogság nyomában
(Comments)
Egyik ismerősünk említette ezt a könyvet, a következő idézetet ragadva ki belőle:
Az egyik ilyen meglátás az volt, hogy a jekána indiánok szókincsében nem létezik kifejezés a „munká"-ra. Egyedül a tarabaho kifejezést használják a nem indiánokkal való ügyletek megnevezésére, akiket - rajtunk kívül - gyakorlatilag csak hallomásból ismertek. Ez a spanyol trabajo szó pontatlan kiejtése volt, de elég pontosan arra utalt, amit a konkvisztádorok és utódaik értettek rajta. Érdekes módon ez volt az egyetlen spanyol eredetű szó, amit tanultam tőlük. A jekánáknak nem volt a mienkhez hasonló munka-fogalmuk. Voltak szavaik minden olyan tevékenységre, amely beletartozhat a munka fogalmába, de nem volt rá egy általános összefoglaló kifejezésük.
Később derült ki, hogy amúgy Jean Liedloff 1975-ös könyve gyereknevelésről szól, és megvannak a maga ellentmondásai: érdekes dolog például szidni az olyan embereket akik „könyvből tanulják" a gyereknevelést mikor a könyv maga is e témában íródott, de ettől függetlenül nem bántam meg, hogy elolvastam.
(bookline)
Monday, 15 April 2013
Hackweek 9
(Comments)
Last week was Hackweek at SUSE — below is a quick summary on what experiments did I do during that timeframe.
I did some experiments with using lcov on the LibreOffice codebase. The goal is to have a quick iteration, so you can see the current coverage of a file or a directory, select a method that is not yet tested, add a test for it, and "test" the test by checking if the coverage indeed got improved. As a first step, I tried this out on the Writer RTF import:
cd writerfilter
touch source/rtftok/*
make -sr -j8 gb_GCOV=YES <1>
cd ../sw; make -sr -j8 CppunitTest_sw_rtfexport CppunitTest_sw_rtfimport <2>
lcov --directory workdir/unxlngx6/CxxObject/writerfilter/source/rtftok/ --capture --output-file libreoffice.info <3>
genhtml -o coverage libreoffice.info <4>
rebuild selected files with lcov options
run the tests
extract coverage information to a single .info file
generate some nice HTML output from the .info file
|
Note
|
lcov had problems with gcc-4.7, fully updated openSUSE 12.2 or 12.3 is known to work. |
There is a script available to make the above a bit more automated.
The speed of the above depends on the amount of code needing a rebuild + the number of tests, but it should not take more than a minute.
E.g. I noticed the bookmark import code isn’t tested, added a test for it, and that indeed improved the line coverage of rtfdocumentimpl.cxx: 84.1% → 85.0%.
A next area I wanted to test is the Writer RTF export. Let’s pick something in rtfattributeoutput.cxx… StartURL() is not tested, so a hyperlink testcase should help. Indeed it did: 50.2% → 52.0%.
Last, but not at least, thanks to Norbert Thiebaud, who added gb_GCOV to
gbuild.
Then I experimented with improving our Writer gdb Python pretty-printers. One annoying shortcoming was the lack of handling uno::Reference<text::XTextRange>. Imagine one searches for a bug related to table import for DOCX or RTF. One idea is to check the arguments of the convertToTable() method call. The first argument is a 2D array of XTextRange pairs, that describe what will be the input for cell contents. So if you want to check the first cell, you do something like this:
(gdb) b DomainMapperTableHandler.cxx:798
(gdb) r
(gdb) print (*m_pTableSeq)[0][0]
$1 = uno::Sequence of length 2 = {uno::Reference to (XInterface) 0x1a73648, uno::Reference to (XInterface) 0x1a77f68}
(gdb) print (*m_pTableSeq)[0][0][0]
$2 = uno::Reference to (XInterface) 0x1a73648
(gdb) print (*m_pTableSeq)[0][0][1]
$3 = uno::Reference to (XInterface) 0x1a77f68
Not that helpful. Here is how one could work it around:
(gdb) print (*m_pTableSeq)[0][0][0]._pInterface->m_pImpl->m_pMark->m_pPos1
$4 = boost::scoped_ptr SwPosition (node 10, offset 0)
(gdb) print (*m_pTableSeq)[0][0][1]._pInterface->m_pImpl->m_pMark->m_pPos1
$5 = boost::scoped_ptr SwPosition (node 10, offset 20)
But this is not something anyone will remember. After adding a few new pretty-printers, now it’s like this:
(gdb) print (*m_pTableSeq)[0][0]
$1 = uno::Sequence of length 2 = {uno::Reference to (SwXTextRange *) 0x1a72b98, uno::Reference to (SwXTextRange *) 0x1a773b8}
(gdb) print *(*m_pTableSeq)[0][0][0]._pInterface
$2 = (SwXTextRange) SwXTextRange sw::UnoImplPtr SwXTextRange::Impl = {mark = sw::mark::IMark = {pos1 = boost::scoped_ptr SwPosition (node 10, offset 0), pos2 = empty boost::scoped_ptr}}
(gdb) print *(*m_pTableSeq)[0][0][1]._pInterface
$3 = (SwXTextRange) SwXTextRange sw::UnoImplPtr SwXTextRange::Impl = {mark = sw::mark::IMark = {pos1 = boost::scoped_ptr SwPosition (node 10, offset 20), pos2 = empty boost::scoped_ptr}}
Technically, it would be possible to make print (*m_pTableSeq)[0][0][0] work
as well, but for a larger class without a pretty-printer that would result in
multiple pages of output. Anyway, _pInterface is the same for all UNO
objects, so something that is not too hard to remember.
An other improvement is the XTextCursor pretty-printer. Example usage: debugging of the commented text range ODF import. Before:
(gdb) b txtfldi.cxx:559
(gdb) print *rHlp.GetCursor()._pInterface->m_pImpl->pRegisteredIn->m_pMark
$1 = SwPosition (node 9, offset 4)
After the new pretty-printers one doesn’t have to type that much:
(gdb) print *rHlp.GetCursor()._pInterface
$1 = (SwXTextCursor)
SwXTextCursor sw::UnoImplPtr SwXTextCursor::Impl = {registeredIn = SwModify = {point = SwPosition (node 9, offset 4), mark = SwPosition (node 9, offset 4), next = 0x1a28b88, prev = 0x1a28b88}}
Finally, I experimented with reworking the textframe code in the RTF filter. In short, the motivation is to bring the RTF filter in sync with the OOXML one, which can nicely import and export text box gradients. To get there, there are 3 different problems to solve:
The RTF import filter currently imports rectangle and textbox shapes as drawinglayer rectangles, even if they have some text inside. Just like the OOXML import filter, we would better import these shapes as Writer textframes, as long as they contain some text.
The RTF export writes Writer textframes as old-style Word frames, not as text box shapes. This should be changed, as the old syntax doesn’t support gradients, and in general both the DOC and DOCX export filters already export new-style Word frames, so there is no reason why the RTF filter would not do the same.
Once all the above is done, add support for gradients in the RTF filter, in a similar way OOXML filters were already improved to handle gradients.
Once this all is done, add new testcases to cover the new code.
First I had hacked on #1, sadly Writer textframes and drawinglayer rectangles
don’t share the exactly same UNO API, like drawinglayer has TextWritingMode
and a Name property, Writer textframes have a WritingMode property instead,
and additionally they implement the XNamed UNO interface, etc.
Then I switched to #3 — there I managed to reuse our existing VML import to do the hard work: the RTF tokenizer reads the RTF shape properties, then constructs the same VML model what is normally built from v:fill and v:shadow XML elements inside DOCX files, finally the VML import does the mapping of Word’s gradient concept to the Writer gradient concept.
At the end of the week I also hacked on #2 and #4 — and while I did so, I noticed two more interesting details of Word’s new-style RTF textframe markup:
The bad news: Writer supports having different top/left/bottom/right borders, RTF still just supports the concept of a single line around the textframe.
The good news: old-style RTF frames didn’t support different left/right or top/bottom external margins, but Writer does — so now using the new syntax, this is exported properly.
Unrelated to the above, I fixed an annoying git bug, when one tried to cherry-pick multiple commits at the same time, and copy&paste went wrong, the "unrecognized" arguments were just silently ignored. Now one gets an error instead.
In parallel to the above, Thorsten was kind enough to explain how to update docs.libreoffice.org: The new output is generated using doxygen 1.8, it contains a bit more eye-candy. E.g. notice the new foldable subsections here. ;-)
Saturday, 13 April 2013
Fehérvasárnap
(Comments)
Múlt vasárnap (fehérvasárnap) bringázni voltunk a Pilisben. Nem mondom, hogy a végére nem fáradtam el, ez volt idén az első alkalom, hogy 100km feletti túrára mentem — de már bőven ideje volt.
A GPS track mutatja, hogy mi Budapestről mentünk, a társaság másik fele pedig Szentendréig HÉV-vel, és ott csatlakoztak hozzánk. Onnantól pedig a Dömör-kapu, Pilismarót, Két-bükkfa-nyereg, Dobogókő útvonalat követtük.
A kmóra a következőket mérte:
nettó idő 6h38m32s
táv 125.91km
max 51.6km/h
A túrán használtam először hosszútávon a nyári (nem havas, stb) időkre szánt Schwalbe Silento külsőket, egyelőre meg vagyok velük elégedve.
Sunday, 07 April 2013
LibreOffice Writer now supports graphic bullets in its DOCX/RTF filters
(Comments)
If you ever tried to use graphical bullets in Writer (Format → Bullets and Numbering → Graphics), you may have noticed that only the ODF filter can load and save such a numbering. This is now improved a lot. Motivated by seeing this is now handled in the binary DOC filter, I now added support for this also to the DOCX and RTF import and export filters. If you want to play with this feature, core.git also contains a DOCX and an RTF sample as well.
Saturday, 16 March 2013
Jahorina
(Comments)
Az elmúlt hat napban a Bosznia-Hercegovinában található Jahorinán voltunk síelni. Mivel aránylag kevés információt találtam a neten, igyekszem összefoglalni tapasztalatainkat.
Az utazást a szigoru.hu baráti társaság szervezte (itt nem utazási irodára kell gondolni, tényleg csak a buszt, szállást, síbérletet intézték — kb. a Ryanair sielős megfelelői lehetnének… :-P), Facebookos továbbküldős üzenetből értesültünk a lehetőségről. A magyar határtól kb. 500 km-re lévő síterepre busszal utaztunk az SCH elől. Hivatalosan 7:00-kor volt gyülekező, és 7:15-kor indulás, már itt csúszott a program. Az odautazás amúgy eseménytelenül telt, nem számolva a szokásosan 10 percesnek kikiáltott 3-4 óránkénti megállásokat, amik rendszerint 2 óránként és jó fél órasak voltak, elsősorban a cigizők igényeit kiszolgálva.
Ennek eredményeképpen 17:30 helyett inkább 20:30 körül érkeztünk meg a szállásunkra (Pahuljica panzió), amiben viszont sok kivetnivalót nem találtunk: az igényelt kétágyas szobában történetesen egy franciaágy, egy sima ágy és egy kihúzható heverő is volt, saját fürdőszoba, általunk megszokott (és nem a bosnyák közvécék kategóriájába eső) mellékhelység. Wifi csak a földszinten, de ott ingyen.
Az árak első hallásra valóban a hazainak feleltethetők meg, kettőnknek egy vacsora (főétel, köret, ital) 15 euróból kijött (a helyi konvertibilis márkát a legtöbb helyen 1:2 arányban simán váltják, mi nem is vettünk otthon külön márkát).
Este még gyorsan körbejártuk a környéket: a panziótól pár perc sétára közért is található, mely persze vacsora után már zárva volt.
Reggel 9-kor megkaptunk mindenféle mizéria nélkül a heti síbérletet (vö. Franciaország, ahol a fényképes bérletekkel állandó gond van csoportok esetén: fényképet kell vinni, majd a helyi serpák ragasztgatják be a bérletre a fényképeket, így tipikusan órák mennek el a drága síidőből az első nap), és miután szert tettünk egy ingyenes sítérképre, nekikezdtünk a pályák felderítésének.
Sajnos még délután is erős köd volt, így egész nap nem járt több felvonó. A síterep keleti oldalán található szállásunkról először egy tányéros (ez u.úgy nagyot ránt mint a szlovák társai, némi nosztalgikus érzést kiváltva azokból akik már nem először találkoznak a jelenséggel) és egy 6 fős üllős liftet próbáltunk ki. A helyi nevezéktan érdekessége, hogy a felvonókat ékes szerb nyelven — de (a turisták kedvéért) legalább nem cirill betűkkel — azonosítják, a sítérkép pedig egyszerű betűkkel azonosítja őket. A megfeleltetésre a sítérkép alján lévő apróbetűs táblázat ad lehetőséget.
A pályákat szerencsére mind a térképen, mint a valóságban számokkal azonosítják, bár a kijelzés meglehetősen visszafogott: a pálya száma csak hébe-hóba van kijelezve. Az esetek többségében egyszerű kék/piros/stb (a pálya nehézségére utalva) színű póznák jelölik a pálya határát. Ez alól is vannak kivételek, ott egyszerűen abból lehet tájékozódni, hogy merre nincs (vagy kevesebb) a szűzhó.
Délután aztán a szomszédos völgybe is ellátogattam (az "mi" völgyünk aljából induló felvonó tetejéről kényelmesen át lehet csúszni), ahol modernebb, plexiüveggel fedett felvonóval szállítják fel a sportolókat. A kijelzést itt se vitték túlzásba, harmadik nekifutásra sikerült úgy letalálni a pályán, hogy sehol se kellett visszagyalogolni. Úgy tűnik helyi marketing-trükknek számít, hogy a pálya elkanyarodik, de az egyenesen továbbsíelőket is várja egy étterem, ahonnan viszont vissza kell gyalogolni egy keveset. A liftek nyitvatartását úgy tűnik sehol se rögzítik írásban, de egy angolul beszélő szerb szerint az íratlan szabály a 16:00-s zárás (hétvégén 12:30). Szerencsére mi hetfőtől péntekig síelünk, így a szokatlanul rövid hétvégi nyitvatartás minket nem érint. A nap végén felkerestük a már említett boltot: 8:00-21:30 a nyitvatartása, így a 9 órás felvonó-nyitás előtt, vagy azok zárása után is kényelmesen lehet vásárolni. A mai kedvenc a 2l-es helyi sör, amiért kb. u.annyi eurót kellett kifizetni, mint Brüsszelben egy 3decis testvéréért. :-)
Reggel megvaxoltattam a lécemet, meglepő módon a szervízben csak egyszer kellett mutogatás nélkül elmondani, hogy mit akarok, egyből értették. Délelőtt a már tegnap megismert pályákon síeltünk, sajnos egyelőre úgy tűnik, hogy a szállásunkhoz vezető völgybe visszajutni a nyugatibb völgyekből továbbra se lehetséges rendes pályán: a nap folyamán 2 megoldást is kipróbáltam, de mindkettő szűzhavas síelésbe torkollott.
Ebédre újfent valami egyszerűt akartunk enni, de kezd körvonalazódni a helyi szabály: minden étel 5 euró körül van, ennyi pénzből viszont bőven jól lehet lakni. Jelen esetben két kolbászt kértünk (gondolva, hogy elég kenyérrel egy könnyű ebédre jó lesz), mire kihoztak 2 tálat, a tálakon 4 kolbásszal, hasábburgonyával, salátával, hagymával, pitával…
Délután sikerült felfedezni a tegnap még nem érintett pályákat: mint kiderült a felvonók aljában itt nincs információ arról, hogy milyen felvonók üzemelnek, de interneten meg lehet nézni, és az az információ tényleg naprakész. Kipróbáltam egyet az olimpiai pályák közül is — nem lepett meg, hogy ezek normális fekete/piros pályák, ha nem lenne kiírva, hogy olimpiai, észre se venné az ember.
Valamint tanultunk 2 új hasznos szerb szót: konobar = pincér, és naziv = név.
Délelőtt a hozzánk legközelebb eső, majd a tőle nyugatabbra lévő völgyben síeltünk: az idő kifejezetten szeles volt, így az üllő felvonókon a kilengés jól érezhető volt. Annyira, hogy miközben beültünk "ebédelni" egy forró csokira, le is állították a két völgy üllő felvonóit, ezáltal gyakorlatilag egyetlen tárcsás használatára kötelezve mindazokat, akik még időben nem startolak el a síterep nyugati felén fekvő olimpiainak titulált pályákra.
Pánikra persze semmi ok, így esett meg, hogy e tárcsás felvonó mellett kipróbáltam egy sífutó utat is, ami végül lesikló léccel is síelhető volt: tehát ma is találtunk új pályát.
Amúgy ez a lezárás kellemes nosztalgikus hangulatba sodorta a társaság jelentős részét: a folyamatos tárcsás felvonó-használat, a többperces várakozási idők érdekes módon mindenkiben a régi szlovák síterepek hangulatát idézte fel.
Azokat, akik a szomszéd völgyben rekedtek volna, állítólag kisbuszokkal hozták át hozzánk — úgy tűnik nagyon sürgősnek tartották a szeles időben az üllőliftek leállítását. Ennek ellenére azért az alsóbb szakaszokon ma is volt csendes, napsütéses idő, így volt lehetőség fotózkodásra. A szervezők az utolsó utáni pillanatban értesítettek SMS-ben, hogy 2 euróért bevisznek "bulizni" Szarajevóba: ezt mi kihagytuk, mivel inkább pihenésre vágytunk az egész napos síelés után; illetve várost nézni önállóan csak úgy lett volna értelme, ha előbb utána olvasunk, hogy mit lenne érdemes megnézni.
Ma kifejezetten zord időjárást kaptunk, egy fél órát leszámítva egész nap esett a hó (és így nem sütött a nap). Ami viszont pozitívum, hogy alig volt szél, így újra járt az összes felvonó.
A mai síelésre vittem GPS-t is: az 1916 méteres csúcsot sikerült 1904 méterre megközelíteni, valamint a teljes nap folyamán 54.6 km-t síelni, amivel teljes mértékben meg lehetek elégedve, ha belevesszük, hogy ebben volt egy egy órás ebédszünet is.
A hóesés amúgy egész előző nap is folytatódott, és ez rámutatott a bosnyák pályakarbantartás egy gyengéjére is: a pályákat délután/este ratrakolják, így az egész éjszakás hóesés után vagy 10 centi szűzhó borította az amúgy ledolgozott pályákat. Persze a népszerű szakaszokon a síelők ezt gyorsan ledolgozták.
Ezen kívül megjött a magyarok következő turnusa, akik csütörtök estétől vasárnapig maradnak, az egyik felvonón pl. szarvasi pálinkával kínáltak.
És egyben az utolsó. A terv az volt, hogy reggel síelés előtt becuccolunk a buszba, síelünk amíg járnak a felvonók, majd 4 után indulunk haza. Hogy ez jó ötlet volt-e vagy nem, az kérdéses: jó volt kihasználni a lehetőségeket, de a -tizenvalamennyi °C, az erős szél és a köd (röviden: a helyhez képest is ridegnek számító időjárás) azért kissé rossz szájízt adott az utolsó napra.
Ennek ellenére sikerült betartani a régi szabályt, hogy utolsó nap óvatosan: senki nem sérült meg, és aránylag időben el is tudtunk indulni hazafelé.
A nagy kérdés adott: jó ötlet-e Jahorinára menni egy jól bejáratott osztrák/francia/stb síterep helyett?
Én a következő előnyöket láttam:
évek óta osztrák/francia terepeken síelve végre valami változatosság
nagyjából egy megszokott minőségű síterepre jut az ember, a nyugati árak töredékéért (u.úgy jelezve vannak színekkel a pályák, van sítérkép, ratrak, stb.)
hétköznap a pályákon minimális a terheltség
az utazás csak 8 óra Bp-ről (Franciaországnál 1-1 teljes nap elment csak az utazással)
Persze vannak hátrányok is, amit érdemes figyelbe venni, ha az ember kompromisszumképtelen:
a pályák kijelzettsége rosszabb: többen kérdezték, hogy itt a fekete pályáknál alap feltétel, hogy ne legyenek kijelezve? ;-) (vagy például nincs led-panel a kasszánál, hogy mely felvonók járnak, csak neten lehet megnézni)
az angol nyelvtudása a helyieknek csapnivaló, bár erőltetve a tőmondatok használatát minden felmerülő problémát megoldottak, így sok paraszra nem lehetett okunk
Pár ár-referencia (TL;DR: 2 KM kb. = 1 EUR):
forró-csoki a Peggy "hüttében": 4,5 KM
2l-es LAV sör a helyi boltban: 3,3 KM
szállás a Pahuljica panzióban félpanzióval: 50 KM
nagy (32cm) pizza a VATRA étteremben: 10KM