Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
28. Nov 2010
Teaser

C#: Gute Zufallszahlen erzeugen

Wenn Sie unter .Net (in diesem Beispiel mit C#) gute Zufallszahlen erzeugen möchten, dann können Sie u.a. diese Methode nutzen:

Random r = new Random(Guid.NewGuid().GetHashCode());

Dabei wird als Berechnungsgrundlage für die Zufallszahl der Hashwert einer neu erzeugten GUID genutzt. Da bereits eine GUID (Globally Unique Identifier) immer eine unterschiedlichen Wert liefert, denn das ist schließlich die Aufgabe dieser Funktion, wird der Hashwert dieser GUID auch den Zufallsgenerator stets anders starten. Und genau diese Grundlage wird für gute Zufallszahlen benötigt.

23. Nov 2010
Teaser

Linux: root Passwort vergessen (Administrator Passwort)

Wenn Sie Ihr root Passwort für Ihr Linux System (in diesem Beispiel für “Debian”) vergessen haben, können Sie trotzdem mithilfe dieses Artikels auf Ihr System zugreifen: Sie setzen sich ein neues Passwort.

Beim Booten des Systems können Sie (kurz) zwischen Optionen auswählen. Starten Sie den Computer im “Single user mode” (ggf. “init=/bin/bash” beim der Zeile “Kernel” anfügen). Dadurch haben Sie nach dem Booten Schreibzugriff auf die Datei “/etc/shadow”.

Geben Sie dann den Befehl “passwd” ein oder bearbeiten Sie die Passwortdatei direkt mit “nano /etc/shadow”. Dabei können Sie für den Benutzer “root” den Passwortcode leeren und beim nächsten Booten sich als Benutzer “root” ohne Passwort anmelden. Dabei sollten Sie dringend darauf achten, dass Ihr Computer während dieses Vorganges vom Netzwerk getrennt ist und Sie nach dem normalen Booten sofort ein neues, sicheres Passwort für den Benutzer “root” vergeben.

18. Nov 2010
Teaser

Linux: Symbolischen Link erzeugen und löschen (ln)

Praxisbeispiel:

Sie möchten einem FTP Benutzer in seinem Verzeichnis auch den Zugriff auf ein weiteres Verzeichnis auf dem Server erlauben – möchten, wollen oder können jedoch die FTP-Server-Konfiguration nicht ändern. Dann können Sie einen “symbolischen Link” (Verweis) im normalen FTP Verzeichnis des Benutzers erstellen:

ln -s /var/backups/ ./backups

Damit stellen Sie dem Benutzer ein neues Unterverzeichnis bereit: “backups”. Dieses zeigt jedoch nur auf das bereits bestehende Verzeichnis “/var/backups” auf Ihrem Server.

Der Benutzer kann nun in seinem FTP Programm in dieses Verzeichnis wechseln und Datein herunter- und ggf. auch hochladen.

Sie löschen diesen Verweis “backup” wieder durch folgenden Befehl:

rm backup

Dabei bleibt das Verzeichnis “/var/backups” weiterhin bestehen – nur der Link im Benutzerverzeichnis wird wieder gelöscht.

12. Nov 2010
Teaser

C#: PDF Datei ohne Adobe Acrobat Fenster drucken (Batchbetrieb)

Sie können direkt aus C# heraus eine PDF drucken, ohne die Anzeige (das Adobe Fenster) vom Acrobat Reader anzuzeigen. Vorallem beim Drucken von PDF ohne Benutzereingabe oder beim Einsatz als Service wird diese Möglichkeit benötigt.

Nutzen Sie meinen folgenden SourceCode als Beispiel:

string pdf = @"C:\Dokumente und Einstellungen\Benutzername\Eigene Dateien\test.pdf";
string acrobat = @"C:\Programme\Adobe\Acrobat 7.0\Reader\AcroRd32.exe";

Process process = new Process();
process.StartInfo.FileName = acrobat;
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "/p /s /h \"" + pdf + "\"";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;

process.Start();
process.CloseMainWindow();

Sollte die erste Version auf Ihrem System nicht funktionieren, nutzen Sie die zweite Methode. Bei dieser wird im 50 ms Takt geprüft, ob der Handle des neuen Adobe Acrobat Fensters verfügbar ist. Danach wird das Adobe Fenser mit einem .Kill() Befehl beendet:

Process process = new Process();

process.StartInfo.FileName = acrobat;
process.StartInfo.Verb = "printto";
process.StartInfo.Arguments = "/p /s /h \"" + pdf + "\"";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;

process.Start();

DateTime start = DateTime.Now;
IntPtr handle = IntPtr.Zero;

while (handle == IntPtr.Zero && DateTime.Now - start <= TimeSpan.FromSeconds(2))
{
   try
   {
      System.Threading.Thread.Sleep(50);
      handle = process.MainWindowHandle;
   }

   catch (Exception) { }
}

process.Kill();

Auf dem Computer muss jedoch eine Version (hier ist es V7.0) des Adobe Acrobat Readers installiert sein.

Passen Sie die Pfade auf Ihre Version und Ihre PDF Dateien an.

Weitere Informationen zu den wichtigsten Befehlen der Scripte erhalten Sie hier:
process.CloseMainWindow()
process.Kill()

12. Nov 2010
Teaser

C#: PDF Datei in TIFF (Fax tiffg3) konvertieren

Um in C# eine PDF Datei direkt in eine faxfähige TIFFg3 Datei umzuwandeln, können Sie folgenden SourceCode nutzen:

// PDF in TIFg3 umwandeln
string gsPath = @"C:\Programme\gs\gs9.00\bin\gswin32c.exe";
string param = "-dNOPAUSE -q -dSAFER -dBATCH -sDEVICE=tiffg3 -sPAPERSIZE=a4 -r204x196";

ProcessStartInfo psi = new ProcessStartInfo(gsPath, param + " -sOutputFile=test.tif test.pdf");
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;

Process p = new Process();
p.StartInfo = psi;
p.Start();
p.WaitForExit();

Sie benötigen die kostenlose Software GhostScript V9.0 auf dem Computer / Server.