Archiv

für Programmierung

Tanzen auf zwei Hochzeiten: SharePoint Provider-Hosted Add-Ins in Office365 & On-Premise installieren

Worum geht es überhaupt?

Ich bin zwar nicht sicher, ob ich der einzige bin, der es versucht hat, aber zumindest schein ich der erste zu sein, der darüber schreibt: Eine SharePoint Provider-Hosted Add-In zu programmieren, dass sich sowohl auf einer lokalen SharePoint-Installation, als auch in Office365 verwenden lässt.

Vielleicht ist es auch eine deutsche Besonderheit: Hier herrscht ein ziemliches Misstrauen gegenüber der Cloud, viele Kunden wollen die Daten lieber auf „ihrem“ Server lagern. Office365 ist deshalb kein Thema.

Wir haben derzeit einen Kunden, dem unsere Office365.-App „Mydea“ sehr gut gefällt. Allerdings möchte er, dass sie auf einem SharePoint 2013 installiert wird. Also hatte ich drei Optionen:

  1. Sagen, dass es nicht geht
  2. Die ganze Lösung kopieren und dann die Kopie so anpassen, dass sie auf dem SharePoint 2013 funktioniert
  3. Irgendwas magisches anderes probieren 🙂

Natürlich wollte ich die erste Option auf jeden Fall vermeiden. Die zweite Lösung hätte prinzipiell funktioniert, aber zu doppeltem Pflegeaufwand geführt. Das ist unschön und macht keinen Spaß. „Mydea“ ist ein Innovationstool, und als solches selbst natürlich möglichst innovativ. Das bedeutet, kurze Produktzyklen und agil entwickelt. Das doppelt pflegen zu müssen wäre die Hölle 🙂

Also habe ich mich für die dritte Option entschieden: Etwas Magie.Die Anwendung sollte – ohne beim (automatisierten) Ausliefern eine Zeile Code ändern zu müssen sowohl unter Office365, als auch unter SharePoint 2013 lauffähig sein.

Weiterlesen

Proxy-Probleme mittels Fiddler umgehen

Wer in einem Unternehmen arbeitet, dass eine Proxy-Authentifizierung verwendet (also die Eingabe eines Passworts zum Surfen erfordert) kennt das Problem: Einige Die meisten Anwendungen mögen keine Proxies mit Passwortabfrage. Eine dieser Anwendungen ist Visual Studio, dass an vielen verschiedenen Stellen Fehler schmeißt.

Man kann diese Fehler durch verschidene Workarounds beheben, aber im Grunde sind sie alle PITA.

Wenn man dann auch noch selbst Anwendungen entwickelt, welche Online-Zugriff benötigt, ist man ziemlich gearscht.

Nach einer langen Recherche und viel herumprobieren habe ich nun eine Lösung mittels Fiddler gefunden. Wer (Online-)Software entwickelt, hat es oftmals ohnehin bereits installiert.

Weiterlesen

HomeMatic – Thermostate auf einem WebInterface anzeigen

Dieses Tutorial setzt voraus, dass FHEM bereits installiert und konfiguriert ist und der Umgang mit AngularJS bekannt ist

Ich habe in vorherigen Beiträgen bereits beschrieben, wie ich den RaspBerry PI zur Heimautomation verwende. Ich erkenne bereits das SmartPhone, das FitBit und kontrolliere Webcam sowie die Harmony Fernbedienung mittels einiger Shell-Scripte und einem Webinterface.

Als nächsten Schritt wollte ich Heizungsthermostate von HomeMatic (z.B. erhältlich bei ELV) ansteuern und schick darstellen.

Genutzte Hardware:

  • HomeMatic Funk-Konfigurationsadapter LAN (HM-CFG-LAN)
  • HomeMatic Thermostat HM-CC-RT-DN
  • Raspberry Pi V2.

Verwendete Software:

  • HTML/CSS
  • JavaScript
  • AngularJS
  • FHEM
  • PHP (optional)

Bevor wir anfangen, solltest du sicherstellen, dass FHEM bereits korrekt funktioniert und die Thermostate ansteuert. Ich werde diese Schritte nicht genauer erläutern, da dafür bereits gute Tutorials existieren im FHEM WikiWeiterlesen

FlashairDownloader 2

Der FlashAirDownloader 2 ist da \o/ (Aus reinen Faulheitsgründen werde ich ihn von nun an mit FAD abkürzen 🙂 )

Eine Menge Nutzer haben den FlashAirDownloader (1) bereits genutzt. Dieser war ursprünglich nur als „Quick Hack“ gedacht um auf meine Toshiba FlashAir – Karte zuzugreifen. Da immer mehr Nutzer nach neuen Features und Sourcecodeschnipseln gefragt haben, habe ich mich entschlossen, das Programm unter die GPL-Lizenz zu stellen und den Quellcode zu veröffentlichen.

Das Problem hierbei: Wie bereits erwähnt, war das Programm nur als Quick Hack gedacht. Lausige UI, lausiger Code, viel zu peinlich um das einsehbar zu machen. Also habe ich mich entschieden, es nochmal zu machen: Dieses Mal ordentlich; Mit halbwegs ansprechender UI (im Rahmen meiner Design-Legasthenie :)) und ordentlich kommentierten Quellcode. Dabei habe ich darauf geachtet, dass auch weiterhin alte Veteranen mit Windows XP das Programm nutzen wollen.

Aber genug gesabbelt. Da ist das Schmuckstück:

Du kannst den Quelltext direkt von GitHub downloaden und dort natürlich auch das Programm verbessern. Wenn Du das Programm einfach nur nutzen willst, lade die Binaries hier herunter.:

Du wirst eine Menge Warnmeldungen erhalten, die so wirken, als würde der Antichrist höchstpersönlich versuchen, Dir einen Virus unterzujubeln. (Hint: Dem ist nicht so) Das liegt daran, dass die Setup-Datei nicht signiert ist. Eine Signatur kostet allerdings erstens jährlich Geld und zweitens einigen Aufwand um sie einzubinden. Wenn Dir das ganze zu suspekt ist, verstehe ich das: Lade Dir stattdessen den Quellcode bei GitHub herunter und erstelle die Exe selbst durch Visual Studio.
Eine (englische) Installationsanleitung findest Du hier im Blog.

Wenn es Dir gefällt, habe ich natürlich nix dagegen, wenn Du mir etwas Geld Auf meine Panama-Konten überweist schickst. Oder einfach nur Liebe. Oder noch besser: Bring Dich ein und verbessere den Code; Dann habe ich weniger zu tun – was ja der Hauptgrund für mich war, das Tool unter eine Open Source-Lizenz zu stellen. 😀










SCRUM und Git: Optimierter Workflow // Mit vielen tollen bunten Farben :)

Viele Teams entscheiden sich für GIT, um den Code zu verwalten. Meines macht hier keine Ausnahme. Dieser Post ist aber nicht auf GIT limitiert, sondern funktioniert (mit kleinen Modifikationen) auch mit TFS oder SVN.

Warum sollte man überhaupt den Git Flow für SCRUM anpassen?

GIT und SCRUM sind doch zwei komplett unterschiedliche Welten?

Prinzipiell stimmt das. Aber während SCRUM ein sehr flexibles Arbeiten erlaubt, sind seine Paradigmen teilweise sehr strikt:

  • Man arbeitet in Sprints
  • In jedem Sprint werden User-stories definiert, die implementiert werden sollen

Deshalb haben wir uns entschieden, diese Vorgehensweise auch im git flow abzubilden.

Weiterlesen