Appmenedzsment és marketing meetup

hwsw logó

HWSW logo

2020. február 26-án este a HWSW szervezésében részt vettem az Appmenedzsment és marketing meetup-on az EPAM Rendezvényközpontban. Így hirdették meg az eseményt: „laza hangvételű délutáni rendezvény olyan szakembereknek, marketingeseknek és fejlesztőknek, akik az élesítés után is gondoznák és mérnék mobilalkalmazásukat, hiszen azok sikere elsősorban nem a fejlesztőkön, hanem a megfelelő appmenedzsmenten múlik”. Az utógondozás, karbantartás, továbbfejlesztés gyakorlatilag rövidebb-hosszabb ideig minden fejlesztő, fejlesztői csapat tevékenységeire igaz. Az eseményen négy darab 15 perces előadás hangzott el.

Az első előadó Szuhai Viktor volt, aki a Planet of the Apps-nál Mobile Product & Marketing Manager. A Letöltések bűvöletében: hogyan tereljünk forgalmat az alkalmazásunkba? című előadás annak a 3 fő oknak a kifejtésével kezdődött, amiért a cégek alkalmazásait nem használják az emberek:

  • van alkalmazás, de maga a cég sem tudja, hogy miért készült el a termék,
  • van jó alkalmazás, de elkészülését követően a cég nem követi, hogy mire és hogyan használják azt a felhasználók és a cég nem reagál a felhasználók visszajelzéseire,
  • hatástalan marketing aktivitások (úgy hirdetik a cégek az alkalmazásaikat, hogy a megtekintések számát vagy a kattintások számát mérik, pedig hasznosabb lenne a valós letöltések számát illetve a letöltést követő aktivitások számát mérni).

Elhangzott, hogy egy mobil alkalmazást használó értékesebb egy weboldal látogatójához viszonyítva, hiszen több ideig velünk marad. Ha sokáig használja az alkalmazást, követhető a tevékenysége. Ha kihasználjuk a push üzenetek lehetőségeit, akkor a termékünkből egy „sales gépezetet” készíthetünk. A legtöbb cégnél nincs mobil marketinges. Az előadó ezt követően saját külföldi – céges környezetben szerzett – tapasztalatairól számolt be. Alapvetően háromféle ügyfélszerzési csatornáról hallhattunk:

  • ingyenes csatornák: ASO, saját webes felületek,
  • fizetős tradícionális csatornák: Facebook, Google, Instagram,
  • alternatív csatornák: SearchAds, Appnetwork-ök, ösztönzött letöltések.

HWSW - Appmenedzsment és marketing meetup

A második előadást – Tervezéstől a riportolásig: mire figyelj a sikeres mobil app mérés érdekében? címmel – a Mito képviseletében Horváth Ádám és Gyöngyösi Balázs tartotta. Egy app életciklusához igazodóan áttekintették, hogy mit, mivel és hogyan érdemes mérni annak érdekében, hogy az alkalmazásunkat, illetve annak használatát megérthessük. A mobil alkalmazáspiacon lévő nagy verseny miatt szükséges, hogy a felhasználók érdeklődését folyamatosan fenntartsuk a mért adatok alapján. A webes analitika bevett gyakorlat (cookie és session alapon), a mobil appok esetén ez – még – kisebb szerepet kap (User ID alapon és itt a session azt jelenti, hogy előtérben van a telefonon a mobil app legalább 10 másodpercig és 30 másodperc után jár le a session). A főbb szempontok ezek voltak:

  • ügyfélszerzés (új és aktív user-ek száma, hogyan találják meg az appunkat),
  • elkötelezettség (tartós használat és/vagy lemorzsolódás),
  • eredmények/konverziók (mennyire sikerült elérnünk az üzleti céljainkat),
  • mérési tervezési folyamat lépései (üzleti célok egyértelmű definiálása, KPI és eszközök meghatározása, mérési stratégia kialakítása, implementáció és fenntartás).

Mindkét előadó hangsúlyosan kiemelte a különböző szoftverfejlesztéshez kötődő munkakörökben, beosztásokban, pozíciókban, szakterületeken dolgozó minden alkalmazott komplex, szerteágazó és hatékony együttműködésének fontosságát.

HWSW - Appmenedzsment és marketing meetup

A harmadik előadást Álmos Balázs tartotta a Planet of the Apps-tól Adatokból valóság, avagy hogyan hoznak nekem üzleti előnyt az adatok, hol térül meg az app-analitika? címmel. Kérdések felvetésével indult az előadás. Hogyan tartsuk meg azokat a felhasználókat, akik már letöltötték az appot? Mi az adatvagyon és az adathalom közötti markáns különbség? Miért szükségesek üzleti döntéseket támogató üzleti intelligencia alkalmazások? Vannak kérdéseink, amikre választ várunk az adatok elemzésekor? Mire lehet célozni az analitikát? Lehet termékfejlesztési indikátor, alkalmas marketing optimalizálásra, UX-es viselkedés optimalizálásra, stabilitás vizsgálatára, marketing kommunikáció hatékonyságának növelésére. Az egésznek csak akkor van értelme, ha mindenkinek érthető és átlátható a teljes folyamat/rendszer. Mitől függhet az app sikeressége? Alapvető cél az aktív felhasználók megszerzése, számuk növelése és megkötése/megtartása. Hasznos tippeket kaptunk az analitika felkészültségétől függően a felhasználói élmény fokozására, és az automatizálási stratégia (push kommunikációs stratégia) kialakítására.

HWSW - Appmenedzsment és marketing meetup

A negyedik előadó Dombi Soma volt a Product Factory képviseletében, aki Analitika sokoldalú felhasználása hiba detektálásra, rollout tervezésre, ux javításra, bevétel becslésre címmel gyakorlati megközelítésű prezentációt tartott. Egy esettanulmányt ismertetett, amiből kiderült, hogyan javítottak az egyik alkalmazásuk felhasználói élményén az általuk mért adatok alapján. A korábbi elméleti és összefoglaló jellegű előadás zárásaként kifejezetten hasznos volt látni a konkrét mérési eredményeket, illetve hallani a megvalósítások technológiai trükkjeit (például PDF fájlok oldalainak képként való kezelése, pufferelése, sebesség optimalizálása…).

HWSW - Appmenedzsment és marketing meetup

A szervezők utólag publikálták a rendezvény prezentációit, fényképgalériát és két előadásról videót.

RobonAUT – Autónom robotok versenye 2020

RobonAUT kiemelt kép

RobonAUT logó2020. február 15-én 11. alkalommal került megrendezésre a 2019/2020-as tanév őszi félévében a BME Villamosmérnöki és Informatikai Kar Automatizálási és Alkalmazott Informatikai Tanszékének a gondozásában a RobonAUT – Autónom robotok versenye.

Kaló Péter és Török Barbara szoftverfejlesztő OKJ képzésben résztvevő végzős hallgatók szakmai- és élménybeszámolója következik. Mindketten nagyon jól érezték magukat a versenyen. Beszámolójukat köszönjük.

Mi is az a RobonAUT?

A 2010 óta évente megrendezett programon egy műegyetemi tárgy keretében a résztvevőknek egy autonóm robotot és vezérlését kell elkészíteniük. A feladat, hogy a robotjárművek emberi beavatkozás nélkül, minél rövidebb idő alatt teljesítsék az akadálypályákat, egy előre nem ismert ügyességi pályán, útjuk során teljesítve a legtöbb részfeladatot. Az a csapat lesz a győztes, aki gyors és pontos irányítással szereli fel robotját, így szerezve a legtöbb pontot a futamokon.

A verseny sikerét egyértelműen jelzi a hallgatók aktivitása, valamint a külvilág érdeklődése a RobonAUT iránt. A versenyen villamosmérnökök, mérnökinformatikusok és mechatronikai mérnök mesterhallgatók vehetnek részt. Csapatonként egy robotot kell készíteni. A csapatok létszáma 3 fő (indokolt esetben 2 fő).

2020-ban a csapatok között volt 7 junior és 4 senior csapat, összesen 32 versenyző indult neki a kihívásnak. A jelentkező csapatok között fellelhető a 2019-es év junior győztese, az Override, és újra jelen van az összesítettben első helyezett Faketelen Taxi, és az összesített második, a Tesla Monsters is.

A tanszék biztosít eszközöket, illetve anyagi támogatást a robot megépítéséhez:

  • 1 db autómodell,
  • 1 db processzorkártya,
  • 2 db rádiós modul,
  • 75000 Ft szabadon felhasználható költségkeret,
  • egyéb alkatrészek (vonalszenzor, motorvezérlő, Bluetooth modul).

A csapatokat tematikus szemináriumokkal készítették fel a versenyre. Ezen alkalmakon egy-egy, a verseny szempontjából fontos tématerületeket érintettek és tekintettek meg. Négy szeminárium (Hardver, Altium Designer, Szoftver, Szabályozástechnika) támogatta a csapatokat a felkészülésben.

Versenyfeladat

A robotjárműveknek két akadálypályán kell végig haladniuk, és ennek során különböző feladatokat kell teljesíteniük. Egyik pályán az ügyesség, a másik pályán a gyorsaság számít.

A gyorsasági pályán enyhe lejtők és emelkedők nehezítik a robot haladását, illetve magát az útvonalat egy vezetővonal jelöli. A gyorsasági pályán minél jobb köridő elérése a cél.

Az ügyességi pálya egy labirintusnak felel meg, ahol a robotjárműnek fel kell térképeznie a területet, és ezt követően tud tovább haladni a gyorsasági pályára.

RobonAUT 1. kép

Ügyességi pálya elemei

A gyorsasági és ügyességi pálya előre definiált elemekből épül fel, ezek:

  • a pályaelemeket összekötő egyszerű vezetővonal,
  • start és cél,
  • elágazás és becsatlakozás,
  • zsákutca,
  • pályaszakasz kapu (18 db),
  • sávváltás.

RobonAUT 2. kép

Kvalifikációk

  • Előzetes kvalifikáció: az autók vonalkövetését és safety car (tanszék által készített autó) követését hivatott ellenőrizni.
  • Ügyességi kvalifikáció: az autóknak sikeresen kell teljesíteniük az ügyességi pályaelemeket egy versenybíró jelenlétében.
  • Gyorsasági kvalifikáció: az autóknak, egy előre felépített pályán kell végig haladniuk, egy megadott időn belül.

Az induló csapatok nevei és logói elérhetők a verseny weboldalán.

A Tesla Monsters csapat autójának terve és fényképe:

RobonAUT Tesla Monsters

Élménybeszámoló

Már kezdés előtt fél órával nagy tömeg várta a verseny kezdetét a BME Q épület aulájában. Dr. Tevesz Gábor egyetemi docens, a fő szervező, a verseny megálmodója kezdte beszéddel ezt a fantasztikus napot. Népes csapat munkálkodott a versenyen, kb. 40-50 ember. Kiss Domokos versenykoordinátor és versenybíró folytatta a beszédet, a nézőközönséggel ismertette a verseny szabályait.

Aznap reggelig nem volt ismert a pálya felépítése a csapatok számára. A döntőig 6 junior és 4 senior csapat jutott el, hogy hősiesen megküzdhessenek egymással. A versenyen vegyesen mérték össze az erejüket. A csapatoknak fél év felkészülési idejük volt, hogy egy jól működő robot autót készítsenek el. Sokat számított a találékonyság, az ötletelés és a robot autók design-ja.

A csapatok plusz 10 pontot tudtak gyűjteni a nézőközönség által. A közönség szavazhatott arra a csapatra, amelyik a legjobban tetszett nekik. Figyelembe vették ki milyen jól vette az akadályokat, vagy éppen kinek milyen design került az autójára. A közönség szavazásnál a Faketelen Taxi kapta a 10 pontot.

  • A versenyt elsőként az ABS nevű csapat kezdte. Az akadályokat jól vették.
  • A második csapat volt a Led Bull, akiknél egy ütközést követően megsérült az egyik szenzor, így az ügyességi pályát nem tudták befejezni. A gyorsasági pályát így is megpróbálták, de végül az autójuk kiment a pályáról.
  • Az Override nevű senior csapat folytatta harmadikként a mérkőzést.
  • Negyedikként a FalnakMegyek csapatnak csak 4 kaput sikerült teljesíteniük, majd a programjuk végtelen ciklusba került. Próbáltak javítani a helyzeten egy rögtönzött szereléssel, mert mint kiderült: kiégett az egyik biztosítékuk. A felkészülés alatt már történt ilyen velük, így tartalék biztosítékkal hamar megoldották a problémát.
  • A Stranger Gears volt az ötödik csapat, akik két kapu kivételével teljesítették az ügyességi pályát. Ők voltak az első csapat a verseny alatt, akik a gyorsasági pályán az autójukkal előzést hajtottak végre.
  • Az Unemployed & Single volt az első olyan csapat, akik minden kaput érintettek és sikeresen ki tudtak állni a safety car mögé. A gyorsaságin az első előzést sikeresen teljesítették, a másodikat sajnos nem.
  • A hetedik csapat a GITegylet volt, akik az autójukon díszként Nemecsek Ernő „kalapját” használták kabalaként. Az ügyességi pályán minden kaput érintettek, a gyorsasági pályán mindkét előzést sikeresen végrehajtották.
  • Nyolcadik csapatként következett a Riders of the ST ARM, akik az ügyességi pályán csak 3 kaput hagytak ki. A gyorsasági pályán már nem tudtak elindulni, mert az autójukban hiba keletkezett.
  • A Tesla Monsters kilencedikként vett részt a versenyen. Senior csapatként teljesen új autót készítettek, melyben két ventilátor helyezkedett el, hogy jobban le tudja szorítani az autót. Az összes kaput sikeresen teljesítették az ügyességi pályán.
  • Az utolsó induló csapat a Faketelen Taxi volt. Ők is egy teljesen új autót építettek, melynek összsúlya 8 kg lett. Az ügyességi pályán az összes kaput hibátlanul bejárták, a kiállást egy új manőverrel oldották meg, melytől a nézőközönség tapsviharban tört ki. A gyorsasági pályán mindkét előzést sikeresen teljesítették, és az idei legjobb kört futották.

Ezután fél órás szünet következett az eredményhirdetés előtt. A Faketelen Taxi egyik tagját, Sárközy Balázst kérdeztük meg arról, hogy milyen nyelven programoztak. Az autó alapját egy Raspberry Pi adta, amelyen Linux futott. Programozás terén az autót több részre osztották, egyes részek Python-ban, más részek C-ben és C++-ban voltak megírva. Az autójukba 14 szenzort építettek be, ezek segítségével navigált a robot autó a pályán. A pálya feltérképezésénél és követésénél Descartes koordináta-rendszerrel dolgoztak.

A verseny részletes eredményei megtalálhatóak a verseny weboldalán.

Stream API lambda kifejezésekkel

lambda kifejezés logo

lambda kifejezés logoKorábban blogoltunk már a Stream API-ról és a lambda kifejezésekről: Ismerkedjünk lambda kifejezésekkel! Most másképpen közelítve újra foglalkozunk a témával.

Tanfolyamainkon szinte minden adatszerkezethez, tömbhöz, kollekcióhoz, fájlkezeléshez kötődő témakörben használjuk mindkettőt. Áttekintjük az ezekhez szükséges minimális verziószámot, a szintaktika fejlődését, az együttes használat elvi és gyakorlati lehetőségeit. A szükséges alapfogalmakat definiáljuk: hozzárendelési szabály, funkcionális interfész, metódus referencia, alapértelmezett metódusok, típus kikövetkeztetés képessége, generikus és funkcionális programozás. párhuzamos adatfeldolgozás lehetőségei.

Összehasonlításokat is végzünk: a lambda előtti verziók lehetőségei, korlátai, tipikus lambda hibák, mikor mit érdemes és mit nem érdemes használni, paraméterek típusait megadjuk vagy elhagyjuk, hagyományos kollekciós műveletek (azért a generikusság előtti időkre már nem térünk ki) és folyam feldolgozás (adatforrás meghatározása, közbenső és végső műveletek).

Most azokat a Stream API-hoz és lambda kifejezésekhez kötődő bevezető mintapéldákat ismertetjük, amiket részletesen elemzünk tanfolyamaink szakmai moduljának kontakt óráin. Ezek közül közösen meg is írunk néhányat, kombinálunk is néhányat egy-egy összetett adatfeldolgozó művelet megvalósítása során. Programozási tételenként specifikáljuk a feladatokat és megmutatunk néhány megoldást.

1. Adatforrás

100 db olyan véletlen kétjegyű számot állítunk elő generikus listában, amelyek között biztosan előfordul legalább egyszer a 80.

2. Elemi programozási tételek

2.1. Sorozatszámítás

Kiírjuk, hogy mennyi a listában lévő számok összege:

2.2. Eldöntés

Két kérdésre adunk választ. Van-e a listába lévő számok között 35 (konkrét elem), illetve páros (adott tulajdonságú elem)?

2.3. Kiválasztás

Kiírjuk, hogy a biztosan előforduló (legalább 1 db közül balról az első) 80, hányadik helyen (index) található meg:

2.4. Keresés

Keressük a 35-öt az eldöntés és a kiválasztás összeépítésével:

2.5. Megszámolás

Kiírjuk, hogy hány db öttel osztható szám (adott tulajdonságú elem) található a listában:

2.6. Szélsőérték-kiválasztás

Kiírjuk a listában lévő legkisebb számot (értéket, nem indexet):

3. Összetett programozási tételek

3.1. Másolás

Készítünk egy másolatot a lista elemeiről (közben esetleg mindegyiket meg is változtathatjuk):

3.2. Kiválogatás

A listában lévő számok közül kiválogatjuk az öttel osztható számokat:

3.3. Szétválogatás

Külön-külön szétválogatjuk a listában lévő páros és páratlan számokat:

3.4. Unió

A korábban szétválogatott páros és páratlan számokat tartalmazó halmazok unióját állítjuk elő:

3.5. Metszet

A korábban szétválogatott páros és páratlan számokat tartalmazó halmazok metszetét állítjuk elő:

3.6. Összefésülés

A korábban szétválogatott páros és páratlan számokat összefésüljük:

4. A program eredménye a konzolon

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java SE szoftverfejlesztő tanfolyam, a Java EE szoftverfejlesztő tanfolyam és a Java adatbázis-kezelő tanfolyam szakmai moduljának több alkalmához és az orientáló moduljának 1-4. óra: Programozási tételek alkalmához is kötődik. A Stream API-val és a lambda kifejezésekkel sokszor foglalkozunk.

Korábban is blogoltunk már a Stream API-ról és a lambda kifejezésekről: Ismerkedjünk lambda kifejezésekkel!