SAPIENTIA ERDÉLYI MAGYAR TUDOMÁNYEGYETEM MŰSZAKI ÉS HUMÁNTUDOMÁNYOK KAR MAROSVÁSÁRHELY
Nyári gyakorlat beszámoló
Dátum:
Készítette:
2013. 08. 29
Név:Jére Zoltán Lehel Szak: Informatika Évfolyam: II
Nyári Gyakorlat Beszámoló
1.Tartalomjegyzék
1.Tartalomjegyzék ...................................................................................................................... 2 2.Bevezetés ................................................................................................................................ 3 2.1 A dokumentum célja......................................................................................................... 3 2.2 A nyári gyakorlat célja....................................................................................................... 3 2.3 Megszorítások ................................................................................................................... 3 3. A nyári gyakorlat részletes leírása .......................................................................................... 3 3.1 Rövid leírás........................................................................................................................ 3 3.1.1 Workshop ................................................................................................................... 4 3.1.2 Dokumentálás, specifikáció megírása ........................................................................ 4 3.1.3 Kódolás ....................................................................................................................... 6 3.1.4 Tesztelés ..................................................................................................................... 8 3.1.5 A projekt kiértékelése ................................................................................................ 9 3.2 Saját észrevételeink .......................................................................................................... 9
2
Nyári Gyakorlat Beszámoló
2.Bevezetés
2.1 A dokumentum célja A dokumentum megírásának célja, hogy átfogó képet nyújtson a nyári gyakorlat alatt tapasztalt és szerzett ismereteinkről. Röviden bemutassa az ezen időszak alatt zajlott tevékenységeket és a projekt megvalósításának lépéseit.
2.2 A nyári gyakorlat célja A nyári gyakorlat célja egy projekt megvalósítása a dokumentálás pillanatától, egészen a kész alkalmazás megvalósításáig, továbbá tapasztalatszerzés, úgy szakmai, mint csapatszellem építés terén. Csoportos munka megvalósítása és beilleszkedés egy új munkaközösségbe.
2.3 Megszorítások A minimális óraszám, amelyet a diáknak kötelező módon kellett teljesítenie 90 óra volt, valamint egy beszámoló készítése, melynek tartalmaznia kellett mindazokat a tapasztalatokat, amelyeket a diák szerzett a nyári gyakorlat folyamán. Ezen beszámoló leadásának határideje: 2013. szeptember 1.
3. A nyári gyakorlat részletes leírása 3.1 Rövid leírás
A nyári gyakorlat 2013. 07. 01 – 2013. 07. 31 -ig terjedő időszakban zajlott, melyet egyéni döntés alapján meg lehetett hosszabítani. A projekt kivitelezésének főbb szakaszai az alábbiak, melyeket a továbbiakban bővebben is részletezünk.
3
Nyári Gyakorlat Beszámoló
1. Workshop 2. Dokumentálás, specifikáció megírása 3. Kódolás 4. Tesztelés 5. Kiértékelő
3.1.1 Workshop
A nyári gyakorlat ezen időszaka alatt, egy valós projekt kivitelezésének lépéseit követhettük végig, illetve a cég alkalmazottai által tartott bemutatókon vehettünk részt, mely elősegítette az Android nyelv elsajátítását és a C#, PHP nyelvekbe való mélyebb betekintést.
3.1.2 Dokumentálás, specifikáció megírása
A dokumentálás elengedhetetlen része egy alkalmazásnak. Ebben az időszakban a saját projektünk részleteinek megbeszélésére, és a kivitelezéséhez szükséges specifikáció megvalósítására fektetődött a hangsúly. A specifikáció megírása angol nyelven történt, és magába foglalta a design és az alkalmazás logójának kezdetleges elkészítését is.
3.1.2.1 Projekt neve és készítői
Az alkalmazás neve: Student Note Készítették:
Balas Erika - Informatika szak, II évfolyam
Jére Zoltán - Informatika szak, II évfolyam
Kászoni Anita Renáta - Informatika szak, II évfolyam
László Izabella - Informatika szak, II évfolyam
Madaras Hunór - Informatika szak, II évfolyam
Magyarosi Noémi - Informatika szak, II évfolyam
Mihály Csaba - Számítástechnika szak, III évfolyam
Tordai Tünde - Informatika szak, II évfolyam
4
Nyári Gyakorlat Beszámoló
Projekt vezetők:
Daniel Cândea
Fogarasi Ferenc
Török Alpár
3.1.2.2 Az alkalmazás célja
Egy olyan Android és Desktop alkalmazás megvalósítása, melynek segítségével a felhasználó tudja tárolni a jegyzeteit. Célcsoport: diákok. Az alkalmazás úgy mobil-, mint desktopalkalmazásként is elérhető, táblagép esetében portrait és landscape módban is.
3.1.2.3 Az alkalmazás rövid leírása
Az alkalmazás regisztrációt, majd bejelentkezést ígényel. A regisztráció email cím és jelszó megadásával történik. A felhasználó a megadott email címre egy emailt kap, mellyel megerősítheti a regisztrációt. Visszaigazolás után a felhasználó sikeresen bejelentkezhet. A bejelentkezés facebook fiók segítségével is lehetséges. Ugyanakkor az alkalmazás tartalmaz jelszóemlékeztetőt is, melyhez az email cím megadása szükséges. Erre a címre érkezik majd egy email, melyben a linkre kattintva megváltoztatható a jelszó. Az alkalmazás segítségével négy különböző jegyzetet tud a felhasználó készíteni: képet, hangfelvételt, videófelvételt és szöveget. A jegyzetekhez különböző címkéket lehet hozzáadni (Munka, Otthon) és emlékeztetőt beállítani. A felhasználónak lehetősége van módosítani, törölni, listázni, adott név alapján rákeresni és megosztani az adatokat. A megosztás történhet egy adott személlyel(email cím alapján) vagy akár Facebook, Gmail, SMS, Dropbox és minden olyan alkalmazás segítségével, mely megtalálható a felhasználó készülékén és lehetővé teszi ezt.
3.1.2.4 Munkamegosztás
C# - vezető: Daniel Cândea ◦ Balas Erika - Informatika szak, II évfolyam
5
Nyári Gyakorlat Beszámoló ◦ Magyarosi Noémi - Informatika szak, II évfolyam
API létrehozása és karbantartása - vezető: Fogarasi Ferenc ◦ Jére Zoltán - Informatika szak, II évfolyam ◦ Kászoni Anita Renáta - Informatika szak, II évfolyam
Android - vezető: Török Alpár ◦ László Izabella - Informatika szak, II évfolyam ◦ Madaras Hunór - Informatika szak, II évfolyam ◦ Mihály Csaba - Számítástechnika szak, III évfolyam ◦ Tordai Tünde - Informatika szak, II évfolyam
3.1.3 Kódolás
Ezen időszak volt az a része a nyári gyakorlatnak, melyben megtapasztalhattuk a specifikáció megírásának fontosságát. Mivel nem lokális üzemmódban működő alkalmazás elkészítése volt a feladatunk, hanem online módban kellett működjön, szükségünk volt egy API-ra, mely segítségével tudtuk az adatokat tárolni. Az Android alkalmazás folyamatosan kommunikál az API-val, és minden bejelentkezéskor szinkronizálja az adatokat (a szöveg és kép formátumú jegyzeteket, az hang- és videófelvételt nem). A felhasználónak lehetősége van a Synchronize gombra kattintva is szinkronizálni az adatokat.
Részletek az én munkámról A nyári gyakorlat alatt a PHP részlegre kerültem, ahol lehetőségem volt megtapasztalni milyen csapatban dolgozni és legfőképpen sikerült elmélyítenem PHP ismereteimet. Munkám során a Codeigniter 2.1.3 Framework-al dolgoztam. A kezdetekkor voltak nehézségeink, de hát minden kezdet nehéz, ha valaki egy teljesen új környezetben kezd el dolgozni. Az első egy hét után, amikor már otthonosan mozogtam a Framework kezelésében, teljesen bele szerettem. Nagyon jól átlátható, jól szervezett és hihetetlenül megkönnyíti az ember munkáját. Mindemellett egy kitűnő dokumentációval rendelkezik és a google-ben keresgélve is válaszra találunk a legtöbb kérdésünkre. Ezen kívül, sokat tanultam adatbázis kezelésből is. Nem a technikai, sokkal inkább a logikai részét. Megtanultam úgy elképzelni egy adatbázist, hogy az megfeleljen a célnak. Különben ez később sok bosszúságot okozhat. 6
Nyári Gyakorlat Beszámoló
Nagymértékben gyarapítottam HTML és CSS tudásomat. Emellett alapszintű ismereteket szereztem JavaScript, Ajax, jQuery és XML terén. Végül, de nem utolsó sorban az Ubuntu és az ő terminálja. Őszintén megmondom h az operációs rendszerek tantárgy mellett nem igazán szerettem a parancssort. De az elmúlt hónap után már az otthoni gépemen is élvezettel használom. Na és akkor kicsit a részletekről. Nem tervezem minden API függvény részletes boncolgatását, csak pár alap dolgot írok le. A függvények írásánál, a legfőbb szempont nem a funkcionalitás volt, hanem sokkal inkább a biztonság. Nem elég, hogy az a függvény elvégzi a rá kiszabott feladatot. Mindemellett figyelnem kellett minden kiskapura, sosem tudhatjuk, milyen adatokat küldenek kívülről. Értem ez alatt azt, hogy például egy regisztrációkor leteszteltük, hogy a küldött email cím megfelel-e egy valós email felépítésének stb. Ezek a vizsgálatok szükségszerűek. Hiszen elég komoly hibákat kapnánk vissza és akár a szerver összeomlását is kockáztatnánk, ha például egy rosszul begépelt nem létező email címre próbálnánk kiküldeni a regisztrációs email-t. Emellett figyeltünk arra, hogy függvényeinket még véletlenül se használhassa rá nem jogosult személy. Ez a belső rendszerben azt jelentette, hogy minden belépett usert elláttunk egy sh1 hash Tokennel, ami amolyan egyedi kulcsként szolgált a felhasználó azonosítására. Minden ki-be lépésnél ez változott. Így ha egy felhasználó valamilyen oknál fogva olyan adatokat próbált törölni, ami nem az ő kulcsa alá tartozott nem engedtük neki. Ezen kívül létrehoztunk egy biztonsági rendszert, ami arra szolgált, hogy külső személy ne használhassa függvényeinket, hiszen rossz kezekben komoly károkat is okozhatnak. A rendszer logikája a következő: Az egyes függvények változó számú paraméterre hívódnak meg. De minden függvény legalább kettőre. Alapjában véve a ForgotPassword függvény mindössze egy paramétert kap de úgy építettem fel a függvényeket, hogy minden függvényhívásnál küldeni kell egy LANG változót aminek értéke EN vagy HU lehet. Ennek függvényében a válasz szövegét angolul vagy magyarul küldtem vissza. Így már a ForgotPassword is az email cím mellett a lang-el két paramétert kapott. Kitaláltunk egy véletlenszerű karakterkombinációt. ( pl: d’;sd/.ds[=\asd-fg ) Ezt titkos kulcsnak neveztük. Oda adtam ezt a kulcsot az Androidosoknak és megkértem őket, hogy a függvényhívásnál építsenek fel egy stringet, ami úgy áll össze, hogy minden küldött két paraméter közé beírják a csak általunk tudott titkos kulcsot. Tehát ha azt az adatot küldik h alma,körte,szilva és a kulcs az h KULCS akkor a felépített string igy néz ki: almaKULCSszilvaKULCSkörte . Miután ez megvan erről a stringről készítsenek egy SH1 hash-t és küldjék el paraméterként.
7
Nyári Gyakorlat Beszámoló
Amikor én megkaptam a paramétereket megcsináltam ugyanezt a stringet ( persze kivettem belőle a hash paramétert ), én is elkészítettem az SH1-et és összehasonlítottam a kettőt. Csak akkor engedtem tovább a függvényt, ha egyezett a két hash. Igy lehetetlen, hogy valaki külső személy, még ha rá is jön, hogyan építjük fel a hash-t titkos kulcs nélkül tudja majd használni. Itt egy példa. http://188.26.20.143/lynxmobile/student_note/test/index/add_or_edit
Ezt a felületet én készítettem. Minden fügvényhez tartozik egy ien. Arra használtam, hogy énis tesztelhessem a fügvényeket. Leirtam hogyan történik a hash a felépítése, a kulcs nélkül mégis haszontalan. A praktika lejárta után. A vezetőség felajánlotta nekem, hogy teljes munkaidőben, hivatalos alkalmazottként dolgozzak a cégnél továbbra is PHP programozóként. A vizsgafeladatom egy Admin felület elkészítése volt, ahol a felhasználókkal kezelhetjük. Egy napom volt rá. Itt elérhető: http://188.26.20.143/lynxmobile/student_note/admin_login
A funkcionális instrukciókat az oldal aljára irtam. Felhasználónév:
[email protected] Jelszo: admin PS: Kérem a tanárnőt, hogy ne töröljon mér meglévő usert. A törlés kipróbálásához hozzon létre új felhasználót. PS2: Az admin felületre belépve, ha az oldal tetején lévő logóra kattintunk, átvisz a Student Note oldalára. Ez egy nagyon kezdetleges verzió, félkész állapotban hagytam mivel fontosabb dologgal kell dolgoznom a cégnél. Ezen az oldalon az About US gombra kattintva egy másik oldal jön be ahol Rólunk a készítőkről tudhatunk meg infókat. Ez az oldal funkcionálisan kész van. Működik a nyelvváltás is angol és magyar között. Most már csak,a megfelelő szövegeket kell felvinni. Valamint várok arra, hogy mindenkitől megkapjam a képet és a tapasztalatait. Erika és Noémi adatai már felkerültek, angol és magyar nyelven egyaránt. A fényképek és szövegek automatikusan váltakoznak egészen addig amíg az egeret a panel fölé nem visszük. 3.1.4 Tesztelés
A tesztelés az egyik fontos részét alkotta az alkalmazásnak. Rengeteg odafigyelést és türelmet igényelt mindannyiunk részéről amíg minden apró hibát sikerült kijavítanunk.
8
Nyári Gyakorlat Beszámoló
3.1.5 A projekt kiértékelése
A projekt vezetőink megnézték, hogy mit sikerült megvalósítani ezen időszak alatt, majd egy angol nyelvű tesztkérdőív kitöltése várt ránk, mely magába foglalta a nyári időszak alatt szerzett tapasztalataink megosztását. Mivel az egy hónap alatt nem sikerült befejeznünk az applikációt, ezért maradhattunk egyetem kezdetéig, hogy befejezzük ezt és egy új applikációt valósítsunk meg.
3.2 Saját észrevételeink Mindenképp pozitívan gondolunk vissza a nyári gyakorlat alatti időszakra. Úgy gondoljuk rengeteg tudással és tapasztalattal gazdagodtunk. Betekintést nyerhettünk egy informatikai cég munkájába, és bekapcsolódhattunk egy pár hónap erejéig a mindennapjaiba. Lehetőségünk adódott megvalósítani egy projekt kivitelezését a kezdeti stádiumtól egész a kész alkalmazás elkészítéséig továbbá megtapasztalhattuk a csapatmunka fontosságát.
9