Berichten over ‘programmeren’

Voor mezelf: Java

Wednesday, 15 April 2009

Main

In Eclipse heb je altijd een main nodig om je code te kunnen testen. Zoals bv. deze:

public class testKlasseStudent {
public static void main (String  args[ ]){
Student a = new Student("Jef Janssen", 1.83, 75);
a.toonAlles();
}
}

Arrays

Grootte van een Array

Geef het aantal elementen in een Array weer.

public int getAantal() {

return tabel.length;
}

Woordjes

Tuesday, 23 March 2010

Sinds het begin van dit semester moeten we elke week Franse woordjes oefenen.
Mezelf kennende wist ik dat ik zoiets niet lang zou volhouden,
tenzij er een manier bestond waarbij het leuk is om die woordjes te oefenen… als ik er dus een soort uitdaging van kon maken.
Na enig denkwerk besloot ik om zelf een programmaatje te schrijven. “Woordjes” was geboren!

Nu we halfweg het semester zijn en het programmaatje bruikbaar, maar nog niet perfect, is wil ik het met jullie delen.
U vindt de download link in de rechter kolom.

Hoe gebruik ik woordjes?

  • Eens gedownload dubbelklikt u op de zip-file. (voor Windows-gebruikers is dat “bestanden uitpakken” ofzoiets)
  • Een map, Woordjes, komt tevoorschijn met daarin het bestand Woordjes.jar.
  • U dubbelklikt op Woordjes.jar (Bij oude Linux distributies kan het zijn dat u het programma via de commandline moet opstarten. Dit doet u met het commando: java -jar Woordjes.jar)
  • U krijgt dan het startscherm te zien met daarop het eerste woord dat u moet vertalen. (in dit geval “een hond”)
startscherm woordjes

Het Woordjes startscherm

U typt dan de vertaling, in dit geval un chien, in het tekstveld en drukt op enter.
Als het woord juist is dan geeft hij het volgende woord dat u kan vertalen.
Is het woord fout dan krijgt u de juiste vertaling te zien in het rood, die dient u dan over te typen in het tekstveld.
Vervolgens drukt u weer op enter.

Is het woord deze keer wel juist dan krijgt u het volgende woord te zien.
Is het woord fout dan blijft hij vragen naar de juiste vertaling.

Voorlopig is er nog geen mogelijkheid om zonder een juiste oplossing naar het volgende woord te gaan.


Digest access authentication in Titanium

Tuesday, 15 May 2012

Blijkbaar is veiligheid geen prioriteit bij appcelerator en implementeren ze wel basic authentication maar geen digest…
Iemand heeft hen dat ooit al wel eens gezegd bij wijze van feature request maar de priority daarvoor is “low”.
Eitherway, dan maar zelf proberen op te lossen:

	// Let's try to make a connection
	var request = Titanium.Network.createHTTPClient();
	
	request.onload = function() {
		// Because we're using digest authentication
		// we won't get anything here yet
		// but getting a 401 error instead
	};

	request.onerror = function(e) {
		Titanium.API.info("IN 'normal' ERROR: " + JSON.stringify(e));
		if (this.status == 401) {
			wwwAuthString = "" + this.getResponseHeader("WWW-Authenticate");
			// Get all www-Authenticate from the header
			var wwwAuthArray = Array();
			wwwAuthArray = wwwAuthString.split(",");
			var nonceArray = Array();
			// Get the nonce part
			nonce = "" + wwwAuthArray[2];
			// And get rid of nonce=
			nonceArray = nonce.split('"'); // split on "
			nonce = nonceArray[1]; 
			Ti.API.info('nonce = ' + nonce);
			
			// And try again
			var req2 = Titanium.Network.createHTTPClient();
			req2.onload = function(e) {
				alert("SUCCES!: " + JSON.stringify(e));
				Titanium.API.info("In success mode: " + this.responseText);
				// DO SOME OTHER STUFF	
			};
			req2.onerror = function(e) {
				alert("ERROR req2 " + e.error);
			}
			req2.setTimeout(10);
			req2.setRequestHeader("Content-Type","application/json");
			// open the client
			req2.open('GET', 'http://host.tld/path');
			// Populate all vars for digest authentication
			var realm = "REST API";
			var uri = "/path";
			var qop = "auth";
			var nc = '00000002'; // This shouldn't be a fixed value
			var cnonce = "0a4f113b"; // Idem ditto
			var A1 = Ti.Utils.md5HexDigest('username' + ':' + realm + 'password');
			var A2 = Ti.Utils.md5HexDigest('GET'+':'+ uri);
			var resp = Ti.Utils.md5HexDigest(A1 + ':' + nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + A2 );
			// Add authentication'
			var authstr = 'Digest ' + resp; 
			req2.setRequestHeader('Authorization', authstr);
			// send the data
			req2.send();
		}
	};
	
	request.setTimeout(10);
	request.setRequestHeader("Content-Type","application/json");
	// open the client
	request.open('GET', 'http://host.tld/path');
	// send the data
	request.send();

Ik ben er in geslaagd data van de server terug te krijgen die noodzakelijk is voor digest authentication, maar wanneer ik die data naar de server terugstuur loopt het mis en krijg ik alsnog een error. Moest je toevallig een oplossing hiervoor hebben of deze code verder uitpluizen: Let me know 😉


Wat doen cookies in een iframe?

Sunday, 15 September 2013

Is het mogelijk om cookies te plaatsen vanuit een pagina in een iframe?

tl;dr: Ja.

Iets langere uitleg en test:

Om dat te testen heb ik twee pagina’s gemaakt.
Een index-pagina met iframe en een php-pagina waarin de cookies geplaatst worden.

Wanneer je naar de pagina met iframe gaat dan kan je zien dat er wel degelijk een cookie geplaatst wordt.