Website voor bioscoop(keten) Filmpje

Door Timons106 op maandag 05 november 2012 17:14 - Reacties (14)
Categorie: Development, Views: 2.844

We zijn weer twee weken verder (eigenlijk drie, maar de herfstvakantie tellen we niet mee), en we hebben het eindproduct ingeleverd bij de Product Owner.

Voor ik verder ga met het technische gedeelte wil ik jullie eerst een trailer laten zien die ik voor het project gemaakt heb.



In de laatste Sprint hebben we ons vooral gefocused op het reserveringssysteem, de docenten hadden het allemaal over HTML 5 storage, dus ik besloot me daar in te verdiepen.

Gaandeweg ben ik erachter gekomen dat het maken van een reserveringssysteem moeilijker is dan gedacht. De donderdag in de herfstvakantie ben ik begonnen met het maken van de tabellen voor de zalen.

Na wat experimenteren was dat aardig gelukt, je kon nu in een tabel stoelen selecteren, de prijs werd dan gelijk berekend als je een stoel selecteerde.
Er was alleen een probleem, de geselecteerde stoelen moesten opgeslagen worden zodat ze niet meer gereserveerd konden worden.
Ik heb zitten tobben tot vorige week woensdag, terwijl het project vrijdagmiddag om 12:00 ingeleverd moest worden, ik heb toen op Stack Overflow de vraag gesteld hoe je dus de id's van de stoelen in local of session storage op zou kunnen slaan, ik wist dat je hier een array voor moet gebruiken, ik had alleen echt geen idee hoe je dan meerdere stoelen op zou kunnen slaan.

Gelukkig wordt je op Stack Overflow heel erg goed geholpen als ze zien dat je zelf er echt over nagedacht hebt (voor degenen die geïnteresseerd zijn in het antwoord: http://stackoverflow.com/...ith-local-session-storage).

Verder heb ik nog wat fixes doorgevoerd, zoals sprites voor het menu en dat je nu ook op de sprite kunt klikken.

Voor degenen die geïnteresseerd zijn in het resultaat: http://www.metroblogger.com/filmpje http://www.timonvanspronsen.nl/filmpje deze is een stuk sneller :)

Ik wil jullie graag vragen of jullie dit soort blogs interessant vinden, zo ja, dan wil ik dit voor de volgende projecten doorzetten (volgende project is een app voor iOS of Android, hopelijk mag Windows Phone ook :D).

Volgende: Android app - sprint 1 06-'13 Android app - sprint 1
Volgende: [WIP] Website voor bioscoop(keten) - sprint 2 10-'12 [WIP] Website voor bioscoop(keten) - sprint 2

Reacties


Door Tweakers user Caelorum, maandag 05 november 2012 17:20

Ik zie dat je de stoelen tijdens de reservering lokaal bij de gebruiker opslaat. Hoe zit dat met een eventuele andere gebruiker die ook kaartjes wil kopen voor die film? Kan die als die sneller is de stoelen dan wegkapen?
In veel bioscoopsystemen worden die dingen in ieder geval tijdelijk in de database gemarkeerd als gereserveerd. De tijdelijke reservering verloopt dan vaak na 15 of 30min en wordt pas permanent wanneer de gebruiker heeft betaald. Dit alles natuurlijk om te zorgen dat een gebruiker ook echt die stoelen kan krijgen als deze ze heeft geselecteerd en niet hoeft zitten te haasten voor het geval een andere gebruiker sneller is.

Door Tweakers user Timons106, maandag 05 november 2012 17:24

Caelorum schreef op maandag 05 november 2012 @ 17:20:
Ik zie dat je de stoelen tijdens de reservering lokaal bij de gebruiker opslaat. Hoe zit dat met een eventuele andere gebruiker die ook kaartjes wil kopen voor die film? Kan die als die sneller is de stoelen dan wegkapen?
In veel bioscoopsystemen worden die dingen in ieder geval tijdelijk in de database gemarkeerd als gereserveerd. De tijdelijke reservering verloopt dan vaak na 15 of 30min en wordt pas permanent wanneer de gebruiker heeft betaald. Dit alles natuurlijk om te zorgen dat een gebruiker ook echt die stoelen kan krijgen als deze ze heeft geselecteerd en niet hoeft zitten te haasten voor het geval een andere gebruiker sneller is.
Het is bedoelt als een simulatie, sommigen hebben inderdaad PHP en een database hiervoor gebruikt, maar session of local storage is voor dit project voldoende en wordt zelfs aangeraden.

Als ik met meer man was (we waren met z'n tweeën omdat er twee mensen in de eerste week van het project zijn afgevallen) had ik waarschijnlijk wel voor PHP en een database gekozen, maar nu ging dat simpelweg niet omdat ik de enige ben in mijn groepje van twee die ook maar iets van JavaScript af weet.

Door Tweakers user ThoffeGast, maandag 05 november 2012 17:35

Wat Caelorum zegt lijkt me inderdaad een belangrijk punt. In elk reserveringssysteem zal je hier mee te maken hebben, je kan iets maar 1x reserveren. En jij als ontwikkelaar moet dus voorkomen dat het 2 (of meer) voor gaat komen.

Dit probleem moet je in principe bij de bron aanpakken, namelijk je database. Hierin zal je moeten werken met locking / transacties om ervoor te zorgen dat er binnen 1 transactie wordt gekeken of hetgeen er wordt gereserveerd nog vrij is, en zo ja, dan moet je de reservering plaatsen.

Via tijdelijke reserveringen kan je inderdaad ervoor zorgen dat iemand rustig de tijd krijgt om zijn reservering af te maken. Maar via het locken voorkom je de daadwerkelijke dubbele reservering op het 'laagste' niveau. (Het kan ook zijn dat 2 mensen op exact het zelfde tijdstip om "reserveer" klikken. Zeker bij een druk gebruikt systeem is die kans zeker niet klein).

Je conclusie dat reserveringssystemen maken lastig is, ben ik het wel mee eens :)

Als docent zou ik in ieder geval wel belang hechten aan wat voor maatregelen je hebt getroffen voor een goede data integriteit (en minder belang aan local storage.. ). Maar ieder zo z`n ding :)

Door Tweakers user Timons106, maandag 05 november 2012 17:39

@ThoffeGast Zoals ik al zei, het moet de werkelijkheid simuleren, vandaar dat we geen PHP hoefden te gebruiken. Sterker nog, als we PHP wilden gebruiken moesten we het zelf uitzoeken (heb ik nu ook wel gedaan met JS), want de docenten helpen je niet met PHP.
Kijk ze hadden natuurlijk beter nog één sprint eraan kunnen plakken om ons PHP te leren, dat ga ik ook zeker aankaarten zodat het volgend jaar niet weer gebeurd (ben klassenvertegenwoordiger :)).

Maar bedankt voor de feedback.

Door Tweakers user Hahn, maandag 05 november 2012 19:32

Je logo zegt nu eigenlijk Fitmpje... ;)

Door Tweakers user Timons106, maandag 05 november 2012 19:33

Hahn schreef op maandag 05 november 2012 @ 19:32:
Je logo zegt nu eigenlijk Fitmpje... ;)
Niet mijn logo ;), en ik mocht het ook niet veranderen :/.

Door Jan-Willem Keijzer, maandag 05 november 2012 21:47

Ik heb 'm geprobeerd op mijn Surface RT tablet. Daar werkt hij in ieder geval prima op! Het resultaat ziet er beter uit dan de eerste versie. Goed werk! Morgen ga ik 'm Surface tablet terugsturen naar de VS. Ik ben er niet tevreden over (jij gelukkig wel over jouw website). Als je een goeie tablet wilt, kun je beter een goeie tablet nemen zoals de iPad 2 of 4 of Nexus 10. Die tablets hebben een hogere resolutiescherm (echt veel fijner voor tekst!), zijn goedkoper (de iPad2 is goedkoper net als de N1), net wat lichter en hebben een veel grotere bibliotheek aan apps en boeken e.d. Als je juist een goede machine wilt voor tekstverwerking dan kan je juist weer beter een echte laptop kopen (zoals een Macbook Air 11"). Dan kun je het scherm afstellen (de Surface kent slechts 1 stand voor de achterstandaard), heb je wél een volledig desktop-OS met al die voordelen (de Surface RT draait geen desktop-apps, nog x86 nog lekker meer dan 2 windows open), en tikt het lekkerder dan de touch/typecover. De Surface RT is niet de beste tablet en ook niet de beste laptop. Dus hij gaat terug. Ik heb liever een echt goeie tablet of een echte goeie laptop, dan zo'n halfgebakken misbaksel dat het van beide net niet is. Ook is de 32GB een leugen, want in werkelijkheid heb je maar 16 GB over (32GB = eigenlijk 30GiG - 5GB voor de recovery - 8GB voor het OS/Office/Built-in Apps = 16GB over).Succes met je website desalniettemin!

Door Tweakers user Timons106, maandag 05 november 2012 21:54

Jan-Willem Keijzer schreef op maandag 05 november 2012 @ 21:47:
Ik heb 'm geprobeerd op mijn Surface RT tablet. Daar werkt hij in ieder geval prima op! Het resultaat ziet er beter uit dan de eerste versie. Goed werk!
Dank u :).

Door Tweakers user ThoffeGast, dinsdag 06 november 2012 10:11

Ik zag je reactie inderdaad nadat ik mijn reactie had geplaatst :)

Ik ga er vanuit dat dit nog een beginvak is? En dat je ongetwijfeld in de toekomst wel de diepte in gaat met bijv. databases en php (of java of c# etc).

Ik zou er in ieder geval als klassenvertegenwoordiger bovenop zitten. Ik ken toevallig het clubje informatica bij de HR, en er lijkt steeds minder echte informatica te worden gegeven, en juist meer 'front-end' ala html 5 + javascript.

succes met de studie verder!

Door Tweakers user Timons106, dinsdag 06 november 2012 10:18

ThoffeGast schreef op dinsdag 06 november 2012 @ 10:11:
[...]


Ik zag je reactie inderdaad nadat ik mijn reactie had geplaatst :)

Ik ga er vanuit dat dit nog een beginvak is? En dat je ongetwijfeld in de toekomst wel de diepte in gaat met bijv. databases en php (of java of c# etc).

Ik zou er in ieder geval als klassenvertegenwoordiger bovenop zitten. Ik ken toevallig het clubje informatica bij de HR, en er lijkt steeds minder echte informatica te worden gegeven, en juist meer 'front-end' ala html 5 + javascript.

succes met de studie verder!
Dit is nog heel basic inderdaad, omdat het nog het eerste kwartaal van het eerste jaar is :).
Ik weet in ieder geval dat we dit jaar nog een webwinkel en een app moeten maken, dus dan zullen we wel met databases en Java (of C# of JS als Windows Phone ook mag :)) te maken krijgen.

Door Tweakers user Caelorum, dinsdag 06 november 2012 11:01

Jij had overduidelijk de Surface Pro moeten halen ipv. de Surface RT.
Timons106 schreef op dinsdag 06 november 2012 @ 10:18:
[...]
Dit is nog heel basic inderdaad, omdat het nog het eerste kwartaal van het eerste jaar is :).
Ik weet in ieder geval dat we dit jaar nog een webwinkel en een app moeten maken, dus dan zullen we wel met databases en Java (of C# of JS als Windows Phone ook mag :)) te maken krijgen.
Bijt je niet teveel vast in één taal (JS). Het beste wat je kan doen is één taal kiezen die je echt goed gaat leren kennen en dan nog zoveel mogelijk kennis maken met andere talen, dus java, C#, C++, Objectice-C, Ruby, F#, enz.
Het leren van andere talen en frameworks en oplossen van problemen daarin geven je namelijk nieuwe inzichten die je anders waarschijnlijk niet zou hebben gehad.

Door Tweakers user Timons106, dinsdag 06 november 2012 11:19

Caelorum schreef op dinsdag 06 november 2012 @ 11:01:
[...]

Jij had overduidelijk de Surface Pro moeten halen ipv. de Surface RT.


[...]

Bijt je niet teveel vast in één taal (JS). Het beste wat je kan doen is één taal kiezen die je echt goed gaat leren kennen en dan nog zoveel mogelijk kennis maken met andere talen, dus java, C#, C++, Objectice-C, Ruby, F#, enz.
Het leren van andere talen en frameworks en oplossen van problemen daarin geven je namelijk nieuwe inzichten die je anders waarschijnlijk niet zou hebben gehad.
Oh ik was zeker niet van plan vast te bijten in één taal :). Sowieso wil ik C# leren, omdat je dit kan gebruiken in apps voor Windows, Windows Phone etc. en natuurlijk voor ASP.NET.
Java zal min of meer verplicht worden denk ik :).

Ik heb trouwens net te horen gekregen dat het volgende project geen app maken is, maar een game maken, dus dat wordt nog interessant :).

Door Tweakers user Caelorum, dinsdag 06 november 2012 23:23

Timons106 schreef op dinsdag 06 november 2012 @ 11:19:
[...] Ik heb trouwens net te horen gekregen dat het volgende project geen app maken is, maar een game maken, dus dat wordt nog interessant :).
Ah games maken... De tak van de IT wereld waar de grootste valkuil is dat je teveel bezig bent met het spelen met je eigen creaties :D

Door Tweakers user Blokker_1999, woensdag 07 november 2012 07:31

Het is bedoelt als een simulatie, sommigen hebben inderdaad PHP en een database hiervoor gebruikt, maar session of local storage is voor dit project voldoende en wordt zelfs aangeraden.
Imho een slecht uitgangspunt. Zo een hele oefening zou net moeten dienen om een volledig werkend systeem in elkaar te boksen. Nu onderzoek en implementeer je dingen die voor het gegeven probleem eigenlijk niet relevant zijn.

Reageren is niet meer mogelijk