SPC12: Tag 2

Die erste Session "Hybrid Overview: Connecting SharePoint 2013 On-premises to SharePoint Online in Office365" an diesem Tag war leider schon voll als ich ankam. Da gibt es hier schon Räume Hallen, aber die Session war leider falsch geplant. Was an diesem Tag auch nicht ging: Wifi.

Einige der Sessions an diesem Tag waren allerdings wirklich gut. Insbesondere die Session von Scot Hillier über Javascript Best-Practices. Es wurde hier bereits klar was sich durch die gesamte Konferenz zog:

Javascript ist DAS Ding. Jeder "SharePoint Entwickler/Consultant" sollte sich spätestens jetzt mit JavaScript, jQuery, Knockout.js und ähnlichen Frameworks auseinander setzen.

Für SharePoint-Hosted-Apps ist das z.B. die einzige Möglichkeit der App Entwicklung, da dass Ziel ist, keinerlei Code mehr auf den SharePoint Servern auszuführen. An der Stelle wird die Microsoft Strategie sichtbar.. möglichst wenig Anpassungen der SharePoint Installation um so die Cloud attraktiv zu machen und den späteren Umstieg zu erleichtern.

Ich habe außerdem einen Einblick in das Thema Search Driven Apps bekommen. Endlich muss man dazu nicht mehr XSL(T)WP_000272, sondern (wie sollte es anders sein) HTML5/JavaScript nutzen. Dazu passend hier das Kennzeichen unseres Mietwagens nach der Konferenz. Zum Abschluss des Tages vor dem Bon Jovi Konzert dann noch in einer Session erlebt wie man SharePoint in Azure VMs hosted. Insgesamt sehe ich persönlich das aber nicht wirklich als Alternative. Office365 dürfte preislich attraktiver sein und mit On-Prem bin ich flexibler und die Liste der Dinge die man bedenken muss sind ebenfalls geringer (Stichwort User Profiles / Authentication). Einzig für Desaster Recovery ist es natürlich sinnvoll, eine Farm im Cold-Standby (ggf. noch in einem anderen Land) zu haben. Die Kosten sind vernachlässigbar so lange die Farm nicht in Betrieb ist und dank Powershell ist so eine DR Farm dann in kürzester Zeit wieder online.

Bon Jovi war dann erwartungsgemäß GROß mit langen Schlangen am Eingang. WP_000270Der komplette Mandalay Bay Beach war dafür für die Teilnehmer (und die wahrscheinlich nochmal so vielen Service Kräfte) geblockt. Es gab jede Menge zu essen und natürlich zu trinken und es war insgesamt sehr gut, auch wenn um Punkt 10 der Strand geräumt wurde und wir an anderer Stelle weiter feiern mussten…

SPC12: Download all sessions

WorksOnMyMachineI've just put together a little console app to crawl the myspc site and download all mp4 and pptx files from all sessions.

Note: It is not production code, it has not a real error handling and it does not handle authentication as you would do in real world apps ;-)

To use it, download it here and start it as follows in a folder where you want the files to be:

myspcdownload.exe "value_of_your_.ASPXAUTH_cookie_after_you_authenticated_with_a_real_browser" "value_of_your_WT_FPC_cookie"

Update: The second cookie seems not be relevant, so enter "x" for the second value.
You can get the cookie values by using e.g. IE –> F12 –> Cache –> View cookie information

If you want to make it more cool, you can also download the source here.

SPC12: Tag 1

Heute morgen ging es ab 7:30(!) mit dem Frühstück in einer Halle los, in der sonst wahrscheinlich Flugzeuge oder Raketen gebaut werden.

CIMG0079

CIMG0091

 

 

 

 

 

CIMG0088

CIMG0086

 

 

 

 

 

Dann anschließend in einer ähnlich großen Halle gab es die Keynote mit u.a. Jared Spataro, Jeff Teper und Scott Guthrie. Neben den bereits bekannten Dingen wurden auch die Windows 8 Apps für SharePoint und Yammer gezeigt. Insgesamt ist die Yammer Integration aber noch nicht wirklich eine Integration. Man springt klar von einer Anwendung zur nächsten, was das ganze in meinen Augen ziemlich User-Unfreundlich macht. Was aber klar wird: Microsoft setzt ganz extrem auf die Cloud. Dazu wurde z.b. gesagt, dass sie sich von dem 3-Jahres Releasezyklus verabschieden und in Office365 alle 90 Tage Updates einspielen.

Anschließend war ich dann in der Session "What's new for Developers in Office 2013 and SharePoint 2013". Dort gab es leider nicht viel Neues, sondern nur noch mal einen Überblick über die Möglichkeiten der Apps, die dann in Office, SharePoint und Outlook laufen.

Nach dem Mittag ging es weiter mit "What's new in Search for SharePoint 2013". Sehr interessant und insgesamt super mächtig was die Suche nun für Möglichkeiten bietet. Sei es beim Ranking, bei der Präsentation oder den Query Rules. Vor allem wichtig: Um die Suchergebnis-Seite und das Hover-Panel zu bearbeiten ist kein XSLT mehr notwendig sonder nur noch HTML/Javascript.

Danach war ich noch bei der Session "Building end-to-end apps for SharePoint with Windows Azure and Windows 8". Dort wurde eine Lösung gezeigt die fast alle neuen Technologien vereint und von Public Sites bis Windows 8 Toast/Tile Notifications alles hatte. Sehr cool. Allerdings fehlte leider die Zeit wirklich in alle Details zu schauen.

CIMG0099Heute abend dann noch bei der ClubSPC Party gewesen. Und Mr. Gangnam Style persönlich war da (oder zumindest einer der genauso aussah ;-)

Und zum Schluß noch ein Lacher: Woran merkt man, dass man auf einer SharePoint- (oder Allgemein einer IT-) Konferenz ist? An diesen Schildern.

SPC12: Beta Exam 71-331 erledigt

Wie bereits angekündigt hatte ich mich vorab ja für die Beta Prüfung 71-331 (wird später 70-331 heißen) angemeldet. Heute war nun die Prüfung. Es lief alles ganz entspannt und professionell. Da es eine Beta Prüfung war, wird das Ergebnis aber rund 8 Wochen auf sich warten lassen. Ich mache mir allerdings auch nicht allzu viel Hoffnung, da in den Case Studies doch sehr spezielle Fragen vor allem zum Thema Hybrid Lösungen (On-Prem/Office365) mit ADFS, etc. vor kamen.

SPC12: Registrierung

Da heute die Registrierung schon geöffnet hatte, bin ich doch gleich mal vorbei gegangen.WP_000260

Links: Die noch ziemlich leere Registrierung mit viel Platz für die erwarteten 10.000 Leute.

WP_000261

 

 

 

 

 

Wie man hier sieht, ist auch noch nicht alles fertig.

Und hier noch ein Eindruck über das ganze Papier was in dem Konferenz Rucksack zu finden war. Und gefühlt kann man an jedem der 200 Ausstellungsstände ein Surface gewinnen. Ich habe also Hoffnung.CIMG0074

SPC12: Angekommen

Heute Abend (Ortszeit) in Vegas angekommen. Jetzt erstmal schlafen. Hier noch ein Bild aus dem 19. Stock meines Hotelzimmers.
CIMG0058

SPC12: Auf nach Vegas!

Heute ist es soweit. Um 9 geht der Flieger. Zuerst nach New York und von da aus weiter nach Las Vegas zur SharePoint Conference.

Der Samstag ist dann zum entspannen vom Jetlag. Sonntag geht's direkt los. Mittags mit dem Beta Exam "Core Solutions of Microsoft SharePoint Server 2013" welches dort kostenfrei angeboten wird, aber dafür auch rund 4 Stunden dauern wird. Abends dann die "Welcome Reception", also zuerst die Registrierung und dann schon mal schauen was es in der Ausstellungshalle für Goodies gibt.

Bilder der Konferenz (und von den Partys) gibt's dann fortlaufend in diesem Album: http://sdrv.ms/WyXLou

Mehr von mir dann weiterhin hier an dieser Stelle.

Show thumbnail image of JPGs within SharePoint search results

In SharePoint 2010 it is really easy to enable the search center to include a thumbnail of JPG images. The required XSLT is already there and you only have to add the file type "jpg" within the search administration (and a full crawl of course):

 

 

 

 

 

However, it works for images within a picture library only. To enable it also for JPGs in "normal" document libraries (e.g. "PublishingImages" which is is, other than the name would indicate, not a picture library), go to your search center results.aspx, edit the page and then edit the "search core result" web part. Make sure you uncheck "Use Location Visualization" (obviously, isn't it? ;-).

Now click "XSL Editor..." and copy/paste that XSLT to modify it within your favorite editor. Look for <xsl:template match="Result">.

There you can see at the first "xsl:when" that it tests on contentclass "STS_ListItem_PictureLibrary". I've just copied the entire "xsl:when" block and modify it.

The first modification is to test if the result is a jpg. Sadly enough there is no "indexOf" in XSLT, so this one is a little bit dirty:

<xsl:when test="contains(url, '.jpg') and not(contains(url, '.jpg.'))">

The second change is where the thumbnail will be shown. I don't want to load the full big JPG so I decided to go with the really nice built-in feature of SharePoint to get a thumbnail of any image just by modifying the URL.

To get a thumbnail from a JPG stored in any SharePoint library just add "/_t/" between the library and the filename and replace the filename extension with "_jpg.jpg":

http://sp2010/DocLib/_t/Test_jpg.jpg

 

So here is the interesting part before the modification:

<div class="srch-picture2">
    <img class="srch-picture" src="{picturethumbnailurl}" alt="" />
</div>


And after the modification:

<div class="srch-picture2">
    <img class="srch-picture" alt="">
        <xsl:attribute name="src">
            <xsl:value-of select="concat(substring-before(url,title),'_t/',
translate(title,'.jpg','_jpg'),'.jpg')"
/> </xsl:attribute> </img> </div>


At the end your XSL should contain the new "xsl:when" between the existing one and the "xsl:otherwise":

 

 

 

 

 

After saving this and the entire page, you should get a nice looking result:

Search Host Controller Service in "Starting" state

On my SharePoint 2013 developer machine I had an issue with the Search Service.

On the "Services on Server" page, the "Search Host Controller Service" showed the status "Starting". After some googling on Bing, I found a post on the Microsoft Forum. Thanks to "SPJeff" here is the solution:

Copy the following script to a new .ps1 file and execute it within the SharePoint PowerShell console (run as (Farm-) Administrator):

$acl = Get-Acl HKLM:\System\CurrentControlSet\Control\ComputerName
$person = [System.Security.Principal.NTAccount]"Users"
$access = [System.Security.AccessControl.RegistryRights]::FullControl
$inheritance = [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagation = [System.Security.AccessControl.PropagationFlags]::None
$type = [System.Security.AccessControl.AccessControlType]::Allow
$rule = New-Object System.Security.AccessControl.RegistryAccessRule($person, $access, $inheritance, $propagation, $type)
$acl.AddAccessRule($rule)
Set-Acl HKLM:\System\CurrentControlSet\Control\ComputerName $acl

$sh = Get-SPServiceInstance | ? {$_.TypeName -eq "Search Host Controller Service"}
$sh.Unprovision()
$sh.Provision($true)

After a reboot everything is now working as expected:

image