Etwas problematisch bei Artikeln oder Büchern in der Domäne der IT sind die begrenzten Möglichkeiten zur Visualisierung des Geschriebenen gegenüber einer Präsentation. Bei Letzterem können Vortragende unter anderem mit der Mimik und Gestik arbeiten. Ich persönlich blende gerne Powerpoint-Folien bei Vorträgen dynamisch ab. Was heißt abblenden? Die Folien werden durch einen schwarzen Bildschirm ersetzt ¹, so dass die Augen der Teilnehmer nach einer "Schrecksekunde" in der Form "Beamer kaputt?", "Vortrag zu Ende?", "war ich eingeschlafen?" sich wieder beim Vortragenden, also bei mir, wiederfinden. In jedem Vortrag, jedem, durchleben Teilnehmer Schwankungen der Phasen ihrer Aufmerksamkeit – das ist nichts neues, das kennt jeder aus der Schule oder von Vorlesungen aus der Universität (und ist der Grund, warum gleich der nächste Absatz kommt). Gegen diese Schwankungen kann man nichts machen, aber ihre Ausschläge kontrollieren und das ist mit "dynamisch abblenden" gemeint, da die Teilnehmer und das Zielpublikum an sich inhomogen sind und so Zeitpunkte dafür immer woanders liegen.
Bei Artikeln und Bücher gibt es naturgemäß weniger solche Variationsmöglichkeiten und schon gar nicht dynamische. Hier arbeiten Autoren daher mit Bildern, mit Vorstellungskraft – auch Visualisierung, aber eben auf einer anderen Ebene. Mir persönlich ist beim Studium der verschiedensten Fachbücher, Artikel, Videos etc. pp. mit Inhalten von PERL, über C#, ASP.NET bis hin zu Unternehmensarchitekturen immer wieder die Trennung von Fließtext und Quelltext geradezu ins Auge gestochen. Ein Autor erklärt etwas, warum beispielsweise gerade ein GC.Collect() in einem Listing auf der nächst folgenden Buchseite und mit vielleicht ganzen 20 Zeilen an irgendeiner Stelle gerade dort so wichtig ist; aber diese Stelle lässt sich beim Blick in den Quelltext nicht direkt, nicht unmittelbar, finden. Die damit mehr oder weniger notwendigen Regressionen, also Rücksprünge im Text, sind nicht gerade sehr förderlich, nicht nur, weil sie Schnelllesen nicht unterstützen, sondern weil es sich scheinbar um zwei Blöcke von Inhalt handelt. Fließtext und Quelltext sind aber nicht disjunkt (im Sinne einer leeren Schnittmenge) zueinander, sie sind eine Einheit – ein Inhalt, ein Bild.
GC.Collect()
Wie könnte man das verbessern?So ähnlich wie im Blog-Eintrag Sounds bei Visual Studio 2003 vs. Visual Studio 2005.
... mit Ereignissen aufgrund von angestoßenen Builds eines Projektes. Ist der Build eines Projektes erfolgreich, wird die Datei C:\Windows\Media\chimes.wav {2} abgespielt. Hakt es irgendwo und der Build klappt nicht, dagegen die Datei C:\Windows\Media\Windows Critical Stop.wav {3}. Ein sinnvoller Einsatz des Makros liegt außerdem darin, gleich den kompletten Build einer Lösung anzuhalten, wenn ein Build eines Projektes daraus nicht erfolgreich ist und zwar mit: DTE.ExecuteCommand("Build.Cancel") {5}. ... Option Strict Off ... Public Module EnvironmentEvents {1} ... Declare Function PlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _ (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Const BuildSucceedWaveFile = "C:\Windows\Media\chimes.wav" {2} Const BuildFailedWaveFile = "C:\Windows\Media\Windows Critical Stop.wav" {3} Dim canceled As Boolean = False Private Sub BuildEvents_OnBuildProjConfigDone( _ {4} ByVal Project As String, ByVal ProjectConfig As String, _ ByVal Platform As String, ByVal SolutionConfig As String, _ ByVal Success As Boolean) _ Handles BuildEvents.OnBuildProjConfigDone If Success = False Then DTE.ExecuteCommand("Build.Cancel") {5} canceled = True {6} End If End Sub Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, _ {7} ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone If Not canceled Then {8} PlayWaveFile(BuildSucceedWaveFile) Else PlayWaveFile(BuildFailedWaveFile) End If canceled = False {9} End Sub Private Sub PlayWaveFile(ByVal soundFile As String) PlaySound(soundFile, &H1 Or &H2) End Sub End Module
... mit Ereignissen aufgrund von angestoßenen Builds eines Projektes. Ist der Build eines Projektes erfolgreich, wird die Datei C:\Windows\Media\chimes.wav {2} abgespielt. Hakt es irgendwo und der Build klappt nicht, dagegen die Datei C:\Windows\Media\Windows Critical Stop.wav {3}. Ein sinnvoller Einsatz des Makros liegt außerdem darin, gleich den kompletten Build einer Lösung anzuhalten, wenn ein Build eines Projektes daraus nicht erfolgreich ist und zwar mit: DTE.ExecuteCommand("Build.Cancel") {5}. ...
C:\Windows\Media\chimes.wav
C:\Windows\Media\Windows Critical Stop.wav
DTE.ExecuteCommand("Build.Cancel")
Option Strict Off ... Public Module EnvironmentEvents {1} ... Declare Function PlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _ (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Const BuildSucceedWaveFile = "C:\Windows\Media\chimes.wav" {2} Const BuildFailedWaveFile = "C:\Windows\Media\Windows Critical Stop.wav" {3} Dim canceled As Boolean = False Private Sub BuildEvents_OnBuildProjConfigDone( _ {4} ByVal Project As String, ByVal ProjectConfig As String, _ ByVal Platform As String, ByVal SolutionConfig As String, _ ByVal Success As Boolean) _ Handles BuildEvents.OnBuildProjConfigDone If Success = False Then DTE.ExecuteCommand("Build.Cancel") {5} canceled = True {6} End If End Sub Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, _ {7} ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone If Not canceled Then {8} PlayWaveFile(BuildSucceedWaveFile) Else PlayWaveFile(BuildFailedWaveFile) End If canceled = False {9} End Sub Private Sub PlayWaveFile(ByVal soundFile As String) PlaySound(soundFile, &H1 Or &H2) End Sub End Module
canceled
Remember Me
a@href@title, b, blockquote@cite, em, i, strike, strong, sub, sup, u