DIY Modded Skyblock

In this post, I will give some pointers how you can make a skyblock modpack/game yourself.

I will use the classical SkyBlock map for basics, it is a very basic map with few dirt and few sand block, two chest, and one bedrock. It sounds great, well? Also this article tells you about playing under Minecraft 1.7.10 and only with that. I will describe some mechanics too what is mostly works with older/newer versions of the game but mods that I describe is choosed from 1.7.10 modpacks.

Anatomy of the skyblock

The first thing what we have to consider is SkyBlock is not prepared to provide a modded Minecraft experience. It is a vanilla skyblock survival map without any support for creating non-vanilla items or blocks. Both Overworld and Nether are an empty dimensions, Nether will spawn a Nether portal if you reach it, but that’s all. What does it means?

  • We do not have any worldgen. And under worldgen I not only mention just ores, minerals and special soil blocks (podzol, mycelium, etc.) but flowers, trees, dungeons, and some other things.
  • We do not have any mobs. Nor hostile, nor passive mobs. Vanilla mobs are mostly spawnable, they can spawn automatically if neccessary environment is provided or they’re “craftable”, so you can spawn them manually (like wither).
  • Because the points above, we have a very limited possibility to access mod-provided things. Mods that using vanilla metals and minerals are usable (except valuable things like diamond, emerald, glowstone and redstone) but nothing else. Also we have a very limited access to mod-provided mobs, especially if they’re not spawn naturally but generated during the world generation (like Witchery’s Coven Witches, villagers, etc.)

In the following points, I will describe how can we break out from these restrictions with few, well-choiced mods.

Enhanced vanilla experience

Some people does not want much more than vanilla can provide. They’re happy with killing zombies and creepers, growing plants for food, growing trees for building.

However, skyblock maps have some limits what can affect the fun of the game. First thing is the old respawning bug with SkyBlock map.

If you do not play under Hardcore, and die on the SkyBlock, the respawning could be tricky, because you have a big chance to spawn above the void as the starting dirt island is very-very small and game may or may not able to find it.

The mod I recommend you to solve it is the AdminCommandsToolbox. It provides a small set of commands to help you in working with normal maps but we install it only for one command: /setspawn. We can pass a block-based coordinate for this command (that you can see in F3 screen) to set your spawn point regardless you have or do not have a bed. With this command you can avoid the “falling loop” and you can spawn exactly where you set your spawnpoint. As I know it does not override the mechanic how beds are working but if your bed is vanishes/breaks, you’ll spawn on the specified point.

The second thing can frustrate you is the very basic abilities of vanilla to work with inventories. If you already played with some modpacks you may love how you can collect things from crafting tables, how to pick/put items one-by-one from/into inventories or just sorting the content of your chests.

The mod what is powerful enough to provide these functions is the InventoryTweaks. In skyblock maps, I recommend you to turn on the function what provides items automatically to your hand, for example replaces broken pickaxes with a new one. The config file is describes how you can do it but as I know the default setting is ‘on’.

The last thing is the recipes. There is a very few people who can remember all recipes, including vanilla ones if they’re not used in everyday. For example, can you recite how boosted tracks or dropper can be made without checking it in the wiki?

There is two mods what can provide a help you, the NotEnoughItems and the TooManyItems. These mods provides a sidebar at right side of the inventory screens there you can browse all existing items/blocks in the game and you can check their recipes (NEI also provides a way to check usage of the item in other recipes).

If you want a vanilla experience, you can choose any of them. Both NEI and TMI can serve the vanilla recipes effectively, so the choice is depends only on your taste.

However, if you want include other mods into the game, I strongly recommend you to use NEI. It became an industrial standard in modded Minecraft world, most mods (if not all) provides multiple different integration with NEI.

Keep in your mind, NEI requires CodeChickenCore mod, do not try use NEI without that.

Semi-vanilla experience

In this section I recommend mods that mostly do not require materials which is not obtainable in the vanilla skyblock.

If you want more foods than available in vanilla Minecraft, I recommend you to try out Pam’s Harvestcraft, especially with Spice of Life. The former provides a much more plantable food sources (seeds are obtainable via bonemealing grass block and punching tall grass) with some enhanced processing mechanic, the latter one enforces you to eat different foods via drastically decreasing the saturation of the overused foods.

The only thing you can not use in skyblock is the soybean because it requires a presser for getting tofu, and presser is built from two pistons. The redstone dust is unobtainable or very hard to obtain in skyblock (witches can drop it, but there is a very small chance to spawn witch in a non-swamp and non-magical biome). However, all other tools are made from iron, wood and stone, so it’s very easy to craft/use them. It also does not use gold, so you do not enforced to travel to the Nether if you do not like it.

The last mod in this section I recommend is the Chisel mod. One stick and one iron and you can make very beatiful buildings from cobblestone and oak planks. Definitely worth it!

Modded experience

For modded experience the first problem we face with is lacking modded metals and minerals. In vanilla skyblock you can obtain iron (from zombies) and gold (from zombie pigmen) and some coal (from wither skeletons), but nothing else. No redstone, no diamond, no emerald. And nothing modded metal, like copper or lead.

There is only one mod to help us: the Ex Nihilo mod. If you played with Agrarian Skies or just watched a video from it, you can remember to the sieve that you can use from obtain ore-like stuffs from sand or gravel, a hammer to make gravel/sand/dust from cobblestone and the small silkworms that can infect leaves to make string obtainable more easier than killing spiders.

Unfortunatly, there is no Ex-Aliquo for 1.7.10 yet, so Thaumcraft integration is really missing, there is no shards available and as I know quicksilver cannot obtained via sifting sand.

As I wrote in the introducion, there is no worldgen in the skyblock. You can now spawn some things manually (mobs, seeds, metals and minerals) but for example Botania flowers are missing, Witchery witches does not spawn naturally, and dungeon loot chests - where you can obtain some uncraftable resources - are completely missing. I encourage you to add some mods that provide Overworld-like dimensions, for example Twilight Forest or some mining worlds, so the mods become able to spawn their worldgen-based stuffs. The best two mod for this task is the Twilight Forest and the Mystcraft. Twilight Forest adds some adventures too, so if you’re bored in harvesting cobblestone or sifting sand, you can jump over to that dimension and kill a Naga or just fight with kobolds for a bite of wheat.

Final words

I think nobody assumes how SkyBlock map powerful is and how much possibility are hidden in that. It can keep your interest up with providing different ways to obtain resources than usual. In a void world, you have to plan how you want to build your base, how you can organize your stuffs. It helps you to think out of the boxes where you always close yourself.

Missing quests and quest rewards makes obtaining rare or uncraftable resources very hard, but with good balancing you can get not only additional dimensions but additional fun too. Twilight Forest makes it hard enough to provide a way to enjoy finding valuable resources and keeps you out the boring
“explore mineshaft/kill/loot” cycle. MystCraft worlds are usually hard to live, and if you’re unlucky enough to get some decay in the world, you can run for your life to avoid getting closed in an endless falling cycle.

If you want to try out something really different, try out skyblock worlds. Modded or vanilla - it depends on your taste but I recommend you to give a chance for both. Modded skblock is fun, and most modpacks can run a skyblock map (you only need Ex Nihilo to get additional ores) so you can try out your favorite modpack with a skyblock map.

Only one warning: keep in your mind, most mods and most modpacks are not balanced to live on a skyblock map. If you find it too hard, or do not enjoy finding a way to build things from a limited resources, keep away from skyblock maps because they require strong problem solving abilities.

The most importan thing is enjoy the game and not to suffer from it.

Have a nice game!

New scanner added successfully

I had to buy a new printer because my old Xerox Phaser stopped working and I got a horrible price for repairing it. After browsing the possible applicants, I found the Philips LaserMFD 6050 what have an automatic document feeder addon too. After unpacking it, I was happy because I found a driver CD with title “Mac & Linux” But I didn’t know the afternoon-long sucking will start.

At first place I want to make printer part working. After printing one of printer’s own test pages, I sat down behind my Gentoo box, and started figure out how can I introduce my new printer to Cups. The first step was easy, because it found a new printer-like device at USB port, but it had absolute no idea about the type.

After a lot of googling, i found it’s a dumb printer without PCL or PS knowledge, so I had to install ‘raster’ driver. The funny part is all Linux driver was 32 bit.

Fortunately, cups invokes parts of the driver via command-line (not via shared libraries like sane - see later), so I have very little debugging task with it. Ohh, and I have to patch it because Gentoo uses /usr/libexec for cups drivers, not /usr/lib what assumed by rastertoprinter script.

However, sometimes cups does not print the job at first try, I have to reprint it from the web interface - I didn’t guessed it why. This is a very small issue, so I marked this task completed.

Scanner part was more tricky. As I said, all drivers on the CD (and in the driver package what I downloaded from the internet) was for 32bit not for 64 bit systems. Sane’s backends are dynamic libraries, so there was no quick and painless way to add proprietary backend to my existing Sane install. As i browsed hopeless on the internet, I found a topic what said the drivers on the CD are for Ubuntu Gutsy (and works with Hardy too). This gave me an idea: what happens if I install a 32bit Ubuntu Hardy chroot?

To understand my idea you have to know Sane has a small inetd/xinetd daemon named saned and it can provide your scanner on the network. So you can connect from any (permitted) client to your server and scan even if your box is not connected to the scanner directly (e.g. via USB cable).

After emerging debootstrap, I installed Hardy into a simple /chroot32 folder, and added sane stuffs for it. I unpacked the provided sane backend into this chroot and sane finally recognized my scanner correctly. After some testing I configured saned with this xinetd config:

service sane-port 
  disable     = no
  socket_type = stream
  protocol    = tcp
  user        = root
  group       = root
  wait        = no
  server      = /usr/sbin/saned
  only_from   = ::1

I had to run saned as root because saned got permission denied otherwise. As it’s running in chroot and restricted to the local network, it has a very low risk.

Finally I can scan via XSane. Gimp is not allow me to scan from this device, but XSane is smart enough for me.

For bulk scanning i wrote a small bash script. It needs some love because it creates a pdf in the current working directory - but it’s good for start.

Gento - Para vagy nem para

Twitteren volt egy ilyen üzenetváltás:

@hron84: Kiprobaltam megint a #gentoo -t. Mar elfelejtettem, hogy mennyit kell varni egy firefoxra. […]

@team4world: @hron84 lehet én is kipróbálom. Mennyire parás egy frissítés?

@hron84: @team4world Ha mindenbol csak stabil verziot hasznalsz, akkor abszolut nem para. Ha elkezdesz a testing arch-csal ismerkedni, figyelni kell.

@hron84: @team4world Lehet este osszeszedek egy cikket az ajanlott konfigrol.

@team4world: @hron84 az nagyon jó lenne!

Itt tartunk tehát most. Nem aznap este lett ugyan összeszedve, de hát az “aznap” szó nem is szerepelt a twittben :-). Na jó, evezzünk komolyabb vizekre.

Előrebocsátom, hogy ez nem egy Gentoo tutorial lesz, nem fogok minden fogalmat elmagyarázni, csak a legszükségesebbeket. Ha nem értesz valamit, ott a Gentoo Handbook, ott a Gentoo Wiki, olvass utána. Ennek elsősorban terjedelmi okai vannak, a Gentoo-ról szóló irományokkal egy könyvtárat meg lehet tölteni (sőt, bizonyos értelemben ez már megtörtént), ez meg itt csak egy blog.

Para vagy nem para?

Nehéz kérdés, mert mindenkinek mást jelent a “parás”. Én, aki cirka 3-3.5 évet tuti lehúzott Gentoo desktop mellett, mást érzek parásnak, mint az, aki most adja ki élete első emerge parancsát. Szóval az első körös válaszom kicsit sántít, mert valójában nincs egzakt válasz a dologra.

Van, akinek para az, hogy egy Firefoxra - géptől függően - fél és két óra között kell várni. Nekem nem volt az, mert én ezzel már tisztában voltam, így a telepítés során előbb a Google Chrome-t tettem fel, és csak részben azért, mert az elmúlt két évben ez vált az elsődleges böngészőmmé, jobban belejátszott, hogy ez csak bináris formában van jelen (elérhető a Chromium is, forrásból fordul, de ezt még binárisan se szeretem, néha ugyanis bugosabb, mint a Chrome, nem tudom, miért).

Van, akinek para az, hogy több, ún. slot van, ami annyit takar, hogy egy adott nevű csomagból többféle verzió is lehet a gépünkön (gondoljunk a PHP-re, az 5.3 és az 5.4 az két különböző PHP-nak számít), és ha nem az alapértelmezett slot verziót szeretnénk, akkor célzottan kell telepíteni és maszkolni azt, amit nem szeretnénk (esetünkben én nem vagyok olyan nagy PHP 5.4 fan, akkor sem, ha a hardcore PHP-sok ezért megszólnak, szóval én hanyagolom azt a verziót).

Szóval hogy mi para és mi nem, az egyénfüggő. Nagyon fontos dolog, hogy a Gentoo egy teljesen más hozzáállást igényel, mint a legtöbb disztribúció. Ez elsősorban arra irányul, hogy pontosan tisztában kell lenned azzal, hogy mit és hogyan szeretnéd, valamint nagyon oda kell figyelned arra, hogy mit csinálsz. Ha valamit nem értesz, nem lehet elbliccelni, utána kell olvasni, át kell gondolni, sokszor. De cserébe egy végletekig testreszabható rendszert kapsz, és ez nagyon sokszor megéri.

Ajánlott hardverek

Töprengtem, hogy ne az legyen az alcím, hogy “Milyen hardvert ne vegyek”, de aztán arra gondoltam, hogy nem leszek ennyire destruktív.

Szóval, Gentoo esetében legyen egy jó procid, lehetőleg sok maggal, HyperThreading kiemelten jó, ha van és be is van kapcsolva. Minél több processzort listáz a /proc/cpuinfo, annál hamarább végzel a telepítéssel.

Legyen továbbá sok RAM-od. 2G RAM alatt eszünkbe se jusson Gentoo-t telepíteni! Tapasztalataim szerint 3-4G RAM az, amivel már tűrhető (pontosabban kivárható) idő alatt összeáll valami rendszernek már nevezhető tárgy.

A winyó kiemelten fontos. Nem csak a tárhely (a gyökérre lehet nyugodtan 30G-t szánni, meghálálja a rendszer, a home legyen külön partíció) fontos, de a merevlemez pörgési sebessége is. Ha 5400 RPM-es merevlemezünk van, ne egy bödön, hanem két bödön kávét készítsünk be. Ezt az infót szokás elrejteni a merevlemez címkéjén, vagy akár le is hagyni, így telepítés előtt mindenképp nézzünk el a Google felé, a merevlemez típusszámával, az első három találat a gyártó datasheetjére fog vinni, ha nem, tegyük hozzá, hogy ‘speed’. SSD felhasználók itt komoly előnnyel indulnak.

Mit rakjak fel?

Kezdőknél ez nagyon gyakori kérdés, és a kellemetlen élmények nagy része az ezen kérdésre adott rossz válaszokból adódik. Tisztában kell lennünk azzal, hogy a Gentoo egy forrásalapú rendszer, vagyis a bináris rendszerekkel ellentétben itt a legtöbb csomag a gépünkön, forrásból fordul, legyen szó a GCC-ről vagy a Gitről. Van néhány olyan csomag, ami elérhető binárisban is, vagy épp kizárólag abban mert a gyártó nem tette elérhetővé a szoftver forrását. Ez utóbbira példa az Adobe Flash playere, az előbbire pedig a LibreOffice, mert erről köztudott, hogy még erős gépen is fél nap egy fordítás.

Én az alábbi metodikát követem:

  • Először összerakok egy alaprendszert. Legyen konzolom, legyen egy friss és jól mőködő kernelem, Grub (1-es mert én azt szeretem), hálózatom, meg más effélék, egyszóval álljon meg a saját lábán a rendszer, ne kelljen hozzá LiveCD. Szerencsés esetben ez olyan 2 óra alatt abszolválható feladat, kezdőknek se sokkal több.
  • Következő lépés: Legyen egy alap grafikus felületem. Itt általában már felteszem a kérdést: most rögtön akarok a rendszerrel dolgozni, vagy van időm hogy mindent klappoljon? Ha az első a válasz, akkor mindenféle preferenciát figyelmen kívül hagyva, komolyabb USE flag állítgatások nélkül felszórok egy IceWM-et, egy Google Chrome-t, meg valami terminált, mondjuk XTerm-et. Ez nem eredményez összkomfortos rendszert, ennek csak az a célja, hogy miközben a ház épül-szépül, legyen hol dolgozni meg aludni. Amennyiben ráérek, átugrom ezt a pontot.
  • Ezután rá lehet térni a preferenciáknak megfelelő rendszer telepítésére. Először mindig az USE flag állítgatásokat kezdem el. Mivel én GNOME-fan vagyok, így a make.conf -ba mindenképpen bekerülnek a gnome, gtk, avahi flagek, ezen felül PulseAudio-ellenes vagyok, így a alsa és -pulseaudio is. Elég jó alapbeállításokat lehet szerezni az eseletc profile list kimenete alapján kiadott eselect profile set <szám> paranccsal is, ahol a <szám> a lista elemei mellett látható számot jelenti, kockás zárójelek nélkül. Sorrendileg először mindig a konzolos cuccokat szoktam felszórni, nem csak azért, mert ezek hamar fordulnak, hanem mert ezeket utána már tudom használni, amíg a grafikus cuccok születnek. A teljesség igénye nélkül egy kis lista:

    • flaggie: hasznos cucc a csomagonkénti USE flag es keyword állításra. Ezen felül tud licenceket is elfogadni, de én általában minden licencre rábólintok, mert így könnyebb az életem. A /usr/portage/licenses alatt lehet kultúrálódni egyébként.
    • portage-utils: újabban része a stage3 alaprendszernek. Hasznos kis utilityk győjteménye, a q --help parancs nagyon szolgálatkészen mutatja be őket egyenként.
    • eix: A Google helyi megfelelője :-). Alapvetően csomagkeresgélésre használható, részletes információkkal szolgál arról, hogy milyen csomagok érhetőek el a rendszerben. A kézikönyvekben ajánlott emerge --sync parancs helyett (ha már fenn van az eixmindig azeix-sync` parancsot használjuk, mert ez frissíti az eix adatbázisát is a sync végén, plusz ad egy kedves listát az új/frissült/törölt csomagokról. Ezt gondosan tanulmányozzuk.
    • gentoolkit: Szintén hasznos csomagkezelő gyűjtemény. Én egy parancsot használok belőle permanensen, a többit csak szükség esetén, ez pedig a glsa-check. Mind desktopon, mind pedig szerveren kiemelten fontosnak tartom ugyanis, hogy ne legyen fenn olyan csomag, melyben ismert sebezhetőség van. Egy idő után hajlamos az ember rászokni arra, hogy ha egy frissebb verzió bugos lenne egy adott csomagból, akkor a bugos verziót és afelettieket kimaszkolja, majd az egészet elfelejtse. Ilyenkor jó a glsa-check, ami figyelmeztet, hogy bizony-bizony abba a verzióba már találtak egy komoly bugot, és talán érdemes lehet megfontolni a frissítést.
    • eselect és pluginjei: maga az eselect szintén az alaprendszer része, a pluginjei pedig a legtöbb esetben a hozzátartozó csomaggal kerülnek fel. Az update-alternatives-nek felel meg, csak kissé okosabb és színesebb. Érdemes ismerkedni vele.
    • bash-completion: akinél a Tab billentyűről már lekopott a festék (mint nálam :-) ), annak kötelező elem. Konfigurőlni eselect-tel lehet, hogy mely kiegészítések legyenek engedélyezve. Figyeljünk, hogy alapértelmezés szerint per-user állítgatjuk ezeket, globális engedélyezéshez használjuk a --global kapcsolót.
    • mc: kell-e bemutatni a Midnight Commandert? Szerintem nem. Figyeljünk, hogy kapjon samba és sftp flageket valahonnan, különben félkarú óriás. A slang flag pedig a szép magyar felülethez segít hozzá minket.
    • nano: Ha mcedit pártiak vagyunk, akkor nem érdekes, ha vim/emacs pártiak, nézzünk rá erre a kis editorra, amíg kedvencünk fordul. Syntax coloring, keresés, vágólap… és egyszerő használat. Része az alaprenszernek.
    • sudo: sajnos nem része az alaprendszernek ez a kötelező kis program. Tegyük fel, alig van függősége.
    • layman: a külső csomagtárólók kezelője. Okosan paraméterezve rögtön feldobja a 3 legnépszerűbb verziókezelt is, függőségként.

    Ezután jön a grafikus rendszer. GNOME pártiként én a gnome-light csomaggal indítok, ez egy metacsomag, semmit nem telepít, csak függőségei vannak, mint egy rossz drogosnak. Viszont mindent felrak, ami egy alap GNOME desktophoz kell. Emellé érdemes beütemezni a xorg-x11 csomagot is, ami a grafikus felület megjelenítését szolgáló X11 szervert rakja fel. Figyeljünk arra, hogy ha sehol másutt nem is, de itt mindenképpen használjuk az emerge --ask vagy --pretend kapcsolóinak egyikét, hogy kiírja, mit telepítene. Azért fontos, mert első körben be kell lőni a videókártya és a beviteli eszközök típusát a make.conf -ban, és itt egész jó tippeket kapunk a lehetséges értékekről a xorg-drivers sorában. Ne feledjük, hogy a mínusz jel mindig kivonást jelöl, vagyis az nincs kiválasztva. Beviteli eszköznek általában a keyboard-ot, a mouse-t és az evdev-et szoktam választani (ez utóbbi mindenképp kell), tapipad mániákusok ne feledjék a synaptics-ot is kérni az eladótól a meglepetések elkerülése okán. Kell egy jó login manager is, GNOME esetében ez a GDN, bár én most LightDM-et raktam fel, csak úgy próbából. Nem rossz, de a GDM jobb.

    Most jövök rá, hogy KDE fanok is vannak itt. Nekik rossz hírem van: nem nagyon tudok mit ajánlani, mert ritkán vetemedek KDE használatra, mostanság ez a gyakoriság a sohához tendál. Asszem a kdebase-startkde csomag visz el az alaprendszerig, kdm csomag van, és a kde-l10n csomagtól lehet várni lokalizációt. A xorg-x11 pedig itt is kötelező elem.

    Figyeljünk arra, hogy amennyiben nem KDE desktop a cél, első két körben tiltsuk a qt4 USE flaget, mert ez magával hozná a Qt grafikus könyvtár telepítését, ami elég hosszadalmas móka. KDE-s álmok esetében viszont épp ellenkezőleg: engedélyezzük, méghozzá minél koraibb szakaszban, a KDE-s cuccok nagy része le fogja fikázni a rendszerünket, ha nincs mindenütt Qt támogatás.

    Grafikus cuccokra ajánlatok:

    • Porthole: Gtk alapú csomagkezelő, Debianon Synaptic-nak hívnak egy ehhez nagyon hasonló cuccot. Az USE flag kezelőjének használatát lehetőleg mellőzzük, a Ctrl+R megnyomására feljövő parancssorból használjuk a flaggie-t. Igy nem érnek meglepetések egy frissítésnél. KDE rendszerhez a Kuroo jobb, de a Kuroo4 fejlesztése még igen aktívan tart, nem tudom, mennyire stabil a cucc. USE flageket itt is inkább flaggie-vel, bár a régi Kuroo (a KDE 3-as) rendesen kezelte a package.use fájlt.
    • Gitg: Roppant hasznos cucc, ha Git-tel dolgozunk. Soronként stage-elhető commit és history tallózó segíti a munkát.
    • NetworkManager: furcsa, de nem alapértelmezett a telepítése. Desktopon, wifi-mentes környezetben nincs is rá szükség, laptopon viszont kötelező elem, a hálózati konfigokat másképp nem fogjuk tudni kényelmesen managelni. A hasonló nevő (csak végig kisbetős) USE flag beállítása szintén fontos. Régebben volt valami PolicyKites para, de úgy tudom, az már megoldódott, mert más disztróban is volt, és azokban már meg van oldva.


Ide jön az, amit első körben válaszoltam a kérdezőnek: ha mindig csak stabil cuccokkal dolgozol, akkor nincs para, a Gentoo fejlesztőknél elég szigorú a QA, ha nincs elég community visszajelzés a csomagről, akkor nem is lesz stabil. Viszont amíg van komoly hiba vele, szintén nem lesz az. Vagyis stabil csomag általában csak stabil dologból lesz. Néha előfordulnak csomagolói melléfogások, véletlen stabilnak jelölések, de ez szimpla emberi mulasztás, és nagyon-nagyon ritka, mindenesetre érdemes hetente ellátogatni a Gentoo főoldalára, és csekkolni a híreket.

Azért arra mindenképp figyeljünk, hogy legalább hetente egyszer futtassuk meg a frissítő parancsot (ez az emerge -DuNa world), célszerően hétvégén, vagy lefekvés előtt. Reggelre tuti végez. Ha nagyon nincs időnk, havinál ritkább frissítést akkor se ütemezzünk, különben nagyon sokat kell várnunk.

Para akkor szokott lenni, ha külső csomagtárolókból (layman) teszel fel testinges (~ arch-os, ez egy tilde jellel prefixelt architektúra nevet, pl. ~amd64 jelent) csomagokat. Nagy para meg akkor, ha nagyon bevállalós vagy, és kipróbálsz pl. live ebuildeket (közvetlenül verziókezelőből forduló csomagokat), vagy két csillaggal megjelölt unstable cuccokat (a live ebuildek egyébként ez utóbbiak részhalmazát képezik). Kezdőknek és középhaladóknak nagy ívben kerülendő terület ez.

A fenti parancsot használva néha megjelennek sárga USE flagek is a csomagok mellett. Ez azért van, mert a -N kapcsoló a USE flag frissülésekre is rámegy, ez ugyanis sokszor valamilyen plusz támogatást is jelent, verzióváltás nélkül. Bekapcsolt ccache mellett, ha csak kikapcsolt flag került be, a csomagok secc-pecc lefordulnak, ha van, akkor pedig gazdagabbak leszünk egy, az igényeinknek jobban megfelelő csomagnak (amennyiben az USE flageket a saját, és nem a szomszéd igényei alapján állítottuk be).

A frissítéseknél lehet azért trükközni. A -DuNa mindent felsorol, ami épp frissülni akar, de ha mondjuk nem akarunk egy Firefox forgatásba belekezdeni, akkor csinálhatjuk úgy is, hogy kézzel felsoroljuk a frissítendő csomagokat egy emerge -u1 parancs argumentumaiként, verziószám nélkül, kihagyva a Firefox-ot, egy későbbi időpontban frissítve azt.

Nagyjából ennyi lenne. Elég hosszúra nyúlt ez az írás is, nem véletlenül mondtam az elején, hogy könyvtárakat lehet megtölteni a Gentoo-ról szóló ismeret anyagokkal.

Rename Windows 8 Profile dir

So, I ran into a weird situation: when I installed Windows, I used Live account to create my user. In preview version of Windows 8 it created a profile dir based on the user part of e-mail address of the Live account, so from [email protected] it created an user hrgy with same profile dir. However, the final version is changed it to create account based on your first name, it was “Gábor” in this case. Notice the accented second letter.

The problem with folders containing non-ASCII char in its name is obvious: not all program can handle it correctly. It has a displaying problems in some apps, and some apps cannot create their files in this profile.

The fix was not so easy but I now describe required steps.

First if you do not have an another administrator user than you, then you have to create it. Windows 8 does not allow to log into the built-in Administrator account anymore, so you have to create one in Control Panel. It’s pretty straighforward and net contains a bunch of howtos for it, so I skip describing this step.

Now, log out from your account, and log in into the new one.

Start regedit and navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

In the subkeys (subfolders) find one what displays your old dirname in ProfileImagePath attribute. In my case the value was C:\Users\Gábor. Right click, edit and replace last part of the path to what you want to use.

Important: Even if world collapsing, do not log in into your own account (what being modified) until you finish these steps!

Then, you have to reboot into Safe mode. The easiest way is press Shift + F8 during boot. If you seeing the Windows splash displaying in “wrong” resolution then you are in Safe mode.

Important: you have to log in into the newly created admin account, not into your own one!

Then you have to rename your profile folder. Start a command prompt in Safe mode, and type following:

cd C:\Users
move old_name new_name

The old_name is the old name of your profile directory, the new_name is what you specified in RegEdit. In my case it was:

cd C:\Users
move Gábor hron

Now you are done! If you striclty follwed this tutorial, then if you reboot and log in into your account, you do not see any change, except the %USERPROFILE% environment variable carries the new name.

Note: I saw only one bug: iCloud Photo stream stored the full path of my Pictures folder in its database and I had to relocate it. It’s a bug in iCloud, not a Windows problem.

Disclaimer: This tutorial is tested by me but I do not guarantee anything. Take a backup from your important data before start doing this. I am not responsible if your data lose, you cannot login anymore or your kitten vanishes.

Nginx és PHP

Az előző cikkben alapszinten megismerkedtünk az Nginx-szel, valamint megtudtuk, mitől és miben gyorsabb, mint a kihívójának szánt Apache.

Ebben, és a következő cikkben azt vizsgáljuk, hogy hogyan tudunk egy PHP alapú site-t futtatni vele, például egy Drupal alapú portált.

Házi, magam sütöttem

A cím az utolsó betűig igaz - de csak addig. Pár hete (hmm… hónapja?) jártam-keltem a KÖKI Terminálon nyílt Tescoban, és nem tudtam elmenni egy fahéjas sütemény mellett, nevetséges áron volt, “Hamar kész” - hirdette a felirat. Naná hogy vettem.

Ma jutottam el odáig, hogy megint eszembe jutott (egy fenét, pár napja kerestem valamit a fagyasztóban és szembejött), mondom pocsékba ne vesszen már, megcsinálom.

Szóval, vettem egy nagy levegőt, meg egy még nagyobb tepsit (úgy értem, a levegőnél…) és belevágtam. A címke szerint 80 percet kell pihentetni, hát gondoltam, ez nem olyan betű szerinti dolog, hogy percre kellene betartani, ebédcsinálás előtt kiraktam, ebéd + pihi után álltam neki megcsinálni. Volt az 90-120 perc is, de ki számolja…

Aztán olyat mondott a címke, hogy vegyek sütőpapírt, borítsam a tepisbe, és utána rá a sütit. Na most nekem elég sokféle papír kószál itthon, sütőpapír az pont nem. Mivel már belevágtam (az ilyet nem szabad visszafagyasztani, mert elég undorító lesz utána) így a sütőpapírt kicseréltem alufóliára, mert az volt itthon. A csere egyszerű volt, tepsiből nem létező sütőpapír kidob, alufólia beterít.

A következő utasítás az volt, hogy 185 fokon kell sütni. Mivel nekem csak ilyen nempontos gázsütőm van, belöktem 5-ös fokozatra, és felhúztam az órát öt percre, ha nagyon elszaladna a ló, ott még lehet korrigálni mondjuk egy 4-es fokozattal. Kimentem, semmi extra, rápörgettem még 5-öt a kisvekkerre (a címke 10-12 perces sütést ír, de ez valami sablonból van, sosem vettem még olyan terméket, amit tényleg meg lehett volna csinálni ennyi idő alatt. A jobbik esetben nyers volt, a rosszabbikban… hát… érdekesen sötét).

Csörgésre lustán kiballagtam (+1-2 perc), megvizsgáltam úgy szemileg, meg megbökdöstem a kés hegyével, lagymatag és puha volt, szóval kollektív döntésként született, hogy kell neki még 5 perc. Kisvekker orrát megtekertem megint.

Miután megint egy cikk kellős közepébe csörgött bele a határidő, így úgy döntöttem, hogy egy életem, egy halálom, én bizony ezt nem fogom visszarakni a sütőbe, lett légyen akármilyen is az a sütemény. Végül nem volt szükség ilyen kemény elhatározásra, a süti magától is nagyon szép állagú lett, picit barna, de az nem baj.

Suti @ Tepsi

A kiszedéssel viszont megszenvedtem. Mondjuk úgy, hogy nem véletlen ajánlanak ehhez sütőpapírt, bár az is csak felezi a kiszedési időt, ellenben megkönnyíteni nem fogja. A fahéjas töltelék ugyanis elég ragaszkodó természetű, viszont engem annyira nem kedvel, inkább az alufólia iránt mutatott élénk érdeklődést. Végül több, mint 20 perces hősies küzdelem után rá tudtam beszélni arra, hogy egy rongyos, összetépett, ragacsos alufólia közel sem annyira vonzó, mint egy szép új kéztőrlővel leterített tiszta tányér.

Suti @ Tanyer


  • Kell venni egy tekercs sütőpapírt, akkor is, ha csak szökőévente egyszer támad ilyen ötletem. Mivel nem romlik meg, nem szagosodik meg, valamint alig foglal helyet, így mindenképpen megéri, főleg, mert elég sok időt megspórol.
  • Sose higyjünk a címkére írt sütési utasításnak vakon. Mindig ellenőrizzük szemileg a készülő termék állagát, mert azt a címkét Átlag Istvánné szül. Mindegy Jolán számára írták, nem pedig nekünk.

Ettől eltekintve ízre semmi probléma, a kicsit megkaramellizálódott alap pedig abszolút nem okoz problémát.

Rails pre-commit hook

I just created this small hook for my Rails projects. It helps me to make my codebase clean.

You can clone it at Gist

Gitiles Install Howto

I sucked a bit with Gitiles, Gerrit’s Gitweb implementation, because this project lacks an INSTALL file.

So, basically you have to do following:

  • First, check out of the source:

    git clone

  • After you cloned the source, compile it with Maven:

    mvn package -Dmaven.test.skip=true

Now, you got gitiles-war-1.0-SNAPSHOT.war in gitiles-war/target folder. Deploy it under your application server, in this case I put it to Jetty’s webapps folder.

  • Tricky part is coming: you will faced with an error message, what says some configuration options are missing. This is because you didn’t created any configuration file yet. By default, webapp searches its configuration in the webapp root folder, but - because jetty explodes this folder every restart, I decided to put it to some more persistent place. I am do not run any other thing under this Jetty than Gerrit and Gitiles, so I created the gitiles.config under Jetty’s etc folder:
    # Repositories placed here
    basePath = /srv/git/repositories
    # Do not check they are exported
    exportAll = true
    # This URL will be displayed as clone URL. DO NOT FORGET TRAILING SLASH!
    baseGitUrl = ssh://
    # Title of site (doh)
    siteTitle  = Gitiles -
    # I dunno why, but it is have to be configured.
    canonicalHostName =
  • The config file above is cool, but Gitiles still crying… yeah, because you have to tell where it should find that. To do this, you must export a System property I was very lazy, so I edited jetty.xml and before last closing tag I pasted this:
<Call class="java.lang.System" name="setProperty">
    <Arg><SystemProperty name="jetty.home" default="." />/etc/gitiles.config</Arg>

Nginx - Bevezetés

Ezen cikk a tervek szerint egy sorozat része lesz, amely majd szép lassan (ahogy időm engedi) kerül ki a blogra.

Lássuk tehát az első részt, mely - ahogy a cím is utal rá - egyfajta általános bemutatása lesz ennek a pici webszervernek.

Mi az Nginx?

Az Nginx neve az angol Engine X (X motor) kifejezésből származik, ejteni is eszerint kell, tehát ˈen-jən eks.

Magát a motort egy Igor Sysoev nevű srác fejleszti 2002 óta, a kód maga 2004-ben lett nyilvános. Az elsődleges cél egy pehelysúlyú, ugynakkor skálázható webszerver létrehozása volt, mely képes egy online tartalomszolgáltatónál felmerülő legtöbb problémával megbirkózni, például az ún. C10K problémával, a legtöbb akkori webszervernek ugyanis problémát okozott egyidejűleg több, mint 10 000 kapcsolatot kezelni.

Jelenleg az Nginx a világ harmadik legnépszerűbb webszervere, a 2012-es NetCraft felmérés szerint az összes mért oldal 12.07%-át Nginx segítségével szolgálják ki.

Az Nginx előnyei

De mi teszi oly népszerűvé ezt a furcsa nevű webszervert? Mi az, amiért egyre-másra jelennek meg leírások, tutorialok hozzá, ami a legbiztosabb jele egy termék népszerűségének?

Az egyik kétségtelen ok a gyorsaság. Az Nginx statikus fájlok kiszolgálásában és proxyként is sokkal nagyobb sebességgel szolgál ki elődjeinél. A mérései szerint - megfelelő gép mellett - az átlagos 70000 req/s simán elérhető vele.

Ennek az egyik oka az, hogy az Nginx nem feltétlenül forkol mindig külön processzt vagy szálat az új kapcsolatoknak, ahogy pl. az Apache egyes feldolgozómoduljai (prefork, ITK) teszik, sőt erre nincs is szüksége, mert eseményalapú a feldolgozása, így nem csak több kapcsolatot, de több eseményt is le tud egyetlen feldolgozó szál kezelni. Ennek köszönhető egyébként az is, hogy hasonló terhelés mellett a memóriaigénye messze elmarad a klasszikus webszerverekétől. Erről bővebben itt lehet olvasni.

A másik oka az, hogy az Nginx sokkal agresszívebben cachel a memóriában az elődjeinél. Megfelelő konfigurálás és többé-kevésbé fix (nem, vagy ritkán változó) tartalom mellett elérhető az, hogy gyakorlatilag a memóriából történjen a kiszolgálás.

A pufferelés egyébként nagyon sokrétűen konfigurálható, ugyanakkor nem a legkönnyebben emészthető téma.

Előnye még a jó minőségű dokumentáció. A legtöbb modulnak nagyon részletes dokumentációja van, néhány konkrét használati eseteket is bemutat, mely teljes biztonsággal átvehető egy az egyben a saját konfigurációnkba.

További előnyeként szokták sorolni a konfigurációs fájl könnyű érthetőségét. Akik valamilyen C szintaxisú nyelvben (PHP, Perl, C/C++, Java, stb) programoznak, azoknak nagyon is ismerős lehetnek a blokkok és a sorvégi pontosvesszök, melyekből a konfiguráció felépül.

A következő cikkben az Nginx és a PHP kapcsolatát fogom bemutatni, és példákon keresztül szemlélteni

Avatar történelem

Este újra megnéztem az Avatar-t, éjjel pedig furcsa álmom volt. Gyakorlatilag továbbálmodtam a történetet, pedig ez ritka eset nálam.

Szóval, a sztori lényege az, hogy Jake, miután az emberek többsége elhagyja a bolygót, két ottmaradt tudóssal nekiáll felfedezni azt. Az gondolom már a filmből is mindenki számára világos volt, hogy ez gyakorlatilag egy hatalmas, dúsan burjánzó dzsungel. Ami nem, az az, hogy a bolygón vannak olyan helyek, “szent helyek”, ahova még a Navik se mennek túl sűrűn. Jake bemerészkedik az egyik ilyen helyre (amit persze a népe nem igazán helyesel, de nem igazán tiltják meg, bár figyelmeztetik őt a veszélyre). Mint kiderül, ezek a helyek valójában romok, egy fejlett, de letűnt civilizáció romjai.

Ha hasonlítani kellene, akkor a földi dél-amerikai civilizációhoz hasonlítanám, azonban annál sokkal fejlettebb, idősebb civilizációról van szó. Azt tudjuk, hogy a ma ismert Navik együtt élnek a természettel, igyekeznek minél kevesebb kárt okozni. Nos, elődeik kapcsolata a természettel ennél sokkal bonyolultabb volt. Bár ők is természetimádó nép voltak, azért az nem okozott nekik gondot, hogy a nagy erdőségekből kis ligeteket csináljanak, miközben terjeszkedtek.

No, de vissza a sztorihoz. Szóval Jake bemerészkedik az egyik ilyen romba, felderíti, és találnak pár érdekes leletet, köztük néhány vésetekkel teli kőtáblát. Ezeken főképp képek láthatóak, írás szinte alig, de annyit azért sikerül kiolvasni belőle, hogy itt egy fejlett civilizáció lakott, elég nagy lélekszámmal. Találtak néhány térképet is a holdról, illetve olyan szintű leírásokat az óriásbolygóról, ami egyértelművé teszi, hogy űrutazásra képes fajról van szó.

Egy másik romban, találnak egy furcsa, fallal lezárt helységet. Majd’ egy hónapjuk rámegy, mire sikerül kitalálni, hogy jussanak be. Bent két asztalt találnak, két-két székkel, a mennyezeten pedig fura díszítésű panelek lógnak a két asztal felett. Az egyik kutató, aki korábban azt próbálta meg kitalálni, hogy milyen jellegű mezőgazdasága volt a civilizációnak, fáradtan roskadt le az egyik székre… majd meglepően gyorsan el is aludt. Néhány perc múlva felébredt, és elmondta, hogy rájött a megoldásra, ilyen és ilyen eszközöket használtak, stb. Mivel erre vonatkozóan eddig semmilyen bizonyítékot nem leltek, persze mindenki kételkedett a szavában. Pár nappal később azonban felfedeztek pár mezőgazdasági témájú vésetet, ami pontosan megfelelt a kutató által vázoltaknak. Néhány további kísérlet után rájöttek, hogy a szoba egyfajta tudástárként működik, letölti a betérő fejébe azokat a válaszokat, melyekre kiváncsi.

Jake közben talál egy kötáblát, tele neveknek és dátumoknak tűnő vésetekkel. Ő is kipróbálja a szobát, és valami különös történik…

Az a tábla valóban neveket tartalmazott, méghozzá különböző uralkodók neveit. Amikor Jake leül a szobában, egy név jár folyamatosan a fejében, a szoba pedig hozzáférhetővé teszi számára ezen uralkodó naplóját. Mint kiderül, a Navik ősei nem volt egységes faj, az egyes klánok közt folyamatos volt a viszálykodás. Az az uralkodó, akinek a naplójához Jake hozzáfért, az utolsók egyike volt. A faj hosszú életű volt, a száz helyi év teljesen átlagos kornak számított, a mai embernél talán valahol 50-60 évnek felel meg. Az uralkodó naplójába gondosan feljegyezte az általa vívott harcok minden eseményét. Pusztító harcok voltak ezek, rengeteg áldozattal. A naplóbejegyzésekből azonban az is kiderül, hogy írójuk belefásult a harcba, értelmetlennek találja, ő maga már nem is nagyon támadt, csak a városát védelmezte. Mivel tisztában van azzal, hogy nem győzhet, összedob egy csapatot nőkből és gyerekekből, akiket beküld az egyik erdőbe. Pár évvel később egy - közelebbről meg nem nevezett - fegyver elpusztítja az egész civilizációt, a naplót író uralkodó is teljesen véletlenül menekül meg.

Csatlakozik a menekültek csapatához, és elhatározzák, hogy újrakezdik, de az alapoktól. Megtiltja, hogy visszamenjenek a romokhoz (nem mintha nagyon lenne miért…), és elkezdenek az ősi módon élni, gyűjtögetni, vadászni… Ő maga is csak egyszer megy vissza - a halála előtt nem sokkal -, hogy befejezze a naplóját.

A Navik faja tehát újrakezdés, visszatértek ősi gyökereikhez, és teljesen elfeledték a múltat.

Jake és csapata úgy dönt, hogy erről nem szólnak a Naviknak. Ha egyszer maguktól megtalálják a tudástárt, hát legyen, de nem látják értelmét annak, hogy ezt a népet megbolygassák ilyen szörnyű emlékekkel.