Sharepoint Foundation 2013 – Secure Store

Ganz ehrlich.. es gibt ein paar Dinge, die einen ziemlich ärgern. Dazu gehört der Secure Store des Sharepoint Foundation 2013.

image

Auf einen Nenner gebracht. Den gibst da nicht.
Warum mich das so ärgert ist die Tatsache, dass er scheinbar dabei ist. Er lässt sich als Dienstanwendung anlegen, quittiert aber seinen Dienst mit “Testzeitraum abgelaufen..”

image

 

Secure Store?

Der Secure Store (Single Sign On) hat sein Einsatzgebiet im Weiterreichen von Anmeldungen. So zum Beispiel, möchte man im SQL Server nicht jedem einzelnen Benutzer Logins verpassen, sondern ein Sammelkonto. Oder evtl. lässt sich technisch gar nicht der Zugriff per Windows Konto einrichten, sondern muss per SQL Authentifizierung geschehen. Typische Szenarien für den Secure Store. Ohne den SecureStore wird es schon schwieriger…

Nehmen wir mal den Fall an, wir möchten mittels Business Data Connectivity Service (BDC) auf SQL Tabellen zugreifen, dann verlangt der BDC entweder ein SecureStore Konto oder das Weiterreichen des aktuellen Windows Benutzers. Tja, Pech gehabt in der Foundation. Denn nur Fall 2 – das Weiterreichen des aktuellen Windows Konto -  funktioniert ohne Secure Store, aber auch nur, wenn man mit Kerberos Authentifizierung arbeitet. (Dahinter steckt das sogenannte double hop Problem).

image


Es gibt zwar Workarounds wie Reverttoself, so dass der Applicationpool Account auf den SQL Server zugreift, aber empfohlen ist die Maßnahme nicht.

http://blogs.msdn.com/b/bcs/archive/2010/03/12/authenticating-to-your-external-system.aspx

 

Sharepoint Foundation SecureStore


Egal was man versucht dran zu drehen. Es klappt nicht. Und wird nie klappen.. In zahlreichen Foren wurde das Problem besprochen. Lösungen für SPF 2013 gab's nie. Letztendlich wurde bekannt, dass der Secure Store nur in der Enterprise Version zu haben ist. Das gewünscht Update bzw Hotfix, das zumindest den scheinbar möglichen  SecureStore entfernt, gibt's bis dato noch nicht. (Jan 2014)

Was mich umso mehr ärgert, ist, dass bereits Sharepoint Foundation 2010 mit der gleichen Meldung aufwartete. Nur dort war  das Problem aber zu beheben.

 

Hier ein paar Quellen zum Thema:

http://ezybzy.info/node/309

https://social.technet.microsoft.com/Forums/office/en-US/707504d4-bd13-400a-8240-a35ce0258d79/the-trial-period-for-this-product-has-expired-or-secure-store-shared-service-is-not-supported-for?forum=sharepointadmin

 

Alternativen?

Für den SecureStore nicht wirklich! Vr allem was das Zusammenspiel mit Externen Inhaltstypen des BDC betrifft. Eine Datenquellenansicht zusammenzubauen ist im Sharepoint Designer 2013 gut zu bewerkstelligen. dazu in einem späteren Artikel.

Server 2012 R2: WDS macht Probleme beim Aufzeichnungsabbild

Wie mein Kollege Eik bereits vor geraumer Zeit festgestellt hat, gibt es ein Problem bei einer konkreten Konstellation in Bezug auf WDS:

In den Windows Bereitstellungsdiensten gibt es die Möglichkeit, ein “Aufzeichnungsabbild” aus einem regulären “Startabbild” zu erzeugen. So natürlich auch beim aktuellen Windows Server 2012 R2:

wds2

Häufig kommt es dann aber bei dieser Server-Version später beim Booten der aufzuzeichnenden Maschine zu einem Fehler:

wds1

Dieser Fehler tritt dann auf, wenn man:

  • auf einem Windows Server 2012 R2 (mit oder ohne Update1) im WDS ein Startabbild (Boot Image) auf Basis eines Windows Server 2012 R2 MIT Update1 oder Windows 8.1 MIT Update1 hinzufügt (dabei ist es dann später egal, auf welchem Startabbild das Aufzeichnungsabbild basiert)
  • auf einem Windows Server 2012 (“R1”) im WDS ein Startabbild auf Basis eines Windows Server 2012 R2 mit Update1 oder Windows 8.1 mit Update1 erzeugt

Der Fehler würde NICHT auftreten, wenn man vor dem Erzeugen des Aufzeichnungsabbildes noch nie ein Startabbild von Windows 8.1 Update1 oder Windows Server 2012 R2 Update1 importiert hatte.

Natürlich kann man den Fehler aber auch anderweitig umgehen bzw. beheben:

Dazu hinterlegt man zunächst das gewünschte Startabbild (dabei spielt es keine Rolle, ob bisher ein Update-1-Startabbild hinterlegt wurde oder nicht, das zu hinterlegende Abbild selbst darf auch von einer Update-1-Version stammen):

wds7

Danach erzeugt man aus diesem ein Aufzeichnungsabbild:

wds2

Dabei sollte man dass entstehende Abbild nicht direkt dem WDS Server hinzugefügt wird:

wds3 wds4

Anschließend muss das entstandene WIM-File (in meinem Beispiel “C:\aufz.wim”) mittels DISM gemountet werden:

wds5

Für das Mounten verwendet man einen Aufruf in dieser Form:

dism /Mount-Wim /WimFile:C:\aufz.wim /index:1 /MountDir:C:\mount

(Achtung: Keine Leerzeichen nach den Doppelpunkten!)

Im Anschluss kann die Datei direkt wieder “unmounted” werden (ohne dass sie dabei inhaltlich wirklich verändert wurde):

wds6

Hierzu wird folgender Aufruf verwendet:

dism /Unmount-Wim /MountDir:C:\mount /commit

Das nun neu erzeugte WIM-File kann jetzt als funktionsfähiges Aufzeichnunge-/Startabbild auf dem WDS-Server hinterlegt werden:

wds7

Nun kann eine (Test-)Maschine per PXE gebootet werden, es sollte nun, da es mehrere Startabbilder gibt, eine Auswahl möglich sein:

wds8

Wenn man das Aufzeichnungsabbild gewählt und die Maschine komplett gebootet hat sollte in etwa folgendes Menü zu sehen sein:

wds9

Nun kann die Festplatte der (Test-)Maschine aufgezeichnet werden. Wichtig ist dabei allerdings, dass dies nur funktioniert, wenn man das dort laufende Betriebssystem vorher mit sysprep vorbereitet hat.

Wie man mit dem WDS-Server den Alltag erleichtert und die Installation von Client- und Server-Betriebssystemen automatisieren kann erfahren Sie in unseren Kursen “Windows Server 2012 R2 Administration” und “Windows Server 2012 R2 Powerwoche”.

Visual Studio und Jasmine

Um ganz ehrlich zu sein, um TDD (Testdriven Development) habe ich bisher einen großen Bogen gemacht. Die theoretischen Grundlagen, ein zwei Beispiele und fertig. Der Aufwand ist definitiv höher und der erwartete Gewinn kaum erkennbar, da meine Software ohnehin nie Fehler hat.

Nun ist es aber so, dass JavaScript auf absehbare Zeit, die gesetzte Sprache ist. Anders als bei meinem geliebten VB.NET, bügelt kein Intellisense und Compiler meine Typos aus. JavaScript ist eben sehr dynamisch, auch in den Ergebnissen. Nach einem intensiven Coding Dojo, reifte in mir die Erkenntnis, das Tests ein adäquates Mittel sind, um in JavaScript Projekten reproduzierbare Ergebnisse zu erhalten.

Um nicht gänzlich die geliebte Heimaterde zu verlassen, habe ich mir in den Kopf gesetzt Node.js, npm und anderes Gedöns dabei links liegen zu lassen und ausschließlich Visual Studio zu verwenden.

In der Regel brauchen Units Tests ein Framework das hilft, die Tests zu schreiben und einen sogenannten Runner, der die Tests zu einem bestimmten Zeitpunkt ausführt. Für letzteres wird gerne Karama verwendet, dass auf Node aufsetzt. Für das Test Szenario wird häufig Jasmine genutzt.

Aufsetzen der Testumgebung

Im ersten Schritt wird Visual Studio 2013 um zwei Extensions erweitert, die beide Chutzpah genannt werden (idealer Name für Google suche). Das eine  ein Testrunner der das Context Menü von Visual Studio erweitert. Das zweite als Adapter für die Integration der Tests in den Visual Studio Unit Test Explorer.

https://visualstudiogallery.msdn.microsoft.com/71a4e9bd-f660-448f-bd92-f5a65d39b7f0

https://visualstudiogallery.msdn.microsoft.com/f8741f04-bae4-4900-81c7-7c9bfb9ed1fe

Dies muss nur einmalig installiert werden.

Im nächsten Schritt wird ein Web Projekt auf ASP.NET MVC Basis (Sprache C#) angelegt. Per Nuget Paket Manager wird das Paket JasmineTest in das Projekt eingefügt.

Jasmintest

Damit hat man ein fertiges Beispielprojekt und die passenden Tests dazu. Als Spielwiese vorerst ausreichend. Die JavaScript Logik liegt in den Beispiel Dateien Player und  Song. Die Tests in PlayerSpec und in der Helper Datei.

image

Ein Jasmine Test beginnt mit einem Beschreibungsblock (Describe). In den Zeilen 2-8 wird vorbereitender Code ausgeführt. Mit dem IT Kommando wird der Test eingeleitet und damit die eigentliche Logik ausgeführt. Expect beschreibt das erwartete Ergebnis.

   1:  describe("Player", function () {
   2:    var player;
   3:    var song;
   4:   
   5:    beforeEach(function() {
   6:      player = new Player();
   7:      song = new Song();
   8:    });
   9:   
  10:    it("should be able to play a Song", function() {
  11:      player.play(song);
  12:      expect(player.currentlyPlayingSong).toEqual(song);
  13:   
  14:      //demonstrates use of custom matcher
  15:      expect(player).toBePlaying(song);
  16:    });

 

Es gibt verschiedene Arten den Test auszuführen. Wenn man das Jasmine.js Framework direkt von Github lädt, befindet sich im Paket eine Datei SpecRunner.html. Die kann man im Browser aufrufen, ganz ohne Visual Studio oder Webserver. Im Nuget HTML Template wird diese Datei als Razor View ausgeführt, samt Controller. Also Server rendert Code. Eigentlich völlig unnötig, außer man möchte die Routing Engine von MVC unbedingt nutzen. Der JasmineController lädt den SpecRunner.cshtml.

   1:    public class JasmineController : Controller
   2:      {
   3:          public ViewResult Run()
   4:          {
   5:              return View("SpecRunner");
   6:          }
   7:          
   8:      }

Im Browser führt die URL /Jasmin/run folglich zum Test, der hier in fünf Stufen erfolgreich ist.

image

Eine weitere Möglichkeit die Tests laufen zu lassen findet sich im Kontext Menü des Projektes.

image

Die Ergebnisse lassen sich im Output Fenster von Visual Studio analysieren. Allerdings benötigt Chutzpah verweise auf die Code Dateien in der test Datei. Beim ersten Beispiel mit der HTML Datei im Browser waren das simple Script Referenzen. Im Falle von Chutzpah werden speziell formatierte Kommentare am Anfang eingefügt, die vom Testrunner geparst werden.

   1:  /// <reference path="C:\Users\user\Documents\visual 
studio 2013\Projects\WebApplication7Test\WebApplication7Test\
Scripts\jasmine-samples\player.js"
/>
   2:  /// <reference path="C:\Users\user\Documents\visual 
studio 2013\Projects\WebApplication7Test\WebApplication7Test\
Scripts\jasmine-samples\song.js"
/>
   3:  /// <reference path="C:\Users\user\Documents\visual 
studio 2013\Projects\WebApplication7Test\WebApplication7Test\
Scripts\jasmine-samples\spechelper.js"
/>

Weil die Test Runner Extension installiert ist, werden die Tests auch automatisch beim Build des JavaScript Projektes im Test Explorer durchgeführt.

image

Das ist für mich der eigentliche Ersatz für den Compiler.

Für einen ersten Versuch wurde die Logik des Players verändert und der Status isPlaying bei Play auf false gesetzt. Prompt schlagen zwei Tests fehl.

image

Als nächstes wird die Verwendung anhand eines Angular.JS Controllers demonstriert, da dies auch Bestandteil der Angular Schulung ist.

Windows 10 Preview Build 9926 in Deutsch - Cortana aktivieren

Wenn man sich die kürzlich erschienene Build 9926 der Windows 10 Preview heruntergeladen und “aus Versehen” oder vielleicht auch absichtlich auf Deutsch installiert hat, steht der persönliche Sprachassistent “Cortana” nicht zur Verfügung.

Ich möchte im Folgenden Erklären, was nötig ist, um Cortana doch nutzen zu können.

Zunächst muss über die Einstellung “Region und Sprache” (u.a. über das Startmenü zu erreichen, einfach danach suchen) die Region auf “Vereinigte Staaten” und die Sprache auf “English (United States)” gestellt werden:

cortana0

cortana1

Dabei muss zunächst die Sprache über “Sprache hinzufügen” hinzugefügt und dann über “Als primär festlegen” als Standardsprache definiert werden.

Das allein genügt aber noch nicht!

Als nächstes müssen die Sprachdateien heruntergeladen werden. Dazu öffnet man die “Optionen” der Sprache Englisch. Dort kann man dann das “Sprachpaket herunterladen”:

cortana2

Nachdem auch das erledigt ist, muss u.U. noch das “Input Personalization Dictionary” heruntergeladen werden. Wenn dieses Paket fehlt, bekommt man bei der Benutzung von Cortana den Fehler 0x80070102:

cortana2b

Das Dictionary wird als Windows Update angeboten und verteilt:

cortana3

Abschließend muss Cortana noch aktiviert bzw. zugelassen werden. Dazu klickt man am einfachsten in die weiße Suchbox unten links:

cortana5 

Nun sollte Cortana zur Verfügung stehen. Dies ist daran zu erkennen, dass in dem Suchfeld unten links ein Mikrofon zu sehen ist:

cortana4

Bei Bedarf kann man nun auch noch in den Cortana-Einstellungen aktivieren, dass sich Cortana alleine durch das Aussprechen von “Hey Cortana” aktiviert und auf Spracheingaben reagiert. Dazu müssen die Cortana-Einstellungen in der oberen linken Ecke des aktivierten Suchfeldes verwendet werden:

cortana6    cortana7

Der Download der aktuellen Preview kann über diesen Link erfolgen: http://windows.microsoft.com/de-de/windows/preview-iso

HTML5 Hash Bang

Was ist Hash und macht Bang? Zwei Zeichen aus dem ASCII Alphabet - das # und der !. In Kombination werden Sie als Hashbang bezeichnet und werden zur Client Seitigen Steuerung von Web Anwendungen verwendet.

Das Problem von Hashbangs beginnt bereits mit dem #. Im Grunde genommen versteckt die Technik die eigentlichen Seiteninhalte. Die Angaben nach dem Hash  werden vom Browser nicht mehr an den Server übergeben. Der Teil nach dem Hash wird als Fragment Identifier bezeichnet und ist genau genommen nicht Bestandteil der URL.
Speziell in Single Pages Applications wird ein Routing Konzept benötigt, das es am Client erlaubt die Url auszuwerten. Facebook und auch Twitter haben davon, in der Vergangenheit, ausgiebig gebrauch gemacht.

Mit der Url https://twitter.com/#!/ppedv wird stand heute allerdings auf die Adresse https://twitter.com/ppedv umgeleitet.

Wie das Fiddlertool zeigt, wird im Initialen Request der Hash nicht an den Server übermittelt. Erst mit einem weiteren Request initiiert durch JavaScript aus dem ersten Request, wird die eigentliche URL geladen.

image

Twitter scheint den SPA Ansatz damit nur kurz zu nutzen um den Hashbank auszulesen und wechselt dann auf Server generierten HTML Code. Die Daten stecken also nicht in JSON sondern ganz klassisch im HTML Code.

Mit HTML5 wird von diesem Missbrauch des Anchor Tags nun obsolet. Es existiert der sogenannte PushState (aus der Session History Api). Dieser wird von Frameworks wie Angular.js auch verwendet um Client seitiges URL Routing zu nutzen. Man muss es aktuell bei Angular i JavaScript Code auch aktivieren. Damit lässt sich die Url in der Browser Leiste beliebig schreiben und lesen.

Verwandtschaftssuche – Funktionen zur statistisch semantische Suche

Im vorhergehenden Artikel Statistisch semantische Suche haben wir das notwendige Werkzeug für den SQL Server eingebunden: Die Semantik Datenbank und den Microsoft Office Paketfilter.

imageimage

Nun soll die Semantik auch mal für uns tun. Mit Hilfe 3er Funktionen können wir einiges herausfinden:

Funktion 1: SEMANTICKEYPHRASETABLE

SEMANTICKEYPHRASETABLE hilft uns dabei die Schlüsselwörter aus Dokumenten herauszufinden.

Der Funktionsrumpf sieht dabei so aus:

SEMANTICKEYPHRASETABLE ( table, { column | (column_list) | * } [ , source_key ] ) --So zum Beispiel DECLARE @DocID hierarchyid SELECT @DocID = path_locator from Akten where name = 'Workflow.docx'; SELECT SEMANTIKTAB.keyphrase, SEMANTIKTAB.score from SEMANTICKEYPHRASETABLE ( Akten, file_stream, @DocID ) AS SEMANTIKTAB ORDER BY SEMANTIKTAB.score DESC;

Und hier mein Ergebnis dazu:

imageimage

So finden wir schon mal raus, welche Schlüsselwörter ein Dokument enthält und in welcher Gewichtung. So könne wir schon mal rausfinden welche Dokumente ähnlich sind.

Funktion 2: SEMANTICSIMILARITYTABLE

Die Funktion gibt als Ergebnis die Dokumente zurück, die aufgrund der Semantik dem angegeben ähneln, sprich sich in den Schlüsselwörtern inkl Gewichtung ähnlich sind.

SEMANTICSIMILARITYTABLE ( table, { column | (column_list) | * }, source_key ) --Zunächst suchen wir uns die Idee des Dokuments raus.. DECLARE @DocID hierarchyid SELECT @DocID = path_locator from Akten where name = 'Workflow.docx'; SELECT mft.name, sst.score FROM SEMANTICSIMILARITYTABLE ( Akten, file_stream, @DocID ) AS sst INNER JOIN Akten mft ON path_locator = matched_document_key ORDER BY score DESC


Und so sieht mein Ergebnis hier aus..

image

Je höher der Score, umso ähnlicher das Dokument.

Ach ja.. Wenn zwei oder mehr Dokumente den gleichen Score aufweisen, kann man davon ausgehen, dass es sich um Kopien handelt Zwinkerndes Smiley

Funktion 3: SEMANTICSIMILARITYDETAILSTABLE

Warum ist dieses Dokument eigtl ähnlich mit einem anderen. Die Funktion SEMANTICSIMILARITYDETAILSTABLE schlüsselt uns das etwas genauer aus:

SEMANTICSIMILARITYDETAILSTABLE ( table, source_column, source_key, matched_column, matched_key ) DECLARE @DocID hierarchyid DECLARE @DocIDVergleich hierarchyid SELECT @DocID = path_locator from Akten where name = 'Workflow.docx'; SELECT @DocIDVergleich = path_locator FROM Akten WHERE name = 'Security.docx'; SELECT TOP(5) TAB.keyphrase, TAB.score FROM SEMANTICSIMILARITYDETAILSTABLE ( Akten, file_stream, @DocID, file_stream, @DocIDVergleich ) AS TAB ORDER BY TAB.score DESC;

 

image

Voila.. und das ist unser Ergebnis. vermutlich hatte alles was mit Sharepoint zu tun Zwinkerndes Smiley

Die Semantik belastet natürlich unseren Volltext ein Stück mehr, aber die Möglichkeiten, die sich daraus ergeben sind unerschöpfllich, vor allem, wenn man bendekt wie extrem schnel ldie Volltextindizierung geworden ist.

G Serie jetzt auch in der Region Us East 2 verfügbar

Nach der Region US West sind die neuen virtuellen Maschinen der G-Serie nun auch im Rechenzentrum US-Ost öffentlich verfügbar. Sie bieten mehr Speicher und mehr SSD-Speicherplatten als die bisher verfügbaren Azure virtuellen Maschinen. Außerdem sind Sie mit dem neuen Intel Xeon Processor E3 bestückt. Die G-Serie ist in fünf unterschiedlichen Instanzen G1-G5 verfügbar beginnend bei 2 Kernen 28 GB RAM und 412 GB SSD bis hin zur stärksten Maschine mit 32 Kernen, 448 GB RAM und 6.596 GB SSD-Platte. Die Preise hierzu finden Sie unter http://azure.microsoft.com/en-us/pricing/details/virtual-machines/.

Passend dazu bietet die ppedv Kurse zum Entwickeln von Azurelösungen an. Mehr Infos finden Sie unter http://www.ppedv.de/schulung/kurse/Azure-CloudAnwendungenentwickeln.aspx.

Statistisch semantische Suche

Ja richtig gehört: Statistisch semantische Suche. Ein schönes Wort. In Wikipedia liest man dazu “.. Bedeutung sprachlicher Zeichen..”  Und das triffts auch schon fast. Die statistisch semantische Suche extrahiert relevante Phrasen per Volltextsuche aus Spalten oder Filetables und gewichtet diese.

imageimage

Sehen wir uns mal gewichtete Phrasen eines Dokuments an.

Man ganz gut erkennen, dass hier in einem Dokument folgende Begriffe gefunden wurden und je nach Score der eine wohl wichtiger (häufiger) zu sein scheint, als ein anderer. In diesem Beispiel geht es also wohl um Workflows, Stichwörter und Sharepoint.

Tatsächlich muss der Begriff nicht als einzelnes Wort vorkommen, sondern durchaus in Kombinationen. In diesen Text geht es beispielsweise auch um Unternehmensstichwörter.

Aber wie kommt die statistisch semantische Suche in den SQL Server?

Dazu brauchts ein ordentliches Rezept mit folgenden Zutaten: Eine Semantikdatenbank, evtl. das Microsoft Office Filter Paket, die Volltextsuche, ein wenig TSQL und einen Neustart der Volltextsuche.

Punkt 1: Semantikdatenbank einbinden

Auf der DVD des SQL Servers findet sich im Verzeichnis \1031_DEU_LP\x64\Setup die Installationsdatei SemanticLanguageDatabase.msi für die Datenbank. Das Setup entpackt lediglich die Datenbank in ein Verzeichnis. Um die Semantikdatenbank in die SQL Serverinstanz einzubinden, muss die Datenbank noch angefügt werden. Entweder per GUI im SSMS oder per Script. Anschließend die Datenbank für die semantische Suche registrieren.

Punkt 2: Office Filter Paket einbinden

Da SQL Server keine aktuellen Office Versionen out-of-the-box supportet,  kann man das schnell ändern indem man sich das Office Filter Paket 2010 downloaded: http://www.microsoft.com/de-de/download/details.aspx?id=17062. Nach der Installation muss das Filterpaket noch der Volltextsuche bekannt gemacht werden

--SemantikDb DB extrahieren (\1031_DEU_LP\x64\Setup) --und attachen.....msi-File CREATE DATABASE semanticsdb ON (FILENAME = 'C:\Microsoft Semantic Language Database\semanticsdb.mdf') FOR ATTACH -- und registrieren EXEC sp_fulltext_semantic_register_language_statistics_db @dbname = N'semanticsdb'; --Welche Sprachen werden unterstützt select * from sys.fulltext_semantic_languages --Filterpackage installiert?? Exsitiert für Office 2007 und Office 2010 --Aktivieren der iFilter für Volltextsuche Sp_fulltext_service 'Load_os_resources', 1 --Anzeige der indizierbaren Dokumente select * from sys.fulltext_document_types

 

Nun Steht die Volltextsuche inkl semantischer Suche voll zur Verfügung. 

image

In den Volltexteigenschaften der Tabelle nur noch Häkchen setzten und den richtigen Typ wählen.

File_type für den Inhalt der Dokumente. In diesem Screenshot handelt es sich um eine Filetable.

 

image

SASS Mixins für CSS3 Media Queries

Im heutigen WebDesign Zeitalter ist es so gut wie unvorstellbar geworden ohne CSS PreCompiler oder gar CSS3 zu leben. CSS3 bietet einen enormen Funktions als auch Design Umfang wie z. B. Animationen, Transitions (übergangs Animationen), 3D Darstellun uvvvvm. Die CSS PreCompiler hingegen erweitern nicht die Möglichkeiten von CSS oder fügen gar neue Design möglichkeiten hinzu, sondern sie erweitern die CSS-Syntax. Dies ermöglicht uns nun mit Variablen, Funktionen, Ableitungen und derartigen Möglichkeiten unsere geschriebenen CSS Regeln oder Files wieder zu verwenden um uns somit unzählige graue Haare zu ersparen. Zu alle dem kommt noch die SmartPhone Ära hinzu (AlwaysOn), diese verlangt von uns WebEntwicklern –/ Designern die Layouts welche wir erstellen nun auch noch Responsive (empfänglich für diverse Browserauflösungen) zu erstellen.

Zu diesem Thema habe ich mir ein wenig Gedanken gemacht und das kam dabei heraus:

Die Mixins

   1: @mixin xs-media ($target: all){
   2:   @media #{$target} and (max-width: 360px) {
   3:     @content;
   4:   }
   5: }
   6:  
   7: @mixin sm-media ($target: all){
   8:   @media #{$target} and (min-width: 361px) and (max-width: 767px) {
   9:     @content;
  10:   }
  11: }
  12:  
  13: @mixin md-media ($target: all){
  14:   @media #{$target} and (min-width: 768px) and (max-width: 991px) {
  15:     @content;
  16:   }
  17: }
  18:  
  19: @mixin lg-media ($target: all){
  20:   @media #{$target} and (min-width: 992px) and (max-width: 1199px) {
  21:     @content;
  22:   }
  23: }
  24:  
  25: @mixin xlg-media($target: all) {
  26:   @media #{$target} and (min-width: 1200px) {
  27:     @content;
  28:   }
  29: }

Diese Mixins sind weder großartig komplex, noch schwer nach zu vollziehen…. sie sind einfach nur NÜTZLICH. Ähnlich wie CodeSnipptes in VisualStudio. Diese 5 @Media Mixins erleichtern den Umgang mit MediaQueries für Responsive Layouts. Das erste Mixin (max-width; 360px) {} wird man jedoch nicht all zu häufig verwenden müssen, da es strengstens empfohlen ist diese sog. Responsive Layouts mit der ‘Mobile First’ Variante zu erstellen. D. h. man fängt mit dem Design für kleinere Geräte an und skalliert dann nach oben. Dies hat wieder mehrere Vorteile:

1. Man fokusiert sich auf das wichtigste, den CONTENT! Da man nicht viel Platz für sonstigen Schnick-Schnack hat.

2. Es ist ohne probleme möglich nach oben hin weiter bzw. bis zur unendlichkeit zu skalieren. Stichwort SmartTV’s mit einer 4K Auflösung z. B. Wobei solche Auflösungen z. Z. noch von den wenigsten unterstützt bzw. angepasst werden.

Anwendung

Wie man nun diese oben gezeigten SASS-Mixins verwendet sieht folgendermaßen aus:

   1: div {
   2:   /*Diese attribute treffen auf xs-screens zu*/
   3:   .
   4:   .
   5:   .
   6:   
   7:   @include sm-screen {...};
   8:   
   9:   @include md-screen {...};
  10:  
  11:   @include lg-screen {...};
  12:  
  13:   @include xlg-screen {...};
  14: }

Ich hoffe diese kleinen Helferlein werden euch bei der Erstellung von vielen Responsive Websites helfen und Spaß machen Smiley

Unter http://codepen.io/MT-WebDev/pen/XJgjqN gibt es noch ein Beispiel wie das ganze dann in der Realität aussehen könnte.

Falls nun euer/dein Interesse geweckt ist, schau doch mal auf http://ppedv.de/web vorbei. Dort lösst sich bestimmt der richtige Kurs finden!

Ansichten in SharePoint

Eine Ansicht bietet die Möglichkeit, Elemente einer Bibliothek oder Liste zu Filter, Sortieren oder in irgendeiner anderen Art und Weise zu bearbeiten. Im Grunde alle Arten die “Sicht” auf Daten unseren Bedürfnissen anzupassen.

Dabei stehen uns grundlegend ein paar Formate zur Verfügung:

Die Standardansicht

In 95% aller Fälle benutzt, bietet sie die gängigsten Optionen zum Betrachten von Bibliotheken und Listen. Bei dieser Ansicht werden die einzelnen Elemente untereinander angezeigt.

Eine Standardansicht

 

Die Standardansicht mit erweiterten Ereignisserien

Besonders zu empfehlen, wenn man sich jede Instanz einer Ereignisserie anzeigen lassen möchte.

Standardansicht mit Terminserie

 

Kalenderansicht

Mit dieser Ansicht lassen sich Daten aus Listen bzw. Einträgen chronologisch darstellen oder Datumsangaben visuell darstellen. Gerade für den Einsatz in Projektumgebungen oft verwendet, um einen Überblick über vergangene und kommende Ereignisse zu erhalten.

 Eine Kalenderansicht

 

Datenblatt

Diese Ansicht ist ähnlich einer EXCEL-Tabelle und auch vergleichbar mit der quick-edit Ansicht. Dadurch lassen sich viele Datensätze komfortabel bearbeiten.

Eine Datenblattansicht

 

Gantt

Benannt nach Henry L. Gantt lassen sich mit dieser Ansicht Daten mithilfe von Balken so darstellen, dass eine Nachverfolgung des Verlaufes möglich ist. Diese Ansicht findet vor allem Verwendung in der Projektarbeit, um frühzeitig Probleme zu erkennen, wie zum Beispiel sich überlappende Aufgaben, welche aber einer Person zugeordnet sind.

Eine Gantt-Ansicht

Training, Schulung, Sharepoint

Month List