LinuxTag

Tntnet

mit c++ web applikationen erstellen. es ist keine apache module oder aehnliches.

der content wird grundsaetzlich mit templates erstellt (ecpp)

c++ klassen und bibs uneingeschraenkt nutzbar

standalone webengine

multithreaded also skalierbar

persistente app

automatische http komprimierung was oft vergessen wird also http komprimierung nicht genutzt. interessant fuer embedded apps.

ssl unterstuetzung (gnutls, openssl)

optimierter c++ code

tests mit apache bench zeigen sehr gute performance

features

automatisches sessionmanagement

session request application und threadscope fuer beliebige c++ objekte mit automaatischen locking

request parameter werden geparst

file upload cookies, i18n (bestimmte worter werden durch tags eingepackt und so internationalisiert)

grafiken und andere binaer daten koennen mit compiliert werden.

compiler oder interpreter auf dem server nicht notwendig

fehler behandlung durch exceptions

portabel durch die verwendung von standard c++ (linux,unix)

logging

automatisches html-encoding: steuerung falls tags enthalten sind ob diese ausgegeben werden oder nicht.

savepoint: nehme ausgabe im fehlerfall bis zu einem sicheren punkt zurueck

FreeWRT

linux distribution fuer embedded system http://www.freewrt.org/

paketmanagement ueber ipkg

systeme mit 8mb flash

konfiguration ueber kommandozeile

cross compile

anwendungsgebiete

router

vpn endpoint

musikserver

telefonanalage

... (alles was linux hergibt)

portierung von tntnet auf freewrt

start am linux tag in chemnitz 4.03.2007

uClibc++

buggy
viele patches auch an upstream

tnt laeuft portierung ist noch nicht endgueltig abgeschlossen

tntnet schnell auch mit schwacher cpu bis zu 300 request pro sec

plaene fuer konfigurationsoberflaeche:modular,einfach erweiterbar durch definition von konfigurationsvariablen oder plugins

wie funktioniert tntnet

tntnet bekommt http-request und switcht das zu urlmapper nach MapUrl ^ /blah$ comp@lib und landet bei konponente

ecpp komponente also template compiler

beispiel

 vi mycomp.ecpp
 make
 scp mylib.so admin@myrouter
 ssh admin @myrouter

webconfig.ecpp

 html code mit c++ code

linuxtag.ecpp

 <%args>

die tags

 <$ ...$> ausgabe c++ ausdrucks
 <{...}> c++ verarbeitungsblock
 <%args>...</%args> formular parameter
 <%pre>...</%pre>
 <& component >
 <#...#> kommentar

kontakt

www.tntnet.org www.freewrt.org tommi@tntnet.org irc:freenode #tntnet, #freewrt


skalieren einer web anwendung mit amazon s3 und ec2

dienst von amazon fuer 15 cent pro gigabyte pro traffic.

bspl rails plugin

 def publi...
   AWS::S3::S3Object.url_for(...)

 upload
 file_upload = FileUpload.new(prams[..])
 file_upload.save

download

 file_upload = FileUpload.find(prams..)
 file_upload.public_s3_url ....

 file_upload.value ...

zeitgesteuest mit cron:

 0 8 * * * /home/.../start_additional_instances.sh
 0 18 * * * /home/.../stop.sh

On-Demand Computing mit EC2

bspl wenn cpu bestimmte zeit ueber 70% ist rufe script auf

tail /etc/monitrc

 check system example.com
 if cpuusage(user) ...

cpazon/elastic rails sind plugins

WeoCEO ist daemon der auf jeder virt maschone bei amazon installiert werden muss wenn ich EC2 nutzen will

dieser frage die stastische daten des clusters ab und startet oder stoppt cluster nodes.

weiterer ec2 helfer ist Rightscale

zum spielen ohne bei amazon registriert zu sein muss da anmeldung bei amazon mit kreditkarte noetig ist.

resourcen

 aws.amazon.com

server stehen in seattle, soll bald aber auch in irland eroeffnet wird.

java implementation von amazon selber. diese werden intern bei amazon genutzt.

S3 sichern drei parallel gespeicherte daten zu.

zw 2 bis 8 minuten dauert es bis der neue service dann verfuegbar ist.

zufaellige ip wird zugewiesen aus dem internen netz von amazon.

EC" tools

 ec2-describe-images
 ec2-run-instances ami-asdf -k $RSA_KEY
 ssh root@domU-12-11-11-11.usma1.compute.amazon.com
 echo instanz beenden
 ec2-terminate-instaces i-10a2222

JSON RPC

json-rpc1.0 - request

 method
string mit aufzurufendem funktionsname
 params
array mit zu übergebenden parametern
 id
eindeutige id

json-rpc 1.0 notifications

identisch zum request nur ohne antwort. fällt in 1.1 weg

1.0 response

 result
freies ergebnisobjekt, null im fehlerfall
 error
Null oder eigendes
 id

probleme im alltag

encoding parser geht von utf-8 aus, also probleme bei iso-8859-15 oder -1

http fehler

live coding (grundgeruest eines dienstes) :


json.js

 <script src="json.js" />

 var xhttp=new XMLHttpRequest;
 var request=new Object;
 request.method='foo:bar';
 request.id=Date.time();
 request.params=new Array();
 request.params.push('hallo welt');

 // in perl form
 var request={method:foo::bar', id:Date.time(), params:['hallo welt']}
 // in dieser weise kommt object serialisiert an

 xhttp.open('POST', 'http://localhost/foo', false);
 xhttp.onreadystatechange=handler;
 xhttp.send(request.toJSONString());
 function handler() {
   if ( xhttp.readyState!=4 ) {
	return;
   } 

	try {
		var result=xhttp.responseText.parseJSON();
		if(result.result) {
			alert('hat geklappt!');
		} else {
			throw result.error;
		}
	} catch (e) {
		alert('Exception:'+e);
	}
 }

json.php

 <?php
	$request=json_decode(file_get_contents('php://stdin') );
 $result=new StdClass;
 $result->id=$request->id;
 $rc=doSomething($request->method, $request->params);
 if(!$rc) {
	$result->result=NULL; $result->error='Fehlgeschlagen';
  } else {
	$result->result='super';
 	$result->error=NULL;
 }
 header('content-type: text/json');
 echo json_encode($result);

 ?>

Absichern der Eingabe und Ausgabe gegen XSS.

Developing mobile application with Open Mobile IS by Philippe Delrieu (Ubikis)

GPE Phone by Nils Faerber (kernel concepts GbR)

gpe, nokia and others to solve problems like memory requirements for mobile phones
authentication

gpe-phonepanel is desktop headline where status information is being shown, in the center gpe-applauncher, at the bottom softkey area. the softkey are associated to the hardware buttons of the phone which are very different from model to model.

fragebsi

Diplomarbeit möglich und tanja anschreiben. problem wäre personal resourcen zur betreuung.

Frage Gnome Portierung

jhbuild

Vortrag Messwerte sammeln

evtl. rfid sachen?

open hardware

Vortrag OpenPCD by Kushal Das

demos

 make
 # no external libs needed
 cd utils
 ./librfid-tool -s
 scanning for RFID token ...
 ./librfid-lockunlock 


 kate firmware / main_dumbreader.c

A python implementation for the library is under work. and not ready yet.

 #!/usr/bin/env python
 # python-test.py
 import openpcd
 res = openpcd.open()

The lib is calles librfid. Wiki is ready for giving help.

Build your own firmware.

Program librfid-lockunlock.c as sample what is possible with the device.

13 MHZ frequency. A sniffer is available.

www.openpcd.org

OpenBeacon Project is also possible with active rfid tokens. http://www.openbeacon.org/