Archive for the ‘Software-Tests’ category

Debian: 32bit Maschine mit 4 GB RAM nutzen. Dank HighMem, Bigmem-kernel und PAE

February 11th, 2010

Die 32 Bitmaschinen haben das Problem, dass trotz 4 gig verbautem Ram nur 3 Gig genutzt werden.

Niemand verzichtet gerne auf 1 GB RAM.

Es ist erstaunlich einfach wie man die 1 G ungenutzten RAM freischaufeln kann.

Als errstes vergewissert man sich ob es tatsächlich so ist.

cat /proc/meminfo

zeigt den verwendeten Speicher.

Ist es tatsächlich so. Installiert man sich einfach den Bigmem-Kernel.

apt-get install linux-image-2.6-686-bigmem

Dannach einfach neustarten und im Bootloader den Bigmemkernel im Bootmenü wählen.
Anschliessend zeigt cat/proc/meminfo die vollen 4 GB an.

Love it!

Debian Flashplayer installieren

February 9th, 2010

Wer nicht gnash verwenden will, weils ständig abschmiert

http://wiki.debian.org/FlashPlayer

Magento localhost Debian. Loginproblem

February 9th, 2010

Die Installation unter localhost macht, warum auch immer, Probleme bei der Installation und dem anschliessenden Login in die Adminebene.

Die Lokale Installation muss unter 127.0.0.1 vorgenommen werden.

Hat man dies nicht berücksichtigt muss man in der Datenbank in der Tabelle

 "core_config_data"

localhost mit 127.0.0.1 ersetzen.

anschliessend die cachefiles unter /vat/cache löschen und die Seite reloaden.

Thats it.

Linux Syteminfos debian

February 8th, 2010

Sehr gutes Tut

http://debian-desktop.el-hawari.net/debiandesktop/doku.php?id=howtos:grundlagen:systeminfos

Kernel compilieren

February 8th, 2010

Hier ist ein scheinbar einfaches HowTo.

mal sehen obs so leicht ist

http://xig.ch/blog.php?id=48

debian: vmware server: gastmaschine einrichten

February 8th, 2010

Hier ist ein gutes HowTo dazu.

http://ww1.4hf.de/2009/02/installationsanleitung-eines-gastsystems-auf-vmware-server.html

Wer den Server noch benötigt. Dieses Howto ist sehr einfach und funktioniert auf Anhieb.

http://www.sysadminslife.com/linux/vmware-server-2-installation-unter-debian-5-lenny/

apt-get remove gcc-4.3

apt-get install gcc-4.1

ist eine andere version installiert einfach die version, mit der der kernel NICHT kompiliert ist entfernen.

Oder nochmal hier nachfragen.

KDE unter Debian entfernen

February 6th, 2010

KDE ist einfach nichts zum Arbeiten.

Ueberladen, instabil, ständige Freezes, langsam.

Fazit: So deletet man es unter debian. Es werden 220 MB entfernt. Eventuell muss man noch einige Abhängikeiten auflösen.

sudo apt-get autoremove kde-core
Entfernt einen Grossteil

neue Music-Downloadplattform mit Freedownloads mit Zend-Framework online.

February 4th, 2010

Hier ein Beispiel wie man es häufiger sehen möchte.

http://www.zeezee.de setzt in Ihrer innovativen Idee mal eine eine etwas andere Musik-Downloadplattform umzusetzen Zend-Framework und Jquery als Schlüsseltechnologie ein und überzeugt auf Anhieb mit Qualität, Einfachheit und Spass beim Musiksuchen.

Die Registrierung ist extrem einfach und man kann sofort loslegen.  Die Mail zur Aktivierung ist auch in der Schweiz unter 1 Minute verfügbar.

Als Erstes habe ich nach dem Login die Charts aus meinem Geburtsjahr gefunden. Coole Sache. Elvis lebt :-)

Die älteren Jahrgänge erinnern sich sicher an die Zeit als man noch am Radio mitgeschnitten hat. Das läuft hier ähnlich. Man sucht sich einen Song aus, der gespielt werden soll und wenn  ein User ihn abspielt wird er für Dich zum Download bereit gestellt. Bei mir dauerte das ca 3 Minuten. Man wird hier per Message über den bereitgestellten Song informiert.

Nach der Registrierung sind die aktuellen Top 20  Songs kostenfrei. Gute Sache.

Was mir persönlich sehr zusagt ist die Performance und die Usability der Seite. Sie ist schnell und sehr einfach. Man kommt mit wenigen Klicks an seine Wunschmusik.

Das Musik Angebot ist riesig. 16 Mio Tracks stehen zur Auswahl. Unglaublich.

Ein Besuch der Seite http://www.zeezee.de ist für PHP-ler eigentlich Pflicht. Musikliebhaber die auf Nostalgie stehen werden begeistert sein.

extjs: remote linked comboboxes in a grid

January 24th, 2010

Dieser Part ist doch recht tricky. nach 2 Tagen nerviger Sucherrei und unzähligen Tuts habe ich eine einfache Möglichkeit gefunden mehrerer Comboboxen zu verlinken.

Wenn die Grid geladen ist sollten alle Abhängigen Comboxen mit den Values der Parentgridcell gefüllt sein.

Dazu braucht man

1) eine Combobox die die die Daten Remote von Server holt. Und dem Server sagt welche Daten. Dazu wird das “bevorequery” im Listener des JsonStores verwendet.

bevorquery wird ausgeführt bevor der Request des Stores auf den Server ausgeführt wird. Der Trick hier : Wir führen den request mit den Parametern aus der Abhängigen Box schon hier aus und kehren mit return false zurück. Damit wird der initialload nicht ausgeführt.

new Ext.form.ComboBox({
    id              :'survey_orga_name',
    typeAhead       :true,
    triggerAction   :'all',
    valueField      :'orgaID',
    editable        :true,
    displayField    :'orga_name',
    selectOnFocus   :true,
    typeAhead       :'true',
    hiddenName      :'orgaID',
    mode            :'remote',
    lazyRender      : true,
    store:
    this.combostore_survey_orga_name=new Ext.data.JsonStore({
        url:'/your url', //gets called after "beforequery" without any parameters from the grid
        root:'data',
        restful:true,
        autoload:false,
        fields:[
        {
            name:'orgaID',
            type:'string'
        },
        {
            name:'orga_name',
            type:'string'
        }
        ]
    }),
    listClass: 'x-combo-list-small',
    listeners :
    {
        beforequery:
        {
            fn:function(qe)
            {
                var company_name = Ext.getCmp('survey_company_name').getValue();
                var orga_name    = Ext.getCmp('survey_orga_name').getValue();
                var orgagroup_name    = Ext.getCmp('survey_orgagroup_name').getValue();
                combostore_survey_orga_name.load({
                    params:{
                        column_name:'orga_name',
                        company_name: company_name,
                        orga_name : orga_name,
                        orgagroup_name : orgagroup_name
                    }
                    });
                return false; // important. return directly to prevent next unconfigured request with standardparams
            }
        },
        select:
        {
            fn:function(combo, value)
            {
              var company_name   = Ext.getCmp('survey_company_name').getValue();
              var orga_name      = Ext.getCmp('survey_orga_name').getValue();
              var orgagroup_name = Ext.getCmp('survey_orgagroup_name').getValue();
            //combostore_survey_orga_name.load({params:{column_name:'orga_name',
            //company_name: company_name, orga_name : orga_name,
            // orgagroup_name : orgagroup_name}});
            }
        }
    }

})

Die Serverantwort sieht so aus.

{"totalCount":2,"data":[{"orga_name":"MySQL","orgaID":"1"},{"orga_name":"MySQLsss","orgaID":"3"}]}

[/php]

new Ext.form.ComboBox({
        id              :'survey_company_name',
        typeAhead       :true,

        triggerAction   :'all',
        valueField      :'companyID',
        editable        :true,
        displayField    :'company_name',
        selectOnFocus   :true,
        typeAhead       :'true',
        hiddenName      :'companyID',
        mode            :'local',
        lazyRender      : true,
        store:
        this.combostore_survey_company_name=new Ext.data.SimpleStore({

            data: [['165','Deutsche Factoring Bank'],['159','Frontend-Development.ch'],['168','Kreis- und Stadtsparkasse Kaufbeuren '],['116','Kreissparkasse Esslingen-Nürtingen'],['162','Kreissparkasse Halle (Westf.)'],['174','Kreissparkasse Ostalb'],['163','Kreissparkasse Schwalm-Eder'],['95','Kreissparkasse Stendal'],['171','Kreissparkasse Walsrode'],['153','Müritz-Sparkasse'],['170','Sparkasse Bodensee'],['164','Sparkasse Deggendorf'],['90','Sparkasse Donnersberg'],['85','Sparkasse Emsland'],['173','Sparkasse Freising'],['92','Sparkasse Gifhorn-Wolfsburg'],['106','Sparkasse Harburg-Buxtehude'],['166','Sparkasse Hohenlohekreis'],['161','Sparkasse Jerichower Land'],['141','Sparkasse Langen-Seligenstadt'],['169','Sparkasse LeerWittmund'],['79','Sparkasse Leipzig'],['104','Sparkasse Meissen'],['100','Sparkasse Oberlausitz Niederschlesien'],['172','Sparkasse Rotenburg-Bremervörde'],['80','Sparkasse Rottal-Inn'],['160','Sparkasse Schopfheim-Zell'],['167','Sparkasse Sonneberg']],
            fields:[
                    {name:'companyID',type:'string'},
                    {name:'company_name',type:'string'}

                    ]
            }),
        listClass: 'x-combo-list-small',

            listeners :
                {
                    select:
                    {
                        fn:function(combo, value)
                        {
                             var company_name = Ext.getCmp('survey_company_name').getValue();
                            alert(company_name);
                             var orga_name    = Ext.getCmp('survey_orga_name').getValue();
                             var orgagroup_name    = Ext.getCmp('survey_orgagroup_name').getValue();
                             combostore_survey_orga_name.load({params:{column_name:'company_name', company_name: company_name, orga_name : orga_name, orgagroup_name : orgagroup_name}});

                        }
                    }

                }

     })
                        },{
                            id          : 'orga_name',
                            header      : 'Abteilung',
                    inputType:'textfield',
                            dataIndex   : 'orga_name',
                            sort        : 'orga_name',

                            sortable    : true,
                            width       :100,
                            editor      :
        new Ext.form.ComboBox({
        id              :'survey_orga_name',
        typeAhead       :true,

        allQuery: 'dfdsfdsf'+Ext.getCmp('survey_company_name').getStore(),
        triggerAction   :'all',
        valueField      :'orgaID',
        editable        :true,
        displayField    :'orga_name',
        selectOnFocus   :true,
        typeAhead       :'true',
        hiddenName      :'orgaID',
        mode            :'remote',
        lazyRender      : true,
        store:
        this.combostore_survey_orga_name=new Ext.data.JsonStore({

            url:'/cocominZend/0.0.1/public/survey/store/getcombo/columnname/orga_name/'
                    ,root:'data'
                    ,restful:true,autoload:false
            ,
            fields:[
                    {name:'orgaID',type:'string'},
                    {name:'orga_name',type:'string'}

                    ]
            }),
        listClass: 'x-combo-list-small',

            listeners :
                {
                    beforequery:
                    {
                        fn:function(qe)
                        {
                             var company_name = Ext.getCmp('survey_company_name').getValue();
                             var orga_name    = Ext.getCmp('survey_orga_name').getValue();
                             var orgagroup_name    = Ext.getCmp('survey_orgagroup_name').getValue();
                             combostore_survey_orga_name.load({params:{column_name:'orga_name', company_name: company_name, orga_name : orga_name, orgagroup_name : orgagroup_name}});
                             return false;
                        }
                    },
                    select:
                    {
                        fn:function(combo, value)
                        {
                            alert('called select');
                             var company_name = Ext.getCmp('survey_company_name').getValue();
                             var orga_name    = Ext.getCmp('survey_orga_name').getValue();
                             var orgagroup_name    = Ext.getCmp('survey_orgagroup_name').getValue();
                             //combostore_survey_orga_name.load({params:{column_name:'orga_name', company_name: company_name, orga_name : orga_name, orgagroup_name : orgagroup_name}});
                        }
                    }
                }

     })
                        }

Extjs : Remotesort. Serverseitiges Paging und die vielgesuchte Serverresponse

January 17th, 2010

Ich bastle seit Tagen an einer Groupinggrid mit Paging, Search, Exportfunktion, Inlineediting mit Roweditor, RSA Verschlüsslung und remote Sortierung auf alle Spalten.
Gleich ein wenig viel für den Anfang.

Also beschränke ich mich vorerst auf das Remotesorting, Grouping, RSA  und eben das Paging.

Wichtig zu wissen ist hier:
Der JsonReader verarbeitet die wesentlichen Serverresponse-Values. Wie die Gesamtzahl(totalProperty) der Datensätze. “totalProperty” ist wichtig für das Paging. Ohne die Zahl werden die Navigationsbuttons nicht aktiviert und paging suxx.
root: ‘data’, Enthält die Daten zur Anwort. Ohne Daten kein View. Klar.

Die Response muss allso mindestens 3 JS-Objekte liefern. “totalCOunt, sort und data”.
Die Resonse zu der Grid mit 2 Datensätzen oben sieht also folgendermassen aus:

{ "totalCount":206, "sort":"company_name", "message":"ewqeqwewqe", "data":
 [
     { "copyID":"227", "survey_name":"Mitarbeiterumfrage", "orga_name":"Trainer", "company_name":"Test23 AG", "created":"2009-06-16 19:19:13",    "description":"Test" },

     { "copyID":"226", "survey_name":"Mitarbeiterumfrage2", "orga_name":"Trainer2", "company_name":"Test AG 22", "created":"2009-06-16 19:19:13",    "description":"Test" },

] }

Groupstore: Beinahe noch wichtiger ist der Initialload der ersten page. Der Datastore wird beim Rendern mit der page 0 geladen

gridedtorstore.load({params:{start: 0, limit: 20}});

Der Code für die Grid dann so. Nicht über die RSA Sachen wundern. Die verschlüsslung ist hier Standar

var columnobjectsurvey = Ext.data.Record.create([{name: 'copyID',type: ''},{name: 'company_name',type: 'string'},{name: 'orga_name',type: 'string'},{name: 'created',type: 'string'},{name: 'description',type: 'string'},{name: 'survey_name',type: 'string'}]);

        //proxi
        surveyproxy = new Ext.data.HttpProxy({
            url: '/cocominZend/0.0.1/public/survey/store/get'
        });
        //reader
        this.surveyreader = new Ext.data.JsonReader({
        totalProperty: 'totalCount',
        successProperty: 'success',
        idProperty: 'id',
        root: 'data',
        messageProperty: 'message',
        fields: columnobjectsurvey
        });
        //writer
        // The new DataWriter component.
        this.surveywriter = new Ext.data.JsonWriter({
            encode: false   // <-- don't return encoded JSON -- causes Ext.Ajax#request to send data using jsonData config rather than HTTP params
        });

        this.gridedtorstore = new Ext.data.GroupingStore({
        id: 'survey',
        proxy: surveyproxy,
        idProperty: 'copyID',
        remoteSort: true,
        reader:surveyreader,
        writer:surveywriter,
        restful: true,     // <-- This Store is RESTful
        groupField:'survey_name',
        sortInfo: {field: 'company_name', direction: 'ASC'},
    });
        gridedtorstore.load({params:{start: 0, limit: 20}});

         var roweditorsurvey = new Ext.ux.grid.RowEditor({
                saveText: 'Update',
                listeners :
                {
                    afteredit : function(row) {

        var secure = true;
        var secureParam = secure ? 't' : 'f';
        val='copyID###'+row.record.data.copyID+'||'+'company_name###'+row.record.data.company_name+'||'+'orga_name###'+row.record.data.orga_name+'||'+'created###'+row.record.data.created+'||'+'description###'+row.record.data.description+'||'+'survey_name###'+row.record.data.survey_name+'||';
        alert(val);
        if(secure){
            val = rsajax.encrypt(val);
        }

        $.ajax({
            url: '/cocominZend/0.0.1/public/admin/pgp/decrypt',
            data: {val: val, secure: secureParam},
            dataType: 'json',
            success: function(data)
            {
                var val = data.val;
                if(secure)
                {
                    val = rsajax.decrypt(val);
                    Ext.MessageBox.alert('encrypted answer:',val);
                }
                else
                {
                    Ext.MessageBox.alert('dsds','Anybody who happened to be monitoring your network activity could have seen that data.');
                }
          },
            error: function(e)
            {
                Ext.MessageBox.alert('plain answer:',e.responseText);
            }
        });
            row.record.commit();
                    },
                }
            });

        var checkboxSelection = new Ext.grid.CheckboxSelectionModel({});
        var editorgridsurvey = new Ext.grid.GridPanel({
        store: gridedtorstore,
        region:'center',
        viewConfig: {forceFit: true},
        stripeRows:	true,
        stripeCols:	true,
        enableColLock: false,
loadMask: true,
plugins: [roweditorsurvey],
        view: new Ext.grid.GroupingView({
            markDirty: true
        }),
        tbar: [
{
text:		'list selected',
handler:	function(){
var seltext = '';
var sels = editorgridsurvey.getSelectionModel().getSelections();
for( var i = 0; i < sels.length; i++ ) {
seltext += sels[i].get('username');
}
Ext.Msg.alert('Selected', seltext);
}
}
                        ,
       {
            iconCls: 'icon-user-add',
            text: 'addSurvey',
            handler:
            function(){
                var e = new columnobjectsurvey({
            copyID:'newUser',company_name:'company_name',orga_name:'orga_name',created:'01/01/2010',description:'description',survey_name:'survey_name'
                });

            }

        },
        {
            ref: '../removeBtn',
            iconCls: 'icon-user-delete',
            text: 'removeSurvey',
            disabled: true,
            handler: function(){
                roweditorsurvey.stopEditing();
                var selections = editorgridsurvey.getSelectionModel().getSelections();

        var secure = true;
        var secureParam = secure ? 't' : 'f';
        val='userID###'+selections[0].data.userID+'||delete###true';
        alert(val);
        if(secure){
            val = rsajax.encrypt(val);
        }

        $.ajax({
            url: '/cocominZend/0.0.1/public/admin/pgp/decrypt',
            data: {val: val, secure: secureParam},
            dataType: 'json',
            success: function(data)
            {
                var val = data.val;
                if(secure)
                {
                    val = rsajax.decrypt(val);
                    Ext.MessageBox.alert('encrypted answer:',val);
                }
                else
                {
                    Ext.MessageBox.alert('dsds','Anybody who happened to be monitoring your network activity could have seen that data.');
                }
          },
            error: function(e)
            {
                Ext.MessageBox.alert('plain answer:',e.responseText);
            }
        });
                for(var i = 0, r; r = selections[i]; i++){
                    gridedtorstore.remove(r);

                }
            }
        },
        {
            text   : 'printSurvey',
            iconCls: 'icon-user-print',
            handler: function() {
            Ext.ux.GridPrinter.print(editorgridsurvey);
            },
        },
        {
            text   : 'printSurvey',
            iconCls: 'icon-user-print',
            handler: function() {
            document.location = '/cocominZend/0.0.1/public/survey/export/excel';
            }
       },

     new Ext.PagingToolbar({
            pageSize: 10,
            store: gridedtorstore,
            displayInfo: true,
            emptyMsg: "No topics to display"

        })
        ],
        columns: [new Ext.grid.RowNumberer(),{
                        id: 'company_name',
                        header: 'company_name',
                        inputType:'textfield',
                        dataIndex: 'company_name',
                        sort: 'company_name',

                        sortable: true,
                        width:200,
                        editor: {
                        xtype: 'textfield',
                        allowBlank: false,
                        inputType:'textfield',
                        disabled:false
                       }},{
                        id: 'orga_name',
                        header: 'orga_name',
                        inputType:'textfield',
                        dataIndex: 'orga_name',
                        sort: 'orga_name',

                        sortable: true,
                        width:100,
                        editor: {
                        xtype: 'textfield',
                        allowBlank: false,
                        inputType:'textfield',
                        disabled:false
                       }},{
                        id: 'created',
                        header: 'created',
                        inputType:'textfield',
                        dataIndex: 'created',
                        sort: 'created',

                        sortable: true,
                        width:120,
                        editor: {
                        xtype: 'textfield',
                        allowBlank: false,
                        inputType:'textfield',
                        disabled:true
                       }},{
                        id: 'description',
                        header: 'description',
                        inputType:'textfield',
                        dataIndex: 'description',
                        sort: 'description',

                        sortable: true,
                        width:200,
                        editor: {
                        xtype: 'textfield',
                        allowBlank: false,
                        inputType:'textfield',
                        disabled:false
                       }},{
                        id: 'survey_name',
                        header: 'survey_name',
                        inputType:'textfield',
                        dataIndex: 'survey_name',
                        sort: 'survey_name',

                        sortable: true,
                        width:200,
                        editor: {
                        xtype: 'textfield',
                        allowBlank: false,
                        inputType:'textfield',
                        disabled:false
                       }}]
    });

        this.surveyEditorgridPanel = new Ext.Panel({
        title: 'registeredUser',
        layout: 'border',
        autoScroll:true,
        width:1200,
        height: 500,
        items: [editorgridsurvey]
    });

            editorgridsurvey.getSelectionModel()
            .on('selectionchange', function(sm){
                editorgridsurvey.removeBtn.setDisabled(sm.getCount() < 1);
            });
             var categoryStore = new Ext.data.JsonStore({
            fields:['sum','categories'],data:[
                { categories:'Sonstiges',
                  sum: 42
                },
                { categories:'Coaching',
                  sum: 162
                }]
            }); var countryStore = new Ext.data.JsonStore({
            fields:['sum','countries'],data:[
                { countries:'Deutschland',
                  sum: 197
                },
                { countries:'Schweiz',
                  sum: 5
                },
                { countries:'Österreich',
                  sum: 2
                }]
            }); var companyCategoriesStore = new Ext.data.JsonStore({
            fields:['sum','companyCategory'],data:[
                { companyCategory:'Finanzdienstleistung',
                  sum: 199
                },
                { companyCategory:'Automobilindustrie',
                  sum: 5
                }]
            }); var companySizeStore = new Ext.data.JsonStore({
            fields:['sum','companySize'],data:[
                { companySize:'Mehr als 500 Mitarbeiter',
                  sum: 126
                },
                { companySize:'Mehr als 1000 Mitarbeiter',
                  sum: 70
                },
                { companySize:'50 -100 Mitarbeiter',
                  sum: 1
                },
                { companySize:'20 - 50 Mitarbeiter',
                  sum: 2
                },
                { companySize:'weniger als 10 Mitarbeiter',
                  sum: 5
                }]
            });
 var SurveyWithAveragesStore = new Ext.data.JsonStore({
        fields:['name', 'surveys', 'average'],
        data: [{name:'02', surveys: 32, average:'16'},{name:'03', surveys: 23, average:'11.5'},{name:'04', surveys: 30, average:'15'},{name:'05', surveys: 7, average:'3.5'},{name:'06', surveys: 39, average:'19.5'},{name:'07', surveys: 4, average:'2'},{name:'08', surveys: 4, average:'2'},{name:'09', surveys: 16, average:'8'},{name:'10', surveys: 24, average:'12'},{name:'11', surveys: 25, average:'12.5'}]});  //gets dynamicly replaced with content
        var xg = Ext.grid;

        // shared reader
        var reader = new Ext.data.ArrayReader({}, [

            {name: 'title'},
            {name: 'username'},
            {name: 'lastChange', type: 'date'},
            {name: 'desc',type:'text',selectable:true}
        ]);

    // row expander
    var expander = new Ext.ux.grid.RowExpander({
        tpl : new Ext.Template(
            '<p><b>Notiz:</b> {desc}</p>'
        )
    });

und der Gridpanel noch zu guterletzt

new Ext.Panel({
                id              :'surveyEditorgridPanel',
                title           :'surveyEditorgridPanel',
                region          :'center',
                deferredRender  :false,
                layout          :'table',
                frame           :true,
                padding         :10,
                autoScroll      :true,
                layoutConfig    :{columns:1},
                defaults        :{frame:true, width:900, height: 450},
                items:[

         {
                    title:'User: cocomin',
                    items:[{}],
                    colspan:2,
                    width:900,
                    height:70,
                    margin:10,
                    html: '<h1>Hallo cocomin heute ist der #date#. Willkommen in Deiner Umfrageadministration</h1><p>Im folgenden findest Du die neuesten Daten aus Deinen Umfragen. <input type="button" value="export"></p>'
                }
        ,
                    surveyEditorgridPanel
                ]
            })