A vonaton még nem volt semmi baj

Velencében kezdődött, a sikátorokkal.

Emlékszem, teljesen véletlenül akadtam rá a rádiót tekergetve a Kelta karóra és az Irodalmi lépegetőre. És persze arra a regényre, amelyet korábban egyébként olvastam, de hangoskönyvben, és így, megfelelő zenét alátéve hihetetlen élményt ad.

(Figyelmeztetés: sajnos ezek után már nagyon üres hallgatni a hangoskönyvet magában, bármennyire zseniális is Kulka.)

Adásnaplók és .mp3-ak:

Kicsit rontja az élményt, hogy az anyagok elejébe bele kell tekergetni, illetve néhol túl hangos a zene. Azonban rendesen megvágva és masterelve – az ún. modern technológiának köszönhetően akár választhatóan zenével vagy anélkül – el tudnám képzelni egy működő termékként. Erre tudna még továbblépni a hangoskönyv.

Lambada

Könnyen azt hinnénk, nem létezik jó Lambada feldolgozás. Mert hát hogy az eredeti se. Ugye szétégették egykor a neuronjainkat ezzel. Az eredetivel, meg a zenélő kínaival. Törlesszük ezt a mentális adósságot, rakjunk mindent helyre:

Hol van most Nesta?

Néha úgy érzem, a kortárs (pop)kultúra fényesebb letéteményeseit folyamatosan keletkező és megszűnő zugmédiumokon át kell üldözni, figyelni, nyilvántartani. Naprakésznek kell ám lenni. Szerény eszközeivel sok más mellett erre törekszik ez a blog is.

Ilyen hol itt, hol ott feltűnő “csillag” (sztár, izé) Nesta is. Est FM, RadioCafe, Neston, …de hol van most Nesta?

Van Mixcloud csatornája, ahol a Trend FM-es adásait teszi közzé, napjainkban is új tartalmakkal. Üdítő zenei kínálatért, és nem utolsósorban zenei és borászati látókörünk szélesítése kedvéért – mindenképpen látogassuk, hallgassuk. Jó szórakozást!

Enterprise Design Thinking

Az IBM korlátozott ideig ingyen hozzáférhetővé tette “Enterprise Design Thinking” kurzusát.

Even though it includes the word “design,” design thinking is a mindset that anyone can apply. It simply means that you’re starting to think like a designer—about how you can improve the current experience of the people you serve: your users.

Itt.

Minecraft + python3

A “játékipar” számomra igen kevés csábító opciót nyújt, azonban szerencsére vannak kivételek, mint például a Minecraft. Ha megúntuk a favágást, kőbányászást, kézzel építkezést és a barlangban rettegést (survival mód) – szóval valami többre vágyunk, akkor ott a kreatív mód – amit azonban a programozói vénával megáldott “építész” igen hamar vékonykának fog találni.

Sokféle építkezést segítő mod(?) van, azonban gyors átfutás egyik sem tűnt úgy, amely komolyabb programozást lehetővé tenne, inkább a kézi építést szeretnék meggyorsítani. Találtam azonban egy igen szimpatikus lehetőséget: némi hályogkovácsolás – sajnos nincs még natív API támogatás – árán pythonban is programozhatunk!

Kedvcsinálónak nézzünk egy kódrészletet:

def draw_donut(mcx,mcy,mcz,R,r,mcblock):
  for x in range(-R-r,R+r):
     for y in range(-R-r,R+r):
        xy_dist = sqrt(x**2 + y**2)
        if (xy_dist > 0):
           ringx = x / xy_dist * R # nearest point on major ring
           ringy = y / xy_dist * R
           ring_dist_sq = (x-ringx)**2 + (y-ringy)**2
           for z in range(-R-r,R+r):
               if (ring_dist_sq + z**2 <= r**2):
                  mc.setBlock(mcx+x, mcy+z, mcz+y, mcblock)

Látszik, hogy egészen jól fogunk szórakozni. Mindehhez a remek leírást itt találjuk. A poszt írása idején a legfrissebb RaspberryJamMod az 1.12.2 verziójú Minecraftot támogatja, de a Minecraft az 1.14-nél jár (a Raspberry kifejezés ne tévesszen meg senkit, ez csak valamiféle workaround ahhoz, hogy elérjük az API-t, de nem lesz szükségünk extra hardverre) . Szerencsére a Launcherben ezt könnyen hozzáadhatjuk az installációk közé, viszont Forge-ból is ezt kell használnunk (abból van ugyan frissebb, de nyilván nem sokra megyünk vele).

Tehát lényegében a fent hivatkozott leírás alapján az egyszerűsített, aktualizált lépések:

  1. Installáljuk a Minecraftot, majd a Launcherben adjuk hozzá az 1.12.2 verziót
  2. Telepítsük fel a Python3-at.
  3. Telepítsük a Forge 12.2.2 verzióját.
  4. Telepítsük a RaspberryJamMod legfrissebb verzióját.
  5. Amikor indítjuk a játékot, a Launcherben a Forge 1.12.2 profilt válasszuk.
  6. Csináljunk egy 'Superflat' világot.
  7. Nyomjuk meg a 't'-t, hogy kapjunk egy konzolt, majd /py donut.
  8. Enjoy!

Valószínűleg léteznek ettől sokkal szebb/jobb építgető módszerek, de az, hogy ezzel Pythonban lehet programozni, nagyon nagy előny. Néhány kép még kedvcsinálónak:

További szkripteket az AppData\Roaming.minecraft\mcpipy mappa alatt találunk, és ide helyezhetjük el a sajátjainkat is.

A fenti link kb 1/3-ától egy jó áttekintést is kaphatunk a fejlesztés mikéntjéről, néhány buktatóra viszont felhívnám a figyelmet:

  • A setBlock-nak van egy setBlocks 'párja', mielőtt nekiállunk mindent ész nélkül for ciklussal megoldani, ez egyszerűstheti a kódunkat
  • A block.* property-k Block típusúsak. Ha a blokk id-jára vagyunk kíváncsiak, akkor block.WOOD_PLANKS.id formában kaphatjuk meg. Ennek ott van jelentősége, hogy a setBlock(s) máshogy működik, ha block id-t, vagy ha teljes blokkot kap. Például a lépcső írányát és egyéb sub-type-okat a Block objektum .data tulajdonságában kell beállítanunk. Ha id-ként adjuk át, akkor ezt további paraméterként adhatjuk meg a setBlock(s)-nak, ha kész Block objektumot adunk, akkor viszont nekünk kell beállítani, még az átadás előtt.

Requiring Let’sEncrypt TLS cert

Let’sEncrypt provides free TLS certs, and their CA root certificate is accepted by Firefox and other popular browsers. You need to use certbot application to require TLS cert. Fortunately, there is a docker image for it.

Let’s see certbot’s help (use –rm for ephemeral/auto-removed containers):

docker run --rm  certbot/certbot certbot --help

Not too much. Let’s encrypt! This time, mount some directory to store keys and certs:

docker run -it -v /home/user/letsencrypt:/etc/letsencrypt \
certbot/certbot certonly --manual -d mydomain.org -d \
*.mydomain.org

In the example above wildcard domain certificate required as well, so a dns challenge have to be done. It means that you have to create a specific dns record.

Please deploy a DNS TXT record under the name
_acme-challenge.mydomain.org with the following value: ...
Before continuing, verify the record is deployed.

You have to do a http challenge as well, which means, you should make available a specified file on a specified url path.

Create a file containing just this data: ...
And make it available on your web server at this URL:
http://mydomain.org/.well-known/acme-challenge/...

The certificate created is valid for 3 months. But the reneval process is easier. To non-interactively renew all of your certificates, run “certbot renew”.

Note: I needed to add a CAA record with value ‘letsencrypt.org’. Check it with command:

dig mydomain.org caa