2013. október 8., kedd

DinoPlayer - streaming zenelejátszó Firefox OS-re

A legújabb Firefox OS-re készült alkalmazásom, mely a DinoPlayer nevet viseli egy érintőképernyős eszközökre optimalizált streaming zenelejátszó alkalmazás. Legnagyobb előnye, hogy használatával nem kell rátöltenünk zenéinket telefonunkra, hanem egy tetszőleges internetről elérhető helyen kell csak elérhetővé tennünk .mp3 formátumú fájljainkat és onnan internetkapcsolat meglétében hallgathatjuk őket. További előnyök a zeneszámok adatainak (előadó, szám címe, album, év, hossz) automatikus kiolvasása, valamint automatikus borítókeresés zenehallgatás közben.

Fejlesztési oldalról érdekes lehet, hogy az egyes webes tárhelyek használatához nincs szükség semmiféle API-ra, például a tárolt zeneszámok adatainak kiolvasásához, hanem ezt is a HTML5 audio tag-jének segítségével oldottam meg (érdeklődőknek továbbiak a projekt GitHub oldalán). Ezért is terjeszthető ki szinte tetszőlegesen a támogatott webes tárhelyek listája.

Az alkalmazás felhasználói felülete teljes mértékben ismert gesztúrákkal irányítható. A képernyőre bökve hozható elő a zeneszámok indítására illetve leállítására szolgáló Play/Pause gomb, swipe mozdulattal lehet váltani a számok között. A szerver oldali komponensekkel való kommunikáció közben egy töltő csík látható a képernyő felső részében, ilyenkor töltődnek le a szám adatai, illetve a hallgatott zene albumjának borítója. Lehetőség van az adott zeneszám ismétlésére is a fenti jobb screenshoton is látható Replay gomb segítségével. A főképernyő bal felső sarkában lévő Menü gombbal hozható elő a menü, ahol egy listából kiválasztható a betöltött zenealbumból lejátszásra egy zeneszám. A menüben lehet újratölteni az eddig betöltött albumot, illetve itt lehet előhozni a lent is látható beállítások ablakot.

Beállítás

Mint ahogy korábban is írtam alapvetően bármely internetről elérhető helyről lehetőség van zeneszámok lejátszására a DinoPlayer-rel. Ehhez azonban először elő kell készíteni a DinoPlayer számára az adott zenemappát (telepíteni kell a DinoPlayer Helper-t), melyet Linux-ról és Windows-ról is megtehetünk. A DinoPlayer-hez mindenképp valamilyen cloud tárhely használatát ajánlom; most az egyik ajánlott tárhely a Dropbox beállítását fogom bemutatni DinoPlayer-hez.

DinoPlayer Helper telepítése

Linux:

Hozz létre egy mappát a Dropbox Public mappádban, és másolj bele .mp3 fájlokat. Töltsd le a telepítő szkriptet (install.sh) az előbb létrehozott új zenemappádba, és futtasd a szkriptet! Vagy csak simán futtasd terminálból az előbbi mappába lépve a következő parancsot:

$ curl https://raw.github.com/thesnapdragon/dinoplayer/master/install/release/linux/install.sh -o- | bash

Windows:

Hozz létre egy mappát a Dropbox Public mappádban, és másolj bele .mp3 fájlokat. Töltsd le a telepítő szkriptet (install.bat) az előbb létrehozott új zenemappádba, és futtasd a szkriptet!

Zenemappa hozzáadása

Miután telepítetted az előző pontban a DinoPlayer Helpert, Dropbox esetén a Public mappa azonosító számát és a zenemappa nevét kell csak megadni, melyet például a fenti screenshoton is látható módon lehet megszerezni Intézőből. Másik lehetőség a Dropbox oldalán belépve:

Ha egyéb tárhelyeket szeretnénk használni, a Más webes tárhely opciót kell választani, ilyenkor a zenemappa teljes URL-jét kell megadni DinoPlayer-ben. Dropbox esetén ez például a Public mappában található zenemappa teljes, publikus URL-jét jelenti.

A későbbiekben további webes tárhelyek használatához lesz segítség a programban, illetve további fejlesztések is várhatóak. Enjoy!

Hivatalos oldal

DinoPlayer a Firefox Marketplace-en

DinoPlayer GitHub oldala

2013. október 6., vasárnap

Prolog IDE készítése Sublime Text-ből

Prolog fejlesztéshez nincs túl sok jó fejlesztői környezet. Ha mégis ezt a nyelvet kell használnunk elég hamar megunhatóak a különféle Prolog implementációk interaktív programjainak használata. Sokat lassít a fejlesztésen mentés után a fájlok folytonos újratöltése, futtatása, meghívása. Bár léteznek például az emacs szövegszerkesztőhöz Prolog fejlesztést segítő kiegészítések, ha valaki egy felhasználóbarátabb megoldást keres, hasznos lehet számára az a környezet, amit most bemutatok.

Egy ideje elkezdtem használni a Sublime Text szövegszerkesztőt, elég sok leírás van róla az interneten, érdemes kipróbálni hátha megtetszik. A szerkesztő fontos tulajdonsága, hogy rendkívül könnyen kiegészíthető és rengeteg nyelvhez van beépített támogatása is, így sok esetben komplett IDE-ként használhatjuk.

Az ingyenes SWI-Prolog implementációhoz, már elkészítve találtam egy plugint, melyhez már létezik syntax highlighting, és egy komplett build system. Telepítéséhez a Package Control-ban (CTRL+SHIFT+P), a csomagok közt (Install Package) keressünk rá a Prolog szóra, és telepítsük a kiegészítést. Ezt a csomagot érdemes mindenképpen telepíteni a Prolog syntax highlighting miatt is. Kérdezhetnénk, hogy egy ilyen nyelvet, mint a Prolog, hogyan lehet "fordítani", vagy futtatni? Mivel a Prolog programokban nincsen olyan belépési pont, amely a program meghívásakor meghívódik alapértelmezetten, nem fogjuk tudni automatikusan futtatni az elkészült programunkat a szövegszerkesztőnkben. Egy kis kiegészítéssel, viszont a legtöbb Prolog implementációban elérhető az, hogy a Prolog interpreter indításakor automatikusan betöltse a programunkat egy fájlból, és meghívjon egy előre megadott célt (goal).

Ehhez készítsünk egy main elnevezésű goalt, ahol hívjuk meg az általunk írt, saját célt. Azért, hogy a Prolog visszalépéses mechanizmusát az interaktív programmal kikerüljük, érdemes a findall paranccsal az összes megoldását megkeresni a programunknak, melyet aztán egy listába foglalva kiírathatunk. Ezeket a lépéseket minden Prolog program írásakor meg kell tennünk, így érdemes összefoglalni snippet-be:

Tools > New Snippet...

majd másoljuk be a következő XML formátumban megadott snippetet, mely a main szó után egy TAB gombbal illeszthető majd be:

Ha valaki nem a fenti, ingyenes Prolog implementációt használja, hanem a Sicstus Prolog-ot, akkor egy kicsit más lesz a buildeléshez használható parancs; csináljunk egy új Build System-et:

Tools > Build System > New Build System...

és illesszük be a következő JSON-t:

Megjegyzés: Megfelelő működéshez hozzunk létre egy linket a prolog néven a Sicstus Prolog telepítésünkre:

cd /usr/bin
sudo ln -s <SicstusPrologElérésiÚt>/sicstus prolog