VMWare über Konsole steuern

Zum Steuern der VMware Workstation benötigt man das Programm vmrun, welches zur VIX-API gehört.

$ sudo ./VMware-VIX-1.10.3-368992.x86_64.bundle  

Anzeige aller laufenden Maschinen

$ vmrun -T ws list  
Total running VMs: 1  
/media/sdc2/vmware/xp_buero/xp_buero.vmx  

Python-Script zum herunterfahren aller laufenden VMware-Maschinen

#!/usr/bin/env python  
# -*- coding: utf-8 -*-  
#   

import os.path  
import os  
import tempfile  

def vm_shutdown(aDateiname):  
    if (os.path.isfile(aDateiname)):  
        s = 'vmrun stop %s soft' % (aDateiname)  
        print s  
        os.system(s)  
    else:  
    print aDateiname  

def vm_shutdown_all():  
    # Alle laufenden Maschinen auflisten und in Temp-Datei speichern   
    t = tempfile.mktemp()  
    s = 'vmrun -T ws list > %s' % (t)  
    os.system(s)  
    for z in open(t, 'r').readlines():  
        z = z.rstrip('\n')  
    vm_shutdown(z)  
    os.remove(t)  

if __name__ == [__main__]()  
    print "Alle VMwaremaschinen herunterfahren"   
    print "Shutdown all runnung VMware-Machines"  
    vm_shutdown_all()  

Zugriffsverletzung in der SQLOLEDB.dll beim zweiten Aufruf einer Stored Procedure aus Delphi heraus

Das funktioniert nur unter Win7 und ADO-Version 6.1

unter XP-SP3 und ADO-Version 2.8
kommt es zu einer einer Zugriffsverlertzung in SQLOLEDB.dll
beim zweiten Aufruf der Stored Procedure b9_Auslastung

  aProc.Close;  
  aProc.ProcedureName := 'b9_Auslastung';  
  aProc.Parameters.Refresh;  
  aProc.Parameters.ParamByName('@Bearbeiter_ID').Value := aBearb_ID;  
  aProc.Parameters.ParamByName('@Stichtag').Value := aStichtag;  
  aProc.Prepared := TRUE;  
  aProc.Open;  

Das funktioniert unter Win7 und ADO-Version 6.1

         und unter XP-SP3 und ADO-Version 2.8  
  aProc.Close;  
  aproc.Parameters.Clear;  
  aProc.ProcedureName := 'b9_Auslastung';  
  aProc.Parameters.CreateParameter('@Bearbeiter_ID', ftInteger, pdInPut, 0, aBearb_ID);  
  aProc.Parameters.CreateParameter('@Stichtag', ftDate, pdInPut, 0, aStichtag);  
  aProc.Prepared := TRUE;  
  aProc.Open;  

HBCI-Banking und KAAN TriBank unter Kubuntu 11.04 (64bit)

Nachdem mein KAAN TriBank unter Kubuntu 10.04.2 LTS ohne Probleme lief, gab es wieder Probleme seit dem Update auf Kubuntu 11.04.

Der Cardping64 funktionierte zwar.

$ ./cardping64 -b1 20100101  
Going to call CT_init  
CT_init (Port 1): 0  
CT_Reset: 0  
CT_data Aufruf mit: 20 10 01 01  
CT_data: 0  
Antwort: 3B ....  

aber sowohl Moneyplex als auch Hibiscus konnten mit dem Kartenleser nichts anfangen.

Daraufhin wandte ich mich an Kobil und habe vom Support eine neue libct.so bekommen. Diese libct.so kopierte ich in das Verzeichnis /usr/bin und seitdem ist der Kartenleser wieder benutzbar.

HBCI-Banking und KAAN TriBank unter Kubuntu 10.04.2 LTS

Den zur Zeit evtl. laufenden Dämon pcscd anhalten

$ sudo /etc/init.d/pcscd stop  

Zur Installation des Treibers lege ich mir unter ~/bin ein Verzeichnis kobil an und entpacke dort den Treiber.

$ mkdir bin/kobil  
$ cd  bin/kobil  
$ unzip /wnfdaten/Doẃnloads/ct-linux.zip  
$ cd  install  
$ tar xzf kobil-install.tgz  

Jetzt installiere ich die 32-bit Version

$ cd  installation  
$ sudo ./install32  

Jetzt den Dämon pcscd neu starten:

$ sudo /etc/init.d/pcscd restart  

Den Rechner neu starten

$ sudo reboot  

Nach dem Booten des Rechners noch einmal ins Installationsverzeichnis wechsel und den 32bit-Treiber für den Benutzer installieren.

$ cd  bin/kobil/install/installation  
$ ./installuser32  

In der Banking-Software Hibiscus den Kartenleser KAAN TriBank wie folgt ansprechen:

XXX-|Kartenleser |KAAN TriBank
|HBCI-Version |2.2
|CTAPI Treiber-Date | /usr/lib/libct.so
|Index des HBCI-Zugangs| 1
|Port des Lesers | COM2/USB2
|Index des Lesers |0

KinterbaseDB verursacht Fehler -901

Was in Kubuntu 10.04 noch funktioniert hatte, ruft in Kubuntu 10.10 diesen Fehler hervor:

(Kubuntu 10.10 amd64 - python 2.6 - Firebird 2.5 Super - kinterbasdb 3.2)

kinterbasdb.OperationalError: (-901, 'begin transaction: \n invalid parameter in transaction parameter block\n Table reservation lock type isc_tpb_shared requires table name before in TPB')

Traceback (most recent call last):  
  File "wnf_fib.py", line 60, in <module>  
    db.list_Adr()  
  File "wnf_fib.py", line 47, in list_Adr  
    dt_Adr.execute("SELECT ID,KURZ,STR,TEL1 FROM KO_ADR ORDER BY STR")  
kinterbasdb.OperationalError: (-901, 'begin transaction: \n  invalid parameter in transaction parameter block\n  Table reservation lock type isc_tpb_shared requires table name before in TPB')  

Hier fand ich einige Ausführungen dazu:

Also habe ich zusätzlich einen CustomTPB (transaction parameter buffers) eingeführt.

    def connect(self):  
        self.svc = kinterbasdb.services.connect(host=self.Server, user=self.User, password=self.Passwort)  
        dsn="%s:/%s" % (self.Server,self.Datenbank)  
        self.con = kinterbasdb.connect(dsn=dsn, user=self.User, password=self.Passwort)  
        self.customTPB = ( kinterbasdb.isc_tpb_write + kinterbasdb.isc_tpb_read_committed + kinterbasdb.isc_tpb_rec_version)  
        self.con.begin(tpb=self.customTPB)  
        return True  

Und jetzt funktioniert es wieder.

scantopdf.pl

Mit diesem Script kann ich von meinem Scanner aus eine PDF-Datei im Verzeichnis ~/PDF erzeugen. (Das Original stammt von www.svenna.de))

#!/usr/bin/perl  


######################################################  
# LIZENZ  
#  
# dieses programm steht unter der bierlizenz!  
# du kannst es benutzen, veraender und kopieren, wie du willst.  
# wenn wir uns mal treffen und du meinst es ist es wert - gib mir n bier aus :-)  
# svenna  
#  
# scripts@svenna.de  
# www.svenna.de  
######################################################  


# scanner erkennen  
# dazu muss sane installiert sein  
$scanner = `scanimage -L`;  
# drucker erkennen  
$printer = `lpq -P PDF`;  

$printer = $1;  

if ($scanner =~ /(\w+:libusb:\d{3}:\d{3})/){  
$scanner = $1;  

print "Scanner: $scanner\n";  
print "Drucker: $printer\n\n";  

copy();  
}  

else {print "Immer erst den Scanner anschliessen ;-) \n";}  


sub copy {  
print "scanne Dokument\n";  
system("/usr/bin/scanimage -d $scanner --gray=yes --resolution 150 -x 210 -y 295 > /tmp/kopie.pbm");  

print "wandle in PS-Datei um\n";  
# dazu muss netpbm installiert sein  
system("/usr/bin/pnmtops -equalpixels -dpi 150 -width 8 -height 11.6 /tmp/kopie.pbm > /tmp/kopie.ps");  

print "schicke Kopie an Drucker\n";  
system("/usr/bin/lpr -P$printer /tmp/kopie.ps");  

print "Kopie wurde im Ordner ~/PDF erstellt\n";  
}  

Forth

http://amforth.sourceforge.com/
forth

words zeigt alle vorhandenen Befehle an
@
!

variable N
N @
.s
hex .s
decimal .s
bin .s
.base

42 N !
N @ .

Schleife von 0 bis 7 definieren

meineschleife 8 0 do i , loop ;

jetzt aufrufen

meineschleife

0 1 2 3 4 5 6 7

Befehl test_leds_pwm Pulsweitenmodulation

Wert binär 2 in 8bit-Register speichern
%00000011 TCCR0A c!

Nur durch setzen der Register wird die PWM ausgelöst, die CPU wird nicht belastet

Jede Schleife mit until key press beenden

marker --wnfstart--

.res zeigt ressourcen an

Interruptserviceroutine in forth nicht trivial
besser in assembler schreiben

amforth kann multitasking
collaberate

Tags: 

wnfLazarus auf assembla.com

Auf www.assembla.com anmelden und seinen Space anmelden:

Free Subversion Repository – Commercial Quality

$ cd ~  
$ svn checkout [subversion.assembla.com/svn/wnflazarus/](https://subversion.assembla.com/svn/wnflazarus/)  

Es wird im Homeverzeichnis ein Verzeichnis wnflazarus/trunk angelegt.

Dorthin werden meine bisher vorhandenen Verzeichnisse wnfpower und wnftools kopiert.

$ svn add trunk/wnftools/  
A         wnftools  
A         wnftools/backup  
A         wnftools/wnf_linux.pas  

Die erste Version hochladen:

$ svn -m "wnftools" commit  
$ svn add trunk/wnfpower/  
A         trunk/wnfpower  
A  (bin)  trunk/wnfpower/wnfpower  
A         trunk/wnfpower/p_eingabe.pas  
A         trunk/wnfpower/p_eingabe.lfm  
A         trunk/wnfpower/wnfpower.rc  
A         trunk/wnfpower/backup  
A         trunk/wnfpower/wnfpower.lpi  
A         trunk/wnfpower/p_main.pas  
A         trunk/wnfpower/wnfpower.lpr  
A         trunk/wnfpower/wnfpower.manifest  
A         trunk/wnfpower/p_main.lfm  
A         trunk/wnfpower/p_const.pas  

Die Datei wnfpower ist eine Binärdatei und soll nicht mit unter die Versionskontrolle:

$ svn propedit svn:ignore trunk/wnfpower/  

Es öffnet sich ein Editor in dem die Datei wnfpower eingetragen wird.

$ svn status  
A       trunk/wnfpower  
A       trunk/wnfpower/p_main.lfm  
A       trunk/wnfpower/wnfpower.lpr  
A       trunk/wnfpower/backup  
A       trunk/wnfpower/p_main.pas  
A       trunk/wnfpower/p_eingabe.lfm  
A       trunk/wnfpower/wnfpower  
A       trunk/wnfpower/p_const.pas  
A       trunk/wnfpower/wnfpower.rc  
A       trunk/wnfpower/wnfpower.lpi  
A       trunk/wnfpower/p_eingabe.pas  
A       trunk/wnfpower/wnfpower.manifest  

Jetzt wird die Datei wnfpower nicht mehr mit übertragen. (Dachte ich zumindest.)

$ svn -m "wnfpower" commit  
Hinzufügen     trunk/wnfpower  
Hinzufügen     trunk/wnfpower/backup  
Hinzufügen     trunk/wnfpower/p_const.pas  
Hinzufügen     trunk/wnfpower/p_eingabe.lfm  
Hinzufügen     trunk/wnfpower/p_eingabe.pas  
Hinzufügen     trunk/wnfpower/p_main.lfm  
Hinzufügen     trunk/wnfpower/p_main.pas  
Hinzuf. (bin)  trunk/wnfpower/wnfpower  
Hinzufügen     trunk/wnfpower/wnfpower.lpi  
Hinzufügen     trunk/wnfpower/wnfpower.lpr  
Hinzufügen     trunk/wnfpower/wnfpower.manifest  
Hinzufügen     trunk/wnfpower/wnfpower.rc  
Übertrage Daten ..........  
Revision 3 übertragen.  

Jetzt die unerwünschte Datei löschen:

$ svn del trunk/wnfpower/wnfpower  
D         trunk/wnfpower/wnfpower  
$ svn status  
D       trunk/wnfpower/wnfpower  
$ svn -m "wnfpower" commit  
Lösche         trunk/wnfpower/wnfpower  
Revision 4 übertragen.  

Mit Lazarus das Projekt weiterentwickeln und kompilieren. Und siehe da, diesmal wird die Datei wnfpower nicht mehr mit übertragen:

$ svn -m "wnfpower" commit  
Sende          trunk/wnfpower/p_main.lfm  
Sende          trunk/wnfpower/p_main.pas  
Sende          trunk/wnfpower/wnfpower.lpi  
Übertrage Daten ...  
Revision 5 übertragen.  

Seiten