Running PuTTy in ConEmu with plink

When you are using ConEmu it’s possible to run multiple Windows consoles in a single window. When you are using PuTTy to ssh to your server, it would be nice to also have it as a tab in ConEmu.

To do that you will need Plink. This is a command-line interface to the PuTTY back ends. With Plink you can connect to the saved sessions from PuTTy, so you don’t have to specify your connection twice.

  1. Download plink.exe from the PuTTy website.
  2. Open the ConEmu settings and go to the Tasks window. Click on the + below the “Reload…” button.
  3. Fill in a name for this task.
  4. Fill in “/single” at the task parameters.
  5. Now first add the path to the plink.exe you have download.
    D:\Documents\plink.exe -load “Vagrant” -new_console”
  6. Between the quotes add the name of the session you have saved at PuTTy. In my case “Vagrant”.
  7. Save the settings.

View the screenshot below for the settings.

conemu

 

Ember App Kit

Na Ember.js een jaar geleden uitgeprobeerd te hebben tijdens een hackathon op school ben ik me er opnieuw in gaan verdiepen. Dit keer ben ik gaan werken met de Ember App Kit. Als oefen project ben ik mijn Films op TV pagina om gaan zetten naar Ember. De belangrijkste bevindingen zal ik behandelen.

De applicatie heeft van twee locaties gegevens nodig, FilmTotaal en Rotten Tomatoes. De gegevens van FilmTotaal worden gecached op mijn eigen site en de API van Rotten Tomatoes (RT) wordt direct aangesproken. In de model van Movie is een belongsTo koppeling gemaakt met de Tomato model. De Tomato model kan dan later door een eigen adapter de RT API aanspreken.

/filmsoptv/blob/master/app/models/movie.js
1
2
3
4
5
6
7
8
9
var Movie = DS.Model.extend({
    titel: DS.attr('string'),
    // regels verwijderd
    synopsis: DS.attr('string'),
    // koppeling met tomato model, die via de Rotten Tomatoes API de beoordelingen ophaald
    tomato: DS.belongsTo('tomato', {async: true})});
 
export default Movie;

De attributen hoeven niet in de DS.Model gedefinieerd te worden, het type wordt dan automatisch herkend. Zijn het echter array’s dan zullen ze wel gedefinieerd moeten worden.

/filmsoptv/blob/master/app/models/tomato.js
1
2
3
4
5
6
7
var Tomato = DS.Model.extend({
    ratings: DS.attr(),
    links: DS.attr(),
    // regels verwijderd
});
 
export default Tomato;

Ember gebruikt standaard het id attribuut als primary key. Voor de koppeling met FilmTotaal is echter het imdb id nodig. Deze is bij RT beschikbaar in de alternate_ids array. Op de volgende wijze kan het imdb id als primary key gedefinieerd worden.

export default DS.JSONSerializer.extend({
    primaryKey: 'alternate_ids.imdb'
});

Op de index moeten twee lijsten ingeladen worden. Met Ember.RSVP.hash kunnen de twee lijsten opgehaald worden.

/filmsoptv/blob/master/app/routes/index.js
1
2
3
4
5
6
7
8
9
10
11
var indexRoute = Ember.Route.extend({
  model: function() {
//  return this.store.find('list', 1); // old
    return Ember.RSVP.hash({
        moviesToday: this.store.find('list', 1),
        moviesTomorrow: this.store.find('list', 2)
    });
  }
});
 
export default indexRoute;

De lijst is vervolgens op volgende manier uit te lezen.

{{#each movie in moviesToday.movies}}
   {{{movie.titel}}}
{{/each}}

Als laatst moet ook de Bootstrap accordion geïmplementeerd worden. Na wat zoek werk ben ik uit de gekomen op de implementatie uit deze Gist op Github.

Ember.js en Laravel uitproberen

Voor een project van school ben ik twee weken bezig geweest met Ember.js, Ember Data en Laravel. Met het Laravel PHP framework heb ik de API geschreven die gebruikt wordt door Ember.js en de iPhone applicatie.

Ember.js is een Javascript Framework dat werkt volgens het MVC principe. Het was voor mij de eerste keer dat ik hier mee werkte, hierdoor moet ik veel uitzoeken en proberen. Ember.js heeft op dit moment al bijna versie 1 bereikt en is daardoor al bijna een stabiele versie. Ember Data daarin tegen is nog volop in ontwikkeling. De communicatie tussen Ember en de API werkend krijgen koste veel tijd en regelmatig wat frustraties.

Het uiteindelijke resultaat is een pagina die een lijst van bewegingsopnames laat zien en een details pagina die grafiek laat zien met bewegingen.

De site is hier te bekijken: http://bci.remcoraaijmakers.nl/

Tijdens de ontwikkeling ben ik tegen verschillende problemen aangelopen. Hier volgen twee tips.

Lijst en details view

In veel gevallen wil je in een website gegevens laten zien. Bij deze applicatie zijn er verschillende opnames van bewegingen, al deze opnames worden in een lijst weergegeven. Als je op een item (exercise) klikt wil je hiervan meer informatie krijgen, namelijk alle logs (motionlogs).

Een belangrijk probleem waar ik tegen aan liep was het laden van de details gegevens van een exercise. Aan de hand van dit (code) voorbeeld kreeg ik een lijst + details weergave werkend. Echter werd bij het openen van de details niet de bijbehorende motionlog gegevens opgehaald via de API. Door de zelfde model voor de lijst en de details te gebruiken werd bij het laden van de details de gecachede data gebruikt van de lijst.

De oplossing heb ik uiteindelijk hier gevonden. Het advies was om een aparte model aan te maken voor de lijst.

1
2
3
4
5
6
7
8
/*
* List model
* Om een aparte lijst te maken
*/
App.ExerciseListing = DS.Model.extend({
name: DS.attr('string'),
createdAt: DS.attr('string')
});

Deze model heeft ook een eigen onderdeel nodig in de API. In mijn geval heet de model in Ember “ExerciseListing”. Daarvoor is volgende endpoint nodig in de api “.nl/api/v1/exercise_listings“.

Om de lijst met exercises te laden bij het openen van de moet de standaard route van Ember.js aangepast worden. De hierboven genoemde model moet namelijk ingeladen worden.

1
2
3
4
5
6
7
8
/*
* Default route
*/
App.ApplicationRoute = Ember.Route.extend({
model: function() {
return App.ExerciseListing.find();
}
});

Opbouw van Ember en data laden via Ember Data

Bij het laden van de details van een exercise wordt de telefoon data via de API geladen. Bij het openen van de details pagina wordt door Ember.js direct de html weergeven. Ember laad hierna pas de data in de html.

Om de grafiek weer te geven is moet eerst de motionlog data geladen zijn. Om de grafiek pas te laten genereren als de data aanwezig is heb ik een javascript timeout gebruikt.

1
2
3
4
5
6
7
8
9
10
11
12
13
App.ExerciseRoute = Ember.Route.extend({
model: function(params) {
return App.Exercise.find(params.exercise_id);
},
setupController: function(controller, model) {
var data = App.Exercise.find(model.id);
controller.set('model',data);
controller.set('content',data);
setTimeout(function(){
controller.addGraph();
}, 3000);
}
});

 

Films op TV, beoordeel

Voor de les Webservices moesten we twee api’s combineren. Na een beetje Googlen kwam ik er toevallig achter dat FilmTotaal.nl een api. Hiermee kunnen de films die vandaag en morgen op tv komen worden opgevraagd. Via hun website kunnen mensen de films beoordelen en in de gegevens zit ook het cijfer dat op IMDb is gegeven.Het leek me dus een goed idee om ook cijfers van een film van een andere site te halen. Daarbij kwam ik uit bij Rotten Tomatoes (developers).

De gegevens van FilmTotaal worden ingeladen via PHP. Deze gegevens probeerde ik eerst via jQuery te laden, echter leek ik op die manier geen toegang te hebben. Door het imdb nummer in de html te plaatsen kan er na het laden van de pagina via jQuery ajax alle beoordelingen van Roten Tomatoes geladen worden.

Het resultaat is hier te zien:
http://www.remcoraaijmakers.nl/filmsoptv/

ActionScript 3: Verschillende creaties

Voor de eerste les van Objectgeoriënteerd programmeren moesten we verschillende opdrachten maken om te oefenen.

Opdracht 1

Als de bal tegen de bovenkant aan komt moet hij weer naar beneden en als hij aan de rechterkant weer terug. Vervolgens was de uitdaging om de ballen ook zwaarte kracht te geven. Met behulp van deze tutorial is dat gelukt.

Resultaat is hier te bekijken: demo (broncode)

Opdracht 2

We moesten twee ballen op de stage zetten die bestuurbaar zijn en veranderen van kleur als ze elkaar raken.

Bal 1 is te besturen met: A, S, D, W
Bal 2 is met de pijltjes te besturen.

Resultaat is hier te bekijken: demo (broncode)

Schip besturen

Voor deze opdracht was het werken met overerven het leerdoel.

Het schip is te besturen met de pijltjes toetsen. Met het schip kunnen de ronden objecten (boei en olievat) op gepakt worden. Hier krijgt de speler dan punten.

Resultaat is hier te bekijken: demo (broncode)

PHP framework Yii

Tijdens de PHP lessen was ik opzoek gegaan naar een PHP framework om iets OO (Objectgeoriënteerd) proberen te maken. Ik ben toen begonnen met een Quiz te maken in CakePHP.

Wat me toen al een tegen zat was de speciale manier van naamgeving aan je classes. Je moest iets in het Engels enkelvoud aanmaken waarna het systeem het meervoud vervolgens bedacht en je het op die manier verder moest gebruiken.

Zo kon je het model ‘Post’ aanmaken en moest je vervolgens de controller ‘posts’ aanmaken.

Het admin gedeelte van de Quiz heb ik werkend gekregen, waarna ik er niet meer verder mee ben gegaan omdat er weer andere opdrachten waren.

Drankjes Gadget

Ondertussen hebben we met project 3 een Hyves gadget gemaakt. Deze staat online en moet natuurlijk ook beheerd kunnen worden. Toen ben ik weer eens gaan zoeken naar een nieuw framework om daarmee op een eenvoudige en snelle manier een beheer systeem mee te maken.

Yii (Yes It Is!)

Ik ben toen al snel met Yii gaan werken. Met behulp van de screencasts en de Gii module heb ik gemakkelijk models en controllers kunnen maken. Je kon direct drankjes en ingrediënten aanmaken, bewerken en verwijderen.

Zelf moet ik nu nog het onderdeel maken dat er voor zorgt dat de ingrediënten ook bij het drankje weergegeven worden.

XML en Javascript opdrachten

Voor de IMP01-3 lessen hebben we drie opdrachten gemaakt. Opdracht één was gericht op het leren maken van xml bestanden en was een voorbereiding op weekopdracht 2. De andere twee opdrachten hebben twee leuke producten opgeleverd en zijn online te bekijken.

Weekopdracht 2

Voor deze opdracht moesten we een kalender maken met jQuery en Javascript. Hiermee moesten we XML bestand uitlezen waarin taken stonden voor een kalender. Die taken moesten getoond worden op de juiste dagen. Het belangrijkste was dat je moest kunnen navigeren tussen maanden en jaren met daarbij rekening te houden met de schrikkeljaren.

Bekijk de kalender hier.

Eindopdracht

Met de kennis van de eerste twee opdrachten moesten we nu een vriendenlijst. We kregen een format waaraan ons XML bestand aan moest voldoen. Zodat iedereen hun gemaakte xml met elkaar kon delen en iedereen hem ook uit kon lezen. Dit bestand moest je vervolgens zelf generen met PHP.

Als je een link van iemand anders in jouw vriendenlijst zette moest het mogelijk zijn om die vriend zijn profiel te bekijken en de projecten die hij gemaakt had.

De XML bestanden moesten met jQuery geladen worden en de vriendenlijst moest ook geanimeerd worden met jQuery. Een ander belangrijk punt was de gebruikers ervaring.

Bekijk het resultaat hier.

Aankomende spellen

Nu we weten welke spellen de studio’s hebben gemaakt gaan we kijken welke er binnenkort uitkomen. Er zullen spellen voor verschillende platformen voorbij komen.

Dat Guerrilla Games op dit moment aan Killzone 3 werkt zal voor de meeste geen verrassing zijn. Het verhaal gaat verder waar deel twee stopte. Het speciale is dat dit derde deel ook in 3D te spelen zal zijn op de PlayStation. Het zal niet zomaar even omgezet worden in 3D. Tijdens de ontwikkeling wordt er wel degelijk rekening mee gehouden. Het spel wordt begin 2011 verwacht.

Friese volksheld

Triangle Studios is bezig met een spel over de Friese volksheld en vrijheidsstrijder Grutte Pier. Begin 16e eeuw streed hij als piraat tegen de Hollanders en de Saksen. Het zal geen spel worden voor de die-hard gamers. Het spel richt zich namelijk op de doelgroep van twaalf tot zestien jaar. Het spel wordt verwacht in 2011 en komt voor de PlayStation 3. Het zal het grootste project van de studio worden tot nu toe.

Daarnaast zijn ze ook nog bezig met het DS spel ‘Calvin Tucker’s Redneck: Farm Animals Racing’. Hiermee kan je met verschillende boerderij dieren kart racen op je DS.

Fight Game: Rivals

Windows Phone 7 is net uit en Khaeon is al bezig met een spel voor het nieuwe platform. Fight Game: Rivals wordt, zoals de titel al zegt een vechtspel. Het zal ook gebruik gaan maken van Xbox Live functies. Waardoor je waarschijnlijk ook achievements kan halen voor het zelfde account als van je Xbox.

Dit zijn de tot zo ver bekende spellen die uit gaan komen. Rough Cookie heeft twee onbekende spellen in ontwikkeling. Daar is jammer genoeg nog niets over bekend.

Minder bekende spellen

De op dit moment twee bekendste spel series die door Nederlandse game studio’s zijn uitgebracht zijn Killzone door Guerilla en Overlord van Triumph. De overige studio’s zijn wat minder bekend. Daarom gaan we kijken welke spellen die studio’s dan maken.

Er worden wel redelijk wat spellen gemaakt door de overige studio’s. De studio’s zijn alleen niet erg bekend bij veel mensen, waardoor je soms ook niet weet dat het spel van een Nederlands development team komt.

App Store

Het spel “Star Defense” is door het Nederlandse Rough Cookie gemaakt. Het is een tower defense wat zich afspeelt op planeten. Het is gemaakt met 3D graphics, wat voor toen één van de eerste was. Het stond vorig jaar in de US App Store top tien best verkopende iPhone spellen van die zomer. Voor de App Store hebben ze ook nog de puzzel spellen Waterways en Dougie Moo’s Aqua Antics gemaakt.

De spellen ‘GodFinger All-Stars’ en ‘Titan Wars’ zijn gemaakt door Khaeon. Zij hebben daarbij samengewerkt met Rough Cookie. Khaeon heeft ook weer samengewerkt met Rough Cookie aan de eerder genoemde spellen. Naast deze spellen heeft Khaeon ook nog een drietal pc spellen gemaakt. In 2003 Aplha Black Zero, 2004 Eurocops en in 2009 Chronicles of Spellborn.

Nintendo

Triangle Studio is de maker van een groot aantal Nintendo DS spellen. Dit zijn onder andere Stratego: Next Edition, 10 Voor Taal, Denksport, Één tegen 100 en Pluk van de Petteflet. Een WiiWare en iPhone spel wat vorig jaar door hun is uitgebracht is ‘Heron: Steam Machine’. Dit is een snel puzzel spel waarbij je pijpleidingen goed moet leggen.

Two Tribes heeft in 2007 Worms: Open Warfare 2 naar de DS gebracht. In deze versie hebben ze de nieuwe Forts en Race multiplayer modes verwerkt. Aan het spel zijn ook elf nieuwe wapens toegevoegd waaronder een boemerang.

Zo zie je dat de minder bekende studio’s ook een reeks spellen hebben gemaakt. Deze zijn alleen niet zo goed doorgebroken als Killzone en Overlord. In het volgende en laatste artikel gaan we kijken welke spellen er nog aankomen.