Feeds
Artikel
Kommentare

Ich habe vor kurzem einen Algorithmus auf Folien einbinden müssen. Dies hat zuerst nicht geklappt, d.h. es wurden Fehler beim Übersetzen angezeigt oder PDFLatex hat sich aufgehängt. In einem Forum Latex-Beamer und Listings bin ich schnell fündig geworden. Wahrscheinlich hätte ich nur mal ins Handbuch gucken müssen.  Auf jeden Fall geht es so:

\documentclass[12pt]{beamer}
\usepackage{listings}

\begin{document}
\lstset{language=Prolog}

\begin{frame}[fragile]
\begin{lstlisting}
    hallo(S,T,u):-write('Hallo');
    hallo(S,1,S).
\end{lstlisting}
\end{frame}

\end{document}

Ein kleiner Nachtrag noch: Mathesymbole in lstlisting-Umgebungen! Habe ich hier gefunden! Man muss der Umgebung einfach die Option “mathescap” mitgeben:

\begin{lstlisting}[mathescape]
    kante(1,2):-$ \top $
\end{lstlisting}

Wenn man einen Response.Redirect als Antwort auf eine Ajax-Anfrage auslösen möchte, muss ein kleiner Umweg gegangen werden. Drei mögliche Lösungen werden in diesem Blog-Eintrag von Asp.net Codebook beschrieben.

Ich möchte die erste Lösung aufgreifen, da diese am zuverlässigsten funktionierte bzw. die anderen habe ich nicht getestet.

private void RedirectTo(string url)
{
string redirectURL = Page.ResolveClientUrl(url)
string script = “window.location = ‘” + _
redirectURL + “‘;”;
ScriptManager.RegisterStartupScript(this, _
typeof(Page), “RedirectTo”,_
script, true);
}

Ausgehend von einem Thread (Zentrierung von Text in Tabularx-Umgebung) auf der Seite Matroid habe ich das Problem gelöst Text in Tabularx-Umgebungen zu zentrieren. Gleichzeit ist dort auch beschrieben, wie der Text in Spalten vom Typ “X”  links- oder rechtsbündig gesetzt werden kann.

Dazu muss am einfachsten ein neuer Spaltentyp definiert werden mit:

\newcolumntype{Y}{>{\centering\arraybackslash}X}

Der neue Spaltentyp “Y”  kann dann genauso wie das “X” in der Spaltendefinition der Tabelle eingesetzt werden.

\begin{table}[H]
\footnotesize
\begin{tabularx}{\textwidth}{|Y|Y|}
Spalte 1 & Spalte 2\\
\end{tabularx}
\caption{Das ist eine Tabelle}
\label{Tabelle:Tabelle1}
\end{table}

Für \centering kann genauso durch \raggedleft oder \raggedright ersetzt werden für links- oder rechtsbündig.

Ein weiterer interessanter Hinweis in dem Thread ist, dass dies auch für Spalten vom Typ “p” funktioniert. Dies muss direkt in der Spaltendefinition der Tabelle mit angegeben werden:

\begin{tabularx}{\breiteB}{>{\scriptsize\centering\arraybackslash}p{2.28cm}...

Wenn die Fehlermeldung “Unable to load client print control” beim Versuch zu drucken angezeigt wird, sollte man den Artikel von Brian Hartman durchlesen.

Zusammengefasst kann gesagt werden, dass Microsoft ein Update (KB 956391) rausgebracht hat, welches die Benutzung des ursprünglichen ReportViewer Controls unmöglich macht. In dem Artikel wird zur Behebung das Installieren eines Updates für den Micrsoft SQL Server sowie das Updaten des ReportViewer Controls empfohlen.

Ich habe die Erfahrung gemacht, dass das Updaten des ReportViewer-Controls meistens schon zum Erfolg geführt hat. Nach dem Update muss einige Zeit gewartet werden bis das neue Reportviewer Control vom IIS ausgeliefert wird. Für Ungeduldige kann der betreffende Application Pool oder direkt der ganze  IIS neu gestartet werden, damit die Änderungen direkt übernommen werden.
Eine Kontrollmöglichkeit ist im HTML-Code der Report-Seite zu finden. Dort sollte die Version “8.0.50727.1843″ auftauchen.

Es geht hierbei darum, dass Parameter aus einer Anwendung (ASP.NET/VB.NET) an einen auf dem Reporting-Server gerenderten Bericht zu übergeben. Der Reporting-Server wird dabei über das ReportViewer-Control angesprochen.

Das Erste was getan werden muss ist, alle Parameter im Report selbst anzulegen. Dabei werden die Parameter im Report nicht als “hidden” sondern als “prompt” deklariert sind. Auch ein Standardwert kann vergeben werden. Ansonsten kommt es zu dem Fehler:

The report parameter ‘UserID’ is read-only and cannot be modified. (rsReadOnlyReportParameter)

Mit dem Folgenden Code werden zwei Parameter an der ReportViewer-Control übergeben und damit an den Report weitergeleitet:

ReportParameter[] parameters = new ReportParameter[2];
parameters[0] = new ReportParameter("Name", Name.ToString());
parameters[1] = new ReportParameter("UserID", UserID.ToString());
parameters[0].Visible = false;
parameters[1].Visible = false;
reportviewer.ServerReport.SetParameters(parameters);

Die Parameter UserID und Name müssen im Report, wie oben beschrieben, angelegt worden sein. Meiner Meinung nach ist dieser Lösungsweg nicht sehr intuitiv. Es wäre logischer den Parameter als “hidden” zu deklarieren und ihn nicht erst als “prompt” zu definieren. Schließlich wird er über die Anwendung auf “hidden” gesetzt.

testtool
Ich habe lange nach einem Tool gesucht, um Lasttests bzw. Funktionstests durchführen zu können. Besondere Anforderung war, dass es mit einer ASP.NET Anwendung funktionieren muss. Dabei ist bekanntlich der Viewstate bei einem Postback sehr wichtig. Gefunden habe ich: JMeter – Apache JMeter. (Siehe auch Screenshot oben)

Es ist ein sehr umfangreiches Testtool mit vielen Auswertungsmöglichkeiten.  Außerdem kann es mit dem Viewstate einer ASP-Seite gut umgehen.

Ich möchte nun eine kurze Beschreibung abgeben, wie mit dem Viewstate umgegangen werden muss.

regexpSo muss vor einem Postback vorgegangen werden:

1. Seite, die per Postback zurückgeschickt werden soll, aufrufen per HTTP-Request
2. An den HTTP-Request als Kind-Element einen Regular Expression Extractor anhängen
3. Die Seite per POST über einen HTTP-Request an den Server schicken, wobei alle Parameter, zusammen mit dem im vorherigen Schritt gewonnenen Viewstate, mitgeschickt werden.

requestpara

Wichtig dabei ist, dass ALLE Parameter mitgeschickt werden, die .NET erwartet. Am Besten man nimmt einmal über den in JMeter eingebauten Proxy den Postrequest auf. (Den Proxy der Workbench als Nicht-Testelement hinzufügen; Record starten; Proxy im Browser eintragen; Arbeitsschritte im Browser durchführen; Post-Request analysieren) Auch Parameter, die unsinnig erscheinen müssen mitgeschickt werden! Sogar wennn sie leer sind!

Wie der Viewstate per Regular Expression Extractor ist im mittleren Screenshot zu sehen. Er kann über ${ViewState} ausgelesen im HTTP-Request werden. So kann JMeter mit ASP.NET Anwendungen problemlos benutzt werden. Im unteren Screenshot ist nochmal ein Beispiel zu sehen, wo auch die “unsinnigen” Parameter zu sehen sind.

Jeder der in Latex Tabellen machen muss kennt die Schwierigkeiten damit. Besonders große Tabellen werden einfach zu unübersichtlich. Abhilfe schafft zum Beispiel die Möglichkeit von OpenOffice Calc Tabellen mittels eines Makros in Latex-Tabellen zu exportieren. Das Makro ist hier: calc2latex.zu finden.

Auf der Internetseite, die leider recht veraltet ist, wird noch von OpenOffice 1.1 bzw. 2.0 geredet. Bei mir funktioniert es auch unter dem neuen OpenOffice 3.1 ohne Probleme. Das trotz seines Release-Datums vom 29.10.2005!

Auch das Zusammenfassen von Zellen ist möglich und wird mit berücksichtigt.

Wer auf der Suche nach kostenlosen Büchern im Internet ist, sollte auf dieser Seite (Link) mal vorbei schauen. Dort finden sich eine Menge (englische) Bücher zum kostenlosen Lesen. Natürlich handelt es sich dabei um “ältere” Klassiker, aber das macht die Bücher auch nicht schlechter. Also wenn jemand schon mal die Bücher von Jules Vernes (In 80 Tagen um die Welt) lesen wollte, kann sich das mal angucken.

“Freie” Computerbücher:

Wer mit Latex Bilder und/oder Tabellen im Fließtext positionieren will, tut sich normalerweise sehr schwer. Mit dem PicIns Packet (Link) geht dies sehr einfach.  Ich fand, dass dies das stabilste Verfahren in Latex ist. Mit den Alternativen (wrapfigure,…) gab es meistens schwer wiegende Platzierungsprobleme. Unter diesem Link findet sich das Handbuch als PDF für alle die keine DVI-Dateien öffnen können. Ich denke alle Spezialfälle werden dort behandelt. Das einzige was ich noch suchen musste ist, dass ich für Tabellen den Caption-Typ ändern muss.

\piccaptiontype{table}
\piccaption{Das ist eine Tabelle}
\parpic[l]{. . .}

Probleme gibt es allerdings auch in diesem Paket. Besonders wenn ein Bild nicht mehr ganz auf eine Seite passt und auf die nächste rutscht, gibt es Probleme bei der Berechnung wieviel Text noch daneben passt. Dabei hängt das Bild dann oft im Text.

Ein Start in die Programmierung von 3D-Welten ist sehr schwierig. In der nächsten Zeit beschäftige ich mich näher mit diesem Thema.

Allerdings werde ich keine 3D-Engine schreiben, denn ich möchte schneller an mein Ziel kommen. Nach einem ersten kurzen Suchen habe ich mir für den Start folgende Software zugelegt:

Ich bin gespannt, was ich damit erreichen kann. Besonders interessant finde ich die Irrlich Engine, die scheinbar viel kann und auch noch vollkommen kostenlos ist. Zuästzlich gibt es u. A. einen “Welteditor” und einen Konverter der Blenderdateien direkt in ein Format umwandelt, die die Engine versteht. Dabei kann Blender auch in Formate exporiertieren, die die Engine verarbeiten kann. In naher Zukunft werde ich schreiben, wie weit ich gekommen bin.

    « Neuere Artikel - Ältere Artikel »