Dienstag, 5. November 2013

R in Latex mit Sublime Text 3 auf Windows 8.1 x64

Hier eine Anleitung, wie man sein Sublime so konfiguiert, dass es mit R und Latex umgehen kann und sogar R-Code in Latex erlaubt. (Siehe dazu Sweave)
  1. R installieren
  2. Latex installieren
  3. Sublime Text installieren
  4. Sumatra PDF installieren
  5. Sicherstellen, dass die folgenden Pfade in der PATH-Variablen stehen:
    • C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;
    • C:\Program Files (x86)\SumatraPDF;
    • C:\Program Files\R\R-3.0.2\bin\x64;
  6. Sublime Package Control 
    • installieren
    • STRG+SHIFT+P -> "Package Control: Install Package"
    • Folgende Pakete auswählen und installieren:
      • LaTeXTools
        • zur Konfiguration muss zudem noch
          sumatrapdf.exe -inverse-search "\"C:\Program Files\Sublime Text 3\sublime_text.exe\" \"%f:%l\"" in der Konsole ausgeführt werden
      • Enhanced-R
      • knitr
  7. Sweave konfigurieren
    1. Den Ornder "C:\Users\YOURS\AppData\Roaming\Sublime Text 3\Packages\Sweave" anlegen
    2. Darin eine Textdatei mit dem Namen "Sweave.sublime-build" erstellen und mit folgendem Inhalt füllen:
      • {
      •   "cmd": ["C:\\Users\\YOURS\\AppData\\Roaming\\Sublime Text 3\\Packages\\Sweave\\Sweave.bat", "$file"]
      • }
    3. Zudem eine Textdatei mit dem Namen "Sweave.bat" erstellen und mit folgendem Inhalt füllen:
      • @echo off
        • set name=%~n1
          • R CMD Sweave --encoding="utf-8" %name%.Snw
            • pdflatex %name%.tex
              • sumatrapdf %name%.pdf
            1. Die "Sweave.sty" in Latex registrieren.
              • Die Datei "C:\Program Files\R\R-3.0.2\share\texmf\tex\latex\Sweave.sty" nach "C:\Program Files\MiKTeX 2.9\tex\latex\r\Sweave.sty" kopieren
              • Die Datei "C:\Program Files\MiKTeX 2.9\miktex\bin\x64\mo.exe" ausführen und "Refresh FNDB" und "Update Formats" anklicken
          1. Ab jetzt sollten Snw-Dateien mit Sublime gebaut werden können. Dazu:
            1. Tools -> Build System -> Sweave auswählen
            2. Mit dem Cursor im Latex-Text STRG+B drücken
            3. Wenn sich der Cursor im R-Text wird automatisch die R-Umgebung gestartet und den Codeteil ausführen.

          Freitag, 11. Oktober 2013

          OneNote Screen Clipping mit Windows 8.1

          Wer, wie ich, OneNotes Screen-Clipping-Funktionalität zu lieben gelernt hat, kann dieses Feature unter Windows 8.1, wie hier beschrieben, zurück erlangen.


          Mittwoch, 9. Dezember 2009

          Mehr RAM für Windows CE Images

          Wer wie hier beschrieben ein Windows CE Image auf einem x86 System ausführt, verfügt in der Regel über mehr als 64MB Arbeitsspeicher. Um diesen Speicher nutzen zu können, muss das Image mit aktiviertem IMGRAM512-Schalter (bzw. IMGRAM256 oder IMGRAM128) erzeugt werden.

          Dazu einfach unter Project Properties -> Configuration Properties -> Environment eine neue Umgebungsvariable erzeugen und bei Name IMGRAM512 und bei Wert 1 wählen. Nach dem nächsten Build nutzt das Image mehr Speicher auf dem Hostsystem.

          Donnerstag, 26. November 2009

          Client-Konfiguration für den SSH-Zugriff auf SVN-Repositories unter Ubuntu 9.10

          Um auf einem frischen Ubuntu Zugriff auf ein über SSH geschütztes SVN-Repository (wie die des HPI) zu erhalten, sind die folgenden Schritte notwendig:

          Zunächst mit sudo apt-get install subversion den SVN-Client installieren.

          Dann mit Hilfe von ssh-keygen ein neues Schlüsselpaar erzeugen und den Public Key beim Server eintragen. Der Public Key kann z.B. mit cat ~/.ssh/id_rsa.pub ausgelesen werden.

          Für den Zugriff auf die Repositories muss nun nur noch ssh-add aufgerufen werden. Dann können sie wie gewohnt über svn co svn+ssh://repo@host/svn ausgelesen werden.

          Mittwoch, 30. September 2009

          CUDA-Toolchain auf Ubuntu 9.04 x64 installieren

          Auf der Nvidia-CUDA-Download-Seite die passende Betriebssystemversion auswählen und die folgenden Dateien herunterladen:
          1. CUDA Driver
          2. CUDA Toolkit
          3. CUDA SDK code samples
          Als nächstes den X-Server mit sudo /etc/init.d/gdm stop beenden und mit ALT + STRG + F1 in die Konsole wechseln und einloggen.

          Nun mit sudo sh cudadriver_*.run die Installation des Treibers starten. Dabei alle Setup-Vorschläge akzeptieren. Danach kann der X-Server mittels sudo /etc/init.d/gdm start wieder gestartet werden.

          Daraufhin das Toolkit mit sudo sh cudatoolkit_*.run installieren und auch dabei die Setup-Vorschläge akzeptieren. Schließlich das SDK mit sh cudasdk_*.run (nicht als sudo) installieren.

          Zuletzt müssen noch in der ~/.bashrc einige Umgebungsvariablen angepasst werden. Diese dazu mit einem Texteditor öffnen und folgenden Text ans Dateiende anfügen:
          • PATH=$PATH:/usr/local/cuda/bin
          • LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64
          • export PATH
          • export LD_LIBRARY_PATH
          Zum Erzeugen der ausführbaren Dateien werden zudem die folgenen Pakete benötigt, die mittels sudo apt-get install installiert werden können:
          • g++
          • libglut3-dev
          • libXi-dev
          • libXmu-dev
          Abschließend einfach sudo make im SDK-Verzeichnis ausführen.

          Freitag, 10. Juli 2009

          Outlook-Add-In: Items in einem beliebigen Ordner erstellen

          In der Regel werden neue Items innerhalb eines Add-Ins für Microsoft Outlook mit Hilfe des akutellen Anwendungskontextes erstellt.

          AppointmentItem appointment =
          (AppointmentItem)this.Application.CreateItem(
          Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem)

          Bei dieser Vorgehensweise werden dabei jeweils die Standard-Order für den entsprechenden Itemtyp gewählt. Das heißt für das hier gewählte Beispiel, dass der neue Termin in den Default-Kalender eingetragen werden würde.

          Soll ein Item in einem anderen Ordner erstellt werden, so muss dies auf folgende Weise getan werden:

          AppointmentItem appointment =
          (AppointmentItem)folder.Items.Add(OlItemType.olAppointmentItem);

          Ordner können ausgehend von den Root-Ordnern (this.Application.GetNamespace("MAPI").Folders) rekursiv ermittelt werden. Jeder Ordner gibt über folder.DefaultItemType den Typ der Items an, für die er vorgesehen wurde. Außerdem können Ordner anhand ihres Pfades (folder.FullFolderPath) identifiziert werden.

          Outlook-Add-In: ein transparentes Icon verwenden

          Gerade bei einem Add-In für Microsoft Outlook bietet es sich an, Icon-Buttons anstelle von normalen Buttons zu verwenden. Dies ist jedoch leider nicht so einfach möglich, wie bei WindowsForms- oder WPF-Applikationen.


          Ablauf im Überblick:

          1. Button ermitteln / erzeugen
          2. Icon und Maske laden und konvertieren

          Durchführung:


          1. Button ermitteln / erzeugen

          Im ersten Schritt wird überprüft, ob der Button bereits im Outlook vorhanden ist. Ist dies der Fall, wird er übernommen. Ansonsten wird er neu erzeugt. Daraufhin wird er entsprechend konfiguriert. Dabei wird sein Style auf msoButtonIcon gesetzt.

          CommandBarButton button;
          try
          {
          button =
          (CommandBarButton)commandBars["Standard"].Controls[buttonCaption];
          }
          catch (System.Exception ex)
          {
          button =
          (CommandBarButton)commandBars["Standard"].Controls.Add(
          1,
          System.Reflection.Missing.Value,
          System.Reflection.Missing.Value,
          System.Reflection.Missing.Value,
          System.Reflection.Missing.Value);

          button.Caption = buttonCaption;
          }

          button.DescriptionText = "Description";

          button.Style = MsoButtonStyle.msoButtonIcon;
          button.Picture = getIcon();
          button.Mask = getMask();

          button.Click += new _CommandBarButtonEvents_ClickEventHandler(click);

          2. Icon und Maske laden und konvertieren

          Nun muss ein Icon erstellt werden. Zusätzlich muss eine schwarz-weiße Maske erstellt werden, welche die Transparenz des Icons beschreibt. Schwarz steht dabei für sichtbar, während weiß durchlässige Bereiche repräsentiert. Sowohl Icon, als auch Maske müssen 16x16 Pixel groß sein und können als BMP erstellt werden. Sie können dem Projekt als Ressource hinzugefügt werden und sind dann einfach wie im folgenden gezeigt erreichbar.

          private static IPictureDisp getMask()
          {
          return AxHostConverter.ToPictureDisp(Properties.Resources.Icon);
          }

          private static IPictureDisp getIcon()
          {
          return AxHostConverter.ToPictureDisp(Properties.Resources.Mask);
          }

          Die CommandBarButtons eines Outlook-Add-Ins erwartet für die Eigentschaften Picture und Mask eine Instanz, die IPictureDisp implementiert. Da dies für Image und Bitmap nicht zutrifft, müssen die aus den Ressourcen geladenen Bilder zunächst konvertiert werden. Der einfachste Weg nach IPictureDisp zu konvertieren, ist die Erzeugung einer Unterklasse von AxHost.
           
          internal class AxHostConverter : AxHost
          {
          private AxHostConverter() : base("") { }

          static public stdole.IPictureDisp ToPictureDisp(Image image)
          {
          return (stdole.IPictureDisp)GetIPictureFromPicture(image);
          }
          }

          Weitere Informationen:
          • nebem dem in diesem Beitrag verwendeten Weg gibt es auch noch einen erheblich umständlicheren Weg auf eingebette Resourcen zuzugreifen. Mehr Informationen dazu gibt es hier
          • eine umfassende Beschreibung, welche Möglichkeiten es gibt ein Image in ein IPictureDisp zu konvertieren findet sich hier