<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Architecture on Janik von Rotz</title>
    <link>https://janikvonrotz.ch/tags/architecture/</link>
    <description>Recent content in Architecture on Janik von Rotz</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 07 Jun 2016 07:54:38 +0000</lastBuildDate>
    <atom:link href="https://janikvonrotz.ch/tags/architecture/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Unicorns of Berlin</title>
      <link>https://janikvonrotz.ch/2016/06/07/unicorns-of-berlin/</link>
      <pubDate>Tue, 07 Jun 2016 07:54:38 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2016/06/07/unicorns-of-berlin/</guid>
      <description>&lt;p&gt;Unicorns are unique and might not exist. This is a collection of unique pictures of Berlin. I took them since staying there for 3 months. Berlin is quite a special place and will probably attract me a few more times.&lt;/p&gt;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/fleemarket-1024x769.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;Fleemarkets everywhere! Shiny stuff, weird stuff, nice stuff, horrible stuff, obscure stuff, wtf is this for kind of stuff. Fleemarkets are perfect for curious people.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/spring-1024x769.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;Spring in Berlin sure is beautiful. The weather gets nicer, the people get nicer and city gets nicer. After a harsh neverending winter spring in Berlin is an amazing cure.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/crowd-1024x769.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;This picture was taken  in Mauerpark. On sunny sunday it seems all people of Berlin end up there. There&amp;#39;s a huge fleemarket, music, karaoke, shows and a lot more. So the perfect way to spend a lazy sunday.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/living-1024x768.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;Living in Berlin is quite different compared living in other big cities. You can always escape the busy traffic and enjoy a nice day in a park.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/tolerance-1024x768.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;Berlin is known for it&amp;#39;s tolerance to minorities, refugees and everybody. This picture was taken on chemtrail demo. There were no aggressions only resprect for each others opinion.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/architecture-2-1024x683.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;Most of the historic were bombed in world war 2. Whenever you&amp;#39;ll see some fine architecture in Berlin you have to appreciate it.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/homeless-1024x683.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;There are many ways of begging. This is one. I always try to figure out how integrate these people into society. But it&amp;#39;s a difficult and complex issue.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/father-and-girl-1024x769.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;He told her about ducks.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/winter-1024x769.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;Seeds cover the ground like thick snow in winter.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/survival-of-the-fittest-1024x769.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;This tree decided to grow on a roof.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/architecture-1024x769.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;The Bundestag dome.  Should be on the list of every Berlin visitor.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/graffiti-1024x769.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;A beautiful picture surrounded by burned wood. How long will it last? What&amp;#39;s the painters intention, when sooner or later his art is destroyed? Graffiti never lasts long and that&amp;#39;s what it makes special to me.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2016/06/abandoned-1024x769.jpg&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;h4&gt;The rails of a rollercoaster. Part of the abandoned Spree entertainment park. Around next year the whole place will be rebuilt, so make sure to visit before.&lt;/h4&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;</description>
    </item>
    <item>
      <title>Meteor and Mantra - Routing redirect</title>
      <link>https://janikvonrotz.ch/2016/05/26/meteor-and-mantra-routing-redirect/</link>
      <pubDate>Thu, 26 May 2016 10:03:22 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2016/05/26/meteor-and-mantra-routing-redirect/</guid>
      <description>&lt;p&gt;Recently I started using &lt;a href=&#34;&#34;&gt;Mantra&lt;/a&gt; to develop my Meteor apps. As with any other framework You&amp;rsquo;ll find a lot of answers to common questions in a related forum or any other resource. However I couldn&amp;rsquo;t get a good answer on how to implement routing logic properly. The Mantra specs also don&amp;rsquo;t tell much about how to approach it. So here&amp;rsquo;s my solution.&lt;/p&gt;&#xA;&lt;p&gt;First I want to tell you about a little drawback, which is essential to understand the whole issue with routing in Mantra. The Flowrouter redirect statement can only work in the &lt;code&gt;componentDidMount&lt;/code&gt; directive of an React component.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;componentDidMount&lt;/span&gt;(){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;FlowRouter&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;go&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/login&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As I don&amp;rsquo;t want load a component and then doing a redirect I had to make the redirect on a higher level of the Mantra architecture.&lt;/p&gt;&#xA;&lt;p&gt;So where else could it be than in the route file?&#xA;To give you a better understanding I&amp;rsquo;ll use the post module which is part of a blogging app.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;client/modules/post/routes.jsx&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;FlowRouter&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;route&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/posts&amp;#39;&lt;/span&gt;, {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;post.list&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;triggersEnter&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;context&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;actions&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;posts&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;access_route&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;post.list&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;action&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;mount&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;AppLayout&lt;/span&gt;, {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;content&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; () =&amp;gt; (&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;MainPage&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&amp;gt;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      });&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can see I&amp;rsquo;ll use a trigger action, despite the Mantra specs tell me not do so. For now it&amp;rsquo;s the only practical approach.&lt;/p&gt;&#xA;&lt;p&gt;Import the action in the route and call the &lt;code&gt;access_route&lt;/code&gt; function.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;client/modules/post/actions/posts.js&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; {&lt;span style=&#34;color:#a6e22e&#34;&gt;cannot_access&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect_login&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect_verify&lt;/span&gt;} &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/lib/access_control&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;access_route&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;routename&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;redirect_login&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;routename&lt;/span&gt;)){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/login&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;redirect_verify&lt;/span&gt;()){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/email-verification&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;cannot_access&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;routename&lt;/span&gt;)){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is done for every module. Then you get a custom routing logic for every module while still using the same function to verify f.g. a user can access a specific route.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;/lib/access_control.js&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// client side&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect_login&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;routename&lt;/span&gt;){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;roles&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;findWhere&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;settings&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;routes&lt;/span&gt;, {&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;routename&lt;/span&gt;}).&lt;span style=&#34;color:#a6e22e&#34;&gt;roles&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;contains&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;roles&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Public&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;userId&lt;/span&gt;()){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;redirect login&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// client side&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;redirect_verify&lt;/span&gt;(){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;userId&lt;/span&gt;() &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;user&lt;/span&gt;().&lt;span style=&#34;color:#a6e22e&#34;&gt;emails&lt;/span&gt;[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;].&lt;span style=&#34;color:#a6e22e&#34;&gt;verified&lt;/span&gt;){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;redirect verify&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// client side&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;cannot_access&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;routename&lt;/span&gt;){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;roles&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;findWhere&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;settings&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;routes&lt;/span&gt;, {&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;routename&lt;/span&gt;}).&lt;span style=&#34;color:#a6e22e&#34;&gt;roles&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;contains&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;roles&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Public&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Roles&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;userIsInRole&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;Meteor&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;user&lt;/span&gt;(), &lt;span style=&#34;color:#a6e22e&#34;&gt;roles&lt;/span&gt;)){&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;allow route &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;routename&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;deny route &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;routename&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here I&amp;rsquo;ll bundle everything that is related in someway with permissions and access rights. The functions in this library are either used by the client or the server.  I will use alanning roles to check role membership later on.&lt;/p&gt;&#xA;&lt;p&gt;When assigning and checking for permissions with user, groups and rules I always use this schema:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Object &amp;lt;-&amp;gt; Access Group &amp;lt;-&amp;gt; Role &amp;lt;-&amp;gt; User&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;This schema is not a new invention, it&amp;rsquo;s a copy of Microsoft&amp;rsquo;s AGDLP idea.&lt;/p&gt;&#xA;&lt;p&gt;Finally update the settings.json with access rules. Make sure to add it to the public part, otherwise the client can&amp;rsquo;t load the settings.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;settings.json&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;...&#xA;&#xA;{&#xA;  &amp;#34;name&amp;#34;: &amp;#34;post.list&amp;#34;,&#xA;  &amp;#34;roles&amp;#34;: [&#xA;     &amp;#34;Admin&amp;#34;,&#xA;     &amp;#34;Author&amp;#34;,&#xA;     &amp;#34;Manager&amp;#34;&#xA;  ]&#xA;},&#xA;&#xA;...&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Yay! you did it. So do you like my idea? Would like to hear from you in the comment section.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install SharePoint 2013 Three-tier Farm - Designing the Logical Architecture</title>
      <link>https://janikvonrotz.ch/2014/01/27/install-sharepoint-2013-three-tier-farm-designing-the-logical-architecture/</link>
      <pubDate>Mon, 27 Jan 2014 09:10:29 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2014/01/27/install-sharepoint-2013-three-tier-farm-designing-the-logical-architecture/</guid>
      <description>&lt;p&gt;&lt;em&gt;This post of is part of my &lt;a href=&#34;https://janikvonrotz.ch/projects/install-sharepoint-2013-three-tier-farm/&#34;&gt;Install SharePoint 2013 Three-tier Farm&lt;/a&gt; project.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I assume that the reader of this tutorial has already defined the business requirements for this SharePoint installation.&lt;/p&gt;&#xA;&lt;p&gt;The physical architecture depends on the requirements of the logical design. That&amp;rsquo;s why you have to define you logical architecture first.&lt;/p&gt;&#xA;&lt;p&gt;The logical architectures unites the business requirements and the possibilities of SharePoint to set up multiple site collections with different urls, templates and databases.&lt;/p&gt;&#xA;&lt;p&gt;The easiest way to write down these resources is a table or a note like this:&lt;/p&gt;&#xA;&lt;p&gt;&lt;!-- raw HTML omitted --&gt;Intranet&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;&#xA;&lt;p&gt;Site collection: sharepont.domain.com&#xA;Hostname: &lt;a href=&#34;https://sharepoint.domain.com&#34;&gt;https://sharepoint.domain.com&lt;/a&gt;&#xA;Site url: /&#xA;Template: Blank Sites&#xA;Database: SP_Content_Intranet&lt;/p&gt;&#xA;&lt;p&gt;&lt;!-- raw HTML omitted --&gt;Search&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;&#xA;&lt;p&gt;Site collection: sharepont.domain.com&#xA;Hostname: &lt;a href=&#34;https://sharepoint.domain.com&#34;&gt;https://sharepoint.domain.com&lt;/a&gt;&#xA;Site url: /search&#xA;Template: Enterprise Search Center&lt;/p&gt;&#xA;&lt;p&gt;&lt;!-- raw HTML omitted --&gt;My Site&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;&#xA;&lt;p&gt;Site collection: mysite.domain.com&#xA;Hostname: &lt;a href=&#34;https://mysite.domain.com&#34;&gt;https://mysite.domain.com&lt;/a&gt;&#xA;Site url: /&#xA;Template: User Profile&#xA;Database: SP_Content_MySite&lt;/p&gt;&#xA;&lt;p&gt;&lt;!-- raw HTML omitted --&gt;IT Wiki&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;&#xA;&lt;p&gt;Site collection: sharepont.domain.com&#xA;Hostname: &lt;a href=&#34;https://sharepoint.domain.com&#34;&gt;https://sharepoint.domain.com&lt;/a&gt;&#xA;Site url: /itwiki&#xA;Template: Enterprise Wiki&#xA;Database: SP_Content_ITWiki&lt;/p&gt;&#xA;&lt;p&gt;&lt;!-- raw HTML omitted --&gt;Extranet VR&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;&#xA;&lt;p&gt;Site collection: extranetvr.domain.com&#xA;Hostname: &lt;a href=&#34;https://extranetvr.domain.com&#34;&gt;https://extranetvr.domain.com&lt;/a&gt;&#xA;Site url: /&#xA;Template: Blank Sites&#xA;Database: SP_Content_ExtranetVR&lt;/p&gt;&#xA;&lt;p&gt;&lt;!-- raw HTML omitted --&gt;Extranet VR - Search&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;&#xA;&lt;p&gt;Site collection: extranetvr.domain.com&#xA;Hostname: &lt;a href=&#34;https://extranetvr.domain.com&#34;&gt;https://extranetvr.domain.com&lt;/a&gt;&#xA;Site url: /search&#xA;Template: Enterprise Search Center&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install SharePoint 2013 Three-tier Farm - Architecture and Licensing</title>
      <link>https://janikvonrotz.ch/2013/12/10/install-sharepoint-2013-three-tier-farm-architecture-and-licensing/</link>
      <pubDate>Tue, 10 Dec 2013 12:35:07 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2013/12/10/install-sharepoint-2013-three-tier-farm-architecture-and-licensing/</guid>
      <description>&lt;p&gt;&lt;em&gt;This post of is part of my &lt;a href=&#34;https://janikvonrotz.ch/projects/install-sharepoint-2013-three-tier-farm/&#34;&gt;Install SharePoint 2013 Three-tier Farm&lt;/a&gt; project.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://janikvonrotz.ch/wp-content/uploads/2013/12/Network-Scheme-SharePoint-Farm.png&#34;&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2013/12/Network-Scheme-SharePoint-Farm.png&#34; alt=&#34;Network Scheme SharePoint Farm&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;As the server architecture is already given in this case, I&amp;rsquo;m only going to show you the hardware requirements of those servers.&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Each server installation provides:&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Hardware and Software Requirements: &lt;!-- raw HTML omitted --&gt;&lt;a href=&#34;https://technet.microsoft.com/en-us/library/ff512684(v=WS.10).aspx&#34;&gt;https://technet.microsoft.com/en-us/library/ff512684(v=WS.10).aspx&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&#xA;Server: Windows Server 2012 R2&#xA;Service: FIM 2010 R2, SQL Server 2010 R2&#xA;Name: w2k12fim1&#xA;CPU: 64-bit, 4cores&#xA;RAM: 8 GB&#xA;Disk:  System 80 GB, Data 100 GB (dynamisch)&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Hardware and Software Requirements: &lt;!-- raw HTML omitted --&gt;&lt;a href=&#34;https://technet.microsoft.com/en-us/library/ff512684(v=WS.10).aspx&#34;&gt;https://technet.microsoft.com/en-us/library/ff512684(v=WS.10).aspx&lt;/a&gt;&#xA;&lt;!-- raw HTML omitted --&gt;Server: Windows Server 2012 R2&#xA;Service: FIM 2010 R2 Service Portal&#xA;Name: w2k12fim2&#xA;CPU: 64-bit, 4 cores&#xA;RAM: 4 GB&#xA;Disk:  System 80 GB&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Hardware and Software Requirements: &lt;!-- raw HTML omitted --&gt;&lt;a href=&#34;https://technet.microsoft.com/en-us/library/cc262485.aspx&#34;&gt;https://technet.microsoft.com/en-us/library/cc262485.aspx&lt;/a&gt;&#xA;&lt;!-- raw HTML omitted --&gt;Server: Windows Server 2012 R2&#xA;Service: SQL Server 2010 R2&#xA;DNS (Alias): sp1sql&#xA;Name: w2k12spsql1&#xA;CPU: 64-bit, 4 cores&#xA;RAM: 12 GB&#xA;Disk:  System 80 GB, Data 100 GB (dynamic)&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Hardware and Software Requirements: &lt;!-- raw HTML omitted --&gt;&lt;a href=&#34;https://technet.microsoft.com/en-us/library/cc262485.aspx&#34;&gt;https://technet.microsoft.com/en-us/library/cc262485.aspx&lt;/a&gt;&#xA;&lt;!-- raw HTML omitted --&gt;DNS: sp1app.vbl.ch&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;Server: Windows Server 2012 R2&#xA;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;Service: SharePoint Server 2013&#xA;&lt;!-- raw HTML omitted --&gt;Name: w2k12spapp1&#xA;&lt;!-- raw HTML omitted --&gt;CPU: 64-bit, 4 cores&#xA;RAM: 12 GB&#xA;Disk:  System 80 GB, Data 100 GB (dynamic)&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Hardware and Software Requirements: &lt;!-- raw HTML omitted --&gt;&lt;a href=&#34;https://technet.microsoft.com/en-us/library/cc262485.aspx&#34;&gt;https://technet.microsoft.com/en-us/library/cc262485.aspx&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&#xA;Server: Windows Server 2012 R2&#xA;Service: SharePoint Server 2013&#xA;DNS: sharepoint.domain.ch, sp1web.domain.ch&#xA;Name: w2k12spweb1&#xA;CPU: 64-bit, 4 cores&#xA;RAM: 12GB&#xA;Disk:  System 80 GB,  Data 100 GB (dynamic)&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Hardware and Software Requirements: &lt;!-- raw HTML omitted --&gt;&lt;a href=&#34;https://technet.microsoft.com/en-us/library/jj219435.aspx#software&#34;&gt;https://technet.microsoft.com/en-us/library/jj219435.aspx#software&lt;/a&gt;&lt;!-- raw HTML omitted --&gt;&#xA;Server: Windows Server 2012 R2&#xA;Service: Office Web Apps Server 2013&#xA;Name: w2k12was1&#xA;DNS: was1.domain.ch&#xA;CPU: 64-bit, 4 cores&#xA;RAM: 12 GB&#xA;Disk:  System 80 GB, Data 50 GB (dynamic)&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;The installation and deployment of this servers won&amp;rsquo;t be part of this project.&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;sp1web.domain.ch &lt;!-- raw HTML omitted --&gt;CNAME&lt;!-- raw HTML omitted --&gt; w2k12spweb1.domain.ch&#xA;sp1app.domain.ch &lt;!-- raw HTML omitted --&gt;CNAME&lt;!-- raw HTML omitted --&gt; w2k12spapp1.domain.ch&#xA;was1.domain.ch &lt;!-- raw HTML omitted --&gt;CNAME&lt;!-- raw HTML omitted --&gt; w2k12was1.domain.ch&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;!-- raw HTML omitted --&gt;</description>
    </item>
    <item>
      <title>Install SharePoint 2013 Three-tier Farm</title>
      <link>https://janikvonrotz.ch/2013/12/10/install-sharepoint-2013-three-tier-farm/</link>
      <pubDate>Tue, 10 Dec 2013 11:20:29 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2013/12/10/install-sharepoint-2013-three-tier-farm/</guid>
      <description>&lt;!-- raw HTML omitted --&gt;&#xA;&lt;p&gt;Based on new business requirements our intranet SharePoint needs an update from version 2010 to 2013.&#xA;The new installation will be part in our existing Office 365 hybrid environment.&#xA;As I&amp;rsquo;ve completed the Core Solutions of Microsoft SharePoint Server 2013 course I going to perform this project on my own.&#xA;In this series of posts I would like to share my knowledge and experience in building this new intranet based on SharePoint 2013.&lt;/p&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/01/27/install-sharepoint-2013-three-tier-farm-designing-the-logical-architecture/&#34;&gt;Designing the Logical Architecture&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2013/12/10/install-sharepoint-2013-three-tier-farm-architecture-and-licensing/&#34;&gt;Architecture and Licensing&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/01/27/install-sharepoint-2013-three-tier-farm-run-the-sharepoint-2013-service-account-creator/&#34;&gt;Run the SharePoint 2013 Service Account Creator&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/02/25/install-sharepoint-2013-three-tier-farm-installing-and-configuring-sharepoint-sql-server/&#34;&gt;Installing and Configuring SharePoint SQL Server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/03/25/install-sharepoint-2013-three-tier-farm-installing-and-configuring-office-web-apps-server/&#34;&gt;Installing and Configuring Office Web Apps Server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/04/14/installing-and-configuring-sharepoint-2013-farm/&#34;&gt;Installing and Configuring SharePoint 2013 Farm&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/04/14/install-sharepoint-2013-three-tier-farm-migrate-sharepoint-2010-data/&#34;&gt;Migrate SharePoint 2010 Data&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/04/14/install-sharepoint-2013-three-tier-farm-configuring-user-profiles/&#34;&gt;Configuring User Profiles&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/02/07/install-sharepoint-2013-three-tier-farm-deploy-the-sql-server-backup-job/&#34;&gt;Deploy the SQL Server Backup Job&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/04/14/monitoring-a-sharepoint-environment-with-zabbix/&#34;&gt;Monitoring and Maintaining the SharePoint Environment with Zabbix&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://janikvonrotz.ch/2014/05/14/configure-hybrid-search-results-from-sharepoint-online-in-sharepoint-on-premise/&#34;&gt;Configure hybrid search results from SharePoint Online in SharePoint on-premise&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
  </channel>
</rss>
