Merüljünk érdekes adatokba: a muréna

Az állkapocs A legérdekesebb azonban az az, ahogyan ez az állat táplálkozik. A halak zöme nyelv híján úgy nyeli le a falatot, hogy vákumot generál a szájában és beszippantja a táplálékát. A murénák erre képtelenek, ezért a természet egy extra alien eszközt adott nekik segítségül: ez pedig nem más, mint a garatukban jól elbújó másodlagos állkapocs: Pharyngeal_jaws_of_moray_eels Forrás: Wikipedia Klassz, mi? A muréna úgy kezdi, hogy a szájában levő első fogakkal megragadja az áldozatot (btw nagyon ügyes ragadozó, zömmel csigákat, rákot, kis tengeri kígyókat és polipokat eszik), majd mikor elkapta, a rejtett álkapocs előreugrik és az is ráfog a kajára és így húzza le azt a torkán. A hátsó álkapocs fogai befele fordulnak, így amit azzal egyszer megfog, azt többet nem tudja elengedni.

Kooperatív vadászat

Természetes ellensége a barrakudák, nagyobb tengeri kígyók és az igazán nagy grouperek (=tengeri sügér). Ez utóbbi igen érdekes, mert nagy murénáknál megfigyeltek már olyan jelenséget, hogy sügérekkel együtt indul közös vadászatra. Az összedolgozás nagyon hatékony: míg a muréna az üregekben támad, addig a sügér a nyílt vízi terepen kapja el az áldozatait. A zsákmányállatok a sügérek elől a reefek üregeibe bújnak, ahol azonban könnyű prédát jelentenek a muréna számára. A fent linkelt leírás alapján a közös vadászatot a sügér kezdeményezi úgy, hogy egyszerűen odamegy a muréna szája elé és megrázza a fejét. Ha izgat a dolog, nézd meg az eredeti leírást, van az oldalon 4 darab, máshová nem beágyazható video az egész folyamatról.

Fogmosás

A murénákat számos merülésen láttuk már a reefeken az úgynevezett “cleaning station”-öknél dekkolni. Ezeken a pontokon egy kis kék oldalvonalú tisztogatóhal, esetleg apró rák próbál magának kaját szerezni úgy, hogy az arra járó és szájuk tisztaságára kényes ragadozók szájába beúszva simán kizabálják a szájüregben rekedt maradékot. Ezt a murénák valami okból kifolyólag imádják és rendszeresen pucoltatnak ily módon. A kis tisztogatóhalak egyébként simán beúsznának a te szádba is – nem egy búvár barátomnak mentek már fület tisztítani önként és dalolva 🙂

Na de jó-e sütve?

A muréna húsa meglehetősen jó kaja – szálkamentes, hófehér és isteni az íze. A legtöbb faj bőre erős toxint termel, ezért azt a feldolgozás során el kell távolítani. A murénákat viszonylag kevesett halásszák, de azért nagyobb halpiacokon elvétve előfordulnak. Szabadtüdős búvár ugyan vadászhat rá, de én senkinek nem javasolnám: egy kb. 5 cm átmérőjű, fél méter hosszú állat a saját testére csomót kötve és azt villámgyorsan a feje felé tolva simán el képes törni egy emberi kezet – képzeld el, mint tud akkor egy 3 méteres, vödörnyi méretű fejű példány.

A muréna és az ember

Sajnos a helloTurisztoknak szánt látványosságként sok helyen etetik ezeket az állatokat – az ilyen esetekből jönnek az előbb emlegetett ujjharapós balesetek. A böszme nagyra megnövő példányok is inkább szégyenlősek és tartanak a búvártól, maximum önvédelemből mennek neki. Kis híján ez történt a múlt héten velünk is, amikor úgy gondoltam, jó ötlet a már jó ideje búvóhelyet kereső muréna felett sokáig kamerával úszkálni.]]>

3D nyomtatás: "csak gyártod a sok műanyag szemetet"

A probléma Tegyük fel, hogy van egy párod, aki a poszt címében megfogalmazott támadással állná útját annak, hogy 3D printelj, pedig te imádod pazarolni az erőforrásokat és illatolni az ABS olvasztása során felszabaduló ciánt.

A megoldás

Találjunk valami háztartási problémát, amit csak új eszköz vásárlásával lehetne megoldani. Amint ez megvan, ereszd szabadon a benned bujkáló mérnököt és tervezd meg / gyártsd le az egyébként pótolhatatlan alkatrészt műanyagból! Mai delikvensünk egy közönséges fürdőszobai mosdócsap. Ha jól emlékszem, ez GROHE termék, kettő is van belőle otthon. Egyik hétvégén úgy értünk haza, hogy a csap végén a vízsugarat buborékosító zárószerkezetből kiestek a szűrők, az azokat tartó peremet pedig nagy eséllyel már rég elnyelte a csatorna. Leszereltem hát a csapvéget és magammal hoztam Krakkóba, hogy két tesztfuttatás között kitalálok rá majd valamit. Így néz ki a meghibásodott csapvég a buborékokat generáló szitákkal, amiket mára már nem tart a helyén semmi: bad-tap Ha kiszedem a szitákat, a foglalatukul szolgáló kis henger kitekerhető a csapból: bad-tap-disassembled A henger oldalán egymással párhuzamosan van két letörés, hogy egy fogóval meg tudjuk ragadni, ha mondjuk kézzel nem lenne kitekerhető, mert belegyógyult a vízkőtől: threaded-end-with-from-top A henger oldalának felső, ~5mm-es részén egy 24×0.75 mm-es metrikus menet lakik, a felső szélén pedig egy perem tartja helyén a tömítést: threaded-end-from-bottom Mivel a buborékképző sziták ~18 mm szélesek, a henger pedig ~23 mm átmérőjű, így marad elég falvastagság ahhoz, hogy az egész kényelmesen printelhető legyen. Mi a henger aljába is teszünk majd egy peremet – ez fogja helyén tartani a szitákat. Ez volt az ötlet leskiccelve: model Ez pedig a megvalósult ojjektum: finished-part-alone finished-part-on-its-place Voila, szombat estétől újra két csap üzemel a fürdőszobában! Ha ellenállhatatlan vágyat érzel a modell birtoklására, akkor viheted a Thingiverse-ről. p.s.: semennyire nem vág a poszt témájába, csak a fotók elkészítése közben jutott eszembe a dolog. A héten olvastam Handrásnál egy posztot, amiben arról ír, hogy AlieN Gergő egy telefonnal készít gyönyörű fotókat. A poszt után több olyan megjegyzést olvastam/hallottam, hogy ilyen precízen fókuszált képeket a telefonnal lehetetlen lőni. Nos, ennek a posztnak a képeit egy iPhone 5 készítette és azt gondolom, rendben van a fókusz. Megmutatom mi kell hozzá: tap-end-photography-backstage]]>

Depreszzív, húsvéti Exceles poszt

több, mint 80 országban futnak szerte a világban. Ezidáig nem találkoztam olyan problémával, aminél széttártam volna a kezem. A VBA interpreter telis-tele van hibákkal, de eleddig mindenre sikerült valamilyen workaroundot találni (nota bene: ha saccolnom kellene, nem kevés időt tenne ki a különböző fejlesztésekből az, hogy az interpreterben maradt bugokra gyógyírt találjak). Ma azonban találtam valamit, ami előtt jelenleg szét kell, hogy tárjam a kezem és azt kell, hogy mondjam a kedves ügyfélnek: sajnálom, ezt nem tudjuk implementálni. Utálok ilyet tenni, különös tekintettel arra, hogy a jelenlegi problémának egyszerűen nem szabadna léteznie. A feladat az volt, hogy egy cirka 1 millió cella méretű tábla kb. 10%-ban relatíve bonyolult képleteket kell generálni, majd miután az Excel elvégezte a számítási műveleteket, a cellákban szereplő képleteket le kell cserélni a kiszámolt értékekre. A tábla egy kb. 7 MB méretű dokumentumban lakik, a tábla teljes struktúráját és az abban levő összes képletet függvények generálják, a felhasznált adat jó részét szintén függvények importálják külső adatforrásokból, a végfelhasználó pusztán statikus számokat gépel bele a táblázat celláiba. A dolog egyszerűnek hangzik, mint egy faék – az is lenne, ha a mocsadék interpreterben nem bujkálna valahol egy ordas memleak. A képlet értékre cserélését VBA-ból többféleképpen is meg lehet oldani: az egyik művelet a clipboardot használja, kb. így:

srcRange.Copy
srcRange.Cells(1,1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Ebben az esetben a srcRange változó által mutatott Range tartalma megy a Clipboardba, majd a következő sorral a kiszámolt értékek visszakerülnek a képletek helyére. Az Application.CutCopyMode = False hivatott arra, hogy a Clipboardot felszabadítsa. A másik megoldás nem használ Clipboardot az adatcseréhez:
srcRange.value = srcRange.value
Mindezt elvégezzük egy ~2000 soros táblában, a sorokon egy ciklussal lépkedve, egy sorban ~500 cella tartalmát változtatva egyszerre. A gond ott jön, hogy ahogy halad a ciklus, a művelet látványosan lassul (annak ellenére, hogy a táblában levő képletek fokozatosan tűnnek el, tehát épp az ellenkezőjének kellene történnie), majd egy idő után az interpreter egyszerűen nem hajlandó az aktuális value paste műveletet végrehajtani és a kód futatása megáll, amit egy generic, semmire nem jó hibaüzenettel dokumentál a rohadék (1004 – Application defined or object defined error). Ha ezen a ponton fejlesztő kollégaként úgy éreznéd, hogy kommentálnod kéne a dolgot, mert mondjuk nagy eséllyel nem szabadítok fel valami változót a ciklus belsejében és az nyeli a memóriát, akkor kérlek ne tedd: minden lehetséges megoldást kipróbáltam már, fejlesztői oldalról a memleak esélye jelen esetben teljesen kizárt. Az teljesen nyilvánvaló, hogy a képletek értékre cserélése felzabál egy erősen limitáltan rendelkezésre álló RAM-ot (HEAP, STACK?), ami 2014-ben egy 2010-es szoftvert használva azért elég vicces (a kódot futtató gépben jelenleg 32 GB RAM van, mi meg egymillió darab lebegőpontos számmal dolgozunk). Cirka 7 óra knowledge base bújás és egyéb keresés után sem tudok olyan megoldást, ami a paste value művelet elvégzése után felszabadítaná a művelet által elemésztett RAM-ot, ezért ordas memleakre gyanakszom. Ez a poszt így ahogy van, elmegy a Microsoft Tech Supportnak, de sajna túl sok reményt nem fűzök ahhoz, hogy bármi érdemi választ kapjak (=sok rossz tapasztalatom volt korábban). Ettől függetlenül a lepényhal megy elöl, a remény hal meg utoljára, szóval ha érdemi válasz jön, azzal nyilván kiegészítem a posztot, hadd legyen még egy 100%-ig elégedett ügyfelem.]]>