Dies ist die Heimat der Java User Group Nürnberg.


Montag, 22. Februar 2010

[JUG]: Treffen am Do., 11.03.2010 bei der KQV alias ERGO Direkt


Das JUG-Treffen fand statt am Do., 11.03.2010 um 18:30-20h. Mit über 50 Teilnehmern war der interative Vortrag über agile und lean Praktiken ein voller Erfolg ;)

Ort:
KarstadtQuelle Versicherungen alias ERGO Direkt
Karl-Martell-Straße 60
90431 Nürnberg

Vortrag: "Interaktiver Workshop: Auf Diät – Wie Sie Ihre Entwicklung verschlanken






Setzen Sie Ihre Entwicklung auf Diät! Im Rahmen eines Spiels werden Sie eine
Produktionslinie simulieren. Erleben Sie wie anhand der fünf Schritte der
„Theory of Constraints“ der Durchsatz Ihrer Entwicklung erhöht und
Verschwendung verringert werden kann. Lernen Sie spielerisch agile und lean
Praktiken kennen und gewinnen Sie Anregungen, auch Ihre eigene Entwicklung
zu verschlanken

Pierluigi Pugliese connexxo GmbH & Martin Heider infomar software



Zu der näheren Beschreibung geht es hier und hier.

Die Handouts befinden sich hier.

Montag, 15. Februar 2010

WebSlideShow

WebSlideShow is an iPhone application to show a slide show based on web content.



Simple solution:
With the default configuration you can enter URLs (internet addresses like http://www.source-knights.com)  and the slide show will iterate about the web pages and show them. Thats all to use WebSlideShow. The "refresh"-slider defines the time interval to update the data for the slide show in the background. The "ticker"-slider defines the time interval an item is shown in the slide show.



More complex solution for the experienced users:
But you can do a lot more with WebSlideShow. With small but very powerful configuration possibilities you can enter keywords instead of URLs, use any web site as a service to retrieve information about the keys and define how the resulting information are shown in the slide show (for example you can format them to any HTML).

To configure WebSlideShow Regular Expression are used to define, which information you want from a result. And HTML is used as format to configure what will be shown in the slide show.

Here is an example how to configure WebSlideShow to get stock information from yahoo finance and to show the data and a chart in the slide show. If you have any problems with the configuration just press the "reset to defaults"-button

1. query url

Query url defines how your search string by adding new items will be used. Per default the query url is "%@". This is a placeholder for anything you enter in the search field. The default means your search string is interpreted directly as an url. To configure WebSlideShow to enter quotes instead of url for the Yahoo-Finance-Service you can enter the finance url with the placeholder in it:

http://download.finance.yahoo.com/d/quotes.csv?s=%@&f=nsl1d1t1c1ohgv&e=.csv

This means the search will not use you input directly as url. Instead it will use the yahoo url by replacing the placeholder "%@" with your input. This request to the Yahoo finance service will result in a csv-data-file with the stock quotes and more information. How WebSlideShow will interpret the result is shown later by configuring the content.

If you want to use the search with different keywords you have to enter them in the search UI separated by a space. And you have to configure the query url as "multi request". That means the placeholder will be replace by all of the keywords you enter separated by a space. How they will be separated in the query url you have to define in the form that pop up if you activate "multi request". For the Yahoo finance service it is "+" as url separator and "\n" (that means new line and is the correct configuration for csv-data-files) as result separator.

2. data url

WebSlideShow distinguishes between query url for searches and data url for the real data used by the slide show. Per default the two are the same ("%@").  This is also true for the Yahoo-finance-service. So we enter the following as data url:

http://download.finance.yahoo.com/d/quotes.csv?s=%@&f=nsl1d1t1c1ohgv&e=.csv

You need different urls if you want to use a service to get a result list and a different service to get concrete data for the items of the result list (for example you use google as search query url and the resulting web addresses as data urls).

To use the yahoo finance service efficiently we activate "multi data" and enter the same configuration as in "multi request". "+" as url separator and "\n" (that means new line and is the correct configuration for csv-data-files) as result separator. This helps the application to fetch all data for the result in a single call of the finance api. This saves a lot of time instead of calling the service for each item apart.

3. content configuration

Configuring the content of search query and data results will use regular expressions and HTML with placeholders.

3.1 name and description

First you have to define what WebSlideShow can use as name and description of the data and search query result.

This is done by regular expressions. Per default anything of the result is used as name and description. You can define this by giving empty regular expression and define 0 as regular expression group.


name=""; // empty means use whole input instead of regex
name.group=0;
description="()"; // empty means use whole input instead of regex
description.group=1;

name.query=""; // empty means use whole input instead of regex
name.query.group=0;
description.query="()"; // empty means use whole input instead of regex
description.query.group=1;


For the yahoo finance service we can enter regular expressions that describe the content of the search query and data result and define which regular expression group conform to name and description:


name="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
name.group=1;
description="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)"; 
description.group=2;

name.query="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
name.query.group=1;
description.query="\"(.*?)\",(.*)";
description.query.group=2;

The above configuration describe the content of the Yahoo-finance-service csv data file.

3.2 slide show content

The last step is to configure what you want to see in the slide show. Per default it is:

content="";  // empty means use whole input instead of regex 
content.group=0;
content.format="%@";

The ".format"-configuration is new. It allows you to format the content by adding anything before and after the placeholder. In the default configuration nothing is added. So the whole web page for the entered address is used in the default configuration. For the Yahoo-finance-service we will give a more complex configuration to define a custom view. The configuration allows to define the result in a hierarchical way. Instead of just setting "content" to a regular expression we will define content as a block of custom values by writing "content = { propertyname = ... }. Here is the full example for a custom view of the Yahoo-finance-service:


content = {
title="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
title.group=1;
title.format="<div style='height:70px;'><center style='font: normal xx-large Helvetica; color: #99CCFF;'>%@</center>";

subtitle="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
subtitle.group=2;
subtitle.format="<center style='font: italic x-large Helvetica; color: #999999;'><a href='http://finance.yahoo.com/q?s=%@'>%@</center></a></div></br></br>";

lastTrade="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
lastTrade.group=3;
lastTrade.format="<center><table><tr><td>Last trade: </td><td>%@</td>";

date="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
date.group=4;
date.format="<td>Datum: </td><td>%@</td></tr>";

change="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
change.group=6;
change.format="<tr><td>Change: </td><td>%@</td>";

time="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
time.group=5;
time.format="<td>Zeit: </td><td>%@</td></tr>";

open="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
open.group=7;
open.format="<tr><td>Open: </td><td>%@</td>";

min="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
min.group=9;
min.format="<td>Min: </td><td>%@</td></tr>";

volume="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
volume.group=10;
volume.format="<tr><td>Volume: </td><td>%@</td>";

max="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
max.group=8;
max.format="<td>Max: </td><td>%@</td></tr></table></center>";

image="\"(.*?)\",\"(.*?)\",(.*?),\"(.*?)\",\"(.*?)\",(.*?),(.*?),(.*?),(.*?),(.*)";
image.group=2;
image.format="<br/><center><img src='http://ichart.yahoo.com/t?s=%@'/></center>";
};

content.keys = ( title, subtitle, lastTrade, date, change, time, open, min, volume, max, image );

With "content.keys" we define which properties and in what order add up to the result view. The result view will be HTML content.

The complete example will enable a slide show about stock quotes from the Yahoo finance service. It also integrates charts. You can copy and paste this configuration to the WebSlideShow application.