/vol/home
, is een workaround om het Android project tijdelijk in /scratch
te zetten op de lokale harddisk. Dit kan
als volgt:
/scratch
een nieuwe map maken /scratch/s1234567
.~/AndroidStudioProjects
naar deze nieuwe map kopieren.chmod
of met een grafische file browser~/.AndroidStudio2.3
verplaatsen naar ~/.AndroidStudio2.3.backup
. (~/Android
map kan blijven staan).
/scratch
in Android Studio./scratch
terug naar je home-directory! Alleen de home-directory is vanaf alle machines bereikbaar!Er zijn problemen met Instant run in combinatie met netwerkshares. Het is daarom belangrijk om instant run uit te schakelen:
Het is niet mogelijk om binnen Netbeans aan het Play project te werken omdat Netbeans niet met het SBT build system overweg kan. Met Android Studio is dit wel moglijk, met behulp van het uitvoeren van de volgende stappen:
build.sbt
zit.
Je kunt in de terminal binnen de IDE activator run
uitvoeren om het programma te laten draaien binnen de IDE.
Om JSON te kunnen gebruiken in een Play project kun je gebruik maken van de
import play.libs.Json
. Helaas ontbreken hier routines om op een
eenvoudige manier JSON-objecten aan te maken. Een handige klasse om dit te
kunnen doen is ObjectNode
en deze kan gevonden worden in de
Jackson-library. Om deze in een Play project te kunnen gebruiken moet deze als
library dependency worden opgegeven. Voeg hiertoe in het bestand
build.sbt
de volgende regel toe aan de
libraryDependencies
: "com.fasterxml.jackson.core" %
"jackson-databind" % "2.4.0"
(inclusief aanhalingstekens). Met de import
com.fasterxml.jackson.databind.node.*
heb je nu toegang tot
ObjectNode
. Voor een voorbeeld, zie de sectie over SQLite
hieronder.
Om SQLite in een Play project te kunnen gebruiken, moeten er library dependencies
worden toegevoegd. De truc is om in het bestand build.sbt
het volgende aan de libraryDependencies
-lijst toe te voegen: "org.xerial" % "sqlite-jdbc" % "3.8.11.2"
(aanhalingstekens ook in het bestand zetten). Dit is de JDBC driver voor SQLite, welke standaard niet wordt meegeleverd. Daarna kun je met de SQLite-database verbinden door in het bestand conf/application.conf
helemaal onderaan bij het gedeelte db {
de volgende regels toe te voegen:
default.driver=org.sqlite.JDBC default.url="jdbc:sqlite:/absolute/pad/naar/database.db"
Voor meer details over het instellen van database drivers zie https://www.playframework.com/documentation/2.5.x/JavaDatabase.
Een klein voorbeeld om een SQL query uit te voeren (het uitlezen van de tabel "users") en de resultaten terug te gegeven als JSON object is het volgende:
Connection connection = db.getConnection(); ArrayNode result = Json.newArray(); try { Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while (rs.next()) { ObjectNode user = Json.newObject(); user.put("id", rs.getInt("id")); user.put("name", rs.getString("name")); result.add(user); } } catch (SQLException e) { System.out.println(e); } return ok(result);
sqlite3
. We hebben ook een
grafische applicatie geïnstalleerd. Deze applicatie staat in het
PT-environment en kun je opstarten met het commando sqlitebrowser
.
ptweb.liacs.nl
. Accounts worden tijdens het werkcollege uitgedeeld door de
hoofd-assistent (Leon Helwerda).
Ieder team krijgt ook een TCP poort toegewezen waarop de Play server moet
draaien. Dit moet worden ingesteld in het bestand conf/application.conf
in de Play distributable (vul hier het correcte poortnummer in):
http.port = 9101Tevens moet in
code/application.conf
de context worden
ingesteld (vul hier de correcte teamnaam in):
play.http.context="/team11/"Door met ssh in te loggen op de server kan de applicatie worden opgestart. De applicatie is bereikbaar onder
http://ptweb.liacs.nl/team10/
(vul
hier weer de correcte teamnaam in). Let op: in deze uiteindelijke URL komt
GEEN poortnummer voor en de teamnaam MOET in de URL staan. De server is
alleen benaderbaar vanuit het Universitaire netwerk. Via deze URL wordt er
automatisch contact gemaakt met de Play server van dit team die draait op de
specifieke poort.
./conf/application.conf
)activator dist
om een "Play-distributable" te maken, wat een .zip bestand in ./target/univeral/
genereerd.sshfs
het filesystem van de server op je lokale machine: mkdir ~/mnt
, dan sshfs teamXX@ptweb.liacs.nl:/home/teamXX/ ~/mnt
. Hierna kun je via de ~/mnt
map op je lokale machine bij de bestanden in de home-directory van de server komen.~/mnt
map dus) en pak dit zip-archief hier uithttp.port = 91XX # Poort verschilt per team, zie het papiertje met de account-details play.http.context = "/teamXX/"
/home/teamXX/database.sqlite3
. Sla het database-bestand niet op binnen een map behorende bij het Play-project, deze wordt anders overschreven bij elke deployment naar de server.ssh teamXX@ptweb.liacs.nl
. Start vervolgens "screen" op door screen
uit te voeren. Alles wat binnen een screen-sessie wordt uitgevoerd blijft bewaard tot dat je de screen-sessie expliciet afsluit, dus ook als je de ssh-verbinding verbreekt. Start binnen screen
de Play-server op door de executable in de ./bin/
-map uit te voeren (in de uitgepakte distributable). Later kun je door screen -r
uit te voeren via "ssh" de eerder gestarte screen-sessie weer terug krijgen (re-attachen), bijvoorbeeld als je op een andere dag de Play-server wil herstarten wegens een update.screen
screen -r