<![CDATA[Martin Hujer blog]]> 2019-05-05T10:03:54+00:00 https://blog.martinhujer.cz/ Sculpin <![CDATA[Fuerteventura - Things to Do, Best Places to Visit]]> 2019-05-05T00:00:00+00:00 https://blog.martinhujer.cz/fuerteventura-things-to-do/

This article is a translation of my travel guide for Fuerteventura (in Czech).

In October 2018 we spent almost three weeks in Fuerteventura, so I have lots of tips for interesting places and about Fuerteventura in general.

Fuerteventura - Puerto del Rosario

Traveling there - airline tickets, bus

You can fly to Fuerteventura directly from Prague, but one-way ticket costs around 7k CZK (280€) so in the end we flew with Ryanair from Berlin. One ticket from Schönefeld costs around 30€ and you can get there easily by Flixbus or Regiojet. You can also use Czech Rails (ČD) train - morning tickets at 6:30AM from Prague are quite cheap.

I already mentioned this tip in other post, but it is worth repeating here. At the airport, after passing through security, you can usually buy cheap bottles of water in the vending machine (0.5l for 1€ in Fuerteventura). On the other hand, in Schönefeld, you can bring an empty bottle through and refill it with the tap water after the security.

Fuerteventura Buses

Buses on Fuerteventura are operated by Tiadhe company. You can find timetables on their website - unfortunately, they provide only the departure times from the starting stop, not when the bus passes through each stop. You can buy the tickets at the bus (cash only).

Fuerteventura Ferries

After spending two weeks in Fuerteventura we went to Lanzarote for next two weeks and then back again. We took a ferry from Corralejo city to Arrecife. You can choose from three companies that service this route - Armas, Fred Olsen and Lineas Romero. Fred Olsen is the fastest but also the most expensive. We used Lineas Romero ferry both times (it costs 15€ per person). Their ferry is more of a tourist boat than a ferry (and they don't transport cars).

Fuerteventura Car Rental

We weren't on Fuerteventura only for holidays, but we also had to do some work at least part of each day, so we rented car for whole two weeks. Thanks to that we could work in the mornings and take trips in the afternoon (which would be much harder if we had to take a bus). It turned out that the most expensive option is renting for a single day. If you rent for a longer period, the price lowers considerably. Rental for two weeks cost us 220 € (+gas).

We rented the car at the airport from the Cicar company (we also used them in Lanzarote). They offer good insurance and they don't require you to have a credit card (debit card is OK). You can book the car in advance through the website to be sure they have it available for you. It will also speed up the rental process, because you can pre-fill all the info online and they will just check it. You can also add a second driver for free. We returned the car in Corralejo (you don't have to return it to the same office). The fuel level should be approximately same as when you were handed the car.

Careful: You should not drive the rental cars on the dirt roads - it is usually not covered by insurance (check the terms of your rental agreement).

Faro del Tostón - Opel Astra


The weather was good for swimming all the time - temperatures around 24°C and hot when the sun shined. Temperatures at night were just below 20°C.

Fuerteventura food

Fuerteventura is renowned for its goat cheese - queso majorero (see below).

Tap water is desalinated, therefore it is not suitable for drinking and you must buy water in the supermarket. Surprisingly, the 8l barrels usually have better handle than the 5l ones, so despite being heavier, they are easier to carry.

Bigger supermarkets offer fresh fish and seafood. We usually buy precooked shrimp (langostino cocido, 9€/kg) or tuna steak (rodaja de atún, 12€/kg). This year we started buying octopus as well (pulpo cocido). You can buy a precooked whole tentacle or pieces. Just put it in the pan for a while with olive oil and add grounded sweet pepper (pulpo a la gallega).

Pulpo a la Gallega


Some Spanish banks charge an extra fee for a cash withdrawal (in addition to your bank fee). But the Cajamar Caja Rural bank does not charge the extra fee yet (I tested it with Revolut and Airbank card.)

Cities in Fuerteventura

Fuerteventura is a large island (the second biggest of the Canary Islands) and only 100 thousand people live there, so it is quite empty. We didn't want to spend that much time in car, so first week we stayed in the north and explored the places there and the second week, we stayed in the south and visited the places there. The cities in Fuerteventura are different from each other - ranging from locals-only to built-for-tourists.

El Cotillo

El Cotillo is a small town in the north where we spent the first week. As it is not overflowing with tourists, we would also consider it for a longer stay (month+). It has a great surfing beach on one side and the beach lagoons on the other side.

  • Lagoons is a part of the beach which is protected by natural breakwater and shallows caused by low tide make it great for children.
  • Castillo del Tostón - small fort with good views. Entrance fee is 3€, can be paid only by card (no cash).
  • El Goloso de Cotillo - café where we went at least five times (during one week!)
  • Kalima - good tapas bar

El Cotillo - lagoons


Corralejo is resort popular among British tourists. We didn't like the beach much. And it is more expensive in comparison with El Cotillo.

Puerto del Rosario

Puerto del Rosario is the capital of Fuerteventura with very few tourists. We spent last five days there. Many cruise ships harbour in the city port. You can use MarineTraffic.com (FlightRadar for ships) to see more information about the ships. The city has a nice beach with white sand.

  • Oficina de Turismo de Puerto del Rosario - tourist information centre. I recommend visiting it just after arrival to get some paper map and lot of tips (I guess they know more things than I have in this article)
  • Café Atlántico - cafeteria with a sea view. They offer good and cheap sandwiches.
  • Cafetería Del 15 - random cafeteria, where we had lunch after arrival because we were starving. I guess we were the only tourists there in a while :-)
  • free parking close to the city centre. Check that you have the correct one - there is another free parking, but much farther from the city centre. Try to guess where we parked ;-)
  • Panadería Pastelería Pulido Alonso - pleasant café, they have several shops around the island.

More cities

  • Calleta de Fuste - place built for tourists

  • Gran Tarajal - town interesting mainly for its black sand beach and for the abundant narrow one-way streets.

  • Costa Calma - resort with enormous beach where we spent our second week on Fuerteventura. This one is popular among German tourists. We stayed in a nice apartment a bit farther from the city centre. In the local Spar shop you can even buy Dallmayr coffee.

  • Morro Jable - resort in the south of the island with a great beach.

Fuerteventura Trips

We made a lot of trips in Fuerteventura. I already mentioned some cities and places above. We visited all of them by car, so I'm not sure which of them are easily accessible by bus.

El Faro del Tostón

El Faro del Tostón is a lighthouse close to El Cotillo. You can visit the museum of the traditional fishing (we arrived late, so it was already closed).

El Faro del Tostón


Lajares is recommended in the Lonely Planet because of its cafés. Yes, the cafés are there, but there is nothing else of interest.

La Oliva

La Oliva is a small village with an old church and gallery. You should also visit wind-mills Molinos De Villaverde nearby. Careful, that the road does not go all the way to them, but it changes to a bumpy dirt road. Therefore, it is better to leave the car next to the main street and walk to the windmills.

Molinos De Villaverde

Museo del Queso Majorero

Even though the Fuerteventura may appear dry and barren, they breed the majorero goats there and make cheese from their milk (under different brands). You can learn more about how the cheese was produced in the past and how it is produced nowadays in Museo del Queso Majorero. I really liked the museum as the exposition was well prepared and entertaining. The area includes also a windmill and cactus garden, so leave yourself enough time to visit all those places. And speaking about the goats - be careful as you can encounter them all over the island next to the road or even crossing the road.

Museo del Queso Majorero

Antigua and Pulido Alonso

I already mentioned Pulido Alonso café, but the one in Antigua is special for us. When we were heading to Corralejo for a ferry after two weeks in Fuerteventura, we realized we have too much time. So, we decided to stop for coffee. Antigua happened to be nearby, and we chose the Pulido Alonso by the rating. We had great coffee and cakes there.


Betancuria used to be capital of Fuerteventura in the past. Apart from other things, you can visit the church from 15th century. The city is like Charles Castle near Prague in one aspect - everything is closed after 5PM. Close to Betancuria you can visit statues of ancient kings and admire the views.

Statues near Betancuria

Views near the statues near Betancuria

Parque Natural Dune De Corralejo

Sand dunes near Corralejo. You can park easily on this parking place. If you never have been to sand dunes, I recommend this one hundred percent, it's a great experience (you can visit another in Maspalomas in Gran Canaria). Don't forget to bring your sun cream! The sun is really strong in the dunes. Between the sand dunes and the Corralejo, you can find some nice beaches. But we didn't swim there in the end, because when we arrived there was a yellow warning flag and before we took our things from the car, lifeguard swapped it for the red one.

Corrajelo Dunes

But it wouldn't be us to spend whole day walking around on dunes. Instead we hiked to the nearby hill Montaña Roja. You can check the recorded map in Wikiloc. If you watch the map carefully, you can see that we parked unnecessarily far. But from the car, all the places appeared to have to big curb to park there and I didn't want to break the car. But when we walked there, we realized that at least two places are suitable for parking, so I marked them in the map. And the view from the Montaña Roja was spectacular.

Montaña Roja

Salinas del Carmen

You can either get salt from salt mines or you can let the sea water dry up. That's how they did it in the past and how they do it now in the museum of salt production Salinas del Carmen. They have nice indoor exposition, but the main part is outside, where you walk through the whole process of salt production.

Salinas del Carmen

Pájara and a viewpoint on FV-605

When we drove somewhere and we had enough time, instead of using main road (FV-1, FV-2), we used some small scenic road over the hills and villages (FV-605). This way we visited village Pájara. You can find several interesting things there - church from 17th century, dried-up river and a roundabout with a statue of man milking a goat.

Pájara - dried-up river

Pájara - statue of man milking a goat

If you follow the FV-605 south from Pájara, you can stop at perfect viewpoint

Viewpoint at FV-605

Pozo Negro

Fisherman village in the end of the road. There is a black-sand and pebble beach and two cafés.

Faro de la Entallada

Faro de la Entallada is a lighthouse on the cliff with a great sea view. Last part of the road is really narrow and with few guardrails, so be careful.

Faro de la Entallada

Mirador del Salmo

View point Mirador del Salmo is worth visiting when you are driving nearby. It is just next to the road.

Pico de la Zarza

Pico de la Zarza (sometimes also called Pico de Jandía) is the highest mountain of Fuerteventura. Although it has only 807 meters above sea level, you are starting at 0 m. The hike is about 15 km and you can check our walk on Wikiloc. We started the ascent at 9AM and luckily it was partly cloudy on that day. Don't forget to bring enough water and something to cover you head, because there is no place to hide from sun. We parked unnecessarily far; we could have parked at the place where the dirt road started. From the top of the mountain you can admire great views also to the north side of the island.

Pico de La Zarza


Cofete is a nice beach on the northern side of the island. Swimming is forbidden there because of the strong sea currents. You can get there either by car (by the dirt road) or by a special 4x4 bus from Morro Jable. It goes from Estación de Guaguas (=main bus station). It is a line L111 and it takes only 18 people, so be there early.

Cofete bus

You can get back by the same bus or you can hike back over the hill (12 km). Our walk on Wikiloc.

Cofete - path over the hill

Islote de Lobos

Islote de Lobos is a small island not far from Corralejo. You can take a tourist boat there. This is the only thing from the whole article we have kept unvisited for the next time. But I include it here for the sake of completeness.


Although we didn't spend that much time on Fuerteventura, we managed to do lot of things and visit lot of places. Having a rental car for the whole time really helped, because we could do just a short trip in the afternoon which won't be possible if we went by bus.

If you go to Fuerteventura and have enough time, I recommend spending at least a week on Lanzarote, where are also many things to see.

<![CDATA[4 Tips for Faster Gitlab CI Builds for Symfony Applications]]> 2019-03-16T00:00:00+00:00 https://blog.martinhujer.cz/4-tips-for-faster-gitlab-ci-build-symfony-application/

Some of those tips are also applicable to non-Symfony applications and to non-Gitlab CI pipelines, so keep reading even if you are not using them.

Waiting for a CI build to finish so can merge the feature is annoying, but it is still by an order of magnitude better than not having CI at all.

In this article I will show you some tips which I used in OutdoorVisit to make our CI build faster.

Tip #1: You may not need PHP Lint

Linting of PHP files can be done as easily as running php -l myfile.php. I've included PHP Lint as a part of the build since ever. At first, I was using PhpLintTask from Phing which checks each file separately. Later I switched to PHP-Parallel-Lint which checks multiple files in parallel.

Recently I noticed that our CI build is taking more time to run. It wasn't a glitch, we were just adding more and more files to the project. The PHP Lint was taking 31 s of the build time although it ran 10 parallel checks. I couldn't remember the last time it discovered something, so I considered removing it completely. But it would open a risk of missing an error somewhere.

I took a different approach. When the Symfony compiles the DI container, it tries to load all the files and fails on syntax errors. At least when you have this configured in config/services.yaml:

        resource: '../src/*'

So instead of completely removing the PHP Lint, I just added --exclude src flag to the command, so it looks like this:

parallel-lint -j 10 --exclude vendor --exclude var --exclude src .

It helped me to cut 20 s from the build time without risking anything!

Tip #2: Enable PHP_CodeSniffer cache and cache it between builds

PHP_CodeSniffer check can take quite a lot of time when there are many files to check. It used to take around 60 s in our build. We also usually run it locally before pushing so the waiting was annoying.

Luckily, PHPCS has a built-in caching feature, which can be enabled by passing a command line argument: --cache=./var/.phpcs-cache. The cache-file path can be changed to anything else and you can also configure it as an option in your phpcs.xml.dist ruleset.

This sped up our CS check from 60 s to 3 s!

But it worked only locally, because the Gitlab CI and others like Bitbucket Pipelines create a new environment for each build. For Gitlab all you need to do is to add the path to cache section in .gitlab-ci.yml (We already had vendor/ and node_modules there). Gitlab takes care of backing it up after the build and restoring it before the next build.

      - node_modules/
      - vendor/
      - var/.phpcs-cache  <-- added the PHPCS cache here

Tip #3: Run Symfony tests with debug=false

Apart from having a good number of unit tests, we also use some container tests and lots of controller tests for most of the frontend. They are slow (running against a database) but they are worth it because they detect tremendous number of issues and regressions.

When you are running your Symfony application in dev or test environment, cache freshness is automatically checked on each request and invalidated if necessary. The great thing is that you don't have to worry about it, and you will never be surprised by stale cache. In prod mode, cache is not invalidated automatically, and you must take care of it manually during deploy.

If you are running your whole test suite at once, there is no need to check the cache freshness before each test.

It can be done by changing APP_DEBUG flag in phpunit.xml.dist file to 0:

<env name="APP_DEBUG" value="0" />

However, this solution is not perfect, because you will need to take care on invalidating the cache manually while you are developing. You can use this custom bootstrap.php for tests from Github.

I chose a different approach for our project and just changed the environment variable for CI builds in .gitlab-ci.yml:


As it affects only the CI, running the tests locally does not benefit from this - but on the other hand I don't have to worry about properly invalidating the cache (and I'm usually running just a few tests locally anyway).

This helped me to cut the tests running time in CI from 90 seconds to 53 seconds!

Tip #4: Run npm install with --no-audit

If you have an application where you use NodeJS and npm just to compile assets such as CSS and JS, there is no need to stay on the very latest versions of the packages. However, because Webpack depends on lots of packages, npm will start spitting out messages like this during npm install:

audited 9438 packages in 16.958s
found 222 vulnerabilities (5 low, 213 moderate, 3 high, 1 critical)

As the JavaScript code installed through npm is never facing the hostile environment of the internet, those are not very scary. But they are unnecessarily cluttering the build output, so I decided to disable them. It can be done by adding --no-audit switch to npm install

npm install --no-audit

Apart from cleaning out the build output, it saved several seconds from the npm install run which is neat.


Do you know other tricks how to make the CI build faster? Please share them in comments!

<![CDATA[Povinné ručení od České Pojišťovny - Jak ho zlevnit?]]> 2019-03-12T00:00:00+00:00 https://blog.martinhujer.cz/povinne-ruceni-ceska-pojistovna-zlevneni/ Dlouhou dobu jsem měl povinné ručení u České Pojišťovny (dříve měli akci na přenos bonusu v rámci rodiny, což bylo dost výhodné). Každý rok mi přišel požadavek na zaplacení o trochu více než předchozí rok. Letos jsem se konečně rozhoupal prozkoumat, jestli nejde mít povinné ručení někde jinde levněji.

Jediný zajímavý parametr pro srovnání je limit pojistného plnění. Našel jsem tedy nějaký srovnávač povinných ručení a vyplnil údaje o autě podle stávající pojistné smlouvy. Pozor, pokud nechcete, aby vám někdo zkoušel vnutit pojištění a chcete ho jen srovnat, tak nezadávejte svoje telefonní číslo ani rodné číslo (Můžete použít třeba to z Wikipedie).

Ve výsledcích mě překvapilo, že Česká Pojišťovna (ano, tam, kde mám stávající smlouvu) nabízí povinné ručení se stejnými limity plnění levněji, než po mě chtějí teď zaplatit.

A tím se dostáváme k tomu nejdůležitějšímu.

Jak snížit cenu povinného ručení u České Pojišťovny?

Abych ověřil, že to srovnávač počítá správně, spočítal jsem si povinné ručení přímo na webu České Pojišťovny. Tam jsem zadával reálné údaje, protože už je stejně mají. A pokud zadáte jméno a rodné číslo, tak to i správně načte bonus za dosavadní bezeškodní průběh.

Výsledkem bylo kalkulace níže, o osm set levnější, než 3 231 Kč, které bych platil podle stávající smlouvy.

Kalkulace povinného ručení u České Pojišťovny

Tabulku jsem si vytisknul a měl jsem v plánu se stavit na pobočce Česká Pojišťovny, starou smlouvu vypovědět a uzavřít novou.

Ale než jsem se k tomu dostal, tak mi volali, že jsem nedokončil online objednávku pojištění. A kupodivu uměli, bez nějakého přesvědčování, tu starou smlouvu zrušit a udělat novou na částku z online kalkulačky, bez toho abych musel někam chodit.

Podklady pak poslali e-mailem a smlouva byla uzavřena tím, že jsem zaplatil pojistné.

Na co si dát pozor u povinného ručení?

Pojišťovny jsou uličníci, tak si všechno pořádně kontrolujte:

  1. Promyslete limity plnění, což je maximum, kolik pojišťovna bude hradit v případě škody nebo újmy na zdraví.
  2. Kontrolujte, jestli vám nezkusili prodat i něco dalšího (třeba havarijní pojištění).
  3. Pozor, že existující smlouvu lze vypovědět nejpozději 6 týdnů před prodloužením, takže to neodkládejte.


Dává smysl se každý rok podívat, jestli nemůžete mít povinné ručení levněji, ať už u stávající pojišťovny nebo někde jinde.

<![CDATA[Lanzarote - kam na výlety? Co navštívit?]]> 2018-12-16T00:00:00+00:00 https://blog.martinhujer.cz/lanzarote-kam-na-vylety/ V říjnu 2018 jsme byli dva týdny na Lanzarote, takže mám spoustu tipů na zajímavá místa a obecně k Lanzarote.

Nejdříve jsme byli pár týdnů na Fuerteventuře, takže ty věci, které jsem popsal v prvním článku, už tu nebudu opakovat.

Lanzarote má nádhernou sopečnou krajinu, takže doporučuji se při výletech průběžně zastavovat na odpočívadlech u silnice a prohlížet si výhledy (spolujezdec může koukat, ale jako řidič jsem si moc výhledů z auta neužil).

Lanzarote - Montañas del Fuego - Timanfaya

Auto z půjčovny

Jeli jsme trajektem z Fuerteventury a hned po příjezdu jsme si v Playa Blanca zase půjčili auto od Cicar (dopředu jsme ho zarezervovali přes web). Měli jsme ho na celou dobu, než jsme se vraceli zpět na Fuerteventuru. Stejně jako na Fuerteventuře si neumím představit, jak bychom ty výlety zvládli autobusem.


Na Lanzarote jsme bydleli v hlavním městě Arrecife. Výhoda je, že je docela uprostřed ostrova, takže na všechny výlety je to podobně daleko.

Lanzarote - Arrefice

Parkování ve městě není jednoduché, protože se skládá převážně z úzkých jednosměrek. Většinou jsme parkovali přibližně tady nebo na hliněné ploše o pár metrů dále.

I ve městě toho je spoustu k vidění:

  • Playa del Reducto - městská pláž s pozvolným vstupem do vody. Kousek od pláže je půjčovna sportovního vybavení a paddleboardů.
  • Castillo de San Gabriel - na ostrůvku, kam se dostanete po mostě je malá pevnůstka s muzeem uvnitř a hezkým výhledem shora.
  • Charco de San Ginés je uzavřená zátoka s přístavem pro malé lodě. Super na procházení okolo. Je zajímavé se tam jít podívat v různých časech, protože vzhledem k přílivu a odlivu může být třeba půlka zaparkovaných lodiček na suchu. Když už tam budete, tak doporučuji zkusit zmrzlinu v Antiu Xixona nebo se večer zastavit na tapas v La Caja de tapas.
  • Punto Sabroso je malá restaurace s latinsko-americkými a španělskými jídly. Velmi local atmosféra - sice mají menu i v angličtině, ale na případné doplňující dotazy už budete potřebovat španělštinu.
  • pokud se vydáte po cyklostezce podél moře směrem k letišti, tak můžete dojít na další pláže nebo až do Playa Honda. Šli jsme tam pěšky, ale asi by bylo zábavnější půjčit si kolo - je to docela daleko.

Montañas del Fuego - Timanfaya

Nejzajímavější věc na Lanzarote. V národním parku Timanfaya uvidíte měsíční krajinu jako následek sopečných erupcí v letech 1730 a 1736. Doporučuji tam vyrazit brzy po ránu, abyste se vyhnuli frontě.

Lanzarote - Montañas del Fuego - Timanfaya

Dostanete se tam autem a vstupné se platí už na odbočce z hlavní LZ-67 na LZ-602 (pozor, nedá se tam platit kartou). Následně dojedete na parkoviště k Restaurante El Diablo. Až zaparkujete, tak běžte do fronty na autobus. Čekali jsme tam jen chvilku. Autobus vás vezme na projížďku skrz park (výklad ve španělštině, angličtině a němčině). Dnes už je aktivní jen sopka Timanfaya, podle které se celý park jmenuje.

Po projížďce vás ještě čeká ukázka toho, že sopka je aktivní (horkem v díře v zemi tam zapalují nějaké roští). Potom se můžete jít podívat do Restaurante El Diablo, kde kromě jiného nabízejí maso grilované na horku ze sopky. Ten gril stejně jako postavu "ďábla" (logo parku) vymyslel César Manrique (viz dále).

Lanzarote - Montañas del Fuego - Timanfaya - El Diablo

Vstupenky Bonos

Na Lanzarote si můžete zakoupit jednu vstupenku ke vstupu na několik hlavních turistických atrakcí. Je to levnější než si kupovat jednotlivé vstupy zvlášť. Více informací najdete na oficiálním webu.

César Manrique

César Manrique byl slavný lanzarotský umělec, sochař a architekt 20. století. Navrhnul spoustu věcí, které na Lanzarote uvidíte. Takový místní Jára Cimrman.

Casa Museo De César Manrique

Ve městě Haría je Casa Museo De César Manrique - muzeum v domě, kde žil César Manrique. Dovnitř jsme nakonec nešli, protože nám 10€ za vstup přišlo hodně a nechtěli jsme trávit odpoledne vevnitř v muzeu.

Na dvoře mají vystavený SEAT Ibiza, který Manrique natřel na výstavu aut v Barceloně v roce 1987. Zajímavé je, že Cicar (největší kanárská půjčovna aut) se v roce 2015 domluvila se SEATem a nechali si nabarvit 96 nových SEAT Ibiza tak jako ten historický a normálně je půjčují (viděli jsme je několikrát). Našel jsem k tomu docela hezké video.

Lanzarote - César Manrique - SEAT Ibiza

Mirador del Río

Mirador del Río je super vyhlídka v severní části ostrova. Je odtamtud krásný výhled na další kanárský ostrov La Graciosa a případně můžete posedět v zabudované kavárně. Jak vás jistě nepřekvapí, tak to celé navrhl César Manrique.

Lanzarote - Mirador del Río - La Graciosa

Volcán de la Corona (hike)

Cestou z Mirador del Río sí můžete udělat krátký výlet na kráter Volcán de la Corona z vesnice Ye. Doporučuji zastavit u kostela a pak jít podle trasy na Wikiloc. Cesta vede do kopce mezi vinicemi (jednotlivé rostliny révy v ohrádkách z kamenů) až ke kráteru. Byli jsme tam zrovna když bylo zataženo a skoro do deště, takže to vypadalo hodně tajemně. Od kráteru buď můžete pokračovat jako okruh nebo se vrátit po stejné zpět.

Lanzarote - Caldera de Monte Corona

Cueva de los Verdes

Cueva de los Verdes je podzemní jeskyně sopečného původu (vypadá to jako krápníková jeskyně, ale nejsou tam krápníky). Vznikla tak, že tamtudy tekla roztavená láva směrem k moři. Určitě stojí za návštěvu.

Lanzarote - Cueva de los Verdes

Jameos del Agua

Jameos del Agua je jeskyně s velkým podzemním jezírkem, kde žijí bílí mini-krabi. Kromě jiného tam je také muzeum a podzemní koncertní síň. Samozřejmě v tom má zase prsty César Manrique.

Lanzarote - Jameos del Agua

Lanzarote - Jameos del Agua - Sunset

Jardín de Cactus

Jardín de Cactus je obrovská kaktusová zahrada, kterou (jak jinak) navrhl César Manrique. Pokud budete z chození mezi kaktusy unavení, tak si můžete dát kávu v kavárně, která je součástí zahrady. (Baví mě, že i na takhle turisticky exponovaném místě ta káva je docela dobrá a není předražená).

Lanzarote - Jardín de Cactus


Historická vesnice Teguise byla kdysi hlavním městem ostrova. Kousek za městem je kopec s výhledy na celý ostrov a na něm pevnost Castillo de Santa Barbara. Zároveň je tam kráter, který si můžete obejít dokola.

Lanzarote - Castillo de Santa Barbara

Casa Museo del Campesino

Casa Museo del Campesino je muzeum zemědělství a řemesel (vstup zdarma). Uprostřed areálu můžete sejít do jeskyně s tunelem. Celé to vymyslel náš známý César Manrique včetně monumentu stojícího před muzeem.

Lanzarote - Casa Museo del Campesino

Vína na Lanzarote

Při výletech po ostrově si určitě všimnete, že všude pěstují révu. Typicky je každá rostlina révy v samostatné ohrádce z kamenů, které ji chrání před větrem. Zároveň mají půdu přikrytou drobným sopečným kamením, které drží vláhu (a přitom je lehké). Víno si můžete koupit pak i běžně v supermarketu - láhev bílého El Grifo stojí 11€ (případně můžete zkusit jiné značky - vždycky je na nich napsané, že jsou z Lanzarote). Pokud budete mít čas, tak můžete navštívit muzeum vinařství Museo el Grifo (mají i variantu prohlídky s ochutnávkou).

Lanzarote - Vinná réva

Montaña Blanca (hike)

Montaña Blanca je hora se super výhledem, ale podle mě to je takový otloukánek, protože se jmenuje stejně jako druhá Montaña Blanca, která má uprostřed kráter, takže je mnohem populárnější. Ale tenhle hike jsme šli na tu první, protože cestou na tu druhou jsme narazili na uzavřené silnice kvůli triatlonu. Mrkněte na záznam trasy na wikiloc. Jeli jsme tam v sobotu, takže jsme ve vesnici Montaña Blanca zaparkovali na prázdném parkovišti u školy. A následoval trošku náročnější hike na horu. Výhoda je, že to lze jít jako okruh a není potřeba se vracet po stejné trase.

Lanzarote - Montaña Blanca

Caldera de Montaña Blanca (hike)

Výlet ke kráteru Caldera de Montaña Blanca je delší, tak si nezapomeňte vzít dost vody a svačinu. Záznam trasy jsem opět dal na wikiloc. Parkovali jsme zbytečně daleko ve vesnici, můžete buď zaparkovat na kraji té hlavní silnice kousek před odbočkou na prašnou cestu nebo ještě kus popojet po té prašné cestě a zaparkovat tam (označeno na mapě). Pak už se vydáte po svých sopečnou krajinou.

Lanzarote - Caldera de Montaña Blanca

Je super, že to je oficiální trasa, takže jsou podél i informační tabule o sopkách apod. Nejdříve dojdete k menšímu kráteru, do kterého se dá vejít z boku (Caldera de Montaña Caldereta). Zajímavé je, že tam dřív něco pěstovali a chovali kozy (jak je to uvnitř chráněné proti větru, tak se tam drží vlhkost). Teprve potom začnete stoupat na okraj velkého kráteru Caldera de Montaña Blanca. Ten je možné obejít dokola (cestou vylezete na samotný vrchol Montaña Blanca). Pozor, že tam, kde se pak potřebujete odpojit z okruhu po obvodu kráteru, ta odbočka není úplně zřejmá, ale je označená naskládanými kameny (občas koukněte do mapy). Po sestupu se napojíte na tu cestu, po které jste ke kráterům přišli.

Lanzarote - Caldera de Montaña Blanca

Pokud byste na Caldera de Montaña Blanca chtěli výlet s průvodcem, tak je v nabídce na OutdoorVisit.

Los Hervideros

Na západním pobřeží je několik míst, které stojí za zastávku. Los Hervideros je vyhlídka z útesů na mořský příboj (i v jeskyních). Název to má podle toho, že se tam jakoby vaří voda.

Lanzarote - Los Hervideros

El Golfo a pár dalších věcí na západním pobřeží

Pokud pojedete od Los Hervideros dále, tak narazíte na pláž Playa Montaña Bermeja, která také stojí za vidění. Nakonec dojedete do městečka El Golfo. Je tam spoustu rybích restaurací s výhledem na moře a na případný západ slunce. Až tam budete čekat, tak se určitě dojděte podívat na zelené jezírko El Lago Verde.

Lanzarote - Lago Verde

Vrak lodi u Arrecife

Kousek od Arrecife můžete zastavit na pláži, kterou zdobí vrak lodi. (Zaparkovat můžete o pár desítek metrů dál, kde je před budovou dost místa.) Vrak tam je od roku 1981, kdy ta loď plula okolo Lanzarote a zjistili, že jim teče dovnitř. Arrecife jim nedovolilo jet do přístavu, protože kdyby se potopili uprostřed přístavu, tak by ho zablokovali. Místo toho je nasměrovali na mělčinu v písčité zátoce, kde je dodnes. Už delší dobu plánují, že vrak odstraní, ale zatím (říjen 2018) tam pořád je. Když jsme tam byli, tak z něj někdo dokonce skákal do vody.

Lanzarote - Shipwreck Arrecife

Punta Mujeres

Punta Mujeres je městečko, kde naleznete přírodní "bazény" - ohraničený kus moře, kde se dá příjemně koupat.

Pastelería San Antonio

Sladká tečka na závěr. Pastelería San Antonio je pekárna/kavárna ve vesnici Tías. Stavovali jsme se tam dvakrát cestou z nějakého výletu na kávu a něco sladkého nebo slaného k jídlu.


Byli jsme na Lanzarote jen dva týdny, ale viděli jsme toho hrozně moc. Neumím si představit, že bychom na celý ostrov měli méně času. Opět se osvědčilo půjčené auto, i když večerní parkování v přeplněném Arrecife bylo náročnější.

Pokud se budete chystat na Lanzarote a budete mít více času, tak doporučuji alespoň týden z toho strávit na Fuerteventuře, tam je toho taky spoustu k vidění.

A pokud se chystáte do Las Palmas na Gran Canarii, tak mrkněte na moje tipy na výlety.


Vytvořil jsem ještě samostatný web s informacemi o Lanzarote (v angličtině).

OutdoorVisit outdoor tours

Na Lanzarote se můžete naučit surfovat, jít na hike s průvodcem nebo se podívejte na nejlepší outdoorové aktivity na Lanzarote.

<![CDATA[Jaké novinky přinese PHP 7.3]]> 2018-11-28T00:00:00+00:00 https://blog.martinhujer.cz/jake-novinky-prinese-php-7-3/ Vydání PHP 7.3 je plánováno na 6. prosince 2018. Přináší několik nových funkcí, vylepšení a různá pročištění jazyka. Oproti jiným vydáním mu sice chybí nějaký trhák, ale na druhou stranu nepřibyly ani žádné zásadní nekompatibilní změny, takže upgrade bude snadný.

Článek vyšel na serveru Zdroják.cz

<![CDATA[Best PhpStorm plugins for Symfony development]]> 2018-11-26T00:00:00+00:00 https://blog.martinhujer.cz/best-phpstorm-plugins-for-symfony-development/ I've been using PhpStorm for quite a while and I'm still surprised now and then when it suggests an auto-completion for something I thought that's not possible.

But there are still many things - usually framework- or library-specific - that PhpStorm cannot do on its own. But there are plugins that can step in place and do the magic for specific framework or library.

PHP Annotations

PHP Annotations plugin analyses the classes which can be used as annotations and provides code-completing when writing annotations - e.g. Doctrine ORM mappings.

PHP Annotations plugin

PHP Toolbox

PHP Toolbox plugin was extracted from Symfony plugin and provides better auto-completion for several libraries (PHPUnit, Behat, Doctrine, Twig etc.)

Symfony Plugin

Both PHP Annotations and PHP Toolbox are best used together with the Symfony Plugin. This plugin provides auto-completion for anything in Symfony you can imagine. It analyses the DI container code, so it can suggest the services when you call $container->get(). It provides various auto-completions in the YAML config files. Apart from that, it can handle lots of Form, Twig and Routing auto-completions. You can click through from controller to template, from the name of the route to the controller where it is defined. It analyses translation files and provides the completion for the translations when calling the translate function or using trans filter in Twig.

How to use custom template directory with the Symfony plugin?

If you have templates in a custom namespace and directory - e.g. configured in config/packages/twig.yaml, the auto-completion in controllers or other templates won't work for those, because the Symfony plugin can't detect them.

        '%kernel.project_dir%/src/App/Resources/templates': App
        '%kernel.project_dir%/src/Admin/Resources/templates': Admin

You can fix it by manually adding them in PhpStorm Settings (PHP -> Symfony -> Twig/Template). But each of the developers must do it himself. Unless you put in into ide-twig.json in a project root:

    "namespaces": [
            "namespace": "App",
            "path": "src/App/Resources/templates"
            "namespace": "Admin",
            "path": "src/Admin/Resources/templates"

This file is loaded by Symfony plugin and the namespaces and paths will be configured automatically (you can check it in the Settings).

Enable translation keys auto-completion for custom translation methods

When you create a custom method that accepts translation key, the PhpStorm won't do the auto-completion for it, because it does not know that the parameter is a translation key. Luckily, the Symfony plugin provides an easy way to let it know of the type of the parameter. Have a look at the following example:

class TitleManager
     * @param string $label #TranslationKey
    public function addItem(string $label): void
        // ...

$titleManager = new TitleManager();
$titleManager->addItem('app.products.name'); // the translation key auto-completion will work here 

You can see that I added #TranslationKey to the method parameter PHPDoc. It is something they call Hash Tags in Symfony plugin. It allows you to define the type of the parameter, so the plugin can provide the auto-completion. Apart from TranslationKey, you can also use Entity, Service, FormType, Template, Route, Class, TranslationDomain, FormOption or Interface (don't forget to prefix them with #).

PHPUnit Enhancement

PHPUnit Enhancement plugin provides smart autocomplete for mock creation. It also handles refactoring - if you rename a method which is mocked, it is correctly renamed in the string in tests.

PHPUnit Enhancement plugin

PHP composer.json support

PHP composer.json support plugin adds composer.json auto-complete and validation. It also displays which version of each packages is installed (from the data in composer.lock)

Php Inspections (EA Extended)

Php Inspections (EA Extended) is a plugin that adds a lot of inspections for statically analyzing the PHP code you are writing and suggesting fixes and improvements.

Twig Support

Twig Support is an official plugin from Jetbrains bundled with PhpStorm, so just enable it in the settings and you are done.

.env files support

Symfony 4 uses .env files for configuration parameters (instead of parameters.yml) and .env files support plugin provides syntax highlighting for the .env file.


.ignore plugin provides syntax highlighting and path auto-completion for .gitignore (and other ignore files). It also automatically changes the color of the ignored files in the Project File Tree to gray.


I can't imagine using PhpStorm for Symfony development without those plugins. They save me time and prevent mistakes by providing the magic auto-completion.

Do you use some other useful plugins? Please let me know in the comments.

Update: If you are interested in plugins not directly related to Symfony, have a look at the Essential PhpStorm plugins article by localheinz.

<![CDATA[Fuerteventura - kam na výlety? Co navštívit?]]> 2018-11-18T00:00:00+00:00 https://blog.martinhujer.cz/fuerteventura-kam-na-vylety/

You can read the English version of this travel guide for Fuerteventura here.

V říjnu 2018 jsme byli skoro tři týdny na Fuerteventuře, takže mám spoustu tipů na zajímavá místa a obecně k Fuerteventuře.

Fuerteventura - Puerto del Rosario

Cesta tam - letenky, autobus

Na Fuerteventuru se sice dá letět přímo z Prahy, ale jednosměrná letenka stojí cca 7 tisíc, takže jsme nakonec letěli s Ryanair z Berlína. Jedna letenka ze Schönefeldu stála asi 30€. Dá se tam v pohodě dopravit Flixbusem nebo Regiojetem (autobusem). A taky vlakem ČD (ranní jízdenky myslím v 6:30 z Prahy jsou docela levné).

Připomínám tip, který už jsem někde psal - na letišti se po security typicky dá docela levně koupit voda v láhvi v automatu na pití - na Fuerteventuře třeba 0.5l za 1€. Na Schönefeldu si zas můžete skrz security vzít prázdnou láhev a naplnit si ji z vodovodu.

Doprava - autobusy

Autobusy na Fuerteventuře provozuje společnost Tiadhe. Jízdní řády mají na webu - pozor, jsou tam jen odjezdy z výchozí stanice, ne průjezdy jednotlivými zastávkami. Jízdenky se kupují u řidiče v hotovosti.

Doprava - trajekty

Po dvou týdnech na Fuerteventuře jsme se na dva týdny přesouvali na Lanzarote a pak zase zpět. Z města Corralejo tam jezdí tři společnosti. Armas, Fred Olsen a Lineas Romero. Fred Olsen je nejrychlejší, ale taky nejdražší. My jsme obě cesty jeli s Lineas Romero (15€ za osobu a cestu), kteří jsou spíš taková výletní loď a neberou auta.

Doprava - auto

Vzhledem k tomu, že jsme během dne potřebovali kromě výletů také pracovat, tak jsme si půjčili auto na celých 14 dnů, co jsme byli na Fuerteventuře. Díky tomu jsme mohli třeba dopoledne pracovat a odpoledne vyrazit na výlet (což by se s přesuny autobusem dělalo mnohem hůře). Ukázalo se, že nejdražší je půjčení na jeden den (jako jsme si ho třeba půjčovali v Las Palmas) a pak to hodně klesne. Půjčení na celých 14 dnů stálo 220 € (+ nafta).

Půjčovali jsme rovnou na letišti od Cicar (i pak na Lanzarote) - mají pojištění bez spoluúčasti a stačí normální karta, není potřeba kreditka. Auto jde dopředu zarezervovat na webu, abyste měli jistotu, že ho budou mít k dispozici. Zároveň si tím ušetříte opisování údajů při přebírání, protože to všechno už jde vyplnit přes web. Při přebírání si můžete zadarmo dopsat i druhého řidiče, což je fajn. Auto jsme vraceli v Corraleju v přístavu (tzn. není problém vrátit jinde, než jste si ho půjčili). Palivo by při vrácení mělo být na stejné úrovni jako předtím.

Pozor, s auty z půjčoven by se mělo jezdit jen po asfaltových cestách, jinde většinou neplatí pojištění (mrkněte do smlouvy).

Faro del Tostón - Opel Astra


Typicky bylo na koupání - teploty kolem 24°C a když svítilo slunce tak vedro. V noci teploty lehce pod 20°C.


Pro Fuerteventuru jsou typické kozí sýry - queso majorero (viz níže).

Voda z vodovodu je odsolovaná, takže není vhodná na pití a nezbývá, než nosit barely s vodou ze supermarketu. Vypozoroval jsem, že 8l barely mají typicky lepší držadlo než 5l, takže i když jsou těžší, tak se lépe nosí.

Ve větších obchodech běžně mají pult s čerstvými rybami a mořskými plody. My kupujeme předvařené krevety (langostino cocido, 9€ za kilo), nebo plátek z tuňáka, který vám ukrojí (rodaja de atún, 12€ za kilo). Letos jsme rozšířili repertoár i o chobotnici (pulpo cocido). Dá se koupit předvařené zavakuované chapadlo nebo už přímo kousky. Stačí na chvíli hodit na pánev a pak posypat mletou paprikou (pulpo a la gallega)

Pulpo a la Gallega


Za výběr z některých bankomatů si kromě vaší banky účtuje poplatek ještě ta banka, které ten bankomat patří. Ale při výběru z bankomatů Cajamar Caja Rural poplatek neúčtují (vyzkoušeno Revolut a Airbank kartou).

Města na Fuerteventuře

Fuerteventura je velký ostrov - druhý největší z Kanárských ostrovů - a přitom tam žije jen 100 tisíc lidí, takže je hodně prázdný. Nechtěli jsme trávit tolik času v autě, tak jsme první týden bydleli na severu a projeli jsme ta místa na severu a druhý týden na jihu a prozkoumali to tam. Města na Fuerteventuře se hodně liší, v některých bydlí hlavně místní a jiná jsou letoviskovitá letoviska.

El Cotillo

El Cotillo je malé městečko na severu, kde jsme strávili první týden. Není přeplněné turisty, takže pokud bychom na Fuerteventuru jeli někdy na měsíc, tak asi do Cotilla. Je zajímavé tím, že má velkou surfařskou pláž. A plážové laguny.

  • Laguny jsou část pláže, která je chráněná přírodním vlnolamem a při odlivu tam je dost mělko - ideální pro děti.
  • Castillo del Tostón - místní minipevnost s fajn výhledem. Vstup 3€, platba pouze kartou.
  • El Goloso de Cotillo - kavárna, kde jsme byli asi 5×
  • Kalima - tapas bar

El Cotillo - lagunky


Corralejo je letovisko oblíbené britskými turisty. Pláž nic moc. Oproti El Cotillo dražší.

Puerto del Rosario

Puerto del Rosario je hlavní město Fuerteventury, málo turistů. Strávili jsme tam posledních 5 dnů. V přístavu průběžně kotví různé výletní lodě. Pokud neznáte, tak doporučuji MarineTraffic.com - obdoba FlightRadaru pro lodě. Hezká pláž s bílým pískem.

  • Oficina de Turismo de Puerto del Rosario - turistické informační centrum. Doporučuji navštívit hned po příletu, získáte spoustu tipů (možná i něco, co tu nebudu mít napsané)
  • Café Atlántico - cafeteria s výhledem na moře. Mají dobré obložené bagety za 3€.
  • Cafetería Del 15 - cafeteria, kam jsme náhodně zapadli po příletu, když jsme měli hlad. Velmi local - chodí tam na oběd místní v montérkách.
  • parkoviště kousek od centra, zdarma. Pozor, abyste nezadali do navigace druhé podobné, které je mnohem dál (nám se to první den povedlo).
  • Panadería Pastelería Pulido Alonso - příjemná kavárna, mají několik poboček na ostrově.

Další města

  • Calleta de Fuste - letoviskovité letovistko

  • Gran Tarajal - městečko zajímavé zejména tím, že má pláž s tmavým pískem a spoustu jednosměrek.

  • Costa Calma - letovisko, s obrovskou pláží, kde jsme strávili náš druhý týden na Fuerteventuře. Tady je to pro změnu oblíbené zejména německými turisty. Bydleli jsme v apartmánu kousek dál z centra, takže to bylo fajn. A v místním Sparu mají v sortimentu i kávu Dallmayr.

  • Morro Jable - další letoviskovité letovisko na jihu ostrova. Hodně pěkná pláž.


Výletů jsme podnikli spoustu. Ta místa, která jsou přímo v nějakém městě jsem napsal přímo k nim. Všechno jsme objezdili autem, takže nevím, které z nich jsou nedosažitelné autobusem.

El Faro del Tostón

El Faro del Tostón je maják několik kilometrů od El Cotillo. Je tam muzeum tradičního rybářství, ale dorazili jsme tam až po zavíračce. Původně jsme tam chtěli jít pěšky z El Cotillo, ale naštěstí jsme jeli autem, je to po silnici, takže by to nebyla zábavná procházka.

El Faro del Tostón


Na Lajares našla Ivča v Lonely Planet doporučení, že tam jsou fajn kavárny. Ty tam jsou (mimochodem pobočka našeho oblíbeného El Goloso, které jsme znali z Cotilla). Akorát, že ono tam už nic dalšího zajímavého není.

La Oliva

La Oliva je malá vesnice s docela hezkým kostelem a galerií. Ale co je zajímavé jsou větrné mlýny Molinos De Villaverde kousek odtamtud. Pozor, silnice nevede až k nim a pak se nečekaně mění na hliněnou a není se kde otočit. Takže radši auto nechte u hlavní silnice a dojděte to pěšky.

Molinos De Villaverde

Museo del Queso Majorero

I když je na první pohled Fuerteventura suchá a pustá, tak tam chovají kozy majorero a z jejich mléka vyrábějí sýr (pod různými značkami). O historii a současnosti výroby sýra se dozvíte v muzeu sýra Museo del Queso Majorero. Za mě hodně zábavné a dobře zpracované. Součástí je i větrný mlýn a kaktusová zahrada, takže si na to nechte více času. Na ty kozy můžete narazit po celém ostrově i u silnice nebo na silnici, tak pozor.

Museo del Queso Majorero

Antigua a Pulido Alonso

Kavárnu Pulido Alonso už jsem předtím zmiňoval, ale ta v Antigua je pro nás speciální. Protože když jsme po druhém týdnu na Fuerteventuře jeli do Corraleja na trajekt na Lanzarote, tak jsme cestou zjistili, že máme zbytečně moc času a že bychom se cestou mohli stavit někde na kávu. A při cestě byla Antigua, kde jsme podle Google Map vybrali právě kavárnu Pulido Alonso.


Betancuria byla kdysi hlavním městem Fuerteventury. A kromě jiného tam je kostel s počátky už v 15. století. Zajímavostí je, že to tam funguje na podobném principu jako Karlštejn - po 17h tam je všecko zavřené. Kousek od Betancurie jsou na kopci sochy nějakých králů a fajn výhled do kraje.

Sochy nedaleko Betancuria

Vyhlídka u soch

Parque Natural Dune De Corralejo

Písečné duny nedaleko Corraleja. Zaparkovat se dá dobře na tomhle parkovišti. Pokud jste nikdy na písečných dunách nebyli, tak určitě doporučuji - je to super zážitek (další jsou třeba v Maspalomas na Gran Canarii). Nezapomeňte si vzít opalovací krém a něco na hlavu, protože to slunce tam je dost silné. Směrem ke Corrajelu je pak několik hezkých pláží. Nakonec jsme se tam nekoupali, protože když jsme přijeli, tak byla žlutá vlajka a než jsme vyndali věci z auta, tak ji plavčík vyměnil za červenou.

Duny Corrajelo

Jenomže to bychom nebyli my, kdybychom jenom zevlili na dunách. Místo toho jsme měli naplánovaný výstup na nedaleký kopec Montaña Roja. Záznam trasy jsem nahrál na Wikiloc. Když se na to podíváte, tak je vidět, že jsme zastavili až moc daleko - ale z auta to vypadalo, že je tam všude hrozně vysoký rantl a nechtěli jsme to auto zničit. Když jsme tam pak šli pěšky, tak na dvou místech to bylo na parkování OK, tak jsou v té mapě označené. Shora byl pak super výhled.

Montaña Roja

Salinas del Carmen

Sůl se získává buď v solných dolech nebo se taky dá usušit mořská voda, jako to třeba dělali a dělají v muzeu výroby soli Salinas del Carmen. Vnitřní expozice je pěkně zpracovaná, ale hlavně je součástí i venkovní část, kde si prohlédnete, jak to celé funguje.

Salinas del Carmen

Pájara a vyhlídka na FV-605

Co jsme občas dělali bylo, že pokud jsme měli čas, tak jsme místo nějaké hlavní silnice (FV-1, FV-2) vzali nějakou scénickou trasou přes kopce a vesnice (typu FV-605). Takhle jsme se stavili ve vesnici Pájara. Ta je zajímavá tím, že tam mají kostel ze 17. století, řeku, kde by se vám prášilo za kánoí a uprostřed kruháče místo fontánky sochu pána dojícího kozu.

Pájara - řeka

Pájara - socha dojiče

Pokud pojedete z Pájary na jih přes kopce po FV-605, tak cestou můžete zastavit na vyhlídce se super výhledem

Vyhlídka FV-605

Pozo Negro

Rybářská vesnice na konci silnice. Pláž s černým pískem a oblázky a dvě kavárny.

Faro de la Entallada

Faro de la Entallada je maják na útesu se super výhledem. Poslední úsek silnice je opravdu úzký a se svodidly tam docela šetřili, tak opatrně.

Faro de la Entallada

Mirador del Salmo

Vyhlídka Mirador del Salmo stojí za zastávku, pokud bude mít cestu okolo. Je to hned u silnice.

Pico de la Zarza

Pico de la Zarza (někdy také nazývaná Pico de Jandía) je nejvyšší hora Fuerteventury. Sice má jen 807 m. n. m., ale zas na ní stoupáte od nuly. Záznam trasy (15 km) najdete na Wikiloc. Na výstup jsme vyráželi v 9h ráno a naštěstí bylo chvílemi pod mrakem. Určitě si vezměte hodně vody a něco na hlavu, protože cestou je přesně nula míst, kde se dá schovat před sluncem. Auto jsme nechali zbytečně daleko, dalo by se docela dobře zaparkovat až tam, kde jsme se odpojili od silnice. Z vrcholu jsou super výhledy i na severní stranu ostrova.

Pico de La Zarza


Cofete je hezká pláž na severní straně ostrova. Kvůli silným proudům se tam nedá koupat. Jde tam buď dojet autem (pozor, je prašná cesta) nebo speciálním autobusem s pohonem 4x4 z Morro Jable. Vyjíždí z Estación de Guaguas (=autobusák). Je to linka L111 a pozor, bere jen 18 lidí, takže tam buďte dřív.

Cofete bus

Zpátky můžete jet buď tím stejným autobusem nebo se jako my můžete projít přes kopec (12 km). Trasu jsem opět dal na Wikiloc.

Cofete - cesta přes kopec

Islote de Lobos

Islote de Lobos je malý ostrůvek kousek od Corrajela, dá se tam dojet výletní lodí. Tohle je jediná věc z celého článku, kterou jsme si nechali na někdy příště, ale uvádím ji tu pro úplnost.


Na to, že jsme tam nebyli tak dlouho, jsme toho stihli hrozně moc. Hodně k tomu pomohlo to půjčené auto, protože jsme mohli jen i na krátký výlet později odpoledne, což by autobusem bylo mnohem komplikovanější. A těch 14 dnů bylo tak akorát, jinak by to bylo moc hektické.

Pokud se budete chystat na Fuerteventuru a budete mít více času, tak doporučuji alespoň týden z toho strávit na Lanzarote, tam je toho taky spoustu k vidění.

A pokud se chystáte do Las Palmas na Gran Canarii, tak mrkněte na moje tipy na výlety.

OutdoorVisit outdoor tours

Na Fuerteventuře se můžete naučit surfovat, jet na e-bike výlet nebo se podívejte na nejlepší outdoorové aktivity na Fuerteventuře.

<![CDATA[Use different Google Analytics ID by domain in Google Tag Manager]]> 2018-08-26T00:00:00+00:00 https://blog.martinhujer.cz/use-different-google-analytics-id-by-domain-in-tag-manager/ When setting up Google Analytics (or Facebook Pixel) in the Google Tag Manager the typical approach is to put the UA-code or the Pixel ID into the Constant Variable. And that ID is then used in the GA/Facebook Tag.

But soon after launch the people from Marketing will start complaining that some strange orders and conversions are appearing in the Google Analytics.

What happened? Apart from real orders, also the orders made in testing and dev environments are sent there.

There is a better way. You can easily use different UA codes in production and in testing environments. In the rest of the article I will guide you through setting it up.


It is clear that we want to use testing UA code in dev/test environments, but apart from that we also want to use it when testing the Google Tag Manager configuration itself with Preview feature (even on production website).

The decision process for the UA code goes like this:

  • Are we running in Debug mode?
    • YES: use test ID
    • NO:
    • Are we on production domain?
      • YES: use real ID
      • NO: use test ID


  1. Go to Google Tag Manager and create two Constant Variables:

    • GA_ID_DEV with the testing ID
    • GA_ID_PROD with the production ID
  2. In the Variables section in Built-In Variables enable Debug Mode and Page Hostname variables.

Setting up the hostname detection

  1. Create a Variable of type Lookup Table and name it GA_ID_BY_HOSTNAME
  2. Input Variable is {{Page Hostname}}
  3. Click Add row
  4. Put your production domain into the Input field (just the domain without https:// and the trailing /)
  5. Put {{GA_ID_PROD}} into the Output field
  6. Check Set default value checkbox
  7. Put {{GA_ID_DEV}} to the Default value field

It should look like this: GA_ID_BY_HOSTNAME variable configuration

By defining only the production domain and using default value for anything else, we handle any testing or dev environment.

Setting up the Debug environment detection

If you look back into the Analysis chapter, we have covered the Are we on production domain? part. Now we will cover the Are we running in Debug mode?.

  1. Create a Variable of type Lookup Table and name it GA_ID
  2. Input Variable is {{Debug Mode}}
  3. Click Add row
  4. Put true into the Input field and {{GA_ID_DEV}} into the Output field
  5. Click Add row again
  6. Put false into the Input field and {{GA_ID_BY_HOSTNAME}} into the Output field

It should look like this: GA_ID variable configuration

You might have noticed that we have used the variable GA_ID_BY_HOSTNAME which we prepared in previous step.

Setting up the Google Analytics Tag

With all those variables prepared, you can set up the Google Analytics tag as usual. But when creating the Google Analytics Settings, put {{GA_ID}} into the Tracking ID field as in the following picture. It will be resolved to correct UA code depending on the environment.

Google Analytics Settings variable

That's it!


Apart from Google Analytics ID, you can use this guide to set up Facebook Pixel ID or any other system where you can easily create different IDs for different environments.

Are you using similar approach? Or did you find a better way? Let me know in the comments!

<![CDATA[Consistence brings consistency to the PHP]]> 2018-02-06T00:00:00+00:00 https://blog.martinhujer.cz/consistence-brings-consistency-to-the-php/ In the article I describe the Consistence library that aims to bring consistency to PHP applications.

There is no argument, that PHP can sometimes be a bit inconsistent about naming stuff and maintaining order of parameters for related functions. Also, in some cases it is not strict and allows you to use the language and the functions in a wrong way. Sometimes you get false as a return value where an exception would be appropriate.

I really like the idea of code being strict because it prevents errors in the application. E.g. strpos usually returns int, but it returns false when the $needle was not found. It would be much better to throw SubstringNotFoundException in that case.

Consistence provides opinionated strict wrappers with better error handling and consistent naming and consistent parameters order.

Disclaimer: I haven't created the library, but I find it useful and I hope you will as well. It is one of the packages I use on every project.

Let's dive into it.

Use Enums for better type safety

It's a good practice to use constants instead of passing magic numbers (or magic strings) around. But you still pass them as a string, so there is nothing that prevents you from passing any other arbitrary string:

class BodyType
    const SUV = 'suv';
    const COMBI = 'combi';
    const HATCHBACK = 'hatchback';
    const CABRIO = 'cabrio';
    // ... 

function createCar(string $bodyType) {
    // do something with $bodyType

$car = createCar(BodyType::CABRIO);
$car = createCar('doubledecker'); // unexpected things can happen

Consistence provides an enum implementation. When you extend the class from Enum, all constants are automatically treated as possible enum values:

class BodyType extends \Consistence\Enum\Enum
    const SUV = 'suv';
    const COMBI = 'combi';
    const HATCHBACK = 'hatchback';
    const CABRIO = 'cabrio';
    // ...

function createCar(BodyType $bodyType) {
    echo $bodyType->getValue(); // you can use `getValue()` method to access the internal enum value

// use get() to get an instance of enum
$cabrioBodyType = BodyType::get(BodyType::CABRIO);

// It is a regular class instance
var_dump($cabrioBodyType instanceof BodyType); // bool(true)

// You always get the same instance, so you can compare them
var_dump(BodyType::get(BodyType::CABRIO) === BodyType::get(BodyType::CABRIO)); // bool(true)

// Type-hint checks work as expected
$car = createCar($cabrioBodyType); 

// Argument 1 passed to createCar() must be an instance of BodyType, string given
$car = createCar('doubledecker'); 

Enums also make it easier to write an actual code. Compare the following examples. When you want to instantiate the class from the first one, you have to dig into the documentation to check what are the allowed values:

class Car
    public function __construct(
        string $bodyType,
        string $transmissionType,
        string $engineType,
        string $fuelType

In the second one, you just start typing BodyType::get(BodyType:: and then choose from the suggested values:

class Car
    public function __construct(
        BodyType $bodyType,
        TransmissionType $transmissionType,
        EngineType $engineType,
        FuelType $fuelType

There are Doctrine and Doctrine + Symfony integrations which allow you to use Enums in Doctrine entities:

use Consistence\Doctrine\Enum\EnumAnnotation as Enum;
use Doctrine\ORM\Mapping as ORM;

 * @ORM\Entity()
class Car
     * @Enum(class=BodyType::class)
     * @ORM\Column(type="string_enum")
     * @var BodyType
    private $bodyType;

    public function __construct(BodyType $bodyType)
        $this->bodyType = $bodyType;

    public function getBodyType(): BodyType
        return $this->bodyType;

If you need to represent multiple values, have a look at the MultiEnums.

If the Consistence only provided the Enums, it would be enough reason for me to use it.

Use ObjectPrototype to disable magic methods

In PHP you can write to undefined object properties. If the property is not defined and you assign a value to it, it is created in runtime.

I think it is a bad idea because it can hide subtle bugs and typos. Consider the following example, where I made a several mistakes in the code, but PHP almost did not complain.

class MyClass
    public $foo;

$a = new MyClass();
$a->boo = 'bb'; // I made a typo, but PHP is fine with that

var_dump($a->foo);  // NULL
var_dump($a->boo);  // string(2) "bb"
var_dump($a->otherProperty);  // Notice:  Undefined property: MyClass::$otherProperty

If you want a more real-world example, consider this:

$finalPrice = $product->price * $customer->distountRate;

There is a typo in a property name, so the $finalPrice would be 0, because undefined property has null value which is converted to 0 and used in multiplication.

Consistence provides a straightforward way to mitigate this type of bugs. There is an ObjectPrototype class which you can extend your classes from. If you try to assign or read something from an undefined property, an exception is thrown. Calling undefined methods throws an exception too. Those exceptions are not meant to be caught, but they should be fixed directly in your code.

class MyClass extends \Consistence\ObjectPrototype
    public $foo;

$a = new MyClass();
$a->boo = 'bb'; // throws Consistence\UndefinedPropertyException

var_dump($a->foo); // NULL, but that does not matter, an exception would be thrown before
var_dump($a->boo); // throws Consistence\UndefinedPropertyException
var_dump($a->otherProperty); // throws Consistence\UndefinedPropertyException

$a->foo(); // throws Consistence\UndefinedMethodException

You're probably thinking, that using a base class for all classes is an awful code-smell!

I agree in general, but this case is different. If you consider the Consistence library to be an extension or augmentation of the standard PHP library, ObjectPrototype class is more like Object base class in Java. And nobody complains about it there.

The unseen advantage of this is that when you extend ObjectPrototype, you can't extend anything else, which is a good thing. You should be using composition as a code reuse mechanism anyway. In cases when the inheritance makes sense, you can use ObjectMixinTrait which enables the strict behaviour. Good example are the exceptions (they are objects too!):

class MyCustomException extends \Exception
    use \Consistence\Type\ObjectMixinTrait;

$exception = new MyCustomException();
$exception->foo = 'a'; // throws Consistence\UndefinedPropertyException

Speaking of exceptions, there is a PhpException which can be used as their base class. It has a shorter constructor without the mostly useless $code argument.

Strict type checking

PHP type-hints are powerful, but there are still a lot of things they can't check. You can put the detailed type info into the PHPDoc, but it is ignored at runtime. It only helps other developers and the IDE to better understand the code.

In the following example, IDE understands that the array contains int values, but PHP only checks that it is an array:

 * @param int[] $data
function foo(array $data)

foo([0, 1, 2]); // OK,
foo(['0', '1', '2']); // OK
foo(1); // not OK: Argument 1 passed to foo() must be of the type array, integer given

You can use Type class to manually check that the variable contains expected type:

use Consistence\Type\Type;

 * @param int[] $data
function foo(array $data)
    Type::checkType($data, 'int[]');


foo([0, 1, 2]); // OK 
foo(['0', '1', '2']); // throws Consistence\InvalidArgumentTypeException: int[] expected,  [array] given

Type::checkType() throws an exception when the type-check fails. If you want to throw the exception yourself, you can use Type::hasType($data, 'int[]') which returns boolean value.

Here are some examples what else you can use as an expected type:

  • object: useful in < PHP 7.2
  • Union types: int|string or int[]|string[]
  • Collection of objects: Product::class . '[]'
  • Array keys type: int:string[] (array of string values indexed by int keys)

Consistent array manipulation functions

Standard PHP functions for array manipulation aren't very consistent or strict:

  • most of them are not using strict comparison - they do automatic type conversion
  • most of them do not accept callbacks to create more complicated logic
  • some accept the source array as first parameter, some as a second parameter

Consistence provides several array manipulation functions in the ArrayType namespace. Let's have a look at the examples.

In the first example you can see how the implicit type conversion in in_array function can lead to unexpected results:

use Consistence\Type\ArrayType\ArrayType;

$data = ['1', '2'];

// automatic type conversion
in_array('1', $data); // bool(true)
in_array(1, $data); // bool(true) <- unexpected result!
in_array(true, $data); // bool(true) <- unexpected result!

// strict flag set to true
in_array('1', $data, true); // bool(true)
in_array(1, $data, true); // bool(false) <- works as expected
in_array(true, $data, true); // bool(false) <- works as expected

// ArrayType::containsValue() works as expected by default
ArrayType::containsValue($data, '1'); // bool(true)
ArrayType::containsValue($data, 1);  // bool(false)
ArrayType::containsValue($data, true);  // bool(false)

In this case you can get away with just making sure to always add true as a third parameter.

The code gets more complicated when you need more complex logic, e.g. you want to check if the array contains a value larger than 3. You can iterate through the array and determine if some value matches the condition:

$data = [1, 2, 3, 4];

$result = false;
foreach ($data as $value) {
    if ($value > 3) {
        $result = true;
var_dump($result); // bool(true)

Consistence provides more succinct way of doing it with containsValueByValueCallback(), where you only need to write the actual business logic and not the repetitive boilerplate code:

use Consistence\Type\ArrayType\ArrayType;

$data = [1, 2, 3, 4];

$result = ArrayType::containsValueByValueCallback($data, function (int $value) {
    return $value > 3;

var_dump($result); // bool(true);

I often use array filtering by callback:

use Consistence\Type\ArrayType\ArrayType;

$data = [1, 2, 3, 4];

$result = ArrayType::filterValuesByCallback($data, function (int $value): bool {
    return $value > 2;
var_dump($result); // [3, 4]

And mapping values by callback:

use Consistence\Type\ArrayType\ArrayType;

$data = [1, 2, 3, 4];

// map values using callback
$result = ArrayType::mapValuesByCallback($data, function (int $value) {
    return $value * 2;
var_dump($result); // [2, 4, 6, 8]

Sometimes it may be convenient to use filterByCallback() and mapByCallback() that pass both key and value to the callback function (they use the KeyValuePair value object internally).

Did you know, that array_unique() is always comparing loosely? Therefore, I prefer to use strict ArrayType::uniqueValues():

use Consistence\Type\ArrayType\ArrayType;

$data = [1, '1', true];

var_dump(array_unique($data)); // ['1']
var_dump(ArrayType::uniqueValues($data)); // [1, '1', true]

Last thing I want to show you regarding the arrays is the find/get convention. If the method name starts with find (e.g. findValue()), it can either return the value or null. But if the method name starts with get (e.g. getValue()), it either returns the value or throws an exception.

use Consistence\Type\ArrayType\ArrayType;

$data = [1, 2, 3, 4];

// we want to get a value at key

ArrayType::findValue($data, 3); // int(4)
ArrayType::findValue($data, 5); // null

ArrayType::getValue($data, 3); // int(4)
ArrayType::getValue($data, 5); // throws ElementDoesNotExistException

And there is more, have a look at the available methods for yourself.


This chapter is going to be a short one. Consistence provides a preg_match wrapper with more sensible API and exceptions error handling:

use Consistence\RegExp\RegExp;

// you can either check if the string matches the pattern
RegExp::matches('abc', '/bc+/'); // bool(true)

// or get the matches back
$matches = RegExp::match('abcde', '/[b-d]+/');
var_dump($matches); // ['bcd']

PHPStan integration

There is a static analysis tool called PHPStan (you can read more about it in Ondřej's blogpost.

I have created PHPStan rules for the Consistence library. There is one which checks that the class extends ObjectPrototype or uses ObjectMixinTrait. And second which checks that you are using safer Consistence array manipulation functions instead of the plain native PHP ones.


In the article I've described the most interesting parts of the Consistence library. My favourite are enums and strict types everywhere.

If you are not using the Consistence library yet, give it a try!

<![CDATA[Málaga - co vidět a kam na výlety? Podruhé.]]> 2018-01-27T00:00:00+00:00 https://blog.martinhujer.cz/malaga-podruhe/ Letos v lednu (12. - 26.1.) jsem znovu vyrazil do Málagy za teplem. Našel jsem spoustu dalších zajímavých věcí, které stojí za to navštívit. Navazuji na předchozí článek o Málaze, takže si určitě pročtěte i ten.

Noční Málaga


  • Uber v Málaze nefunguje, ale můžete místo něj použít Cabify.

  • Ve městě jezdí spoustu autobusů, spoje jdou vyhledávat v Google Maps. Nejpohodlnější je koupit si kartu na autobus (€1.7) a dobít si 10 jízdami za €8.30. Kartu jsem kupoval v prodejně v centru.

  • Teoreticky by na tu kartu na autobus mělo jít za €5 aktivovat možnost půjčování kol Malagabici. Nedá se to vyřešit v té prodejně v centru (kde jsem kupoval kartu), ale je potřeba dojít do kanceláře na Estación de María Zambrano. Jo a prý tam jsou asi jen do 15 h (nemám vyzkoušeno).

  • Z letiště i zpátky na letiště jsem jel vlakem, lístek stojí 1.8€. Zpátky jsem letěl v 7:00 ráno s Ryanairem a v pohodě stačilo jet vlakem v 5:20. Pokud byste chtěli větší rezervu, tak bych doporučoval to Cabify.

Co navštívit

Enflish Cemetery

  • Museo de Málaga - parádní muzeum. V prvním patře umění (vynechal jsem), v druhém patře archeologie (super). Vstup zdarma, zavřeno v pondělí.

  • Parque de Málaga - park v centru, víceméně je to botanická zahrada s fontánkami.

  • Parque del Oeste - obrovský park v Huelinu, je v něm obrovské jezírko s fontánou a želvami, palmy, papoušci, pštrosi a tak.

Parque del Oeste

  • Plaza de toros de La Malagueta - býčí aréna, myslím že se tam něco děje jen v srpnu. Zvenku to moc zábavné není. Ale je na ní super výhled shora. Viz další tip.


  • Mirador de Gibralfaro - na tuhle vyhlídku narazíte cestou na Castillo de Gibralfaro. Je z ní super výhled na město, moře i arénu. Zajímavost je, že většina lidí, co tam dorazí, se nejdříve otočí zády a fotí selfie místo toho, aby se koukali. Z vyhlídky kromě přímé cesty na hrad vede i trošku okružní turistická, odkud je ještě lepší výhled na Malaguetu než z té vyhlídky. A cestu na hrad to prodlouží jen o pár set metrů. Tady místo Google Maps doporučuji offline Mapy.cz, kde je zanesená i tahle turistická trasa.

  • Mirador de Alcazaba - vyhlídka před Alcazabou. Jde se tam po schodech za vlevo za vstupem do Teatro Romano. Zadarmo.

  • Teatro Romano - římský amfiteátr. Má docela zajímavou historii, objevili ho až někdy v půlce 20. století, když dělali terénní práce u dostavěného Casa de Cultura. Ten nakonec zbourali (v roce 1995), protože zjistili, že kus toho amfiteátru je pod ním. A Teatro Romano otevřeli k prohlídkám až v roce 2011.

  • Alcazaba - arabská pevnost, hezky zachovalá. Vstupné myslím 2.5€.

  • Mercado de Huelin - trh s ovocem, zeleninou, masem, rybami a mořskými plody. Typicky tam chodí jen místní.

  • La Taberna del Pintxo - tapas bar, kde hlavní roli hrají "Pintxos" (čti pinčos). Jsou to vlastně obložené chlebíčky, ale hodně vymazlené. A mají "párátko". Funguje to tak, že si sami chodíte na bar a vybíráte si z nabídky chlazených. A zároveň nosí z kuchyně tácy s teplými pintxos, prochází mezi stoly a pokud chcete, tak si nějaké vezmete. A při placení vám spočítají, kolik máte "párátek". Jo a mají tam na výběr i minidortíky.

  • Santa Canela Café-Crepería - výborná hipster kavárna ve centru. Kromě standardních espressových káv umí i různé filtrované (Chemex, V60, aeropress). A mají v nabídce i různé druhy kávy (zrnek).

Kavárna Santa Canela

  • El Último Mono Juice & Coffee - dobrá káva v centru. Nabízejí i smoothie apod.

  • La Esperanza de los Ascurra - jedna z mnoha restaurací. Tuhle doporučila Airbnb hostitelka z bytu, kde bydlela ségra s partou, když přijeli na víkend do Málagy. Mají fajn nabídku mořských plodů (třeba chobotnici - pulpo). Takže pokud stejně jako já máte problém si vybrat kam jít, tak můžete třeba sem.

  • Café Club Carambuco - fajn kavárna v Huelinu. Mají dobrou kávu, zapečené bagety a taky různé dortíky, byl jsem tam několikrát.

Café Club Carumbuco

  • Desembocadura del Guadalhorce - epická přírodní rezervace s mokřady. Mají tam dokonce pozorovatelny na sledování ptáků. Za mě jedna z top věcí v Málaze. Akorát to je trochu daleko a cestou si trochu zajdete, protože tam kde by se to hodilo, není most. Opět doporučuju Mapy.cz, kde jsou vyznačené i jednotlivé pozorovatelny. Nejlepší byla Observatorio Laguna Grande.

Výhled na lagunu v Desembocadura del Guadalhorce

  • Monte San Antón - baví mě najít nějaký kopec a vylézt na něj. Tady jsem našel jeden, na který se dá docela hezky dojít, je to jen 500 výškových metrů. Dojel jsem autobusem dole pod kopec a vyšlápnul si to nahoru. Část cesty je skrz hodně pěknou vilovou čtvrť. Nahoru a dolů mi to zabralo 3 h včetně půlhodinové svačiny a rozhlížení se nahoře. Cestou se jde skrz hezkou vilovou čtvrť. Prý je to top místo, kde se dá v Málaze bydlet, domy stojí od milionu eur výš. Záznam trasy na Wikiloc. (na fotce je výhled na Málagu)

Výhled na Málagu ze San Antón

  • Restaurante Hermanos Muñoz - když jsem sešel dolů z kopce, tak jsem dostal chuť dát si něco dobrého. Vybral jsem tuhle restauraci a bylo to super. Měl jsem rosadu, což je nějaká ryba. A hlavně jsem zkusil espeto de sardinas, což jsou sardinky pečené na ohni napíchnuté na tyčce. Jí se tak, že oloupete maso z obou stran páteře (jí se i ta opečená kůže) a necháte hlavu, ocas a páteř.

Sardinky - before

Sardinky - after

  • Chiringuito je obecný název pro restauraci/stánek s jídly z ryb a mořských plodů u pláže. Ty sardinky typicky mají ve všech.

  • Merendero Casa Jose - chiringuito, kolem kterého jsem šel nekolikrát, takže jsem si tam poslední den zašel na oběd. Měl jsem grilované krevety a pak ještě sardinky a bylo to moc dobré. A domluvíte se tam i anglicky (já tedy mluvil španelsky, ale pak přišli nějací turisti a jeden číšník si to anglicky dával dost dobře).

Krevety v Merendero Casa Jose

  • Primark - naschvál jsem si sebou vezl méně triček a radši jsem si koupil čtyři jednobarevná bavlněná v Primarku po 2€ za kus.

  • Decathlon - stejně tak jsem si sebou nebral tepláky na doma a koupil jsem si je tady v Decathlonu. Plánoval jsem si totiž stejně pořídit nové a takhle je povezu jen jednu cestu. Jo a funguje tu Decathlon kartička z českého Decathlonu (díky Portmonka).

  • Informační centrum v centru - doporučuji si dojít pro mapu, kde jsou vyznačené různé památky, případně si nechat něco doporučit. Ale s Google Maps si klidně vystačíte.


  • od 22 h do 8 h se nesmí prodávat alkohol jinde než v restauracích a barech. Takže by vám večerce neměli prodat láhev tvrdého. Neměli by.

  • Pokud budete v Málaze poprvé, tak můžete vyzkoušet nějakou free guided tour. Obecně to funguje tak, že si nějakou najdete, zúčastníte se a pak jim něco zaplatíte podle toho, jak jste byli spokojení. (nemám vyzkoušeno)

  • Jedno odpoledne se ze slunečného dne během chvíle udělala hustá mlha. Hledal jsem a říká se tomu mlha Taró.

  • Výběry z většiny bankomatů stojí kolem 2€ navíc se zahraniční kartou (i s Revolut kartou). Ale kupodivu Unicaja je má (zatím) zdarma, takže hledejte tu.