Cincom hat eine kurze Übersicht zu Smalltalk veröffentlicht:
"Cincom Smalltalk – The Language on Two Pages"
Freitag, 14. Dezember 2012
SQLServer log keeps growing
Recently our database log was growing bigger and bigger on our main development database. The DBA just blamed the developers because he meant they were not closing transactions correctly.
But DBCC OPENTRAN did not display any open transactions, but instead reported that SQLServer tried to replicate transactions, also we did not have any replication configured for this database.
Unfortunately I do not know how our DBA solved the problem, but at least he stopped blaming the developers ;-)
You will find some informations on the web about similar problems, search Google for sp_removedbreplication or sp_repldone.
This query may also help to find out why log space is not reused:
But DBCC OPENTRAN did not display any open transactions, but instead reported that SQLServer tried to replicate transactions, also we did not have any replication configured for this database.
DBCC OPENTRANUsing fn_dblog I found the statement which belonged to the mentioned LSN (214984:95479:1 is in HEX 347C8:174F7:1)
Transaktionsinformationen für die ...-Datenbank.
Replizierte Transaktionsinformationen:
Älteste verteilte LSN : (0:0:0)
Älteste nicht verteilte LSN : (214984:95479:1)
select top 100 [Current LSN], [Begin Time], [Transaction Name], [AllocUnitName] from ::fn_dblog( null, null)I found some information in the SQLServer Logs at this time that showed that CHECKDB did have some problems at this time, maybe it was even crashing, probably leaving the database in a problematic state.
000347c8:000174f7:0001 2012/11/25 14:31:18:997 CheckDb NULL
000347c8:000174f7:0002 NULL NULL Unknown Alloc Unit
000347c8:000174f7:0003 NULL NULL ...
Unfortunately I do not know how our DBA solved the problem, but at least he stopped blaming the developers ;-)
You will find some informations on the web about similar problems, search Google for sp_removedbreplication or sp_repldone.
This query may also help to find out why log space is not reused:
select name, log_reuse_wait, log_reuse_wait_desc from sys.databasesAlso check out these links:
Labels:
SQLServer
Mittwoch, 28. November 2012
System Integration mit Xpert.Ivy: Intermediate Events über Dateien
Für die asynchrone Kommunikation zwischen Xpert.Ivy und externen Systemen innerhalb eines Prozesses stellt Xpert.Ivy Intermediate Events zur Verfügung.
Ein mögliches Szenario könnte wie im folgenden Bild sein. Eine Geschäftsapplikation sendet eine Meldung an Xpert.Ivy um einen Prozess zu starten. Im Laufe des Prozesses sendet Xpert.Ivy an ein Druckoutput System eine Anfrage zum Aufbereiten und Versenden eines Formulares. Anschliessend wartet der Prozess auf eine Meldung vom DMS System, dass das Formular zurückgesendet und archiviert wurde.
Und so könnte das in Xpert.Ivy aussehen:
Wie ein Prozess Start über eine Datei funktionieren kann, habe ich in diesem Post beschrieben:
System Integration mit Xpert.Ivy: Event Start über Dateien
Im oben beschriebenen Szenario würde beim Print-Request bereits die gleiche Event-ID an das Druck-System übergeben. Dieses könnte die Event-ID als Strichcode auf ein Formular drucken, welcher dann wenn das Formular zurückkommt, vom Scanner bzw. Dokument Management System gelesen und wieder in die Event-ID umgewandelt wird. Diese wird dann vom DMS wieder an Xpert.Ivy zurückgegeben, wo so die Event-ID wieder einem bestimmten Prozess zugeordnet werden kann.
Hier das etwas überarbeitet Szenario.
Xpert.Ivy liefert die Klasse FileIntermediateEventBean aus, welche wir uns im folgenden etwas genauer ansehen.
Attribute1=Wert1,Attribute2=Wert2,...
Die Werte können über die Ivy Variable "result" im Output-Tab des Intermediate Events abgefragt werden.
Beispiel:
Ein mögliches Szenario könnte wie im folgenden Bild sein. Eine Geschäftsapplikation sendet eine Meldung an Xpert.Ivy um einen Prozess zu starten. Im Laufe des Prozesses sendet Xpert.Ivy an ein Druckoutput System eine Anfrage zum Aufbereiten und Versenden eines Formulares. Anschliessend wartet der Prozess auf eine Meldung vom DMS System, dass das Formular zurückgesendet und archiviert wurde.
Und so könnte das in Xpert.Ivy aussehen:
Wie ein Prozess Start über eine Datei funktionieren kann, habe ich in diesem Post beschrieben:
System Integration mit Xpert.Ivy: Event Start über Dateien
Intermediate Events
Jedem Intermediate Event muss in Xpert.Ivy eine eindeutige ID, genannt "Event ID", zugewiesen werden. Dies kann die Ivy Case ID sein, oder eine andere eindeutige ID.Wenn man die Case ID nimmt, muss man während dem Entwickeln mit dem Designer etwas aufpassen, da nach jedem Start der Engine wieder mit der Case ID "1" begonnen wird.Im oben beschriebenen Szenario würde beim Print-Request bereits die gleiche Event-ID an das Druck-System übergeben. Dieses könnte die Event-ID als Strichcode auf ein Formular drucken, welcher dann wenn das Formular zurückkommt, vom Scanner bzw. Dokument Management System gelesen und wieder in die Event-ID umgewandelt wird. Diese wird dann vom DMS wieder an Xpert.Ivy zurückgegeben, wo so die Event-ID wieder einem bestimmten Prozess zugeordnet werden kann.
Hier das etwas überarbeitet Szenario.
Xpert.Ivy liefert die Klasse FileIntermediateEventBean aus, welche wir uns im folgenden etwas genauer ansehen.
FileIntermediateEventBean
Die Klasse FileIntermediateEventBean nimmt eine Datei im folgenden Format entgegegen:Attribute1=Wert1,Attribute2=Wert2,...
Die Werte können über die Ivy Variable "result" im Output-Tab des Intermediate Events abgefragt werden.
Beispiel:
Labels:
Xpert.Ivy
Mittwoch, 14. November 2012
Smalltalk versus Java
Als Entwickler im Umfeld von Geschäftsapplikationen mit Smalltalk und Java Erfahrung möchte ich hier einen kleinen Vergleich zwischen den beiden Sprachen bzw. Plattformen machen.
Die Geschichte von Smalltalk beginnt irgendwann in den 70er Jahren, wobei es erst in den 80er und 90er Jahren vermehrt Verbreitung fand, um dann mit dem Aufstieg von Java wieder Marktanteile zu verlieren. Heute sind Smalltalk-Projekte (zumindest in der Schweiz) ziemlich selten geworden.
Hier noch ein Zitat zu den Ursprüngen von Java:
Umbenennen von Klassen oder Methoden geht in Java etwas einfacher (vorausgesetzt die ganzen Verweise liegen im Projekt oder Workspace vor), weil beim Compilieren Fehler auftreten. Dafür spart man in Smalltalk einiges an Zeit weil es keine merkbaren Compilierzeiten gibt.
Im Gegensatz dazu ist es in keiner mir bekannten Smalltalk Umgebung möglich, verschiedene Arten von Resourcen oder gar Sprachen über die gleiche IDE zu editieren.
OO-Konzepte, Exception-Handling und die Klassenbibliotheken sind ein weiten Teilen vergleichbar.
Es ist zu hoffen, dass sich noch einige der Ideen und Konzepte von Smalltalk in die Java oder andere Plattformen retten können und dann vielleicht irgendwann zu Mainstream-Technologien werden. Ich bin aber ziemlich sicher, dass dies noch einige Jahr(zehnt)e dauern wird.
http://www.cincomsmalltalk.com
http://www.instantiations.com/
http://www.object-arts.com/
Die Geschichte von Smalltalk beginnt irgendwann in den 70er Jahren, wobei es erst in den 80er und 90er Jahren vermehrt Verbreitung fand, um dann mit dem Aufstieg von Java wieder Marktanteile zu verlieren. Heute sind Smalltalk-Projekte (zumindest in der Schweiz) ziemlich selten geworden.
Hier noch ein Zitat zu den Ursprüngen von Java:
Java. The elegant simplicity of C++. The blazing speed of Smalltalk.Zum beginnen einige Gemeinsamkeiten von Smalltalk und Java, quer über Sprache und Plattform:
http://c2.com/cgi/wiki?SmalltalkMinusMinus
- Beide sind Objekt-Orientiert
- Beide haben eine grosse Klassenbibliothek z.Bsp. für Collections
- Beide laufen in einer Virtual Machine und verwenden ein Garbage Collector
- Viele Smalltalk VM's laufen wie die JVM auf mehreren Betriebssystemen
- Smalltalk verwendet keine statische Typisierung
- Smalltalk hat nur sechs Key-Wörter, alles andere wird über Klassen, Objekte, Methoden und Blöcke (entspricht in etwa den Closures in Java 8) abgebildet
- Smalltalk verwendet sogenannte Images anstatt Dateien
- In Smalltalk bilden Sprache, Runtime und IDE eine stärkere Einheit. Dafür gibt es nicht wirklich einen Hersteller übergreifenden Standard, ein Wechsel der IDE ist praktisch nicht möglich
Statische versus Dynamische Typisierung
Als Nachteil von dynamischer Typisierung wird häufig angeführt, dass dadurch zur Laufzeit ein falsches Objekt verwendet werden könnte. In der praktischen Arbeit kommen solche Fehler aber extrem selten vor, wenn überhaupt. Viel häufiger tretten aber auch in Smalltalk folgende Probleme auf: Null Pointer Exceptions.Umbenennen von Klassen oder Methoden geht in Java etwas einfacher (vorausgesetzt die ganzen Verweise liegen im Projekt oder Workspace vor), weil beim Compilieren Fehler auftreten. Dafür spart man in Smalltalk einiges an Zeit weil es keine merkbaren Compilierzeiten gibt.
Sprache und Klassenbibliothek
Was einem als Smalltalk Entwickler beim Einstieg in Java vermutlich als erstes auffällt, ist der grosse Aufwand den es zu Beginn braucht um nur einmal sämtliche Schlüsselwörter und Konstrukte der Java Sprache zu erlernen. Während sich ein Java Entwickler also noch mit der Sprache herumschlägt, kann sich ein Smalltalk Entwickler bereits in die Klassenbibliothekt einarbeiten. Bzw. er muss, da in Smalltalk nun mal sämtliche Konstrukte wie IF-Statements und Loops in Form von Klassen und Methoden vorliegen. Ansonsten finden sich praktisch alle Klassen in Smalltalk auch in Java wieder oder umgekehrt, hier als Beispiel ein Auszug aus den Collections-Klassen:| Smalltalk | Java |
| Dictionary | Map |
| IdentityDictionary | HashMap |
| Collection | List |
| OrderedCollection | ArrayList |
| Array | (primitive Arrays) |
| Set | Set |
| IdentitySet | HashSet |
| usw. |
Tools und IDE
In Smalltalk findet der grösste Teil der Entwicklung im Class-Browser statt. Im Gegensatz zu Java IDEs wie Eclipse, wo Editierung und Browsing getrennt sind, bildet dies in Smalltalk immer eine Einheit. Die Klassen werden nicht primär in einzelnen Dateien gespeichert sondern in einem gemeinsamen Image. Dies macht die Entwicklung mit Smalltalk sehr effizient.Im Gegensatz dazu ist es in keiner mir bekannten Smalltalk Umgebung möglich, verschiedene Arten von Resourcen oder gar Sprachen über die gleiche IDE zu editieren.
![]() |
| Class-Browser in VisualWorks - Browsen und Editieren gleichzeitig |
Smalltalk oder ...?
Die Sprache Smalltalk ist einfacher als Java aber trotzdem sehr mächtig ist und wirkt dank der konsequenten Umsetzung der Konzepte immer noch modern. Im direkten Vergleich zu Smalltalk (oder auch C#) wirkt Java (die Sprache) für mich eher schwerfällig und veraltet. Alternative Sprachen bringen zwar einige der Vorteile dynamischer Sprachen auch auf die Java Plattform, die IDE Unterstützung scheint mir aber bei Smalltalk immer noch einiges komfortabler zu sein.OO-Konzepte, Exception-Handling und die Klassenbibliotheken sind ein weiten Teilen vergleichbar.
Es ist zu hoffen, dass sich noch einige der Ideen und Konzepte von Smalltalk in die Java oder andere Plattformen retten können und dann vielleicht irgendwann zu Mainstream-Technologien werden. Ich bin aber ziemlich sicher, dass dies noch einige Jahr(zehnt)e dauern wird.
http://www.cincomsmalltalk.com
http://www.instantiations.com/
http://www.object-arts.com/
Labels:
Smalltalk
Donnerstag, 8. November 2012
ObjectStudio 8.4 ListView extensions
Some years ago I implemented some ListView extensions using WindowProc subclassing and primitives. While testing the new ObjectStudio Release 8.4.1 I found that registering our own WindowProc lead to crashes. I originally used the CHookWnd class, but because this class was marked obsolete by its author I had to find another way.
Using CWindowImpl I was now able to create a first working demo again.
Here is the primitive method which I use to register my own WindowProc for a ListView. It gets called from Smalltalk right after the ListView opens:
BOOL LV_Init() {
INIT_LOCAL_GVARS;
OPTR oSelf;
oSelf = PTOSn(0);
// Get CPP handle of ListView form item
OPTR oCppHandle = GetObjVar(oSelf,GetInstVarOffset(oSelf,SymbolHash((PSZ)_T("cppHandle"))));
if (IsNil(oCppHandle)) return FALSE;
// Check if handle is valid and get a reference to the MFC CListCtrl object
if(ObjHandle(oCppHandle) == NULL) return FALSE;
if(!AfxIsValidAddress((void*)ObjHandle(oCppHandle),sizeof(CListCtrl), true))
return FALSE;
CListCtrl* m_pCtrl = (CListCtrl*)ObjHandle(oCppHandle);
if(!m_pCtrl) return FALSE;
HWND hwnd = m_pCtrl->GetSafeHwnd();
if (hwnd == NULL) return FALSE;
// New Code to Subclass the WindowProc instead of CHookWnd
CMyListViewEx *myListViewEx = new CMyListViewEx();
BOOL result = myListViewEx->SubclassWindow(hwnd);
return result;
}
And this is the extension demo class, printing out middle mouse buttons down events to the transcript:
class CMyListViewEx : public CWindowImpl<CMyListViewEx,CListCtrl>
{
public:
BEGIN_MSG_MAP(CMyListViewEx)
MESSAGE_HANDLER(WM_MBUTTONDOWN, OnMButtonDown)
END_MSG_MAP()
LRESULT OnMButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) {
INIT_LOCAL_GVARS;
Out(_T("MBUTTONDOWN %i %i %i"), uMsg, wParam, lParam);
bHandled = TRUE;
return TRUE;
}
CMyListViewEx(void);
~CMyListViewEx(void);
void OnFinalMessage(HWND hWnd) {
UnsubclassWindow(TRUE);
delete this;
}
}
If we ever finish porting from ObjectStudio 7 to 8 I may contribute our extensions to the Cincom public Store repository.
See also:
Using CWindowImpl I was now able to create a first working demo again.
Here is the primitive method which I use to register my own WindowProc for a ListView. It gets called from Smalltalk right after the ListView opens:
BOOL LV_Init() {
INIT_LOCAL_GVARS;
OPTR oSelf;
oSelf = PTOSn(0);
// Get CPP handle of ListView form item
OPTR oCppHandle = GetObjVar(oSelf,GetInstVarOffset(oSelf,SymbolHash((PSZ)_T("cppHandle"))));
if (IsNil(oCppHandle)) return FALSE;
// Check if handle is valid and get a reference to the MFC CListCtrl object
if(ObjHandle(oCppHandle) == NULL) return FALSE;
if(!AfxIsValidAddress((void*)ObjHandle(oCppHandle),sizeof(CListCtrl), true))
return FALSE;
CListCtrl* m_pCtrl = (CListCtrl*)ObjHandle(oCppHandle);
if(!m_pCtrl) return FALSE;
HWND hwnd = m_pCtrl->GetSafeHwnd();
if (hwnd == NULL) return FALSE;
// New Code to Subclass the WindowProc instead of CHookWnd
CMyListViewEx *myListViewEx = new CMyListViewEx();
BOOL result = myListViewEx->SubclassWindow(hwnd);
return result;
}
And this is the extension demo class, printing out middle mouse buttons down events to the transcript:
class CMyListViewEx : public CWindowImpl<CMyListViewEx,CListCtrl>
{
public:
BEGIN_MSG_MAP(CMyListViewEx)
MESSAGE_HANDLER(WM_MBUTTONDOWN, OnMButtonDown)
END_MSG_MAP()
LRESULT OnMButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) {
INIT_LOCAL_GVARS;
Out(_T("MBUTTONDOWN %i %i %i"), uMsg, wParam, lParam);
bHandled = TRUE;
return TRUE;
}
CMyListViewEx(void);
~CMyListViewEx(void);
void OnFinalMessage(HWND hWnd) {
UnsubclassWindow(TRUE);
delete this;
}
}
If we ever finish porting from ObjectStudio 7 to 8 I may contribute our extensions to the Cincom public Store repository.
See also:
Labels:
ObjectStudio,
Smalltalk,
VC++
Donnerstag, 18. Oktober 2012
Xpert.Ivy Subversion Einstellungen
Ich hatte heute das Problem, dass bei einer neuen Installation vom Ivy Designer der SVN Benutzer und Passwort nicht gespeichert werden konnten und daher bei jedem SVN Zugriff wieder Benutzer/Passwort abgefragt hat.
Subclipse (die in Xpert.Ivy verwendete Subversion Implementierung) speichert einige Daten im Workspace ab, einige liest es aus der Subversion Konfiguration im Benutzer Profil.
Die SVN-Benutzer-Angaben werden unter Windows im Benutzer Profil unter AppData gespeichert, zum Beispiel:
C:\Users\(User)\AppData\Roaming\Subversion\auth\svn.simple\
Nachdem wir die Datei in diesem Verzeichnis gelöscht haben, konnte Subclipse Benutzer/Passwort wieder speichern.
Die Daten im Workspace werden abgelegt unter:
workspace\.metadata\.plugins\org.tigris.subversion.subclipse.core\
Subclipse (die in Xpert.Ivy verwendete Subversion Implementierung) speichert einige Daten im Workspace ab, einige liest es aus der Subversion Konfiguration im Benutzer Profil.
Die SVN-Benutzer-Angaben werden unter Windows im Benutzer Profil unter AppData gespeichert, zum Beispiel:
C:\Users\(User)\AppData\Roaming\Subversion\auth\svn.simple\
Nachdem wir die Datei in diesem Verzeichnis gelöscht haben, konnte Subclipse Benutzer/Passwort wieder speichern.
Die Daten im Workspace werden abgelegt unter:
workspace\.metadata\.plugins\org.tigris.subversion.subclipse.core\
Defaults von Ivy Workspace Einstellungen ändern
Nach der Installation vom Ivy Designer oder nach dem Erstellen eines neuen Workspaces musste ich bis jetzt immer einige der Einstellungen erneut anpassen, oder ich habe die Einstellung ganz vergessen. Daher habe ich heute nach Wegen gesucht, wie sich das vereinfachen lässst.
Die Ivy- und anderen Eclipse-Workspace Einstellungen sind im Workspace im folgendem Verzeichnis abgelegt:
(workspace)\.metadata\.plugins\org.eclipse.core.runtime\.settings
Erstellt man einen neuen Workspace, kann man diese Dateien in den neuen Workspace kopieren.
Möchte man die Einstellungen nicht jedesmal kopieren, kann man die Default Einstellungen auch in der folgenden Datei anpassen:
(XpertIvyDesigner)\plugins\ch.ivyteam.ivy.designer.branding_4.3.0\plugin_customization.ini
Hier einige Beispiele für diese Datei:
ch.ivyteam.ivy.designer.ide/VISIBILITY_LEVEL=EXPERT
ch.ivyteam.ivy.designer.ide/ANIMATION_FOLLOWING_MODE=FOLLOW_ONLY_OPEN_PROCESSES
org.eclipse.core.resources/encoding=UTF-8
org.eclipse.ve.java.core/SWING_LOOKANDFEEL=my.look-and-feel
Das Format der Einträge in dieser Datei ist:
plugin-name/configuration=value
Wie die Einstellungen heissen findet man am einfachsten heraus indem man die Settings-Dateien im Workspace (.metadata\.plugins\org.eclipse.core.runtime\.setting) in einem Text-Editor öffnet. Sind dort noch keine vorhanden, kann man die Einstellung im Ivy Designer ändern und dann den Designer beenden, dann sollten die Einstellungen in die Dateien geschrieben werden.
Der Plugin-Name entspricht normalerweise der Settings-Datei ohne die Endung "prefs". Man kann den Plugin-Namen aber auch verifizieren wenn man im Designer die Einstellungsseite öffnet und dann Alt-Shift-F1 drückt (Plugin Spy).
Als Beispiel hier den Inhalt der Datei ch.ivyteam.ivy.designer.ide.prefs im:
#Thu Oct 18 13:32:13 CEST 2012
VISIBILITY_LEVEL=EXPERT
ANIMATION_FOLLOWING_MODE=FOLLOW_ONLY_OPEN_PROCESSES
eclipse.preferences.version=1
Es sollte auch möglich sein eine eigene plugin_configuration.ini Datei über die Commandline mittels
Einige Einstellungen lassen sich auch direkt über die Commandline ändern, z.Bsp. das Encoding:
-Dfile.encoding=UTF-8
Die Commandline Argumente können in der Datei "Xpert.Ivy Designer.ini" auf einer neuen Zeile eingefügt werden:
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-nl
en
-vmargs
-Xms128m
-Xmx768m
-XX:MaxPermSize=192m
-Dosgi.parentClassloader=ext
-da
-Dsun.java.command=XpertIvyDesigner
-Dfile.encoding=UTF-8
Daneben gibt es noch die Möglichkeit über das Export/Import-Menu Einstellungen zu exportieren/importieren.
Allerdings konnte ich bis jetzt nicht alle Einstellungen mit oben genanntem Weg übernehmen, z.Bsp. muss ich die SVN-Repositories (workspace\.metadata\.plugins\org.tigris.subversion.subclipse.core\.svnProviderState) immer noch von Hand kopieren oder erfassen.
Die Ivy- und anderen Eclipse-Workspace Einstellungen sind im Workspace im folgendem Verzeichnis abgelegt:
(workspace)\.metadata\.plugins\org.eclipse.core.runtime\.settings
Erstellt man einen neuen Workspace, kann man diese Dateien in den neuen Workspace kopieren.
Möchte man die Einstellungen nicht jedesmal kopieren, kann man die Default Einstellungen auch in der folgenden Datei anpassen:
(XpertIvyDesigner)\plugins\ch.ivyteam.ivy.designer.branding_4.3.0\plugin_customization.ini
Hier einige Beispiele für diese Datei:
ch.ivyteam.ivy.designer.ide/VISIBILITY_LEVEL=EXPERT
ch.ivyteam.ivy.designer.ide/ANIMATION_FOLLOWING_MODE=FOLLOW_ONLY_OPEN_PROCESSES
org.eclipse.core.resources/encoding=UTF-8
org.eclipse.ve.java.core/SWING_LOOKANDFEEL=my.look-and-feel
Das Format der Einträge in dieser Datei ist:
plugin-name/configuration=value
Wie die Einstellungen heissen findet man am einfachsten heraus indem man die Settings-Dateien im Workspace (.metadata\.plugins\org.eclipse.core.runtime\.setting) in einem Text-Editor öffnet. Sind dort noch keine vorhanden, kann man die Einstellung im Ivy Designer ändern und dann den Designer beenden, dann sollten die Einstellungen in die Dateien geschrieben werden.
Der Plugin-Name entspricht normalerweise der Settings-Datei ohne die Endung "prefs". Man kann den Plugin-Namen aber auch verifizieren wenn man im Designer die Einstellungsseite öffnet und dann Alt-Shift-F1 drückt (Plugin Spy).
Als Beispiel hier den Inhalt der Datei ch.ivyteam.ivy.designer.ide.prefs im:
#Thu Oct 18 13:32:13 CEST 2012
VISIBILITY_LEVEL=EXPERT
ANIMATION_FOLLOWING_MODE=FOLLOW_ONLY_OPEN_PROCESSES
eclipse.preferences.version=1
Es sollte auch möglich sein eine eigene plugin_configuration.ini Datei über die Commandline mittels
-pluginCustomization anzugeben.Einige Einstellungen lassen sich auch direkt über die Commandline ändern, z.Bsp. das Encoding:
-Dfile.encoding=UTF-8
Die Commandline Argumente können in der Datei "Xpert.Ivy Designer.ini" auf einer neuen Zeile eingefügt werden:
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-nl
en
-vmargs
-Xms128m
-Xmx768m
-XX:MaxPermSize=192m
-Dosgi.parentClassloader=ext
-da
-Dsun.java.command=XpertIvyDesigner
-Dfile.encoding=UTF-8
Daneben gibt es noch die Möglichkeit über das Export/Import-Menu Einstellungen zu exportieren/importieren.
Allerdings konnte ich bis jetzt nicht alle Einstellungen mit oben genanntem Weg übernehmen, z.Bsp. muss ich die SVN-Repositories (workspace\.metadata\.plugins\org.tigris.subversion.subclipse.core\.svnProviderState) immer noch von Hand kopieren oder erfassen.
Links
Abonnieren
Posts (Atom)




