1. Dezember 2008 22:40

knuts for you!

von robert 26. Apr 2007 09:30 (vor 586 Tagen) ~ comments(2)

ja. auch hier in taipeh ist der kleine eisbär ein thema. ich werde öfter darauf angesprochen. nur taka der japaner hat noch nicht von ihm gehört.


tofu etc.

von robert 23. Apr 2007 11:14 (vor 589 Tagen) ~ comments(0)

also mit dem käse, das ist so: für die chinesen stinkt käse. das mögen sie einfach nicht. stattdessen lieben sie den stinkertofu. das ist, glaube ich, irgendwie systematisch verotteter tofu. unterwegs mit cri und chi ji zeigt mir chi ij die ganzen köstlichkeiten, die auf der straße zu haben sind: glibbrig gebratene eier mit schrimps drinne, maultaschen mit fleisch und kraut gefüllt, reibekuchen mit sojasoße, diverse suppen und eben stinkertofu. der riecht eigentlich nach garnix. nur, wenn man reinbeißt hat man das gefühl, man würde auf einem paar wochenlang getragener socken herumkauen. meine spontane gesichtsentgleißung wurde dann später auch noch tausendmal den ganzen freundinnen und freunden weitererzählt, als wir vor dem luxy auf einlaß warten. eine amerikanische bekannte von cri hat uns gästelistenmäßig da reingeschleust.

es ist tag der neueröffnung. sie freut sich schon auf paul van dyke, der hier im mai auflegen wird. heute gibts auf dem großen floor rnb und auf dem kleinen house. also etwas käsig die musik, ist aber egal. ich bin eh noch total erledigt vom flug und so. ich sehe aus, wie der ältere bruder von ozzy osbourne. außerdem haben wir genug zu tun, um die rabattmodalitäten dieses neuen drink up wednesdays zu verstehen…


ni hao

von robert 18. Apr 2007 07:44 (vor 594 Tagen) ~ comments(0)

ich habe mir fest vorgenommen, dass wenn ich den flug überlebe, ich das sofort bl*ggen werde, dass ich den flug überlebt habe. also: ich habe den flug überlebt. 12 stunden von frankfurt nach taipeh, hauptstadt von taiwan oder ROC, der chinesischen republik (nicht verwechseln mit der volksrepublik china). es gibt scheinbar menschen, denen es nichts ausmacht so lange im flugzeug zu sitzen. ich fands gruselig, besonders die nachtstunden, hatte bescheuerter weise auch noch einen fensterplatz bestellt und konnte mir so mit blick auf tragfläche, turbine und flackernde beleuchtung schöne schauergeschichten ausdenken. das war ungewollt. ich wollte schlafen. ging nicht.

taipeh ist super. also das was ich bisher gesehen habe… es gibt hier klima. d.h. es ist sehr warm und feucht. tropisch. cri, bei dem ich unterschlüpfe, wohnt auf dem dach in einem haus, quasi dachhaus. also das ist so ein 4 stöckiges haus und auf dem dach ist nochmal ein kleines häuschen, so bungalowmäßig. da in dem kleinen oben drauf, da wohnt er, jaja ganz oben. chinesen wiederholen sich oft, habe ich heute gelernt. um mißverständnisse zu vermeiden. aber das beste: die stellen des dachs, die nicht bungalow sind, sind die terasse, hehe. ich hätte also mehr bratwürste mitnehmen sollen und vor allem thüringer, weil man hier gut grillen kann.

aber ich hab jetzt erstmal eh keine lust auf grillen. bin völlig gerädert, schlaf- und nikotinentzug machen sich bemerkbar…

es gibt keinen käse hier.


kleinscheiss vs. enterprise

von robert 1. Apr 2007 18:56 (vor 610 Tagen) ~ comments(0)

viel beratungszeit verbringe ich mit erklärungen, warum lösung xy soviel zeit in anspruch nimmt, vermeintlich teuer ist etc. liebe leutchen sage ich dann immer: „das ist enterprise.“ ich habe nun eine kleine arbeitsgruppe gebildet, die diesen unterschied anhand von real world scenarios erklären will.

die aufgabenstellung lautet eine software für den betrieb einer bäckerei zu erstellen.

fall 1

exwurstbudenbesitzer detlev hauser ist mit seiner php-hauser gmbh auf den internetzug aufgesprungen und präsentiert folgendes programm:


include_once("frameset.php");
include_once("kopf.php");

class Baecker{
    var $brote=120;
    var $kasse=100;
    var $preis=3;

    function brot($wieviel, $kunde){
        if(($this->brote-$wieviel >= 0) &&
            $cash=$kunde->bezahl($this->preis*$wieviel)){
            $kunde->einstecken($wieviel);
            $this->brote-=$wieviel;
            $this->kasse+=$cash;
            return true;    
        }else{
            return false;
        }
    }
}

class Kunde{
    var $geld=500;
    var $brote=0;

    function bezahl($preis){
        if($this->geld-$preis >= 0){
            $this->geld-=$preis;
            return $preis;
        }else{
            return false;
        }
    }

    function einstecken($wieviel){
        $this->brote+=$wieviel;
    }
}

$b=new Baecker;
$k1=new Kunde;
$k2=new Kunde;
$b->brote(1, $k1);
$b->brote(5, $k2);
$b->brote(1, $k1);
$b->brote(8, $k2);

include_once("schweissfuss.php");

aufwand: 2 MT (in rechnung gestellt, eigentlich nur 1 tag, der andere wurde einem bordellbesuch gewidmet)

der kunde war grundsätzlich zufrieden. das programm läuft seit einem halben jahr stabil.

unsere arbeitsgruppe fand 36 fehler in der anwendung, wovon aber scheinbar nur einer relevant ist. der fiel bereits am 2. tag nach inbetriebnahme auf.

bei der lösung gibt es viel zu kritisieren. da ist zum einen das hartkodierte mapping der produkte auf objektfunktionen. das ist ein sehr kurzsichtiges vorgehen und für die erweiterbarkeit des programms nicht sehr hilfreich. in spätestens 120 jahren wird sich der kunde ärgern, dass er mit dem bereits jetzt absehebaren spagetticode in eine sackgasse geraten ist. zum anderen versucht der programmierer mit einer pseudolustigen fusszeile individualität zu demonstrieren und die tatsache zu verwischen, dass der kunde hier nur noch-ein-weiteres-produkt-von-der-stange erhält.

fall 2

die mit der rüstungsindustrie großgewordene agentur powerofbeans.com setzt in ihrer mittelstand division voll auf offene standards wie java. nach guten erfahrungen mit dem spring framework, entschied man sich diesen weg weiterzugehen und die erfolgsgeschichte der agentur fortzuschreiben. hier ein auszug aus ihrer lösung (wegen diverser NDAs kann leider nur ein teil veröffentlicht werden).


package com.powerofbean.shop.bakery.model;

import java.util.HashMap;
import java.util.Map;
import java.io.InputStream;
import java.sql.Timestamp;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.springframework.util.StringUtils;
import org.springframework.util.Assert;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;

import com.powerofbean.struts.common.Constants;

/**
 * This abstract class defines the method used for reading and writing the
 * object's labels (internationalising) and other important properties
 * look at bakery.properties for further info
 * @author 
 */
public abstract class BakeryBean extends AbstractBean
    implements ShopModel, 
        OpenableShop, 
        UnableToOpenUnbuffered,
        TaxBeanModelPropStrut, 
        SchiessMichTotOverideLaterGrussEgon,
        CustomTemplateResizer, 
        AuthorizeServiceBus
        {

    private Map labels;

    private int ProductsTotalCount;

    private int ProductsBeforeSell;

    private int ProductsAfterSell;

    private HashMap ProductItems;

    ... 

    /**
     * Returns the labels.
     * @return the labels
     */
    public Map getLabels() {
        checkLabels();
        return labels;
    }

    /**
     * Set the labels.
     * @param labels the labels to set
     */
    public void setLabels(Map labels) {
        this.labels = labels;
    }

    public void setLabel(String key, String value) {
        checkLabels();
        this.labels.put(key, value);
    }

    private void checkLabels() {
        if (labels == null) {
            labels = new HashMap();
        }
    }

    public String getLabel(String language) {
        checkLabels();
        String label = labels.get(language);
        if (!StringUtils.hasText(label)) {
            label = labels.get(Constants.DEFAULT_LANGUAGE);
        }
        return label;
    }
    /**
     * Set the ProductsTotalCount.
     * @param total to set
     */
    public void ProductsTotalCount(int total) {
        this.ProductsTotalCount = total;
    }

    /**
     * Get the ProductsTotalCount.
     * @param total to set
     */
    public void GetProductsTotalCount(){
        return this.ProductsTotalCount;
    }

    /**
     * small helper to increment ProductsTotalCount with just 1 entity
     * @param total to set
     */
    public void IncrementProductsTotalCount(int total) {
        this.ProductsTotalCount += 1;
    }

    /**
     * Set the ProductsTotalCount.
     * @param total to set
     */
    public void SetProductsBeforeSell(int total) {
        this.ProductsBeforeSell = total;
    }

    public void GetProductsBeforeSell(){
        return this.ProductsBeforeSell;
    }

    /**
     * small helper to increment ProductsBeforeSell with just 1 entity
     * @param total to set
     */ 
    public void IncrementProductsBeforeSell(){
        this.ProductsBeforeSell += 1;
    }
    /**
     * Set the ProductsTotalCount.
     * @param total to set
     */
    public void SetProductsAfterSell(int total) {
        this.ProductsAfterSell = total;
    }

    public void GetProductsAfterSell(){
        return this.ProductsAfterSell;
    }

    /**
     * small helper to increment ProductsAfterSell with just 1 entity
     * @param total to set
     */
    public void IncrementProductsAfterSell(){
        this.ProductsAfterSell += 1;
    }
    ...

    ...
}

...


aufwand: 450 MT (davon 50 MT für bordellbesuche - nur key account manager -)

der kunde ist sehr glücklich mit der lösung. erste tests ergaben hohe geschwindigkeiten. das deployment steht leider noch aus, da einer der senior application developer (egon sch.) kurzfristig ausgeschieden ist und das projekt unter verzug geriet.

unsere arbeitsgruppe erkannte auf 863 fehler, allesamt von niedriger relevanzstufe.

die lösung wird von uns für den javac-s design award vorgeschlagen, weil sie den spagat zwischen high performance product delivery und direct to market product design principles of customer und andererseits enterprise service bus seemless continuos integration services hervorragend bewältigt.


1 von 11
About
alotta-log is your friendly blogserver. multiuser - multiblog - php/my/xorc based.

currently this is a beta version. stay tuned.
Impressum
Disclaimer
"this site looks best if you come over here and look at my monitor."
 
Themen
neu auf dem server
Unser T-Shirt
tags
neueste eintraege in diesem blog
mixtape

1 DJ T / Robot Riot - Electric Press Remix

2 Bucci Bag / More Lemonade - Sparkling Version

3 Soto / Hootenanny - Original Mix

4 Joe Galdo / Keef - Original Mix

5 Myagi / Subversion - Price Cuts Remix

6 DJ Fixx / Electric - Original Mix

7 DJ Fixx / Push Em Up - Original Mix

8 Klaus / Big Man - Original Mix

9 Jesse Saunders / Everybody - Slapin Breaks Remix

10 Soto / Manic - Soto Remix

11 Chikinki / Like It Or Leave It

www.flickr.com
Administration

rss/xml xorc based
hintergrund von squidfingers
alotta-in-the-middle, 2005