25. Januar 2010 von Hendrik Schreiber
Ich habe mich vor einiger Zeit mit Modell-Transformationen beschäftigt. Dazu zählen die Sprachen QVT und ATL. Dabei habe ich mich auch mit dem Auslösen der Transformationen aus Java heraus beschäftigt.
Um meine Projekte ausführen zu können braucht man:
MediniQVT-Plugin entpacken und in den “dropins”-Ordner von Eclipse ablegen. Die Projekte aus der Zip-Datei alle in den Eclipse-Workspace importieren. Die Projekte mit dem Präfix Meta_* beinhalten die Metamodelle bzw. die dazugehörigen GMF-Editoren. Weiterhin gibt es ein Projekt “Model_Transformation”, das ein Plugin beinhaltet, welches die Transformationen mit ATL durchführt (In dieser Version ist auch eine QVT-Beispiel-Transformation enthalten). Die ATL-Transformation ist in dem ATL-Projekt mit dem Namen ATL_Model_Transformation zu finden.
Um nachzuollziehen, wie ATL bzw. QVT-Transformationen aus Java ausgelöst werden können, einfach den Source-Code des Projektes Model-Transformation anschauen.
Um das Ganze auszuprobieren, müssen die Plugins als Eclipse-Application gestartet werden. Dort zunächst eine Model-Instanz des Source_Metamodells anlegen (Neues Projekt; Dann unter Neu->Examples). Anschließend das Diagramm bearbeiten, z.B. zwei Pages hinzufügen und einen Link mit Source und Target. Danach Rechtsklick auf die Datei und im Kontextmenü Transformation->Transform auswählen. Anchließend einmal das Verzeichnis aktualisieren und es sollten zwei Dateien erscheinen. Eine ist über ATL enstanden, die andere über QVT. Debug-Ausgaben finden sich in der Konsole der ursprünglichen Eclipse-Umgebung. Um sich das Ergebnis grafisch anzugucken im Kontextmenü die Diagramm-Dateien erstellen und öffnen.
Geschrieben in Programmieren | 0 Kommentare »
21. Januar 2010 von Hendrik Schreiber
Wenn man unter Latex einen Eintrag in das Inhaltsverzeichnis hinzufügen möchte, der keine Seitenzahl bekommt, muss man folgendes tun:
\addtocontents{toc}{%\protect\contentsline{chapter}{Anhang}{}{}%}
Diese Zeile fügt dem Inhaltsverzeichnis einen Eintrag an der Stelle hinzu, die mit der Stelle im Dokument übereinstimmt an der diese Zeile steht. Das Ganze ist kompatibel mit dem Packet Hyperref! Siehe dazu auch diese Diskussion.
Geschrieben in Latex | 0 Kommentare »
8. Januar 2010 von Hendrik Schreiber
Wenn man mit dem SQL Server 2005 eine Tabelle Reihe für Reihe durchlaufen möchte, muss man folgendes tun (Quelle: Link):
DECLARE @cnt int
DECLARE @cntMax int
SELECT @cnt=1;
SELECT @cntMax =Count(ID) FROM myTable WHERE x=1
WHILE @cnt <= @cntMax
BEGIN --While Loop
WITH AbfrageLoop AS (
SELECT row_number() OVER (ORDER BY ID) AS Row,*
FROM myTable
WHERE x=1
)
SELECT @y=y FROM AbfrageLoop WHERE Row=@cnt
DECLARE @y int --do something based on the query
DELETE FROM AnotherTable WHERE AnotherY=@y
SELECT @cnt = @cnt+1
END --While Loop
Bedenklich bei diesem Beispiel ist nur die Select-Abfrage für AbfrageLoop, da die bei großen Abfragen viel Zeit kostet. Besser ist wahrscheinlich, die vor die While-Schleife zu verlagern.
Das Ganze ist nur mit Vorsicht zu verwenden!
Geschrieben in Programmieren | Kommentar »
22. Dezember 2009 von Hendrik Schreiber
Ein Einlesen von CSV- und Excel-Dateien ist über die OleDB-Schnittstelle nicht mehr empfehlenswert, da die 64Bit-Unterstützung fehlt. Für das Einlesen von CSV-Dateien gibt es eine schöne Alternative die auf der Seite ActiveVB beschrieben ist: Link.
Dabei wird die Klasse “TextFieldParser” verwendet. Dazu kann man auch den MSDN-Artikel lesen.
Geschrieben in Programmieren | Kommentar »
19. November 2009 von Hendrik Schreiber
Entwickler stehen oft vor dem Problem des “Back-Buttons” und möchte die Benutzung des Back-Buttons bzw. das nochmalige Senden von Post-Requests möglichst verhinden. Über den folgenden Weg wird zwar die Benutzung des Buttons nicht verhindert, aber der Benutzer darauf hingewiesen, dass die Seite abgelaufen ist. Eigentlich sollte sogar erzwungen werden, dass der Browser einen neuen Get-Request auf die vorherige URL ausführt und nicht den Post-Request wiederholt.
In den PageLoad von VB.NET für eine ASP.NET-Seite:
Response.Expires = -1
Response.AppendHeader("Pragma", "no-cache")
Response.Cache.SetNoStore()
Response.Cache.SetExpires(DateTime.MinValue)
Geschrieben in Allgemein | 0 Kommentare »
19. November 2009 von Hendrik Schreiber
Ich habe ein englisches Windows 7 Professional (MSDNAA) installiert und habe festgestellt, dass sich die Sprache nicht auf deutsch ändern lässt. Das Installieren von Sprachpaketen ist anscheinend auf teurere Varianten von Windows 7 beschränkt. Interessanterweise gab es allerdings ein Sprachpaket für Windows 7 im MSDNAA, das sich mit einem Trick installieren lässt.
Dazu das Tool Vistalizator benutzen. Bedingung ist allerdings, dass man ein Sprachpaket zur Hand hat! Das Tool funktionierte bei mir sehr gut, auch wenn es ursprünglich für Vista vorgesehen war
Geschrieben in Allgemein | 0 Kommentare »
24. Juli 2009 von Hendrik Schreiber
Ich habe dafür keine einfache Lösung gefunden. Das Beste scheint zu sein, sich eine neue Umgebung zu definieren, bei der jedesmal der Abstand automatisch gesetzt wird. Global lässt sich dieser Parameter anscheinend nicht definieren. Eine Idee ist:
\newenvironment{Itemize}{\begin{itemize}\addtolength{\itemsep}
{-0.3\baselineskip}}{\end{itemize}}
Beispiel:
\begin{Itemize}
\item Das ist ein Text
\item Das ist ein Text
\end{Itemize}
Der Trick ist also den Parameter “\itemsep” so anzupassen, dass es gut aussieht. Für andere Listentypen ist dies analog anzuwenden!
Geschrieben in Latex | 0 Kommentare »
24. Juli 2009 von Hendrik Schreiber
Normalerweise wird hinter einem Paragraph kein Zeilenumbruch gesetzt. Dies kann einfach über das Paket “titlesec” (Link zur Dokumentation) geändert werden.
\usepackage{titlesec}
\titleformat{\paragraph}[hang]{\normalfont\bfseries}{}{0pt}{}
\titlespacing{\paragraph}{0mm}{10pt}{3pt}
Der entscheidende Parameter ist [hang] und findet sich in der zweiten Zeile. Damit wird automatisch ein Zeilenumbruch erzeugt. Mit der zweiten Zeile kann noch der Abstand nach oben und unten eingestellt werden.
Geschrieben in Latex | Kommentar »
10. Juli 2009 von Hendrik Schreiber
Es gibt erstmal drei grundlegende Abstände in Latex-Tabellen:
- \arraystretch für den Zeilenabstand
- \tabcolsep für den Abstand vor und nach Spalten
- \doublerulesep für den Abstand zwischen Doppel-Linien, wie z.B. \hline\hline
Gesetzt werden die Abstände mit den folgenden Kommandos:
- \renewcommand{\arraystretch}{1.2}
- \setlength{\tabcolsep}{4pt}
- \setlength{\doublerulesep}{1pt}
Geschrieben in Latex | 0 Kommentare »
8. Juli 2009 von Hendrik Schreiber
Ich habe große Probleme mit Wlan unter Windows Vista (64 Bit). Nicht das es nicht funktioniert, sondern eher, dass es im regelmäßigen Abstand von 60 Sekunden zu hohen Ping-Laufzeiten kommt.
Dies liegt nach einiger Recherche anscheinend tatsächlich an Windows Vista selbst. Der Fehler tritt anscheinend immer auf, wenn der Hersteller keine eigene Software mitliefert, die die automatische Konfiguration von Windows umgeht. Irgendwie soll Vista alle 60 Sekunden nach Netzwerken scannen.
Verbaut habe ich die Wlan PCI Karte von Hama mit Chipsatz von Ralink (Ra61). Diese bringt kein richtig funktionierendes eigenes Tool mit. (Übrigens: Bei Produkten vom AVM war ein eigenes Tool dabei, aber der Wlan USB Stick überhitzte zu schnell)
Ich habe nach einiger Suche folgendes in einem Forum gefunden: Link!
Dort ist ein Tool mit dem Namen VBGScan verlinkt, das bei mir super funktioniert. Vielleicht werde ich mit den Tips, die auch dort zu finden sind, mal ein eigenes Tool schreiben. Denn dieses hat nicht mal einen Tray-Modus.
Andere Tools haben bei mir leider nicht funktioniert. Mit VBGScan waren die Ping-Spitzen beseitigt.
Geschrieben in Allgemein | Kommentar »