<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web Archives - Blog IT</title>
	<atom:link href="https://blogit.create.pt/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>https://blogit.create.pt/category/web/</link>
	<description>Create IT blogger community</description>
	<lastBuildDate>Fri, 01 Jul 2022 13:55:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>Reactathon 2022 &#8211; A Short Summary</title>
		<link>https://blogit.create.pt/davidpereira/2022/07/01/reactathon-2022-a-short-summary/</link>
					<comments>https://blogit.create.pt/davidpereira/2022/07/01/reactathon-2022-a-short-summary/#respond</comments>
		
		<dc:creator><![CDATA[David Pereira]]></dc:creator>
		<pubDate>Fri, 01 Jul 2022 13:55:45 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Reactathon]]></category>
		<guid isPermaLink="false">https://blogit.create.pt/?p=12734</guid>

					<description><![CDATA[<p>Let's take a look at the new updates on the React community, specifically Reactathon 2022.</p>
<p>The post <a href="https://blogit.create.pt/davidpereira/2022/07/01/reactathon-2022-a-short-summary/">Reactathon 2022 &#8211; A Short Summary</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Lately we&#8217;ve been filled with cool stuff in the React community. In case you missed it, <a href="https://www.reactathon.com/" target="_blank" rel="noreferrer noopener">Reactathon </a>happened at the beginning of May, and with it came a lot of interesting talks and discussions between people in the community.</p>



<p>In this post I&#8217;ll reference what I consider to be the most interesting and hot topics on the React community&#8230; and try to make it short.</p>



<p>If you haven&#8217;t seen the conference, you can take a look at this<a href="https://www.youtube.com/playlist?list=PLRvKvw42Rc7O0eWo2m_guXdZsGTEQM_jj" target="_blank" rel="noreferrer noopener"> YT playlist for all sessions</a>.</p>



<h2 class="wp-block-heading">The state of React 2022</h2>



<p>So first of all, what is the state of React currently? With <a href="https://reactjs.org/blog/2022/03/29/react-v18.html">React 18</a>, what was once called concurrent mode is now concurrent features. This changes the approach into an <strong>incremental adoption</strong>, so that you could use <strong>concurrent features</strong> in specific places of your React app.</p>



<p>In this talk, Lee also announces Next.js new routing system which resembles Remix a lot. They want to take advantage of <strong>nested routes</strong> which is great! This allows us to provide a better user experience on pages that have one component that blocks rendering.</p>



<p>Last but not least, there are new developments when it comes to <strong>server-side rendering</strong>, and new <strong>client-side rendering APIs</strong>.</p>



<h2 class="wp-block-heading">Edge computing</h2>



<p>If you are unaware of this type of compute, Edge computing allows a better user experience, because it reduces the time you get a response with the content you want to visualize. The time is reduced because to process your request you don&#8217;t need to &#8220;talk&#8221; to a distant server on the oasis.</p>



<p>CDN providers like Cloudflare, are building new runtimes to allow you to run code closer to your customers &#8211; on the edge. Cloudflare workers for example, don&#8217;t use Node.js or Deno under the hood, it&#8217;s their own JS runtime. Of course, an effort is being done to <a href="https://blog.cloudflare.com/introducing-the-wintercg/" target="_blank" rel="noreferrer noopener">standardize these runtimes</a>.</p>



<p>In this talk, Kent talks about how Remix improves the developer experience for edge computing. First they use the <a href="https://developer.mozilla.org/pt-BR/docs/Web/API/Fetch_API" target="_blank" rel="noreferrer noopener">Web Fetch API</a>, and depending on where you want to deploy your function. Remix then translates the request/response objects to the respective platform&#8217;s API. They also support <strong>streaming in the edge</strong>, in order to send some content to the user quickly, and then send the rest.</p>



<p>With that said, this is all in JS/TS or WASM land. At least I haven&#8217;t seen a lot of support for other languages and runtimes (e.g. C#) on services that provide edge computing.</p>



<h2 class="wp-block-heading">Streaming server components</h2>



<p>With React 18 it&#8217;s now possible to stream changes to the browser, with new APIs like Suspense that allows for asynchronous processing.</p>



<p>Why is this cool? Because we <strong>don&#8217;t want to block rendering with data fetching</strong>. When our component needs to fetch data before rendering what the user wants to see, we need to render a loading spinner&#8230; which ain&#8217;t cool.</p>



<p><strong>How about we initiate <em>fetches </em>before we render. This way the requests are in parallel and don&#8217;t block rendering</strong>. Using streaming server rendering fixes this, which is why it&#8217;s so awesome! Ryan Florence goes more in detail how this is done in this talk: <a href="https://www.youtube.com/watch?v=95B8mnhzoCM" target="_blank" rel="noreferrer noopener">When to fetch: Remixing React Router</a>.</p>



<p>Bear in mind, this is just one way of rendering. Last year at React Conf 2021 there was an intro session about this topic as well: <a href="https://www.youtube.com/watch?v=pj5N-Khihgc&amp;list=PLNG_1j3cPCaZZ7etkzWA7JfdmKWT0pMsa" target="_blank" rel="noreferrer noopener">Streaming Server Rendering with Suspense</a>. Another great session that talks about the different rendering patterns: <a href="https://www.youtube.com/watch?v=PN1HgvAOmi8" target="_blank" rel="noreferrer noopener">Advanced Rendering Patterns: Lydia Hallie</a>. It&#8217;s an amazing session to help you visualize the impacts on performance, and what are the trade-offs of each pattern.</p>
<p>The post <a href="https://blogit.create.pt/davidpereira/2022/07/01/reactathon-2022-a-short-summary/">Reactathon 2022 &#8211; A Short Summary</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/davidpereira/2022/07/01/reactathon-2022-a-short-summary/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Handling not found routes in Angular</title>
		<link>https://blogit.create.pt/pedrolopes/2022/05/05/handling-not-found-routes-in-angular/</link>
					<comments>https://blogit.create.pt/pedrolopes/2022/05/05/handling-not-found-routes-in-angular/#respond</comments>
		
		<dc:creator><![CDATA[Pedro Lopes]]></dc:creator>
		<pubDate>Thu, 05 May 2022 11:31:15 +0000</pubDate>
				<category><![CDATA[Angular]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[404]]></category>
		<guid isPermaLink="false">https://blogit.create.pt/?p=12669</guid>

					<description><![CDATA[<p>In this post, we will see how we can handle 404 routes using a not found component in an Angular. There are two types of 404 routes that we want to handle. Static 404 &#8211; the URL the user navigates to doesn&#8217;t match any route Dynamic 404 &#8211; the URL matches a route, but the [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/pedrolopes/2022/05/05/handling-not-found-routes-in-angular/">Handling not found routes in Angular</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In this post, we will see how we can handle 404 routes using a not found component in an Angular.</p>



<p>There are two types of 404 routes that we want to handle.</p>



<ul class="wp-block-list"><li><strong>Static 404</strong> &#8211; the URL the user navigates to doesn&#8217;t match any route</li><li><strong>Dynamic 404</strong> &#8211; the URL matches a route, but the data associated with that route does not exist. For example, you navigate to a detail page with an ID, but no item exists with that ID.</li></ul>



<p>For this post, I assume that there is a component named <code>NotFoundComponent</code> that is the not found page to show the user. Replace this with whatever component</p>



<h2 class="wp-block-heading">Static 404 routes</h2>



<p>To set up a static 404 page, you need to add two routes to your <code>RoutingModule</code> configuration.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
const routes: Routes = &#x5B;
    // Other routes
    { path: &#039;404&#039;, component: NotFoundComponent },
    { path: &#039;**&#039;, component: NotFoundComponent }
]
</pre></div>


<p>We used a catchall route <code><em>'</em>**'</code> that matches whatever route didn&#8217;t match above, and shows our not found page.</p>



<p>Make sure to keep the catchall route at the end of your routes, otherwise the routes below it will not be accessible.</p>



<p>Another option here would&#8217;ve been to redirect the user to the <code>'404'</code> route, but that way you lose the context of the URL. If the user navigates back, he would go to the non-existing route and be redirected to the <code>'404'</code> path again. If this is the behavior you want, switch the last route with <code>{ path: '**', redirectTo: '404' }</code>.</p>



<h2 class="wp-block-heading">Dynamic 404 routes</h2>



<p>Now that we have the static 404 route configured, we can use the router to navigate to it whenever we want to show the not found page to the user.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
this.router.navigate(&#x5B;&#039;/404&#039;], { skipLocationChange: true });
</pre></div>


<p>By using the option <code>skipLocationChange: true</code>, we have the same behavior as mentioned above. Even though the router navigates to the route, the browser URL stays the same, allowing the user to easily go back.</p>



<h3 class="wp-block-heading">Personalizing the 404 message</h3>



<p>You may want to personalize the message shown on the 404 page. One way to do this is using the navigation state.</p>



<p>When navigating to the 404 page, you can include a <code>state</code> in the navigation options.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
this.router.navigate(&#x5B;&#039;/404&#039;], { 
    skipLocationChange: true,
    state: {
        // Whatever data you need on the 404 page
    	source: &#039;article&#039;,
        id: 123456
    }
});
</pre></div>


<p>On your <code>NotFoundComponent</code>, you can access this object in the constructor using the router&#8217;s <a href="https://angular.io/api/router/Router#getcurrentnavigation"><code>getCurrentNavigation</code></a> method.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
export class NotFoundComponent {
  constructor(private router: Router) {
    console.log(this.router.getCurrentNavigation().extras.state.source);
  }
}
</pre></div>


<p>You must access the state in the constructor, as it is only available while the router is navigating.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>In this post, we saw how to implement a 404 route in Angular. We looked at how we can redirect to it dynamically and even how to personalize the 404 page with route dependent data!</p>



<p>Have questions, corrections, or an alternative way of handling this? Leave a comment or reach out to me on Twitter <a href="https://twitter.com/pedronavelopes">@pedronavelopes</a> and let me know! Thanks for reading!</p>
<p>The post <a href="https://blogit.create.pt/pedrolopes/2022/05/05/handling-not-found-routes-in-angular/">Handling not found routes in Angular</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/pedrolopes/2022/05/05/handling-not-found-routes-in-angular/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>10 easy ways to improve web accessibility</title>
		<link>https://blogit.create.pt/pedrolopes/2021/09/10/10-easy-ways-to-improve-web-accessibility/</link>
					<comments>https://blogit.create.pt/pedrolopes/2021/09/10/10-easy-ways-to-improve-web-accessibility/#respond</comments>
		
		<dc:creator><![CDATA[Pedro Lopes]]></dc:creator>
		<pubDate>Fri, 10 Sep 2021 12:37:40 +0000</pubDate>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[FrontEnd Development]]></category>
		<guid isPermaLink="false">https://blogit.create.pt/?p=12548</guid>

					<description><![CDATA[<p>When you first start learning about accessibility, it may seem daunting to make your current projects more accessible. In this post, I&#8217;ll give you some easy steps to make this process a bit easier. I would like you to keep in mind that this will not make your website fully accessible, it&#8217;s just an easy [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/pedrolopes/2021/09/10/10-easy-ways-to-improve-web-accessibility/">10 easy ways to improve web accessibility</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>When you first start learning about accessibility, it may seem daunting to make your current projects more accessible. In this post, I&#8217;ll give you some easy steps to make this process a bit easier.</p>



<p>I would like you to keep in mind that this will not make your website fully accessible, it&#8217;s just an easy way to vastly improve accessibility.</p>



<h2 class="wp-block-heading">1 &#8211; Follow WCAG and WebAIM checklist</h2>



<p>The WCAG (Web Content Accessibility Guidelines) is a set of guidelines on how the web can be made more accessible. It takes 4 principles into consideration:</p>



<ol class="wp-block-list"><li>Perceivable &#8211; Just because something is perceivable with one sense (usually sight), not all users can perceive it</li><li>Operable &#8211; Can users use UI components and navigate the content. For example, hover interactions can&#8217;t be operated by someone without a mouse</li><li>Understandable &#8211; Can all users understand the content</li><li>Robust &#8211; Is it robust enough for the content to be consumed by a wide variety of user agents, and does it work with accessibility tools.</li></ol>



<p>The <a href="https://webaim.org/standards/wcag/checklist" target="_blank" rel="noreferrer noopener">WebAIM Checklist</a> was created from these guidelines and simplified the implementation of these principles. This checklist should be seen as a companion to start implementing accessible interfaces, not as the final resource on what make a website accessible.</p>



<h2 class="wp-block-heading">2 &#8211; Provide alternatives to non-text content</h2>



<p>Non-sighted users may have a hard time taking in non-text content, as such, <a href="https://www.w3.org/TR/WCAG21/#non-text-content">it&#8217;s important to provide alternatives to these</a>.</p>



<ul class="wp-block-list"><li>Provide alt text for images The alt text should be an alternative to the image content<ul><li>If an image is not relevant for the context, you can hide it from screen readers by providing an empty alt text.</li></ul></li><li>Use aria-label for other elements<ul><li>The aria-label lets you label elements for screen readers</li></ul></li></ul>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: xml; title: ; notranslate">
// 👎 No descriptive alt text
&lt;img src=&quot;puppy.jpg&quot;&gt;

// 👍 Descriptive alt text
&lt;img src=&quot;puppy.jpg&quot; alt=&quot;Labrador puppy running in the grass&quot;&gt;

// 👍 Empty alt text excludes the image that isn&#039;t relevant
&lt;button&gt;
	&lt;img src=&quot;home-icon.jpg&quot; alt=&quot;&quot;&gt;
	Home
&lt;/button&gt;
</pre></div>


<h2 class="wp-block-heading">3 &#8211; Use native and semantic elements</h2>



<p>When implementing an HTML page, try to <a href="https://www.w3.org/TR/WCAG21/#info-and-relationships">use native and semantic elements</a>.</p>



<p>If you need a button, you should use a &lt;button&gt; element, not a div with an onclick event or an anchor link.</p>



<p>This is the case because different elements mean different things, and have different behaviors. By using the native HTML elements, we know it will have the expected behavior. And by using a semantic element, we ensure that the user understands what the element will do, as in, a button will trigger an action, and a link will trigger a navigation to somewhere else.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: xml; title: ; notranslate">
// 👎 Non-semantic element
&lt;div class=&quot;button&quot; click=&quot;onclick&quot;&gt;
	Click me!
&lt;/div&gt;

// 👍 Semantic element
&lt;button click=&quot;onclick&quot;&gt;
	Click me!
&lt;/button&gt;
</pre></div>


<h2 class="wp-block-heading">4 &#8211; Use ARIA attributes in elements</h2>



<p>When there is no native element which matches your need, you may have to implement it yourself.</p>



<p>To make sure the element you are implementing is accessible, you should use ARIA (Accessible Rich Internet Applications) attributes.</p>



<p>These will allow you to add semantics to elements which have no meaning, modify existing semantics, add extra labels and descriptions, express relationships between elements, etc.</p>



<p>The <a href="https://www.w3.org/TR/wai-aria-practices-1.1/">ARIA practices document</a> specifies the patterns that each element should have. When implementing an element, you give it a role and commit to following all the patterns and interactions defined in the ARIA practices.</p>



<h2 class="wp-block-heading">5 &#8211; Understand focus and tab order</h2>



<p>Tab order refers to the order in which the items on a page will be focused using the keyboard.</p>



<p>Some elements are implicitly focusable (such as inputs, buttons and links), and are added to the tab order automatically.</p>



<p>The tab order is determined by the <strong>DOM order,</strong> but this can be different from the <strong>visual order</strong> which can be changed by CSS. Therefore, <a href="https://www.w3.org/TR/WCAG21/#focus-order">you should make sure that the reading and navigation order are logical and intuitive</a>.</p>



<p>To change the tab order, you can use the tab index attribute:</p>



<ul class="wp-block-list"><li>-1<ul><li>Removes the element from the natural tab order, but it is focusable through code.</li><li>Useful when we have hidden elements (such as modals) which should not be focusable when hidden</li></ul></li><li>0<ul><li>Adds the element to the natural tab order.</li><li>Allows elements to be focused and receive keyboard input.</li></ul></li><li>0<ul><li>Jumps element to the front of the tab order</li><li>If there are multiple elements, order goes from lowest to highest</li><li><strong>This is discouraged</strong> because it can make it confusing for screen readers, as they navigate the page linearly</li></ul></li></ul>



<p><strong><a href="https://www.w3.org/TR/WCAG21/#focus-visible">Make sure you have a focus ring</a>.</strong> A focus ring lets users know which element is focused. This is essential for keyboard users.</p>



<h2 class="wp-block-heading">6 &#8211; Bypass Blocks</h2>



<p>If your page has a lot of navigation links, a keyboard user will have to tab through all these links before being able to reach the main content. To make your website more convenient to use, you can provide users with a <a href="https://webaim.org/techniques/skipnav/">skip link</a>.</p>



<p>The skip link will be the first focusable element on the page and links the user to the main content, skipping the focus to it directly.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: xml; title: ; notranslate">
&lt;body&gt;
  &lt;a href=&quot;#maincontent&quot;&gt;Skip to main content&lt;/a&gt;
  &lt;!-- Navigation links ---&gt;
  &lt;main id=&quot;maincontent&quot;&gt;
    &lt;h1&gt;Heading&lt;/h1&gt;
    &lt;p&gt;This is the first paragraph&lt;/p&gt;
  &lt;/main&gt;
&lt;/body&gt;
</pre></div>


<p>To make sure the skip link doesn&#8217;t affect your page, you can hide it until it is focused, meaning only keyboard users will see it.</p>



<p>Alternatively to skip links, if you provide a proper <strong>heading structure</strong>, screen readers will also be able to skip around the page and navigate to each section much more easily. This will, however, not provide a skip mechanism for users who just use the keyboard to navigate.</p>



<h2 class="wp-block-heading">7 &#8211; Use ARIA attributes in CSS selectors</h2>



<p>You can use ARIA attributes in your CSS selectors. This makes sure that ARIA is being used correctly, and removes the need for additional selectors.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: css; title: ; notranslate">
// 👎 Aditional selector
.toggle.pressed

// 👍 ARIA attributes
.toggle&#x5B;aria-pressed=&quot;true&quot;]
</pre></div>


<h2 class="wp-block-heading">8 &#8211; Responsive design</h2>



<p>Even if you don&#8217;t need to implement mobile designs, a responsive design ensures that the user can zoom in the page and the content adjusts properly. <a href="https://www.w3.org/TR/WCAG21/#resize-text">Your page should be zoomable up to 200% without losing content or functionality.</a></p>



<ul class="wp-block-list"><li>Use relative font-size, allowing the browser to rescale the text</li><li>Use appropriate touch targets (&gt;48px) so users have enough space to touch a single button</li><li>Space touch targets about 32px from each other</li></ul>



<h2 class="wp-block-heading">9 &#8211; Color and Contrast</h2>



<p><a href="https://webaim.org/resources/contrastchecker/">There are tools which allow you to easily check for contrast</a>. Some browsers even let you check this directly in the dev tools.</p>



<p>You also have to keep in mind that some users will not be able to distinguish some colors. As such, <strong><a href="https://www.w3.org/TR/WCAG21/#use-of-color">information should not be conveyed by color alone</a>.</strong> Make sure you add other elements (such as captions or icons) to indicate the state of the elements.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="671" height="170" src="https://blogit.create.pt/wp-content/uploads/2021/09/Compare-colorblind2.png" alt="On the left, two form fields using green and red to convey their status. On the right, a view of the same forms is shown, simulating red/green color blindness. Both these fields are the same color." class="wp-image-12551" srcset="https://blogit.create.pt/wp-content/uploads/2021/09/Compare-colorblind2.png 671w, https://blogit.create.pt/wp-content/uploads/2021/09/Compare-colorblind2-300x76.png 300w" sizes="(max-width: 671px) 100vw, 671px" /><figcaption>Comparison of interface using only color as a state indicator. Colorblind people will not be able to distinguish these colors</figcaption></figure></div>



<h2 class="wp-block-heading">10 &#8211; How to apply these tips</h2>



<p>Good accessibility ensures good UX. As such, accessibility should be focused from the beginning of development.</p>



<p>When this doesn&#8217;t happen, we inevitably have to fix accessibility issues later. You can identify some issues using the following techniques:</p>



<ul class="wp-block-list"><li>Use the accessibility inspector included in the browser</li><li>Navigate through your website using only a keyboard</li><li>Simulate impaired vision through browser extensions (e.g. <a href="https://addons.mozilla.org/en-US/firefox/addon/nocoffee/">NoCoffee</a>)</li></ul>



<p>After identifying some issues, how should we tackle them? As with bugs, we should focus on high impact, low effort issues.</p>



<ul class="wp-block-list"><li>How frequently is this piece of UI used?</li><li>How badly does this affect our users?</li><li>How expensive is it to fix?</li></ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Accessibility is starting to make it to the front of developer concerns. With more popularity come more resources to help us develop better interfaces and experiences for all users.</p>



<p>Hopefully, this article provided you with an initial idea on how to approach web accessibility.</p>
<p>The post <a href="https://blogit.create.pt/pedrolopes/2021/09/10/10-easy-ways-to-improve-web-accessibility/">10 easy ways to improve web accessibility</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/pedrolopes/2021/09/10/10-easy-ways-to-improve-web-accessibility/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Redirecting 2 domains from http to https and non-www to www</title>
		<link>https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/</link>
					<comments>https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/#respond</comments>
		
		<dc:creator><![CDATA[André Santos]]></dc:creator>
		<pubDate>Tue, 30 Oct 2018 12:25:59 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[naked domain]]></category>
		<category><![CDATA[non-www]]></category>
		<category><![CDATA[redirection]]></category>
		<category><![CDATA[web.config]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://blogit.create.pt/?p=7670</guid>

					<description><![CDATA[<p>Recently I had to configure some redirections in a website that contains two different domains. Both use https and I want the main site, which uses the primary domain, to only be accessible through it&#8217;s www version. For the second site, since it&#8217;s a sub-domain, I only want it to only be available in https. [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/">Redirecting 2 domains from http to https and non-www to www</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Recently I had to configure some redirections in a website that contains two different domains.</p>
<p>Both use https and I want the main site, which uses the primary domain, to only be accessible through it&#8217;s www version. For the second site, since it&#8217;s a sub-domain, I only want it to only be available in https.</p>
<p><span id="more-7670"></span></p>
<p>Let&#8217;s say the domain is <strong>mydomain.com</strong> and the subdomain is <strong>mysub.mydomain.com</strong>. The only URLs I want to be available are:</p>
<ul>
<li>https://www.mydomain.com</li>
<li>https://mysub.mydomain.com</li>
</ul>
<p>Typically I would make the non-www to www redirection through the DNS provider, but for this website it was not possible.</p>
<p>The following is the configuration I used in my Web.config:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;rewrite&gt;
    &lt;rules&gt;
        &lt;rule name=&quot;Redirect from non www mydomain.com&quot; stopProcessing=&quot;true&quot;&gt;
            &lt;match url=&quot;.*&quot; /&gt;
            &lt;conditions&gt;
                &lt;add input=&quot;{HTTP_HOST}&quot; pattern=&quot;^mydomain.com$&quot; /&gt;
            &lt;/conditions&gt;
            &lt;action type=&quot;Redirect&quot; url=&quot;https://www.mydomain.com/{R:0}&quot; redirectType=&quot;Permanent&quot; /&gt;
        &lt;/rule&gt;
        &lt;rule name=&quot;Redirect from non https mydomain.com&quot; stopProcessing=&quot;true&quot;&gt;
            &lt;match url=&quot;.*&quot; /&gt;
            &lt;conditions&gt;
                &lt;add input=&quot;{HTTPS}&quot; pattern=&quot;^OFF$&quot; /&gt;
                &lt;add input=&quot;{HTTP_HOST}&quot; pattern=&quot;^www.mydomain.com$&quot; /&gt;
            &lt;/conditions&gt;
            &lt;action type=&quot;Redirect&quot; url=&quot;https://www.mydomain.com/{R:0}&quot; redirectType=&quot;Permanent&quot; /&gt;
        &lt;/rule&gt;
        &lt;rule name=&quot;Redirect from non https mysub.mydomain.com&quot; stopProcessing=&quot;true&quot;&gt;
            &lt;match url=&quot;.*&quot; /&gt;
            &lt;conditions&gt;
                &lt;add input=&quot;{HTTPS}&quot; pattern=&quot;^OFF$&quot; /&gt;
                &lt;add input=&quot;{HTTP_HOST}&quot; pattern=&quot;^mysub.mydomain.com$&quot; /&gt;
            &lt;/conditions&gt;
            &lt;action type=&quot;Redirect&quot; url=&quot;https://mysub.mydomain.com/{R:0}&quot; redirectType=&quot;Permanent&quot; /&gt;
        &lt;/rule&gt;
    &lt;/rules&gt;
&lt;/rewrite&gt;
</pre>
<p>Hope this helps!</p>
<p>The post <a href="https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/">Redirecting 2 domains from http to https and non-www to www</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/andresantos/2018/10/30/redirecting-2-domains-from-http-to-https-and-non-www-to-www/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Adding an Angular app to your Umbraco Website</title>
		<link>https://blogit.create.pt/marionunes/2018/03/10/adding-an-angular-app-to-your-umbraco-website/</link>
					<comments>https://blogit.create.pt/marionunes/2018/03/10/adding-an-angular-app-to-your-umbraco-website/#comments</comments>
		
		<dc:creator><![CDATA[Mário Nunes]]></dc:creator>
		<pubDate>Sat, 10 Mar 2018 22:11:23 +0000</pubDate>
				<category><![CDATA[Angular]]></category>
		<category><![CDATA[Umbraco]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[.NET]]></category>
		<guid isPermaLink="false">http://blogit.create.pt/marionunes/?p=334</guid>

					<description><![CDATA[<p>What problems does this solve? This enables you to have an Angular application alongside your Umbraco website, on a specified route. The Angular App can be protected by the Authentication of your website, if you have it. And you can make use of surface controllers for authenticated requests. The routing of your app will work [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/marionunes/2018/03/10/adding-an-angular-app-to-your-umbraco-website/">Adding an Angular app to your Umbraco Website</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>What problems does this solve?</strong></p>
<ul>
<li>This enables you to have an Angular application alongside your Umbraco website, on a specified route.</li>
<li>The Angular App can be protected by the Authentication of your website, if you have it. And you can make use of surface controllers for authenticated requests.</li>
<li>The routing of your app will work as intended, for example, if your Angular app is at <strong>/app</strong> and you make a request to <strong>/app/products</strong>, the request will be routed to the angular app products&#8217; page.</li>
</ul>
<p><strong>What this is not</strong></p>
<ul>
<li>A complete front end for a Umbraco website with dynamic routes.</li>
<li>This doesn&#8217;t have dynamic routes, you have to specify them on your code.</li>
</ul>
<p><strong>Let&#8217;s get started!</strong></p>
<p>First, start by creating a controller to handle the Angular App request.</p>
<pre class="brush: csharp; title: ; notranslate">
using System.Web.Mvc;

public class AngularAppController : BaseController
{
    public ActionResult AngularAppView()
    {
        return View();
    }
}
</pre>
<p>Then, you have to decide the route where your Angular app will render. On this example it will be <strong>/angularapp</strong>.</p>
<p>On your ApplicationStarted method, put this code:</p>
<pre class="brush: csharp; title: ; notranslate">
RouteTable.Routes.MapRoute(
  &quot;AngularApp&quot;,
  &quot;angularapp/{*.}&quot;,
  new { controller = &quot;AngularApp&quot;, action = &quot;AngularAppView&quot; });
</pre>
<p>The <strong>{*.}</strong> syntax is what makes your angular app routes load and not return the 404 page.</p>
<p>If you don&#8217;t have an ApplicationStarted method, find out how you to create it here: <a href="https://our.umbraco.org/documentation/reference/events/application-startup">https://our.umbraco.org/documentation/reference/events/application-startup</a></p>
<p>Under your Views folder, create a folder with the same name as the <strong>controller</strong> you set in MapRoute. In this case it will be &#8220;AngularApp&#8221;.<br />
Inside it, create a view with the same name as the <strong>action</strong> set you set in MapRoute.<br />
<img decoding="async" src="http://blogit-create.com/wp-content/uploads/2018/03/appview.png" alt="" width="268" height="71" class="alignnone size-full wp-image-414" srcset="https://blogit.create.pt/wp-content/uploads/2018/03/appview.png 268w, https://blogit.create.pt/wp-content/uploads/2018/03/appview-265x71.png 265w" sizes="(max-width: 268px) 100vw, 268px" /></p>
<p>Inside the view put the contents of the index.html of your angular app.<br />
Then you will need to move your angular app files somewhere like you /Assets folder, and edit their paths on the view.</p>
<p>Almost done!</p>
<p>Now you need to edit the routes of your Angular app.<br />
Simply add the route you chose as a prefix to the routes.</p>
<p>From something like this:</p>
<pre class="brush: csharp; title: ; notranslate">
const routes: Routes = &#x5B;
  { path: '', redirectTo: '/dashboard', pathMatch: 'full' },
  { path: '/dashboard', component: DashboardComponent },
  { path: '/detail/:id', component: HeroDetailComponent },
  { path: '/heroes', component: HeroesComponent }
];
</pre>
<p>To this:</p>
<pre class="brush: csharp; title: ; notranslate">
const routes: Routes = &#x5B;
  { path: 'angularapp', redirectTo: 'angularapp/dashboard', pathMatch: 'full' },
  { path: 'angularapp/dashboard', component: DashboardComponent },
  { path: 'angularapp/detail/:id', component: HeroDetailComponent },
  { path: 'angularapp/heroes', component: HeroesComponent }
];
</pre>
<p>Thanks for reading!<br />
Mário</p>
<p>The post <a href="https://blogit.create.pt/marionunes/2018/03/10/adding-an-angular-app-to-your-umbraco-website/">Adding an Angular app to your Umbraco Website</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/marionunes/2018/03/10/adding-an-angular-app-to-your-umbraco-website/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Azure CDN, BlobStorage and ImageResizer</title>
		<link>https://blogit.create.pt/andresantos/2015/06/26/azure-cdn-blobstorage-and-imageresizer/</link>
					<comments>https://blogit.create.pt/andresantos/2015/06/26/azure-cdn-blobstorage-and-imageresizer/#comments</comments>
		
		<dc:creator><![CDATA[André Santos]]></dc:creator>
		<pubDate>Fri, 26 Jun 2015 15:48:38 +0000</pubDate>
				<category><![CDATA[CDN]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[azurereader2]]></category>
		<category><![CDATA[blob storage]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[feature receiver]]></category>
		<category><![CDATA[image resizer]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[mvc 5]]></category>
		<category><![CDATA[sharepoint]]></category>
		<guid isPermaLink="false">http://blogit.create.pt/andresantos/?p=371</guid>

					<description><![CDATA[<p>In a recent project, we had the need to serve website assets and website content images through a CDN network. Furthermore, each image presented in the website content must be available in multiple resolutions. We ended up serving both the assets and content images through the same Microsoft Azure CDN. This post describes the way we [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/andresantos/2015/06/26/azure-cdn-blobstorage-and-imageresizer/">Azure CDN, BlobStorage and ImageResizer</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span class="dropcap dropcap3">I</span>n a recent project, we had the need to serve website assets and website content images through a CDN network. Furthermore, each image presented in the website content must be available in multiple resolutions.</p>
<p>We ended up serving both the assets and content images through the same Microsoft Azure CDN. This post describes the way we implemented it.</p>
<p>First the easiest part. We have our site in a Azure Website, in order to serve the site&#8217;s assets through an Azure CDN we only needed to point the CDN to the website&#8217;s URL. So, if the website&#8217;s assets are located in something like <em>http://sitedomain/assets/*</em>, instead of referencing the assets through a relative url such as <em>/assets/*</em>, we just need to use the CDN url to serve them: <em>http://cdnurl/assets/*</em>. Through web.config transforms we are also able to use local assets during development and change to CDN only on the production environment.</p>
<p>Regarding the website image content, the solution has three phases.</p>
<p><span id="more-6465"></span></p>
<p><strong>1.</strong> The content is managed over SharePoint 2013, and the images are no exception. We created a feature receiver that uploads to Azure Blob Storage every time an image is uploaded, or modified,  on any Picture Library, and then save its known CDN URL in the library item.</p>
<pre class="brush: csharp; title: ; notranslate">
string cdnUrl = Configuration.Settings.ImageUploader.CdnUrl;
string containerStr = Configuration.Settings.ImageUploader.Container;

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting(IMAGES_STORAGE_CONNECTION_STRING));

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference(containerStr);

// Creates the container if it doesn't exist
container.CreateIfNotExists();

// Set the blobs access level to public
container.SetPermissions(new BlobContainerPermissions
{
    PublicAccess = BlobContainerPublicAccessType.Blob
});

string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file.Name);
string extension = Path.GetExtension(file.Name);

fileNameWithoutExtension += &quot;-&quot; + DateTime.Now.Ticks;

// Build file name to upload
string fileName = string.Format(&quot;{0}/{1}{2}&quot;, file.Item.ParentList.Title.ToLower(), fileNameWithoutExtension.Replace(&quot; &quot;, &quot;-&quot;), extension).ToLower();

// Retrieve reference to a blob named &quot;file.name&quot;.
CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);

// Create or overwrite the &quot;file.name&quot; blob with contents from a local file.
using (var fileStream = file.OpenBinaryStream())
{
    blockBlob.UploadFromStream(fileStream);

    // Update SP item CDN URL column
    string finalUrl = HttpUtility.UrlPathEncode(string.Format(&quot;{0}/{1}/{2}?{3}&quot;, cdnUrl, containerStr, fileName, IMAGE_RESIZER_FIRST_PARAMETER));

    properties.ListItem&#x5B;Configuration.Settings.SP_COLUMN_CDN_URL] = finalUrl.ToLower();
    properties.ListItem.SystemUpdate(false);
}
</pre>
<p><strong>2.</strong> Having the images in a Azure Blob Storage, we decided to use the <a title="Image Resizer ASP.NET Library and Image Server" href="http://imageresizing.net/" target="_blank" rel="noopener">Image Resizer ASP.NET Library</a> and its <a title="AzureReader2 BlobStorage Plugin" href="http://imageresizing.net/docs/v4/plugins/azurereader2" target="_blank" rel="noopener">AzureReader2 plugin</a> to resize and serve images directly through our Azure Website. The implementation is as easy as installing a nuget package: Image Resizer. After configuring the Blob Storage endpoint, and setting the prefix (we use ~/azure), we are able to access the images through an URL such as: <em>http://sitedomain/azure/image/path/in/blobstorage</em>. With this working we can resize and modify the images in any way available to us with the Image Resizer library and described in detail here: <a title="http://imageresizing.net/docs/v4" href="http://imageresizing.net/docs/v4" target="_blank" rel="noopener">http://imageresizing.net/docs/v4</a>.</p>
<p><strong>3.</strong> Since our CDN is pointing directly to our Azure Website, we can use the CDN URL instead of the azure website one. For instance, the fake image I talked about the previous bullet can be accessed with the following URL: <em>http://cdnurl/azure/image/path/in/blobstorage</em>. This way, the first time someone opens an image through the CDN URL it is handled by the Image Resizer library. The  second time, CDN has already cached it and distributed it around the world and it is served much faster!</p>
<p>The post <a href="https://blogit.create.pt/andresantos/2015/06/26/azure-cdn-blobstorage-and-imageresizer/">Azure CDN, BlobStorage and ImageResizer</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/andresantos/2015/06/26/azure-cdn-blobstorage-and-imageresizer/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Super short guide to a successful SharePoint 2013 FBA Pack Installation</title>
		<link>https://blogit.create.pt/antoniobrisson/2014/12/17/super-short-guide-to-a-successful-experience-with-sharepoint-2013-fba-pack/</link>
					<comments>https://blogit.create.pt/antoniobrisson/2014/12/17/super-short-guide-to-a-successful-experience-with-sharepoint-2013-fba-pack/#respond</comments>
		
		<dc:creator><![CDATA[António Brisson]]></dc:creator>
		<pubDate>Wed, 17 Dec 2014 13:01:47 +0000</pubDate>
				<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[FBA]]></category>
		<category><![CDATA[SharePoint]]></category>
		<guid isPermaLink="false">http://blogit.create.pt/antoniobrisson/?p=111</guid>

					<description><![CDATA[<p>If you need a super-short reference to get FBA authentication rolling in your SharePoint application, you&#8217;ll find it here. This is a super short guide to a successful experience with Sharepoint 2013 FBA Pack.  For a fully detailed process please refer to Chris Coulson&#8217;s life saving article. Our goal? Provide FBA authentication in our SahrePoint [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/antoniobrisson/2014/12/17/super-short-guide-to-a-successful-experience-with-sharepoint-2013-fba-pack/">Super short guide to a successful SharePoint 2013 FBA Pack Installation</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>If you need a super-short reference to get FBA authentication rolling in your SharePoint application, you&#8217;ll find it here.</p>
<p>This is a super short guide to a successful experience with <a href="http://sharepoint2013fba.codeplex.com/">Sharepoint 2013 FBA Pack. </a> For a fully detailed process please refer to <a href="http://blogs.visigo.com/chriscoulson/configuring-forms-based-authentication-in-sharepoint-2013-part-1-creating-the-membership-database/http://">Chris Coulson&#8217;s life saving article.</a></p>
<p><strong>Our goal?</strong></p>
<p>Provide FBA authentication in our SahrePoint application</p>
<p><strong>What we need?</strong></p>
<p>The<a href="http://sharepoint2013fba.codeplex.com/"> SharePoint2013FBAPack zip file </a>with the Activate.ps1, Deploy.ps1, UnDeploy.ps1and Visigo.Sharepoint.FormsBasedAuthentication.wsp files.</p>
<p><strong>Our three simple steps?</strong></p>
<ol>
<li>Create users database</li>
<li>Install the <a href="http://sharepoint2013fba.codeplex.com/">Sharepoint 2013 FBA Pack</a></li>
<li>Configure web application</li>
</ol>
<p><strong>1. Create users database</strong></p>
<ol>
<li>Go to c:\windows\Microsoft.NET\Framework64\v4.0.30319\</li>
<li>Run “aspnet_regsql.exe”
<ol>
<li>Choose “Configure SQL Server for application services” -&gt; click Next</li>
</ol>
</li>
<li>Now that you have created your users database, you must make sure that the the identity running you SharePoint application pool can access it.
<ol>
<li>Where can you find this identity?  In IIS -&gt;“Application Pools”. Check the value in the Identity column of you SharePoint application pool. Take a note, you&#8217;ll need it later.
<ol>
<li>Open SQL server as an Administrator -&gt; Go to Security/Logins -&gt; Select the user that matches the identity identified earlier -&gt; Right click -&gt; Select Properties -&gt; Check the &#8220;Map&#8221; box for the database created previously and check the &#8220;db_owner&#8221; role. -Now the db is ready!</li>
</ol>
</li>
</ol>
</li>
</ol>
<p><strong>2 . Install the <a href="http://sharepoint2013fba.codeplex.com/">Sharepoint 2013 FBA Pack</a></strong></p>
<ol>
<li>If you haven&#8217;t download -the pack zip file do it now 🙂 and extract its content</li>
<li>Open a Powershell and navigate to the pack extraction path.</li>
<li>Run &#8220;Set-ExecutionPolicy Unrestricted&#8221; and &#8220;.\deploy [Site Collection URL]</li>
</ol>
<p><strong>3. Configure Web Application</strong></p>
<p>Now that we have a membership database,  that our SharePoint pool identity can access it and that the FBA pack is installed, we need to configure the membership provider in the config files.</p>
<p>From the approaches described in <a href="http://blogs.visigo.com/chriscoulson/configuring-forms-based-authentication-in-sharepoint-2013-part-1-creating-the-membership-database/http://">Chris Coulson&#8217;s life saving article.</a> I would recommend to avoid the approach that involves machine.config editing, because unless  you&#8217;re doing something very special you don&#8217;t really want to disseminate your apps specifics beyond its scope.</p>
<p>With this in mind, also make sure you always backup  your .config files before editing any &#8220;tiniest&#8221; change to avoid spending hours trying to resolve a character typo our encoding mistakes.</p>
<p>We are going to add the same changes to three different config files. You can find each of these by navigate through IIS -&gt; right click the application -&gt; Explore -&gt; Double click the &#8220;web.config&#8221; file :</p>
<ul>
<li>SharePoint Central Administration</li>
<li>SecurityTokenServiceApplication</li>
<li>Your SharePoint application web application</li>
</ul>
<ol>
<li>In the &lt;ConnectionString&gt; section add the following line, make sure that [SERVER NAME] matches the fully-qualified name of your db server:
<pre>&lt;add connectionString="Server=<strong>[SERVER NAME]</strong>;Database=aspnetdb;Integrated Security=true" name="<strong>[CONNECTION STRING NAME]</strong>" /&gt;</pre>
</li>
<li>In the &lt;membership&gt;&lt;providers&gt; section add the following and make sure that [CONNECTION STRING NAME]  matches the value of the previous step:
<pre>&lt;add name="<strong>[MEMBERSHIP PROVIDER NAME]"</strong>
 type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
 connectionStringName=<strong>"[CONNECTION STRING NAME]"</strong>
 enablePasswordRetrieval="false"
 enablePasswordReset="true"
 requiresQuestionAndAnswer="false"
 applicationName="/"
 requiresUniqueEmail="true"
 passwordFormat="Hashed"
 maxInvalidPasswordAttempts="5"
 minRequiredPasswordLength="7"
 minRequiredNonalphanumericCharacters="1"
 passwordAttemptWindow="10"
 passwordStrengthRegularExpression="" /&gt;</pre>
</li>
<li>In the &lt;roleManager&gt;&lt;providers&gt; section add and make sure that [MEMBERSHIP PROVIDER NAME] and [CONNECTION STRING PROVIDER NAME] match the values of the previous steps.:
<pre>&lt;add name=<strong>"[MEMBERSHIP PROVIDER NAME]"</strong> connectionStringName="<strong>[CONNECTION STRING NAME]</strong>" applicationName="/"
 type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /&gt;</pre>
</li>
</ol>
<p>Now  you&#8217;ll be able to add the Membership Provider to your web application when enabling the Forms Based Authentication.</p>
<p>Ok, so&#8230; this might not be super-short, but it is short enough. Just be extra careful when editing the config files and you won&#8217;t have to worry about anything else.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://blogit.create.pt/antoniobrisson/2014/12/17/super-short-guide-to-a-successful-experience-with-sharepoint-2013-fba-pack/">Super short guide to a successful SharePoint 2013 FBA Pack Installation</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/antoniobrisson/2014/12/17/super-short-guide-to-a-successful-experience-with-sharepoint-2013-fba-pack/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Microsoft WebCamp 2014: Working with AngularJS</title>
		<link>https://blogit.create.pt/andrevala/2014/05/25/microsoft-webcamp-2014-working-with-angularjs/</link>
					<comments>https://blogit.create.pt/andrevala/2014/05/25/microsoft-webcamp-2014-working-with-angularjs/#respond</comments>
		
		<dc:creator><![CDATA[André Vala]]></dc:creator>
		<pubDate>Sun, 25 May 2014 19:29:41 +0000</pubDate>
				<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Development]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/andrevala/?p=41</guid>

					<description><![CDATA[<p>Last week I delivered a session at Microsoft WebCamp 2014 event. A full-day event, with 3 simultaneous session tracks, focused on web technologies, not only from Microsoft but also open source, and design/communication topics. A lot of good stuff was shown, from node.js to service stack. My session was about Working with AngularJS, a fantastic [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/andrevala/2014/05/25/microsoft-webcamp-2014-working-with-angularjs/">Microsoft WebCamp 2014: Working with AngularJS</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Last week I delivered a session at <strong>Microsoft WebCamp 2014</strong> event. A full-day event, with 3 simultaneous session tracks, focused on web technologies, not only from Microsoft but also open source, and design/communication topics. A lot of good stuff was shown, from node.js to service stack.</p>
<p>My session was about <strong>Working with AngularJS</strong>, a fantastic Single Page Application framework in JavaScript. It’s an introductory session, meant to give attendees a basic understanding of the framework and its components. I had a packed room, with around 200 people, and the feedback was great so I felt it might be worth sharing the slides and demos I wrote for the session:</p>
<ul>
<li><a href="http://1drv.ms/1h1YOlS" target="_blank">Slides</a> (on OneDrive)</li>
<li><a href="http://www.slideshare.net/AndreVala/working-with-angularjs" target="_blank">Slides</a> (on SlideShare)</li>
<li><a href="http://1drv.ms/1h1YJyP" target="_blank">Demos</a> (on OneDrive)</li>
</ul>
<p>You’re probably wondering why would I, a SharePoint guy, be talking about <a href="http://angularjs.org" target="_blank">AngularJS</a>. SharePoint guys are not exactly known for embracing the latest and greatest web technologies, mostly because when a new SharePoint version is released, it’s already one .Net version behind, not to mention all the new JavaScript frameworks. With SharePoint 2013, all that is changed. The new <a href="http://msdn.microsoft.com/en-US/office/dn448479" target="_blank">SharePoint App Model</a> allows us to build our apps in any technology we want, and that means we can use all the big boys toys now such as ASP.NET MVC and, of course, AngularJS.</p>
<p>Also presenting a session on WebCamp about <a href="http://knockoutjs.com/" target="_blank">KnockoutJS</a> was my good friend and colleague <a href="http://blogit.create.pt/blogs/joaomartins" target="_blank">João “Jota” Martins</a>, which is a great JavaScript data-binding library. Although they share some concepts, Knockout and Angular are very different technologies, on very different abstraction levels, so it’s good to know when to use one or the other. Checkout his slides and code samples <a href="http://blogit.create.pt/blogs/joaomartins/archive/2014/05/22/Microsoft-WebCamp-20.05.2014_1320_Databinding-with-KnockoutJS.aspx" target="_blank">here</a>.</p>
<p>The post <a href="https://blogit.create.pt/andrevala/2014/05/25/microsoft-webcamp-2014-working-with-angularjs/">Microsoft WebCamp 2014: Working with AngularJS</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/andrevala/2014/05/25/microsoft-webcamp-2014-working-with-angularjs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Microsoft WebCamp 20.05.2014–Databinding with KnockoutJS</title>
		<link>https://blogit.create.pt/jota/2014/05/22/microsoft-webcamp-20-05-2014-databinding-with-knockoutjs/</link>
					<comments>https://blogit.create.pt/jota/2014/05/22/microsoft-webcamp-20-05-2014-databinding-with-knockoutjs/#respond</comments>
		
		<dc:creator><![CDATA[Jota]]></dc:creator>
		<pubDate>Thu, 22 May 2014 10:49:56 +0000</pubDate>
				<category><![CDATA[KnockoutJS]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Development]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/joaomartins/?p=81</guid>

					<description><![CDATA[<p>Earlier this week I did a presentation at Microsoft WebCamp 2014, a 3-track event focused on Microsoft web technologies, open source web libraries, and design/communication trends and tendencies. The session as a level ~250-300 session on KnockoutJS, Steven Sanderson’s et al. data-binding Javascript framework. Earlier, my colleague and friend André “SharePoint God” Vala did a [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/jota/2014/05/22/microsoft-webcamp-20-05-2014-databinding-with-knockoutjs/">Microsoft WebCamp 20.05.2014–Databinding with KnockoutJS</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Earlier this week I did a presentation at <strong>Microsoft WebCamp 2014</strong>, a 3-track event focused on Microsoft web technologies, open source web libraries, and design/communication trends and tendencies. The session as a level ~250-300 session on <a href="http://knockoutjs.com/" target="_blank">KnockoutJS</a>, Steven Sanderson’s et al. data-binding Javascript framework.</p>
<p>Earlier, my colleague and friend <a href="http://blogit.create.pt/blogs/andrevala/" target="_blank">André “SharePoint God” Vala</a> did a session on <a href="https://angularjs.org/" target="_blank">AngularJS</a>, so we got to share information on two libraries with very different levels of abstraction for web development. Had about 70-80 people in the room, in what was session with more code samples I’ve done for some time now.</p>
<p>You can download the slides <a href="https://onedrive.live.com/redir?resid=8EE85D8713522EC1!13965&amp;authkey=!ANJJ79CiJEBis20&amp;ithint=file%2c.zip" target="_blank">here</a> or check them on <a href="http://www.slideshare.net/slidejota/20140520-microsoft-webcamp-databinding-with-knockoutjs" target="_blank">Slideshare</a>, and the code samples are <a href="https://onedrive.live.com/redir?resid=8EE85D8713522EC1%2113964" target="_blank">here</a>.</p>
<p>The post <a href="https://blogit.create.pt/jota/2014/05/22/microsoft-webcamp-20-05-2014-databinding-with-knockoutjs/">Microsoft WebCamp 20.05.2014–Databinding with KnockoutJS</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/jota/2014/05/22/microsoft-webcamp-20-05-2014-databinding-with-knockoutjs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Web Content Management in SharePoint 2010</title>
		<link>https://blogit.create.pt/raulribeiro/2009/10/21/web-content-management-in-sharepoint-2010/</link>
					<comments>https://blogit.create.pt/raulribeiro/2009/10/21/web-content-management-in-sharepoint-2010/#respond</comments>
		
		<dc:creator><![CDATA[Raúl Ribeiro]]></dc:creator>
		<pubDate>Wed, 21 Oct 2009 11:15:00 +0000</pubDate>
				<category><![CDATA[WCM]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint]]></category>
		<guid isPermaLink="false">http://blogcreate.azurewebsites.net/raulribeiro/?p=501</guid>

					<description><![CDATA[<p>WCM is a very&#160;important area of SharePoint, its an&#160;expensive&#160;licence so the product should work as expected. I think in this version Microsoft did a very good job, it&#039;s amazing what they&#039;ve done in 3 years, not just in the WCM part but in the entire product.&#160; About WCM there is a lot of improvements, the [&#8230;]</p>
<p>The post <a href="https://blogit.create.pt/raulribeiro/2009/10/21/web-content-management-in-sharepoint-2010/">Web Content Management in SharePoint 2010</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>WCM is a very&nbsp;important area of SharePoint, its an&nbsp;expensive&nbsp;licence so the product should work as expected.</p>
<p>I think in this version Microsoft did a very good job, it&#039;s amazing what they&#039;ve done in 3 years, not just in the WCM part but in the entire product.&nbsp;</p>
<p>About WCM there is a lot of improvements, the new ribbon makes life easier for content producers, for designers it&#039;s possible to controls what styles can be used on the RichTextEditor.</p>
<p>Has i said before SharePoint is compliant with WCAG acessibility guidelines <a href="http://www.w3.org/TR/WCAG/">http://www.w3.org/TR/WCAG/</a></p>
<p>Now it&#039;s easier to upload pictures to SharePoint, tags that are set in local images are also promoted to SharePoint. It&#039;s possible to use wiki pages in public sites with all the look and feel of the public site, and the free structure of the new wiki pages.</p>
<p>The Search Engine Fields<span>&nbsp; </span>now appears on page in edit mode.</p>
<p>There is a new Asset library and a new Media Player WebPart (Silverlight), now it&#039;s possible to streaming videos from the blob cache, the CQW (Content Query WebPart) has some new features like the PageFieldValue where it&#039;s possible to filter the content of the CQW using a the value of a field in the page.</p>
<p>A very bit improvement it the possibility to have different host headers for each site collection in one Web Application.</p>
<p>It&#039;s now possible to manage a site in any browser (IE, FireFox, Safari)</p>
<p>Now you can export publishing workflows and then reuse them in any site that you want, without the need for creating and filling for each site a new workflow.</p>
<p>The Incremental Content Deployment that gave so many headaches to a lot of SharePoint Administration now is more reliable with a better logging and diagnostics, it&#039;s now possible to use Point in time snapshots on SQL Enterprise also with more logging and diagnostics.</p>
<p>&nbsp;</p>
<p>The post <a href="https://blogit.create.pt/raulribeiro/2009/10/21/web-content-management-in-sharepoint-2010/">Web Content Management in SharePoint 2010</a> appeared first on <a href="https://blogit.create.pt">Blog IT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blogit.create.pt/raulribeiro/2009/10/21/web-content-management-in-sharepoint-2010/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
